Files
JJBB/Assets/Project/Script/GUI/Board/MissionBoard.cs

160 lines
5.9 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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;
}
}