// Update is called once per frame void Update() { if (destroy) { RemoveUnit(); return; } if (!turn) { return; } switch (state) { case UnitState.SelectingDestination: //animator.speed = 1; //cursor.state = CursorState.SelectingUnit; break; case UnitState.Moving: //animator.speed = 2; cursor.state = CursorState.Inactive; Move(); break; case UnitState.AwaitingChoice: //animator.speed = 1; cursor.state = CursorState.AwaitingChoice; break; case UnitState.SelectingTarget: //animator.speed = 1; if (cursor.state == CursorState.AwaitingChoice) { TurnToFace(combatTarget.pos); } break; case UnitState.Attacking: switch (currentAttack) { case AttackType.Cripple: combatTarget.TakeDamage(currentAttack, Strength); break; case AttackType.Impair: combatTarget.TakeDamage(currentAttack, Energy); break; case AttackType.Weaken: combatTarget.TakeDamage(currentAttack, Energy); break; } //TODO: add delay state = UnitState.EndingPhase; break; case UnitState.EndingPhase: //animator.speed = 1; cursor.ResetCursor(); combatTarget = null; state = UnitState.SelectingDestination; UpdatePosition(); done = false; TempTurnManager.EndPhase(); break; } }
// Update is called once per frame void Update() { if (destroy) { RemoveUnit(); return; } if (!turn) { return; } switch (state) { case UnitState.SelectingDestination: //animator.speed = 1; if (!done) { StartCoroutine(SelectingDestinationCoroutine()); } break; case UnitState.Moving: //animator.speed = 2; Move(); break; case UnitState.AwaitingChoice: //animator.speed = 1; if (!done) { StartCoroutine(AwaitingChoiceCoroutine()); } break; case UnitState.SelectingTarget: //animator.speed = 1; //combatTarget = GetCombatTarget(); if (combatTarget != null) { TurnToFace(combatTarget.pos); currentAttack = Utilities.Choose <AttackType>(attackTypes); state = UnitState.Attacking; } else { state = UnitState.EndingPhase; } break; case UnitState.Attacking: if (combatTarget != null) { switch (currentAttack) { case AttackType.Cripple: combatTarget.TakeDamage(currentAttack, Strength); break; case AttackType.Impair: combatTarget.TakeDamage(currentAttack, Energy); break; case AttackType.Weaken: combatTarget.TakeDamage(currentAttack, Energy); break; } combatTarget = null; } if (!done) { StartCoroutine(AttackingCoroutine()); } break; case UnitState.EndingPhase: //animator.speed = 1; combatTarget = null; state = UnitState.SelectingDestination; UpdatePosition(); done = false; TempTurnManager.EndPhase(); break; } }