Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }