private void SelectExchange(ItemExchangeKinds exchangeKinds)
 {
     if (mKeyController != null && mOnExchangeCallBack != null)
     {
         mOnExchangeCallBack(exchangeKinds);
     }
 }
示例#2
0
        public int GetItemExchangeNum(ItemExchangeKinds exchange_type)
        {
            int result;

            if (exchange_type == ItemExchangeKinds.NONE)
            {
                result = 1;
            }
            else if (exchange_type == ItemExchangeKinds.PLAN && this.Id == 57)
            {
                result = 4;
            }
            else if (exchange_type == ItemExchangeKinds.REMODEL && this.Id == 57)
            {
                result = 1;
            }
            else if (exchange_type == ItemExchangeKinds.PRESENT_MATERIAL && this.Id == 60)
            {
                result = 1;
            }
            else if (exchange_type == ItemExchangeKinds.PRESENT_IRAKO && this.Id == 60)
            {
                result = 1;
            }
            else
            {
                result = 0;
            }
            return(result);
        }
示例#3
0
        public int GetItemExchangeNum(ItemExchangeKinds exchange_type)
        {
            switch (exchange_type)
            {
            case ItemExchangeKinds.NONE:
                return(1);

            case ItemExchangeKinds.PLAN:
                if (Id == 57)
                {
                    return(4);
                }
                break;
            }
            if (exchange_type == ItemExchangeKinds.REMODEL && Id == 57)
            {
                return(1);
            }
            if (exchange_type == ItemExchangeKinds.PRESENT_MATERIAL && Id == 60)
            {
                return(1);
            }
            if (exchange_type == ItemExchangeKinds.PRESENT_IRAKO && Id == 60)
            {
                return(1);
            }
            return(0);
        }
示例#4
0
 public int GetSpendCountInUse(ItemExchangeKinds use_type)
 {
     if (_mst_data == null)
     {
         return(0);
     }
     return(_mst_data.GetItemExchangeNum(use_type));
 }
示例#5
0
    private void SelectExchange(ItemExchangeKinds exchangeKinds)
    {
        bool flag = this.mKeyController != null;

        if (flag && this.mOnExchangeCallBack != null)
        {
            this.mOnExchangeCallBack.Invoke(exchangeKinds);
        }
    }
示例#6
0
        public Result UseItem(int useitem_mst_id, bool is_force, ItemExchangeKinds kinds)
        {
            Api_Result <User_ItemUseFmt> api_Result = new Api_req_Member().ItemUse(useitem_mst_id, is_force, kinds);

            if (api_Result.state != 0 || api_Result.data == null)
            {
                return(null);
            }
            bool           has_use_item_reward;
            List <IReward> rewards = _CreateRewardModels(useitem_mst_id, api_Result.data, out has_use_item_reward);

            Init();
            return(new Result(rewards, api_Result.data.CautionFlag));
        }
        public ItemlistManager.Result UseItem(int useitem_mst_id, bool is_force, ItemExchangeKinds kinds)
        {
            Api_Result <User_ItemUseFmt> api_Result = new Api_req_Member().ItemUse(useitem_mst_id, is_force, kinds);

            if (api_Result.state != Api_Result_State.Success || api_Result.data == null)
            {
                return(null);
            }
            bool           flag;
            List <IReward> rewards = this._CreateRewardModels(useitem_mst_id, api_Result.data, out flag);

            this.Init();
            return(new ItemlistManager.Result(rewards, api_Result.data.CautionFlag));
        }
