Example #1
0
        /// <summary>
        /// 检测技能及其冷却时间
        /// </summary>
        /// <param name="skill">Skill</param>
        /// <returns>是否可释放</returns>
        private bool CheckSkill(ref SkillDetail skill)
        {
            // 没有该技能
            // 处于冷却时间
            if (!_skillColdTime.ContainsKey(skill))
            {
                EventCenter.Broadcast(EventManager.EventType.UpdateSystemEvent, "未匹配到该技能");
                return(false);
            }

            if (skill.skillType == SkillType.None)
            {
                EventCenter.Broadcast(EventManager.EventType.UpdateSystemEvent, "未匹配到该技能");
                return(false);
            }

            if (_skillColdTime[skill] > 0f)
            {
                if (Math.Abs(noticeSkillInColdTime) < 0.1)
                {
                    EventCenter.Broadcast(EventManager.EventType.UpdateSystemEvent, "技能处于冷却中");
                    noticeSkillInColdTime = DefaultNoticeSkillInColdTime;
                }

                return(false);
            }

            return(true);
        }
    public Skill getSkillByName(string name)
    {
        SkillDetail details = skillData.skills.Find(x => x.name == name);

        return(new Skill(details.name, details.description,
                         details.targetType, details.alias, details.conditions));
    }
Example #3
0
        public int Deleteskill(int id)
        {
            SkillDetail sd = md.SkillDetails.Find(id);

            md.SkillDetails.Remove(sd);
            md.SaveChanges();
            return(1);
        }
Example #4
0
        /// <summary>
        /// 尝试使用技能
        /// </summary>
        /// <param name="skill"></param>
        /// <returns></returns>
        public override bool TryUseSkill(SkillDetail skill)
        {
            if (skill.skillType == SkillType.None)
            {
                return(false);
            }

            Base.Actor actor = this;
            return(_skillManager.UseSkill(ref skill, ref actor));
        }
