Beispiel #1
0
    public static void ManaValueDictionaryField(string label, ManaValueDictionary dictionary)
    {
        manaFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(manaFoldout, label);
        EditorGUILayout.EndFoldoutHeaderGroup();
        if (manaFoldout)
        {
            for (int i = 0; i < dictionary.Count; i++)
            {
                GUILayout.BeginHorizontal();
                dictionary.FirstValues[i]  = (ManaType)EditorGUILayout.ObjectField(dictionary.FirstValues[i], typeof(ManaType), false);
                dictionary.SecondValues[i] = EditorGUILayout.IntField(dictionary.SecondValues[i]);
                GUILayout.EndHorizontal();
            }

            GUILayout.BeginHorizontal();
            if (GUILayout.Button(addManaCostButton, GUILayout.Width(buttonWidth)))
            {
                dictionary.Add(null, 0);
            }
            if (GUILayout.Button(removeManaCostButton, GUILayout.Width(buttonWidth)))
            {
                dictionary.RemoveAt(dictionary.Count - 1);
            }
            GUILayout.EndHorizontal();
        }
    }
    private void ShowContributionEntry()
    {
        GUILayout.Space(10);
        EditorGUI.indentLevel = 0;

        GUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Contribution properties", EditorStyles.boldLabel);
        if (GUILayout.Button(removeComponentButton, GUILayout.Width(buttonWidth)))
        {
            //Clear properties
        }
        GUILayout.EndHorizontal();

        GUILayout.Space(5);
        EditorGUI.indentLevel = 1;

        EditorGUILayout.LabelField("Contribution", GUILayout.Width(labelWidth));

        GUILayout.Space(5);

        if (manaValues == null)
        {
            manaValues = new ManaValueDictionary();
        }

        CustomGUILayout.ManaValueDictionaryField("Mana cost", manaValues);
    }
    public static void ManaDictionaryField(string label, ManaValueDictionary dictionary)
    {
        if (dictionary == null)
        {
            dictionary = new ManaValueDictionary();
        }

        EditorGUILayout.LabelField(label);
        if (dictionary.Count > 0)
        {
            for (int i = 0; i < dictionary.Count; i++)
            {
                EditorGUI.indentLevel += 1;
                GUILayout.BeginHorizontal();
                dictionary.FirstValues[i]  = (ManaType)EditorGUILayout.ObjectField(dictionary.FirstValues[i], typeof(ManaType), false);
                dictionary.SecondValues[i] = EditorGUILayout.IntField(dictionary.SecondValues[i]);
                GUILayout.EndHorizontal();
            }
        }

        GUILayout.BeginHorizontal();
        type   = (ManaType)EditorGUILayout.ObjectField(type, typeof(ManaType), false);
        amount = EditorGUILayout.IntField(amount);
        GUILayout.EndHorizontal();

        ShowButtons(dictionary);
    }
 public void Add(ManaValueDictionary list)
 {
     foreach (ManaType type in list.FirstValues)
     {
         Add(type, list[type]);
     }
 }
    private void ConstructContribution()
    {
        if (contributionTypes == null || contributionAmounts == null)
        {
            Debug.LogError("Contribution error on" + CardName); return;
        }

        Contribution = new ManaValueDictionary(contributionTypes, contributionAmounts);
    }
