Files
JJBB/Assets/Project/Script/Player/Mission/SceneObjManager.cs
2024-08-23 15:49:34 +08:00

92 lines
2.9 KiB
C#

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<int, List<SceneMissionItem>> sceneItemDic = new Dictionary<int, List<SceneMissionItem>>();
public void AddMissionSceneItemEvent(SceneMissionItem item)
{
if(!sceneItemDic.ContainsKey(item.missionId))
{
List<SceneMissionItem> itemList = new List<SceneMissionItem>();
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);
}
}
}
}
}
}