コード例 #1
0
        public override void NetSend(BinaryWriter writer)
        {
            writer.Write(BitsByte.ComposeBitsBytesChain(false, _items.Select(i => !i.IsAir).ToArray())[0]);
            writer.Write(BitsByte.ComposeBitsBytesChain(false, _dyes.Select(i => !i.IsAir).ToArray())[0]);

            for (int i = 0; i < 8; i++)
            {
                var item = _items[i];

                if (!item.IsAir)
                {
                    ItemIO.Send(item, writer, true);
                }
            }

            for (int i = 0; i < 8; i++)
            {
                var dye = _dyes[i];

                if (!dye.IsAir)
                {
                    ItemIO.Send(dye, writer, true);
                }
            }
        }
コード例 #2
0
 public override void NetSend(BinaryWriter writer, bool lightSend)
 {
     foreach (Item item in stations)
     {
         ItemIO.Send(item, writer, true, false);
     }
 }
コード例 #3
0
 protected override void SendData(BinaryWriter writer, TEStorageUnit unit)
 {
     writer.Write(unit.items.Count);
     foreach (Item item in unit.items)
     {
         ItemIO.Send(item, writer, true, false);
     }
 }
 //Adds number of Items and each Item to the writer
 private void SendItems(ref BinaryWriter writer, Item[] itemArray, bool writeFavs = false)
 {
     writer.Write(itemArray.Length);
     foreach (var item in itemArray)
     {
         ItemIO.Send(item, writer, writeStack: true, writeFavourite: writeFavs);
     }
 }
コード例 #5
0
ファイル: NetHelper.cs プロジェクト: Michal-MK/MagicStorage
 public static void SendDepositStation(int ent, Item item)
 {
     if (Main.netMode == NetmodeID.MultiplayerClient)
     {
         ModPacket packet = PrepareStationOperation(ent, 0);
         ItemIO.Send(item, packet, true);
         packet.Send();
     }
 }
コード例 #6
0
 public override void NetSend(BinaryWriter writer, bool lightSend)
 {
     base.NetSend(writer, lightSend);
     writer.Write(items.Count);
     foreach (Item item in items)
     {
         ItemIO.Send(item, writer, true, false);
     }
 }
コード例 #7
0
        internal void SendSingleItemPacket(PacketMessageType message, Item item, int toWho, int fromWho)
        {
            ModPacket packet = mod.GetPacket();

            packet.Write((byte)message);
            packet.Write((byte)player.whoAmI);
            ItemIO.Send(item, packet);
            packet.Send(toWho, fromWho);
        }
コード例 #8
0
 public static void SendDeposit(int ent, Item item)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = PrepareStorageOperation(ent, StorageOp.Deposit);
         ItemIO.Send(item, packet, true);
         packet.Send();
     }
 }
コード例 #9
0
        public static void CMapDeviceMapItemChanged(int mapDeviceID, Item item)
        {
            ModPacket packet = Instance.GetPacket((byte)PacketType.MapDeviceMapItemChanged);

            packet.Write((byte)Main.myPlayer);
            packet.Write(mapDeviceID);
            ItemIO.Send(item, packet, true);
            packet.Send();
        }
コード例 #10
0
 public static void SendWithdraw(int ent, Item item, StorageOp type)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = PrepareStorageOperation(ent, type);
         ItemIO.Send(item, packet, true);
         packet.Send();
     }
 }
コード例 #11
0
ファイル: NetHelper.cs プロジェクト: zadum4ivii/MagicStorage
 public static void SendWithdraw(int ent, Item item, bool toInventory = false)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = PrepareStorageOperation(ent, (byte)(toInventory ? 3 : 1));
         ItemIO.Send(item, packet, true);
         packet.Send();
     }
 }
コード例 #12
0
ファイル: NetHelper.cs プロジェクト: zadum4ivii/MagicStorage
 public static void SendStationSlotClick(int ent, Item item, int slot)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = PrepareStationOperation(ent, 2);
         ItemIO.Send(item, packet, true);
         packet.Write((byte)slot);
         packet.Send();
     }
 }