示例#8
0
        private IEnumerable <XElement> get_package_item(ItemExchangeKinds exchange_type, Mst_useitem mst_useitem)
        {
            List <XElement> result = null;

            switch (exchange_type)
            {
            case ItemExchangeKinds.NONE:
            {
                Dictionary <string, string> dictionary = new Dictionary <string, string>();
                dictionary.Add("Package_type", "2");
                dictionary.Add("Package_id", mst_useitem.Id.ToString());
                Dictionary <string, string> where_dict = dictionary;
                return(Utils.Xml_Result_Where("mst_item_package", "mst_item_package", where_dict));
            }

            case ItemExchangeKinds.PLAN:
            {
                List <XElement> list = new List <XElement>();
                list.Add(new XElement("mst_item_package", new XElement("Id", "101"), new XElement("Package_type", "2"), new XElement("Package_id", "57"), new XElement("Material_id", "0"), new XElement("Useitem_id", "58"), new XElement("Slotitem_id", "0"), new XElement("Items", "1")));
                result = list;
                break;
            }

            case ItemExchangeKinds.REMODEL:
            {
                List <XElement> list = new List <XElement>();
                list.Add(new XElement("mst_item_package", new XElement("Id", "102"), new XElement("Package_type", "2"), new XElement("Package_id", "57"), new XElement("Material_id", "8"), new XElement("Useitem_id", "0"), new XElement("Slotitem_id", "0"), new XElement("Items", "4")));
                result = list;
                break;
            }

            case ItemExchangeKinds.PRESENT_MATERIAL:
            {
                List <XElement> list = new List <XElement>();
                list.Add(new XElement("mst_item_package", new XElement("Id", "103"), new XElement("Package_type", "2"), new XElement("Package_id", "60"), new XElement("Material_id", "7"), new XElement("Useitem_id", "0"), new XElement("Slotitem_id", "0"), new XElement("Items", "3")));
                list.Add(new XElement("mst_item_package", new XElement("Id", "104"), new XElement("Package_type", "2"), new XElement("Package_id", "60"), new XElement("Material_id", "8"), new XElement("Useitem_id", "0"), new XElement("Slotitem_id", "0"), new XElement("Items", "1")));
                result = list;
                break;
            }

            case ItemExchangeKinds.PRESENT_IRAKO:
            {
                List <XElement> list = new List <XElement>();
                list.Add(new XElement("mst_item_package", new XElement("Id", "105"), new XElement("Package_type", "2"), new XElement("Package_id", "60"), new XElement("Material_id", "0"), new XElement("Useitem_id", "59"), new XElement("Slotitem_id", "0"), new XElement("Items", "1")));
                result = list;
                break;
            }
            }
            return(result);
        }
        public Api_Result <User_ItemUseFmt> ItemUse(int useitem_id, bool force_flag, ItemExchangeKinds exchange_type)
        {
            Dictionary <enumMaterialCategory, int>            dictionary  = new Dictionary <enumMaterialCategory, int>();
            Dictionary <ItemGetKinds, Dictionary <int, int> > dictionary2 = new Dictionary <ItemGetKinds, Dictionary <int, int> >();
            Dictionary <int, Dictionary <int, int> >          dictionary3 = new Dictionary <int, Dictionary <int, int> >();

            using (IEnumerator enumerator = Enum.GetValues(typeof(ItemGetKinds)).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    object current = enumerator.get_Current();
                    dictionary2.Add((ItemGetKinds)((int)current), new Dictionary <int, int>());
                }
            }
            for (int i = 1; i <= 3; i++)
            {
                dictionary3.Add(i, new Dictionary <int, int>());
            }
            Api_Result <User_ItemUseFmt> api_Result = new Api_Result <User_ItemUseFmt>();

            api_Result.data = new User_ItemUseFmt();
            Mst_useitem mst_useitem = null;

            if (!Mst_DataManager.Instance.Mst_useitem.TryGetValue(useitem_id, ref mst_useitem))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (mst_useitem.Usetype != 4)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            Mem_useitem mem_useitem;

            if (!Comm_UserDatas.Instance.User_useItem.TryGetValue(useitem_id, ref mem_useitem))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            int num = mst_useitem.GetItemExchangeNum(exchange_type);

            if (num == 0)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (mem_useitem.Value < num)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            Dictionary <enumMaterialCategory, Mem_material> user_material = Comm_UserDatas.Instance.User_material;
            IEnumerable <XElement> enumerable = this.get_package_item(exchange_type, mst_useitem);

            if (enumerable != null)
            {
                Mst_item_limit mst_item_limit = Mst_DataManager.Instance.Mst_item_limit.get_Item(1);
                var            enumerable2    = Enumerable.Select(Enumerable.Select(enumerable, (XElement item) => new
                {
                    item     = item,
                    category = (enumMaterialCategory)((int)Enum.Parse(typeof(enumMaterialCategory), item.Element("Material_id").get_Value()))
                }), <> __TranspIdent6 => new
                {
                    material_id = < > __TranspIdent6.category,
                    useitem_id  = int.Parse(< > __TranspIdent6.item.Element("Useitem_id").get_Value()),
                    slotitem_id = int.Parse(< > __TranspIdent6.item.Element("Slotitem_id").get_Value()),
                    items       = int.Parse(< > __TranspIdent6.item.Element("Items").get_Value()),
                    max_items   = mst_item_limit.GetMaterialLimit(Mst_DataManager.Instance.Mst_item_limit, <> __TranspIdent6.category)
                });
示例#10
0
        public Api_Result <User_ItemUseFmt> ItemUse(int useitem_id, bool force_flag, ItemExchangeKinds exchange_type)
        {
            Dictionary <enumMaterialCategory, int>            dictionary  = new Dictionary <enumMaterialCategory, int>();
            Dictionary <ItemGetKinds, Dictionary <int, int> > dictionary2 = new Dictionary <ItemGetKinds, Dictionary <int, int> >();
            Dictionary <int, Dictionary <int, int> >          dictionary3 = new Dictionary <int, Dictionary <int, int> >();

            foreach (object value6 in Enum.GetValues(typeof(ItemGetKinds)))
            {
                dictionary2.Add((ItemGetKinds)(int)value6, new Dictionary <int, int>());
            }
            for (int i = 1; i <= 3; i++)
            {
                dictionary3.Add(i, new Dictionary <int, int>());
            }
            Api_Result <User_ItemUseFmt> api_Result = new Api_Result <User_ItemUseFmt>();

            api_Result.data = new User_ItemUseFmt();
            Mst_useitem value = null;

            if (!Mst_DataManager.Instance.Mst_useitem.TryGetValue(useitem_id, out value))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (value.Usetype != 4)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (!Comm_UserDatas.Instance.User_useItem.TryGetValue(useitem_id, out Mem_useitem value2))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            int num = value.GetItemExchangeNum(exchange_type);

            if (num == 0)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (value2.Value < num)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            Dictionary <enumMaterialCategory, Mem_material> user_material = Comm_UserDatas.Instance.User_material;
            IEnumerable <XElement> enumerable = get_package_item(exchange_type, value);

            if (enumerable != null)
            {
                Mst_item_limit mst_item_limit = Mst_DataManager.Instance.Mst_item_limit[1];
                var            enumerable2    = from item in enumerable
                                                let category = (enumMaterialCategory)(int)Enum.Parse(typeof(enumMaterialCategory), item.Element("Material_id").Value)
                                                               select new
                {
                    material_id = category,
                    useitem_id  = int.Parse(item.Element("Useitem_id").Value),
                    slotitem_id = int.Parse(item.Element("Slotitem_id").Value),
                    items       = int.Parse(item.Element("Items").Value),
                    max_items   = mst_item_limit.GetMaterialLimit(Mst_DataManager.Instance.Mst_item_limit, category)
                };
                foreach (var item in enumerable2)
                {
                    if (item.material_id != 0)
                    {
                        int num2 = LimitGetCount(user_material[item.material_id].Value, item.items, item.max_items);
                        if (!force_flag && num2 != item.items)
                        {
                            api_Result.data.CautionFlag = true;
                            return(api_Result);
                        }
                        dictionary.Add(item.material_id, item.items);
                        dictionary3[1].Add((int)item.material_id, num2);
                    }
                    else if (item.useitem_id != 0)
                    {
                        int now_count = 0;
                        if (Comm_UserDatas.Instance.User_useItem.TryGetValue(item.useitem_id, out Mem_useitem value3))
                        {
                            now_count = value3.Value;
                        }
                        int value4 = LimitGetCount(now_count, item.items, item.max_items);
                        dictionary2[ItemGetKinds.UseItem].Add(item.useitem_id, item.items);
                        dictionary3[2].Add(item.useitem_id, value4);
                    }
                    else if (item.slotitem_id != 0)
                    {
                        dictionary2[ItemGetKinds.SlotItem].Add(item.slotitem_id, item.items);
                        dictionary3[3].Add(item.slotitem_id, item.items);
                    }
                }
                foreach (KeyValuePair <int, Dictionary <int, int> > item2 in dictionary3)
                {
                    int key = item2.Key;
                    foreach (KeyValuePair <int, int> item3 in item2.Value)
                    {
                        int key2   = item3.Key;
                        int value5 = item3.Value;
                        switch (key)
                        {
                        case 1:
                        {
                            enumMaterialCategory key3 = (enumMaterialCategory)key2;
                            user_material[key3].Add_Material(value5);
                            break;
                        }

                        case 2:
                            Comm_UserDatas.Instance.Add_Useitem(key2, value5);
                            break;

                        case 3:
                            Comm_UserDatas.Instance.Add_Slot(new List <int>
                            {
                                key2
                            });
                            break;
                        }
                    }
                }
            }
            else if (value.Id == 10 || value.Id == 11 || value.Id == 12)
            {
                Mem_basic user_basic = Comm_UserDatas.Instance.User_basic;
                int       get_count  = int.Parse(value.Description2) * value2.Value;
                int       max_count  = 200000;
                int       num3       = LimitGetCount(user_basic.Fcoin, get_count, max_count);
                dictionary2[ItemGetKinds.UseItem].Add(44, num3);
                user_basic.AddCoin(num3);
                num = value2.Value;
            }
            else if (value.Id == 53)
            {
                Mem_basic user_basic2 = Comm_UserDatas.Instance.User_basic;
                if (user_basic2.Max_chara >= user_basic2.GetPortMaxExtendNum())
                {
                    api_Result.state = Api_Result_State.Parameter_Error;
                    return(api_Result);
                }
                dictionary2[ItemGetKinds.UseItem].Add(53, 1);
                user_basic2.PortExtend(1);
            }
            value2.Sub_UseItem(num);
            api_Result.data.GetItem  = GetItemFmt(dictionary2);
            api_Result.data.Material = dictionary;
            return(api_Result);
        }