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;
 }
Beispiel #4
0
    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)";
        }
    }
Beispiel #6
0
    public bool ModifyCost(AdjustCostObject adjustCostObject)
    {
        CostAdjustments.Add(adjustCostObject);

        return(RecalculateCost());
    }