Beispiel #1
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "Block":
            case "CloseBtn":
                SlideDown();
                break;

            case "SellBtn":
                if (selectedItemsId.Count > 0)
                {
                    ConfirmCtrl.Show("确定将选中物品卖出?", () => {
                        Messenger.Broadcast <JArray>(NotifyTypes.SellItems, selectedItemsId);
                    });
                }
                else
                {
                    AlertCtrl.Show("请先选择要卖出的物品!");
                }
                break;

            default:
                break;
            }
        }
Beispiel #2
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "RandomBtn":
                randomName();
                break;

            case "CreateBtn":
                if (NameInputField.text.Length > 6)
                {
                    AlertCtrl.Show("称谓不能超过6个字!");
                    return;
                }
                ConfirmCtrl.Show(string.Format("<color=\"{0}\">{1}</color>以后就是你的称谓,确定后不可更改", Statics.GetGenderColor(genderType), NameInputField.text), () => {
                    RoleData role = new RoleData();
                    role.Id       = hostRoleId;
                    role.Name     = NameInputField.text;
                    role.Gender   = genderType;
                    role.IsHost   = true;
//					role.ResourceWeaponDataId = "1"; //默认武器是布缠手
                    role.Occupation  = OccupationType.None;
                    role.IconId      = IconImages[iconIndex].sprite.name;
                    role.DeadSoundId = role.Gender == GenderType.Male ? "die0003" : "die0002";
                    Messenger.Broadcast <RoleData>(NotifyTypes.CreateHostRole, role);
                }, null, "确定", "取消");
                break;

            default:
                break;
            }
        }
Beispiel #3
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "plusWorkerBtn":
                if (DbManager.Instance.GetPlusWorkerNum() < DbManager.Instance.GetMaxPlusWorkerNum())
                {
                    ConfirmCtrl.Show(string.Format("花费¥3 购买10个家丁({0}/{1})\n(家丁越多资源生产效率越高)\n确定购买?", DbManager.Instance.GetPlusWorkerNum(), DbManager.Instance.GetMaxPlusWorkerNum()), () => {
                        MaiHandler.PayForProduct("com.courage2017.worker_10");
//                            DbManager.Instance.SetPlusWorkerNum(DbManager.Instance.GetPlusWorkerNum() + 10);
//                            DbManager.Instance.SetMaxWorkerNum(DbManager.Instance.GetMaxWorkerNum() + 10);
//                            DbManager.Instance.SetWorkerNum(DbManager.Instance.GetWorkerNum() + 10);
//                            WorkshopPanelCtrl.MakeWorkerNumChange(DbManager.Instance.GetWorkerNum(), DbManager.Instance.GetMaxWorkerNum());
//                            AlertCtrl.Show("成功招募了10个家丁");
                    }, null, "购买", "不了");
                }
                else
                {
                    AlertCtrl.Show(string.Format("你已经买满了{0}个家丁", DbManager.Instance.GetMaxPlusWorkerNum()));
                }
                break;

            case "CloseBtn":
                FadeOut();
                break;

            default:
                break;
            }
        }
Beispiel #4
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "CameraBtn":
//                    ConfirmCtrl.Show("观看一段视频来缓解下各位侠客的伤势如何?", () => {
//                        MaiHandler.StartRewardedVideo(() => {
//                            Messenger.Broadcast(NotifyTypes.RelieveRoles);
//                        });
//                        MaiHandler.SendEvent("StartRewardedVideoForInjurys", DbManager.Instance.HostData.Lv.ToString());
//                    });
                ConfirmCtrl.Show("是否花费10000两银子请御医来缓解下各位侠客的伤势如何?", () => {
                    if (DbManager.Instance.CostSilver(10000))
                    {
                        Messenger.Broadcast(NotifyTypes.RelieveRoles);
                        MaiHandler.SendEvent("StartRewardedVideoForInjurys", DbManager.Instance.HostData.Lv.ToString());
                    }
                    else
                    {
                        AlertCtrl.Show("银两不足");
                    }
                });
                break;

            case "CloseBtn":
                FadeOut();
                break;
            }
        }
Beispiel #5
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "ScoutBtn":
                ConfirmCtrl.Show("是否派出一个探子追踪目标?", () => {
                    if (DbManager.Instance.GetProp(PropType.Scout) == null)
                    {
                        AlertCtrl.Show("没有探子可以派遣");
                        return;
                    }
                    EventData eventData = DbManager.Instance.GetActiveEvent(currentDialog.StringValue);
                    if (eventData != null)
                    {
                        AlertCtrl.Show(string.Format("追踪结果: {0} X: {1} Y: {2}\n<color=\"#00FF00\">(请牢记该坐标)</color>", areaNames[eventData.SceneId] != null ? areaNames[eventData.SceneId]["Name"].ToString() : "", eventData.X, eventData.Y));
                    }
                    else
                    {
                        AlertCtrl.Show("查询不到该事件信息");
                    }
                    DbManager.Instance.UseProp(PropType.Scout, 1);
                    Messenger.Broadcast(NotifyTypes.MakeUpdateProps);
                });
                break;

            default:
                break;
            }
        }
Beispiel #6
0
        public static void SendRewards(PropType type, int num)
        {
            switch (type)
            {
            case PropType.NocturnalClothing:
                AlertCtrl.Show(string.Format("获得了{0}件夜行衣", num));
                break;

            case PropType.Bodyguard:
                AlertCtrl.Show(string.Format("获得了{0}位镖师", num));
                break;

            case PropType.LimePowder:
                AlertCtrl.Show(string.Format("获得了{0}包石灰粉", num));
                break;

            case PropType.Scout:
                AlertCtrl.Show(string.Format("获得了{0}个探子", num));
                break;

            default:
                break;
            }
            Messenger.Broadcast <PropType, int>(NotifyTypes.AddProp, type, num);
        }
Beispiel #7
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "Block":
                Back();
                break;

            case "lvUpgradeBtn":
                if (weaponData.LV >= weaponLVData.MaxLV)
                {
                    AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>强化度已到满级", Statics.GetQualityColorString(weaponData.Quality), weaponData.Name));
                    break;
                }
                string needMsg  = "";
                double needRate = DbManager.Instance.GetWeaponNeedRate(weaponData.LV + 1);
                for (int i = 0, len = weaponData.Needs.Count; i < len; i++)
                {
                    needMsg += string.Format("{0}个{1}", weaponData.Needs[i].Num * needRate, Statics.GetEnmuDesc <ResourceType>(weaponData.Needs[i].Type)) + (i < len - 1 ? "," : "");
                }
                ConfirmCtrl.Show(string.Format("将<color=\"{0}\">{1}</color>强化到{2}\n需要{3}\n是否立即强化兵器?", Statics.GetQualityColorString(weaponData.Quality), weaponData.Name, weaponData.LV + 1, needMsg), () => {
                    Messenger.Broadcast <WeaponData>(NotifyTypes.WeaponLVUpgrade, weaponData);
                });
                break;

            default:
                break;
            }
        }
Beispiel #8
0
        /// <summary>
        /// 领悟秘籍诀要
        /// </summary>
        /// <param name="secret">Secret.</param>
        public void StudySecret(BookData book, SecretData secret)
        {
            List <SecretData> secrets = null;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select Id, ExpData, SecretsData from BookExpsTable where BookId = " + book.Id + " and BelongToRoleId = '" + currentRoleId + "'");

            if (sqReader.Read())
            {
                ExpData exp = JsonManager.GetInstance().DeserializeObject <ExpData>(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("ExpData"))));
                secrets = JsonManager.GetInstance().DeserializeObject <List <SecretData> >(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("SecretsData"))));
                int bookLv = Statics.GetBookLV(exp.Cur);
                if (secrets.Count >= bookLv)
                {
                    AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>目前只能领悟最多{2}张诀要", Statics.GetQualityColorString(book.Quality), book.Name, bookLv));
                    db.CloseSqlConnection();
                    return;
                }
                else
                {
                    if (secrets.FindIndex(item => item.Type == secret.Type) < 0)
                    {
                        secrets.Add(secret);
                        db.ExecuteQuery("update BookExpsTable set SecretsData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(secrets)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                        db.ExecuteQuery("update BookSecretsTable set BelongToBookId = '" + book.Id + "' where Id = '" + secret.PrimaryKeyId + "'");
                    }
                    else
                    {
                        AlertCtrl.Show("该类型诀要不能重复领悟!");
                        db.CloseSqlConnection();
                        return;
                    }
                }
            }
            else
            {
                secrets = new List <SecretData>()
                {
                    secret
                };
                //处理空数据初始化
                db.ExecuteQuery("insert into BookExpsTable (BookId, ExpData, SecretsData, BelongToRoleId) values('" + book.Id + "', '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(new ExpData(0, Statics.GetBookMaxExp(book.Quality)))) + "', '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(secrets)) + "', '" + currentRoleId + "')");
                db.ExecuteQuery("update BookSecretsTable set BelongToBookId = '" + book.Id + "' where Id = '" + secret.PrimaryKeyId + "'");
            }
            db.CloseSqlConnection();
            if (secrets != null)
            {
                Messenger.Broadcast <BookData, List <SecretData> >(NotifyTypes.DealSecretEcho, book, secrets);
                Statics.CreatePopMsg(Vector3.zero, string.Format("领悟<color=\"{0}\">{1}</color>后<color=\"{2}\">{3}</color>更为精进!!", Statics.GetQualityColorString(secret.Quality), secret.Name, Statics.GetQualityColorString(book.Quality), book.Name), Color.white, 30);
                SoundManager.GetInstance().PushSound("ui0010");
            }
        }