コード例 #13
0
        public override void HandlePacket(BinaryReader reader, int whoAmI)
        {
            PacketMessageType message = (PacketMessageType)reader.ReadByte();
            byte          player      = reader.ReadByte();
            MagicalPlayer modPlayer   = Main.player[player].GetModPlayer <MagicalPlayer>();

            switch (message)
            {
            case PacketMessageType.All:
                modPlayer.EquipShoeSlot.Item  = ItemIO.Receive(reader);
                modPlayer.VanityShoeSlot.Item = ItemIO.Receive(reader);
                modPlayer.ShoeDyeSlot.Item    = ItemIO.Receive(reader);
                if (Main.netMode == NetmodeID.Server)
                {
                    ModPacket packet = GetPacket();
                    packet.Write((byte)PacketMessageType.All);
                    packet.Write(player);
                    ItemIO.Send(modPlayer.EquipShoeSlot.Item, packet);
                    ItemIO.Send(modPlayer.VanityShoeSlot.Item, packet);
                    ItemIO.Send(modPlayer.ShoeDyeSlot.Item, packet);
                    packet.Send(-1, whoAmI);
                }
                break;

            case PacketMessageType.EquipShoeSlot:
                modPlayer.EquipShoeSlot.Item = ItemIO.Receive(reader);
                if (Main.netMode == NetmodeID.Server)
                {
                    modPlayer.SendSingleItemPacket(PacketMessageType.EquipShoeSlot, modPlayer.EquipShoeSlot.Item, -1, whoAmI);
                }
                break;

            case PacketMessageType.VanityShoeSlot:
                modPlayer.VanityShoeSlot.Item = ItemIO.Receive(reader);
                if (Main.netMode == NetmodeID.Server)
                {
                    modPlayer.SendSingleItemPacket(PacketMessageType.VanityShoeSlot, modPlayer.VanityShoeSlot.Item, -1, whoAmI);
                }
                break;

            case PacketMessageType.ShoeDyeSlot:
                modPlayer.ShoeDyeSlot.Item = ItemIO.Receive(reader);
                if (Main.netMode == NetmodeID.Server)
                {
                    modPlayer.SendSingleItemPacket(PacketMessageType.ShoeDyeSlot, modPlayer.ShoeDyeSlot.Item, -1, whoAmI);
                }
                break;

            default:
                Logger.InfoFormat("Magical Things: Unknown message type: ", DisplayName);
                //ErrorLogger.Log("Magical Things: Unknown message type: " + message);
                break;
            }
        }
コード例 #14
0
        public override void SyncPlayer(int toWho, int fromWho, bool newPlayer)
        {
            ModPacket packet = mod.GetPacket();

            packet.Write((byte)PacketMessageType.All);
            packet.Write((byte)player.whoAmI);
            ItemIO.Send(EquipSlot.Item, packet);
            ItemIO.Send(VanitySlot.Item, packet);
            ItemIO.Send(DyeSlot.Item, packet);
            packet.Send(toWho, fromWho);
        }
コード例 #15
0
        public override void HandlePacket(BinaryReader reader, int whoAmI)
        {
            PacketMessageType message = (PacketMessageType)reader.ReadByte();
            byte           player     = reader.ReadByte();
            WingSlotPlayer modPlayer  = Main.player[player].GetModPlayer <WingSlotPlayer>();

            switch (message)
            {
            case PacketMessageType.All:
                modPlayer.EquipSlot.Item  = ItemIO.Receive(reader);
                modPlayer.VanitySlot.Item = ItemIO.Receive(reader);
                modPlayer.DyeSlot.Item    = ItemIO.Receive(reader);
                if (Main.netMode == 2)
                {
                    ModPacket packet = GetPacket();
                    packet.Write((byte)PacketMessageType.All);
                    packet.Write(player);
                    ItemIO.Send(modPlayer.EquipSlot.Item, packet);
                    ItemIO.Send(modPlayer.VanitySlot.Item, packet);
                    ItemIO.Send(modPlayer.DyeSlot.Item, packet);
                    packet.Send(-1, whoAmI);
                }
                break;

            case PacketMessageType.EquipSlot:
                modPlayer.EquipSlot.Item = ItemIO.Receive(reader);
                if (Main.netMode == 2)
                {
                    modPlayer.SendSingleItemPacket(PacketMessageType.EquipSlot, modPlayer.EquipSlot.Item, -1, whoAmI);
                }
                break;

            case PacketMessageType.VanitySlot:
                modPlayer.VanitySlot.Item = ItemIO.Receive(reader);
                if (Main.netMode == 2)
                {
                    modPlayer.SendSingleItemPacket(PacketMessageType.VanitySlot, modPlayer.VanitySlot.Item, -1, whoAmI);
                }
                break;

            case PacketMessageType.DyeSlot:
                modPlayer.DyeSlot.Item = ItemIO.Receive(reader);
                if (Main.netMode == 2)
                {
                    modPlayer.SendSingleItemPacket(PacketMessageType.DyeSlot, modPlayer.DyeSlot.Item, -1, whoAmI);
                }
                break;

            default:
                Logger.InfoFormat("[Wing Slot] Unknown message type: {0}", message);
                break;
            }
        }
