public override void Load(DataReader reader, bool singleFrameLoad = false)
    {
        base.Load(reader);

        SetColor(reader.Version > 0 ? reader.ReadColor() : Color.white);

        itemData = SavingVariableSaveLoad.LoadVariables(reader);
    }
    public override void LoadNoVersion(DataReader reader)
    {
        base.LoadNoVersion(reader);

        SetColor(reader.ReadColor());

        itemData = SavingVariableSaveLoad.LoadVariables(reader);
    }
    public void RemoveItem(SavingVariable itemData)
    {
        items.Remove(itemData);
        Debug.Log(string.Format("Item {0} removed from inventory!", itemData.variableName));

        if (onInventoryUpdated != null)
        {
            onInventoryUpdated();
        }
    }
    public void AddItem(SavingVariable itemData)
    {
        if (!IsFull && itemData != null)
        {
            items.Add(itemData);
            Debug.Log(string.Format("Item {0} added to inventory!", itemData.variableName));

            if (onInventoryUpdated != null)
            {
                onInventoryUpdated();
            }
        }
    }
예제 #5
0
    /// <summary>
    /// Sends an RPC call to add item to the player's inventory
    /// </summary>
    /// <param name="item"></param>
    public void AddItemToInventory(SavingVariable item)
    {
        if (networkObject.IsServer)
        {
            using (var m = new MemoryStream())
            {
                using (var writer = new BinaryWriter(m))
                {
                    SavingVariableSaveLoad.SaveVariables(new DataWriter(writer), item);

                    MainThreadManager.Run(() => networkObject.SendRpc(RPC_ADD_ITEM_TO_INVENTORY, Receivers.All, m.ToArray()));
                }
            }
        }
    }
    public static void SaveVariables(DataWriter writer, SavingVariable savingVariable)
    {
        writer.Write(savingVariable.variableName);
        writer.Write(savingVariable.intVariable);
        writer.Write(savingVariable.floatVariable);
        writer.Write(savingVariable.boolVariable);
        writer.Write(savingVariable.randomPosition);

        var count = savingVariable.intListVariable.Count;

        writer.Write(count);
        for (int i = 0; i < count; ++i)
        {
            writer.Write(savingVariable.intListVariable[i]);
        }
    }
    public static SavingVariable LoadVariables(DataReader reader)
    {
        var variableName   = reader.ReadString();
        var intVariable    = reader.ReadInt();
        var floatVariable  = reader.ReadFloat();
        var boolVariable   = reader.ReadBool();
        var randomPosition = reader.ReadVector3();
        var count          = reader.ReadInt();

        SavingVariable savingVariable = new SavingVariable(variableName, intVariable, floatVariable, boolVariable, randomPosition, count);

        savingVariable.intListVariable.Clear();
        for (int i = 0; i < count; ++i)
        {
            savingVariable.intListVariable.Add(reader.ReadInt());
        }

        return(savingVariable);
    }
예제 #8
0
    public override void AddItemToInventory(RpcArgs args)
    {
        if (!networkObject.IsOwner)
        {
            return;
        }

        var data = args.GetNext <byte[]>();

        SavingVariable itemData = null;

        using (var m = new MemoryStream(data))
        {
            using (var reader = new BinaryReader(m))
            {
                itemData = SavingVariableSaveLoad.LoadVariables(new DataReader(reader, 0));
            }
        }

        BMSLogger.Instance.Log(string.Format("{0} added to inventory via RPC call", itemData.variableName));
        PlayerState.Instance.AddItemToInventory(itemData);
    }
 public void AddItemToInventory(SavingVariable itemdata)
 {
     Inventory.AddItem(itemdata);
 }