public override void HandleSuccess(CallbackInfo <WebObjects.Items.EquipResponse> info) { DomainObjects.InventoryItem item = inventory.dataStore.inventory.Get(id); item.equipped = true; RoarManager.OnGoodEquipped(new RoarManager.GoodInfo(id, item.ikey, item.label)); }
// `sell(id)` performs a sell on the item `id` specified public void Sell(string id, Roar.Callback <Roar.WebObjects.Items.SellResponse> callback) { DomainObjects.InventoryItem item = dataStore.inventory.Get(id); if (item == null) { logger.DebugLog("[roar] -- Failed: no record with id: " + id); return; } // Ensure item is sellable first if (!item.sellable) { var error = item.ikey + ": Good is not sellable"; logger.DebugLog("[roar] -- " + error); if (callback != null) { callback(new Roar.CallbackInfo <Roar.WebObjects.Items.SellResponse> (null, IWebAPI.DISALLOWED, error)); } return; } WebObjects.Items.SellArguments args = new Roar.WebObjects.Items.SellArguments(); args.item_id = id; itemActions.sell(args, new SellCallback(callback, this, id)); }
public static InventoryItem CreateFromXml(System.Xml.XmlElement n, Roar.DataConversion.IXCRMParser ixcrm_parser) { DomainObjects.InventoryItem retval = new DomainObjects.InventoryItem(); retval.id = n.GetAttribute("id"); retval.ikey = n.GetAttribute("ikey"); retval.type = n.GetAttribute("type"); retval.label = n.GetAttribute("label"); retval.description = n.GetAttribute("description"); if (n.HasAttribute("count") && !System.Int32.TryParse(n.GetAttribute("count"), out retval.count)) { throw new InvalidXMLElementException("Unable to parse count to integer"); } if (n.HasAttribute("consumable")) { retval.consumable = n.GetAttribute("consumable").ToLower() == "true"; } if (n.HasAttribute("sellable")) { retval.sellable = n.GetAttribute("sellable").ToLower() == "true"; } if (n.HasAttribute("equipped")) { retval.equipped = n.GetAttribute("equipped").ToLower() == "true"; } retval.stats = ixcrm_parser.ParseItemStatList(n.SelectSingleNode("./stats") as System.Xml.XmlElement); retval.price = ixcrm_parser.ParseModifierList(n.SelectSingleNode("./price") as System.Xml.XmlElement); retval.tags = ixcrm_parser.ParseTagList(n.SelectSingleNode("./tags") as System.Xml.XmlElement); System.Xml.XmlNodeList property_nodes = n.SelectNodes("./properties/property"); foreach (System.Xml.XmlElement property_node in property_nodes) { Roar.DomainObjects.ItemArchetypeProperty property = new Roar.DomainObjects.ItemArchetypeProperty(); property.ikey = property_node.GetAttribute("ikey"); property.value = property_node.GetAttribute("value"); retval.properties.Add(property); } return(retval); }
protected void OnServerItemAdd(Events.ItemAddEvent d) { // Only add to inventory if it Has previously been intialised if (HasDataFromServer) { //TODO: Implement this! DomainObjects.InventoryItem item = new DomainObjects.InventoryItem(); item.id = d.item_id; item.ikey = d.item_ikey; if (!dataStore.cache.List().Any(i => (i.ikey == item.ikey))) { dataStore.cache.AddToCache(new List <string> { item.ikey }, h => AddToInventory(item.ikey, item.id)); } else { AddToInventory(item.ikey, item.id); } } }
protected void AddToInventory(string ikey, string id) { // Prepare the item to manually add to Inventory DomainObjects.InventoryItem item = new DomainObjects.InventoryItem(); dataStore.inventory.AddOrUpdate(id, item); }
public override void HandleSuccess(Roar.CallbackInfo <Roar.WebObjects.Items.UseResponse> info) { DomainObjects.InventoryItem item = inventory.dataStore.inventory.Get(id); inventory.dataStore.inventory.Unset(item.id); RoarManager.OnGoodUsed(new RoarManager.GoodInfo(item.id, item.ikey, item.label)); }