123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using GameFramework.Event;
- using UnityEngine;
- public class TrainStudyCtrl : MonoBehaviour
- {
- private Ray _ray;
- private RaycastHit _raycastHit;
- public bool _findPosition = false;
- public bool _learnTarget = false;
- private ITHardWaryType _currentFindType=ITHardWaryType.none;
- private Dictionary<ITHardWaryType, RayCastColliders> _colliderList;
- private Dictionary<ITHardWaryType, GameObject> _modelList;
- private Dictionary<ITHardWaryType, Vector3> _oriPosition;
- private Dictionary<ITHardWaryType, GameObject> _moveTargets;
- private Dictionary<ITHardWaryType, Material> _mats;
- private RayCastColliders _currentCollider;
- private GameObject _currentModel;
- private GameObject _currentMoveObj;
- private Material _currentMat;
- public Material cpuTargetMat;
- public Material ramTargetMat;
- public Material fanTargetMat;
- public Material powerTargetMat;
- public int completeCount = 0;
-
- private void Awake()
- {
- _colliderList = new Dictionary<ITHardWaryType, RayCastColliders>();
- _modelList = new Dictionary<ITHardWaryType, GameObject>();
- _oriPosition = new Dictionary<ITHardWaryType, Vector3>();
- _moveTargets = new Dictionary<ITHardWaryType, GameObject>();
- _mats = new Dictionary<ITHardWaryType, Material>();
- _mats.Add(ITHardWaryType.cpu, cpuTargetMat);
- _mats.Add(ITHardWaryType.fan, fanTargetMat);
- _mats.Add(ITHardWaryType.power, powerTargetMat);
- _mats.Add(ITHardWaryType.ram, ramTargetMat);
- _currentFindType = ITHardWaryType.power;
- for (int i = 1; i < 5; i++)
- {
- _colliderList.Add((ITHardWaryType)i,this.transform.Find($"{(ITHardWaryType)i}Collider").GetComponent<RayCastColliders>());
- _modelList.Add((ITHardWaryType)i,this.transform.Find($"{(ITHardWaryType)i}Model").gameObject);
- _oriPosition.Add((ITHardWaryType)i,this.transform.Find($"{(ITHardWaryType)i}Model").transform.position);
- _moveTargets.Add((ITHardWaryType)i,this.transform.Find($"target_{(ITHardWaryType)i}").gameObject);
- }
- foreach (var item in _colliderList.Values)
- {
- item.SetMeshEnable(false);
- }
- foreach (var item in _moveTargets.Values)
- {
- item.SetActive(false);
- }
- foreach (var item in _modelList.Values)
- {
- item.SetActive(false);
- }
- _currentModel = _modelList[_currentFindType];
- _currentCollider = _colliderList[_currentFindType];
- _currentMoveObj = _moveTargets[_currentFindType];
- _currentMat = _mats[_currentFindType];
- }
- void Start()
- {
- _findPosition = false;
- _learnTarget = false;
- GameMain.Event.Subscribe(ReStart_IT_TrainStudyEvent.EventId,ReStartTrain);
- GameMain.Event.Subscribe(IT_TrainStudyStateEvent.EventId,TrainPause);
- GameMain.Event.Subscribe(StartTrainStudyItemEvent.EventId,StartHardWaryTrain);
- GameMain.Event.Subscribe(IT_StartLearnTargetInfoEvent.EventId,StartLearn);
- }
- // Update is called once per frame
- void Update()
- {
- if (_findPosition)
- {
- _ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- if (Physics.Raycast(_ray,out _raycastHit))
- {
- if (_raycastHit.collider.gameObject.name.Equals($"{_currentFindType.ToString()}Collider"))
- {
- _currentCollider.SetMeshEnable(true);
- _currentMat.color=Color.green;
- if (Input.GetKeyDown(KeyCode.Mouse0))
- {
- CurrentHardWaryDone();
- }
- }
- else
- {
- _currentCollider.SetMeshEnable(false);
- _currentMat.color=Color.red;
- }
- _currentMoveObj.transform.position = _raycastHit.point;
- }
- }
- if (_learnTarget)
- {
- foreach (var item in _colliderList.Values)
- {
- item.SetMeshEnable(false);
- }
- _ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- if (Physics.Raycast(_ray,out _raycastHit))
- {
- switch (_raycastHit.collider.gameObject.name)
- {
- case "cpuCollider":
- _colliderList[ITHardWaryType.cpu].SetMeshEnable(true);
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.cpu));
- break;
- case "fanCollider":
- _colliderList[ITHardWaryType.fan].SetMeshEnable(true);
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.fan));
- break;
- case "ramCollider":
- _colliderList[ITHardWaryType.ram].SetMeshEnable(true);
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.ram));
- break;
- case "powerCollider":
- _colliderList[ITHardWaryType.power].SetMeshEnable(true);
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.power));
- break;
- default:
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.none));
- break;
- }
- }
- else
- {
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.none));
- }
- }
- }
- private void OnDestroy()
- {
- if (GameMain.Event.Check(ReStart_IT_TrainStudyEvent.EventId, ReStartTrain))
- {
- GameMain.Event.Unsubscribe(ReStart_IT_TrainStudyEvent.EventId,ReStartTrain);
- }
- if (GameMain.Event.Check(IT_TrainStudyStateEvent.EventId, TrainPause))
- {
- GameMain.Event.Unsubscribe(IT_TrainStudyStateEvent.EventId,TrainPause);
- }
- if (GameMain.Event.Check(IT_StartLearnTargetInfoEvent.EventId, StartLearn))
- {
- GameMain.Event.Unsubscribe(IT_StartLearnTargetInfoEvent.EventId,StartLearn);
- }
- if (GameMain.Event.Check(StartTrainStudyItemEvent.EventId, StartHardWaryTrain))
- {
- GameMain.Event.Unsubscribe(StartTrainStudyItemEvent.EventId, StartHardWaryTrain);
- }
- }
- private void CurrentHardWaryDone()
- {
- _findPosition = false;
- _currentModel.SetActive(true);
- _currentCollider.SetMeshEnable(false);
- _currentMoveObj.SetActive(false);
- GameMain.Event.Fire(this,NextTrainStudyItemEvent.Create(_currentFindType));
- completeCount++;
- if (completeCount >= 4)
- {
- TrainDone();
- _currentFindType = 0;
- }
- }
-
- private void StartHardWaryTrain(object sender,GameEventArgs e)
- {
- StartTrainStudyItemEvent args=(StartTrainStudyItemEvent) e;
- _currentFindType = args.ItHardWaryType;
- _currentModel = _modelList[_currentFindType];
- _currentCollider = _colliderList[_currentFindType];
- _currentMat = _mats[_currentFindType];
- //for (int i = 0; i < _moveTargets.Keys.Count; i++) {
- // Debug.Log(_moveTargets[_moveTargets.Keys);
- //}
- //Debug.Log(_moveTargets);
- //Debug.Log(_currentFindType);
- _currentMoveObj = _moveTargets[_currentFindType];
- _currentMoveObj.SetActive(true);
- _findPosition = true;
- _learnTarget = false;
- }
- private void StartLearn(object sender,GameEventArgs e)
- {
- IT_StartLearnTargetInfoEvent args = (IT_StartLearnTargetInfoEvent)e;
- _learnTarget = args.start;
- foreach (var item in _modelList.Values)
- {
- item.SetActive(true);
- }
- }
- private void TrainPause(object sender,GameEventArgs e)
- {
- IT_TrainStudyStateEvent args = (IT_TrainStudyStateEvent)e;
- if (!args.isPlaying)
- {
- _findPosition = false;
- foreach (var item in _modelList.Values)
- {
- item.SetActive(true);
- }
- }
- }
- private void TrainDone()
- {
- _findPosition = false;
- GameMain.Event.Fire(this,IT_TrainStudyDoneEvent.Create());
- }
-
- private void ReStartTrain(object sender,GameEventArgs e)
- {
- completeCount = 0;
- foreach (var item in _colliderList.Values)
- {
- item.SetMeshEnable(false);
- }
- foreach (var item in _modelList.Values)
- {
- item.SetActive(false);
- }
- foreach (var item in _moveTargets.Values)
- {
- item.SetActive(false);
- }
- foreach (var item in _mats.Values)
- {
- item.color=Color.red;
- }
- _currentFindType = ITHardWaryType.power;
- _currentModel = _modelList[_currentFindType];
- _currentCollider = _colliderList[_currentFindType];
- _currentMoveObj = _moveTargets[_currentFindType];
- _findPosition = false;
- _learnTarget = false;
- GameMain.Event.Fire(this,IT_TrainStudyShowTargetInfoEvent.Create(ITHardWaryType.none));
- }
- }
|