Esempio n. 1
0
        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();
                }
            }
        }
Esempio n. 2
0
        public override void OnActivate()
        {
            heart  = StoragePlayer.LocalPlayer.GetStorageHeart();
            access = StoragePlayer.LocalPlayer.GetCraftingAccess();

            if (access == null || heart == null)
            {
                Deactivate();
                return;
            }

            Refresh();
        }
Esempio n. 3
0
        public override void OnDeactivate()
        {
            Main.HidePlayerCraftingMenu = false;

            heart           = null;
            access          = null;
            recipes         = null;
            recipeAvailable = null;
            selectedRecipe  = null;

            filterButtons.choice = 0;
            sortButtons.choice   = 0;
            recipeButtons.choice = 0;

            filterMode = FilterMode.All;
            sortMode   = SortMode.Default;
            modFilter  = string.Empty;
            nameFilter = string.Empty;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
                }
            }
        }
Esempio n. 6
0
        private static Item[] GetCraftingStations()
        {
            TECraftingAccess ent = GetCraftingEntity();

            return(ent == null ? null : ent.stations);
        }