Beispiel #9
0
        /// <summary>
        /// 前往城镇
        /// </summary>
        /// <param name="fromIndex">From index.</param>
        /// <param name="toIndex">To index.</param>
        public void GoToCity(int fromIndex, int toIndex)
        {
            SceneData toScene = null;

            ModifyResources();
            db = OpenDb();
            string           indexToId = JsonManager.GetInstance().GetMapping <string>("SceneIndexToIds", toIndex.ToString());
            SqliteDataReader sqReader  = db.ExecuteQuery("select CityId from EnterCityTable where CityId == '" + indexToId + "' and BelongToRoleId = '" + currentRoleId + "'");

            if (sqReader.HasRows)
            {
                FloydResult result = floyd.GetResult(fromIndex, toIndex);
                //查询银子是否足够支付路费
                sqReader = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'");
                List <ResourceData> resources = null;
                if (sqReader.Read())
                {
                    string resourcesStr = sqReader.GetString(sqReader.GetOrdinal("ResourcesData"));
                    resourcesStr = resourcesStr.IndexOf("[") == 0 ? resourcesStr : DESStatics.StringDecder(resourcesStr);
                    resources    = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(resourcesStr);
                    //查询目前的银子余额
                    ResourceData resource = resources.Find(re => re.Type == ResourceType.Silver);
                    if (resource != null)
                    {
                        if (resource.Num >= result.Distance)
                        {
                            resource.Num -= result.Distance;
                            //扣钱
                            db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                            toScene = JsonManager.GetInstance().GetMapping <SceneData>("Scenes", GetCityIdByIndex(toIndex));
                            Debug.LogWarning(GetCityIdByIndex(toIndex) + "," + toScene.Id + "," + toScene.Name);
                        }
                        else
                        {
                            AlertCtrl.Show("银子不够支付路费!");
                        }
                    }
                }
            }
            else
            {
                AlertCtrl.Show("并没有开启前方传送点!");
            }
            db.CloseSqlConnection();
            if (toScene != null)
            {
                Messenger.Broadcast <SceneData>(NotifyTypes.GoToCityEcho, toScene);
            }
        }
Beispiel #10
0
        /// <summary>
        /// 治疗侠客
        /// </summary>
        /// <param name="id">Identifier.</param>
        public void CureRole(int id)
        {
            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select RoleData, InjuryType from RolesTable where Id = " + id);
            int      injury;
            bool     success = false;
            RoleData role    = null;

            if (sqReader.Read())
            {
                injury = sqReader.GetInt32(sqReader.GetOrdinal("InjuryType"));
                string roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData"));
                roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr);
                role        = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr);
                if (injury > 0)
                {
                    sqReader = db.ExecuteQuery("select Id, Num from BagTable where Type = " + ((int)ItemType.Vulnerary) + " and Lv >= " + injury + " and BelongToRoleId = '" + currentRoleId + "' order by Lv");
                    int primaryKeyId = 0;
                    int num          = 0;
                    if (sqReader.Read())
                    {
                        primaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id"));
                        num          = sqReader.GetInt32(sqReader.GetOrdinal("Num"));
                        if (num > 1)
                        {
                            db.ExecuteQuery("update BagTable set Num = " + (num - 1) + " where Id = " + primaryKeyId);
                        }
                        else
                        {
                            db.ExecuteQuery("delete from BagTable where Id = " + primaryKeyId);
                        }
                        db.ExecuteQuery("update RolesTable set InjuryType = " + ((int)InjuryType.None) + " where Id = " + id);
                        success = true;
                    }
                    else
                    {
                        AlertCtrl.Show(string.Format("行囊中并未发现有能够治愈{0}的伤药(需要{1}级伤药)", Statics.GetInjuryName((InjuryType)injury), injury), null);
                    }
                }
            }
            db.CloseSqlConnection();

            if (success && role != null)
            {
                Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"#FFFF00\">{0}</color>的伤势已经痊愈!", role.Name), Color.white, 30);
                GetHospitalPanelData();
                CallRoleInfoPanelData(false);                 //刷新队伍数据
            }
        }
Beispiel #11
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "SettingBtn":
                Messenger.Broadcast <bool>(NotifyTypes.ShowSettingPanel, true);
                break;

            case "viewTimesButton":
                AlertCtrl.Show("时辰顺序: \n午时, 未时, 申时, 酉时, 戌时, 亥时  子时, 丑时, 寅时, 卯时, 辰时, 巳时", null, "关闭");
                break;

            default:
                break;
            }
        }
