Ejemplo n.º 1
0
    // 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();
    }
Ejemplo n.º 2
0
    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("응 오류.");
     }
 }
Ejemplo n.º 4
0
    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();
    }
Ejemplo n.º 5
0
    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();
    }