miduo_client/Assets/ManagedResources/~Lua/Modules/GodWeapon/GodWeaponManager.lua

260 lines
8.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

GodWeaponManager = {};
local this = GodWeaponManager
local shenBingConfig=ConfigManager.GetConfig(ConfigName.ShenBing)
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
local allGodWeapons={}
local godWeaponTeamInfo={}
local handBook={}
function this.Initialize()
end
function this.InitAllGodWeaponData(msg)
LogError("#msg.infos============"..#msg.infos)
for i = 1, #msg.infos do
local GodWeapon={}
GodWeapon.Did=msg.infos[i].id
local staticId=msg.infos[i].tmpId
GodWeapon.id=staticId
GodWeapon.staticId=staticId
GodWeapon.dynamicId=msg.infos[i].id
GodWeapon.lv=msg.infos[i].level
GodWeapon.star=msg.infos[i].star
local pos=msg.infos[i].point
GodWeapon.point=pos
GodWeapon.live=shenBingConfig[staticId].Painting
GodWeapon.scale=shenBingConfig[staticId].Scale
GodWeapon.position=shenBingConfig[staticId].Position
GodWeapon.config=shenBingConfig[staticId]
allGodWeapons[GodWeapon.Did]=GodWeapon
if pos~=0 then
LogError("pos============================="..pos)
godWeaponTeamInfo[pos]=GodWeapon
end
LogError("static=="..staticId)
end
for i = 1, #msg.book do
LogError("msg.book[i]====="..msg.book[i])
handBook[msg.book[i]]=msg.book[i]
end
end
function this.GetAllWeapon()
return allGodWeapons
end
function this.GetAllTeamWeapon()
return godWeaponTeamInfo
end
function this.GetAllTeamWeaponId()
local list={}
for key, value in pairs(godWeaponTeamInfo) do
table.insert(list,value.staticId)
end
return list
end
function this.InitSingleGodWeaponData(data)
local GodWeapon={}
local GodWeapon={}
GodWeapon.Did=data.id
local staticId=data.tmpId
GodWeapon.id=staticId
GodWeapon.staticId=staticId
GodWeapon.dynamicId=data.id
GodWeapon.lv=data.level
GodWeapon.star=data.star
local pos=data.point
GodWeapon.point=pos
GodWeapon.live=shenBingConfig[staticId].Painting
GodWeapon.scale=shenBingConfig[staticId].Scale
GodWeapon.position=shenBingConfig[staticId].Position
GodWeapon.config=shenBingConfig[staticId]
allGodWeapons[GodWeapon.Did]=GodWeapon
handBook[staticId]=staticId
LogError("single static=="..staticId)
end
function this.GetSingleWeaponData(_id)
if allGodWeapons[_id] then
return allGodWeapons[_id]
end
return nil
end
---神兵升星刷新数据
function this.SetGodWeaponStar(_Did)
if allGodWeapons[_Did] then
allGodWeapons[_Did].star=allGodWeapons[_Did].star+1
end
end
---升星消耗更新消耗数据
function this.SetGodWeaponUpStarCost(_costDids)
for i = 1, #_costDids do
if allGodWeapons[_costDids[i]] then
allGodWeapons[_costDids[i]]=nil
end
end
end
---神兵升级刷新数据
function this.SetGodWeaponLv(_Did,_upLv)
if allGodWeapons[_Did] then
allGodWeapons[_Did].lv=allGodWeapons[_Did].lv+_upLv
end
end
--获取当前可上阵的所有灵兽数据 curUpZhenPokemonData 如果不为空就时替换上阵操作
function this.GetCanUpZhenWeapons()
local upZhenSidList = this.GetAllTeamWeaponId()
local curAllPokemonList = {}
for key, value in pairs(allGodWeapons) do
if not CheckListIsContainValue1(upZhenSidList,value.staticId) then
table.insert(curAllPokemonList,value)
end
end
return curAllPokemonList
end
function this.GetNoUpZhenWeapons()
local list={}
for i = 1, #allGodWeapons do
LogError("allGodWeapons[i].point=="..allGodWeapons[i].point)
end
for key, value in pairs(allGodWeapons) do
if value.point==0 then
table.insert(list,value)
end
end
return list
end
--碎片可以合成红点
function this.WeaponChipCompoundRedPoint()
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.POKEMON)
if not isOpen then
return false
end
local pokemonChipList = BagManager.GetDataByItemType(ItemType.GodWeaponChip)
if #pokemonChipList > 0 then
for i = 1, #pokemonChipList do
if BagManager.GetItemCountById(pokemonChipList[i].id) >= itemConfig[pokemonChipList[i].id].UsePerCount then
-- LogPink("碎片可以合成红点true")
return true
end
end
end
-- LogPink("碎片可以合成红点false")
return false
end
--设置神兵上阵下阵
function this.SetWeaponUpZhen(id,pos)
if allGodWeapons[id] then
if pos~=0 then
local point1=allGodWeapons[id].point
if point1~=0 then
godWeaponTeamInfo[point1]=nil
end
allGodWeapons[id].point=pos
godWeaponTeamInfo[pos]=allGodWeapons[id]
else
allGodWeapons[id].point=pos
godWeaponTeamInfo[pos]=nil
end
end
end
--改变神兵位置
function this.ChangeWeaponPos(id1,id2)
if allGodWeapons[id1] and allGodWeapons[id2] then
local pos1=allGodWeapons[id1].point
local pos2=allGodWeapons[id2].point
allGodWeapons[id1].point=pos2
allGodWeapons[id2].point=pos1
godWeaponTeamInfo[pos1]=allGodWeapons[id2]
godWeaponTeamInfo[pos2]=allGodWeapons[id1]
end
end
--获取灵兽编队属性
function this.GetPokemonFormationAddPro()
local allPro = {}
for key, value in pairs(godWeaponTeamInfo) do
if key and allGodWeapons[value.Did] then
local curPokemonAddPro = this.GetSinglePokemonAddProData(value.Did)
HeroManager.DoubleTableCompound(allPro, curPokemonAddPro)
end
end
return allPro
end
--获取单个神兵属性 (灵兽属性/编队人数 神兵属性会平分给上阵的所有神将)
function this.GetSinglePokemonAddProData(_did,_star,_lv)--_star 传值的话就用此星级计算属性
-- LogPink("_did 1 ".._did)
if not allGodWeapons[_did] then return end
local addAllProVal = {}
local curPokeonData = allGodWeapons[_did]
local curPokemonConFig = ConfigManager.GetConfigData(ConfigName.ShenBing,curPokeonData.id)
local curPokemonLvConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ShenBingLevel,"Quality",curPokemonConFig.Quality,"Level",_lv and _lv or curPokeonData.lv)
local curPokemonStarConFig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ShenbingStar,"Quality",curPokemonConFig.Quality,"Star",_star and _star or curPokeonData.star)
--基础
addAllProVal[HeroProType.Hp] = curPokemonConFig.Hp
addAllProVal[HeroProType.Attack] = curPokemonConFig.Attack
addAllProVal[HeroProType.PhysicalDefence] = curPokemonConFig.PhysicalDefence
addAllProVal[HeroProType.MagicDefence] = curPokemonConFig.MagicDefence
--升级
for i = 1, #curPokemonLvConFig.CharacterLevelPara do
local curPro = curPokemonLvConFig.CharacterLevelPara[i]
if curPro[2] > 0 then
if addAllProVal[curPro[1]] then
addAllProVal[curPro[1]]=addAllProVal[curPro[1]]+curPro[2]
else
addAllProVal[curPro[1]]=curPro[2]
end
end
end
--升星 属性=(基础属性+等级属性)*1+星级倍率)
local StarPara = curPokemonStarConFig.StarPara/10000
local addEndAllProVal = {}
for key, value in pairs(addAllProVal) do
addEndAllProVal[key] = math.floor(value * (1 + StarPara))
end
return addEndAllProVal
end
--获取技能信息(名字,描述)
function this.GetSingleGodWeaponSkillDes(_did,_star)
if not allGodWeapons[_did] then return end
local _data = allGodWeapons[_did]
local shenBingSkills=ConfigManager.GetAllConfigsDataByDoubleKey(ConfigName.ShenBingSkill,"SpiritAnimalMatch",_data.id,"StarMatch",_star and _star or _data.star)
local skillInfos={}
for i = 1, #shenBingSkills do
skillInfos[i]={}
skillInfos[i].title=shenBingSkills[i].Name
skillInfos[i].des=shenBingSkills[i].Desc
skillInfos[i].skillPanDuan=shenBingSkills[i].SkillPanDuan
end
return skillInfos
end
----获取升星需要材料
function this.GetUpStarCost(_curData)
local costList={}
for key, value in pairs(allGodWeapons) do
if value.id==_curData.id and value.Did~=_curData.Did and value.lv<=1 and value.star<=0 then
table.insert(costList,value.Did)
end
end
return costList
end
return this