using System.Collections; using System.Collections.Generic; using UnityEngine; using Games.Mission; using GCGame.Table; using Module.Log; public struct SceneMissionItem { public int missionId; public int missionIndex; public int animationId; public Animator animator; public SceneMissionItem(int _missionId, int _missionIndex, int _animationId, Animator _animator) { missionId = _missionId; missionIndex = _missionIndex; animationId = _animationId; animator = _animator; } } public class SceneObjManager { public static SceneObjManager Instance; //切换场景的时候要重置(或者不用?) private Dictionary> sceneItemDic = new Dictionary>(); public void AddMissionSceneItemEvent(SceneMissionItem item) { if(!sceneItemDic.ContainsKey(item.missionId)) { List itemList = new List(); itemList.Add(item); sceneItemDic.Add(item.missionId, itemList); }else { sceneItemDic[item.missionId].Add(item); } } public void RemoveMissionSceneItemEvent(SceneMissionItem item) { if (sceneItemDic.ContainsKey(item.missionId)) { sceneItemDic.Remove(item.missionId); } } public void OnMissionStateChange(int missionId) { foreach (var item in sceneItemDic) { for(int index = 0; index < item.Value.Count; index++) { if (item.Value[index].missionId == missionId) { var isPlayerAnimation = false; if (item.Value[index].missionIndex == -1) { if (GameManager.gameManager.MissionManager.GetMissionState(missionId) == (int)MissionState.Mission_Completed) { isPlayerAnimation = true; } } else { if (GameManager.gameManager.MissionManager.getCurMissionIndex(missionId) >= item.Value[index].missionIndex) { isPlayerAnimation = true; } } if (isPlayerAnimation) { var animationTab = TableManager.GetAnimationByID(item.Value[index].animationId, 0); if (animationTab == null) { LogModule.ErrorLog("Animation表找不到对应的id : " + item.Value[index].animationId); return; } item.Value[index].animator.Play(animationTab.AnimName); } } } } } }