Beispiel #12
0
        /// <summary>
        /// 融合诀要
        /// </summary>
        /// <param name="secret">Secret.</param>
        public bool MixSecrets(SecretData secret)
        {
            bool result = false;

            if (secret.Quality >= QualityType.FlashRed)
            {
                AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>已经是顶级诀要无法继续融合", Statics.GetQualityColorString(secret.Quality), secret.Name));
                return(result);
            }
            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select count(*) as num from BookSecretsTable where T = " + ((short)secret.Type) + " and Q = " + ((short)secret.Quality) + " and BelongToRoleId = '" + currentRoleId + "'");

            if (sqReader.Read())
            {
                if (sqReader.GetInt32(sqReader.GetOrdinal("num")) >= 2)
                {
                    sqReader = db.ExecuteQuery("select Id from BookSecretsTable where T = " + ((short)secret.Type) + " and Q = " + ((short)secret.Quality) + " and BelongToRoleId = '" + currentRoleId + "' and Id != " + secret.PrimaryKeyId + " order by Id limit 0, 1");
                    //删除素材诀要
                    while (sqReader.Read())
                    {
                        db.ExecuteQuery("delete from BookSecretsTable where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                    }
                    //升级选中的诀要
                    sqReader = db.ExecuteQuery("select SecretData, Q from BookSecretsTable where Id = " + secret.PrimaryKeyId);
                    if (sqReader.Read())
                    {
                        SecretData secretData = JsonManager.GetInstance().DeserializeObject <SecretData>(DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("SecretData"))));
                        short      endQuality = (short)(((int)secretData.Quality) + 1);
                        secretData.Quality = (QualityType)(endQuality);
                        db.ExecuteQuery("update BookSecretsTable set SecretData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(secretData)) + "', Q = " + ((short)secretData.Quality) + " where Id = " + secret.PrimaryKeyId);
                        Statics.CreatePopMsg(Vector3.zero, string.Format("融合<color=\"{0}\">{1}</color>后使你武功精进!", Statics.GetQualityColorString(secretData.Quality), secretData.Name), Color.white, 30);
                        SoundManager.GetInstance().PushSound("ui0010");
                        result = true;
                    }
                    else
                    {
                        AlertCtrl.Show("需要融合的诀要不存在");
                    }
                }
                else
                {
                    AlertCtrl.Show(string.Format("至少需要2张相同品质的<color=\"{0}\">{1}</color>才能融合成更高级的诀要", Statics.GetQualityColorString(secret.Quality), secret.Name));
                }
            }
            db.CloseSqlConnection();
            return(result);
        }
Beispiel #13
0
        void onClick(GameObject e)
        {
            if (Time.fixedTime - date <= timeout)
            {
                return;
            }
            switch (e.name)
            {
            case "EnterOccupation0":
                Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation0");
                break;

            case "EnterOccupation1":
                if (DbManager.Instance.HostData.Gender == GenderType.Male)
                {
                    Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation1");
                }
                else
                {
                    AlertCtrl.Show("少林乃佛门清净之地,不接纳女弟子");
                    return;
                }
                break;

            case "EnterOccupation2":
                Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation2");
                break;

            case "EnterOccupation3":
                Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation3");
                break;

            case "EnterOccupation4":
                Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation4");
                break;

            case "EnterOccupation5":
                Messenger.Broadcast <string>(NotifyTypes.AddANewTask, "task_occupation5");
                break;

            default:
                break;
            }
            Back();
            AlertCtrl.Show("去吧去吧,老夫已为你做了引荐");
        }
Beispiel #14
0
        /// <summary>
        /// 吃干粮
        /// </summary>
        /// <param name="id">Identifier.</param>
        /// <param name="num">Number.</param>
        public void Eat(int id, int num)
        {
            int eatNum = 0;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select Id, Data, AreaFoodNum from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'");

            if (sqReader.Read())
            {
                int      userDataId = sqReader.GetInt32(sqReader.GetOrdinal("Id"));
                UserData user       = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data")));
                user.AreaFood.Num = sqReader.GetInt32(sqReader.GetOrdinal("AreaFoodNum"));
                user.AreaFood.Num = user.AreaFood.Num > user.AreaFood.MaxNum ? user.AreaFood.MaxNum : user.AreaFood.Num;
                if (user.AreaFood.Num < user.AreaFood.MaxNum)
                {
                    eatNum             = user.AreaFood.MaxNum - user.AreaFood.Num;
                    eatNum             = eatNum <= num ? eatNum : num;
                    user.AreaFood.Num += eatNum;
                    num -= eatNum;
                    if (num > 0)
                    {
                        //减掉吃掉的干粮辎重
                        db.ExecuteQuery("update BagTable set Num = " + num + " where Id = " + id);
                    }
                    else
                    {
                        //删除干粮辎重
                        db.ExecuteQuery("delete from BagTable where Id = " + id);
                    }
                    //更新当前干粮
                    db.ExecuteQuery("Update UserDatasTable set Data = '" + JsonManager.GetInstance().SerializeObjectDealVector(user) + "', AreaFoodNum = " + user.AreaFood.Num + " where Id = " + userDataId);
                    AreaMainPanelCtrl.MakeUpdateFoods(user.AreaFood.Num);
                }
                else
                {
                    AlertCtrl.Show("目前体力充沛不需要进食!");
                }
            }
            db.CloseSqlConnection();
            if (eatNum > 0)
            {
                Statics.CreatePopMsg(Vector3.zero, string.Format("补充了{0}个干粮", eatNum), Color.green, 30);
                GetBagPanelData();
            }
        }
Beispiel #15
0
        void onClick(GameObject e)
        {
            if (!e.GetComponent <Button>().enabled)
            {
                return;
            }
            switch (e.name)
            {
            case "MakeBtn":
                if (roleData.State == RoleStateType.NotRecruited)
                {
//					ConfirmCtrl.Show(string.Format("是否将<color=\"{0}\">{1}</color>赠给{2}与其结交?", Statics.GetQualityColorString(weapon.Quality), weapon.Name, roleData.Name), () => {
//						Messenger.Broadcast<int>(NotifyTypes.InviteRole, roleData.PrimaryKeyId);
//					});
                    string needMsg = "";
                    for (int i = 0, len = weapon.Needs.Count; i < len; i++)
                    {
                        needMsg += string.Format("{0}个{1}", weapon.Needs[i].Num, Statics.GetEnmuDesc <ResourceType>(weapon.Needs[i].Type)) + (i < len - 1 ? "," : "");
                    }
                    if (needMsg != "")
                    {
                        ConfirmCtrl.Show(string.Format("要将<color=\"{0}\">{1}</color>赠送给{2}\n需要{3}\n是否立即锻造兵器?", Statics.GetQualityColorString(weapon.Quality), weapon.Name, roleData.Name, needMsg), () => {
                            Messenger.Broadcast <int>(NotifyTypes.InviteRole, roleData.PrimaryKeyId);
                        });
                    }
                    else
                    {
                        AlertCtrl.Show("兵器没有原材料无法打造", null);
                    }
                }
                else
                {
                    AlertCtrl.Show(string.Format("{0}已经和你结交", roleData.Name), null);
                }
                break;

            case "Btn":
                Messenger.Broadcast <RoleData>(NotifyTypes.ShowRoleDetailPanel, roleData);
                break;

            default:
                break;
            }
            viewedNewFlag();
        }
        void onClick(GameObject e)
        {
            if (!e.GetComponent <Button>().enabled)
            {
                return;
            }
            switch (e.name)
            {
            case "StartBtn":
                if (rolesData.Count > 0)
                {
                    if (rolesData[0].Injury == InjuryType.Moribund)
                    {
                        AlertCtrl.Show("你现在伤重生命垂危不能继续闯荡江湖!", null);
                    }
                    else
                    {
                        if (foodData.Num <= 0)
                        {
                            AlertCtrl.Show("没有干粮如何闯荡江湖!", null);
                        }
                        else
                        {
                            JArray ids = new JArray();
                            for (int i = 0; i < selectedRolesData.Count; i++)
                            {
                                ids.Add(selectedRolesData[i].PrimaryKeyId);
                            }
                            Messenger.Broadcast <JArray>(NotifyTypes.ChangeRolesSeatNo, ids);
                        }
                    }
                }
                break;

            case "BackBtn":
                FadeOut();
                break;

            default:
                break;
            }
        }
Beispiel #17
0
        void onClick(GameObject e)
        {
            if (!PayBtn.enabled)
            {
                return;
            }
            if (!IsFree)
            {
                MaiHandler.PayForProduct(ProductId);
            }
            else
            {
//                MaiHandler.StartRewardedVideo(() => {
                DbManager.Instance.GotSilver(1000);
                Messenger.Broadcast <string>(NotifyTypes.GetStorePanelData, UserModel.CurrentUserData.CurrentCitySceneId);
                StartTimer();
                AlertCtrl.Show("银子 +1000");
//                });
            }
        }
Beispiel #18
0
        /// <summary>
        /// 结交侠客
        /// </summary>
        /// <param name="id">Identifier.</param>
        public void InviteRole(int id)
        {
            bool     invited = false;
            RoleData role    = null;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select Id, RoleId, State from RolesTable where Id = " + id);

            if (sqReader.Read())
            {
                role = JsonManager.GetInstance().GetMapping <RoleData>("RoleDatas", sqReader.GetString(sqReader.GetOrdinal("RoleId")));
                RoleStateType state = (RoleStateType)sqReader.GetInt32(sqReader.GetOrdinal("State"));
                if (state == RoleStateType.NotRecruited)
                {
                    sqReader = db.ExecuteQuery("select * from WeaponsTable where WeaponId = '" + role.ResourceWeaponDataId + "' and BeUsingByRoleId == '' and BelongToRoleId = '" + currentRoleId + "'");
                    if (sqReader.Read())
                    {
                        //删掉兵器
                        db.ExecuteQuery("delete from WeaponsTable where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                        //结交侠客
                        db.ExecuteQuery("update RolesTable set State = " + ((int)RoleStateType.OutTeam) + ", SeatNo = 888 where Id = " + id);
                        invited = true;
                    }
                    else
                    {
                        AlertCtrl.Show("你的兵器匣里并没有称手的兵器!", null);
                    }
                }
                else
                {
                    AlertCtrl.Show("你们已经结识!", null);
                }
            }
            db.CloseSqlConnection();
            if (invited && role != null)
            {
                Statics.CreatePopMsg(Vector3.zero, string.Format("你与<color=\"#FFFF00\">{0}</color>撮土为香,结成八拜之交!", role.Name), Color.white, 30);
                GetRolesOfWinShopPanelData(role.HometownCityId);
            }
        }
Beispiel #19
0
        void onClick(GameObject e)
        {
            if (!e.GetComponent <Button>().enabled)
            {
                return;
            }
            switch (e.name)
            {
            case "MakeBtn":
                if (bookData.Occupation == OccupationType.None || bookData.Occupation == hostRoleData.Occupation)
                {
                    if (bookData.State == BookStateType.Unread)
                    {
                        string noticeMsg = costStr != "" ? string.Format("是否将{0}拼合成<color=\"{1}\">{2}</color>进行研读?", costStr, Statics.GetQualityColorString(bookData.Quality), bookData.Name) : string.Format("是否研读<color=\"{0}\">{1}</color>?", Statics.GetQualityColorString(bookData.Quality), bookData.Name);
                        ConfirmCtrl.Show(noticeMsg, () =>
                        {
                            Messenger.Broadcast <int>(NotifyTypes.ReadBook, bookData.PrimaryKeyId);
                        });
                    }
                    else
                    {
                        AlertCtrl.Show(string.Format("<color=\"{0}\">{1}</color>已经研读过", Statics.GetQualityColorString(bookData.Quality), bookData.Name), null);
                    }
                }
                else
                {
                    AlertCtrl.Show(string.Format("非{0}弟子不得研习<color=\"{1}\">{2}</color>!", Statics.GetOccupationName(bookData.Occupation), Statics.GetQualityColorString(bookData.Quality), bookData.Name));
                }
                break;

            case "Btn":
                Messenger.Broadcast <BookData>(NotifyTypes.ShowBookDetailPanel, bookData);
                break;

            default:
                break;
            }
            viewedNewFlag();
        }
Beispiel #20
0
        void sendUseBook(int index)
        {
            BookData book = booksData[index];
            BookData findBook;

            if (!book.IsMindBook)
            {
                if (!book.IsLostKnowledge)
                {
                    findBook = booksData.Find(item => item.BeUsingByRoleId != "" && item.IsMindBook == false && item.IsLostKnowledge == false);
                    if (findBook != null)
                    {
                        AlertCtrl.Show("只能随身携带一本秘籍!");
                        return;
                    }
                }
                else
                {
                    findBook = booksData.Find(item => item.BeUsingByRoleId != "" && item.IsMindBook == false && item.IsLostKnowledge == true);
                    if (findBook != null)
                    {
                        AlertCtrl.Show("只能随身携带一本绝学!");
                        return;
                    }
                }
                Messenger.Broadcast <int>(NotifyTypes.UseBook, book.PrimaryKeyId);
            }
            else
            {
                findBook = booksData.Find(item => item.BeUsingByRoleId != "" && item.IsMindBook == false && item.IsLostKnowledge == false);
                if (findBook == null)
                {
                    AlertCtrl.Show("没有秘籍在身不能使用心法!");
                    return;
                }
                Messenger.Broadcast <int>(NotifyTypes.UseBook, book.PrimaryKeyId);
            }
        }
Beispiel #21
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "SettingBtn":
                if (BattleFightPanelCtrl.Ctrl != null)
                {
                    AlertCtrl.Show("请专心战斗");
                    break;
                }
                Messenger.Broadcast <bool>(NotifyTypes.ShowSettingPanel, true);
                break;

            case "viewTimesButton":
                AlertCtrl.Show("时辰顺序: \n午时, 未时, 申时, 酉时, 戌时, 亥时  子时, 丑时, 寅时, 卯时, 辰时, 巳时", null, "关闭");
                break;

            case "EnemyInfoBtn":
                EnemysInfoPanelCtrl.Show();
                SetEnemyInfoRedPointFlag(false);
                break;

            case "BackToCityBtn":
                if (BattleFightPanelCtrl.Ctrl != null)
                {
                    AlertCtrl.Show("请专心战斗");
                    break;
                }
                ConfirmCtrl.Show("现在马上回城?", () => {
                    Messenger.Broadcast(NotifyTypes.BackToCity);
                });
                break;

            default:
                break;
            }
        }
