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); }
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(); }
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; } }
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); } }
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); }
public static void ManaValueDictionaryField(ManaValueDictionary dictionary) { ManaValueDictionaryField("Mana value dictionary", dictionary); }