IEnumerator CombatCardPlayed(ICombatCard playedCardObject) { uiToggler.DisablePlayerActionsDuringCardPlay(); CombatCard playedCard = playedCardObject.GetAssignedCard(); CharacterGraphic userGraphic = playedCard.GetUserChar(); //Visualize card play if (playedCard.targetType == CombatCard.TargetType.None) PutCardToCharacter(playedCardObject, userGraphic); if (playedCard.targetType == CombatCard.TargetType.AllEnemies || playedCard.targetType == CombatCard.TargetType.AllFriendlies) PutCardToCenter(playedCardObject); if (playedCard.targetType != CombatCard.TargetType.None && playedCard.targetType != CombatCard.TargetType.AllEnemies && playedCard.targetType != CombatCard.TargetType.AllFriendlies) { CharacterGraphic targetGraphic = null; targetGraphic = playedCard.targetChars[0]; PutCardToCharacter(playedCardObject, targetGraphic); } //Actual effects playedCard.PlayCard(); playedCard.userCharGraphic.RemovePlayedCombatCardFromHand(playedCard); yield return new WaitForSeconds(cardPlayAnimationTime); GameObject.Destroy(playedCardObject.GetTransform().gameObject); if (userGraphic.GetHealth() > 0) userGraphic.TurnFinished(); characterManager.CleanupCharactersWhoDied(); if (turnStatus == TurnStatus.Player) uiToggler.ReenablePlayerActions(); TransferTurn(); yield break; }
public void StartCombatCardPlay(ICombatCard cardObject) { CombatCard playedCard = cardObject.GetAssignedCard(); if (EligibleCombatCardType(playedCard)) { uiToggler.DisableTurnoverButton(); combatCardTargeter.CombatCardPlayStarted(cardObject); } }
IEnumerator SelectCardUserByPlayer(ICombatCard playedCardGraphic) { CombatCard playedCard = playedCardGraphic.GetAssignedCard(); CharacterGraphic cardUserChar = null; characterManager.SetMercPortraitsEnabled(false); string centerMessageText = "Select character"; uiToggler.DisablePlayerActionsDuringCardPlay(); modeTextDisplayer.DisplayCenterMessage(centerMessageText); bool characterFound = false; while (true) { if (Input.GetMouseButton(1)) { uiToggler.EnableTurnoverButton(); uiToggler.ReenablePlayerActions(); break; } if (Input.GetMouseButton(0)) { if (characterManager.RaycastForCharacter(true, out cardUserChar)) { if (cardUserChar.CharacterMeetsCardRequirements(playedCard)) { characterFound = true; break; } } } yield return new WaitForFixedUpdate(); } if (characterFound) { while (Input.GetMouseButton(0)) yield return new WaitForFixedUpdate(); playedCard.SetUserChar(cardUserChar); PlayerCardTargetAssignment(playedCardGraphic, cardUserChar); } else { characterManager.SetMercPortraitsEnabled(true); modeTextDisplayer.HideCenterMessage(); } }
IEnumerator SelectCardTargetCharacterByPlayer(ICombatCard playedCardObject) { CombatCard playedCard = playedCardObject.GetAssignedCard(); CharacterGraphic targetChar = null; bool selectFriendly = false; bool selectOtherFriendly = false; string centerMessageText = "Select enemy"; if (playedCard.targetType == CombatCard.TargetType.SelectEnemy) { selectFriendly = false; centerMessageText = "Select enemy"; } if (playedCard.targetType == CombatCard.TargetType.SelectFriendly) { selectFriendly = true; characterManager.SetMercPortraitsEnabled(false); centerMessageText = "Select friendly"; } if (playedCard.targetType == CombatCard.TargetType.SelectFriendlyOther) { selectFriendly = true; selectOtherFriendly = true; characterManager.SetMercPortraitsEnabled(false); centerMessageText = "Select friendly"; } uiToggler.DisablePlayerActionsDuringCardPlay(); modeTextDisplayer.DisplayCenterMessage(centerMessageText); bool targetFound = false; while (true) { if (Input.GetMouseButton(1)) { uiToggler.EnableTurnoverButton(); uiToggler.ReenablePlayerActions(); break; } if (Input.GetMouseButton(0)) { if (selectOtherFriendly) { if (characterManager.RaycastForOtherFriendlyCharacter(selectedCharacter, out targetChar)) { targetFound = true; break; } } else if (characterManager.RaycastForCharacter(selectFriendly, out targetChar)) { targetFound = true; break; } } yield return new WaitForFixedUpdate(); } if (targetFound) { while (Input.GetMouseButton(0)) yield return new WaitForFixedUpdate(); playedCard.targetChars.Add(targetChar); combatManager.CombatCardPlayStarted(playedCardObject); } if (selectFriendly) characterManager.SetMercPortraitsEnabled(true); modeTextDisplayer.HideCenterMessage(); }
void PlayerCardTargetAssignment(ICombatCard cardObject,CharacterGraphic selectedCharacter) { CombatCard playedCard = cardObject.GetAssignedCard(); this.selectedCharacter = selectedCharacter; if (playedCard.targetType == CombatCard.TargetType.SelectFriendly | playedCard.targetType == CombatCard.TargetType.SelectFriendlyOther) { ManuallyAssignCardTarget(cardObject); return; } if (playedCard.targetType == CombatCard.TargetType.SelectEnemy) { if (playedCard.GetType().BaseType == typeof(MeleeCard) && meleeCardTargetOverrideEnemy != null) { AutoAssignCardTargetAndPlay(cardObject, selectedCharacter); return; } if (playedCard.GetType().BaseType == typeof(RangedCard) && rangedCardTargetOverrideEnemy != null) { AutoAssignCardTargetAndPlay(cardObject, selectedCharacter); return; } ManuallyAssignCardTarget(cardObject); return; } if (playedCard.targetType != CombatCard.TargetType.SelectFriendly && playedCard.targetType != CombatCard.TargetType.SelectFriendlyOther && playedCard.targetType != CombatCard.TargetType.SelectEnemy) AutoAssignCardTargetAndPlay(cardObject, selectedCharacter); }
void AutoAssignCardTargetAndPlay(ICombatCard cardObject, CharacterGraphic selectedCharacter) { characterManager.SetMercPortraitsEnabled(true); modeTextDisplayer.HideCenterMessage(); CombatCard playedCard = cardObject.GetAssignedCard(); AssignCardTargets(playedCard, selectedCharacter); combatManager.CombatCardPlayStarted(cardObject); }