Example #5
0
        public SkillPack(SkillDetail dodgeSkill, SkillDetail wpSkill, SkillDetail displacementSkill,
                         IEnumerable <SkillDetail> skillDetails)
        {
            _dodgeSkill        = dodgeSkill;
            _wpSkill           = wpSkill;
            _displacementSkill = displacementSkill;

            this.skillDetails.Clear();
            this.skillDetails.AddRange(skillDetails);
        }
    private string CheckRecForUltimate(List <GameObject> list, SkillDetail progress)
    {
        string[] rows = currentSkill.Upgrade.Split("|" [0]);
        string   ult  = rows [3];

        string[] pos;
        try{
            pos = ult.Split("-"[0]);
        }catch {
            pos     = new string[0];
            pos [0] = ult;
        }
        List <int> positions = new List <int> ();

        for (int i = 0; i < pos.Length; i++)
        {
            int offset = 0;
            switch (pos [i])
            {
            case "1":
                positions.Add(progress.FirstRow.Count);
                break;

            case "2":
                offset = progress.FirstRow.Count;
                positions.Add(progress.SecondRow.Count + offset);
                break;

            case "3":
                offset = progress.FirstRow.Count + progress.SecondRow.Count;
                positions.Add(progress.ThirdRow.Count);
                break;
            }
        }
        string o = "";

        for (int i = 0; i < positions.Count; i++)
        {
            o = o + positions [i];
            if (i < positions.Count - 1)
            {
                o = o + "-";
            }
        }
        return(o);
    }
        /// <summary>
        /// Delete the detail from the db. The details are found via their ids and deleted from the ComapnyDetails table. They are then delete from the SkillDetail table
        /// </summary>
        /// <param name="selectedDetail"></param>
        /// <returns></returns>
        public async Task DeleteDetailFromDb(SkillDetail selectedDetail)
        {
            try
            {
                var tempDetail = _context.CompanyDetails.Where(d => d.SkillDetailId == selectedDetail.SkillDetailId).ToList();

                foreach (var detail in tempDetail)
                {
                    _context.CompanyDetails.RemoveRange(detail);
                }

                _context.SkillDetail.Remove(selectedDetail);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
        }
    public void SetDetail(SkillDetail detail)
    {
        string msg = "";

        msg += $"Damage : <color=#FF0000>{detail.Damage}</color> \n";

        string colorHex = (detail.DamageType == DamageType.PAtk) ? "FF0000" : "0000FF";

        msg += $"Damage Type : <color=#{colorHex}>{detail.DamageType}</color> \n";

        msg += $"Target Type : {detail.TargetTypestr}\n";
        msg += $"MoveToTarget : {detail.MoveToTarget} \n";
        msg += $"AOE : ({detail.AOE}*{detail.AOE}) \n";
        msg += $"Range : {detail.Range} \n";
        msg += $"CD : {detail.CD} \n";
        msg += $"Description : \n {detail.Description} \n";

        Description.text = msg;
        gameObject.SetActive(true);
        ani.Play("SkillDescriptionOnEnable", PlayMode.StopAll);
    }
Example #9
0
        /// <summary>
        /// 使用技能
        /// </summary>
        /// <param name="skill">技能类型</param>
        /// <param name="actor">Actor</param>
        /// <returns>是否释放成功</returns>
        public bool UseSkill(ref SkillDetail skill, ref Actor.Base.Actor actor)
        {
            if (!CheckSkill(ref skill))
            {
                return(false);
            }

            EventCenter.Broadcast(EventManager.EventType.UpdateSystemEvent, actor.actorType + " use skill: " + skill.skillName);

            UiManager.Instance.skillBarUi.skillBoxes[skill.GetIndex()].EnableMask();

            // 释放技能
            _skillImp.UseSkill(ref skill);

            // 计入冷却时间
            _needColdDown.Add(skill);

            // 设定冷却时间
            _skillColdTime[skill] = skill.coldDownTime;

            return(true);
        }
Example #10
0
    public void UpdateStats(SkillDetail sd)
    {
        Debug.Log(this.Name + " updated");
        int upgradecount = 0;

        for (int i = 0; i < sd.FirstRow.Count; i++)
        {
            if (sd.FirstRow [i] > 0)
            {
                ApplyStats(this.UpgradeDetails [upgradecount], sd.FirstRow [i]);
            }
            upgradecount++;
        }

        for (int i = 0; i < sd.SecondRow.Count; i++)
        {
            if (sd.SecondRow [i] > 0)
            {
                ApplyStats(this.UpgradeDetails [upgradecount], sd.SecondRow [i]);
            }
            upgradecount++;
        }
        for (int i = 0; i < sd.ThirdRow.Count; i++)
        {
            if (sd.ThirdRow [i] > 0)
            {
                ApplyStats(this.UpgradeDetails [upgradecount], sd.ThirdRow [i]);
            }
            upgradecount++;
        }

        if (sd.Ultimate > 0)
        {
            ApplyStats(this.UpgradeDetails [upgradecount], sd.Ultimate);
        }
        MakeDescription();
    }
Example #11
0
 /// <summary>
 ///     调用状态机以使用技能
 /// </summary>
 /// <param name="skill">技能细节</param>
 public void UseSkill(ref SkillDetail skill)
 {
     _fsm.ChangeState(skill.skillType, StateTransition.Overwrite);
 }
    public void ApplySkillTreeProgress(List <GameObject> list)
    {
        SkillDetail progress = null;

        foreach (SkillDetail s in currentCharacter.SkillOverview.skills.ToArray())
        {
            if (s.ID == currentSkill.ID)
            {
                progress = s;
                break;
            }
        }

        ApplySkillTreeImage(list [0].transform.GetChild(0), 0, 0, "", -1);

        for (int i = 0; i < progress.FirstRow.Count; i++)
        {
            if (progress.FirstRow [i] < 0)
            {
                list [i + 1].transform.GetChild(0).GetComponent <Image> ().sprite = Skill_locked;
                list [i + 1].transform.GetChild(0).GetComponent <UpgradeManager> ().Lock();
            }
            else if (i != 0)
            {
                ApplySkillTreeImage(list [i + 1].transform.GetChild(0), i + 1, progress.FirstRow [i], i + "", 1);
            }
            else
            {
                ApplySkillTreeImage(list [i + 1].transform.GetChild(0), i + 1, progress.FirstRow [i], 0 + "", 0);
            }
        }
        for (int i = 0; i < progress.SecondRow.Count; i++)
        {
            if (progress.SecondRow [i] < 0)
            {
                list [i + progress.FirstRow.Count + 1].transform.GetChild(0).GetComponent <Image> ().sprite = Skill_locked;
                list [i + progress.FirstRow.Count + 1].transform.GetChild(0).GetComponent <UpgradeManager> ().Lock();
            }
            else if (i != 0)
            {
                ApplySkillTreeImage(list [i + progress.FirstRow.Count + 1].transform.GetChild(0), i + progress.FirstRow.Count + 1, progress.SecondRow [i], i + progress.FirstRow.Count + "", 11);
            }
            else
            {
                ApplySkillTreeImage(list [i + progress.FirstRow.Count + 1].transform.GetChild(0), i + progress.FirstRow.Count + 1, progress.SecondRow [i], 0 + "", 10);
            }
        }
        for (int i = 0; i < progress.ThirdRow.Count; i++)
        {
            if (progress.ThirdRow [i] < 0)
            {
                list [i + progress.FirstRow.Count + progress.SecondRow.Count + 1].transform.GetChild(0).GetComponent <Image> ().sprite = Skill_locked;
                list [i + progress.FirstRow.Count + progress.SecondRow.Count + 1].transform.GetChild(0).GetComponent <UpgradeManager> ().Lock();
            }
            else if (i != 0)
            {
                ApplySkillTreeImage(list [i + progress.FirstRow.Count + progress.SecondRow.Count + 1].transform.GetChild(0), i + progress.FirstRow.Count + progress.SecondRow.Count + 1, progress.ThirdRow [i], i + progress.FirstRow.Count + progress.SecondRow.Count + "", 21);
            }
            else
            {
                ApplySkillTreeImage(list [i + progress.FirstRow.Count + progress.SecondRow.Count + 1].transform.GetChild(0), i + progress.FirstRow.Count + progress.SecondRow.Count + 1, progress.ThirdRow [i], 0 + "", 20);
            }
        }

        if (progress.Ultimate < 0)
        {
            list [list.Count - 1].transform.GetChild(0).GetComponent <Image> ().sprite = Skill_locked;
            list [list.Count - 1].transform.GetChild(0).GetComponent <UpgradeManager> ().Lock();
        }
        else
        {
            ApplySkillTreeImage(list [list.Count - 1].transform.GetChild(0), list.Count - 1, progress.Ultimate, CheckRecForUltimate(list, progress), 30);
        }
    }
Example #13
0
 public int NewSkill(SkillDetail sd)
 {
     md.SkillDetails.Add(sd);
     md.SaveChanges();
     return(1);
 }
 public override bool TryUseSkill(SkillDetail skill)
 {
     throw new NotImplementedException();
 }
Example #15
0
        public static async Task <TemplateFile> Create(AzureFileController azureFileController, User user, string documentLink, Dictionary <string, List <object> > subsetDetails)
        {
            var valuesToFill = new Content(
                new FieldContent("Initials", user.FirstName.ToCharArray()[0].ToString() + user.LastName.ToCharArray()[0].ToString()),
                new FieldContent("FirstName", user.FirstName),
                new FieldContent("LastName", user.LastName),
                new FieldContent("Email", user.UserInfo?.FirstOrDefault()?.AltEmail ?? user.Email),
                new TableContent("EducationTable"),
                new TableContent("CertTable"),
                new TableContent("WorkTable"),
                new TableContent("ProjectTable"),
                new TableContent("SkillTable"));

            subsetDetails["Edu"].ForEach(obj =>
            {
                EducationDetail detail = (EducationDetail)obj;
                valuesToFill
                .Tables
                .FirstOrDefault(table => table.Name.Equals("EducationTable"))
                .AddRow(new FieldContent("SchoolName", detail.SchoolName),
                        new FieldContent("Achievement", detail.Achievement),
                        new FieldContent("Degree", detail.Degree),
                        new FieldContent("EndDate", detail.EndDateTentative ? "Current" : detail.EndDate?.ToShortDateString()),
                        new FieldContent("StartDate", detail.StartDate.ToShortDateString()),
                        new FieldContent("GPA", detail.GPA.ToString()));
            });

            subsetDetails["Cert"].ForEach(obj =>
            {
                CertDetail detail = (CertDetail)obj;
                valuesToFill
                .Tables
                .FirstOrDefault(table => table.Name.Equals("CertTable"))
                .AddRow(new FieldContent("Issuer", detail.Issuer),
                        new FieldContent("Name", detail.Name),
                        new FieldContent("DateAchieved", detail.DateAchieved.ToShortDateString()));
            });

            subsetDetails["Work"].ForEach(obj =>
            {
                WorkDetail detail = (WorkDetail)obj;
                valuesToFill
                .Tables
                .FirstOrDefault(table => table.Name.Equals("WorkTable"))
                .AddRow(new FieldContent("Company", detail.Company),
                        new FieldContent("Location", detail.Location),
                        new FieldContent("Summary", detail.Summary),
                        new FieldContent("EndDate", detail.EndDateTentative ? "Current" : detail.EndDate?.ToShortDateString()),
                        new FieldContent("StartDate", detail.StartDate.ToShortDateString()),
                        new FieldContent("Title", detail.Title.ToString()));

                // TODO add bullets
            });

            subsetDetails["Project"].ForEach(obj =>
            {
                ProjectDetail detail = (ProjectDetail)obj;
                valuesToFill
                .Tables
                .FirstOrDefault(table => table.Name.Equals("ProjectTable"))
                .AddRow(new FieldContent("Company", detail.Company),
                        new FieldContent("Supervisor", detail.Supervisor),
                        new FieldContent("Summary", detail.Summary),
                        new FieldContent("EndDate", detail.EndDateTentative ? "Current" : detail.EndDate?.ToShortDateString()),
                        new FieldContent("StartDate", detail.StartDate.ToShortDateString()),
                        new FieldContent("Title", detail.Title.ToString()));
            });

            subsetDetails["Skill"].ForEach(obj =>
            {
                SkillDetail detail = (SkillDetail)obj;
                valuesToFill
                .Tables
                .FirstOrDefault(table => table.Name.Equals("SkillTable"))
                .AddRow(new FieldContent("Class", detail.Class),
                        new FieldContent("Name", detail.Name),
                        new FieldContent("Level", detail.Level));
            });

            if (user.UserInfo.Any())
            {
                UserInfo info = user.UserInfo.FirstOrDefault();

                if (!string.IsNullOrEmpty(info.NameExt))
                {
                    valuesToFill.Fields.Add(new FieldContent("NameExt", info.NameExt));
                }

                if (!string.IsNullOrEmpty(info.Summary))
                {
                    valuesToFill.Fields.Add(new FieldContent("Summary", info.Summary));
                }

                if (!string.IsNullOrEmpty(info.PhoneNumber))
                {
                    valuesToFill.Fields.Add(new FieldContent("Phone", info.PhoneNumber));
                }

                if (!string.IsNullOrEmpty(info.Website))
                {
                    valuesToFill.Fields.Add(new FieldContent("Website", info.Website));
                }
            }

            string str = await azureFileController.GetFile(FileType.Templates, documentLink);

            using (var outputDocument = new TemplateProcessor(str).SetRemoveContentControls(true).SetNoticeAboutErrors(false))
            {
                outputDocument.FillContent(valuesToFill);
                outputDocument.SaveChanges();
            }

            return(new TemplateFile()
            {
                LocalFile = str
            });
        }
Example #16
0
 public int CreateSkills(SkillDetail details)
 {
     return(userlogic.NewSkill(details));
 }
Example #17
0
 /// <summary>
 /// 调用状态机以使用 "闪避" 技能
 /// 只允许内部调用, 属于被动技能
 /// </summary>
 /// <param name="skill">技能细节</param>
 private void UseDodge(ref SkillDetail skill)
 {
     _fsmDodge.ChangeState(skill.skillType, StateTransition.Overwrite);
 }
Example #18
0
        public async Task CrawlerDetail(HtmlDocument htmlDocument, String crawl, String detailAnchor)
        {
            //var listDetail = HttpContext.Session.GetObject<List<String>>(CT.DETAIL);
            var part = new List <String>();

            if (part != null)
            {
                if (crawl != null)
                {
                    foreach (var include in crawl.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        part.Add(include);
                    }
                }


                //var url = detailAnchor;
                //using var httpClient = new HttpClient();
                //var html = await httpClient.GetStringAsync(url);
                //var htmlDocument = new HtmlDocument();
                //htmlDocument.LoadHtml(html);

                var playerProfile = htmlDocument.DocumentNode.Descendants("div")
                                    .Where(node => node.GetAttributeValue("class", "")
                                           .Equals("playerprofile-itemblock")).FirstOrDefault();

                //price
                var getImagePlayer = Url_image + playerProfile.Descendants("div")
                                     .Where(node => node.GetAttributeValue("class", "")
                                            .Contains("card-20-face-"))
                                     .FirstOrDefault()
                                     .Descendants("img")
                                     .FirstOrDefault()
                                     .Attributes["src"].Value;
                var getPlayer = unitOfWork.Player.GetFirstOrDefault(x => x.Face.Equals(getImagePlayer));
                if (getPlayer.Nation == null)
                {
                    getPlayer.Nation = htmlDocument.DocumentNode.Descendants("div")
                                       .Where(node => node.GetAttributeValue("class", "")
                                              .Equals("playerprofile-hbar-ttl")).FirstOrDefault().Descendants("a").FirstOrDefault().InnerText;
                }

                if (playerProfile != null)
                {
                    var priceObject = new TradingMarket();
                    var priceUpdate = playerProfile.Descendants("div").Where(node => node.GetAttributeValue("class", "")
                                                                             .Contains("priceupdate"))
                                      .ToList();
                    var xboxUpdate = priceUpdate[0].InnerText;
                    var ps4Update  = priceUpdate[1].InnerText;
                    priceObject.Player  = getPlayer.Id;
                    priceObject.Xtime   = xboxUpdate;
                    priceObject.Ps4time = ps4Update;

                    var priceProfile = playerProfile.Descendants("div").Where(node => node.GetAttributeValue("class", "")
                                                                              .Equals("playerprofile-price"))
                                       .ToList();
                    var xboxPrice = priceProfile[0].InnerText;
                    var ps4Price  = priceProfile[1].InnerText;
                    priceObject.Xprice   = Double.Parse(xboxPrice);
                    priceObject.Ps4price = Double.Parse(ps4Price);
                    unitOfWork.TradingMarket.Add(priceObject);
                }

                //skill
                var playerInfor = htmlDocument.DocumentNode.Descendants("p")
                                  .Where(node => node.GetAttributeValue("class", "")
                                         .Contains("ppdb-d")).ToList();
                var skillPoint  = playerInfor[0].InnerText;
                var weakFoot    = playerInfor[1].InnerText;
                var age         = playerInfor[2].InnerText;
                var height      = playerInfor[3].InnerText;
                var weight      = playerInfor[4].InnerText;
                var workrates   = playerInfor[5].InnerText;
                var footed      = playerInfor[6].InnerText;
                var player      = getPlayer.Id;
                var skillObject = new SkillDetail()
                {
                    Age       = int.Parse(age),
                    Player    = player,
                    Footed    = footed,
                    Height    = height,
                    Weight    = weight,
                    Skill     = int.Parse(skillPoint),
                    Weakfoot  = int.Parse(weakFoot),
                    Workrates = workrates
                };
                unitOfWork.SkillDetail.Add(skillObject);
                //fight for the badge
                var badge = playerProfile.Descendants("div")
                            .Where(node => node.GetAttributeValue("align", "")
                                   .Equals("center")).FirstOrDefault();
                var yes = badge.Descendants("a").FirstOrDefault().InnerText;
                var no  = badge.Descendants("a").Skip(1).Take(1).FirstOrDefault().InnerText;

                var getStats = htmlDocument.DocumentNode.Descendants("div")
                               .Where(node => node.GetAttributeValue("class", "")
                                      .Equals("col-2")).ToList();
                //PacDetail
                var pacPoint        = getStats[1].InnerText;
                var splitPacPoint   = pacPoint.Replace("\n", "");
                var getPacPointOnly = splitPacPoint.Where(x => char.IsDigit(x)).ToList();
                var pacObject       = new PacDetail();
                // var item = getPacPointOnly[0].ToString();
                pacObject.Pac    = int.Parse(getPacPointOnly[0].ToString() + getPacPointOnly[1].ToString());
                pacObject.Acc    = int.Parse(getPacPointOnly[2].ToString() + getPacPointOnly[3].ToString());
                pacObject.Speed  = int.Parse(getPacPointOnly[4].ToString() + getPacPointOnly[5].ToString());
                pacObject.Player = getPlayer.Id;
                unitOfWork.PacDetail.Add(pacObject);
                //ShoDetail
                var showPoint       = getStats[2].InnerText;
                var splitShoPoint   = showPoint.Replace("\n", "");
                var getShoPointOnly = splitShoPoint.Where(x => char.IsDigit(x)).ToList();
                var shoObject       = new ShoDetail();
                getShoPointOnly.RemoveRange(0, 2);
                shoObject.Pos     = int.Parse(getShoPointOnly[0].ToString() + getShoPointOnly[1].ToString());
                shoObject.Fin     = int.Parse(getShoPointOnly[2].ToString() + getShoPointOnly[3].ToString());
                shoObject.Sp      = int.Parse(getShoPointOnly[4].ToString() + getShoPointOnly[5].ToString());
                shoObject.Ls      = int.Parse(getShoPointOnly[6].ToString() + getShoPointOnly[7].ToString());
                shoObject.Volleys = int.Parse(getShoPointOnly[8].ToString() + getShoPointOnly[9].ToString());
                shoObject.Pen     = int.Parse(getShoPointOnly[10].ToString() + getShoPointOnly[11].ToString());
                shoObject.Player  = getPlayer.Id;

                unitOfWork.ShoDetail.Add(shoObject);

                //PasDetail
                var pasPoint        = getStats[3].InnerText;
                var splitPasPoint   = pasPoint.Replace("\n", "");
                var getPasPointOnly = splitPasPoint.Where(x => char.IsDigit(x)).ToList();
                var pasDetail       = new PasDetail();
                getPasPointOnly.RemoveRange(0, 2);
                pasDetail.Vision   = int.Parse(getPasPointOnly[0].ToString() + getPasPointOnly[1].ToString());
                pasDetail.Crossing = int.Parse(getPasPointOnly[2].ToString() + getPasPointOnly[3].ToString());
                pasDetail.Fk       = int.Parse(getPasPointOnly[4].ToString() + getPasPointOnly[5].ToString());
                pasDetail.Sp       = int.Parse(getPasPointOnly[6].ToString() + getPasPointOnly[7].ToString());
                pasDetail.Lp       = int.Parse(getPasPointOnly[8].ToString() + getPasPointOnly[9].ToString());
                pasDetail.Curve    = int.Parse(getPasPointOnly[10].ToString() + getPasPointOnly[11].ToString());
                pasDetail.Player   = getPlayer.Id;

                unitOfWork.PasDetail.Add(pasDetail);


                //PhyDetail
                var phyPoint        = getStats[6].InnerText;
                var splitPhyPoint   = phyPoint.Replace("\n", "");
                var getPhyPointOnly = splitPhyPoint.Where(x => char.IsDigit(x)).ToList();
                var phyDetail       = new PhyDetail();
                phyDetail.Jump       = int.Parse(getPhyPointOnly[2].ToString() + getPhyPointOnly[3].ToString());
                phyDetail.Stamina    = int.Parse(getPhyPointOnly[4].ToString() + getPhyPointOnly[5].ToString());
                phyDetail.Strength   = int.Parse(getPhyPointOnly[6].ToString() + getPhyPointOnly[7].ToString());
                phyDetail.Aggression = int.Parse(getPhyPointOnly[8].ToString() + getPhyPointOnly[9].ToString());
                phyDetail.Player     = getPlayer.Id;

                unitOfWork.PhyDetail.Add(phyDetail);


                //DefDetail
                var defPoint        = getStats[5].InnerText;
                var splitDefPoint   = defPoint.Replace("\n", "");
                var getDefPointOnly = splitDefPoint.Where(x => char.IsDigit(x)).ToList();
                var defDetail       = new DefDetail();
                getDefPointOnly.RemoveRange(0, 2);
                defDetail.Interception = int.Parse(getDefPointOnly[0].ToString() + getDefPointOnly[1].ToString());
                defDetail.Ha           = int.Parse(getDefPointOnly[2].ToString() + getDefPointOnly[3].ToString());
                defDetail.Da           = int.Parse(getDefPointOnly[4].ToString() + getDefPointOnly[5].ToString());
                defDetail.Stand        = int.Parse(getDefPointOnly[6].ToString() + getDefPointOnly[7].ToString());
                defDetail.Slide        = int.Parse(getDefPointOnly[8].ToString() + getDefPointOnly[9].ToString());
                defDetail.Player       = getPlayer.Id;

                unitOfWork.DefDetail.Add(defDetail);


                //DriDetail
                var driPoint        = getStats[4].InnerText;
                var splitDriPoint   = driPoint.Replace("\n", "");
                var getDriPointOnly = splitDriPoint.Where(x => char.IsDigit(x)).ToList();
                var driDetail       = new DriDetail();
                getDefPointOnly.RemoveRange(0, 2);
                driDetail.Agility   = int.Parse(getDriPointOnly[0].ToString() + getDriPointOnly[1].ToString());
                driDetail.Balance   = int.Parse(getDriPointOnly[2].ToString() + getDriPointOnly[3].ToString());
                driDetail.React     = int.Parse(getDriPointOnly[4].ToString() + getDriPointOnly[5].ToString());
                driDetail.Control   = int.Parse(getDriPointOnly[6].ToString() + getDriPointOnly[7].ToString());
                driDetail.Drib      = int.Parse(getDriPointOnly[8].ToString() + getDriPointOnly[9].ToString());
                driDetail.Composure = int.Parse(getDriPointOnly[10].ToString() + getDriPointOnly[11].ToString());
                driDetail.Player    = getPlayer.Id;

                unitOfWork.DriDetail.Add(driDetail);

                //Position
                var position = htmlDocument.DocumentNode.Descendants("div")
                               .Where(node => node.GetAttributeValue("class", "")
                                      .Equals("altpos-inner-l1")).ToList();
                var positionPoint = htmlDocument.DocumentNode.Descendants("div")
                                    .Where(node => node.GetAttributeValue("class", "")
                                           .Equals("altpos-inner-l2")).ToList();
                var positionObject = new Position();
                positionObject.Cb     = int.Parse(position[0].InnerText);
                positionObject.Cdm    = int.Parse(position[1].InnerText);
                positionObject.Cm     = int.Parse(position[2].InnerText);
                positionObject.Cam    = int.Parse(position[3].InnerText);
                positionObject.Cf     = int.Parse(position[4].InnerText);
                positionObject.St     = int.Parse(position[5].InnerText);
                positionObject.Lw     = int.Parse(position[6].InnerText);
                positionObject.Lf     = int.Parse(position[7].InnerText);
                positionObject.Rf     = int.Parse(position[8].InnerText);
                positionObject.Rw     = int.Parse(position[9].InnerText);
                positionObject.Lm     = int.Parse(position[10].InnerText);
                positionObject.Rm     = int.Parse(position[11].InnerText);
                positionObject.Rb     = int.Parse(position[12].InnerText);
                positionObject.Rwb    = int.Parse(position[13].InnerText);
                positionObject.Lb     = int.Parse(position[14].InnerText);
                positionObject.Lwb    = int.Parse(position[15].InnerText);
                positionObject.Player = getPlayer.Id;

                unitOfWork.Position.Add(positionObject);
                unitOfWork.Save();
            }
        }
 /// <summary>
 /// 使用技能
 /// </summary>
 /// <param name="skill">技能细节</param>
 /// <returns>是否攻击成功</returns>
 public abstract bool TryUseSkill(SkillDetail skill);