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(); } } }
public override void OnActivate() { heart = StoragePlayer.LocalPlayer.GetStorageHeart(); access = StoragePlayer.LocalPlayer.GetCraftingAccess(); if (access == null || heart == null) { Deactivate(); return; } Refresh(); }
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; }
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); }
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); } } }
private static Item[] GetCraftingStations() { TECraftingAccess ent = GetCraftingEntity(); return(ent == null ? null : ent.stations); }