public void ConfirmButton() { var adjustCostObject = new AdjustCostObject() { FromPassive = false }; //Gets the card resource from the dropdown if (resourceDropdown.captionText.text == DEFAULT_RESOURCE_STRING) { adjustCostObject.TargetResource = null; } else { adjustCostObject.TargetResource = (CardResources)Enum.Parse(typeof(CardResources), resourceDropdown.captionText.text); } if (int.TryParse(costInput.text, out int result)) { adjustCostObject.Value = result; } else { adjustCostObject.Value = -1; costInput.text = "-1"; } adjustCostObject.MinCost = null; if (int.TryParse(minCostInput.text, out int minCostResult)) { adjustCostObject.MinCost = minCostResult; } adjustCostObject.MustBeGreaterThan = null; if (int.TryParse(mustBeGreaterThanInput.text, out int mustBeGreaterThanResult)) { adjustCostObject.MustBeGreaterThan = mustBeGreaterThanResult; } adjustCostObject.AdjustmentType = (StatModifierTypes)Enum.Parse(typeof(StatModifierTypes), statTypeDropdown.captionText.text); if (adjustCostObject.AdjustmentType == StatModifierTypes.Set) { adjustCostObject.Value = -adjustCostObject.Value; } //Chooses the target for the cost modification if (targetDropdown.captionText.text == DEFAULT_TARGET_STRING) { StartEffect(); GameManager.instance.effectManager.SetModifyCostMode(adjustCostObject); } else { adjustCostObject.TargetCardType = (CardTypes)Enum.Parse(typeof(CardTypes), targetDropdown.captionText.text); GameManager.instance.effectManager.ModifyCostOfTargetCards(adjustCostObject); gameObject.SetActive(false); } }
public void ModifyCostOfTargetCards(AdjustCostObject adjustCostObject) { var player = GameManager.instance.GetPlayer(); foreach (var card in player.Hand.cardList.Where(x => x.Type == adjustCostObject.TargetCardType)) { card.ModifyCost(adjustCostObject); } foreach (var card in player.Deck.cardList.Where(x => x.Type == adjustCostObject.TargetCardType)) { card.ModifyCost(adjustCostObject); } GameManager.instance.uiManager.RefreshUI(); }
public void SetModifyCostMode(AdjustCostObject adjustCostObject) { ActiveEffect = ActiveEffectTypes.ModifyCost; SelectedAdjustCost = adjustCostObject; }
public bool GenerateCards(GenerateCardFilter filter, CardGenerationTypes generationType, bool isChoice, string createdBy, DeckPositions deckPosition = DeckPositions.Random) { var generatedCardDatas = GameManager.instance.libraryManager.GenerateGameplayCards(filter); if (generatedCardDatas.Count == 0) { return(false); } if (!isChoice && generationType == CardGenerationTypes.Deploy && generatedCardDatas.Count > 1) { return(false); } var generatedCards = new List <Card>(); foreach (var cardData in generatedCardDatas) { var generatedCard = GameManager.instance.libraryManager.CreateCard(cardData, this); if (generatedCard.Type == CardTypes.Unit && filter.Enchantment != null) { ((Unit)generatedCard).AddEnchantment(filter.Enchantment); } if (generatedCard.Type == CardTypes.Item && filter.DurabilityChange != null) { ((Item)generatedCard).EditDurability(filter.DurabilityChange.Value); } if (filter.CostModification != null) { var adjustCost = new AdjustCostObject() { Value = filter.CostModification.Value, TargetResource = filter.ResourceModification, AdjustmentType = StatModifierTypes.Modify, }; generatedCard.ModifyCost(adjustCost); } if (isChoice) { generatedCards.Add(generatedCard); } else { switch (generationType) { case CardGenerationTypes.Hand: AddToHand(generatedCard, createdBy); break; case CardGenerationTypes.Deck: Deck.ShuffleIntoDeck(generatedCard, createdBy, deckPosition); break; case CardGenerationTypes.Graveyard: AddToGraveyard(generatedCard, createdBy); break; case CardGenerationTypes.Deploy: CreateDeployUnits(cardData, filter.Enchantment, filter.UnitsToCreate, createdBy); break; case CardGenerationTypes.Equip: GameManager.instance.effectManager.SetItemEquip((Item)generatedCard); break; default: throw new Exception("Not a valid Generation Type"); } } } if (isChoice) { switch (generationType) { case CardGenerationTypes.Hand: GameManager.instance.effectManager.SetAddToHandChoiceMode(generatedCards, createdBy); break; case CardGenerationTypes.Deck: GameManager.instance.effectManager.SetAddToDeckChoiceMode(generatedCards, createdBy, deckPosition); break; case CardGenerationTypes.Graveyard: GameManager.instance.effectManager.SetAddToGraveyardChoiceMode(generatedCards, createdBy); break; case CardGenerationTypes.Deploy: GameManager.instance.effectManager.SetDeployChoiceMode(generatedCards, createdBy); break; case CardGenerationTypes.Equip: GameManager.instance.effectManager.SetItemChoiceMode(generatedCards, createdBy); break; default: throw new Exception("Not a valid Generation Type"); } } return(true); }
public void ConfirmButton() { UpgradeData sourceUpgrade = null; CardData sourceCard = null; int? playerId = null; switch (GameManager.instance.CurrentGamePhase) { case GameManager.GamePhases.Setup: sourceUpgrade = GameManager.instance.upgradeManager.GetUpgrade(nameInput.text); playerId = int.Parse(playerNumberDropdown.captionText.text) - 1; break; case GameManager.GamePhases.Gameplay: sourceCard = GameManager.instance.libraryManager.GetCard(nameInput.text); break; } if (sourceUpgrade != null || sourceCard != null) { var passive = new Passive { Name = nameInput.text, IsTemporary = isTemporaryToggle.isOn, SourceUpgrade = sourceUpgrade, SourceCard = sourceCard }; if (affectedCardTypeDropdown.captionText.text != DEFAULT_INPUT_STRING_ANY) { passive.AffectedCardTypes = (CardTypes)Enum.Parse(typeof(CardTypes), affectedCardTypeDropdown.captionText.text); } if (affectedTagDropdown.captionText.text != DEFAULT_INPUT_STRING_ANY) { passive.AffectedCardTag = (Tags)Enum.Parse(typeof(Tags), affectedTagDropdown.captionText.text); } if (affectedUnitTagDropdown.captionText.text != DEFAULT_INPUT_STRING_ANY) { passive.AffectedUnitTags = (UnitTags)Enum.Parse(typeof(UnitTags), affectedUnitTagDropdown.captionText.text); } if (costResourceDropdown.captionText.text != DEFAULT_INPUT_STRING_NONE) { passive.TargetResource = (CardResources)Enum.Parse(typeof(CardResources), costResourceDropdown.captionText.text); } if (int.TryParse(costValueInput.text, out int result)) { var costAdjustment = new AdjustCostObject() { AdjustmentType = StatModifierTypes.Modify, FromPassive = true }; costAdjustment.Value = result; if (int.TryParse(minCostInput.text, out int minCostResult)) { costAdjustment.MinCost = minCostResult; } if (int.TryParse(greaterThanInput.text, out int greaterThanResult)) { costAdjustment.MustBeGreaterThan = greaterThanResult; } passive.CostAdjustment = costAdjustment; } else { passive.CostAdjustment = null; } var enchantment = new UnitEnchantment() { Status = UnitEnchantment.EnchantmentStatus.Passive, Source = nameInput.text, }; GetStatModifier(enchantment, Unit.StatTypes.Attack, attackModTypeDropdown, attackValueInput); GetStatModifier(enchantment, Unit.StatTypes.MaxHealth, healthModTypeDropdown, healthValueInput); GetStatModifier(enchantment, Unit.StatTypes.Range, rangeModTypeDropdown, rangeValueInput); GetStatModifier(enchantment, Unit.StatTypes.Speed, speedModTypeDropdown, speedValueInput); if (enchantment.ValidEnchantment) { passive.Enchantment = enchantment; } if (specialPassiveValueDropdown.captionText.text != DEFAULT_INPUT_STRING_NONE) { passive.SpecialPassive = (SpecialPassiveEffects)Enum.Parse(typeof(SpecialPassiveEffects), specialPassiveValueDropdown.captionText.text); if (int.TryParse(specialPassiveValueInput.text, out int specialPassive)) { passive.SpecialPassiveProperty = specialPassive; } else { passive.SpecialPassiveProperty = 0; } } if (GameManager.instance.effectManager.AddPassive(passive, playerId)) { gameObject.SetActive(false); } else { titleText.text = $"{defaultTitleText} (Failed)"; } } else { titleText.text = $"{defaultTitleText} (Failed)"; } }
public bool ModifyCost(AdjustCostObject adjustCostObject) { CostAdjustments.Add(adjustCostObject); return(RecalculateCost()); }