Esempio n. 1
0
    public void Drop(InventoryItemData item, string prefab)
    {
        if (Hands)
        {
            // Drop the current item.
            Player.Local.Holding.Item.RequestDataUpdate();
            if (Player.Local.Holding.Item.Data != null)
            {
                Player.Local.Holding.Item.Data.Update("Quick Slot", 0);
            }

            Player.Local.Holding.CmdDrop(true, false, Player.Local.gameObject, Player.Local.Holding.Item.Data.Serialize());
        }
        else
        {
            // Remove from slot and drop on ground.
            BodyGear g = Player.Local.GearMap[Slot];

            if (g.GetGearItem() == null)
            {
                Debug.LogError("Cannot drop, looks like the UI and world are desynced!");
                return;
            }

            g.GetGearItem().Item.RequestDataUpdate();
            ItemData data = g.GetGearItem().Item.Data;
            Player.Local.NetUtils.CmdDropGear(Slot, data.Serialize());
        }
    }
Esempio n. 2
0
    public void CmdDropGear(string slot, string data)
    {
        BodyGear g = GetPlayer().GearMap[slot];

        if (g.GetGearItem() != null)
        {
            Item old = g.GetGearItem().Item;
            g.SetItem(GetPlayer().gameObject, null, null, false);

            Item instance = Item.NewInstance(old.Prefab, GetPlayer().transform.position, ItemData.TryDeserialize(data));

            NetworkServer.Spawn(instance.gameObject);
        }
    }
Esempio n. 3
0
    public GearSaveData(BodyGear gearSlot)
    {
        Slot = gearSlot.Name;
        GearItem item = gearSlot.GetGearItem();

        if (item != null)
        {
            Prefab = item.Item.Prefab;
            item.Item.RequestDataUpdate();
            Data = item.Item.Data;
        }
        else
        {
            Prefab = null;
            Data   = null;
        }
    }
Esempio n. 4
0
    public static void SaveGear(string reality, Player player)
    {
        if (string.IsNullOrEmpty(reality))
        {
            Debug.LogError("Reality is null or em empty, cannot save gear items.");
            return;
        }
        if (player == null)
        {
            Debug.LogError("Null player, cannot perform IO operation for gear items.");
            return;
        }

        // Get all the slots, and then get save data from each slot.
        List <GearSaveData> saveData = new List <GearSaveData>();

        Debug.Log("Saving " + (player.GearMap.Count - 1) + " gear slots...");
        foreach (var slotName in player.GearMap.Keys)
        {
            if (slotName == "Hands")
            {
                continue;
            }
            BodyGear     bg = player.GearMap[slotName];
            GearSaveData sd = bg.GetSaveData();
            if (sd == null)
            {
                Debug.LogError("Gear slot '" + slotName + "' gave null save data!");
                continue;
            }

            saveData.Add(sd);
        }

        // Make array.
        GearSaveData[] array = saveData.ToArray();
        saveData.Clear();

        // Get file path.
        string path = OutputUtils.RealitySaveDirectory + reality + OutputUtils.GearItemSaveFile;

        // Save to file.
        OutputUtils.ObjectToFile(array, path);
    }