87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
/*
|
|
* @Author: 白哉
|
|
* @Description: 成就数据管理
|
|
* @Date: 2025年05月14日 星期三 21:05:54
|
|
* @Modify:
|
|
*/
|
|
|
|
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Logic.Achievement;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace RuntimeData
|
|
{
|
|
public class AchievementDataManager
|
|
{
|
|
public static AchievementDataManager Instance = new AchievementDataManager();
|
|
public AchievementAsset Achievement;
|
|
public List<uint> FinishedCache;
|
|
|
|
|
|
public void Init()
|
|
{
|
|
string path = Application.persistentDataPath + "/achievement.json";
|
|
if (File.Exists(path))
|
|
{
|
|
string json = File.ReadAllText(path);
|
|
Achievement = JsonUtility.FromJson<AchievementAsset>(json);
|
|
}
|
|
if (Achievement == null) Achievement = Resources.Load<AchievementAsset>("DataAssets/Achievement");
|
|
FinishedCache ??= new List<uint>();
|
|
FinishedCache.Clear();
|
|
}
|
|
|
|
public void BindMapData(MapData mapData)
|
|
{
|
|
foreach (var item in Achievement.AchievementList)item.BindMapData(mapData);
|
|
}
|
|
|
|
public void OnTurnStart(MapData map, PlayerData player)
|
|
{
|
|
foreach (var item in Achievement.AchievementList)
|
|
item.OnTurnStart(map, player);
|
|
}
|
|
|
|
public void OnTrainUnit(MapData map, PlayerData player, CityData city, UnitData newUnit)
|
|
{
|
|
foreach (var item in Achievement.AchievementList)
|
|
item.OnTrainUnit(map, player, city, newUnit);
|
|
}
|
|
|
|
public void OnBuildWonder(MapData map, PlayerData player, CityData city, GridData grid)
|
|
{
|
|
foreach (var item in Achievement.AchievementList)
|
|
item.OnBuildWonder(map, player, city, grid);
|
|
}
|
|
|
|
public void OnKillUnit(MapData map, UnitData origin, UnitData target)
|
|
{
|
|
foreach (var item in Achievement.AchievementList)
|
|
item.OnKillUnit(map, origin, target);
|
|
}
|
|
|
|
public void OnUnitMove(MapData map, UnitData unit, GridData gridData)
|
|
{
|
|
foreach (var item in Achievement.AchievementList)
|
|
item.OnUnitMove(map, unit, gridData);
|
|
}
|
|
|
|
public bool IsFinished(uint bigId, uint smallId, uint internalID)
|
|
{
|
|
var item = Achievement.GetAchievementItem(bigId, smallId, internalID);
|
|
if (item == null) return false;
|
|
return item.IsFinished;
|
|
}
|
|
|
|
public string GetNoFinishDescription(uint bigId, uint smallId, uint internalID)
|
|
{
|
|
var item = Achievement.GetAchievementItem(bigId, smallId, internalID);
|
|
if (item == null) return "";
|
|
if (item.IsFinished) return "";
|
|
return item.GetConditionDescription();
|
|
}
|
|
}
|
|
} |