public virtual void ClearDecks() { if (!AbilityDiscard.IsEmpty) { AbilityDiscard.Empty(); RaiseDiscard(AbilityDiscard); } if (!AbilityDeck.IsEmpty) { AbilityDeck.Empty(); RaiseMain(AbilityDeck); } if (!Hand.IsEmpty) { Hand.Empty(); RaiseHand(Hand); } if (!BoostDeck.IsEmpty) { BoostDeck.Empty(); RaiseBoost(BoostDeck); } }
// TODO I don't think it's best that this goes here, but I don't know a better way to organize it yet // TODO these if checks are kinda disgusting IEnumerator AbilityCardSelection(AbilityCard card, int index) { SelectedAbilityCard?.Invoke(card); if (_selectedAudio) { AudioHelper.PlayClip2D(_selectedAudio, 0.5f); } yield return(new WaitForEndOfFrame()); while (true) { if (Input.GetMouseButtonDown(0)) { RaycastHit hit = GetPointerRaycast(); BoardSpace space = hit.collider?.GetComponent <BoardSpace>(); if (space != null) // && hit.collider.gameObject.layer == LayerMask.NameToLayer("PlayerSpace")) { if (!space.UseCard(card)) { EndedSelection?.Invoke(); _abilityRoutine = null; yield break; } Actions -= card.Cost; Hand.Remove(index); AbilityDiscard.Add(card); RaiseActions(Actions); RaiseDiscard(AbilityDiscard); RaiseHand(Hand); EndedSelection?.Invoke(); _abilityRoutine = null; yield break; } else { if (_clickFailAudio) { AudioHelper.PlayClip2D(_clickFailAudio, 0.5f); } } } else if (Input.GetMouseButtonDown(1)) { EndedSelection?.Invoke(); if (_droppedAudio) { AudioHelper.PlayClip2D(_droppedAudio, 0.5f); } _abilityRoutine = null; yield break; } yield return(null); } }
public virtual void PlayAbilityCard(int index) { AbilityCard targetCard = Hand.GetCard(index); if (targetCard != null && Actions > 0 && Actions >= targetCard.Cost) { targetCard.Play(); Actions -= targetCard.Cost; Hand.Remove(index); AbilityDiscard.Add(targetCard); RaiseActions(Actions); RaiseDiscard(AbilityDiscard); RaiseHand(Hand); } }
public virtual void ReshuffleDiscard() { // add event for reshuffling discard feedback? if (AbilityDiscard.Count > 0) { int _discardCount = AbilityDiscard.Count; for (int i = 0; i < _discardCount; i++) { // TODO might do something more here with the Add(List<T> function) AbilityDeck.Add(AbilityDiscard.Draw()); } RaiseMain(AbilityDeck); RaiseDiscard(AbilityDiscard); } // shuffle ability deck only if it contains more than 1 item if (AbilityDeck.Count > 1) { AbilityDeck.Shuffle(); } }