92 lines
2.9 KiB
C#
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|