コード例 #16
0
ファイル: NetHelper.cs プロジェクト: zadum4ivii/MagicStorage
        public static void ReceiveStationOperation(BinaryReader reader, int sender)
        {
            if (Main.netMode != 2)
            {
                return;
            }
            int ent = reader.ReadInt32();

            if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TECraftingAccess))
            {
                return;
            }
            TECraftingAccess access = (TECraftingAccess)TileEntity.ByID[ent];

            Item[] stations = access.stations;
            byte   op       = reader.ReadByte();

            if (op == 0)
            {
                Item item = ItemIO.Receive(reader, true);
                access.TryDepositStation(item);
                if (item.stack > 0)
                {
                    ModPacket packet = PrepareStationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send();
                }
            }
            else if (op == 1)
            {
                int  slot = reader.ReadByte();
                Item item = access.TryWithdrawStation(slot);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareStationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send();
                }
            }
            else if (op == 2)
            {
                Item item = ItemIO.Receive(reader, true);
                int  slot = reader.ReadByte();
                item = access.DoStationSwap(item, slot);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareStationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send();
                }
            }
        }
コード例 #17
0
 public static void SendDepositAll(int ent, List <Item> items)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = PrepareStorageOperation(ent, StorageOp.DepositList);
         packet.Write((byte)items.Count);
         foreach (Item item in items)
         {
             ItemIO.Send(item, packet, true);
         }
         packet.Send();
     }
 }
コード例 #18
0
 public override void NetSend(BinaryWriter writer, bool lightSend)
 {
     writer.Write(RitualOfTheStone);
     writer.Write(RoSType);
     writer.Write(RitualOfTheMiner);
     writer.Write(RoMinType);
     writer.Write(RitualOfMidas);
     writer.Write(RoMidType);
     writer.Write(RitualOfSouls);
     writer.Write(RoSoType);
     writer.Write(RoSoDelay);
     writer.Write(RitualOwner);
     ItemIO.Send(BloodCrystal, writer, true);
 }
コード例 #19
0
        public override void NetSend(BinaryWriter writer, bool lightSend)
        {
            //PathOfModifiers.Instance.Logger.Info($"NetSend: {Main.netMode}");
            writer.Write(timeLeft);
            bool isBoundsNull = !bounds.HasValue;

            writer.Write(isBoundsNull);
            if (!isBoundsNull)
            {
                writer.Write((Rectangle)bounds);
            }

            ItemIO.Send(mapItem, writer, true);
        }
コード例 #20
0
ファイル: NetHelper.cs プロジェクト: Lanboost/MagicStorage
 public static void SendCraftRequest(int heart, List <Item> toWithdraw, Item result)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = MagicStorage.Instance.GetPacket();
         packet.Write((byte)MessageType.CraftRequest);
         packet.Write(heart);
         packet.Write(toWithdraw.Count);
         foreach (Item item in toWithdraw)
         {
             ItemIO.Send(item, packet, true);
         }
         ItemIO.Send(result, packet, true);
         packet.Send();
     }
 }
コード例 #21
0
ファイル: NetHelper.cs プロジェクト: Michal-MK/MagicStorage
 public static void SendCraftRequest(int heart, int craftingAccess, List <Item> toWithdraw, Item result)
 {
     if (Main.netMode == NetmodeID.MultiplayerClient)
     {
         ModPacket packet = MagicStorageTwo.Instance.GetPacket();
         packet.Write((byte)MessageType.CraftRequest);
         packet.Write(heart);
         packet.Write(craftingAccess);
         packet.Write(toWithdraw.Count);
         foreach (Item item in toWithdraw)
         {
             ItemIO.Send(item, packet, true);
         }
         ItemIO.Send(result, packet, true);
         packet.Send();
     }
 }
