using Games.LogicObj; using Games.Mission; using UnityEngine; using UnityEngine.UI; public class MissionBoard : MonoBehaviour { public enum MissionBoardState { MISSION_NONE, MISSION_MAINCANACCEPTED, //可以接取的主线任务 MISSION_BRANCHCANACCEPTED, //可以接取的支线任务 MISSION_MAINMISSIONHASACCEPTED, //主线已经接取但是未完成任务 MISSION_BRANCHMISSIONHASACCEPTED, //支线任务已经接取 但是未完成 MISSION_MAINCANCOMPLETED, // 已完成 未提交 MISSION_BRANCHCANCOMPLETED, //已完成 未提交 MISSION_ALLCOMPLETED, //全部完成 MISSION_IVALID } public enum MissionTypeIcon { MISSION_INVALID = -1, //没有功能 MISSION_TIEJIANG, //铁匠 MISSION_ZAHUO, //杂货 MISSION_CAIFENG, //裁缝 MISSION_YAOPU, //药铺 MISSION_BAOSHI, //宝石 MISSION_CANGKU //仓库 } public Sprite m_BranchMissionCanAcceptSprit; // = "symbol_1"; //可以接取的支线任务 public Sprite m_BranchMissionHasCompletedSprit; // = "symbol_6";//已经完成的支线任务 public Image MissionImg; public Image MissionTypeImage; public Sprite m_MainMissionCanAcceptdSprit; // = "symbol_3"; //可以接取的主线任务 public Sprite m_MainMissionHasCompletedSprit; // = "symbol_5"; //已经完成的主线任务 public Sprite m_MissionCanCompletedSprit; // = "symbol_4"; //已经接取但是未完成任务 private MissionBoardState _lastMissionBoardState; private MissionTypeIcon _lastMissionTypeIcon; private Obj_NPC _missionNpc; private Vector2 _baseTypePosition; public MissionTypeIcon LastMissionTypeIcon { get { return _lastMissionTypeIcon; } set { _lastMissionTypeIcon = value; } } // Use this for initialization private void OnDisable() { MissionManager.m_completeMission -= RestMyLastMissionBoardState; } private void OnEnable() { MissionManager.m_completeMission += RestMyLastMissionBoardState; } private void OnDestroy() { _missionNpc = null; } private void Update() { UpdateMissionBoard(); } public void InitNpcInfo(Obj_NPC npcInfo) { //if(npcInfo == null) //{ //LogModule.ErrorLog("----------npcInfo is null"); //} _missionNpc = npcInfo; } private void UpdateMissionBoard() { // 无NPC if (_missionNpc == null) { //LogModule.ErrorLog("_missionNpc is null"); MissionImg.gameObject.SetActive(false); MissionTypeImage.gameObject.SetActive(false); } else { // 获得当前任务状态,优先判断是否有已经接受任务,否则判断是否可以接受任务 var boardState = GameManager.gameManager.MissionManager.GetMissionBoardState(_missionNpc); // 暂时信息是以下四个情况会跳过检测,否则检查是否可以接受任务 switch (boardState) { case MissionBoardState.MISSION_BRANCHMISSIONHASACCEPTED: //支线已经接取任务 但是没有完成 case MissionBoardState.MISSION_MAINMISSIONHASACCEPTED: //主线已经接取任务,但是未完成 两个都是红色问号 case MissionBoardState.MISSION_BRANCHCANCOMPLETED: //支线任务可以交付 case MissionBoardState.MISSION_MAINCANCOMPLETED: //主线任务已完成 可以交付 break; default: boardState = GameManager.gameManager.MissionManager.IsHaveMissionAccepted(_missionNpc); break; } if (boardState != _lastMissionBoardState) { _lastMissionBoardState = boardState; var hasMission = true; switch (boardState) { case MissionBoardState.MISSION_BRANCHMISSIONHASACCEPTED: //支线已经接取任务 但是没有完成 MissionImg.sprite = m_MissionCanCompletedSprit; break; case MissionBoardState.MISSION_MAINMISSIONHASACCEPTED: //主线已经接取任务,但是未完成 两个都是红色问号 MissionImg.sprite = m_MissionCanCompletedSprit; break; case MissionBoardState.MISSION_BRANCHCANCOMPLETED: //支线任务可以交付 MissionImg.sprite = m_BranchMissionHasCompletedSprit; break; case MissionBoardState.MISSION_MAINCANCOMPLETED: //主线任务已完成 可以交付 MissionImg.sprite = m_MainMissionHasCompletedSprit; break; case MissionBoardState.MISSION_MAINCANACCEPTED: //可接支线 MissionImg.sprite = m_MainMissionCanAcceptdSprit; break; case MissionBoardState.MISSION_BRANCHCANACCEPTED: //可接主线 MissionImg.sprite = m_BranchMissionCanAcceptSprit; break; default: hasMission = false; MissionImg.sprite = null; break; } //if(!hasMission) //{ // LogModule.ErrorLog("no mission"); //} MissionImg.gameObject.SetActive(hasMission); } if(MissionImg.gameObject.activeInHierarchy) { MissionImg.SetNativeSize(); } } } public void RestMyLastMissionBoardState(string state) { // 既然强制重置,何必不直接搞成Invalid _lastMissionBoardState = MissionBoardState.MISSION_IVALID; } }