Beispiel #22
0
        //将所有人的伤势缓解一级
        public void RelieveRoles()
        {
            db = OpenDb();
            bool             success  = false;
            RoleData         role     = null;
            SqliteDataReader sqReader = db.ExecuteQuery("select Id, RoleData, InjuryType from RolesTable where InjuryType > " + 0);
            string           roleDataStr;

            while (sqReader.Read())
            {
                roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData"));
                roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr);
                role        = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr);
                db.ExecuteQuery("update RolesTable set InjuryType = " + (sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")) - 1) + " where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                success = true;
            }
            db.CloseSqlConnection();
            if (success)
            {
                AlertCtrl.Show("各位侠客的伤势得到了缓解!");
                GetHospitalPanelData();
                CallRoleInfoPanelData(false); //刷新队伍数据
            }
        }
Beispiel #23
0
        /// <summary>
        /// Battles the notify init.
        /// </summary>
        public static void BattleNotifyInit()
        {
            Messenger.AddListener <string>(NotifyTypes.CreateBattle, (fightId) => {
                //获取队伍角色列表
//				RoleData currentRoleData = RoleInfoPanelCtrl.GetCurrentRoleData();
                RoleData currentRoleData = DbManager.Instance.GetHostRoleData();
                currentRoleData.MakeJsonToModel();
                if (currentRoleData == null)
                {
                    return;
                }
                if (currentRoleData.Injury == InjuryType.Moribund)
                {
                    AlertCtrl.Show("你已奄奄一息无法再战!");
                    return;
                }
                //获取战斗数据
//				FightData fightData = new FightData();
//				fightData.Id = fightId;
//				fightData.Type = FightType.Normal;
//				RoleData enemy0 = new RoleData();
//				enemy0.Id = "enemy0";
//				enemy0.Name = "赏金刺客";
//				enemy0.HalfBodyId = "enemy000001";
//				BookData book0 = new BookData();
//				book0.Id = "book20001";
//				book0.Name = "地痞撒泼";
//				book0.IconId = "200000";
//				SkillData skill0 = new SkillData();
//				skill0.Type = SkillType.MagicAttack;
//				skill0.Name = "背负投";
//				BuffData buff0 = new BuffData();
//				buff0.Type = BuffType.Vertigo;
////				buff0.Value = 8888;
////				buff0.FirstEffect = true;
//				buff0.RoundNumber = 3;
//				buff0.Rate = 30;
//				buff0.FirstEffect = true;
//				skill0.DeBuffDatas.Add(buff0);
//				SkillData skill1 = new SkillData();
//				skill1.Type = SkillType.PhysicsAttack;
//				skill1.Name = "抱摔";
//				SkillData skill2 = new SkillData();
//				skill2.Type = SkillType.PhysicsAttack;
//				skill2.Name = "撕咬";
//				book0.Skills.Add(skill0);
//				book0.Skills.Add(skill1);
//				book0.Skills.Add(skill2);
//				enemy0.Books.Add(book0);
//				enemy0.AttackSpeed = 2;
//				enemy0.HP = 10000;
//				enemy0.MaxHP = 10000;
//				WeaponData weapon5 = new WeaponData();
//				weapon5.Id = "weapon5";
//				weapon5.Id = "阔刃刀";
//				weapon5.Width = 360;
//				weapon5.Rates = new float[] { 1, 0.6f, 0.2f, 0.1f };
//				enemy0.Weapon = weapon5;
//				fightData.Enemys = new List<RoleData>() {
//					enemy0
//				};
                FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId);
                fightData.MakeJsonToModel();
                Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel);
                Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => {
                    BattleMainPanelCtrl.Show(currentRoleData, fightData);
                }, () => {
                    Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, true);
                });
            });

            Messenger.AddListener <RoleData, string>(NotifyTypes.CreateTestBattle, (currentRoleData, fightId) => {
                FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId);
                fightData.MakeJsonToModel();
                BattleMainPanelCtrl.Show(currentRoleData, fightData);
            });

            Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, (win, drops, fightData) => {
                Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel);
                Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => {
                    //如果普通战斗失败则回之前到过的城镇去疗伤
                    if (fightData.Type == FightType.Normal && !win)
                    {
                        AlertCtrl.Show("江湖凶险, 稍事休息后再出发!", () => {
                            Messenger.Broadcast(NotifyTypes.BackToCity);
                        });
                    }
                    BattleMainPanelCtrl.Hide();
                }, () => {
                    //任务详情界面打开时不呼出角色信息板
                    if (TaskDetailInfoPanelCtrl.Ctrl == null)
                    {
                        Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false);
                    }
                    Messenger.Broadcast(NotifyTypes.PlayBgm);
                    if (drops.Count > 0)
                    {
                        Messenger.Broadcast <List <DropData> >(NotifyTypes.ShowDropsListPanel, drops);
                    }
                    if (fightData.Type == FightType.Task)
                    {
                        Messenger.Broadcast(NotifyTypes.ReloadTaslDetailInfoData);
                        if (win)
                        {
                            Messenger.Broadcast <string>(NotifyTypes.MakeFightWinedBtnDisable, fightData.Id);
                        }
                    }
                });
            });

            Messenger.AddListener <RoleData>(NotifyTypes.ChangeCurrentTeamRoleInBattle, (roleData) => {
                BattleMainPanelCtrl.ChangeCurrentTeamRole(roleData);
            });

            Messenger.AddListener <int>(NotifyTypes.ChangeCurrentTeamBookInBattle, (index) => {
                BattleMainPanelCtrl.ChangeCurrentTeamBook(index);
            });

            Messenger.AddListener <JArray>(NotifyTypes.SendFightResult, (data) => {
                DbManager.Instance.SendFightResult((bool)data[0], data[1].ToString(), (int)data[2]);
                JArray usedSkillIdData = (JArray)data[3];
                JArray d;
                for (int i = 0; i < usedSkillIdData.Count; i++)
                {
                    d = (JArray)usedSkillIdData[i];
                    DbManager.Instance.UpdateUsedTheSkillRecords(d[0].ToString(), (int)d[1]);
                }
                JArray plusIndexData = (JArray)data[4];
                for (int i = 0; i < plusIndexData.Count; i++)
                {
                    d = (JArray)plusIndexData[i];
                    DbManager.Instance.UpdateWeaponPowerPlusSuccessedRecords((int)d[0], (int)d[1]);
                }
            });

            Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.SendFightResultEcho, (win, drops, fightData) => {
                //加载动态事件列表
                Messenger.Broadcast <string>(NotifyTypes.GetActiveEventsInArea, UserModel.CurrentUserData.CurrentAreaSceneName);
                Messenger.Broadcast <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, win, drops, fightData);
            });

            Messenger.AddListener(NotifyTypes.BackToCity, () => {
                string eventId = JsonManager.GetInstance().GetMapping <string>("AreaCityPosDatas", UserModel.CurrentUserData.CurrentCitySceneId);
                string[] fen   = eventId.Split(new char[] { '_' });
                if (fen.Length >= 3)
                {
                    string areaName = fen[0];
                    int x           = int.Parse(fen[1]);
                    int y           = int.Parse(fen[2]);
                    if (UserModel.CurrentUserData != null)
                    {
                        UserModel.CurrentUserData.PositionStatu        = UserPositionStatusType.InCity;
                        UserModel.CurrentUserData.CurrentAreaSceneName = areaName;
                        UserModel.CurrentUserData.CurrentAreaX         = x;
                        UserModel.CurrentUserData.CurrentAreaY         = y;
                        Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, null);
                        Messenger.Broadcast <string>(NotifyTypes.GoToScene, areaName);
                    }
                }
            });

            Messenger.AddListener(NotifyTypes.BattleFaild, () => {
                BattleMainPanelCtrl.MakeFaild();
            });

            Messenger.AddListener <string>(NotifyTypes.MakePopRole, (dieRoleId) => {
                RoleInfoPanelCtrl.MakePopRole(dieRoleId);
            });
        }