コード例 #22
0
        private void HandleSlotChange(int owner, SlotKind kind, int slot)
        {
            if (Main.netMode == 2)
            {
                ModPacket packet = NetRouter.GetPacketTo(this, mod);
                packet.Write(owner);
                packet.Write((byte)kind);
                packet.Write(slot);

                Item[] targetInventory = GetInventoryFromKind(owner, kind);
                ItemIO.Send(targetInventory[slot], packet, true, true);

                packet.Send();
            }
            else if (Main.netMode == 0)
            {
                Recipe.FindRecipes();
            }
        }
コード例 #23
0
        public static void ReceiveCraftRequest(BinaryReader reader, int sender)
        {
            int ent   = reader.ReadInt32();
            int count = reader.ReadInt32();

            if (Main.netMode != 2)
            {
                //Still need to read the data for exceptions to not be thrown
                for (int i = 0; i < count; i++)
                {
                    ItemIO.Receive(reader, true);
                }

                ItemIO.Receive(reader, true);
                return;
            }
            if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TEStorageHeart))
            {
                return;
            }
            TEStorageHeart heart      = (TEStorageHeart)TileEntity.ByID[ent];
            List <Item>    toWithdraw = new List <Item>();

            for (int k = 0; k < count; k++)
            {
                toWithdraw.Add(ItemIO.Receive(reader, true));
            }
            Item        result = ItemIO.Receive(reader, true);
            List <Item> items  = CraftingGUI.DoCraft(heart, toWithdraw, result);

            if (items.Count > 0)
            {
                ModPacket packet = MagicStorage.Instance.GetPacket();
                packet.Write((byte)MessageType.CraftResult);
                packet.Write(items.Count);
                foreach (Item item in items)
                {
                    ItemIO.Send(item, packet, true);
                }
                packet.Send(sender);
            }
            SendRefreshNetworkItems(ent);
        }
コード例 #24
0
ファイル: NetHelper.cs プロジェクト: Michal-MK/MagicStorage
        public static void ReceiveCraftRequest(BinaryReader reader, int sender)
        {
            if (Main.netMode != NetmodeID.Server)
            {
                return;
            }
            int heartID = reader.ReadInt32();

            if (!TileEntity.ByID.ContainsKey(heartID) || !(TileEntity.ByID[heartID] is TEStorageHeart))
            {
                return;
            }
            TEStorageHeart heart = (TEStorageHeart)TileEntity.ByID[heartID];

            TECraftingAccess access = (TECraftingAccess)TileEntity.ByID[reader.ReadInt32()];
            int         count       = reader.ReadInt32();
            List <Item> toWithdraw  = new List <Item>();

            for (int k = 0; k < count; k++)
            {
                toWithdraw.Add(ItemIO.Receive(reader, true));
            }
            Item        result = ItemIO.Receive(reader, true);
            List <Item> items  = access.DoCraft(heart, toWithdraw, result);

            if (items.Count > 0)
            {
                ModPacket packet = MagicStorageTwo.Instance.GetPacket();
                packet.Write((byte)MessageType.CraftResult);
                packet.Write(items.Count);
                foreach (Item item in items)
                {
                    ItemIO.Send(item, packet, true);
                }
                packet.Send(sender);
            }
            SendRefreshNetworkItems(heartID);
        }
コード例 #25
0
 protected override void SendData(BinaryWriter writer, TEStorageUnit unit)
 {
     ItemIO.Send(data, writer, true, false);
 }
コード例 #26
0
 public override void NetSend(BinaryWriter writer, bool lightSend)
 {
     ItemIO.Send(item, writer);
 }
コード例 #27
0
ファイル: TEItemFrame.TML.cs プロジェクト: vSLG/tModLoader
 public override void NetSend(BinaryWriter writer) => ItemIO.Send(item, writer, true);
