コード例 #1
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");
            }
        }
コード例 #2
0
        public void UpdateData(BookData book, RoleData host)
        {
            bookData     = book;
            hostRoleData = host;
            costStr      = "";
            CostData cost;

            for (int i = 0; i < bookData.Needs.Count; i++)
            {
                cost     = bookData.Needs[i];
                costStr += string.Format("{0}张{1} ", cost.Num, JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", cost.Id).Name);
            }
        }
コード例 #3
0
        void sendUnUseBook(int index)
        {
            BookData book = booksData[index];

            Messenger.Broadcast <int>(NotifyTypes.UnuseBook, book.PrimaryKeyId);
            if (!book.IsMindBook && !book.IsLostKnowledge)
            {
                //卸下秘籍的同时要清除掉心法
                List <BookData> equipedBooks = booksData.FindAll(item => item.IsMindBook && item.BeUsingByRoleId != "");
                for (int i = equipedBooks.Count - 1; i >= 0; i--)
                {
                    Messenger.Broadcast <int>(NotifyTypes.UnuseBook, equipedBooks[i].PrimaryKeyId);
                }
            }
        }
コード例 #4
0
        public void UpdateData(List <SecretData> secrets, BookData book, List <SecretData> hasSecrets)
        {
            secretsData    = secrets;
            bookData       = book;
            hasSecretsData = hasSecrets;
            if (hasSecretsData != null)
            {
                secretsData.Sort((a, b) => b.Quality.CompareTo(a.Quality));
                secretsData.InsertRange(0, hasSecretsData);
            }
            else
            {
                //排序,能融合的排前面,之后按品质倒序排列
                secretsData.Sort((a, b) =>
                {
                    List <SecretData> sameSecretsA = secretsData.FindAll(sec => sec.Type == a.Type && sec.Quality == a.Quality);
                    List <SecretData> sameSecretsB = secretsData.FindAll(sec => sec.Type == b.Type && sec.Quality == b.Quality);

                    if (sameSecretsA.Count >= 2)
                    {
                        if (sameSecretsB.Count >= 2)
                        {
                            return(b.Quality.CompareTo(a.Quality));
                        }
                        else
                        {
                            return(-1);
                        }
                    }
                    else
                    {
                        if (sameSecretsB.Count >= 2)
                        {
                            return(1);
                        }
                        else
                        {
                            return(b.Quality.CompareTo(a.Quality));
                        }
                    }
                });
            }
        }
コード例 #5
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);
            }
        }
コード例 #6
0
ファイル: BookItemContainer.cs プロジェクト: mengtest/MyWuXia
 public void UpdateData(BookData book)
 {
     bookData = book;
     bookData.MakeJsonToModel();
 }
コード例 #7
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;
                }
            }
        }
コード例 #8
0
 public void UpdateData(BookData book)
 {
     bookData = book;
     info     = "";
     if (bookData.MaxHPPlus != 0)
     {
         info += string.Format("最大气血:{0}", (bookData.MaxHPPlus > 0 ? "+" : "") + bookData.MaxHPPlus.ToString());
     }
     if (bookData.PhysicsDefensePlus != 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("外防:{0}", (bookData.PhysicsDefensePlus > 0 ? "+" : "") + bookData.PhysicsDefensePlus.ToString());
     }
     if (bookData.MagicAttackPlus != 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("内功:{0}", (bookData.MagicAttackPlus > 0 ? "+" : "") + bookData.MagicAttackPlus.ToString());
     }
     if (bookData.MagicDefensePlus != 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("内防:{0}", (bookData.MagicDefensePlus > 0 ? "+" : "") + bookData.MagicDefensePlus.ToString());
     }
     if (bookData.DodgePlus != 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("轻功:{0}", (bookData.DodgePlus > 0 ? "+" : "") + bookData.DodgePlus.ToString());
     }
     if (bookData.HurtCutRatePlus != 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("减伤:{0}%", (bookData.HurtCutRatePlus > 0 ? "+" : "") + (bookData.HurtCutRatePlus * 100).ToString());
     }
     if (bookData.DrugResistance > 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("中毒抵抗:持续{0}招", bookData.DrugResistance);
     }
     if (bookData.DisarmResistance > 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("缴械抵抗:持续{0}招", bookData.DisarmResistance);
     }
     if (bookData.CanNotMoveResistance > 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("定身抵抗:持续{0}招", bookData.CanNotMoveResistance);
     }
     if (bookData.VertigoResistance > 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("眩晕抵抗:持续{0}招", bookData.VertigoResistance);
     }
     if (bookData.SlowResistance > 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("迟缓抵抗:持续{0}招", bookData.SlowResistance);
     }
     if (bookData.ChaosResistance > 0)
     {
         info += info == "" ? "" : "\n";
         info += string.Format("混乱抵抗:持续{0}招", bookData.ChaosResistance);
     }
 }
