--新的命格管理 GiftManager = {} local this = GiftManager local giftConfig=ConfigManager.GetConfig(ConfigName.GiftConfig) local equipConfig=ConfigManager.GetConfig(ConfigName.EquipConfig) function this.Initialize() this.allHeroGifts={} this.playerGifts={} end --初始化命石 function this.InitGemsInfo(msg) end --初始化英雄礼物 function this.InitHeroGift(id,list) this.allHeroGifts[id]=list end --初始化主角礼物 function this.InitPlayerGift(list) this.playerGifts=list end --获取收取等级和最大数量 function this.GetCollectLvAndNum() local lv=0 local maxNum=0 local collect=0 local curNum=0 for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] then collect=collect+equipConfig[id].Gift end end if CheckFunctionOpen(FUNCTION_OPEN_TYPE.Train) then collect=collect+HeroManager.ReturnGiftCount() end for k, v in ConfigPairs(giftConfig) do if collect>=v.Gift then lv=v.Id curNum=v.Box else maxNum=v.Box break end end if maxNum==0 then maxNum=curNum end return lv,curNum,maxNum end --设置英雄礼物 type 1:穿 2:脱 function this.SetHeroGift(id,list,type) if this.allHeroGifts[id]==nil then this.allHeroGifts[id]={} end for i=1,#list do if type==1 then table.insert(this.allHeroGifts[id],list[i]) elseif type==2 then table.removebyvalue(this.allHeroGifts[id],list[i]) end end HeroManager.ChangeHeroGift(id,this.allHeroGifts[id]) end --设置主角礼物 function this.SetPlayerGift(list) for i=1,#list do table.insert(this.playerGifts,list[i]) end end --移除主角礼物 function this.RemovePlayerGift(list) for i=1,#list do table.removebyvalue(this.playerGifts,list[i]) end end function this.GetHeroGifts(_id) if this.allHeroGifts[_id] then return this.allHeroGifts[_id] end return {} end function this.GetPlayerGifts() return this.playerGifts end function this.changeGiftsByType(_type,_list) end --获取英雄礼物增加的属性 function this.GetHeroGiftAddPro(_id) local data={} if not this.allHeroGifts[_id] then LogError("英雄gift======================nil") return data end local addPro=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].HeroGitUp and equipConfig[id].HeroGitUp>0 then addPro=addPro + equipConfig[id].HeroGitUp end end end --HeroGitUp local list=this.allHeroGifts[_id] for i=1,#list do local id=list[i] local pro = equipConfig[id].Property if pro and #pro>0 then for k = 1, #pro do local key=pro[k][1] local value=pro[k][2] if tonumber(key)~=0 and tonumber(key)~=nil then if not data[key] then data[key] = 0 end data[key] = data[key] + value end end end --英雄礼物不会加成主角属性 -- local pro2 = equipConfig[id].PlayerProperty -- if pro2 and #pro2>0 then -- for k = 1, #pro2 do -- if not data[pro2[k][1]] then -- data[pro2[k][1]] = 0 -- end -- data[pro2[k][1]] = data[pro2[k][1]] + pro2[k][2] -- end -- end end local trainAdd=0 if CheckFunctionOpen(FUNCTION_OPEN_TYPE.Train) then trainAdd=HeroManager.ReturnGiftAtt() -- for k, v in ipairs(data) do -- data[k]=data[k]*(1+t) -- end end if addPro>0 then for k, v in pairs(data) do data[k]=math.floor(v*(1+addPro/10000+trainAdd)+0.5) end end return data end --获取英雄礼物增加的白板属性属性(表里配置的属性) function this.GetHeroGiftAddOriginalPro(_id) local data={} if not this.allHeroGifts[_id] then LogError("英雄gift======================nil") return data end local addPro=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].HeroGitUp and equipConfig[id].HeroGitUp>0 then addPro=addPro + equipConfig[id].HeroGitUp end end end --HeroGitUp local list=this.allHeroGifts[_id] for i=1,#list do local id=list[i] local pro = equipConfig[id].Property if pro and #pro>0 then for k = 1, #pro do local key=pro[k][1] local value=pro[k][2] if tonumber(key)~=0 and tonumber(key)~=nil then if not data[key] then data[key] = 0 end data[key] = data[key] + value end end end --英雄礼物不会加成主角属性 -- local pro2 = equipConfig[id].PlayerProperty -- if pro2 and #pro2>0 then -- for k = 1, #pro2 do -- if not data[pro2[k][1]] then -- data[pro2[k][1]] = 0 -- end -- data[pro2[k][1]] = data[pro2[k][1]] + pro2[k][2] -- end -- end end return data end --检测英雄礼物合成红点 function this.CheckHeroGiftComRed() local giftList=ConfigManager.TryGetAllConfigsDataByKey(ConfigName.EquipConfig,"Position",8) if giftList then for i=1,#giftList do local curequipSign=giftList[i] if curequipSign.Formula and #curequipSign.Formula>0 and type(curequipSign.Formula[1][1])~="userdata" then local key=curequipSign.Formula[1][1] local value=curequipSign.Formula[1][2] local isMatEnough=false local datas = BagManager.GetBagItemDataByItemType(ItemBaseType.HeroGift) local curBagSoulPrintDatas = {} local maxNum=0 for i = 1, #datas do if curequipSign.Star>0 then if datas[i].id == key then for j=1,datas[i].num do if maxNum==value then break end maxNum=maxNum+1 end end else if equipConfig[datas[i].id].Quality == key then for j=1,datas[i].num do if maxNum==value then break end maxNum=maxNum+1 end end end end if maxNum>=value then isMatEnough=true end local resource=curequipSign.Resource local isGoldEough=true if resource and #resource>0 and type(resource[1][1])~="userdata" then for i=1,#resource do if BagManager.GetItemCountById(resource[i][1]) 0 and type(curequipSign.Formula[1][1])~="userdata" then local key=curequipSign.Formula[1][1] local value=curequipSign.Formula[1][2] local isMatEnough=false local datas = BagManager.GetBagItemDataByItemType(ItemBaseType.PlayerGift) local curBagSoulPrintDatas = {} local maxNum=0 for i = 1, #datas do if curequipSign.Star>0 then if datas[i].id == key then for j=1,datas[i].num do if maxNum==value then break end maxNum=maxNum+1 end end else if equipConfig[datas[i].id].Quality == key then for j=1,datas[i].num do if maxNum==value then break end maxNum=maxNum+1 end end end end if maxNum>=value then isMatEnough=true end local resource=curequipSign.Resource local isGoldEough=true if resource and #resource>0 and type(resource[1][1])~="userdata" then for i=1,#resource do if BagManager.GetItemCountById(resource[i][1]) =cur then return false end local suitIds={} for i=1,#list do table.insert(suitIds,equipConfig[list[i]].SuiteID) end local allEquip = BagManager.GetBagItemDataByItemType(ItemBaseType.HeroGift) for i=1,#allEquip do if CheckListIsContainValue1(list,allEquip[i].id)==false and CheckListIsContainValue1(suitIds,equipConfig[allEquip[i].id].SuiteID)==false then return true end end else return false end return false end --检测主角红点 function this.CheckPlayerRedPoint() local isOpen=CheckFunctionOpen(FUNCTION_OPEN_TYPE.Gift) if isOpen==false then return false end local suitIds={} for i=1,#this.playerGifts do table.insert(suitIds,equipConfig[this.playerGifts[i]].SuiteID) end local allEquip = BagManager.GetBagItemDataByItemType(ItemBaseType.PlayerGift) for i=1,#allEquip do if CheckListIsContainValue1(this.playerGifts,allEquip[i].id)==false and CheckListIsContainValue1(suitIds,equipConfig[allEquip[i].id].SuiteID)==false then return true end end return false end --获取英雄潜能等级 function this.GetHeroPotencyLvById(did) local lv=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].PotentialNew and #equipConfig[id].PotentialNew>0 and type(equipConfig[id].PotentialNew[1])~="userdata" then lv=lv+equipConfig[id].PotentialNew[2] end end end if this.allHeroGifts and this.allHeroGifts[did] then local list=this.allHeroGifts[did] for i=1,#list do local id=list[i] if equipConfig[id] and equipConfig[id].PotentialNew and #equipConfig[id].PotentialNew>0 and type(equipConfig[id].PotentialNew[1])~="userdata" then lv=lv+equipConfig[id].PotentialNew[2] end end end --LogError("礼物增加 潜能 lv====================================="..lv) return lv end --获取主角礼物添加的潜能等级 function this.GetPlayerGiftAddPotencyLv() local lv=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].PotentialNew and #equipConfig[id].PotentialNew>0 and type(equipConfig[id].PotentialNew[1])~="userdata" then lv=lv+equipConfig[id].PotentialNew[2] end end end return lv end --获取英雄礼物添加的潜能等级 function this.GetHeroGiftAddPotencyLv(did) local lv=0 if this.allHeroGifts and this.allHeroGifts[did] then local list=this.allHeroGifts[did] for i=1,#list do local id=list[i] if equipConfig[id] and equipConfig[id].PotentialNew and #equipConfig[id].PotentialNew>0 and type(equipConfig[id].PotentialNew[1])~="userdata" then lv=lv+equipConfig[id].PotentialNew[2] end end end return lv end --获取主角礼物增加的属性 function this.GetPlayerGiftAddPro() local data={} for i=1,#this.playerGifts do local id=this.playerGifts[i] local pro = equipConfig[id].PlayerProperty if pro and #pro>0 then for k = 1, #pro do local key=pro[k][1] local value= pro[k][2] if tonumber(key) ~=nil and tonumber(key)~=0 then if key~=0 and key~=nil then if not data[key] then data[key] = 0 end data[key] = data[key] + value end end end end local pro2 = equipConfig[id].Property if pro2 and #pro2>0 and pro2[1][1]~=0 and pro2[1][1]~=nil then for k = 1, #pro2 do local key=pro2[k][1] local value=pro2[k][2] if tonumber(key) ~=nil and tonumber(key)~=0 then if not data[key] then data[key] = 0 end if value and value~=0 then LogError("pro2[k][1]==="..key.." value=="..value) data[key] = data[key] + value end end end end end return data end function this.CheckGemRed() return false end function this.CheckSuperGemRed() return false end function this.GetPlayerGiftAdd() local addPro=0 if this.playerGifts and #this.playerGifts>0 then for i=1,#this.playerGifts do local id=this.playerGifts[i] if equipConfig[id] and equipConfig[id].HeroGitUp and equipConfig[id].HeroGitUp>0 then addPro=addPro + equipConfig[id].HeroGitUp end end end return addPro/100 end return this