コード例 #28
0
        public static void ReceiveStorageOp(BinaryReader reader, int sender)
        {
            if (Main.netMode != 2)
            {
                return;
            }

            int ent = reader.ReadInt32();

            if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TEStorageHeart))
            {
                return;
            }

            TEStorageHeart heart = (TEStorageHeart)TileEntity.ByID[ent];
            var            op    = (StorageOp)reader.ReadByte();

            if (op == StorageOp.Deposit)
            {
                Item item = ItemIO.Receive(reader, true);
                heart.DepositItem(item);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareOpResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            else if (op == StorageOp.DepositList)
            {
                int         count = reader.ReadByte();
                List <Item> items = new List <Item>();
                StartUpdateQueue();
                for (int k = 0; k < count; k++)
                {
                    Item item = ItemIO.Receive(reader, true);
                    heart.DepositItem(item);
                    if (!item.IsAir)
                    {
                        items.Add(item);
                    }
                }
                ProcessUpdateQueue();
                if (items.Count > 0)
                {
                    ModPacket packet = PrepareOpResult(op);
                    packet.Write((byte)items.Count);
                    foreach (Item item in items)
                    {
                        ItemIO.Send(item, packet, true);
                    }
                    packet.Send(sender);
                }
            }
            else if (op == StorageOp.Withdraw || op == StorageOp.WithdrawToInventory)
            {
                Item item = ItemIO.Receive(reader, true);
                item = heart.TryWithdraw(item);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareOpResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            else if (op == StorageOp.WithdrawJustRemove)
            {
                // @Robustness: We assume that nothing could go wrong here.
                // And maybe nothing could. But still something to look at for potential bugs...
                Item item = ItemIO.Receive(reader, true);
                heart.TryWithdraw(item);
            }

            SendRefreshNetworkItems(ent);
        }
コード例 #29
0
ファイル: NetHelper.cs プロジェクト: Lanboost/MagicStorage
        public static void ReceiveStationOperation(BinaryReader reader, int sender)
        {
            if (Main.netMode != 2)
            {
                return;
            }
            int ent = reader.ReadInt32();

            if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TECraftingAccess))
            {
                return;
            }
            TECraftingAccess access = (TECraftingAccess)TileEntity.ByID[ent];

            Item[] stations = access.stations;
            byte   op       = reader.ReadByte();

            if (op == 0)
            {
                Item item = ItemIO.Receive(reader, true);
                access.TryDepositStation(item);
                if (item.stack > 0)
                {
                    ModPacket packet = PrepareStationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            else if (op == 1)
            {
                int  slot = reader.ReadByte();
                Item item = access.TryWithdrawStation(slot);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareStationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            else if (op == 2)
            {
                Item item = ItemIO.Receive(reader, true);
                int  slot = reader.ReadByte();
                item = access.DoStationSwap(item, slot);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareStationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            Point16       pos     = access.Position;
            StorageAccess modTile = TileLoader.GetTile(Main.tile[pos.X, pos.Y].type) as StorageAccess;

            if (modTile != null)
            {
                TEStorageHeart heart = modTile.GetHeart(pos.X, pos.Y);
                if (heart != null)
                {
                    SendRefreshNetworkItems(heart.ID);
                }
            }
        }
コード例 #30
0
ファイル: NetHelper.cs プロジェクト: zadum4ivii/MagicStorage
        public static void ReceiveStorageOperation(BinaryReader reader, int sender)
        {
            if (Main.netMode != 2)
            {
                return;
            }
            int ent = reader.ReadInt32();

            if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TEStorageHeart))
            {
                return;
            }
            TEStorageHeart heart = (TEStorageHeart)TileEntity.ByID[ent];
            byte           op    = reader.ReadByte();

            if (op == 0)
            {
                Item item = ItemIO.Receive(reader, true);
                heart.DepositItem(item);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareOperationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            else if (op == 1 || op == 3)
            {
                Item item = ItemIO.Receive(reader, true);
                item = heart.TryWithdraw(item);
                if (!item.IsAir)
                {
                    ModPacket packet = PrepareOperationResult(op);
                    ItemIO.Send(item, packet, true);
                    packet.Send(sender);
                }
            }
            else if (op == 2)
            {
                int         count = reader.ReadByte();
                List <Item> items = new List <Item>();
                StartUpdateQueue();
                for (int k = 0; k < count; k++)
                {
                    Item item = ItemIO.Receive(reader, true);
                    heart.DepositItem(item);
                    if (!item.IsAir)
                    {
                        items.Add(item);
                    }
                }
                ProcessUpdateQueue();
                if (items.Count > 0)
                {
                    ModPacket packet = PrepareOperationResult(op);
                    packet.Write((byte)items.Count);
                    foreach (Item item in items)
                    {
                        ItemIO.Send(item, packet, true);
                    }
                    packet.Send(sender);
                }
            }
            SendRefreshNetworkItems(ent);
        }