714 lines
23 KiB
Lua
714 lines
23 KiB
Lua
--- 公会战管理
|
||
GuildFightManager = {}
|
||
local this = GuildFightManager
|
||
|
||
-- 公会战防守数据
|
||
this._DefendStageData = {} -- 只有我的数据
|
||
this._AttackStageData = {}
|
||
|
||
this._GuildFightBaseData = nil
|
||
this._EnemyBaseData = {}
|
||
|
||
--
|
||
this._TimeCounter = nil
|
||
this._IsRefresh = false
|
||
|
||
|
||
-- 英雄剩余血量数据
|
||
local _HeroBloodData = nil
|
||
|
||
function GuildFightManager.Initialize()
|
||
|
||
end
|
||
|
||
-- 初始化数据
|
||
function GuildFightManager.InitBaseData(func)
|
||
--[[ if PlayerManager.familyId == 0 then
|
||
if func then func() end
|
||
return
|
||
end]]
|
||
NetManager.RequestGuildFightBaseData(function(msg)
|
||
this._GuildFightBaseData = {
|
||
startTime = msg.startTime,
|
||
type = msg.type,
|
||
roundStartTime = msg.roundStartTime,
|
||
roundEndTime = msg.roundEndTime,
|
||
joinType = msg.joinType,
|
||
attackCount = msg.attackCount,
|
||
}
|
||
if func then func() end
|
||
end)
|
||
|
||
if not this._TimeCounter then
|
||
this._TimeCounter = Timer.New(this._TimeUpdate, 1, -1, true)
|
||
this._TimeCounter:Start()
|
||
end
|
||
end
|
||
-- 初始化数据
|
||
function GuildFightManager.InitData(func)
|
||
if PlayerManager.familyId == 0 then
|
||
if func then func() end
|
||
return
|
||
end
|
||
-- 有公会刷新一遍数据
|
||
this.RequestGuildFightBaseData(func)
|
||
|
||
if not this._TimeCounter then
|
||
this._TimeCounter = Timer.New(this._TimeUpdate, 1, -1, true)
|
||
this._TimeCounter:Start()
|
||
end
|
||
end
|
||
|
||
-- 每秒回调
|
||
function this._TimeUpdate()
|
||
-- 不再公会中了
|
||
if PlayerManager.familyId == 0 then
|
||
if this._TimeCounter then
|
||
this._TimeCounter:Stop()
|
||
this._TimeCounter = nil
|
||
end
|
||
return
|
||
end
|
||
-- 正在刷新不执行
|
||
if this._IsRefresh then return end
|
||
|
||
-- 公会战时间判断,
|
||
local baseData = this.GetGuildFightData()
|
||
if not baseData then return end
|
||
|
||
-- startTime 小于等于0 表是公会战关闭
|
||
if baseData.startTime <= 0 then return end
|
||
|
||
local curTime = GetTimeStamp()
|
||
if baseData.type == GUILD_FIGHT_STAGE.UN_START then
|
||
if curTime < baseData.startTime then
|
||
return
|
||
end
|
||
--elseif baseData.type == GUILD_FIGHT_STAGE.EMPTEY then
|
||
-- return
|
||
else
|
||
if curTime < baseData.roundEndTime then
|
||
return
|
||
end
|
||
end
|
||
|
||
-- 延时1秒刷新数据
|
||
this._IsRefresh = true
|
||
Timer.New(function()
|
||
this.RequestGuildFightBaseData(function()
|
||
this._IsRefresh = false
|
||
end)
|
||
end, 1, 1, true):Start()
|
||
end
|
||
|
||
|
||
-- 获取公会战阶段信息
|
||
function GuildFightManager.RequestGuildFightBaseData(func)
|
||
NetManager.RequestGuildFightBaseData(function(msg)
|
||
-- 保存旧阶段
|
||
local oldStage = this.GetCurFightStage()
|
||
-- 新阶段数据
|
||
this._GuildFightBaseData = {
|
||
startTime = msg.startTime,
|
||
type = msg.type,
|
||
roundStartTime = msg.roundStartTime,
|
||
roundEndTime = msg.roundEndTime,
|
||
joinType = msg.joinType,
|
||
attackCount = msg.attackCount,
|
||
}
|
||
-- 设置敌人数据
|
||
this.SetEnemyBaseData(msg.enemy)
|
||
Log("公会战基础信息: startTime = "..msg.startTime.. ", type ="..msg.type.. ", roundStartTime ="..msg.roundStartTime.. ", roundEndTime ="..msg.roundEndTime.. ", joinType ="..msg.joinType )
|
||
if func then func() end
|
||
|
||
-- 刷新一遍对应阶段的数据
|
||
if msg.type == GUILD_FIGHT_STAGE.DEFEND then
|
||
this.RequestDefendStageData()
|
||
elseif msg.type == GUILD_FIGHT_STAGE.ATTACK then
|
||
this.RequestAttackStageDefendData()
|
||
elseif msg.type == GUILD_FIGHT_STAGE.COUNTING then
|
||
this.RequestGuildFightResultData()
|
||
end
|
||
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.FightBaseDataUpdate)
|
||
-- 阶段切换事件
|
||
local curStage = this.GetCurFightStage()
|
||
if oldStage ~= curStage then
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.OnStageChanged, curStage)
|
||
--检测拍脸
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.PatFace.PatFaceSend,FacePanelType.GuildFight)
|
||
end
|
||
end)
|
||
end
|
||
|
||
-- 获取当前公会战基础数据
|
||
function GuildFightManager.GetGuildFightData()
|
||
return this._GuildFightBaseData
|
||
end
|
||
|
||
-- 获取当前阶段
|
||
function GuildFightManager.GetCurFightStage()
|
||
-- 公会战关闭
|
||
if not this._GuildFightBaseData or this._GuildFightBaseData.startTime <= 0 or this._GuildFightBaseData.joinType == 1 then
|
||
return GUILD_FIGHT_STAGE.CLOSE
|
||
end
|
||
-- 公会解散
|
||
local guildData = MyGuildManager.GetMyGuildInfo()
|
||
if guildData and guildData.levelTime ~= 0 then
|
||
return GUILD_FIGHT_STAGE.DISSMISS
|
||
end
|
||
return this._GuildFightBaseData.type
|
||
end
|
||
|
||
-- 判断当前是否在公会战中
|
||
function GuildFightManager.IsInGuildFight()
|
||
local curStage = this.GetCurFightStage()
|
||
if curStage == GUILD_FIGHT_STAGE.CLOSE
|
||
or curStage == GUILD_FIGHT_STAGE.DISSMISS
|
||
or curStage == GUILD_FIGHT_STAGE.UN_START then
|
||
return false
|
||
end
|
||
return true
|
||
end
|
||
|
||
-- 获取剩余进攻次数
|
||
function GuildFightManager.GetLeftAttackCount()
|
||
if not this._GuildFightBaseData then return end
|
||
local attackCount = this._GuildFightBaseData.attackCount
|
||
local maxCount = ConfigManager.GetConfigData(ConfigName.GuildSetting, 1).AttackNum
|
||
local leftCount = maxCount - attackCount
|
||
leftCount = leftCount < 0 and 0 or leftCount
|
||
return leftCount
|
||
end
|
||
|
||
|
||
---============================布防阶段=================================
|
||
-- 请求获取布防阶段防守数据
|
||
function GuildFightManager.RequestDefendStageData(func)
|
||
NetManager.RequestDefendStageData(function(msg)
|
||
this._DefendStageData = {}
|
||
for _, data in ipairs(msg.info) do
|
||
this._DefendStageData[data.uid] = data
|
||
end
|
||
-- 公会防守编队正确性检测
|
||
FormationManager.CheckGuildFightDefendFormation()
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.DefendDataUpdate)
|
||
if func then func() end
|
||
end)
|
||
end
|
||
|
||
-- 公会战防守数据刷新
|
||
function GuildFightManager.UpdateDefendStageData(msg)
|
||
if not this._DefendStageData then
|
||
this._DefendStageData = {}
|
||
end
|
||
-- 建筑为0表示删除
|
||
if msg.buildId == 0 then
|
||
this._DefendStageData[msg.uid] = nil
|
||
else
|
||
this._DefendStageData[msg.uid] = msg
|
||
end
|
||
-- 数据更新
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.DefendDataUpdate)
|
||
end
|
||
|
||
-- 重置防守阵容战斗力
|
||
function GuildFightManager.ResetDefendStageDataForce(uid, force)
|
||
if not uid then return end
|
||
if not this._DefendStageData then return end
|
||
if not this._DefendStageData[uid] then return end
|
||
-- 修改数据
|
||
this._DefendStageData[uid].curForce = force
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.DefendDataUpdate)
|
||
end
|
||
|
||
-- 请求防守
|
||
function GuildFightManager.RequestDefend(buildType, func)
|
||
NetManager.RequestGuildFightDefend(PlayerManager.uid, buildType, function(msg)
|
||
-- 修改我的建筑
|
||
if not this._DefendStageData or not this._DefendStageData[PlayerManager.uid] then
|
||
this.RequestDefendStageData(func)
|
||
return
|
||
end
|
||
this._DefendStageData[PlayerManager.uid].buildId = buildType
|
||
-- 刷新数据
|
||
if func then func() end
|
||
end)
|
||
end
|
||
|
||
-- 请求改变队员的防守建筑
|
||
function GuildFightManager.RequestChangeMemDefend(uid, buildType, func)
|
||
if this.GetCurFightStage() ~= GUILD_FIGHT_STAGE.DEFEND then
|
||
PopupTipPanel.ShowTip(Language[10862])
|
||
return
|
||
end
|
||
local pos = MyGuildManager.GetMyPositionInGuild()
|
||
if pos ~= GUILD_GRANT.MASTER and pos ~= GUILD_GRANT.ADMIN then
|
||
PopupTipPanel.ShowTip(Language[10863])
|
||
return
|
||
end
|
||
local oriBuildType = this.GetDefendStagePlayerBuildType(uid)
|
||
if oriBuildType == buildType then
|
||
PopupTipPanel.ShowTip(Language[10864])
|
||
return
|
||
end
|
||
NetManager.RequestGuildFightDefend(uid, buildType, function(msg)
|
||
PopupTipPanel.ShowTip(Language[10865])
|
||
-- 刷新数据
|
||
if func then func() end
|
||
end)
|
||
end
|
||
|
||
-- 获取公会战防守数据
|
||
function GuildFightManager.GetDefendStageBuildDefendData(buildType)
|
||
local list = {}
|
||
if not this._DefendStageData then
|
||
return list
|
||
end
|
||
for _, data in pairs(this._DefendStageData) do
|
||
if buildType == data.buildId then
|
||
table.insert(list, data)
|
||
end
|
||
end
|
||
table.sort(list, function(a, b)
|
||
local ad = MyGuildManager.GetMemInfo(a.uid)
|
||
local bd = MyGuildManager.GetMemInfo(b.uid)
|
||
if ad.position == bd.position then
|
||
return a.curForce > b.curForce
|
||
end
|
||
return ad.position < bd.position
|
||
end)
|
||
return list
|
||
end
|
||
|
||
-- 获取玩家防守阶段处于哪一个建筑
|
||
function GuildFightManager.GetDefendStagePlayerBuildType(uid)
|
||
if not this._DefendStageData then
|
||
return
|
||
end
|
||
local data = this._DefendStageData[uid]
|
||
if not data then
|
||
return
|
||
end
|
||
return data.buildId
|
||
end
|
||
|
||
---===============================匹配阶段数据==========================
|
||
|
||
-- 设置敌方公会基础信息
|
||
function this.SetEnemyBaseData(data)
|
||
local _CurStage = this._GuildFightBaseData.type
|
||
local _JoinType = this._GuildFightBaseData.joinType
|
||
-- 轮空,未开始,防守阶段无敌方数据
|
||
if _JoinType == 1 or _CurStage == GUILD_FIGHT_STAGE.UN_START or _CurStage == GUILD_FIGHT_STAGE.DEFEND then
|
||
this._EnemyBaseData = nil
|
||
else
|
||
this._EnemyBaseData = data
|
||
end
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.EnemyBaseDataUpdate)
|
||
end
|
||
-- 获取敌方公会基础信息
|
||
function GuildFightManager.GetEnemyBaseData()
|
||
if not this._GuildFightBaseData then
|
||
return
|
||
end
|
||
local _CurStage = this._GuildFightBaseData.type
|
||
if _CurStage == GUILD_FIGHT_STAGE.EMPTEY or _CurStage == GUILD_FIGHT_STAGE.UN_START or _CurStage == GUILD_FIGHT_STAGE.DEFEND then
|
||
return
|
||
end
|
||
if not this._EnemyBaseData or this._EnemyBaseData.id == 0 then
|
||
return
|
||
end
|
||
return this._EnemyBaseData
|
||
end
|
||
|
||
-- 获取我方公会基础信息
|
||
function GuildFightManager.GetMyBaseData()
|
||
local data = {}
|
||
local baseData = MyGuildManager.GetMyGuildInfo()
|
||
data.name = baseData.name
|
||
data.level = baseData.levle
|
||
data.pictureId = baseData.icon
|
||
data.totalStar = this._EnemyBaseData and this._EnemyBaseData.myTotalStar or this.GetLeftStarNum(GUILD_FIGHT_GUILD_TYPE.MY)
|
||
return data
|
||
end
|
||
|
||
---=========================== 进攻阶段数据 ============================
|
||
local _GuildBuffList = {} -- 公会buff属性数据
|
||
-- 请求获取公会战防守数据
|
||
function GuildFightManager.RequestAttackStageDefendData(func)
|
||
NetManager.RequestAttackStageDefendData(function(msg)
|
||
this._AttackStageData = {}
|
||
for _, guildBuildData in ipairs(msg.info) do
|
||
-- 判断公会类型
|
||
local guildType = GUILD_FIGHT_GUILD_TYPE.MY
|
||
if guildBuildData.gid ~= PlayerManager.familyId then
|
||
guildType = GUILD_FIGHT_GUILD_TYPE.ENEMY
|
||
end
|
||
|
||
-- 保存公会数据
|
||
this._AttackStageData[guildType] = guildBuildData
|
||
-- 清空属性数据
|
||
_GuildBuffList = {}
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.AttackStageDefendDataUpdate, guildType)
|
||
end
|
||
|
||
if func then func() end
|
||
end)
|
||
end
|
||
-- 获取某建筑防守信息数据
|
||
function GuildFightManager.GetAttackStageBuildDefendData(guildType, buildType)
|
||
local list = {}
|
||
if not this._AttackStageData or not this._AttackStageData[guildType] then
|
||
return list
|
||
end
|
||
for _, data in ipairs(this._AttackStageData[guildType].user) do
|
||
if buildType == data.buildId then
|
||
table.insert(list, data)
|
||
end
|
||
end
|
||
return list
|
||
end
|
||
|
||
-- 获取公会战中战力排名前三的玩家数据
|
||
function GuildFightManager.GetAttackStageFirstThreeMem(guildType)
|
||
local list = {}
|
||
if not this._AttackStageData or not this._AttackStageData[guildType] then
|
||
return list
|
||
end
|
||
table.sort(this._AttackStageData[guildType].user, function(a, b)
|
||
return a.userInfo.soulForce > b.userInfo.soulForce
|
||
end)
|
||
local index = 0
|
||
for _, data in ipairs(this._AttackStageData[guildType].user) do
|
||
table.insert(list, data)
|
||
index = index + 1
|
||
if index >= 3 then break end
|
||
end
|
||
return list
|
||
end
|
||
|
||
-- 获取某建筑buff信息
|
||
function GuildFightManager.GetAttackStageBuildBuffData(guildType, buildType)
|
||
if not this._AttackStageData or not this._AttackStageData[guildType] then
|
||
return
|
||
end
|
||
|
||
local list = {}
|
||
for _, data in ipairs(this._AttackStageData[guildType].buildBuff) do
|
||
if buildType == data.buildId then
|
||
for _, id in ipairs(data.buffId) do
|
||
local config = ConfigManager.GetConfigData(ConfigName.FoodsConfig, id)
|
||
if config and config.EffectPara then
|
||
for _, prop in ipairs(config.EffectPara) do
|
||
local pid = prop[1]
|
||
local pv = prop[2]
|
||
if not list[pid] then
|
||
list[pid] = 0
|
||
end
|
||
list[pid] = list[pid] + pv
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
local propList = {}
|
||
for id, value in pairs(list) do
|
||
table.insert(propList, {id = id, value = value})
|
||
end
|
||
table.sort(propList, function(a, b)
|
||
return a.id < b.id
|
||
end)
|
||
return propList
|
||
end
|
||
|
||
-- 获取公会建筑所有buff表(相同buff数值合并)
|
||
function GuildFightManager.GetGuildBuffList(guildType)
|
||
if not _GuildBuffList[guildType] then
|
||
local list = {}
|
||
if not this._AttackStageData or not this._AttackStageData[guildType] then
|
||
return list
|
||
end
|
||
for _, data in ipairs(this._AttackStageData[guildType].buildBuff) do
|
||
for _, id in ipairs(data.buffId) do
|
||
local config = ConfigManager.GetConfigData(ConfigName.FoodsConfig, id)
|
||
if config and config.EffectPara then
|
||
for _, prop in ipairs(config.EffectPara) do
|
||
local pid = prop[1]
|
||
local pv = prop[2]
|
||
if not list[pid] then
|
||
list[pid] = 0
|
||
end
|
||
list[pid] = list[pid] + pv
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
local propList = {}
|
||
for id, value in pairs(list) do
|
||
table.insert(propList, {id = id, value = value})
|
||
end
|
||
table.sort(propList, function(a, b)
|
||
return a.id < b.id
|
||
end)
|
||
|
||
_GuildBuffList[guildType] = propList
|
||
end
|
||
return _GuildBuffList[guildType]
|
||
end
|
||
|
||
|
||
|
||
-- 获取某人的防守信息数据
|
||
function GuildFightManager.GetAttackStagePlayerDefendData(guildType, uid)
|
||
local list = {}
|
||
if not this._AttackStageData or not this._AttackStageData[guildType] then
|
||
return list
|
||
end
|
||
for _, data in ipairs(this._AttackStageData[guildType].user) do
|
||
if uid == data.userInfo.roleUid then
|
||
return data
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
-- 请求进攻
|
||
function GuildFightManager.RequestAttack(uid, func)
|
||
if this.GetCurFightStage() ~= GUILD_FIGHT_STAGE.ATTACK then
|
||
PopupTipPanel.ShowTip(Language[10866])
|
||
return
|
||
end
|
||
|
||
local leftCount = this.GetLeftAttackCount()
|
||
if not leftCount or leftCount <= 0 then
|
||
PopupTipPanel.ShowTip(Language[10723])
|
||
return
|
||
end
|
||
|
||
local enemyGuild = this.GetEnemyBaseData()
|
||
if not enemyGuild.id then return end
|
||
|
||
NetManager.RequestGuildFightAttackEnemy(enemyGuild.id, uid, function(msg)
|
||
this._GuildFightBaseData.attackCount = this._GuildFightBaseData.attackCount + 1
|
||
_HeroBloodData = nil
|
||
this.RequestMyHeroBloodData()
|
||
if func then func(msg) end
|
||
end)
|
||
end
|
||
|
||
-- 公会战某人被kill
|
||
function GuildFightManager.KillSomeBody(msg)
|
||
for guildType, data in pairs(this._AttackStageData) do
|
||
for _, user in ipairs(data.user) do
|
||
if user.userInfo.roleUid == msg.uid then
|
||
|
||
if user.starCount > msg.teamLostStar then
|
||
user.starCount = user.starCount - msg.teamLostStar
|
||
else
|
||
user.starCount = 0
|
||
end
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.AttackStageDefendDataUpdate, guildType)
|
||
return
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
-- 请求我的妖灵师的血量数据
|
||
function GuildFightManager.RequestMyHeroBloodData(func)
|
||
--if not _HeroBloodData then
|
||
NetManager.RequestMyHeroBloodData(function(msg)
|
||
local lostBloodList = {}
|
||
for _, data in ipairs(msg.blood) do
|
||
Log("heroId = ".. data.heroId)
|
||
Log("lostHp = "..data.lostBlood)
|
||
lostBloodList[data.heroId] = data.lostBlood
|
||
end
|
||
local heroHPList = {}
|
||
local allHero = HeroManager.GetAllHeroDatas()
|
||
for _, hero in ipairs(allHero) do
|
||
local lostHp = lostBloodList[hero.dynamicId] or 0
|
||
local leftHp = 1 - lostHp/100
|
||
leftHp = leftHp < 0 and 0 or leftHp
|
||
heroHPList[hero.dynamicId] = leftHp
|
||
end
|
||
_HeroBloodData = heroHPList
|
||
|
||
if func then func() end
|
||
end)
|
||
--end
|
||
--
|
||
--if func then func() end
|
||
end
|
||
|
||
-- 获取英雄血量数据
|
||
function GuildFightManager.GetMyHeroBloodData()
|
||
return _HeroBloodData or {}
|
||
end
|
||
|
||
-- 获取双方剩余的总星数
|
||
local _PosMaxStar = ConfigManager.GetConfigData(ConfigName.GuildSetting, 1).StarNum
|
||
local _BuildStar = ConfigManager.GetConfigData(ConfigName.GuildSetting, 1).BuildingStar
|
||
function GuildFightManager.GetLeftStarNum(guildType)
|
||
local curStage = this.GetCurFightStage()
|
||
-- 计算公会失去的星数
|
||
local function GetLeftStar(guildType)
|
||
-- 获取数据
|
||
local userList = nil
|
||
if curStage == GUILD_FIGHT_STAGE.ATTACK then
|
||
if not this._AttackStageData or not this._AttackStageData[guildType] then
|
||
return 0
|
||
end
|
||
userList = this._AttackStageData[guildType].user
|
||
elseif curStage == GUILD_FIGHT_STAGE.MATCHING and guildType == GUILD_FIGHT_GUILD_TYPE.MY then
|
||
userList = this._DefendStageData
|
||
end
|
||
-- 没有数据返回0
|
||
if not userList then return 0 end
|
||
-- 开始计算星数
|
||
local allLeftStar = 0
|
||
local buildLeftStar = {}
|
||
-- 计算布防人员失去的总星数
|
||
for _, user in ipairs(userList) do
|
||
local leftStar = user.starCount
|
||
allLeftStar = allLeftStar + leftStar
|
||
buildLeftStar[user.buildId] = (buildLeftStar[user.buildId] or 0) + leftStar
|
||
end
|
||
-- 判断建筑是否失守
|
||
for _, buildType in pairs(GUILD_BUILD_TYPE) do
|
||
if buildLeftStar[buildType] and buildLeftStar[buildType] > 0 then
|
||
allLeftStar = allLeftStar + _BuildStar[buildType]
|
||
end
|
||
end
|
||
return allLeftStar
|
||
end
|
||
return GetLeftStar(guildType)
|
||
end
|
||
-- 获取双方获得星数
|
||
function GuildFightManager.GetBothGetStarNum()
|
||
local curStage = GuildFightManager.GetCurFightStage()
|
||
if curStage == GUILD_FIGHT_STAGE.ATTACK then
|
||
-- 没有数据返回0
|
||
if not this._AttackStageData then
|
||
return 0, 0
|
||
end
|
||
-- 计算公会失去的星数
|
||
local function GetLostStar(guildType)
|
||
local data = this._AttackStageData[guildType]
|
||
if not data then
|
||
return 0
|
||
end
|
||
local allLostStar = 0
|
||
local buildLeftStar = {}
|
||
-- 计算布防人员失去的总星数
|
||
for _, user in ipairs(data.user) do
|
||
Log("当前公会类型 = "..guildType..", 成员id = ".. user.userInfo.roleUid..", 职位 = "..user.userInfo.position)
|
||
local maxStar = _PosMaxStar[user.userInfo.position]
|
||
local leftStar = user.starCount
|
||
local lostStar = maxStar - leftStar
|
||
allLostStar = allLostStar + lostStar
|
||
|
||
--if not buildLeftStar[user.buildId] then
|
||
-- buildLeftStar[user.buildId] = 0
|
||
--end
|
||
buildLeftStar[user.buildId] = (buildLeftStar[user.buildId] or 0) + leftStar
|
||
end
|
||
-- 判断建筑是否失守
|
||
for _, buildType in pairs(GUILD_BUILD_TYPE) do
|
||
if not buildLeftStar[buildType] or buildLeftStar[buildType] == 0 then
|
||
allLostStar = allLostStar + _BuildStar[buildType]
|
||
end
|
||
end
|
||
return allLostStar
|
||
end
|
||
-- 我失去的就是敌人得到的,我得到就是敌人失去的
|
||
local myGetStar = GetLostStar(GUILD_FIGHT_GUILD_TYPE.ENEMY)
|
||
local enemyGetStar = GetLostStar(GUILD_FIGHT_GUILD_TYPE.MY)
|
||
return myGetStar, enemyGetStar
|
||
|
||
elseif curStage == GUILD_FIGHT_STAGE.COUNTING then
|
||
if not this._GuildFightResultData then
|
||
return 0, 0
|
||
end
|
||
local myGetStar, enemyGetStar = 0, 0
|
||
for index, starNum in ipairs(this._GuildFightResultData.star) do
|
||
local exStarNum = this._GuildFightResultData.extraStar[index]
|
||
if index <= 3 then
|
||
myGetStar = myGetStar + starNum + exStarNum
|
||
else
|
||
enemyGetStar = enemyGetStar + starNum + exStarNum
|
||
end
|
||
end
|
||
return myGetStar, enemyGetStar
|
||
end
|
||
end
|
||
|
||
|
||
---================================结算数据==========================
|
||
-- 请求公会战结果
|
||
function GuildFightManager.RequestGuildFightResultData(func)
|
||
NetManager.RequestGuildFightResultData(function(msg)
|
||
this._GuildFightResultData = msg
|
||
-- 发送数据更新事件
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.GuildFight.ResultDataUpdate)
|
||
if func then func() end
|
||
end)
|
||
end
|
||
-- 获取公会战结果
|
||
function GuildFightManager.GetGuildFightResultData()
|
||
return this._GuildFightResultData
|
||
end
|
||
-- 请求公会战排名
|
||
function GuildFightManager.RequestGuildFightAttackLogData(type, func)
|
||
NetManager.RequestGuildFightAttackLogData(type, function(msg)
|
||
if not this._GuildFightAttackLogData then
|
||
this._GuildFightAttackLogData = {}
|
||
end
|
||
this._GuildFightAttackLogData[type] = msg.result
|
||
if func then func() end
|
||
end)
|
||
end
|
||
-- 获取公会战排名数据
|
||
function GuildFightManager.GetGuildFightAttackLogData(type)
|
||
if not this._GuildFightAttackLogData then
|
||
return
|
||
end
|
||
return this._GuildFightAttackLogData[type]
|
||
end
|
||
|
||
-- 获取公会战排名奖励
|
||
local _RewardList = nil
|
||
function GuildFightManager.GetGuildFightRewardData()
|
||
if not _RewardList or #_RewardList == 0 then
|
||
_RewardList = {}
|
||
local rewardList = ConfigManager.GetConfig(ConfigName.GuildRewardConfig)
|
||
for id, data in ConfigPairs(rewardList) do
|
||
table.insert(_RewardList, data)
|
||
end
|
||
end
|
||
return _RewardList
|
||
end
|
||
|
||
|
||
--- =============== 阶段tip提示状态设置
|
||
this._CurTipStage = nil
|
||
function GuildFightManager.SetCurTipStage(stage)
|
||
this._CurTipStage = stage
|
||
end
|
||
function GuildFightManager.GetCurTipStage()
|
||
return this._CurTipStage
|
||
end
|
||
|
||
|
||
|
||
return GuildFightManager |