Beispiel #24
0
        void onClick(GameObject e)
        {
            if (!PayBtn.enabled)
            {
                return;
            }
            if (propData.Num >= propData.Max)
            {
                switch (propData.Type)
                {
                case PropType.NocturnalClothing:
                    AlertCtrl.Show(string.Format("最多只能携带{0}件夜行衣", propData.Max));
                    break;

                case PropType.Bodyguard:
                    AlertCtrl.Show(string.Format("最多只能雇佣{0}位镖师", propData.Max));
                    break;

                case PropType.LimePowder:
                    AlertCtrl.Show(string.Format("最多只能携带{0}包石灰粉", propData.Max));
                    break;

                case PropType.Scout:
                    AlertCtrl.Show(string.Format("最多只能拥有{0}个探子", propData.Max));
                    break;

                default:
                    break;
                }
                return;
            }

            if (!IsFree)
            {
                if (propData.Num > 0)
                {
                    switch (propData.Type)
                    {
                    case PropType.NocturnalClothing:
                        AlertCtrl.Show(string.Format("你还有{0}件夜行衣,不可再买", propData.Num));
                        break;

                    case PropType.Bodyguard:
                        AlertCtrl.Show(string.Format("你还有{0}位镖师,不可再买", propData.Num));
                        break;

                    case PropType.LimePowder:
                        AlertCtrl.Show(string.Format("你还有{0}包石灰粉,不可再买", propData.Num));
                        break;

                    case PropType.Scout:
                        AlertCtrl.Show(string.Format("你还有{0}个探子,不可再买", propData.Num));
                        break;

                    default:
                        break;
                    }
                    return;
                }
                MaiHandler.PayForProduct(productId);
            }
            else
            {
//                MaiHandler.StartRewardedVideo(() => {
                StartTimer();
                SendRewards(propData.Type, UnityEngine.Random.Range(1, 3));
//                });
            }
        }
Beispiel #25
0
        /// <summary>
        /// 打造兵器
        /// </summary>
        /// <param name="weaponId">Weapon identifier.</param>
        public void CreateNewWeaponOfWorkshop(string weaponId)
        {
            db = OpenDb();
            WeaponData          weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", weaponId);
            List <ResourceData> needs  = new List <ResourceData>();
            ResourceData        need;
            ResourceData        find;

            for (int i = 0; i < weapon.Needs.Count; i++)
            {
                need = weapon.Needs[i];
                find = needs.Find(item => item.Type == need.Type);
                if (find == null)
                {
                    needs.Add(new ResourceData(need.Type, need.Num));
                }
                else
                {
                    find.Num += need.Num;
                }
            }
            SqliteDataReader    sqReader  = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'");
            List <ResourceData> resources = null;
            int id = 0;

            if (sqReader.Read())
            {
                id = sqReader.GetInt32(sqReader.GetOrdinal("Id"));
                string resourcesStr = sqReader.GetString(sqReader.GetOrdinal("ResourcesData"));
                resourcesStr = resourcesStr.IndexOf("[") == 0 ? resourcesStr : DESStatics.StringDecder(resourcesStr);
                resources    = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(resourcesStr);
            }
            db.CloseSqlConnection();

            if (resources != null)
            {
                bool   canAdd = true;
                string msg    = "";
                for (int i = 0; i < needs.Count; i++)
                {
                    need = needs[i];
                    find = resources.Find(item => item.Type == need.Type);
                    if (find != null && find.Num >= need.Num)
                    {
                        find.Num -= need.Num;
                    }
                    else
                    {
                        canAdd = false;
                        msg    = string.Format("{0}不足!", Statics.GetResourceName(need.Type));
                        break;
                    }
                }
                if (canAdd)
                {
                    //检测添加武器
                    if (AddNewWeapon(weapon.Id))
                    {
                        db = OpenDb();
                        db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(resources)) + "' where Id = " + id);
                        db.CloseSqlConnection();
                        Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(weapon.Quality), weapon.Name), Color.white, 30);
                        SoundManager.GetInstance().PushSound("ui0007");
                    }
                    else
                    {
                        AlertCtrl.Show("兵器匣已满!", null);
                    }
                }
                else
                {
                    AlertCtrl.Show(msg, null);
                }
            }
        }
Beispiel #26
0
        void onClick(GameObject e)
        {
            if (Time.fixedTime - date <= timeout)
            {
                return;
            }
            switch (e.name)
            {
            case "SureBtn":
            case "Block":
                Back();
                break;

            case "ResetBtn":
                ConfirmCtrl.Show("是否打开塔内重置机关?\n<color=\"#ff0000\">[重置后塔内守卫将会重生]</color>", () => {
                    Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, null);
                    Statics.CreatePopMsg(Vector3.zero, "通天塔内守卫全部重生!", Color.red, 30);
                });
                break;

            case "difficultyBtn0":
                if (difficultyBtns[0].enabled)
                {
                    ConfirmCtrl.Show("是否激活普通强度?", () => {
                        if (DbManager.Instance.CostSilver(10000))
                        {
                            PlayerPrefs.SetInt("TowerDifficulty", 0);
                            Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel);
                            Statics.CreatePopMsg(Vector3.zero, "普通的量子强度被激活", Color.white, 30);
                        }
                        else
                        {
                            AlertCtrl.Show("银子不足!");
                        }
                    });
                }
                break;

            case "difficultyBtn1":
                if (difficultyBtns[1].enabled)
                {
                    ConfirmCtrl.Show("是否激活噩梦强度?\n(4倍修为)", () => {
                        if (DbManager.Instance.CostSilver(180000))
                        {
                            PlayerPrefs.SetInt("TowerDifficulty", 1);
                            Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel);
                            Statics.CreatePopMsg(Vector3.zero, "噩梦的量子强度被激活", new Color(0.93f, 1, 0.33f), 30);
                        }
                        else
                        {
                            AlertCtrl.Show("银子不足!");
                        }
                    });
                }
                break;

            case "difficultyBtn2":
                if (difficultyBtns[2].enabled)
                {
                    ConfirmCtrl.Show("是否激活绝望强度?\n(8倍修为)", () => {
                        if (DbManager.Instance.CostSilver(980000))
                        {
                            PlayerPrefs.SetInt("TowerDifficulty", 2);
                            Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel);
                            Statics.CreatePopMsg(Vector3.zero, "绝望的量子强度被激活", new Color(0.98f, 0.26f, 0.26f), 30);
                        }
                        else
                        {
                            AlertCtrl.Show("银子不足!");
                        }
                    });
                }
                break;

            default:
                break;
            }
        }
