// Item Creation Functions // *********************** #region Item Database Saving and Loading public void SaveItemDatabase(string aPath, Item aItem) { ItemDatabase itemDatabase = new ItemDatabase(); // Loads the current ItemDatabase in, or creates a new one if (File.Exists(aPath)) { itemDatabase = LoadItemDatabase(aPath); itemDatabase.Add(aItem.Name, aItem); } else { itemDatabase.Add(aItem.Name, aItem); } XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase)); TextWriter writer = new StreamWriter(aPath); // Saves the Item Database serializer.Serialize(writer, itemDatabase); writer.Close(); }
private void DisplayAddMainArea() { newItemName = EditorGUILayout.TextField(new GUIContent("Name: "), newItemName); EditorGUILayout.Space(); if (GUILayout.Button("Done", GUILayout.Width(100))) { itemDatabase.Add(new Item(newItemName)); itemDatabase.SortAlphabeticallyAtoZ(); newItemName = string.Empty; EditorUtility.SetDirty(itemDatabase); state = State.BLANK; } }
void AddItemList(string itemName) { Debug.Log("addItemList(string itemName) : " + itemName); if (itemName == "helmet") { idb.Add("helmet", 1, dropItemName, idb.itemCount, ItemType.Equipment, itemObj); } else if (itemName == "firstaid") { idb.Add("firstaid", 1, dropItemName, idb.itemCount, ItemType.Consumption, itemObj); } else if (itemName == "canteen") { idb.Add("canteen", 1, dropItemName, idb.itemCount, ItemType.Consumption, itemObj); } else if (itemName == "blanket") { idb.Add("blanket", 1, dropItemName, idb.itemCount, ItemType.Equipment, itemObj); } else if (itemName == "shovel") { idb.Add("shovel", 1, dropItemName, idb.itemCount, ItemType.Equipment, itemObj); } else if (itemName == "grenade") { idb.Add("grenade", 1, dropItemName, idb.itemCount, ItemType.Equipment, itemObj); } else if (itemName == "bulletSet") { idb.Add("bulletSet", 1, dropItemName, idb.itemCount, ItemType.Consumption, itemObj); } else { Debug.Log("응 오류."); } }
void DisplayListArea() { EditorGUILayout.BeginVertical(GUILayout.Width(200)); EditorGUILayout.Space(); scrollPositionList = EditorGUILayout.BeginScrollView(scrollPositionList, "box", GUILayout.ExpandHeight(true)); for (var i = 0; i < itemDb.Count; i++) { EditorGUILayout.BeginHorizontal(); GUI.color = colorRed; if (GUILayout.Button("-", GUILayout.Width(20))) { if (state == State.ADD) { return; } // make sure item is not being used as requirement in another item before deleting var itemUsage = GetItemUsage(itemDb.Item(i).Id); if (itemUsage.Count > 0) { var list = "\n"; foreach (var t in itemUsage) { list += "\n" + t; } EditorUtility.DisplayDialog("Warning", "Cannot delete " + itemDb.Item(i).Id + ", it is being used in:" + list, "Ok"); return; } itemDb.RemoveAt(i); RemoveItemFromPopUpList(i); hasLooped = false; RefreshDatabase(); EditorUtility.SetDirty(itemDb); state = State.BLANK; return; } // ITEM IN LIST GUI.color = colorDefault; if (GUILayout.Button(itemDb.Item(i).Id, "box", GUILayout.ExpandWidth(true))) { hasLooped = false; itemPopUpIndex.Clear(); selectedItem = i; state = State.EDIT; } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField("Items: " + itemDb.Count, GUILayout.Width(75)); GUI.color = colorGreen; if (GUILayout.Button("New Item")) { if (state == State.ADD) { return; } hasLooped = false; itemDb.Add(new Item("", 0, 0, 0, null)); RefreshDatabase(); state = State.ADD; } EditorGUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); GUI.color = colorDefault; if (GUILayout.Button("Save JSON")) { SaveItemDatabase(); } GUI.color = colorDefault; if (GUILayout.Button("Load JSON")) { LoadGameData(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.EndVertical(); }
void DisplayAddMainArea() { _rightScrollPos = EditorGUILayout.BeginScrollView(_rightScrollPos, "box", GUILayout.ExpandHeight(true)); nextID = itemDatabase.GetNextID(); GUILayout.Label(new GUIContent("ID: " + nextID.ToString()), EditorStyles.boldLabel); itemType = (ItemType)EditorGUILayout.EnumPopup(new GUIContent("Item Type: "), itemType, GUILayout.Width(300)); itemSprite = (Sprite)EditorGUILayout.ObjectField(new GUIContent("Sprite: "), itemSprite, typeof(Sprite), true); itemName = EditorGUILayout.TextField(new GUIContent("Name: "), itemName); itemMaxStack = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Max Stack: "), itemMaxStack.ToString())); goldValue = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Gold Value: "), goldValue.ToString())); isDefaultItem = Convert.ToBoolean(EditorGUILayout.Toggle(new GUIContent("Default: "), isDefaultItem)); switch (itemType) { case ItemType.BASIC: isUseable = Convert.ToBoolean(EditorGUILayout.Toggle(new GUIContent("Usable: "), isUseable)); break; case ItemType.CONSUMABLE: isUseable = Convert.ToBoolean(EditorGUILayout.Toggle(new GUIContent("Usable: "), true)); hp = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Total HP Regenerate: "), hp.ToString())); mp = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Total MP Regenerate: "), mp.ToString())); sp = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Total SP Regenerate: "), sp.ToString())); dur = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Effect Duration: "), dur.ToString())); break; case ItemType.EQUIPMENT: equipType = (EquipSlot)EditorGUILayout.EnumPopup(new GUIContent("Equip Type: "), equipType, GUILayout.Width(300)); if (equipType == EquipSlot.Weapon) { weaponType = (WeaponType)EditorGUILayout.EnumPopup(new GUIContent("Weapon Type: "), weaponType, GUILayout.Width(300)); } isUseable = Convert.ToBoolean(EditorGUILayout.Toggle(new GUIContent("Usable: "), true)); str = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Strength: "), str.ToString())); dex = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Dexterity: "), dex.ToString())); inte = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Intelligence: "), inte.ToString())); will = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Will: "), will.ToString())); luck = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Luck: "), luck.ToString())); minDam = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Min.Damage: "), minDam.ToString())); maxDam = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Max.Damage: "), maxDam.ToString())); bal = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Balance: "), bal.ToString())); crit = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Critical: "), crit.ToString())); pDef = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("P.Defense: "), pDef.ToString())); pPro = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("P.Protection: "), pPro.ToString())); mDef = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("M.Defense: "), mDef.ToString())); mPro = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("M.Protection: "), mPro.ToString())); break; default: Debug.LogError("Unrecognized ItemType"); break; } itemTooltip = EditorGUILayout.TextField(new GUIContent("Tooltip: "), itemTooltip, GUILayout.Height(100)); EditorGUILayout.Space(); if (GUILayout.Button("Add", GUILayout.Width(100))) { itemDatabase.ClearNextID(); switch (itemType) { case ItemType.BASIC: { Item newItem = (Item)CreateInstance(typeof(Item)); newItem.ItemInit(nextID, itemName, itemSprite, isDefaultItem, isUseable, itemMaxStack, itemTooltip, goldValue); AssetDatabase.CreateAsset(newItem, DATABASE_PATH_ITEMS + String.Format("{0}.asset", nextID.ToString("000"))); itemDatabase.Add(newItem); EditorUtility.SetDirty(newItem); } break; case ItemType.CONSUMABLE: { Consumable newItem = (Consumable)CreateInstance(typeof(Consumable)); newItem.ItemInit(nextID, itemName, itemSprite, isDefaultItem, isUseable, itemMaxStack, itemTooltip, goldValue, hp, mp, sp, dur); AssetDatabase.CreateAsset(newItem, DATABASE_PATH_ITEMS + String.Format("{0}.asset", nextID.ToString("000"))); itemDatabase.Add(newItem); EditorUtility.SetDirty(newItem); } break; case ItemType.EQUIPMENT: { Equipment newItem = (Equipment)CreateInstance(typeof(Equipment)); newItem.ItemInit(nextID, itemName, itemSprite, isDefaultItem, equipType, weaponType, isUseable, itemMaxStack, itemTooltip, goldValue, str, dex, inte, will, luck, minDam, maxDam, bal, crit, pDef, pPro, mDef, mPro); AssetDatabase.CreateAsset(newItem, DATABASE_PATH_ITEMS + String.Format("{0}.asset", nextID.ToString("000"))); itemDatabase.Add(newItem); EditorUtility.SetDirty(newItem); } break; default: Debug.LogError("Unrecognized ItemType"); break; } itemName = String.Format("NewItem({0})", itemDatabase.GetNextID().ToString("000")); itemMaxStack = 0; str = 0; dex = 0; inte = 0; will = 0; luck = 0; minDam = 0; maxDam = 0; bal = 0; crit = 0; pDef = 0; pPro = 0; mDef = 0; mPro = 0; hp = 0; mp = 0; sp = 0; dur = 0; goldValue = 0; isDefaultItem = false; isUseable = false; itemTooltip = "Tooltip MISSING!"; itemSprite = null; state = State.BLANK; itemDatabase.SortAlphabeticallyAtoZ(); EditorUtility.SetDirty(itemDatabase); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } EditorGUILayout.EndScrollView(); }