コード例 #9
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:
                    if (UserModel.CurrentUserData.PositionStatu == UserPositionStatusType.InArea)
                    {
                        Eat(id, num);
                        SoundManager.GetInstance().PushSound("ui0004");
                    }
                    else
                    {
                        AlertCtrl.Show("野外闯荡江湖时才能吃干粮");
                    }
                    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();
                        SoundManager.GetInstance().PushSound("ui0004");
                    }
                    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();
                        SoundManager.GetInstance().PushSound("ui0004");
                    }
                    else
                    {
                        AlertCtrl.Show(string.Format("你已经习得<color=\"{0}\">{1}</color>, 无需再研读", Statics.GetQualityColorString(book.Quality), book.Name));
                    }
                    break;

                case ItemType.RandomSecre:     //打开随机诀要锦囊
                    item     = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", itemId);
                    db       = OpenDb();
                    sqReader = db.ExecuteQuery("select count(*) as num from BookSecretsTable where BelongToRoleId = '" + currentRoleId + "'");
                    bool isSecretsFull = false;
                    if (sqReader.Read())
                    {
                        isSecretsFull = sqReader.GetInt32(sqReader.GetOrdinal("num")) >= MaxSecretNumOfBag;
                    }
                    if (!isSecretsFull)
                    {
                        //添加新的诀要
                        SecretData secret = Statics.CreateNewSecret(Statics.GetRandomSecretType(item.StringValue), QualityType.White);
                        db.ExecuteQuery("insert into BookSecretsTable (SecretData, T, Q, BelongToBookId, BelongToRoleId) values('" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(secret)) + "', " + ((short)secret.Type) + ", " + ((short)secret.Quality) + ", '', '" + currentRoleId + "')");
                        PlayerPrefs.SetString("AddedNewBookFlag", "true");
                        PlayerPrefs.SetString("AddedNewSecretFlag", "true");
                        Messenger.Broadcast(NotifyTypes.MakeRoleInfoPanelRedPointRefresh);
                        Statics.CreatePopMsg(Vector3.zero, string.Format("<color=\"{0}\">{1}</color>+1", Statics.GetQualityColorString(secret.Quality), secret.Name), Color.white, 30);
                        db.ExecuteQuery("delete from BagTable where Id = " + id);
                        db.CloseSqlConnection();
                        //重新加载背包数据
                        GetBagPanelData();
                        SoundManager.GetInstance().PushSound("ui0004");
                    }
                    else
                    {
                        AlertCtrl.Show(string.Format("诀要背包上限为{0},请先清理背包", MaxSecretNumOfBag));
                    }
                    break;

                default:
                    AlertCtrl.Show("该物品不可使用!");
                    break;
                }
            }
        }