Beispiel #27
0
        /// <summary>
        /// 记录进入的城镇
        /// </summary>
        /// <param name="areaName">Area name.</param>
        public void CheckEnterCity(string cityId)
        {
            SceneData scene = JsonManager.GetInstance().GetMapping <SceneData>("Scenes", cityId);

            //战斗据点不处理任何增加数据
            if (scene.IsJustFightScene)
            {
                return;
            }
            //非战斗城镇才需要检测各项数据
            if (!scene.IsJustFightScene)
            {
                //检测是否有新的可以招募的侠客
                CheckNewRoleIdsOfWinShop(cityId);
                //初始化用于判定新增结识侠客的id列表
                CreateRoleIdOfWinShopNewFlagList();
                //检测工坊是否有新的生产单元
                CheckNewWorkshopItems(cityId);
                //检测是否有新的可以打造的兵器
                CheckNewWeaponIdsOfWorkshop(cityId);
                //初始化用于判定新增锻造兵器的id列表
                CreateWeaponIdOfWorkShopNewFlagList();
                //检测是否发现新的秘籍
                CheckNewBooksOfForbiddenArea(cityId);
                //初始化用于判定秘境中新增秘籍的id列表
                CreateBookIdOfCurrentForbiddenAreaNewFlagList(cityId);
                //将背包里的辎重箱资源存入工坊
                BringResourcesToWorkshop();
            }
            string addDataMsg = "";

            db = OpenDb();
            SqliteDataReader sqReader;

            //处理新的家丁数
            //兼容老版本
            if (GetMaxWorkerNum() == 0)
            {
                sqReader = db.ExecuteQuery("select WorkerNum, MaxWorkerNum from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'");
                if (sqReader.Read())
                {
                    int oldWorkerNum    = sqReader.GetInt32(sqReader.GetOrdinal("WorkerNum"));
                    int oldMaxWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("MaxWorkerNum"));
                    SetMaxWorkerNum(oldMaxWorkerNum);
                    SetWorkerNum(oldWorkerNum);
                }
            }
            sqReader = db.ExecuteQuery("select Id from EnterCityTable where CityId = '" + cityId + "' and BelongToRoleId = '" + currentRoleId + "'");
            if (!sqReader.HasRows)
            {
                db.ExecuteQuery("insert into EnterCityTable (CityId, BelongToRoleId) values('" + cityId + "', '" + currentRoleId + "')");
                //根据开启的城镇数计算工坊的家丁数上限和干粮上限
                sqReader = db.ExecuteQuery("select count(*) as num from EnterCityTable where BelongToRoleId = '" + currentRoleId + "'");
                int num            = 0;
                int maxWorkerNum   = 0;
                int areaFoodMaxNum = 0;
                if (sqReader.Read())
                {
                    num = sqReader.GetInt32(sqReader.GetOrdinal("num"));
                    //新到一个城镇会增加5个家丁
                    maxWorkerNum = Mathf.Clamp(GetPlusWorkerNum() + 10 + num * 5, 15, 500 + GetPlusWorkerNum()); //上限500
                    //新到一个城镇会增加10个干粮上限
                    areaFoodMaxNum = Mathf.Clamp(30 + num * 10, 30, 600);                                        //上限600
                    if (cityId != "00001")
                    {
                        //新手村不提示这个
                        if (maxWorkerNum < (500 + GetPlusWorkerNum()))
                        {
                            addDataMsg += string.Format("家丁上限增加5, 总数:{0}", maxWorkerNum);
                        }
                        if (areaFoodMaxNum < 600)
                        {
                            addDataMsg += string.Format("\n可携带干粮上限增加10, 总数:{0}", areaFoodMaxNum);
                        }
                    }
                }
                if (maxWorkerNum > 0)
                {
                    sqReader = db.ExecuteQuery("select Id, WorkerNum, MaxWorkerNum from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'");
                    if (sqReader.Read())
                    {
                        int id = sqReader.GetInt32(sqReader.GetOrdinal("Id"));
//						int oldWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("WorkerNum"));
//						int oldMaxWorkerNum = sqReader.GetInt32(sqReader.GetOrdinal("MaxWorkerNum"));
                        int oldWorkerNum    = GetWorkerNum();
                        int oldMaxWorkerNum = GetMaxWorkerNum();
                        if (oldMaxWorkerNum < maxWorkerNum)
                        {
                            //累加空闲家丁,更新家丁上限
                            db.ExecuteQuery("update WorkshopResourceTable set WorkerNum = " + (oldWorkerNum + (maxWorkerNum - oldMaxWorkerNum)) + ", MaxWorkerNum = " + maxWorkerNum + " where Id = '" + id + "'");
                            SetMaxWorkerNum(maxWorkerNum);
                            SetWorkerNum((oldWorkerNum + (maxWorkerNum - oldMaxWorkerNum)));
                        }
                    }
                }
                if (areaFoodMaxNum > 0)
                {
                    sqReader = db.ExecuteQuery("select Id, Data from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'");
                    if (sqReader.Read())
                    {
                        UserData user = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data")));
                        user.AreaFood.MaxNum = areaFoodMaxNum;
                        db.ExecuteQuery("Update UserDatasTable set Data = '" + JsonManager.GetInstance().SerializeObjectDealVector(user) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                        if (UserModel.CurrentUserData != null)
                        {
                            UserModel.CurrentUserData.AreaFood.MaxNum = user.AreaFood.MaxNum;
                        }
                    }
                }
                switch (cityId)
                {
                case "0002":     //临安集市
                case "1001":     //观前街
                case "2002":     //归云庄
                case "6001":     //金国领地
                    sqReader = db.ExecuteQuery("select Id, Data from UserDatasTable where BelongToRoleId = '" + currentRoleId + "'");
                    if (sqReader.Read())
                    {
                        UserData user = JsonManager.GetInstance().DeserializeObject <UserData>(sqReader.GetString(sqReader.GetOrdinal("Data")));
                        user.MaxRoleNum = Mathf.Clamp(user.MaxRoleNum + 1, 2, 6);
                        db.ExecuteQuery("Update UserDatasTable set Data = '" + JsonManager.GetInstance().SerializeObjectDealVector(user) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                        if (UserModel.CurrentUserData != null)
                        {
                            UserModel.CurrentUserData.MaxRoleNum = user.MaxRoleNum;
                            if (addDataMsg != "")
                            {
                                addDataMsg += "\n";
                            }
                            addDataMsg += string.Format("侠客上限增加1, 总数:{0}", user.MaxRoleNum);
                        }
                    }
                    break;

                default:
                    break;
                }
            }
            db.CloseSqlConnection();
            if (!string.IsNullOrEmpty(addDataMsg))
            {
                AlertCtrl.Show(addDataMsg);
            }
        }
Beispiel #28
0
        /// <summary>
        /// Scenes the notify init.
        /// </summary>
        public static void RoleNotifyInit()
        {
            Messenger.AddListener <bool>(NotifyTypes.CallRoleInfoPanelData, (isfighting) => {
                DbManager.Instance.CallRoleInfoPanelData(isfighting);
            });

            Messenger.AddListener <JObject, bool>(NotifyTypes.CallRoleInfoPanelDataEcho, (obj, isfighting) => {
//                RoleInfoPanelCtrl.Show((JArray)obj["data"], isfighting);
                RolesInfoPanelCtrl.Show((JArray)obj["data"]);
                if (!isfighting)
                {
                    Messenger.Broadcast(NotifyTypes.ShowTaskBtnPanel);
                }
            });

            Messenger.AddListener(NotifyTypes.HideRoleInfoPanel, () => {
//                RoleInfoPanelCtrl.MoveDown();
                RolesInfoPanelCtrl.MoveDown();
                Messenger.Broadcast(NotifyTypes.HideTaskBtnPanel);
            });

            Messenger.AddListener(NotifyTypes.MakeRoleInfoPanelRedPointRefresh, () => {
                RolesInfoPanelCtrl.MakeRefreshRedPoint();
            });

            Messenger.AddListener(NotifyTypes.MakeReviewRole, () => {
                RolesInfoPanelCtrl.MakeReviewRole();
            });

            Messenger.AddListener <bool>(NotifyTypes.MakeChangeRoleEnable, (enable) => {
                RoleInfoPanelCtrl.MakeChangeRoleEnable(enable);
            });

            Messenger.AddListener <bool>(NotifyTypes.MakeChangeBookEnable, (enable) => {
                RoleInfoPanelCtrl.MakeChangeBookEnable(enable);
            });

            Messenger.AddListener <bool>(NotifyTypes.MakeRoleInfoPanelDisable, (dis) => {
                RoleInfoPanelCtrl.MakeDisable(dis);
            });

            Messenger.AddListener <string>(NotifyTypes.GetRolesOfWinShopPanelData, (cityId) => {
                DbManager.Instance.GetRolesOfWinShopPanelData(cityId);
            });

            Messenger.AddListener <List <RoleData> >(NotifyTypes.GetRolesOfWinShopPanelDataEcho, (roles) => {
                roles.Sort((a, b) => b.Id.CompareTo(a.Id));
                RolesOfWinShopPanelCtrl.Show(roles);
            });

            Messenger.AddListener(NotifyTypes.GetWeaponsListPanelData, () => {
                DbManager.Instance.GetWeaponsListPanelData();
            });

            Messenger.AddListener <List <WeaponData>, RoleData>(NotifyTypes.GetWeaponsListPanelDataEcho, (weapons, host) => {
                WeaponListPanelCtrl.Show(weapons, host);
            });

            Messenger.AddListener <int, string>(NotifyTypes.ReplaceWeapon, (id, beUsingByRoleId) => {
                DbManager.Instance.ReplaceWeapon(id, beUsingByRoleId);
            });

            Messenger.AddListener <int>(NotifyTypes.TakeOffWeapon, (id => {
                DbManager.Instance.TakeOffWeapon(id);
                SoundManager.GetInstance().PushSound("ui0008");
            }));

            Messenger.AddListener(NotifyTypes.GetBooksListPanelData, () => {
                DbManager.Instance.GetBooksListPanelData();
            });

            Messenger.AddListener <List <BookData> >(NotifyTypes.GetBooksListPanelDataEcho, (books) => {
                BookListPanelCtrl.Show(books);
            });

            Messenger.AddListener <int>(NotifyTypes.UseBook, (id => {
                DbManager.Instance.UseBook(id);
            }));

            Messenger.AddListener <int>(NotifyTypes.UnuseBook, (id => {
                DbManager.Instance.UnuseBook(id);
                SoundManager.GetInstance().PushSound("ui0008");
            }));

            Messenger.AddListener <string>(NotifyTypes.GetBooksOfForbiddenAreaPanelData, (cityId) => {
                DbManager.Instance.GetBooksOfForbiddenAreaPanelData(cityId);
            });

            Messenger.AddListener <List <BookData>, RoleData>(NotifyTypes.GetBooksOfForbiddenAreaPanelDataEcho, (books, host) => {
                BooksOfForbiddenAreaPanelCtrl.Show(books, host);
            });

            Messenger.AddListener <int>(NotifyTypes.InviteRole, (id) => {
//                DbManager.Instance.InviteRole(id);
                DbManager.Instance.InviteRoleWithResources(id);
            });

            Messenger.AddListener <int>(NotifyTypes.ReadBook, (id => {
                DbManager.Instance.ReadBook(id);
            }));

            Messenger.AddListener(NotifyTypes.GetReadyToTravelPanelData, () => {
                DbManager.Instance.GetReadyToTravelPanelData();
            });

            Messenger.AddListener <List <RoleData>, UserData>(NotifyTypes.GetReadyToTravelPanelDataEcho, (roles, user) => {
                Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel);
                roles.Sort(sortReadyToTravelRoles);
                ReadyToTravelPanelCtrl.Show(roles, user);
            });

            Messenger.AddListener <RoleData>(NotifyTypes.MakeSelectRoleInTeam, (role) => {
                ReadyToTravelPanelCtrl.MakeSelectRole(role);
            });

            Messenger.AddListener <RoleData>(NotifyTypes.MakeUnSelectRoleInTeam, (role) => {
                ReadyToTravelPanelCtrl.MakeUnSelectRole(role);
            });

            Messenger.AddListener <JArray>(NotifyTypes.ChangeRolesSeatNo, (ids) => {
                DbManager.Instance.ChangeRolesSeatNo(ids);
            });

            Messenger.AddListener(NotifyTypes.EnterAreaFromCity, () => {
                Messenger.Broadcast(NotifyTypes.HideCityScenePanel);
                Messenger.Broadcast(NotifyTypes.FromCitySceneBackToArea);
                Messenger.Broadcast(NotifyTypes.CallAreaMainPanelData);
                ReadyToTravelPanelCtrl.Hide();
            });

            Messenger.AddListener(NotifyTypes.GetHospitalPanelData, () => {
                DbManager.Instance.GetHospitalPanelData();
            });

            Messenger.AddListener <List <RoleData> >(NotifyTypes.GetHospitalPanelDataEcho, (roles) => {
                roles.Sort((a, b) => b.Injury.CompareTo(a.Injury));
                HospitalPanelCtrl.Show(roles);
            });

            Messenger.AddListener <int>(NotifyTypes.CureRole, (id => {
                DbManager.Instance.CureRole(id);
            }));

            Messenger.AddListener(NotifyTypes.RelieveRoles, () => {
                DbManager.Instance.RelieveRoles();
            });

            Messenger.AddListener(NotifyTypes.GetBagPanelData, () => {
                DbManager.Instance.GetBagPanelData();
            });

            Messenger.AddListener <List <ItemData>, double>(NotifyTypes.GetBagPanelDataEcho, (items, silver) => {
                BagPanelCtrl.Show(items, silver);
            });

            Messenger.AddListener <ItemData, bool>(NotifyTypes.ShowItemDetailPanel, (item, fromBag) => {
                ItemDetailPanelCtrl.Show(item, fromBag);
            });

            Messenger.AddListener(NotifyTypes.GetSellItemsPanelData, () => {
                DbManager.Instance.GetSellItemsPanelData();
            });

            Messenger.AddListener <List <ItemData> >(NotifyTypes.GetSellItemsPanelDataEcho, (items) => {
                SellItemsPanelCtrl.Show(items);
            });

            Messenger.AddListener(NotifyTypes.MakeSelectedItemOfSellItemsPanel, () => {
                SellItemsPanelCtrl.MakeSelectedItem();
            });

            Messenger.AddListener <JArray>(NotifyTypes.SellItems, (ids) => {
                DbManager.Instance.SellItems(ids);
            });

            Messenger.AddListener <double>(NotifyTypes.SellItemsEcho, (silver) => {
                SellItemsPanelCtrl.Hide();
                StorePanelCtrl.MakeChangeSilverNum(silver);
                SoundManager.GetInstance().PushSound("ui0005");
            });

            Messenger.AddListener <int>(NotifyTypes.DiscardItem, (id) => {
                DbManager.Instance.DiscardItem(id);
                SoundManager.GetInstance().PushSound("ui0008");
            });

            Messenger.AddListener <BookData>(NotifyTypes.ShowBookDetailPanel, (book) => {
                BookDetailPanelCtrl.Show(book, DbManager.Instance.GetBookExpAndSecrets(book.Id));
            });

            Messenger.AddListener <WeaponData>(NotifyTypes.ShowWeaponDetailPanel, (weapon) => {
                WeaponDetailPanelCtrl.Show(weapon, DbManager.Instance.GetWeaponLV(weapon.Id));
            });

            Messenger.AddListener <WeaponData>(NotifyTypes.WeaponLVUpgrade, (weapon) => {
                DbManager.Instance.WeaponLVUpgrade(weapon);
            });

            Messenger.AddListener <WeaponLVData>(NotifyTypes.WeaponLVUpgradeEcho, (lvData) => {
                WeaponDetailPanelCtrl.WeaponLVUpgrade(lvData);
            });

            Messenger.AddListener <RoleData>(NotifyTypes.ShowRoleDetailPanel, (role) => {
                RoleDetailPanelCtrl.Show(role, DbManager.Instance.GetSecretsBelongBooks(role.ResourceBookDataIds));
            });

            Messenger.AddListener <List <DropData> >(NotifyTypes.ShowDropsListPanel, (drops) => {
                DropsListPanelCtrl.Show(drops);
                SoundManager.GetInstance().PushSound("ui0004");
            });

            Messenger.AddListener <int>(NotifyTypes.UseItem, (id => {
                DbManager.Instance.UseItem(id);
            }));

            Messenger.AddListener <string>(NotifyTypes.GetInnInCityData, (cityId) => {
                DbManager.Instance.GetInnInCityData(cityId);
            });

            Messenger.AddListener <List <FloydResult> >(NotifyTypes.GetInnInCityDataEcho, (results) => {
                InnPanelCtrl.Show(results);
            });

            Messenger.AddListener <int, int>(NotifyTypes.GoToCity, (fromIndex, toIndex) => {
                DbManager.Instance.GoToCity(fromIndex, toIndex);
            });

            Messenger.AddListener <SceneData>(NotifyTypes.GoToCityEcho, (scene) => {
                string eventId = JsonManager.GetInstance().GetMapping <string>("AreaCityPosDatas", scene.Id);
                string[] fen   = eventId.Split(new char[] { '_' });
                if (fen.Length >= 3)
                {
                    string areaName = fen[0];
                    int x           = int.Parse(fen[1]);
                    int y           = int.Parse(fen[2]);
                    if (UserModel.CurrentUserData != null)
                    {
                        CityScenePanelCtrl.MakeClose();
                        InnPanelCtrl.Hide();
                        UserModel.CurrentUserData.PositionStatu        = UserPositionStatusType.InCity;
                        UserModel.CurrentUserData.CurrentCitySceneId   = scene.Id;
                        UserModel.CurrentUserData.CurrentAreaSceneName = areaName;
                        UserModel.CurrentUserData.CurrentAreaX         = x;
                        UserModel.CurrentUserData.CurrentAreaY         = y;
                        //清空临时事件
                        Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, new List <SceneEventType>()
                        {
                            SceneEventType.DisablePagoda
                        });
                        Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, null);
                        Messenger.Broadcast <string>(NotifyTypes.GoToScene, areaName);
                    }
                }
            });

            Messenger.AddListener <string>(NotifyTypes.NpcsEventHandler, (npcId) => {
                switch (npcId)
                {
                case "05002001":
                    if (DbManager.Instance.HostData.Occupation == OccupationType.None)
                    {
                        if (!DbManager.Instance.HasAnyTask((new List <string>()
                        {
                            "task_occupation0",
                            "task_occupation1",
                            "task_occupation2",
                            "task_occupation3",
                            "task_occupation4",
                            "task_occupation5"
                        }).ToArray()))
                        {
                            OccupationPanelCtrl.Show();
                        }
                        else
                        {
                            AlertCtrl.Show("去吧去吧,老夫已为你做了引荐");
                        }
                    }
                    else
                    {
                        AlertCtrl.Show(string.Format("你已是{0},可喜可贺啊,哦哈哈哈哈", Statics.GetOccupationDesc(DbManager.Instance.HostData.Occupation)));
                    }
                    break;

                default:
                    break;
                }
            });

            Messenger.AddListener <int>(NotifyTypes.HostRoleUpgrade, (toLv) => {
                DbManager.Instance.HostRoleUpgrade(toLv);
            });

            Messenger.AddListener <RoleData, RoleData>(NotifyTypes.HostRoleUpgradeEcho, (roleData, toData) => {
                RoleUpgradeLvPanelCtrl.Show(roleData, toData);
                SoundManager.GetInstance().PushSound("ui0002");
            });

            Messenger.AddListener(NotifyTypes.OpenRepairBugPanel, () => {
                RepairBugPanelCtrl.Show();
            });

            Messenger.AddListener <BookData, List <SecretData> >(NotifyTypes.GetSecretListPanelData, (book, hasSecrets) => {
                SecretListPanelCtrl.Show(DbManager.Instance.GetEffectiveSecrets(), book, hasSecrets);
            });

            Messenger.AddListener <BookData, List <SecretData> >(NotifyTypes.DealSecretEcho, (book, hasSecrets) => {
                if (RolesInfoPanelCtrl.Ctrl != null)
                {
                    Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false);
                    Messenger.Broadcast(NotifyTypes.MakeReviewRole);
                }
                Messenger.Broadcast <BookData>(NotifyTypes.ShowBookDetailPanel, book);
                Messenger.Broadcast <BookData, List <SecretData> >(NotifyTypes.GetSecretListPanelData, book, hasSecrets);
            });

            Messenger.AddListener(NotifyTypes.OpenTowerGuiderPanel, () => {
                TowerGuiderPanelCtrl.Show();
                AreaMainPanelCtrl.MakeRefreshDifficultyView();
            });
        }
