Beispiel #1
0
            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));
            }
Beispiel #2
0
        // `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));
        }
Beispiel #3
0
            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);
            }
Beispiel #4
0
        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);
                }
            }
        }
Beispiel #5
0
 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);
 }
Beispiel #6
0
 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));
 }