miduo_client/Assets/ManagedResources/~Lua/Modules/Harmony/Manager/HarmonyManager.lua

564 lines
16 KiB
Lua
Raw Normal View History

2020-11-27 17:59:25 +08:00
HarmonyManager = {}
local this = HarmonyManager
2020-12-15 11:03:34 +08:00
--
-- 第一阶段 鸿蒙阵数据
2020-11-27 17:59:25 +08:00
this.hongmengGuards = {}
this.hongmengHeroInfos = {}
this.hongmengTablet = 0
this.hongmengAdditions = {}
2020-12-15 11:03:34 +08:00
this.GuardList = {}
local SelectId = nil
HarmonyManager.GongMingBox = 0;
HarmonyManager.UnLoadGongMing = 0
--判断是否鸿蒙共享数据
local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig)
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
2020-12-23 17:41:31 +08:00
HarmonyManager.TowerStartLimit = 0
2020-12-15 11:03:34 +08:00
HarmonyManager.equipCount = 0
this.hongmengGongMingList = {}
this.ChooseDataList = {}
-- 第二阶段 鸿蒙塔 数据
2020-12-17 10:41:00 +08:00
--330 鸿蒙使者 数据
2020-12-15 11:03:34 +08:00
-- 鸿蒙塔升级数据表
local HongmengUp = ConfigManager.GetConfig(ConfigName.HongmengUp)
2020-12-17 10:41:00 +08:00
2020-12-21 18:19:38 +08:00
function this.InitHongMengData(hongmengGuards, hongmengHeroInfos, hongmengTablet, hongmengAdditions)
2020-11-27 17:59:25 +08:00
-- body
this.hongmengGuards = hongmengGuards
2020-12-22 19:55:39 +08:00
LogGreen("hongmengGuards",#this.hongmengGuards)
2020-12-23 17:41:31 +08:00
this.TowerStartLimit = tonumber(string.split(ConfigManager.GetConfigData(ConfigName.SpecialConfig,101).Value,"#")[2])
-- LogGreen("TowerStartLimit"..HarmonyManager.TowerStartLimit)
2020-11-27 17:59:25 +08:00
this.hongmengHeroInfos = hongmengHeroInfos
2020-12-22 19:55:39 +08:00
LogGreen("hongmengHeroInfos",#this.hongmengHeroInfos)
2020-12-17 10:41:00 +08:00
for i = 1, #this.hongmengGuards do
this.hongmengGuards[i].time = this.hongmengGuards[i].time + GetTimeStamp()
end
2020-12-15 11:03:34 +08:00
--LogBlue("hongmengTablet "..hongmengTablet)
for i = 1, #this.hongmengHeroInfos do
this.hongmengHeroInfos[i].time = this.hongmengHeroInfos[i].time + GetTimeStamp()
end
2020-11-27 17:59:25 +08:00
this.hongmengTablet = hongmengTablet
this.hongmengAdditions = hongmengAdditions
2020-12-15 11:03:34 +08:00
for i = 1, #this.hongmengAdditions do
if this.hongmengAdditions[i].additionType == HarmonyAddType.AddEquip then
if this.hongmengAdditions[i].value ~= -1 then
local curEquipIdList = {}
local curEquipConfigs = ConfigManager.GetAllConfigsDataByKey(ConfigName.EquipConfig,"Star",this.hongmengAdditions[i].value)
for i = 1, #curEquipConfigs do
table.insert(curEquipIdList,curEquipConfigs[i].Id)
end
this.HarmonyUpdateEquipData(curEquipIdList, "")
end
end
end
2020-11-27 17:59:25 +08:00
2020-12-15 11:03:34 +08:00
2020-12-21 18:19:38 +08:00
end
2020-12-15 11:03:34 +08:00
2020-12-21 18:19:38 +08:00
function this:UpdateHongMengData(hongmengGuards,hongmengAdditions)
this.hongmengGuards = hongmengGuards
this.hongmengAdditions = hongmengAdditions
2020-12-24 14:43:32 +08:00
print("刷新hongmengGuards")
2020-12-15 11:03:34 +08:00
end
--初始化共鸣列表数据
function this:InitGongMingDataList()
for i = 1, #this.hongmengHeroInfos do
local data = HeroManager.GetSingleHeroData(this.hongmengHeroInfos[i].heroId)
if data then
this.hongmengGongMingList[i] = data
else
this.hongmengGongMingList[i] = nil
end
end
end
--鸿蒙塔上限
function this:HongMengTowerUpLimit()
2020-12-17 10:41:00 +08:00
local list = HeroManager.GetAllHerosByStar(HeroManager.awakeNextStarIndex)
2020-12-15 11:03:34 +08:00
local temp_list = {}
for i = 1, #list do
-- body
2020-12-17 10:41:00 +08:00
-- table.insert(temp_list,list[i])
temp_list[list[i].name] = {}
2020-12-15 11:03:34 +08:00
end
2020-12-17 10:41:00 +08:00
local len = LengthOfTable(temp_list)
return len
2020-12-15 11:03:34 +08:00
end
function this.IsInfo(did)
if did ~= "" then
for i = 1, #this.hongmengHeroInfos do
if did == this.hongmengHeroInfos[i].heroId and this.hongmengHeroInfos[i].heroId ~= "" then
return true
end
end
end
return false
end
2020-12-18 16:37:56 +08:00
--共鸣神将
2020-12-15 11:03:34 +08:00
function this.IsChangeColor(did)
for i = 1, #this.hongmengHeroInfos do
if did == this.hongmengHeroInfos[i].heroId then
return true
end
end
return false
end
2020-12-17 10:41:00 +08:00
function this.IsGongMing(did)
2020-12-15 11:03:34 +08:00
for i = 1, #this.hongmengHeroInfos do
-- body
if did == this.hongmengHeroInfos[i].heroId then
PopupTipPanel.ShowTip("共鸣ing")
return
end
end
-- body
end
function this:SetInitList()
local heroDataList = HeroManager.GetAllHeroDatas(1)
local list = {}
local count = 0;
--LogBlue("this.GuardList长度"..LengthOfTable(this.GuardList))
for key, value in pairs(this.GuardList) do
2020-12-18 13:39:35 +08:00
if value.heroId ~= "" then
table.insert(list,value)
end
2020-12-15 11:03:34 +08:00
end
for i = 1, #this.hongmengHeroInfos do
if this.hongmengHeroInfos[i].heroId ~= "" then
-- LogYellow("是否有数据:"..i)
local data = HeroManager.GetSingleHeroData(this.hongmengHeroInfos[i].heroId)
table.insert(list,data)
end
end
table.sort(list,function(a,b)
return a.dynamicId < b.dynamicId
end)
--LogBlue("#list长度:"..#list)
local newList = {}
local index = 0
local flag = true
local tempTable = {}
for i = 1, #heroDataList do
table.insert(tempTable,heroDataList[i])
end
for i = #heroDataList, 1,-1 do
for k2, v2 in pairs(list) do
if v2.dynamicId == heroDataList[i].dynamicId then
--LogPink("第几个:"..i.." k2"..k2)
table.remove(tempTable,i)
end
end
end
this.ChooseDataList = tempTable
-- LogBlue("#this.ChooseDataList长度:"..#this.ChooseDataList)
end
--初始化 鸿蒙塔的数据
function this:SetTowerInit()
local heroDataList = HeroManager.GetAllHeroDatas(1)
local list = {}
local count = 0;
2020-12-23 17:41:31 +08:00
2020-12-18 13:39:35 +08:00
for key, value in pairs(this.hongmengGuards) do
if value.heroId ~= "" then
local data = HeroManager.GetSingleHeroData(value.heroId)
table.insert(list,data)
end
2020-12-15 11:03:34 +08:00
end
--LogBlue("#this.hongmengHeroInfos"..#this.hongmengHeroInfos)
for i = 1, #this.hongmengHeroInfos do
if this.hongmengHeroInfos[i].heroId ~= "" then
--LogYellow("是否有数据:"..i)
local data = HeroManager.GetSingleHeroData(this.hongmengHeroInfos[i].heroId)
table.insert(list,data)
end
end
table.sort(list,function(a,b)
return a.dynamicId < b.dynamicId
end)
--LogBlue("#list长度:"..#list)
local newList = {}
local index = 0
local flag = true
local tempTable = {}
for i = 1, #heroDataList do
table.insert(tempTable,heroDataList[i])
end
for i = #heroDataList, 1,-1 do
for k2, v2 in pairs(list) do
if v2.dynamicId == heroDataList[i].dynamicId then
-- LogPink("第几个:"..i.." k2"..k2)
table.remove(tempTable,i)
end
end
end
this.ChooseDataList = tempTable
2020-12-18 13:39:35 +08:00
LogBlue("#this.ChooseDataList长度:"..#this.ChooseDataList)
2020-12-15 11:03:34 +08:00
end
2020-12-17 10:41:00 +08:00
--判断鸿蒙 使者/守卫 是否够6位
function this:IsEnvoyCount()
-- body
local count = 1
2020-12-21 18:19:38 +08:00
--print("228 ",#this.hongmengGuards)
2020-12-15 11:03:34 +08:00
for i = 1, #this.hongmengGuards do
-- body
2020-12-17 10:41:00 +08:00
if this.hongmengGuards[i].heroId ~= "" then
count =count + 1
2020-12-15 11:03:34 +08:00
end
2020-12-17 10:41:00 +08:00
end
return count
2020-12-15 11:03:34 +08:00
end
2020-12-17 10:41:00 +08:00
--初始化鸿蒙使者的数据
2020-12-15 11:03:34 +08:00
--是否是鸿蒙使者
function this:IsEnvoy(did)
2020-12-17 10:41:00 +08:00
2020-12-15 11:03:34 +08:00
-- body
2020-12-17 10:41:00 +08:00
for i = 1, #this.hongmengGuards do
2020-12-15 11:03:34 +08:00
-- body
2020-12-17 10:41:00 +08:00
if this.hongmengGuards[i].heroId == did then
2020-12-15 11:03:34 +08:00
-- body
2020-12-17 10:41:00 +08:00
return true
2020-12-15 11:03:34 +08:00
end
end
2020-12-17 10:41:00 +08:00
2020-12-15 11:03:34 +08:00
return false
end
-- 设置、获取鸿蒙守卫的列表
function this:SetGuardList(list,count)
for key, value in pairs(list) do
if key<=count then
-- body
this.GuardList[value.dynamicId] = value
end
end
end
function this:GetGuardList()
return this.GuardList
-- body
2020-11-27 17:59:25 +08:00
end
2020-12-15 11:03:34 +08:00
function this:SetGongMingList(Id)
local data = HeroManager.GetSingleHeroData(Id)
table.insert(this.hongmengGongMingList,data)
2020-11-27 17:59:25 +08:00
2020-12-15 11:03:34 +08:00
end
2020-11-27 17:59:25 +08:00
2020-12-15 11:03:34 +08:00
function this:RemoveGongMingList(Id)
local data = HeroManager.GetSingleHeroData(Id)
for key, value in pairs(this.hongmengGongMingList) do
if value then
-- body
if value==data then
-- body
value = nil
break
end
end
end
end
function this:GetGongMingListSingle(Id)
local data = HeroManager.GetSingleHeroData(Id)
--return data
--print(data.dynamicId,"~~~",Id)
for key, value in pairs(this.hongmengGongMingList) do
if value.dynamicId==data.dynamicId then
return value
end
end
end
function this:SetChooseId(id)
SelectId = id
end
-- 设置、获取卸载的数据
function this:SetMingListIndexData(index)
SelectId = HeroManager.GetSingleHeroData(this.hongmengHeroInfos[index].heroId).dynamicId
end
function this:GetUnLoadData()
-- body
return SelectId
end
--获取加成
function this:GetAdditions()
return this.hongmengAdditions
end
function this.GetSingleAdditions(type)
for i = 1, #this.hongmengAdditions do
if this.hongmengAdditions[i].additionType == type then
return this.hongmengAdditions[i].value
end
end
return 0
end
2020-12-18 16:31:28 +08:00
function this.GetHongMengUpData()
2020-12-15 11:03:34 +08:00
for key, value in ConfigPairs(HongmengUp) do
-- body
if value.HongmengLevel == this.hongmengTablet+1 then
-- body
2020-12-18 16:31:28 +08:00
2020-12-15 11:03:34 +08:00
return ConfigManager.TryGetConfigData(ConfigName.HongmengUp,key)
end
end
2020-12-18 16:31:28 +08:00
return nil
2020-12-15 11:03:34 +08:00
end
--鸿蒙共享装备临时数据
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local equipStarsConfig = ConfigManager.GetConfig(ConfigName.EquipStarsConfig)
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
function this.InitUpdateEquipData(id, upHeroDid)
if not this.equipDatas then
this.equipDatas = {}
end
id = tonumber(id)
if this.equipDatas[id] then
if not this.equipDatas[id].upHeroDidList then
this.equipDatas[id].upHeroDidList = {}
end
if upHeroDid and upHeroDid ~= "0" then
this.equipDatas[id].upHeroDidList[upHeroDid] = upHeroDid
end
else
local equipdata = {}
equipdata.equipConfig = equipConfig[id]
equipdata.itemConfig = itemConfig[id]
equipdata.id = id
if itemConfig[equipdata.id] then
equipdata.icon = GetResourcePath(itemConfig[equipdata.id].ResourceID)
else
Log(Language[10483] .. equipdata.id)
return
end
equipdata.frame = GetQuantityImageByquality(equipdata.equipConfig.Quality)
equipdata.quality = equipdata.equipConfig.Quality
equipdata.position = equipdata.equipConfig.Position
equipdata.mainAttribute = this.GetMainProList(equipdata.equipConfig)
equipdata.backData = equipdata
equipdata.star = equipStarsConfig[equipdata.equipConfig.Star].Stars
this.equipDatas[id] = equipdata
if not this.equipDatas[id].upHeroDidList then
this.equipDatas[id].upHeroDidList = {}
end
if upHeroDid and upHeroDid ~= "0" and not this.equipDatas[id].upHeroDidList[upHeroDid] then
this.equipDatas[id].upHeroDidList[upHeroDid] = upHeroDid
end
end
end
function this.HarmonyUpdateEquipData(idlist, heroDid)
for i = 1, #idlist do
this.InitUpdateEquipData(idlist[i], heroDid, false)
end
2020-11-27 17:59:25 +08:00
end
2020-12-18 13:39:35 +08:00
function this:EquipMin(EquipList)
-- body
local smallStar = 999
for i = 1, #EquipList do
if smallStar > equipConfig[EquipList[i].id].Star then
smallStar = equipConfig[EquipList[i].id].Star
end
end
local list = ConfigManager.GetAllConfigsDataByKey(ConfigName.EquipConfig,"Star",smallStar)
--local Equip = ConfigManager.GetConfigData(ConfigName.EquipStarsConfig,smallStar)
this.hongmengAdditions[1].value = this.hongmengTablet
this.hongmengAdditions[2].value = smallStar
--this.hongmengAdditions[]
return list
end
function this:HunMin(hunList)
-- body
local smallHun =999
for i = 1, #hunList do
-- body
if smallHun > EquipTreasureManager.GetSingleTreasureByIdDyn(hunList[i]).lv then
-- body
smallHun = EquipTreasureManager.GetSingleTreasureByIdDyn(hunList[i]).lv
end
end
this.hongmengAdditions[3].value = smallHun
end
function this:SoulMin(LingList)
-- body
local smallLing = 999
for i = 1, #LingList do
-- body
if smallLing > EquipTreasureManager.GetSingleTreasureByIdDyn(LingList[i]).lv then
-- body
smallLing = EquipTreasureManager.GetSingleTreasureByIdDyn(LingList[i]).lv
end
end
this.hongmengAdditions[4].value = smallLing
end
function this:WeaponMin(weapon_Lv)
this.hongmengAdditions[4].value = weapon_Lv
-- body
end
2020-12-15 11:03:34 +08:00
--判断神将的装备是否共鸣
function this:IsShowGongMingEqiup(id)
for i = 1, #this.hongmengHeroInfos do
-- body
if id == this.hongmengHeroInfos[i].heroId then
return true
else
end
end
2020-11-27 17:59:25 +08:00
2020-12-15 11:03:34 +08:00
return false
end
function this.GetMainProList(equipConfig)
local propList = {}
for index, prop in ipairs(equipConfig.Property) do
propList[index] = {}
propList[index].propertyId = prop[1]
propList[index].propertyValue = prop[2]
propList[index].PropertyConfig = propertyConfig[prop[1]]
end
return propList
end
2020-12-18 13:39:35 +08:00
function this.RefreshOpenBoxPoint()
2020-12-18 16:31:28 +08:00
local tab = ConfigManager.GetConfig(ConfigName.Hongmeng)
2020-12-24 14:43:32 +08:00
local Gold = BagManager.GetTotalItemNum(UpViewRechargeType.XuanHuangZhiQi)
local DemonCrystal = BagManager.GetTotalItemNum(UpViewRechargeType.DemonCrystal)
2020-12-18 16:31:28 +08:00
if #this.hongmengHeroInfos<=0 then
-- body
return false
end
2020-12-24 14:43:32 +08:00
if Gold > tab[#this.hongmengHeroInfos].PropPrice[2] or DemonCrystal > tab[#this.hongmengHeroInfos].MoneyPrice[2] then
2020-12-18 13:39:35 +08:00
return true
else
return false
end
end
function this.RefreshEnvoyPoint()
-- body
for i = 1, #this.hongmengGuards do
-- body
if this.hongmengGuards[i].heroId ~= "" then
-- body
return true
end
end
return false
end
function this.RefreshUpTowerPoint()
-- body
local sum = this:HongMengTowerUpLimit()
2020-12-23 17:41:31 +08:00
if this.hongmengTablet > this.TowerStartLimit + sum * 5 then
2020-12-18 13:39:35 +08:00
-- body
return false
else
2020-12-18 16:31:28 +08:00
local data = this.GetHongMengUpData()
-- LogGreen(data.LevelUp[1][2].." "..data.LevelUp[2][2])
-- LogYellow(BagManager.GetTotalItemNum(UpViewRechargeType.Gold))
if data and BagManager.GetTotalItemNum(UpViewRechargeType.Gold) >= data.LevelUp[1][2] then
2020-12-18 13:39:35 +08:00
-- body
if BagManager.GetTotalItemNum(UpViewRechargeType.GrowthAmulet) >= data.LevelUp[2][2] then
return true
end
end
return false
end
end
2020-12-18 18:25:38 +08:00
--票战力
local oldPowerNum = 0
function this.SetOldPowerNum(did)
local isCalculate = true
if did then
local heros = FormationManager.GetAllMainFormationHeroId()
if not heros[did] then
isCalculate = false
end
end
if isCalculate then
oldPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
end
end
function this.WarPowerChangeNotify(did)
local isCalculate = true
if did then
local heros = FormationManager.GetAllMainFormationHeroId()
if not heros[did] then
isCalculate = false
end
end
if oldPowerNum ~= 0 and isCalculate then
local newPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
if oldPowerNum ~= newPowerNum then
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldPowerNum,newValue = newPowerNum})
if did then
FormationManager.CheckHeroIdExist(did)--如果是主线阵容发生变化 会通知后端 更新任务刷新
end
end
end
end
2020-11-27 17:59:25 +08:00
return HarmonyManager