Exemple #1
0
    public Holdable GetHoldable()
    {
        Holdable holdable = new Holdable();

        holdable.Initialize(this);
        return(holdable);
    }
    public static void JsonObject(Packet packet)
    {
        int id = packet.ReadInt();

        if (!GameManager.players.ContainsKey(id))
        {
            return;
        }

        string json = packet.ReadString();
        JsonSerializerSettings settings = new JsonSerializerSettings {
            TypeNameHandling = TypeNameHandling.All
        };
        NetEntity jsonObj = JsonConvert.DeserializeObject <NetEntity>(json, settings);

        if (jsonObj is NetAnimator)
        {
            GameManager.players[id].Animator.Set(jsonObj as NetAnimator);
            return;
        }
        if (jsonObj is BuildingData)
        {
            GameManager.instance.SpawnStructure(jsonObj as BuildingData);
            return;
        }
        if (jsonObj is NetItem)
        {
            NetItem netItem = jsonObj as NetItem;
            if (netItem is Netwearable)
            {
                Netwearable netWear = netItem as Netwearable;
                Wearable    wear    = new Wearable();
                wear.Initialize(netWear);
                GameManager.instance.ChangeInventory(id, wear);
            }
            if (netItem is NetHoldable)
            {
                NetHoldable netHold = netItem as NetHoldable;
                Holdable    hold    = new Holdable();
                hold.Initialize(netHold);
                GameManager.instance.ChangeInventory(id, hold);
            }
            return;
        }
        if (jsonObj is NetLoot)
        {
            NetLoot netLoot = jsonObj as NetLoot;
            GameManager.instance.CheckLoot(netLoot);
        }
        if (jsonObj is NetInventory)
        {
            Debug.Log("update inventory");
        }
    }
    public void SaveInventory(Dictionary <string, ItemSlot> slots) // save inherited data for wearable/holdable data as well
    {
        NetInventory      playerSaveData = new NetInventory();
        List <Wearable>   wearables      = new List <Wearable>();
        List <Holdable>   holdables      = new List <Holdable>();
        List <Consumable> consumables    = new List <Consumable>();
        List <Misc>       miscs          = new List <Misc>();

        foreach (var itemSlot in slots)
        {
            if (itemSlot.Value.RuntimeItem.Item is Wearable)
            {
                Wearable wearable = ScriptableObject.CreateInstance(typeof(Wearable)) as Wearable;
                wearable.Initialize(itemSlot.Value.RuntimeItem.Item, itemSlot.Key);
                wearables.Add(wearable);
            }
            if (itemSlot.Value.RuntimeItem.Item is Holdable)
            {
                Holdable holdable = ScriptableObject.CreateInstance(typeof(Holdable)) as Holdable;
                holdable.Initialize(itemSlot.Value.RuntimeItem.Item, itemSlot.Key);
                holdables.Add(holdable);
            }
            if (itemSlot.Value.RuntimeItem.Item is Consumable)
            {
                Consumable consumable = ScriptableObject.CreateInstance(typeof(Consumable)) as Consumable;
                consumable.Initialize(itemSlot.Value.RuntimeItem.Item, itemSlot.Key);
                consumables.Add(consumable);
            }
            if (itemSlot.Value.RuntimeItem.Item is Misc)
            {
                Misc misc = ScriptableObject.CreateInstance(typeof(Misc)) as Misc;
                misc.Initialize(itemSlot.Value.RuntimeItem.Item, itemSlot.Key);
                miscs.Add(misc);
            }
        }

        playerSaveData.Wearables  = wearables.ToArray();
        playerSaveData.Holdables  = holdables.ToArray();
        playerSaveData.Consumable = consumables.ToArray();
        playerSaveData.Misc       = miscs.ToArray();

        JsonSerializerSettings settings = new JsonSerializerSettings {
            TypeNameHandling = TypeNameHandling.All, ReferenceLoopHandling = ReferenceLoopHandling.Ignore
        };
        string json = JsonConvert.SerializeObject(playerSaveData, settings);

        File.WriteAllText(Application.persistentDataPath + "/GAPData.json", json);
        Debug.Log($"Saved inventory to: {Application.persistentDataPath}/GAPData.json");
    }
Exemple #4
0
    public List <Item> GetItems()
    {
        List <Item> items = new List <Item>();

        foreach (var item in Items)
        {
            if (item is Netwearable)
            {
                Netwearable netWear  = item as Netwearable;
                Wearable    wearable = new Wearable();
                wearable.Initialize(netWear);
                items.Add(wearable);
            }
            if (item is NetHoldable)
            {
                NetHoldable netHold  = item as NetHoldable;
                Holdable    holdable = new Holdable();
                holdable.Initialize(netHold);
                items.Add(holdable);
            }
            if (item is NetConsumable)
            {
                NetConsumable netCons    = item as NetConsumable;
                Consumable    consumable = new Consumable();
                consumable.Initialize(netCons);
                items.Add(consumable);
            }
            if (item is NetMisc)
            {
                NetMisc netMisc = item as NetMisc;
                Misc    misc    = new Misc();
                misc.Initialize(netMisc);
                items.Add(misc);
            }
        }

        return(items);
    }