public void ProcessPacket(StorageSyncRealtimeChangePacket packet, NebulaConnection conn) { int itemId = packet.ItemId; int count = packet.Count; StorageComponent storage = null; StorageComponent[] pool = GameMain.localPlanet?.factory?.factoryStorage?.storagePool; if (pool != null && packet.StorageIndex != -1 && packet.StorageIndex < pool.Length) { storage = pool[packet.StorageIndex]; } if (storage != null) { StorageManager.EventFromClient = true; if (packet.StorageEvent == StorageSyncRealtimeChangeEvent.TakeItemFromGrid) { storage.TakeItemFromGrid(packet.Length, ref itemId, ref count); StorageSyncManager.SendToOtherPlayersOnTheSamePlanet(conn, packet, packet.PlanetId); } else if (packet.StorageEvent == StorageSyncRealtimeChangeEvent.AddItem2) { storage.AddItem(itemId, count, packet.StartIndex, packet.Length); StorageSyncManager.SendToOtherPlayersOnTheSamePlanet(conn, packet, packet.PlanetId); } else if (packet.StorageEvent == StorageSyncRealtimeChangeEvent.AddItemStacked) { int result = storage.AddItemStacked(itemId, count); StorageSyncManager.SendToOtherPlayersOnTheSamePlanet(conn, packet, packet.PlanetId); } StorageManager.EventFromClient = false; } }
public static void HandleUserInteraction <T>(StorageComponent __instance, T packet) where T : class, new() { //Skip if change was done in player's inventory if (__instance.entityId == 0 && __instance.id == 0) { return; } if (LocalPlayer.IsMasterClient) { StorageSyncManager.SendToPlayersOnTheSamePlanet(packet, GameMain.data.localPlanet.id); } else { LocalPlayer.SendPacket(packet); } }
public override void ProcessPacket(StorageSyncRealtimeChangePacket packet, NebulaConnection conn) { StorageComponent storage = null; StorageComponent[] pool = GameMain.galaxy.PlanetById(packet.PlanetId)?.factory?.factoryStorage?.storagePool; if (pool != null && packet.StorageIndex != -1 && packet.StorageIndex < pool.Length) { storage = pool[packet.StorageIndex]; } if (storage != null) { using (Multiplayer.Session.Storage.IsIncomingRequest.On()) { int itemId = packet.ItemId; int count = packet.Count; int inc = packet.Inc; int dummyOut; if (packet.StorageEvent == StorageSyncRealtimeChangeEvent.AddItem2) { storage.AddItem(itemId, count, packet.StartIndex, packet.Length, inc, out dummyOut); } else if (packet.StorageEvent == StorageSyncRealtimeChangeEvent.AddItemStacked) { storage.AddItemStacked(itemId, count, inc, out dummyOut); } else if (packet.StorageEvent == StorageSyncRealtimeChangeEvent.TakeItemFromGrid) { storage.TakeItemFromGrid(packet.Length, ref itemId, ref count, out dummyOut); } if (IsHost) { StorageSyncManager.SendToOtherPlayersOnTheSamePlanet(conn, packet, packet.PlanetId); } } } }