TrainStudyForm.cs 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using DG.Tweening;
  5. using GameFramework;
  6. using GameFramework.Event;
  7. using UnityEngine;
  8. using UnityEngine.SceneManagement;
  9. using UnityEngine.Serialization;
  10. using UnityEngine.UI;
  11. using UnityGameFramework.Runtime;
  12. public class TrainStudyForm : UIFormLogic
  13. {
  14. private GameObject _trainPanel;
  15. private GameObject _learnPanel;
  16. private GameObject _faultPanel;
  17. private GameObject _trainDoneTips;
  18. private GameObject _faultDoneTips;
  19. private Button _reStartButton;
  20. private Button _cpuButton;
  21. private Button _ramButton;
  22. private Button _fanButton;
  23. private Button _powerButton;
  24. private bool cpuDone = false;
  25. private bool fanDone = false;
  26. private bool ramDone = false;
  27. private bool powerDone = false;
  28. //private GameObject _overHotTips;
  29. private Button _reStarFaultButton;
  30. private Button _cpuFaultButton;
  31. private Button _ramFaultButton;
  32. private Button _fanFaultButton;
  33. private Button _powerFaultButton;
  34. private Button _hardDiskFaultButton;
  35. private Button _batteryFaultButton;
  36. private Image _cpuValueSlider;
  37. private Text _cpuValueText;
  38. private Image _ramValueSlider;
  39. private Text _ramValueText;
  40. private Slider _hardDiskTemperature;
  41. private Image _hardDiskColor;
  42. private Slider _mbTemperature;
  43. private Image _mbColor;
  44. private Slider _fanSpeed;
  45. public Sprite[] learnModelButtonImg;
  46. public Sprite[] trainModelButtonImg;
  47. public Sprite[] bugModelButtonImg;
  48. private Button _learnButton;
  49. private Button _trainButton;
  50. private Button _faultButton;
  51. private IT_TrainModelType _currentType;
  52. private GameObject messagePanel;
  53. private Text nameText;
  54. private Text messageText;
  55. private const string cpuMessage =
  56. "CPU一般指中央处理器。 中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。";
  57. private const string ramMessage =
  58. "随机存取存储器,也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。";
  59. private const string fanMessage =
  60. "用于机箱散热时:可沿机箱后面板排出热气流,使冷空气自前面板下部流入机箱。使机内形成持续对流的环境,降低机箱内环境温度,从而有效的达到辅助CPU、显卡等发热元件的散热。在用于电源散热时:除了带走电源内元件的热量,还可辅助排出机箱内热气流。";
  61. private const string powerMessage =
  62. "计算机属于弱电产品,也就是说部件的工作电压比较低,一般在正负12伏以内,并且是直流电。而普通的市电为220伏(有些国家为110伏)交流电,不能直接在计算机部件上使用。因此计算机和很多家电一样需要一个电源部分,负责将普通市电转换为计算机可以使用的电压,一般安装在计算机内部.";
  63. private float randomUpdateTime = 0;
  64. private float cpuValue;
  65. private float ramValue;
  66. bool haveFixed = false;
  67. private GameObject tarinList;
  68. private Button trainB1;
  69. private Button trainB2;
  70. private Button trainB3;
  71. private Button trainB4;
  72. private Button trainB5;
  73. private GameObject faultList;
  74. private Button faultB1;
  75. private Button faultB2;
  76. private Button faultB3;
  77. private Button faultB4;
  78. private Button faultB5;
  79. //$$$
  80. public Button[] faultButtons;
  81. public GameObject faultChoicePanel;
  82. public GameObject[] faultChoices;
  83. public GameObject[] powerFaultTips;
  84. public GameObject[] fanFaultTips;
  85. public GameObject[] ramFaultTips;
  86. public GameObject[] hardDiskFaultTips;
  87. public GameObject[] batteryFaultTips;
  88. private RectTransform faultTools;
  89. private GameObject faultSelectButtons;
  90. private IT_FaultToolList faultToolList;
  91. protected override void OnInit(object userData)
  92. {
  93. base.OnInit(userData);
  94. _trainPanel = this.transform.Find("trainPanel").gameObject;
  95. _learnPanel = this.transform.Find("learnPanel").gameObject;
  96. _faultPanel = this.transform.Find("faultPanel").gameObject;
  97. InItUiComponent();
  98. InitFaultTips();
  99. }
  100. protected override void OnOpen(object userData)
  101. {
  102. base.OnOpen(userData);
  103. _trainDoneTips.SetActive(false);
  104. _cpuButton.GetComponentInChildren<Text>().text = "CPU";
  105. _fanButton.GetComponentInChildren<Text>().text = "风冷";
  106. _powerButton.GetComponentInChildren<Text>().text = "电源";
  107. _ramButton.GetComponentInChildren<Text>().text = "内存";
  108. GameMain.Event.Subscribe(ReStart_IT_TrainStudyEvent.EventId, ReSetTrainUI);
  109. GameMain.Event.Subscribe(NextTrainStudyItemEvent.EventId, OnGetNextItem);
  110. GameMain.Event.Subscribe(IT_TrainStudyDoneEvent.EventId, OnIT_TrainStudyDone);
  111. GameMain.Event.Subscribe(IT_TrainStudyShowTargetInfoEvent.EventId, ChangeTargetMessage);
  112. GameMain.Event.Subscribe(IT_FaultNextEvent.EventId, OnGetIT_FaultNext);
  113. _learnPanel.SetActive(true);
  114. _trainPanel.SetActive(false);
  115. _learnButton.image.sprite = learnModelButtonImg[1];
  116. _trainButton.image.sprite = trainModelButtonImg[0];
  117. _faultButton.image.sprite = bugModelButtonImg[0];
  118. ChangeToLearn(true, 0.1f);
  119. tarinList.SetActive(false);
  120. //_currentType = IT_TrainModelType.learn;
  121. //GameMain.Event.Fire(this,IT_StartLearnTargetInfoEvent.Create());
  122. }
  123. protected override void OnUpdate(float elapseSeconds, float realElapseSeconds)
  124. {
  125. base.OnUpdate(elapseSeconds, realElapseSeconds);
  126. randomUpdateTime += elapseSeconds;
  127. if (randomUpdateTime >= 1)
  128. {
  129. if (haveFixed)
  130. {
  131. randomUpdateTime = 0;
  132. _cpuValueSlider.color = Color.green;
  133. _ramValueSlider.color = Color.green;
  134. cpuValue = Utility.Random.GetRandom(30, 40) * 0.01f;
  135. ramValue = Utility.Random.GetRandom(20, 30) * 0.01f;
  136. _cpuValueSlider.fillAmount = cpuValue;
  137. _cpuValueText.text = $"+{(int)(cpuValue * 100)}%";
  138. _ramValueSlider.fillAmount = ramValue;
  139. _ramValueText.text = $"+{(int)(ramValue * 100)}%";
  140. }
  141. else
  142. {
  143. randomUpdateTime = 0;
  144. _cpuValueSlider.color = Color.red;
  145. _ramValueSlider.color = new Color(1, 0.5f, 0);
  146. cpuValue = Utility.Random.GetRandom(86, 95) * 0.01f;
  147. ramValue = Utility.Random.GetRandom(63, 70) * 0.01f;
  148. _cpuValueSlider.fillAmount = cpuValue;
  149. _cpuValueText.text = $"+{(int)(cpuValue * 100)}%";
  150. _ramValueSlider.fillAmount = ramValue;
  151. _ramValueText.text = $"+{(int)(ramValue * 100)}%";
  152. }
  153. }
  154. }
  155. private void InItUiComponent()
  156. {
  157. _trainDoneTips = _trainPanel.transform.Find("DoneTips").gameObject;
  158. _trainDoneTips.SetActive(false);
  159. messagePanel = _learnPanel.transform.Find("messagePanel").gameObject;
  160. messagePanel.SetActive(false);
  161. nameText = messagePanel.transform.Find("nameText").GetComponent<Text>();
  162. messageText = messagePanel.transform.Find("messageText").GetComponent<Text>();
  163. _faultDoneTips = _faultPanel.transform.Find("DoneTips").gameObject;
  164. _faultDoneTips.SetActive(false);
  165. _faultPanel.SetActive(false);
  166. _reStartButton = _trainPanel.transform.Find("TrainButton/Verlist/reStartButton").GetComponent<Button>();
  167. _cpuButton = _trainPanel.transform.Find("TrainButton/Verlist/cpuButton").GetComponent<Button>();
  168. _ramButton = _trainPanel.transform.Find("TrainButton/Verlist/ramButton").GetComponent<Button>();
  169. _fanButton = _trainPanel.transform.Find("TrainButton/Verlist/fanButton").GetComponent<Button>();
  170. _powerButton = _trainPanel.transform.Find("TrainButton/Verlist/powerButton").GetComponent<Button>();
  171. _reStartButton.onClick.AddListener(() => { GameMain.Event.Fire(this, ReStart_IT_TrainStudyEvent.Create()); });
  172. _cpuButton.onClick.AddListener(() =>
  173. {
  174. if (!cpuDone)
  175. {
  176. GameMain.Event.Fire(this, StartTrainStudyItemEvent.Create(ITHardWaryType.cpu));
  177. }
  178. });
  179. _ramButton.onClick.AddListener(() =>
  180. {
  181. if (!ramDone)
  182. {
  183. GameMain.Event.Fire(this, StartTrainStudyItemEvent.Create(ITHardWaryType.ram));
  184. }
  185. });
  186. _fanButton.onClick.AddListener(() =>
  187. {
  188. if (!fanDone)
  189. {
  190. GameMain.Event.Fire(this, StartTrainStudyItemEvent.Create(ITHardWaryType.fan));
  191. }
  192. });
  193. _powerButton.onClick.AddListener(() =>
  194. {
  195. if (!powerDone)
  196. {
  197. GameMain.Event.Fire(this, StartTrainStudyItemEvent.Create(ITHardWaryType.power));
  198. }
  199. });
  200. //_overHotTips = _faultPanel.transform.Find("Show1/overhotTips").gameObject;
  201. _cpuValueSlider = _faultPanel.transform.Find("Show1/cpuValue/Fill").GetComponent<Image>();
  202. _cpuValueText = _faultPanel.transform.Find("Show1/cpuValue/valueText").GetComponent<Text>();
  203. _ramValueSlider = _faultPanel.transform.Find("Show1/ramValue/Fill").GetComponent<Image>();
  204. _ramValueText = _faultPanel.transform.Find("Show1/ramValue/valueText").GetComponent<Text>();
  205. _hardDiskTemperature = _faultPanel.transform.Find("Show1/hardDiskTemperature").GetComponent<Slider>();
  206. _hardDiskColor = _hardDiskTemperature.transform.Find("Fill Area/Fill").GetComponent<Image>();
  207. _mbTemperature = _faultPanel.transform.Find("Show1/mbTemperature").GetComponent<Slider>();
  208. _mbColor = _mbTemperature.transform.Find("Fill Area/Fill").GetComponent<Image>();
  209. _fanSpeed = _faultPanel.transform.Find("Show1/fanSpeed").GetComponent<Slider>();
  210. _reStarFaultButton = _faultPanel.transform.Find("FixButton/Verlist/reStartButton").GetComponent<Button>();
  211. _fanFaultButton = _faultPanel.transform.Find("FixButton/Verlist/fanButton").GetComponent<Button>();
  212. _cpuFaultButton = _faultPanel.transform.Find("FixButton/Verlist/cpuButton").GetComponent<Button>();
  213. _ramFaultButton = _faultPanel.transform.Find("FixButton/Verlist/ramButton").GetComponent<Button>();
  214. _powerFaultButton = _faultPanel.transform.Find("FixButton/Verlist/powerButton").GetComponent<Button>();
  215. _hardDiskFaultButton = _faultPanel.transform.Find("FixButton/Verlist/hardDiskButton").GetComponent<Button>();
  216. _batteryFaultButton = _faultPanel.transform.Find("FixButton/Verlist/batteryButton").GetComponent<Button>();
  217. _reStarFaultButton.onClick.AddListener(() => { });
  218. _fanFaultButton.onClick.AddListener(() =>
  219. {
  220. //fanDone = false;
  221. //GameMain.Event.Fire(this, StartTrainStudyItemEvent.Create(ITHardWaryType.fan));
  222. GameMain.Event.Fire(this, SelectFaultItemEvent.Create(IT_FaultType.fan));
  223. });
  224. _cpuFaultButton.onClick.AddListener(() =>
  225. {
  226. //GameMain.UI.OpenUIForm("Tips",new TipsData("排除故障错误!","排除故障错误!注意分析仪表数据"));
  227. GameMain.Event.Fire(this, SelectFaultItemEvent.Create(IT_FaultType.cpu));
  228. });
  229. _ramFaultButton.onClick.AddListener(() =>
  230. {
  231. //GameMain.UI.OpenUIForm("Tips",new TipsData("排除故障错误!","排除故障错误!注意分析仪表数据"));
  232. GameMain.Event.Fire(this, SelectFaultItemEvent.Create(IT_FaultType.ram));
  233. //Debug.Log("ram!!!");
  234. });
  235. _powerFaultButton.onClick.AddListener(() =>
  236. {
  237. //GameMain.UI.OpenUIForm("Tips",new TipsData("排除故障错误!","排除故障错误!注意分析仪表数据"));
  238. GameMain.Event.Fire(this, SelectFaultItemEvent.Create(IT_FaultType.power));
  239. });
  240. _hardDiskFaultButton.onClick.AddListener(() =>
  241. {
  242. //GameMain.UI.OpenUIForm("Tips",new TipsData("排除故障错误!","排除故障错误!注意分析仪表数据"));
  243. GameMain.Event.Fire(this, SelectFaultItemEvent.Create(IT_FaultType.hardDisk));
  244. });
  245. _batteryFaultButton.onClick.AddListener(() =>
  246. {
  247. //GameMain.UI.OpenUIForm("Tips",new TipsData("排除故障错误!","排除故障错误!注意分析仪表数据"));
  248. GameMain.Event.Fire(this, SelectFaultItemEvent.Create(IT_FaultType.battery));
  249. });
  250. _learnButton = this.transform.Find("Navi/B1").GetComponent<Button>();
  251. _learnButton.onClick.AddListener(() => { ChangeToLearn(true, 0.1f); });
  252. _trainButton = this.transform.Find("Navi/B2").GetComponent<Button>();
  253. _trainButton.onClick.AddListener(ChangeToTrain);
  254. _faultButton = this.transform.Find("Navi/B3").GetComponent<Button>();
  255. _faultButton.onClick.AddListener(() => { ChangeToFault(); });
  256. tarinList = this.transform.Find("Navi/trainlist").gameObject;
  257. trainB1 = this.transform.Find("Navi/trainlist/B1").GetComponent<Button>();
  258. trainB2 = this.transform.Find("Navi/trainlist/B2").GetComponent<Button>();
  259. trainB3 = this.transform.Find("Navi/trainlist/B3").GetComponent<Button>();
  260. trainB4 = this.transform.Find("Navi/trainlist/B4").GetComponent<Button>();
  261. trainB5 = this.transform.Find("Navi/trainlist/B5").GetComponent<Button>();
  262. trainB1.onClick.AddListener(() =>
  263. {
  264. GameMain.Event.Fire(this, IT_TrainAniEvent.Create(1));
  265. tarinList.SetActive(false);
  266. });
  267. trainB2.onClick.AddListener(() =>
  268. {
  269. GameMain.Event.Fire(this, IT_TrainAniEvent.Create(2));
  270. tarinList.SetActive(false);
  271. });
  272. trainB3.onClick.AddListener(() =>
  273. {
  274. GameMain.Event.Fire(this, IT_TrainAniEvent.Create(3));
  275. tarinList.SetActive(false);
  276. });
  277. trainB4.onClick.AddListener(() =>
  278. {
  279. GameMain.Event.Fire(this, IT_TrainAniEvent.Create(4));
  280. tarinList.SetActive(false);
  281. });
  282. trainB5.onClick.AddListener(() =>
  283. {
  284. GameMain.Event.Fire(this, IT_TrainAniEvent.Create(5));
  285. tarinList.SetActive(false);
  286. });
  287. tarinList.SetActive(false);
  288. faultList = this.transform.Find("Navi/faultlist").gameObject;
  289. faultB1 = this.transform.Find("Navi/faultlist/B1").GetComponent<Button>();
  290. faultB2 = this.transform.Find("Navi/faultlist/B2").GetComponent<Button>();
  291. faultB3 = this.transform.Find("Navi/faultlist/B3").GetComponent<Button>();
  292. faultB4 = this.transform.Find("Navi/faultlist/B4").GetComponent<Button>();
  293. faultB5 = this.transform.Find("Navi/faultlist/B5").GetComponent<Button>();
  294. faultB1.onClick.AddListener(() =>
  295. {
  296. foreach (var objs in faultChoices)
  297. {
  298. objs.SetActive(false);
  299. }
  300. faultChoicePanel.SetActive(false);
  301. GameMain.Event.Fire(this, FaultChoicesChangeEvent.Create(-1));
  302. GameMain.Event.Fire(this, IT_FaultStartEvent.Create(IT_FaultType.power));
  303. faultList.SetActive(false);
  304. });
  305. faultB2.onClick.AddListener(() =>
  306. {
  307. foreach (var objs in faultChoices)
  308. {
  309. objs.SetActive(false);
  310. }
  311. faultChoicePanel.SetActive(false);
  312. GameMain.Event.Fire(this, FaultChoicesChangeEvent.Create(-1));
  313. GameMain.Event.Fire(this, IT_FaultStartEvent.Create(IT_FaultType.fan));
  314. faultList.SetActive(false);
  315. });
  316. faultB3.onClick.AddListener(() =>
  317. {
  318. foreach (var objs in faultChoices)
  319. {
  320. objs.SetActive(false);
  321. }
  322. faultChoicePanel.SetActive(false);
  323. GameMain.Event.Fire(this, FaultChoicesChangeEvent.Create(-1));
  324. GameMain.Event.Fire(this, IT_FaultStartEvent.Create(IT_FaultType.ram));
  325. faultList.SetActive(false);
  326. });
  327. faultB4.onClick.AddListener(() =>
  328. {
  329. foreach (var objs in faultChoices)
  330. {
  331. objs.SetActive(false);
  332. }
  333. faultChoicePanel.SetActive(false);
  334. GameMain.Event.Fire(this, FaultChoicesChangeEvent.Create(-1));
  335. GameMain.Event.Fire(this, IT_FaultStartEvent.Create(IT_FaultType.hardDisk));
  336. faultList.SetActive(false);
  337. });
  338. faultB5.onClick.AddListener(() =>
  339. {
  340. foreach (var objs in faultChoices)
  341. {
  342. objs.SetActive(false);
  343. }
  344. faultChoicePanel.SetActive(false);
  345. GameMain.Event.Fire(this, FaultChoicesChangeEvent.Create(-1));
  346. GameMain.Event.Fire(this, IT_FaultStartEvent.Create(IT_FaultType.battery));
  347. faultList.SetActive(false);
  348. });
  349. //$$$------------------------
  350. faultChoicePanel = this.transform.Find($"faultChoicePanel").gameObject;
  351. faultChoices = new GameObject[8];
  352. for (int i = 0; i < 8; i++)
  353. {
  354. faultChoices[i] = this.transform.Find($"faultChoicePanel/BG/Quest_{i + 1}").gameObject;
  355. faultChoices[i].SetActive(false);
  356. }
  357. faultChoicePanel.SetActive(false);
  358. faultButtons = new Button[5];
  359. for (int i = 0; i < 5; i++)
  360. {
  361. faultButtons[i] = this.transform.Find($"Navi/faultlist/B{i + 6}").GetComponent<Button>();
  362. }
  363. faultButtons[0].onClick.AddListener(() => { faultChoicesClick(0); });
  364. faultButtons[1].onClick.AddListener(() => { faultChoicesClick(1); });
  365. faultButtons[2].onClick.AddListener(() => { faultChoicesClick(2); });
  366. faultButtons[3].onClick.AddListener(() => { faultChoicesClick(3); });
  367. faultButtons[4].onClick.AddListener(() => { faultChoicesClick(4); });
  368. faultChoicePanel.SetActive(false);
  369. //$$$------------------------
  370. faultList.SetActive(false);
  371. }
  372. //$$$------------------------
  373. private void faultChoicesClick(int index)
  374. {
  375. foreach (var obj in powerFaultTips)
  376. {
  377. obj.SetActive(false);
  378. }
  379. foreach (var obj in fanFaultTips)
  380. {
  381. obj.SetActive(false);
  382. }
  383. foreach (var obj in ramFaultTips)
  384. {
  385. obj.SetActive(false);
  386. }
  387. foreach (var obj in hardDiskFaultTips)
  388. {
  389. obj.SetActive(false);
  390. }
  391. foreach (var obj in batteryFaultTips)
  392. {
  393. obj.SetActive(false);
  394. }
  395. faultSelectButtons.SetActive(false);
  396. foreach (var objs in faultChoices)
  397. {
  398. objs.SetActive(false);
  399. }
  400. GameMain.Event.Fire(this, FaultChoicesChangeEvent.Create(index));
  401. faultChoices[index].SetActive(true);
  402. faultChoicePanel.SetActive(true);
  403. faultList.SetActive(false);
  404. }
  405. private void InitFaultTips()
  406. {
  407. fanFaultTips = new GameObject[7];
  408. for (int i = 0; i < fanFaultTips.Length; i++)
  409. {
  410. fanFaultTips[i] = _faultPanel.transform.Find($"Doc/BG/Step1_{i}").gameObject;
  411. fanFaultTips[i].SetActive(false);
  412. }
  413. powerFaultTips = new GameObject[6];
  414. for (int i = 0; i < powerFaultTips.Length; i++)
  415. {
  416. powerFaultTips[i] = _faultPanel.transform.Find($"Doc/BG/Step2_{i}").gameObject;
  417. powerFaultTips[i].SetActive(false);
  418. }
  419. ramFaultTips = new GameObject[6];
  420. for (int i = 0; i < ramFaultTips.Length; i++)
  421. {
  422. ramFaultTips[i] = _faultPanel.transform.Find($"Doc/BG/Step3_{i}").gameObject;
  423. ramFaultTips[i].SetActive(false);
  424. }
  425. hardDiskFaultTips = new GameObject[6];
  426. for (int i = 0; i < hardDiskFaultTips.Length; i++)
  427. {
  428. hardDiskFaultTips[i] = _faultPanel.transform.Find($"Doc/BG/Step4_{i}").gameObject;
  429. hardDiskFaultTips[i].SetActive(false);
  430. }
  431. batteryFaultTips = new GameObject[6];
  432. for (int i = 0; i < batteryFaultTips.Length; i++)
  433. {
  434. batteryFaultTips[i] = _faultPanel.transform.Find($"Doc/BG/Step5_{i}").gameObject;
  435. batteryFaultTips[i].SetActive(false);
  436. }
  437. faultTools = _faultPanel.transform.Find($"Tools").GetComponent<RectTransform>();
  438. faultTools.localPosition = new Vector3(1120, 0, 0);
  439. faultSelectButtons = _faultPanel.transform.Find($"FixButton").gameObject;
  440. faultSelectButtons.SetActive(false);
  441. faultToolList = faultTools.GetComponent<IT_FaultToolList>();
  442. }
  443. protected override void OnClose(bool isShutdown, object userData)
  444. {
  445. base.OnClose(isShutdown, userData);
  446. GameMain.Event.Unsubscribe(ReStart_IT_TrainStudyEvent.EventId, ReSetTrainUI);
  447. GameMain.Event.Unsubscribe(NextTrainStudyItemEvent.EventId, OnGetNextItem);
  448. GameMain.Event.Unsubscribe(IT_TrainStudyDoneEvent.EventId, OnIT_TrainStudyDone);
  449. GameMain.Event.Unsubscribe(IT_TrainStudyShowTargetInfoEvent.EventId, ChangeTargetMessage);
  450. GameMain.Event.Unsubscribe(IT_FaultNextEvent.EventId, OnGetIT_FaultNext);
  451. }
  452. private async void ChangeToLearn(bool force = false, float delayTime = 0.0f)
  453. {
  454. tarinList.SetActive(false);
  455. _faultDoneTips.SetActive(false);
  456. faultList.SetActive(false);
  457. if (_currentType == IT_TrainModelType.learn && !force)
  458. return;
  459. if (SceneManager.GetActiveScene().name != "TrainStudy")
  460. SceneManager.LoadScene("TrainStudy");
  461. await Task.Delay((int)(delayTime * 1000));
  462. GameMain.Event.Fire(this, IT_TrainStudyStateEvent.Create(false));
  463. GameMain.Event.Fire(this, IT_StartLearnTargetInfoEvent.Create());
  464. _currentType = IT_TrainModelType.learn;
  465. _learnButton.image.sprite = learnModelButtonImg[1];
  466. _trainButton.image.sprite = trainModelButtonImg[0];
  467. _faultButton.image.sprite = bugModelButtonImg[0];
  468. _trainPanel.SetActive(false);
  469. _learnPanel.SetActive(true);
  470. _faultPanel.SetActive(false);
  471. //$$$------------------------
  472. faultChoicePanel.SetActive(false);
  473. }
  474. private void ChangeToTrain()
  475. {
  476. faultList.SetActive(false);
  477. tarinList.SetActive(true);
  478. if (_currentType == IT_TrainModelType.train)
  479. return;
  480. _learnPanel.SetActive(false);
  481. _faultPanel.SetActive(false);
  482. _learnButton.image.sprite = learnModelButtonImg[0];
  483. _trainButton.image.sprite = trainModelButtonImg[1];
  484. _faultButton.image.sprite = bugModelButtonImg[0];
  485. _currentType = IT_TrainModelType.train;
  486. if (SceneManager.GetActiveScene().name != "TrainStudy1")
  487. SceneManager.LoadScene("TrainStudy1");
  488. //_trainPanel.SetActive(true);
  489. //$$$------------------------
  490. faultChoicePanel.SetActive(false);
  491. }
  492. private async void ChangeToFault(bool force = false)
  493. {
  494. tarinList.SetActive(false);
  495. faultList.SetActive(true);
  496. if (_currentType == IT_TrainModelType.fault && !force)
  497. return;
  498. GameMain.Event.Fire(this, IT_TrainStudyStateEvent.Create(false));
  499. GameMain.Event.Fire(this, IT_StartLearnTargetInfoEvent.Create(false));
  500. _learnButton.image.sprite = learnModelButtonImg[0];
  501. _trainButton.image.sprite = trainModelButtonImg[0];
  502. _faultButton.image.sprite = bugModelButtonImg[1];
  503. _faultPanel.SetActive(true);
  504. _trainPanel.SetActive(false);
  505. _learnPanel.SetActive(false);
  506. _currentType = IT_TrainModelType.fault;
  507. _faultPanel.transform.Find($"Doc").gameObject.SetActive(false);
  508. _faultPanel.transform.Find($"FixButton").gameObject.SetActive(false);
  509. _faultPanel.transform.Find($"Tools").GetComponent<RectTransform>().localPosition = new Vector3(1120, 0, 0);
  510. if (SceneManager.GetActiveScene().name != "TrainStudy1_2" || force)
  511. SceneManager.LoadScene("TrainStudy1_2");
  512. //ResetFaultPanel();
  513. //await Task.Delay((int)(1000));
  514. //GameMain.Event.Fire(this, IT_FaultStartEvent.Create(IT_FaultType.power));
  515. //$$$------------------------
  516. faultChoicePanel.SetActive(false);
  517. }
  518. private void ResetFaultPanel()
  519. {
  520. _faultDoneTips.SetActive(false);
  521. haveFixed = false;
  522. DOTween.Kill("_fanSpeed");
  523. DOTween.Kill("_mbTemperature");
  524. DOTween.Kill("_hardDiskTemperature");
  525. //_overHotTips.SetActive(true);
  526. _mbTemperature.value = 9;
  527. _mbTemperature.DOValue(8, 0.8f).SetLoops(-1, LoopType.Yoyo).SetId("_mbTemperature");
  528. _hardDiskTemperature.value = 9;
  529. _hardDiskTemperature.DOValue(8, 1.2f).SetLoops(-1, LoopType.Yoyo).SetId("_hardDiskTemperature");
  530. _fanSpeed.value = 0;
  531. _hardDiskColor.color = Color.red;
  532. _mbColor.color = Color.red;
  533. }
  534. private void FixFault(ITHardWaryType type)
  535. {
  536. switch (type)
  537. {
  538. case ITHardWaryType.cpu:
  539. break;
  540. case ITHardWaryType.fan:
  541. break;
  542. case ITHardWaryType.ram:
  543. break;
  544. case ITHardWaryType.power:
  545. break;
  546. case ITHardWaryType.none:
  547. break;
  548. }
  549. }
  550. private void ChangeTargetMessage(object sender, GameEventArgs e)
  551. {
  552. IT_TrainStudyShowTargetInfoEvent args = (IT_TrainStudyShowTargetInfoEvent)e;
  553. switch (args._Type)
  554. {
  555. case ITHardWaryType.cpu:
  556. nameText.text = "CPU";
  557. messageText.text = cpuMessage;
  558. if (!messagePanel.activeSelf)
  559. {
  560. messagePanel.SetActive(true);
  561. }
  562. break;
  563. case ITHardWaryType.fan:
  564. nameText.text = "风冷";
  565. messageText.text = fanMessage;
  566. if (!messagePanel.activeSelf)
  567. {
  568. messagePanel.SetActive(true);
  569. }
  570. break;
  571. case ITHardWaryType.ram:
  572. nameText.text = "内存";
  573. messageText.text = ramMessage;
  574. if (!messagePanel.activeSelf)
  575. {
  576. messagePanel.SetActive(true);
  577. }
  578. break;
  579. case ITHardWaryType.power:
  580. nameText.text = "电源";
  581. messageText.text = powerMessage;
  582. if (!messagePanel.activeSelf)
  583. {
  584. messagePanel.SetActive(true);
  585. }
  586. break;
  587. case ITHardWaryType.none:
  588. messagePanel.SetActive(false);
  589. break;
  590. }
  591. }
  592. private void OnGetNextItem(object sender, GameEventArgs e)
  593. {
  594. NextTrainStudyItemEvent args = (NextTrainStudyItemEvent)e;
  595. switch (args.ItHardWaryType)
  596. {
  597. case ITHardWaryType.cpu:
  598. cpuDone = true;
  599. _cpuButton.GetComponentInChildren<Text>().text = "CPU(已放置)";
  600. break;
  601. case ITHardWaryType.fan:
  602. if (_currentType == IT_TrainModelType.fault)
  603. {
  604. fanDone = true;
  605. _faultDoneTips.SetActive(true);
  606. DOTween.Kill("_fanSpeed");
  607. DOTween.Kill("_mbTemperature");
  608. DOTween.Kill("_hardDiskTemperature");
  609. haveFixed = true;
  610. //_overHotTips.SetActive(false);
  611. _mbTemperature.value = 4;
  612. _mbTemperature.DOValue(3, 1.8f).SetLoops(-1, LoopType.Yoyo).SetId("_mbTemperature");
  613. _hardDiskTemperature.value = 5;
  614. _hardDiskTemperature.DOValue(4, 1.3f).SetLoops(-1, LoopType.Yoyo).SetId("_hardDiskTemperature");
  615. _fanSpeed.DOValue(7, 1.0f).SetLoops(-1, LoopType.Yoyo).SetId("_fanSpeed");
  616. _fanSpeed.value = 8;
  617. _hardDiskColor.color = Color.green;
  618. _mbColor.color = Color.green;
  619. }
  620. else
  621. {
  622. fanDone = true;
  623. _fanButton.GetComponentInChildren<Text>().text = "风冷(已放置)";
  624. }
  625. break;
  626. case ITHardWaryType.power:
  627. powerDone = true;
  628. _powerButton.GetComponentInChildren<Text>().text = "电源(已放置)";
  629. break;
  630. case ITHardWaryType.ram:
  631. ramDone = true;
  632. _ramButton.GetComponentInChildren<Text>().text = "内存(已放置)";
  633. break;
  634. }
  635. }
  636. private void ReSetTrainUI(object sender, GameEventArgs e)
  637. {
  638. _trainDoneTips.SetActive(false);
  639. _cpuButton.GetComponentInChildren<Text>().text = "CPU";
  640. _fanButton.GetComponentInChildren<Text>().text = "风冷";
  641. _powerButton.GetComponentInChildren<Text>().text = "电源";
  642. _ramButton.GetComponentInChildren<Text>().text = "内存";
  643. cpuDone = false;
  644. fanDone = false;
  645. ramDone = false;
  646. powerDone = false;
  647. }
  648. private void OnIT_TrainStudyDone(object sender, GameEventArgs e)
  649. {
  650. //Debug.Log(11111111111);
  651. _faultDoneTips.SetActive(true);
  652. ChangeToFault(true);
  653. //GameMain.UI.OpenUIForm("Tips", "Pop");
  654. }
  655. private void OnGetIT_FaultNext(object sender, GameEventArgs e)
  656. {
  657. IT_FaultNextEvent args = (IT_FaultNextEvent)e;
  658. _faultPanel.transform.Find($"Doc").gameObject.SetActive(true);
  659. switch (args.FaultType)
  660. {
  661. case IT_FaultType.fan:
  662. for (int i = 0; i < fanFaultTips.Length; i++)
  663. {
  664. fanFaultTips[i].SetActive(false);
  665. }
  666. fanFaultTips[args.stepIndex].SetActive(true);
  667. if (args.stepIndex == 0)
  668. {
  669. for (int i = 0; i < powerFaultTips.Length; i++)
  670. {
  671. powerFaultTips[i].SetActive(false);
  672. }
  673. for (int i = 0; i < ramFaultTips.Length; i++)
  674. {
  675. ramFaultTips[i].SetActive(false);
  676. }
  677. foreach (var t in hardDiskFaultTips)
  678. {
  679. t.SetActive(false);
  680. }
  681. foreach (var t in batteryFaultTips)
  682. {
  683. t.SetActive(false);
  684. }
  685. faultSelectButtons.SetActive(true);
  686. faultTools.localPosition = new Vector3(1120, 0, 0);
  687. faultToolList.ReSetToolList(1);
  688. }
  689. else
  690. {
  691. if (args.stepIndex == 4)
  692. {
  693. faultToolList.ShowChassisCover();
  694. }
  695. faultSelectButtons.SetActive(false);
  696. faultTools.localPosition = new Vector3(920, 0, 0);
  697. }
  698. break;
  699. case IT_FaultType.power:
  700. for (int i = 0; i < powerFaultTips.Length; i++)
  701. {
  702. powerFaultTips[i].SetActive(false);
  703. }
  704. powerFaultTips[args.stepIndex].SetActive(true);
  705. if (args.stepIndex == 0)
  706. {
  707. for (int i = 0; i < fanFaultTips.Length; i++)
  708. {
  709. fanFaultTips[i].SetActive(false);
  710. }
  711. for (int i = 0; i < ramFaultTips.Length; i++)
  712. {
  713. ramFaultTips[i].SetActive(false);
  714. }
  715. foreach (var t in hardDiskFaultTips)
  716. {
  717. t.SetActive(false);
  718. }
  719. foreach (var t in batteryFaultTips)
  720. {
  721. t.SetActive(false);
  722. }
  723. faultSelectButtons.SetActive(true);
  724. faultTools.localPosition = new Vector3(1120, 0, 0);
  725. faultToolList.ReSetToolList(0);
  726. }
  727. else
  728. {
  729. faultSelectButtons.SetActive(false);
  730. faultTools.localPosition = new Vector3(920, 0, 0);
  731. }
  732. break;
  733. case IT_FaultType.ram:
  734. foreach (var t in ramFaultTips)
  735. {
  736. t.SetActive(false);
  737. }
  738. ramFaultTips[args.stepIndex].SetActive(true);
  739. if (args.stepIndex == 0)
  740. {
  741. foreach (var t in fanFaultTips)
  742. {
  743. t.SetActive(false);
  744. }
  745. foreach (var t in powerFaultTips)
  746. {
  747. t.SetActive(false);
  748. }
  749. foreach (var t in hardDiskFaultTips)
  750. {
  751. t.SetActive(false);
  752. }
  753. foreach (var t in batteryFaultTips)
  754. {
  755. t.SetActive(false);
  756. }
  757. faultSelectButtons.SetActive(true);
  758. faultTools.localPosition = new Vector3(1120, 0, 0);
  759. faultToolList.ReSetToolList(2);
  760. }
  761. else
  762. {
  763. if (args.stepIndex == 4)
  764. {
  765. faultToolList.ShowChassisCover();
  766. }
  767. faultSelectButtons.SetActive(false);
  768. faultTools.localPosition = new Vector3(920, 0, 0);
  769. }
  770. break;
  771. case IT_FaultType.hardDisk:
  772. foreach (var t in hardDiskFaultTips)
  773. {
  774. t.SetActive(false);
  775. }
  776. hardDiskFaultTips[args.stepIndex].SetActive(true);
  777. if (args.stepIndex == 0)
  778. {
  779. foreach (var t in fanFaultTips)
  780. {
  781. t.SetActive(false);
  782. }
  783. foreach (var t in powerFaultTips)
  784. {
  785. t.SetActive(false);
  786. }
  787. foreach (var t in ramFaultTips)
  788. {
  789. t.SetActive(false);
  790. }
  791. foreach (var t in batteryFaultTips)
  792. {
  793. t.SetActive(false);
  794. }
  795. faultSelectButtons.SetActive(true);
  796. faultTools.localPosition = new Vector3(1120, 0, 0);
  797. faultToolList.ReSetToolList(3);
  798. }
  799. else
  800. {
  801. if (args.stepIndex == 4)
  802. {
  803. faultToolList.ShowChassisCover();
  804. }
  805. faultSelectButtons.SetActive(false);
  806. faultTools.localPosition = new Vector3(920, 0, 0);
  807. }
  808. break;
  809. case IT_FaultType.battery:
  810. foreach (var t in batteryFaultTips)
  811. {
  812. t.SetActive(false);
  813. }
  814. batteryFaultTips[args.stepIndex].SetActive(true);
  815. if (args.stepIndex == 0)
  816. {
  817. foreach (var t in fanFaultTips)
  818. {
  819. t.SetActive(false);
  820. }
  821. foreach (var t in powerFaultTips)
  822. {
  823. t.SetActive(false);
  824. }
  825. foreach (var t in ramFaultTips)
  826. {
  827. t.SetActive(false);
  828. }
  829. foreach (var t in hardDiskFaultTips)
  830. {
  831. t.SetActive(false);
  832. }
  833. faultSelectButtons.SetActive(true);
  834. faultTools.localPosition = new Vector3(1120, 0, 0);
  835. faultToolList.ReSetToolList(4);
  836. }
  837. else
  838. {
  839. if (args.stepIndex == 4)
  840. {
  841. faultToolList.ShowChassisCover();
  842. }
  843. faultSelectButtons.SetActive(false);
  844. faultTools.localPosition = new Vector3(920, 0, 0);
  845. }
  846. break;
  847. }
  848. }
  849. }