private void OnInventoryChanged(Inventory inventory, byte item) { _saver.SaveInventory(inventory); if (!_subscriptions.ContainsKey(inventory.Id)) { Logger.Write(string.Format("Inventory #{0} changed with no subscribers", inventory.Id)); return; } var listeners = _subscriptions[inventory.Id]; var msg = new ServerInventoryStatusMessage { PartialUpdate = true, InventorySize = inventory.GetInventorySize(), InventoryId = inventory.Id, InventoryType = inventory.InventoryType, InventoryContent = new Dictionary <byte, InventoryItem> { { item, inventory[item] } } }; Logger.Write(string.Format("Inventory #{0} updated, informing {1} subscribers", inventory.Id, listeners.Count)); foreach (var listener in listeners) { _engine.SendMessageToClient(msg, listener); } }
private void SendFullInventory(RemotePlayer target, Inventory inventory) { var msg = new ServerInventoryStatusMessage { PartialUpdate = false, InventorySize = inventory.GetInventorySize(), InventoryId = inventory.Id, InventoryType = inventory.InventoryType, InventoryContent = inventory.GetContent() }; _engine.SendMessageToClient(msg, target); }