Files
JJBB/Assets/Project/Script/GUI/Board/MissionBoard.cs
2024-08-23 15:49:34 +08:00

160 lines
5.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}