public override void SetTransitionEvents() { StateTransition selectingUnit = GetTransitionByID(TransitionID.Previous); if (selectingUnit != null) { // 1. Disable Input DisableInputEvent disableInputEvent = new DisableInputEvent(EventID.DisableInput, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); selectingUnit.AddEvent(disableInputEvent, CoroutineID.Execute); // 2. Hide Expanded Unit GUI UnitWindow unitWindow = GameObject.Find("Unit Window").GetComponent<UnitWindow>(); HideWindowEvent hideUnitWindow = new HideWindowEvent(EventID.HideUnitWindow, this, new EventArgs<Window>(unitWindow)); selectingUnit.AddEvent(hideUnitWindow, CoroutineID.Execute); // 3. Deactivate Unit DeactivateUnitEvent deactivateUnitEvent = new DeactivateUnitEvent (EventID.DeactivateUnit, this, new EventArgs<Actors.Cursor, Faction>(stateMachine.MouseCursor, stateMachine.TurnHandler.ActiveFaction)); selectingUnit.AddEvent(deactivateUnitEvent, CoroutineID.Execute); // 4. Deselect Unit DeselectUnitEvent deselectUnit = new DeselectUnitEvent(EventID.DeselectUnit, this, new EventArgs<Actors.Cursor>(stateMachine.MouseCursor)); selectingUnit.AddEvent(deselectUnit, CoroutineID.Execute); // 5. Enable Input EnableInputEvent enableInput = new EnableInputEvent(EventID.EnableInput, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); selectingUnit.AddEvent(enableInput, CoroutineID.Execute); } StateTransition changingTurns = GetTransitionByID(TransitionID.Next); if (changingTurns != null) { // 1. Disable Input DisableInputEvent disableInputEvent = new DisableInputEvent(EventID.DisableInput, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); changingTurns.AddEvent(disableInputEvent, CoroutineID.Execute); // 2. Hide Expanded Unit GUI UnitWindow unitWindow = GameObject.Find("Unit Window").GetComponent<UnitWindow>(); HideWindowEvent hideUnitWindow = new HideWindowEvent(EventID.HideUnitWindow, this, new EventArgs<Window>(unitWindow)); changingTurns.AddEvent(hideUnitWindow, CoroutineID.Execute); // 3. Deactivate Unit DeactivateUnitEvent deactivateUnitEvent = new DeactivateUnitEvent (EventID.DeactivateUnit, this, new EventArgs<Actors.Cursor, Faction>(stateMachine.MouseCursor, stateMachine.TurnHandler.ActiveFaction)); changingTurns.AddEvent(deactivateUnitEvent, CoroutineID.Execute); // 4. Deselect Unit DeselectUnitEvent deselectUnit = new DeselectUnitEvent(EventID.DeselectUnit, this, new EventArgs<Actors.Cursor>(stateMachine.MouseCursor)); changingTurns.AddEvent(deselectUnit, CoroutineID.Execute); } }
public override void SetTransitionEvents() { // Get Unit Action Menu GameObject unitActionMenuObject = GameObject.Find("Unit Action Menu"); UnitActionMenu unitActionMenu = null; if (unitActionMenuObject != null) unitActionMenu = unitActionMenuObject.GetComponent<UnitActionMenu>(); StateTransition deselectingUnit = GetTransitionByID(TransitionID.Previous); if (deselectingUnit != null) { // 1. Disable Input DisableInputEvent disableInput = new DisableInputEvent(EventID.DisableInput, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); deselectingUnit.AddEvent(disableInput, CoroutineID.Execute); // 2. Hide Expanded Unit GUI UnitWindow unitWindow = GameObject.Find("Unit Window").GetComponent<UnitWindow>(); HideWindowEvent hideUnitWindow = new HideWindowEvent(EventID.HideUnitWindow, this, new EventArgs<Window>(unitWindow)); deselectingUnit.AddEvent(hideUnitWindow, CoroutineID.Execute); // 3. Hide Movement Area of Selected Unit // 4. Hide Movement Line within Movement Area HideMovementAreaEvent hideMovementArea = new HideMovementAreaEvent(EventID.HideMovementArea, this, new EventArgs<Pathfinder>(stateMachine.Pathfinder)); deselectingUnit.AddEvent(hideMovementArea, CoroutineID.Execute); // 5. Deselect Unit DeselectUnitEvent deselectUnit = new DeselectUnitEvent(EventID.DeselectUnit, this, new EventArgs<Actors.Cursor>(stateMachine.MouseCursor)); deselectingUnit.AddEvent(deselectUnit, CoroutineID.Execute); // 6. Enable Input EnableInputEvent enableInput = new EnableInputEvent(EventID.EnableInput, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); deselectingUnit.AddEvent(enableInput, CoroutineID.Execute); } StateTransition confirmingUnitMove = GetTransitionByID(TransitionID.Next); if (confirmingUnitMove != null) { // 1. Disable Input DisableInputEvent disableInput = new DisableInputEvent(EventID.DisableInput, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); confirmingUnitMove.AddEvent(disableInput, CoroutineID.Execute); // 2. Disable Movement Area // 3. Disable Movement Line HideMovementAreaEvent hideMovementArea = new HideMovementAreaEvent( EventID.HideMovementArea, this, new EventArgs<Pathfinder>(stateMachine.Pathfinder)); confirmingUnitMove.AddEvent(hideMovementArea, CoroutineID.Execute); // 4. Move unit to selected node MoveUnitEvent moveUnit = new MoveUnitEvent(EventID.MoveUnit, this, new EventArgs<Actors.Cursor, Pathfinder, float>(stateMachine.MouseCursor, stateMachine.Pathfinder, 0.1f)); confirmingUnitMove.AddEvent(moveUnit, CoroutineID.Execute); // 4. Pan Camera to Selected Unit PanCameraToSelectedUnitObjectEvent panCameraToSelectedUnitObject = new PanCameraToSelectedUnitObjectEvent( EventID.PanCameraToSelectedUnitObject, this, new EventArgs<CameraHandler, Actors.Cursor, float>(stateMachine.CameraHandler, stateMachine.MouseCursor, 1.0f)); confirmingUnitMove.AddEvent(panCameraToSelectedUnitObject, CoroutineID.Execute); // 5. Show Unit Action Menu ShowWindowEvent showWindow = new ShowWindowEvent(EventID.ShowWindow, this, new EventArgs<Window>(unitActionMenu)); confirmingUnitMove.AddEvent(showWindow, CoroutineID.Execute); // 6. Enable Keyboard EnableKeyboardEvent enableKeyboard = new EnableKeyboardEvent(EventID.EnableKeyboard, this, new EventArgs<InputHandler>(stateMachine.InputHandler)); confirmingUnitMove.AddEvent(enableKeyboard, CoroutineID.Execute); } }