232 lines
9.2 KiB
Lua
232 lines
9.2 KiB
Lua
TalismanManager = {};
|
|
local this = TalismanManager
|
|
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
|
local heroConfig=ConfigManager.GetConfig(ConfigName.HeroConfig)
|
|
local equipTalismana = ConfigManager.GetConfig(ConfigName.EquipTalismana)
|
|
local propertyConfig=ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
|
|
|
this.lv=0--默认法宝等级
|
|
this.talismanDatas={}
|
|
|
|
this.talismanTabs = {}
|
|
this.AllTalismanStartStar = {}
|
|
this.AllTalismanEndStar = {}
|
|
|
|
local GameSettingTalismanOpenType = 0
|
|
local GameSettingTalismanOpenVal = 0
|
|
function this.Initialize()
|
|
|
|
end
|
|
--初始化更新法宝数据
|
|
-- function this.InitUpdateTalismanData(msg)
|
|
-- if msg and #msg > 0 then
|
|
-- for i = 1, #msg do
|
|
-- this.InitUpdateSingleTalismanData(msg[i])
|
|
-- end
|
|
-- end
|
|
-- this.GetStartAndEndStar()
|
|
-- end
|
|
|
|
-- function this.InitUpdateSingleTalismanData(singleTalisman)
|
|
-- Log("<color=red>"..singleTalisman.id.."</color>")
|
|
-- if singleTalisman.id then
|
|
-- local singleTalismanData = {}
|
|
-- singleTalismanData.backData= singleTalisman
|
|
-- singleTalismanData.upHeroDid = "0"
|
|
-- singleTalismanData.id = singleTalisman.equipId
|
|
-- singleTalismanData.did = singleTalisman.id
|
|
-- singleTalismanData.star = singleTalisman.rebuildLevel
|
|
-- singleTalismanData.itemConfig = itemConfig[singleTalisman.equipId]
|
|
-- singleTalismanData.frame = GetQuantityImageByquality(singleTalismanData.itemConfig.Quantity)
|
|
-- singleTalismanData.icon = GetResourcePath(singleTalismanData.itemConfig.ResourceID)
|
|
-- singleTalismanData.num = 1
|
|
-- singleTalismanData.power = this.CalculateWarForceBySid(singleTalismanData.id,singleTalismanData.star,0)
|
|
-- this.talismanTabs[singleTalisman.id] = singleTalismanData
|
|
-- end
|
|
-- end
|
|
--获取全部
|
|
function this.GetAllTalismanData(isAddUpHero,heroDid)
|
|
local talismans = {}
|
|
for i, v in pairs(this.talismanTabs) do
|
|
if isAddUpHero then
|
|
table.insert(talismans,v)
|
|
else
|
|
if v.upHeroDid == "0" and heroDid and v.upHeroDid == heroDid then
|
|
table.insert(talismans,v)
|
|
end
|
|
end
|
|
end
|
|
table.sort(talismans, function(a,b) return a.backData.equipId < b.backData.equipId end)
|
|
return talismans
|
|
end
|
|
--设置法宝穿戴的英雄
|
|
function this.SetTalismanUpHeroDid(talismanDid,heroDid)
|
|
if this.talismanTabs[talismanDid] then
|
|
this.talismanTabs[talismanDid].upHeroDid=heroDid
|
|
end
|
|
end
|
|
--设置法宝穿戴的星级
|
|
function this.SetLv(lv,did)
|
|
-- if not this.talismanDatas[did] then
|
|
this.talismanDatas[did]=lv
|
|
-- end
|
|
end
|
|
--获取单个法宝信息
|
|
function this.GetSingleTalismanData(talismanDid)
|
|
if this.talismanTabs[talismanDid] then
|
|
return this.talismanTabs[talismanDid]
|
|
end
|
|
return nil
|
|
end
|
|
--删除单个法宝信息
|
|
function this.DeleteSingleTalismanData(talismanDids)
|
|
for i = 1, #talismanDids do
|
|
if this.talismanTabs[talismanDids[i]] then
|
|
Log(("删除 ")..this.talismanTabs[talismanDids[i]].itemConfig.Name)
|
|
this.talismanTabs[talismanDids[i]] = nil
|
|
end
|
|
end
|
|
end
|
|
--计算战斗力
|
|
function this.CalculateWarForceBySid(sId,star,heroPos)
|
|
local curTalismanConFigData = ConfigManager.GetConfigDataByDoubleKey(ConfigName.EquipTalismana, "TalismanaId", sId, "Level", star)
|
|
return this.CalculateWarForceBase(curTalismanConFigData,heroPos)
|
|
end
|
|
|
|
--计算战斗力
|
|
function this.CalculateWarForce(talismanDid,heroPos)
|
|
local curTalisman = this.talismanTabs[talismanDid]
|
|
if curTalisman then
|
|
local curTalismanConFigData = ConfigManager.GetConfigDataByDoubleKey(ConfigName.EquipTalismana, "TalismanaId", curTalisman.id, "Level", curTalisman.star)
|
|
return this.CalculateWarForceBase(curTalismanConFigData,heroPos)
|
|
end
|
|
end
|
|
function this.CalculateWarForceBase(curTalismanConFigData,heroPos)
|
|
if curTalismanConFigData then
|
|
local addAllProVal = {}
|
|
--主属性
|
|
for i = 1, #curTalismanConFigData.Property do
|
|
if addAllProVal[curTalismanConFigData.Property[i][1]] then
|
|
addAllProVal[curTalismanConFigData.Property[i][1]] = addAllProVal[curTalismanConFigData.Property[i][1]] +
|
|
curTalismanConFigData.Property[i][2]
|
|
else
|
|
addAllProVal[curTalismanConFigData.Property[i][1]] = curTalismanConFigData.Property[i][2]
|
|
end
|
|
end
|
|
--副属性
|
|
if curTalismanConFigData.SpecialProperty and #curTalismanConFigData.SpecialProperty > 0 then
|
|
for i = 1, #curTalismanConFigData.SpecialProperty do
|
|
if curTalismanConFigData.SpecialProperty[i][1] == 1 then--是属性
|
|
if heroPos == 0 or heroPos == curTalismanConFigData.SpecialProperty[i][2] then
|
|
if addAllProVal[curTalismanConFigData.SpecialProperty[i][3]] then
|
|
addAllProVal[curTalismanConFigData.SpecialProperty[i][3]] = addAllProVal[curTalismanConFigData.SpecialProperty[i][3]] +
|
|
curTalismanConFigData.SpecialProperty[i][4]
|
|
else
|
|
addAllProVal[curTalismanConFigData.SpecialProperty[i][3]] = curTalismanConFigData.SpecialProperty[i][4]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
local powerEndVal = HeroPowerManager.CalPower(addAllProVal)
|
|
return powerEndVal
|
|
end
|
|
end
|
|
function this.GetAllTalismanByCondition(curTalismanData,upStarConFigData)
|
|
local GetAllTalismanByConditionList = {}
|
|
for i, v in pairs(this.talismanTabs) do
|
|
if v.upHeroDid == "0" and v.did ~= curTalismanData.did then
|
|
if v.star == upStarConFigData.StarLimit then
|
|
if upStarConFigData.Issame == 1 then--同名
|
|
if v.id == curTalismanData.id then
|
|
table.insert(GetAllTalismanByConditionList,v)
|
|
end
|
|
elseif upStarConFigData.IsId ~= 0 then--指定id
|
|
if v.id == upStarConFigData.IsId then
|
|
table.insert(GetAllTalismanByConditionList,v)
|
|
end
|
|
else
|
|
table.insert(GetAllTalismanByConditionList,v)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return GetAllTalismanByConditionList
|
|
end
|
|
|
|
--获取最大星级
|
|
function this.GetStartAndEndStar()
|
|
this.AllTalismanStartStar = {}
|
|
this.AllTalismanEndStar = {}
|
|
for i, v in ConfigPairs(equipTalismana) do
|
|
if this.AllTalismanStartStar[v.TalismanaId] then
|
|
if v.Level < this.AllTalismanStartStar[v.TalismanaId] then
|
|
this.AllTalismanStartStar[v.TalismanaId] = v.Level
|
|
end
|
|
if v.Level > this.AllTalismanEndStar[v.TalismanaId] then
|
|
this.AllTalismanEndStar[v.TalismanaId] = v.Level
|
|
end
|
|
else
|
|
this.AllTalismanStartStar[v.TalismanaId] = v.Level
|
|
this.AllTalismanEndStar[v.TalismanaId] = v.Level
|
|
end
|
|
end
|
|
-- local gameSettingConFig = ConfigManager.GetConfigData(ConfigName.GameSetting,1)
|
|
-- GameSettingTalismanOpenType = gameSettingConFig.EquipTalismanaUnlock[1]
|
|
-- GameSettingTalismanOpenVal = gameSettingConFig.EquipTalismanaUnlock[2]
|
|
end
|
|
|
|
--地图临时背包数据
|
|
this.mapShotTimeItemData={}
|
|
--地图临时英雄数据存储
|
|
function this.InitMapShotTimeTalismanBagData(_mapHero)
|
|
this.mapShotTimeItemData[#this.mapShotTimeItemData+1]=_mapHero
|
|
end
|
|
|
|
--检查HeroConfig里英雄是否配了法宝
|
|
function this.CheckTalismanIsInConfig(curHeroData)
|
|
local isOpen = true
|
|
if heroConfig[curHeroData.id].EquipTalismana~=nil then
|
|
isOpen=true
|
|
else
|
|
isOpen=false
|
|
end
|
|
return isOpen
|
|
end
|
|
|
|
--获取当前英雄是否开启法宝
|
|
function this.GetCurHeroIsOpenTalisman(curHeroData)
|
|
local isOpen = false
|
|
local gameSettingConFig = ConfigManager.GetConfigData(ConfigName.GameSetting,1)
|
|
GameSettingTalismanOpenType = gameSettingConFig.EquipTalismanaUnlock[1][1]
|
|
if heroConfig[curHeroData.id].EquipTalismana~=nil then
|
|
GameSettingTalismanOpenVal = heroConfig[curHeroData.id].EquipTalismana[1]
|
|
end
|
|
|
|
if GameSettingTalismanOpenType == 1 then
|
|
if PlayerManager.level >= GameSettingTalismanOpenVal and heroConfig[curHeroData.id].EquipTalismana~=nil then
|
|
isOpen = true
|
|
end
|
|
elseif GameSettingTalismanOpenType == 2 and heroConfig[curHeroData.id].EquipTalismana~=nil then
|
|
if curHeroData.star >= heroConfig[curHeroData.id].EquipTalismana[1] then--如果走的英雄星级 判断heroconfig里的法宝星级
|
|
isOpen = true
|
|
end
|
|
end
|
|
return isOpen
|
|
end
|
|
function this.GetCurHeroIsOpenTalismanStr()
|
|
if GameSettingTalismanOpenType == 1 then
|
|
return GameSettingTalismanOpenVal .. Language[10056]
|
|
elseif GameSettingTalismanOpenType == 2 then
|
|
return NumToSimplenessFont[GameSettingTalismanOpenVal] .. Language[10535]
|
|
end
|
|
end
|
|
|
|
function this.GetCurHeroIsOpenTalismanTip()
|
|
if GameSettingTalismanOpenType == 1 then
|
|
return GameSettingTalismanOpenVal .. Language[10056]
|
|
elseif GameSettingTalismanOpenType == 2 then
|
|
return Language[10536]..NumToSimplenessFont[GameSettingTalismanOpenVal] .. Language[10537]
|
|
end
|
|
end
|
|
return this |