AircraftCarrierManager = {} local this = AircraftCarrierManager local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local MotherShipResearch = ConfigManager.GetConfig(ConfigName.MotherShipResearch)--基因研究速度配置表 local MotherShipPlaneBlueprint = ConfigManager.GetConfig(ConfigName.MotherShipPlaneBlueprint)--基因研究配置表 local MotherShipConfig = ConfigManager.GetConfig(ConfigName.MotherShipConfig)--神眷者基础数据表 local MotherShipPlaneConfig = ConfigManager.GetConfig(ConfigName.MotherShipPlaneConfig)--基因(主角技能)配置表 local MotherShipResearchPlus = ConfigManager.GetConfig(ConfigName.MotherShipResearchPlus)--基因研究加速配置表 local PropertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local HeroRankupGroup = ConfigManager.GetConfig(ConfigName.HeroRankupGroup) function this.Initialize() this.LeadData = nil end function AircraftCarrierManager.GetLeadData(func) if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.AIRCRAFT_CARRIER) then if func then func() end return end NetManager.MotherShipInfoRequest(function(msg) --[[ msg.motherShipInfo = { motherShipLevel = 主角等级 motherShipResearchLevel = 研究等级 myPlan = 主角装备的技能 //普通 normalResearchDegree = 进度 normalResearchTime = 开始时间 normalAddResearchDegree = 增加 curNormalBluePrintId = 当前道具ID //特权 researchDegree = 进度 researchTime = 开始时间 addResearchDegree = 增加 curBluePrintId = 当前道具ID } ]] this.LeadData = { lv = msg.motherShipInfo.motherShipLevel, researchLv = msg.motherShipInfo.motherShipResearchLevel, skill = {}, normal = { progress = msg.motherShipInfo.normalResearchDegree, curTime = msg.motherShipInfo.normalResearchTime, addProgress = msg.motherShipInfo.normalAddResearchDegree, curItemId = msg.motherShipInfo.curNormalBluePrintId }, privilege = { progress = msg.motherShipInfo.researchDegree, curTime = msg.motherShipInfo.researchTime, addProgress = msg.motherShipInfo.addResearchDegree, curItemId = msg.motherShipInfo.curBluePrintId } } for i = 1, #msg.motherShipInfo.myPlan do local skill = {} skill.id = msg.motherShipInfo.myPlan[i].id --技能ID skill.cfgId = msg.motherShipInfo.myPlan[i].cfgId -- 战机表ID skill.sort = msg.motherShipInfo.myPlan[i].sort --穿戴顺序 this.LeadData.skill[i] = skill end this.allGeneData = {} for i = 1, 5 do local config = ConfigManager.GetAllConfigsDataByKey(ConfigName.MotherShipPlaneConfig, "Lvl", i) for j = 1, #config do if not this.allGeneData[j] then this.allGeneData[j] = {} end table.insert(this.allGeneData[j], config[j].Id) end end if func then func() end end) end --主角升级 function AircraftCarrierManager.LeadUpLv(func) local lv, maxLv = AircraftCarrierManager.GetLeadLvAndMaxLv() if lv >= maxLv then PopupTipPanel.ShowTipByLanguageId(11993) return end for i = 1, 2 do local itemId = MotherShipConfig[this.LeadData.lv].Cost[i][1] local bagNum = BagManager.GetItemCountById(itemId) if bagNum < MotherShipConfig[this.LeadData.lv].Cost[i][2] then PopupTipPanel.ShowTipByLanguageId(10073) return end end NetManager.MotherShipUplevelRequest(function() this.LeadData.lv = this.LeadData.lv + 1 if func then func() end end) end --开始研发 function AircraftCarrierManager.StartResearch(pos, type, func) if not pos then return end local config = MotherShipPlaneBlueprint[pos] local itemNum = BagManager.GetItemCountById(config.ItemId) if itemNum < 1 then -- PopupTipPanel.ShowTipByLanguageId(10060) UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,config.ItemId) return end NetManager.MotherShipResearchStartbuildRequest(pos, type, function() AircraftCarrierManager.GetLeadData(function() AircraftCarrierManager.InitTimer() if func then func() end CheckRedPointStatus(RedPointType.Lead_Normal) CheckRedPointStatus(RedPointType.Lead_Privilege) end) end) end --研发加速 0:普通 1:特权 function AircraftCarrierManager.ResearchSpeedUp(pos, type, autoBuy, func) if not pos then return end local data, max = AircraftCarrierManager.GetResearch(type) local speed = MotherShipResearch[this.LeadData.researchLv].Speed local time = data.progress + data.addProgress + speed * math.floor((GetTimeStamp() * 1000 - data.curTime) / 1000) if time > max then AircraftCarrierManager.ResearchOver(type) return end local cost = MotherShipResearchPlus[pos] local state = false if BagManager.GetItemCountById(cost.CostItem[1]) < cost.CostItem[2] then -- PopupTipPanel.ShowTipByLanguageId(10492) state = false else state = true end if BagManager.GetItemCountById(cost.CostDiamond[1]) < cost.CostDiamond[2] and not state then PopupTipPanel.ShowTipByLanguageId(10854) return end NetManager.MotherShipResearchSpeedupRequest(pos, type, autoBuy and 1 or 0, function() AircraftCarrierManager.GetLeadData(function() if func then func() end end) end) end -- 获取主角当前等级、最大等级、阶段 function AircraftCarrierManager.GetLeadLvAndMaxLv() local maxlv = MotherShipConfig[#ConfigManager.GetAllConfigsData(ConfigName.MotherShipConfig)].Level local config = ConfigManager.GetConfigDataByKey(ConfigName.MotherShipConfig, "Level", this.LeadData.lv) return this.LeadData.lv, maxlv, config.Step, config.Type end -- 获取当前研究等级、下一研究等级、研究速度、下一级研究速度 function AircraftCarrierManager.GetMaxRresearchLv() local lv = this.LeadData.researchLv local maxLv = #ConfigManager.GetAllConfigsData(ConfigName.MotherShipResearch) local speed = MotherShipResearch[lv].Speed local speedNext = speed local nextLv if lv < maxLv then speedNext = MotherShipResearch[lv+1].Speed nextLv = lv+1 else lv = "Max" nextLv = "Max" end return lv, nextLv, speed, speedNext end -- 研发速度升级 function AircraftCarrierManager.RresearchLvUp(heroList, func) NetManager.MotherShipResearchUplevelRequest(heroList, function() AircraftCarrierManager.GetLeadData(function() HeroManager.DeleteHeroDatas(heroList) Game.GlobalEvent:DispatchEvent(GameEvent.Lead.ResearchLvUp) if func then func() end end) end) end --获取研发速度升级数据 function AircraftCarrierManager.GetRresearchLvUpData() local config = MotherShipResearch[this.LeadData.researchLv] local rankUpGroupData = HeroRankupGroup[config.Cost[1]] return config, rankUpGroupData end local lvImg = { "X1_zhandou_zhanjian_xingji_01", "X1_zhandou_zhanjian_xingji_02", "X1_zhandou_zhanjian_xingji_03", "X1_zhandou_zhanjian_xingji_04", "X1_zhandou_zhanjian_xingji_05", "X1_zhandou_zhanjian_xingji_06", } -- 通过技能ID获取技能数据 function AircraftCarrierManager.GetSkillLvImgForId(id) local data = { lv = MotherShipPlaneConfig[id].Lvl, lvImg = lvImg[MotherShipPlaneConfig[id].Lvl], skillLv = MotherShipPlaneConfig[MotherShipPlaneConfig[id].Lvl], config = MotherShipPlaneConfig[id] } return data end -- 获取研究数据 function AircraftCarrierManager.GetResearch(type) if not this.LeadData then return end if type == 0 then local ResearchDegree if this.LeadData.normal.curItemId ~= 0 then ResearchDegree = MotherShipPlaneBlueprint[this.LeadData.normal.curItemId].ResearchDegree end return this.LeadData.normal, ResearchDegree elseif type == 1 then local ResearchDegree if this.LeadData.privilege.curItemId ~= 0 then ResearchDegree = MotherShipPlaneBlueprint[this.LeadData.privilege.curItemId].ResearchDegree end return this.LeadData.privilege, ResearchDegree end end -- 研究倒计时 function AircraftCarrierManager.InitTimer() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.AIRCRAFT_CARRIER) then return end if not this.LeadData then return end if this.LeadData.normal.curItemId ~= 0 then if this.normalTimer == nil then this.normalTimer = Timer.New(function() if this.LeadData then AircraftCarrierManager.UpdateProgress(this.LeadData.normal, 0) end end, 1, -1, true) this.normalTimer:Start() if this.LeadData then AircraftCarrierManager.UpdateProgress(this.LeadData.normal, 0) end end end if this.LeadData.privilege.curItemId ~= 0 then if this.privilegeTimer == nil then this.privilegeTimer = Timer.New(function() if this.LeadData then AircraftCarrierManager.UpdateProgress(this.LeadData.privilege, 1) end end, 1, -1, true) this.privilegeTimer:Start() if this.LeadData then AircraftCarrierManager.UpdateProgress(this.LeadData.privilege, 1) end end end end -- 获取当前研究进度、剩余时间 function AircraftCarrierManager.GetCurProgress(type) local data, max = AircraftCarrierManager.GetResearch(type) local speed = MotherShipResearch[this.LeadData.researchLv].Speed local progress = data.progress + data.addProgress + speed * math.floor((GetTimeStamp() * 1000 - data.curTime) / 1000) local totalDegree if data.curItemId > 0 then totalDegree = MotherShipPlaneBlueprint[data.curItemId].ResearchDegree else totalDegree = 0 end local surplusTime = (totalDegree - progress)/speed if not max then max = 0 surplusTime = 0 end if progress > max then progress = max surplusTime = 0 end if progress < 0 then progress = 0 surplusTime = 0 end return progress, surplusTime end -- 更新研究进度 function AircraftCarrierManager.UpdateProgress(data, type) if data.curItemId == 0 then return end local speed = MotherShipResearch[this.LeadData.researchLv].Speed local totalDegree = MotherShipPlaneBlueprint[data.curItemId].ResearchDegree local progress = data.progress + data.addProgress + speed * math.floor((GetTimeStamp() * 1000 - data.curTime) / 1000) local surplusTime = (totalDegree - progress)/speed if progress >= totalDegree then progress = totalDegree surplusTime = 0 AircraftCarrierManager.ResearchOver(type) end if type == 0 then Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshNormalProgress, progress, surplusTime) else Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshPrivilegeProgress, progress, surplusTime) end Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshProgress, type, progress, surplusTime) end -- 结束研究 function AircraftCarrierManager.ResearchOver(type) if type == 0 then if this.normalTimer then this.normalTimer:Stop() this.normalTimer = nil end else if this.privilegeTimer then this.privilegeTimer:Stop() this.privilegeTimer = nil end end NetManager.MotherShipResearchEndbuildRequest(type, function(msg) AircraftCarrierManager.GetLeadData(function() UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1) Game.GlobalEvent:DispatchEvent(GameEvent.Lead.ResearchOver, type) CheckRedPointStatus(RedPointType.Lead_Normal) CheckRedPointStatus(RedPointType.Lead_Privilege) CheckRedPointStatus(RedPointType.Lead_Assembly) end) end) end -- 获取所有技能 function AircraftCarrierManager.GetAllPlaneReq(func) NetManager.MotherShipPlanGetAllRequest(function(msg) this.allSkillData = {} for i = 1, #msg.plan do AircraftCarrierManager.UpdateSkillData(msg.plan[i]) end if func then func() end end) end function AircraftCarrierManager.UpdateSkillData(sPlane) if sPlane == nil then LogError("### UpdateSinglePlaneData Error!!!") return end if this.allSkillData[sPlane.id] == nil then this.allSkillData[sPlane.id] = this.CreatSkill() end this.CopyValue(this.allSkillData[sPlane.id], sPlane) end function AircraftCarrierManager.CreatSkill() local skill = {} skill.id = nil skill.cfgId = nil skill.sort = nil return skill end function AircraftCarrierManager.CopyValue(skill, data) skill.id = data.id skill.cfgId = data.cfgId skill.sort = data.sort end function AircraftCarrierManager.DelSkill(skillId) if this.allSkillData[skillId] == nil then LogError("### DelPlaneData id64 not find or already del") return end this.allSkillData[skillId] = nil end -- 获取同类技能数量(不包含自己和已装备) function AircraftCarrierManager.GetSkillSimilarCount(cfgId, id) local cnt = 0 for k, v in pairs(this.allSkillData) do if v.cfgId == cfgId and v.id ~= id then local isAdd = true for i = 1, #this.LeadData.skill do if this.LeadData.skill[i].id == v.id then isAdd = false break end end if isAdd then cnt = cnt + 1 end end end return cnt end -- 获取研发道具数据 function AircraftCarrierManager.GetPlaneAtlasDataByStar(star) local ret = ConfigManager.GetAllConfigsDataByKey(ConfigName.MotherShipPlaneConfig, "Lvl", star) table.sort(ret, function(a, b) return a.Type < b.Type end) return ret end -- 根据id获取当前主角阶级最大等级 function AircraftCarrierManager.GetMaxLvInCurBreak(id) local datas = ConfigManager.GetAllConfigsDataByKey(ConfigName.MotherShipConfig, "Step", MotherShipConfig[id].Step) table.sort(datas, function(a, b) return a.Id < b.Id end) return datas[#datas].Level end --获取升级消耗 function AircraftCarrierManager.GetCost() return MotherShipConfig[this.LeadData.lv].Cost end -- 获取主角属性 function AircraftCarrierManager.GetAllPro() local ret = {} local config = MotherShipConfig[this.LeadData.lv] local function setPro(tb, pros) for i = 1, #pros do if tb[pros[i][1]] == nil then tb[pros[i][1]] = 0 end tb[pros[i][1]] = tb[pros[i][1]] + pros[i][2] end end setPro(ret, config.Attr) for i = 1, #this.LeadData.skill do local skllId = this.LeadData.skill[i].cfgId local pConfig = MotherShipPlaneConfig[skllId] setPro(ret, pConfig.Attr) end return ret end -- 获取主角战斗属性 function AircraftCarrierManager.GetFightDataProperty() local allPro = AircraftCarrierManager.GetAllPro() local property property = { 0,-- Level, allPro[1] and allPro[1] or 0,-- Hp, allPro[1] and allPro[1] or 0,-- Hp, allPro[2] and allPro[2] or 0,-- Attack, allPro[3] and allPro[3] or 0,-- PhysicalDefence, 0,-- MagicDefence, allPro[5] and allPro[5] or 0,-- Speed, 0,-- DamageBocusFactor, 0,-- DamageReduceFactor, 10000,-- Hit, 0,-- Dodge, 0,-- CritFactor, 0,-- CritDamageFactor, 0,-- AntiCritDamageFactor, 0,-- TreatFacter, 0,-- CureFacter, 0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0, } return property end -- 获取开启槽位最大值 function AircraftCarrierManager.GetOpenSlotMaxCnt() return MotherShipConfig[this.LeadData.lv].UnlockSite end -- 根据槽位个数获取开启阶数 function AircraftCarrierManager.GetSlotOpenBreak(slotCnt) if slotCnt < 0 or slotCnt > 4 then LogError("GetSlotOpenBreak Error") return 0 end local data = ConfigManager.GetConfigDataByDoubleKey(ConfigName.MotherShipConfig, "Type", 2, "UnlockSite", slotCnt) return data.Step end -- 获取拥有飞机 isContainEquip是否包含装配 function AircraftCarrierManager.GetAllSkillData(_isContainEquip) local isContainEquip = true if _isContainEquip ~= nil then isContainEquip = _isContainEquip end local ret = {} for k, v in pairs(this.allSkillData) do local isAdd = true if not isContainEquip then for i = 1, #this.LeadData.skill do if this.LeadData.skill[i].id == v.id then isAdd = false break end end end if isAdd then table.insert(ret, v) end end table.sort(ret, function(a, b) local ac = MotherShipPlaneConfig[a.cfgId] local bc = MotherShipPlaneConfig[b.cfgId] if ac.Lvl == bc.Lvl then if ac.Quality == bc.Quality then return ac.Type < bc.Type else return ac.Quality > bc.Quality end else return ac.Lvl > bc.Lvl end end) return ret end -- 获取单个技能数据 function AircraftCarrierManager.GetSingleSkillData(id) for k, v in pairs(this.allSkillData) do if v.id == id then return v end end return nil end -- 获取表内技能属性 function AircraftCarrierManager.GetSinglePlanePro(cfgId) local ret = {} local config = MotherShipPlaneConfig[cfgId] local function setPro(tb, pros) for i = 1, #pros do if tb[pros[i][1]] == nil then tb[pros[i][1]] = 0 end tb[pros[i][1]] = tb[pros[i][1]] + pros[i][2] end end setPro(ret, config.Attr) return ret end -- 获取显示tips属性 function AircraftCarrierManager.GetMainProList(cfgId) local allAdd = AircraftCarrierManager.GetSinglePlanePro(cfgId) local propList = {} for k, v in pairs(allAdd) do table.insert(propList, {propertyId = k, propertyValue = v, PropertyConfig = PropertyConfig[k]}) end return propList end --通过表Id获取下一级技能信息 function AircraftCarrierManager.GetSkillNextIdForConfigId(cfgId) local nextId = MotherShipPlaneConfig[cfgId].NextId if nextId and nextId > 0 then return MotherShipPlaneConfig[nextId] end return nil end --检测基因是否可升级 function AircraftCarrierManager.GetSkillIsCanLevelUp(cfgId, onlyId) local state = false local id = cfgId local data = {} for i = 1, #this.allGeneData do for j = 1, #this.allGeneData[i] do if id == this.allGeneData[i][j] then data = this.allGeneData[i] end end end for i = 1, #data do if AircraftCarrierManager.CheckSkillIsGet(data[i]) then id = data[i] end end local config = AircraftCarrierManager.GetSkillLvImgForId(id) local nextConfig = AircraftCarrierManager.GetSkillNextIdForConfigId(id) if nextConfig then if BagManager.GetItemCountById(config.config.CostItem[1]) >= config.config.CostItem[2] and AircraftCarrierManager.GetSkillSimilarCount(config.config.CostPlane[1], onlyId) >= config.config.CostPlane[2] then state = true end end -- LogError(cfgId.." ==> "..id.." ==> "..tostring(state)) if id == cfgId and state then return true end return false end -- 获取已装备数据 function AircraftCarrierManager.EquipSkillDataToChooseList() local ret = {} for i = 1, #this.LeadData.skill do -- local t = AircraftCarrierManager.CreatSkill() -- AircraftCarrierManager.CopyValue(t, this.LeadData.skill[i]) table.insert(ret, this.LeadData.skill[i]) end table.sort(ret, function (a, b) return a.sort < b.sort end) return ret end --获取装备技能空位 function AircraftCarrierManager.GetSkillIsEquipPos() -- local index = 1 -- for i = 1, #this.LeadData.skill do -- if this.LeadData.skill[i].sort >= index then -- if this.LeadData.skill[i].sort <= AircraftCarrierManager.GetOpenSlotMaxCnt() - 1 then -- index = this.LeadData.skill[i].sort + 1 -- else -- index = 0 -- end -- end -- end -- if #this.LeadData.skill == AircraftCarrierManager.GetOpenSlotMaxCnt() then -- index = 0 -- end -- return index for i = 1, 4 do local isOk = true for j = 1, #this.LeadData.skill do if this.LeadData.skill[j].sort == i then isOk = false end end if isOk then if i <= AircraftCarrierManager.GetOpenSlotMaxCnt() then return i end end end return 0 end --通过ID获取技能所在槽位 function AircraftCarrierManager.GetSkillPosForId(id) for i = 1, #this.LeadData.skill do if this.LeadData.skill[i].id == id then return this.LeadData.skill[i].sort end end end --通过ID判断技能是否已装备 function AircraftCarrierManager.GetSkillIsEquipForId(id) for i = 1, #this.LeadData.skill do if id == this.LeadData.skill[i].id then return true end end return false end --装/卸 技能 function AircraftCarrierManager.EquipOrDowmSkill(skillId, func) if AircraftCarrierManager.GetSkillIsEquipForId(skillId) then local pos = AircraftCarrierManager.GetSkillPosForId(skillId) if pos == 0 then return end NetManager.MotherShipUnloadRequest(skillId, pos, function () AircraftCarrierManager.GetLeadData(function () if func then func() end Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshSkill) Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshInfo) Game.GlobalEvent:DispatchEvent(GameEvent.Bag.OnRefreshRune) end) end) else local equipList = AircraftCarrierManager.EquipSkillDataToChooseList() local state = false for i = 1, #equipList do if MotherShipPlaneConfig[AircraftCarrierManager.GetSingleSkillData(skillId).cfgId].Type == MotherShipPlaneConfig[equipList[i].cfgId].Type then state = true end end if state then PopupTipPanel.ShowTipByLanguageId(50369) return end local pos = AircraftCarrierManager.GetSkillIsEquipPos() if pos == 0 then PopupTipPanel.ShowTipByLanguageId(50370) return end NetManager.MotherShipWearRequest(skillId, pos, function () AircraftCarrierManager.GetLeadData(function () if func then func() end Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshSkill) Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshInfo) Game.GlobalEvent:DispatchEvent(GameEvent.Bag.OnRefreshRune) end) end) end end --升级技能 function AircraftCarrierManager.SkillLevelUp(skillId, func) local configId = AircraftCarrierManager.GetSingleSkillData(skillId).cfgId local config = AircraftCarrierManager.GetSkillLvImgForId(configId) local bagNum = BagManager.GetItemCountById(config.config.CostItem[1]) if bagNum < config.config.CostItem[2] then PopupTipPanel.ShowTipByLanguageId(10073) return end local ownConditionCnt = AircraftCarrierManager.GetSkillSimilarCount(config.config.CostPlane[1], skillId) if ownConditionCnt < config.config.CostPlane[2] then PopupTipPanel.ShowTipByLanguageId(10073) return end NetManager.MotherShipPlanUpStarRequest(skillId, function () AircraftCarrierManager.GetAllPlaneReq(function () AircraftCarrierManager.GetLeadData(function () PopupTipPanel.ShowTipByLanguageId(50371) if func then func() end Game.GlobalEvent:DispatchEvent(GameEvent.Lead.RefreshSkill) end) end) end) end -- 获取装备飞机对应技能ids 需按槽位顺序 function AircraftCarrierManager.GetFightDataSkillIds() local skills = {} local list = this.EquipSkillDataToChooseList() table.sort(list, function(a, b) return a.sort < b.sort end) for i = 1, #list do local config = MotherShipPlaneConfig[list[i].cfgId] table.insert(skills, config.Skill) end return skills end -- 支持背包的数据 function AircraftCarrierManager.GetBagAllDatas() local data = {} local allGene = AircraftCarrierManager.GetAllSkillData(false) for i = 1, #allGene do local state = true for j = 1, #data do if data[j].cfgId == allGene[i].cfgId then state = false end end if state then local num = AircraftCarrierManager.GetSkillSimilarCount(allGene[i].cfgId, allGene[i].id) + 1 table.insert(data, { itemConfig = ItemConfig[allGene[i].cfgId], frame = GetQuantityImageByquality(MotherShipPlaneConfig[allGene[i].cfgId].Quality), icon = GetResourcePath(ItemConfig[allGene[i].cfgId].ResourceID), id = allGene[i].id, cfgId = allGene[i].cfgId, num = num, }) end end return data end -- 检测技能是否已获得(在当前已拥有里查找,只会判断当前等级的已拥有) function AircraftCarrierManager.CheckSkillIsGet(cfgId) for k, v in pairs(this.allSkillData) do if v.cfgId == cfgId then return true end end return false end function AircraftCarrierManager.SetGeneAtlas(msg) this.geneAtlas = msg.motherShipPlanCfgIds end function AircraftCarrierManager.GetGeneAtlasIsHave(cfgId) for i = 1, #this.geneAtlas do if this.geneAtlas[i] == cfgId then return true end end return false end function AircraftCarrierManager.GetGeneAtlasHaveNumberForLv(lv) local config = ConfigManager.GetAllConfigsDataByKey(ConfigName.MotherShipPlaneConfig, "Lvl", lv) local haveNum = 0 for i = 1, #config do if AircraftCarrierManager.GetGeneAtlasIsHave(config[i].Id) then haveNum = haveNum + 1 end end return haveNum end -- 获取所有该等级的技能 function AircraftCarrierManager.GetAtlasForLv(lv) local config = ConfigManager.GetAllConfigsDataByKey(ConfigName.MotherShipPlaneConfig, "Lvl", lv) local haveNum = 0 for i = 1, #config do if AircraftCarrierManager.CheckSkillIsGet(config[i].Id) then haveNum = haveNum + 1 end end return config, haveNum end -- 检测主角是否可以升级红点 function AircraftCarrierManager.CheckRedPoint_CV_LvUp() if not this.LeadData then return false end local id = this.LeadData.lv local shipConfig = MotherShipConfig[id] if shipConfig.NextId == 0 then return false end for i = 1, 2 do local itemId = shipConfig.Cost[i][1] local bagNum = BagManager.GetItemCountById(itemId) if bagNum < shipConfig.Cost[i][2] then return false end end return true end -- 获取特权是否解锁 function AircraftCarrierManager.GetPrivilege() return PrivilegeManager.GetPrivilegeOpenStatusById(60002) end -- 检测普通研究红点 function AircraftCarrierManager.CheckRedPointForNormal() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.AIRCRAFT_CARRIER) then return false end if not this.LeadData then return false end if this.LeadData.normal.curItemId ~= 0 then return false end for i = 1, 3 do while true do local bulePrintConfig = MotherShipPlaneBlueprint[i] if bulePrintConfig == nil then break end local itemid = bulePrintConfig.ItemId local itemOwnNum = BagManager.GetItemCountById(itemid) if itemOwnNum > 0 then return true end break end end return false end -- 检测特权研究红点 function AircraftCarrierManager.CheckRedPointForPrivilege() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.AIRCRAFT_CARRIER) then return false end if not this.LeadData then return false end if this.LeadData.privilege.curItemId ~= 0 then return false end if not AircraftCarrierManager.GetPrivilege() then return false end for i = 1, 3 do while true do local bulePrintConfig = MotherShipPlaneBlueprint[i] if bulePrintConfig == nil then break end local itemid = bulePrintConfig.ItemId local itemOwnNum = BagManager.GetItemCountById(itemid) if itemOwnNum > 0 then return true end break end end return false end --检测研发速度升级红点 function AircraftCarrierManager.CheckRedPointForSpeed() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.AIRCRAFT_CARRIER) then return false end if not this.LeadData then return false end for i = 1, 3 do local speedConfig = MotherShipResearchPlus[i] if speedConfig == nil then LogError("打印|MotherShipResearchPlus表出错") return false end local itemid = speedConfig.CostItem[1] local itemOwnNum = BagManager.GetItemCountById(itemid) if itemOwnNum >= speedConfig.CostItem[2] then return true end end return false end --检测是否有技能可以装配 function AircraftCarrierManager.CheckRedPointForSkill() if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.AIRCRAFT_CARRIER) then return false end if not this.LeadData then return false end local max = AircraftCarrierManager.GetOpenSlotMaxCnt() local cur = #this.LeadData.skill local data = AircraftCarrierManager.GetAllSkillData(true) return (#data > cur) and (cur < max) end return this