265 lines
12 KiB
C#
265 lines
12 KiB
C#
using CG.Framework;
|
|
using CG.UTility;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
/*******************************************************************************
|
|
*Create By CG
|
|
*Function 部件拆装总控制界面Ui
|
|
*******************************************************************************/
|
|
namespace ZXK.GYJQR
|
|
{
|
|
public class BJCZTotalOperationPanel : UIBase
|
|
{
|
|
private OperationPartsBJCJPanel _partsBJCJPanel = null;
|
|
private OperationStepBJCJPanel _stepBJCJPanel = null;
|
|
private PartExplainPanel _partExplainPanel = null;
|
|
|
|
|
|
private Button _previousSelectBtn = null;
|
|
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
//顶部设置
|
|
UI_Manage.Instance.ShowPanel("OperationTopPanel", Type.GetType("ZXK.GYJQR.OperationTopPanel"), UIGroup.Top);
|
|
|
|
//部件栏
|
|
_partsBJCJPanel = UI_Manage.Instance.ShowPanel("OperationPartsPanel", Type.GetType("ZXK.GYJQR.OperationPartsBJCJPanel"), UIGroup.Main)?.GetComponent<OperationPartsBJCJPanel>();
|
|
_partsBJCJPanel.gameObject.SetActive(false);
|
|
|
|
//拆卸流程显示
|
|
_stepBJCJPanel = UI_Manage.Instance.ShowPanel("OperationStepPanel", Type.GetType("ZXK.GYJQR.OperationStepBJCJPanel"), UIGroup.Main)?.GetComponent<OperationStepBJCJPanel>();
|
|
_stepBJCJPanel.gameObject.SetActive(false);
|
|
|
|
//零件说明显示
|
|
_partExplainPanel = UI_Manage.Instance.ShowPanel("PartExplainPanel", Type.GetType("ZXK.GYJQR.PartExplainPanel"), UIGroup.Main)?.GetComponent<PartExplainPanel>();
|
|
_partExplainPanel.gameObject.SetActive(false);
|
|
|
|
GameManager.Instance._DataBJCJHandler._ShowPartsName.OnValueChanged += OnPartsNameChanged;
|
|
GameManager.Instance._DataBJCJHandler._CurState.OnValueChanged += OnStateChanged;
|
|
GameManager.Instance._DataBJCJHandler.OnYJCJCombinateChanged += OnYJCJCombinateChanged;
|
|
|
|
AddEventListener("AcquaintPartBtn_N", UIEventType.OnButtonClick, () =>
|
|
{
|
|
if (GameManager.Instance._DataBJCJHandler._CurState.Value == (int)EnumCtrl.BJCZState.BJRZ) return;
|
|
_partsBJCJPanel.gameObject.SetActive(true);
|
|
_partExplainPanel.gameObject.SetActive(true);
|
|
_stepBJCJPanel.gameObject.SetActive(false);
|
|
BtnStyleChanged(EnumCtrl.BJCZState.BJRZ);
|
|
});
|
|
AddEventListener("AllSplitBtn_N", UIEventType.OnButtonClick, () =>
|
|
{
|
|
_partsBJCJPanel.gameObject.SetActive(false);
|
|
_partExplainPanel.gameObject.SetActive(true);
|
|
_stepBJCJPanel.gameObject.SetActive(false);
|
|
if (GameManager.Instance._DataBJCJHandler._CurState.Value == (int)EnumCtrl.BJCZState.YJCJ)
|
|
{
|
|
BtnStyleChanged(EnumCtrl.BJCZState.YJPZ);
|
|
}
|
|
else
|
|
{
|
|
BtnStyleChanged(EnumCtrl.BJCZState.YJCJ);
|
|
}
|
|
});
|
|
AddEventListener("OrderSplitBtn_N", UIEventType.OnButtonClick, () =>
|
|
{
|
|
if (GameManager.Instance._DataBJCJHandler._CurState.Value == (int)EnumCtrl.BJCZState.SXCJ) return;
|
|
_partsBJCJPanel.gameObject.SetActive(false);
|
|
_partExplainPanel.gameObject.SetActive(false);
|
|
_stepBJCJPanel.gameObject.SetActive(true);
|
|
BtnStyleChanged(EnumCtrl.BJCZState.SXCJ);
|
|
});
|
|
//TODO 原理示意按钮监听
|
|
AddEventListener("LeftArrayBtn_N", UIEventType.OnButtonClick, () =>
|
|
{
|
|
if (GameManager.Instance._DataBJCJHandler._ShowPartsName.Value.Equals(ConstCtrl.BJCZ_MAINMODEL2_NAME))
|
|
{
|
|
GameManager.Instance._DataBJCJHandler._ShowPartsName.Value = ConstCtrl.BJCZ_MAINMODEL1_NAME;
|
|
}
|
|
GetWedage("AcquaintPartBtn_N").GetComponent<Button>().onClick.Invoke();
|
|
});
|
|
AddEventListener("RightArrayBtn_N", UIEventType.OnButtonClick, () =>
|
|
{
|
|
if (GameManager.Instance._DataBJCJHandler._ShowPartsName.Value.Equals(ConstCtrl.BJCZ_MAINMODEL1_NAME))
|
|
{
|
|
GameManager.Instance._DataBJCJHandler._ShowPartsName.Value = ConstCtrl.BJCZ_MAINMODEL2_NAME;
|
|
}
|
|
GetWedage("AcquaintPartBtn_N").GetComponent<Button>().onClick.Invoke();
|
|
});
|
|
|
|
//初始状态赋值
|
|
GameManager.Instance._DataBJCJHandler._ShowPartsName.Value = ConstCtrl.BJCZ_MAINMODEL1_NAME;
|
|
StartCoroutine("LoadFirst");
|
|
}
|
|
private IEnumerator LoadFirst()
|
|
{
|
|
yield return new WaitForSeconds(0.02f);
|
|
GetWedage("AcquaintPartBtn_N").GetComponent<Button>().onClick.Invoke();
|
|
}
|
|
protected override void OnDestroy()
|
|
{
|
|
base.OnDestroy();
|
|
GameManager.Instance._DataBJCJHandler._ShowPartsName.OnValueChanged -= OnPartsNameChanged;
|
|
GameManager.Instance._DataBJCJHandler._CurState.OnValueChanged -= OnStateChanged;
|
|
GameManager.Instance._DataBJCJHandler.OnYJCJCombinateChanged -= OnYJCJCombinateChanged;
|
|
GameManager.Instance._DataBJCJHandler._CurState.Value = 0;
|
|
GameManager.Instance._DataBJCJHandler._ShowPartsName.Value = "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 介绍模型发生变化
|
|
/// </summary>
|
|
/// <param name="str"></param>
|
|
private void OnPartsNameChanged(string str)
|
|
{
|
|
if (str.Equals(ConstCtrl.BJCZ_MAINMODEL1_NAME))
|
|
{
|
|
GetWedage("AcquaintPartBtn_N").SetActive(true);
|
|
GetWedage("AllSplitBtn_N").SetActive(true);
|
|
GetWedage("OrderSplitBtn_N").SetActive(true);
|
|
}
|
|
else if (str.Equals(ConstCtrl.BJCZ_MAINMODEL2_NAME))
|
|
{
|
|
GetWedage("AcquaintPartBtn_N").SetActive(true);
|
|
GetWedage("AllSplitBtn_N").SetActive(true);
|
|
GetWedage("OrderSplitBtn_N").SetActive(false);
|
|
}
|
|
Camera.main.GetComponent<CameraAroundCtrl>().ResetCameraInit();
|
|
BJCZSceneCtrl._Instance.ModelAndStateChanged();
|
|
InitDataBJCJ();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 功能模块发生变化
|
|
/// </summary>
|
|
/// <param name="state"></param>
|
|
private void OnStateChanged(int state)
|
|
{
|
|
BJCZSceneCtrl._Instance.ModelAndStateChanged();
|
|
InitDataBJCJ();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 实例化部件拆解模块对应的部件栏数据
|
|
/// </summary>
|
|
private void InitDataBJCJ()
|
|
{
|
|
string showName = GameManager.Instance._DataBJCJHandler._ShowPartsName.Value;
|
|
if (string.IsNullOrEmpty(showName) || GameManager.Instance._DataBJCJHandler._CurState.Value == 0) return;
|
|
switch ((EnumCtrl.BJCZState)GameManager.Instance._DataBJCJHandler._CurState.Value)
|
|
{
|
|
case EnumCtrl.BJCZState.BJRZ: //部件认知
|
|
List<BJCJ_INFO> bjrzParts = GameManager.Instance._DataBJCJHandler._BJRZDataArray[showName];
|
|
|
|
BJCJ_INFO bjrzPartInfo;
|
|
if (GameManager.Instance._DataBJCJHandler._CurBJRZhandler.GetValue().ContainsKey(showName))
|
|
{//如果操作过此部件,那么需要找到这个部件对应操作的零件
|
|
Dictionary<string, BJCJ_INFO> curTemp = GameManager.Instance._DataBJCJHandler._CurBJRZhandler.GetValue();
|
|
bjrzPartInfo = curTemp[showName];
|
|
}
|
|
else
|
|
{
|
|
bjrzPartInfo = GameManager.Instance._DataBJCJHandler._BJRZDataArray[showName][0];
|
|
}
|
|
|
|
_partsBJCJPanel.InitData(bjrzParts);
|
|
|
|
GameManager.Instance._DataBJCJHandler._CurBJRZhandler.SetValue(showName, bjrzPartInfo);
|
|
|
|
break;
|
|
case EnumCtrl.BJCZState.SXCJ:
|
|
List<BJCJ_SXCJ> sxcjSteps = GameManager.Instance._DataBJCJHandler._SXCJDataArray[showName];
|
|
|
|
BJCJ_SXCJ sxcjStepInfo;
|
|
if (GameManager.Instance._DataBJCJHandler._CurDismountStephandler.GetValue().ContainsKey(showName))
|
|
{
|
|
Dictionary<string, BJCJ_SXCJ> curTemp = GameManager.Instance._DataBJCJHandler._CurDismountStephandler.GetValue();
|
|
sxcjStepInfo = curTemp[showName];
|
|
}
|
|
else
|
|
{
|
|
sxcjStepInfo = GameManager.Instance._DataBJCJHandler._SXCJDataArray[showName][0];
|
|
}
|
|
|
|
_stepBJCJPanel.InitData(sxcjSteps);
|
|
|
|
GameManager.Instance._DataBJCJHandler._CurDismountStephandler.SetValue(showName, sxcjStepInfo);
|
|
|
|
break;
|
|
case EnumCtrl.BJCZState.YJCJ://一件拆解
|
|
BJCJ_INFO yjcjPartInfo;
|
|
if (GameManager.Instance._DataBJCJHandler._CurYJCJhandler.GetValue().ContainsKey(showName))
|
|
{//如果操作过此部件,那么需要找到这个部件对应操作的零件
|
|
Dictionary<string, BJCJ_INFO> curTemp = GameManager.Instance._DataBJCJHandler._CurYJCJhandler.GetValue();
|
|
yjcjPartInfo = curTemp[showName];
|
|
}
|
|
else
|
|
{
|
|
yjcjPartInfo = GameManager.Instance._DataBJCJHandler._YJCJDataArray[showName][0];
|
|
}
|
|
|
|
GameManager.Instance._DataBJCJHandler._CurYJCJhandler.SetValue(showName, yjcjPartInfo);
|
|
break;
|
|
case EnumCtrl.BJCZState.YJPZ://一件拼装
|
|
yjcjPartInfo = GameManager.Instance._DataBJCJHandler._YJCJDataArray[showName][0];
|
|
GameManager.Instance._DataBJCJHandler._CurYJCJhandler.SetValue(showName, yjcjPartInfo);
|
|
break;
|
|
//TODO 原理示意UI界面监听
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 改变四个按钮选中状态
|
|
/// </summary>
|
|
/// <param name="btn"></param>
|
|
private void BtnStyleChanged(EnumCtrl.BJCZState bjczState)
|
|
{
|
|
GetWedage("AllSplitBtn_N").transform.Find("Text (Legacy)").GetComponent<Text>().text = "一键拆解";
|
|
GameObject btn = null;
|
|
switch (bjczState)
|
|
{
|
|
case EnumCtrl.BJCZState.BJRZ:
|
|
btn = GetWedage("AcquaintPartBtn_N");
|
|
break;
|
|
case EnumCtrl.BJCZState.YJCJ:
|
|
btn = GetWedage("AllSplitBtn_N");
|
|
GetWedage("AllSplitBtn_N").transform.Find("Text (Legacy)").GetComponent<Text>().text = "一键拼装";
|
|
break;
|
|
case EnumCtrl.BJCZState.YJPZ:
|
|
btn = GetWedage("AllSplitBtn_N");
|
|
break;
|
|
case EnumCtrl.BJCZState.SXCJ:
|
|
btn = GetWedage("OrderSplitBtn_N");
|
|
break;
|
|
case EnumCtrl.BJCZState.YLSY:
|
|
btn = GetWedage("SchematicBtn_N");
|
|
break;
|
|
}
|
|
GameManager.Instance._DataBJCJHandler._CurState.Value = (int)bjczState;
|
|
if (_previousSelectBtn)
|
|
{
|
|
_previousSelectBtn.GetComponent<Image>().sprite = _previousSelectBtn.spriteState.highlightedSprite;
|
|
}
|
|
btn.GetComponent<Image>().sprite = btn.GetComponent<Button>().spriteState.pressedSprite;
|
|
_previousSelectBtn = btn.GetComponent<Button>();
|
|
}
|
|
/// <summary>
|
|
/// 一件拆解拼合监听
|
|
/// </summary>
|
|
/// <param name="obj"></param>
|
|
private void OnYJCJCombinateChanged(BJCJ_INFO obj)
|
|
{
|
|
string partsName = GameManager.Instance._DataBJCJHandler._ShowPartsName.Value;
|
|
if (GameManager.Instance._DataBJCJHandler.GetYJCJCombinate()[partsName].Count ==
|
|
GameManager.Instance._DataBJCJHandler._YJCJDataArray[partsName].Count)
|
|
{//拆解完成
|
|
BtnStyleChanged(EnumCtrl.BJCZState.BJRZ);
|
|
_partsBJCJPanel.gameObject.SetActive(true);
|
|
_stepBJCJPanel.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
} |