Beispiel #6
0
 public void ModifyPlayerMana(ManaValueDictionary manaValues)
 {
     PlayerMana.Add(manaValues);
     SetDominantMana();
     if (OnValueChange != null)
     {
         OnValueChange.Invoke();
     }
 }
    private static void ShowButtons(ManaValueDictionary dictionary)
    {
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button(addButtonContent, EditorStyles.miniButton, GUILayout.Width(buttonWidth)))
        {
            dictionary.Add(type, amount);

            type   = null;
            amount = 0;
        }
        if (GUILayout.Button(deleteButtonContent, EditorStyles.miniButton, GUILayout.Width(buttonWidth)))
        {
            dictionary.RemoveAt(dictionary.Count - 1);
        }
    }
    private void ShowManaCost()
    {
        GUILayout.Space(10);
        EditorGUI.indentLevel = 0;

        EditorGUILayout.LabelField("Mana cost properties", EditorStyles.boldLabel);

        GUILayout.Space(5);

        if (manaValues == null)
        {
            manaValues = new ManaValueDictionary();
        }

        CustomGUILayout.ManaValueDictionaryField("Mana cost", manaValues);
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        serializedObject.FindProperty("cardName").stringValue = EditorGUILayout.TextField("Card name", serializedObject.FindProperty("cardName").stringValue);

        GUILayout.BeginHorizontal();
        GUILayout.Label("Card Image", GUILayout.Width(labelWidth));
        serializedObject.FindProperty("cardImage").objectReferenceValue = (Sprite)EditorGUILayout.ObjectField
                                                                              (serializedObject.FindProperty("cardImage").objectReferenceValue,
                                                                              typeof(Sprite),
                                                                              allowSceneObjects: false);
        GUILayout.EndHorizontal();

        GUILayout.Label("Card Types");
        GUILayout.BeginHorizontal();
        serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(0).stringValue = EditorGUILayout.TextField(serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(0).stringValue);
        serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(1).stringValue = EditorGUILayout.TextField(serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(1).stringValue);
        GUILayout.Label("-");
        serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(2).stringValue = EditorGUILayout.TextField(serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(2).stringValue);
        GUILayout.EndHorizontal();

        CardCostType costType = (CardCostType)serializedObject.FindProperty("costType").objectReferenceValue;

        if (costType != null)
        {
            if (costType is CardCost_Mana manaContainer)
            {
                ManaValueDictionary manaCost = manaContainer.values;

                CustomGUILayout.ManaValueDictionaryField("Mana cost", manaCost);
            }
        }

        if (serializedObject.FindProperty("isAttackerDefender").boolValue)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Atk/Def");
            serializedObject.FindProperty("atk").intValue = EditorGUILayout.IntField(serializedObject.FindProperty("atk").intValue);
            serializedObject.FindProperty("def").intValue = EditorGUILayout.IntField(serializedObject.FindProperty("def").intValue);
            GUILayout.EndHorizontal();
        }

        serializedObject.ApplyModifiedProperties();
    }
Beispiel #10
0
    private void AssignVariablesViaCast()
    {
        if (Card is CardData_Commander commander)
        {
            currentRank         = commander.Rank;
            currentContribution = commander.Contribution;
        }
        else if (Card is CardData_CostBased card)
        {
            currentCost = new ManaValueDictionary(card.manaCost);
        }

        if (Card is CardData_Unit unit)
        {
            currentAtk = unit.Atk;
            currentDef = unit.Def;
        }
    }
Beispiel #11
0
    private void BuyAndSell()
    {
        if (card is CardData_Commander)
        {
            player.ModifyPlayerMana(data.currentContribution);
        }
        else if (card is CardData_CostBased)
        {
            ManaValueDictionary list = new ManaValueDictionary();

            foreach (ManaType type in data.currentCost.FirstValues)
            {
                list.Add(type, -data.currentCost[type]);
            }

            player.ModifyPlayerMana(list);
        }
    }
Beispiel #12
0
    public bool CardIsAffordable(ManaValueDictionary manaValues)
    {
        bool affordable = false;

        foreach (ManaType type in manaValues.FirstValues)
        {
            if (manaValues[type] >= PlayerMana[type])
            {
                affordable = false;
            }
            else
            {
                affordable = true;
            }
        }

        return(affordable);
    }
 protected void ConstructManaCost()
 {
     manaCost = new ManaValueDictionary(costTypes, costAmounts);
 }
Beispiel #14
0
 public static void ManaValueDictionaryField(ManaValueDictionary dictionary)
 {
     ManaValueDictionaryField("Mana value dictionary", dictionary);
 }