using System; using System.Collections.Generic; using UnityEngine; [Serializable] public class AreaSelectMapIcon { public const int MAPICONLIST_CAPACITY_DEFAULT = 8; private readonly string MAP_ICON_EFFECT_NAME_CIRCLE4 = "ef_circle4_add_nor_1"; private readonly string MAP_ICON_EFFECT_NAME_TWINKLE1 = "ef_twinkle1_add_nor_1"; private readonly Color32 MAP_ICON_EFFECT_COLOR_CLEARED = new Color32(byte.MaxValue, 192, 64, byte.MaxValue); private readonly Color32 MAP_ICON_EFFECT_COLOR_ALREADY_READ_CIRCLE4 = new Color32(78, 95, 125, byte.MaxValue); private readonly Color32 MAP_ICON_EFFECT_COLOR_ALREADY_READ_TWINKLE1 = new Color32(190, 218, 242, byte.MaxValue); [SerializeField] private GameObject MapIconRoot; [SerializeField] private UISprite MapIconOriginal; private List MapIconList; private GameObject MapIconEffect; public void Init() { } public void Term() { MapIconEffect = null; GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_MAP_MAPICON_CLEARED); GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_MAP_MAPICON_NOTCLEARED); } public void SetupMapIcon(List chapterDataList) { if (MapIconList != null) { int i = 0; for (int count = MapIconList.Count; i < count; i++) { UnityEngine.Object.Destroy(MapIconList[i].gameObject); } } MapIconList = new List(8); UISprite uISprite = null; for (int j = 0; j < chapterDataList.Count; j++) { if (chapterDataList[j].IsReleased) { uISprite = UnityEngine.Object.Instantiate(MapIconOriginal); if (!(null == uISprite)) { uISprite.transform.parent = MapIconRoot.transform; uISprite.transform.localPosition = new Vector3(chapterDataList[j].MapIconPos.x, chapterDataList[j].MapIconPos.y); uISprite.transform.localScale = Vector3.one; uISprite.name = "mapicon_" + j; uISprite.gameObject.SetActive(chapterDataList[j].IsDisplayMapIcon); MapIconList.Add(uISprite); } } } MapIconOriginal.gameObject.SetActive(value: false); } public Vector3 GetMapIconPos(int chapterIndex, bool isLocal) { if (MapIconList == null) { return Vector3.zero; } if (chapterIndex < 0 || chapterIndex >= MapIconList.Count) { return Vector3.zero; } if (!isLocal) { return MapIconList[chapterIndex].transform.position; } return MapIconList[chapterIndex].transform.localPosition; } public void SetActiveMapIcon(int chapterIndex, bool isActive) { if (chapterIndex >= 0 && chapterIndex < MapIconList.Count) { MapIconList[chapterIndex].gameObject.SetActive(isActive); } } public void StartMapIconEffect(StoryChapterData.ChapterClearStatus clearState, int chapterIndex) { Effect effect = null; switch (clearState) { case StoryChapterData.ChapterClearStatus.Cleared: effect = GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_MAP_MAPICON_CLEARED); effect.ChangeParticleColor(MAP_ICON_EFFECT_COLOR_CLEARED); break; case StoryChapterData.ChapterClearStatus.AlreadyRead: effect = GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_MAP_MAPICON_CLEARED); MotionUtils.ChangeParticleSystemColor(effect.transform.Find(MAP_ICON_EFFECT_NAME_CIRCLE4).gameObject, MAP_ICON_EFFECT_COLOR_ALREADY_READ_CIRCLE4); MotionUtils.ChangeParticleSystemColor(effect.transform.Find(MAP_ICON_EFFECT_NAME_TWINKLE1).gameObject, MAP_ICON_EFFECT_COLOR_ALREADY_READ_TWINKLE1); break; default: effect = GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_MAP_MAPICON_NOTCLEARED); break; } MapIconEffect = effect.GetGameObjIns(); UpdateMapIconEffectPos(chapterIndex); } public void StopMapIconEffect() { GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_MAP_MAPICON_CLEARED); GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_MAP_MAPICON_NOTCLEARED); } public void UpdateMapIconEffectPos(int chapterIndex) { if (MapIconList != null && chapterIndex >= 0 && chapterIndex < MapIconList.Count && !(null == MapIconEffect)) { Vector3 position = MapIconList[chapterIndex].transform.position; MapIconEffect.transform.position = position; } } public GameObject GetMapIconObject(int chapterIndex) { return MapIconList[chapterIndex].gameObject; } }