Example #1
0
        public SkillComponent(IEntity entity, IEnumerable <CharacterSkillDto> skills) : this(entity)
        {
            if (skills == null)
            {
                return;
            }

            foreach (CharacterSkillDto characterSkill in skills)
            {
                CharacterSkills.Add(characterSkill.Id, characterSkill);
                this.AddSkill(characterSkill.Skill);
            }
        }
Example #2
0
        void cl_SetSkills(List <int> aCharacterSkills, List <int> aSkilldeckSkills)
        {
            var i = 0;

            while (i < aCharacterSkills.Count)
            {
                var skillResource = SBDBSync.GetResourceObject <FSkill_Type>(aCharacterSkills[i]);
                if (skillResource == null)
                {
                    throw new Exception("Skill not found: " + aCharacterSkills[i]);
                }
                CharacterSkills.Add(skillResource);
                ++i;
            }
            cl_UpdateSkilldeckSkills(aSkilldeckSkills);
            //OnCharacterSkillsChanged();
        }
Example #3
0
        /// <summary>
        /// 清空并重新获取角色的技能数据(提交数据库)
        /// </summary>
        /// <returns>是否更新成功</returns>
        public bool UpdateSkills()
        {
            // 通过ESI获取角色的技能信息
            ESICharacterSkillList csl = ESI.GetCharacterSkillList(CharacterID, GetAccessToken());

            if (csl == null)
            {
                return(false);
            }

            DCEVEDataContext dc = new DCEVEDataContext();

            // 清空原有技能数据
            dc.CharacterSkills.DeleteAllOnSubmit(CharacterSkills);
            dc.SubmitChanges();

            var targetSkillID = dc.invTypes.Where(p => CONST.TargetSkillsGroupID.Contains(p.groupID)).Select(p => p.typeID);

            CharacterSkills skill;

            // 只提取有用的技能数据且处理角色数据
            foreach (var s in csl.SkillList)
            {
                // 若技能 ID 不在要存储的技能ID队列里面, 则跳过
                if (!targetSkillID.Contains(s.SkillID))
                {
                    continue;
                }

                // 若是要存储的技能, 则创建对应的数据记录
                skill = new CharacterSkills()
                {
                    CharacterID = CharacterID,
                    SkillID     = s.SkillID,
                    Level       = s.TrainedSkillLevel
                };

                CharacterSkills.Add(skill);
            }

            dc.SubmitChanges();

            // 分析角色能力
            // 制造能力
            ManuCapability = (from s in dc.industryActivitySkills
                              join c in dc.CharacterSkills
                              on s.skillID equals c.SkillID
                              where c.CharacterID == CharacterID && s.activityID == CONST.ManufactActivityID && c.Level >= s.level
                              select s.skillID).Count();

            NumManufactureLine = 1;
            var targetSkill = CharacterSkills.SingleOrDefault(p => p.SkillID == 3387);     // 批量生产学

            if (targetSkill != null)
            {
                NumManufactureLine += targetSkill.Level;
            }

            targetSkill = CharacterSkills.SingleOrDefault(p => p.SkillID == 24625);         // 高级量产技术
            if (targetSkill != null)
            {
                NumManufactureLine += targetSkill.Level;
            }

            // 科研能力
            ReseCapability = (from s in dc.industryActivitySkills
                              join c in dc.CharacterSkills
                              on s.skillID equals c.SkillID
                              where c.CharacterID == CharacterID && CONST.ResearchActivitiesID.Contains(s.activityID) && c.Level >= s.level
                              select s.skillID).Count();

            NumResearchLine = 1;
            targetSkill     = CharacterSkills.SingleOrDefault(p => p.SkillID == 3406); // 实验室运作理论
            if (targetSkill != null)
            {
                NumResearchLine += targetSkill.Level;
            }

            targetSkill = CharacterSkills.SingleOrDefault(p => p.SkillID == 24624);         // 高级实验室运作理论
            if (targetSkill != null)
            {
                NumResearchLine += targetSkill.Level;
            }

            // 市场订单量
            if (Market)
            {
                NumMarketOrder = 5;
                targetSkill    = CharacterSkills.SingleOrDefault(p => p.SkillID == 3443);  // 贸易学
                if (targetSkill != null)
                {
                    NumMarketOrder += targetSkill.Level * 4;
                }

                targetSkill = CharacterSkills.SingleOrDefault(p => p.SkillID == 3444);     // 零售技巧
                if (targetSkill != null)
                {
                    NumMarketOrder += targetSkill.Level * 8;
                }

                targetSkill = CharacterSkills.SingleOrDefault(p => p.SkillID == 16596);     // 批发技巧
                if (targetSkill != null)
                {
                    NumMarketOrder += targetSkill.Level * 16;
                }

                targetSkill = CharacterSkills.SingleOrDefault(p => p.SkillID == 18580);     // 商业巨头
                if (targetSkill != null)
                {
                    NumMarketOrder += targetSkill.Level * 32;
                }
            }

            dc.SubmitChanges();

            return(true);
        }