コード例 #10
0
ファイル: BookDb.cs プロジェクト: mengtest/MyWuXia
        /// <summary>
        /// 研读秘籍
        /// </summary>
        /// <param name="id">Identifier.</param>
        public void ReadBook(int id)
        {
            bool     read = false;
            BookData book = null;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select BookId from BooksTable where Id = " + id);

            if (sqReader.Read())
            {
                book = JsonManager.GetInstance().GetMapping <BookData>("Books", sqReader.GetString(sqReader.GetOrdinal("BookId")));
                if (book.Occupation == OccupationType.None || book.Occupation == HostData.Occupation)
                {
                    bool     enough = true;
                    string   msg    = "";
                    CostData cost;
                    ItemData item;
                    //计算需要的物品是否足够
                    for (int i = 0; i < book.Needs.Count; i++)
                    {
                        cost     = book.Needs[i];
                        item     = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", cost.Id);
                        sqReader = db.ExecuteQuery("select Num from BagTable where ItemId = '" + cost.Id + "' and BelongToRoleId = '" + currentRoleId + "'");
                        if (sqReader.Read())
                        {
                            if (sqReader.GetInt32(sqReader.GetOrdinal("Num")) < cost.Num)
                            {
                                enough = false;
                                msg    = string.Format("行囊里的{0}不够", item.Name);
                                break;
                            }
                        }
                        else
                        {
                            enough = false;
                            msg    = string.Format("行囊里并不曾见过有{0}", item.Name);
                            break;
                        }
                    }

                    if (enough)
                    {
                        int num;
                        //扣除物品
                        for (int i = 0; i < book.Needs.Count; i++)
                        {
                            cost     = book.Needs[i];
                            sqReader = db.ExecuteQuery("select Id, Num from BagTable where ItemId = '" + cost.Id + "' and BelongToRoleId = '" + currentRoleId + "'");
                            if (sqReader.Read())
                            {
                                num = sqReader.GetInt32(sqReader.GetOrdinal("Num")) - cost.Num;
                                num = num < 0 ? 0 : num;
                                if (num > 0)
                                {
                                    db.ExecuteQuery("update BagTable set Num = " + num + " where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                                }
                                else
                                {
                                    db.ExecuteQuery("delete from BagTable where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
                                }
                            }
                        }
                        //研读秘籍
                        db.ExecuteQuery("update BooksTable set State = " + ((int)BookStateType.Read) + ", SeatNo = 888 where Id = " + id);
                        read = true;
                    }
                    else
                    {
                        AlertCtrl.Show(msg, null);
                    }
                }
                else
                {
                    AlertCtrl.Show(string.Format("非{0}弟子不得研习<color=\"{1}\">{2}</color>!", Statics.GetOccupationName(book.Occupation), Statics.GetQualityColorString(book.Quality), book.Name));
                }
            }
            db.CloseSqlConnection();
            if (read && book != null)
            {
                Statics.CreatePopMsg(Vector3.zero, string.Format("研读<color=\"{0}\">{1}</color>后使你武功精进!", Statics.GetQualityColorString(book.Quality), book.Name), Color.white, 30);
                GetBooksOfForbiddenAreaPanelData(book.BelongToCityId);
            }
        }
コード例 #11
0
ファイル: BookDb.cs プロジェクト: mengtest/MyWuXia
        /// <summary>
        /// 装备秘籍
        /// </summary>
        /// <param name="id">Identifier.</param>
        public void UseBook(int id)
        {
            //查询主角当前的兵器类型
            WeaponType hostWeaponType = GetHostWeaponType();

            db = OpenDb();
            //查询角色信息
            SqliteDataReader sqReader = db.ExecuteQuery("select RoleId, RoleData from RolesTable where RoleId = '" + currentRoleId + "' and BelongToRoleId = '" + currentRoleId + "'");
            int addIndex = -1;

            if (sqReader.Read())
            {
                string roleId = sqReader.GetString(sqReader.GetOrdinal("RoleId"));
                //获取角色数据
                RoleData role = JsonManager.GetInstance().DeserializeObject <RoleData>(sqReader.GetString(sqReader.GetOrdinal("RoleData")));
                sqReader = db.ExecuteQuery("select BookId, SeatNo from BooksTable where SeatNo >= 0 and State = " + ((int)BookStateType.Read) + " and BelongToRoleId = '" + currentRoleId + "'");
                List <string> resourceBookDataIds = new List <string>();
                List <int>    seatNos             = new List <int>()
                {
                    -1, -1, -1
                };
                int seatNo;
                while (sqReader.Read())
                {
                    seatNo = sqReader.GetInt32(sqReader.GetOrdinal("SeatNo"));
                    if (seatNos.Count > seatNo)
                    {
                        seatNos[seatNo] = seatNo;
                        resourceBookDataIds.Add(sqReader.GetString(sqReader.GetOrdinal("BookId")));
                    }
                }
                addIndex = seatNos.FindIndex(item => item == -1);
                if (addIndex >= 0)
                {
                    sqReader = db.ExecuteQuery("select BookId from BooksTable where Id = " + id);
                    if (sqReader.Read())
                    {
                        string   bookId   = sqReader.GetString(sqReader.GetOrdinal("BookId"));
                        BookData bookData = JsonManager.GetInstance().GetMapping <BookData>("Books", bookId);
                        if (bookData.LimitWeaponType == WeaponType.None || hostWeaponType == WeaponType.None || bookData.LimitWeaponType == hostWeaponType)
                        {
                            resourceBookDataIds.Add(bookId);
                            db.ExecuteQuery("update BooksTable set SeatNo = " + addIndex + ", BeUsingByRoleId = '" + currentRoleId + "' where Id = " + id);
                            //更新角色的秘籍信息
                            role.ResourceBookDataIds = resourceBookDataIds;
                            db.ExecuteQuery("update RolesTable set RoleData = '" + JsonManager.GetInstance().SerializeObjectDealVector(role) + "' where RoleId = '" + roleId + "'");
                        }
                        else
                        {
                            AlertCtrl.Show(string.Format("装备上[{0}]才能习练<color=\"{1}\">{2}</color>\n{3}", Statics.GetEnmuDesc <WeaponType>(bookData.LimitWeaponType), Statics.GetQualityColorString(bookData.Quality), bookData.Name, hostWeaponType != WeaponType.None ? ("你现在拿的是[" + Statics.GetEnmuDesc <WeaponType>(hostWeaponType) + "]") : "你现在手里没有任何兵器"), null);
                        }
                    }
                }
            }
            db.CloseSqlConnection();
            if (addIndex >= 0)
            {
                GetBooksListPanelData();
                CallRoleInfoPanelData(false);                 //刷新队伍数据
            }
            else
            {
                AlertCtrl.Show("最多只能同时习练3本秘籍!", null);
            }
        }
コード例 #12
0
 public void UpdateData(BookData book, ExpAndSecretData expAndSecret)
 {
     bookData = book;
     bookData.MakeJsonToModel();
     expAndSecretData = expAndSecret;
     info             = "";
     if (bookData.MaxHPPlus != 0)
     {
         info += string.Format("最大气血:{0}", (bookData.MaxHPPlus > 0 ? "+" : "") + bookData.MaxHPPlus.ToString());
     }
     if (bookData.PhysicsDefensePlus != 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("外防:{0}", (bookData.PhysicsDefensePlus > 0 ? "+" : "") + bookData.PhysicsDefensePlus.ToString());
     }
     if (bookData.MagicAttackPlus != 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("内功:{0}", (bookData.MagicAttackPlus > 0 ? "+" : "") + bookData.MagicAttackPlus.ToString());
     }
     if (bookData.MagicDefensePlus != 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("内防:{0}", (bookData.MagicDefensePlus > 0 ? "+" : "") + bookData.MagicDefensePlus.ToString());
     }
     if (bookData.DodgePlus != 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("轻功:{0}", (bookData.DodgePlus > 0 ? "+" : "") + bookData.DodgePlus.ToString());
     }
     if (bookData.HurtCutRatePlus != 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("减伤:{0}%", (bookData.HurtCutRatePlus > 0 ? "+" : "") + (bookData.HurtCutRatePlus * 100).ToString());
     }
     if (bookData.DrugResistance > 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("抗中毒:抵消{0}秒", bookData.DrugResistance);
     }
     if (bookData.DisarmResistance > 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("抗缴械:抵消{0}秒", bookData.DisarmResistance);
     }
     if (bookData.CanNotMoveResistance > 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("抗定身:抵消{0}秒", bookData.CanNotMoveResistance);
     }
     if (bookData.VertigoResistance > 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("抗眩晕:抵消{0}秒", bookData.VertigoResistance);
     }
     if (bookData.SlowResistance > 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("抗迟缓:抵消{0}秒", bookData.SlowResistance);
     }
     if (bookData.ChaosResistance > 0)
     {
         info += info == "" ? "" : ", ";
         info += string.Format("抗混乱:抵消{0}秒", bookData.ChaosResistance);
     }
     secretInfo = "";
     if (expAndSecretData.Secrets.Count > 0)
     {
         for (int i = 0, len = expAndSecretData.Secrets.Count; i < len; i++)
         {
             secretInfo += expAndSecretData.Secrets[i].GetDesc();
             if (i < len - 1)
             {
                 secretInfo += ", ";
             }
         }
     }
 }