Beispiel #29
0
        /// <summary>
        /// 购买物品
        /// </summary>
        /// <param name="itemId">Item identifier.</param>
        /// <param name="num">Number.</param>
        public void BuyItem(string itemId, int num = 1)
        {
            ModifyResources();
            ItemData item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId);
            //单次购买的数量不能超出物品叠加上限
            int    startNum  = num <= item.MaxNum ? num : item.MaxNum;
            int    itemNum   = startNum;
            double silverNum = 0;

            db = OpenDb();
            //查询背包是否已满
            SqliteDataReader sqReader      = db.ExecuteQuery("select count(*) as num from BagTable where BelongToRoleId = '" + currentRoleId + "'");
            bool             enoughBagSeat = false;
            bool             enoughMoney   = false;
            string           msg           = "";

            if (sqReader.Read())
            {
                if (sqReader.GetInt32(sqReader.GetOrdinal("num")) < MaxItemNumOfBag)
                {
                    enoughBagSeat = true;
                }
            }
            if (enoughBagSeat)
            {
                sqReader = db.ExecuteQuery("select Id, ResourcesData from WorkshopResourceTable where BelongToRoleId = '" + currentRoleId + "'");
                List <ResourceData> resources = null;
                if (sqReader.Read())
                {
                    resources = JsonManager.GetInstance().DeserializeObject <List <ResourceData> >(sqReader.GetString(sqReader.GetOrdinal("ResourcesData")));
                    //查询目前的银子余额
                    ResourceData resource = resources.Find(re => re.Type == ResourceType.Silver);
                    if (resource != null)
                    {
                        if (resource.Num >= item.BuyPrice * itemNum)
                        {
                            enoughMoney   = true;
                            resource.Num -= (item.BuyPrice * itemNum);
                            //扣钱
                            db.ExecuteQuery("update WorkshopResourceTable set ResourcesData = '" + JsonManager.GetInstance().SerializeObject(resources) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                            silverNum = resource.Num;
                        }
                    }
                }

                //背包未满
                if (enoughMoney)
                {
                    //银子够买
                    //查询背包里是否有物品以及物品的数量是否达到上限
                    sqReader = db.ExecuteQuery("select * from BagTable where ItemId = '" + itemId + "' and Num < MaxNum and BelongToRoleId = '" + currentRoleId + "'");
                    if (!sqReader.HasRows)
                    {
                        //添加新的物品
                        db.ExecuteQuery("insert into BagTable (ItemId, Type, Num, MaxNum, Lv, BelongToRoleId) values('" + itemId + "', " + ((int)item.Type) + ", " + itemNum + ", " + item.MaxNum + ", " + item.Lv + ", '" + currentRoleId + "')");
                    }
                    else
                    {
                        int itemDataNum;
                        int itemDataMaxNum;
                        int addNum;
                        //修改以后物品的数量
                        while (sqReader.Read() && itemNum > 0)
                        {
                            itemDataNum    = sqReader.GetInt32(sqReader.GetOrdinal("Num"));
                            itemDataMaxNum = sqReader.GetInt32(sqReader.GetOrdinal("MaxNum"));
                            addNum         = (itemDataMaxNum - itemDataNum) <= itemNum ? (itemDataMaxNum - itemDataNum) : itemNum;
                            itemNum       -= addNum;
                            db.ExecuteQuery("update BagTable set Num = " + (itemDataNum + addNum) +
                                            " where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                        }
                        //对已有物品进行累加后还有剩余数量,则这个数量全部新增为新物品
                        if (itemNum > 0)
                        {
                            db.ExecuteQuery("insert into BagTable (ItemId, Type, Num, MaxNum, Lv, BelongToRoleId) values('" + itemId + "', " + ((int)item.Type) + ", " + itemNum + ", " + item.MaxNum + ", " + item.Lv + ", '" + currentRoleId + "')");
                        }
                    }
                }
            }
            db.CloseSqlConnection();
            if (!enoughBagSeat)
            {
                AlertCtrl.Show("行囊已满,不能携带更多的物品!");
            }
            else if (!enoughMoney)
            {
                AlertCtrl.Show("银子不够!\n(<color=\"#00FF00\">工坊中可以赚取银子</color>)");
            }
            else
            {
                msg = string.Format("<color=\"#1ABDE6\">{0}</color>+{1}", item.Name, startNum);
                Messenger.Broadcast <string, double>(NotifyTypes.BuyItemEcho, msg, silverNum);
            }
        }
Beispiel #30
0
        /// <summary>
        /// 使用物品
        /// </summary>
        /// <param name="Id">Identifier.</param>
        public void UseItem(int id)
        {
            db = OpenDb();
            string           itemId   = "";
            ItemType         type     = ItemType.None;
            int              num      = 0;
            SqliteDataReader sqReader = db.ExecuteQuery("select ItemId, Type, Num from BagTable where Id = " + id);

            if (sqReader.Read())
            {
                itemId = sqReader.GetString(sqReader.GetOrdinal("ItemId"));
                type   = (ItemType)sqReader.GetInt32(sqReader.GetOrdinal("Type"));
                num    = sqReader.GetInt32(sqReader.GetOrdinal("Num"));
            }
            db.CloseSqlConnection();
            if (type != ItemType.None && num > 0)
            {
                ItemData item;
                switch (type)
                {
                case ItemType.Food:
                    Eat(id, num);
                    break;

                case ItemType.Weapon:
                    item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId);
                    if (AddNewWeapon(item.StringValue, ""))
                    {
                        WeaponData weapon = JsonManager.GetInstance().GetMapping <WeaponData>("Weapons", item.StringValue);
                        Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(weapon.Quality), weapon.Name), Color.white, 30);

                        //删除兵器盒
                        db = OpenDb();
                        db.ExecuteQuery("delete from BagTable where Id = " + id);
                        db.CloseSqlConnection();
                        //重新加载背包数据
                        GetBagPanelData();
                    }
                    else
                    {
                        AlertCtrl.Show("兵器匣已满,请先整理兵器匣");
                    }
                    break;

                case ItemType.Book:
                    item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId);
                    BookData book = JsonManager.GetInstance().GetMapping <BookData>("Books", item.StringValue);
                    if (AddNewBook(item.StringValue, ""))
                    {
                        Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(book.Quality), book.Name), Color.white, 30);

                        //删除秘籍盒
                        db = OpenDb();
                        db.ExecuteQuery("delete from BagTable where Id = " + id);
                        db.CloseSqlConnection();
                        //重新加载背包数据
                        GetBagPanelData();
                    }
                    else
                    {
                        AlertCtrl.Show(string.Format("你已经习得<color=\"{0}\">{1}</color>, 无需再研读", Statics.GetQualityColorString(book.Quality), book.Name));
                    }
                    break;

                default:
                    AlertCtrl.Show("该物品不可使用!");
                    break;
                }
            }
        }