160 lines
5.9 KiB
C#
160 lines
5.9 KiB
C#
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;
|
||
}
|
||
} |