miduo_client/Assets/ManagedResources/~Lua/Modules/MonsterCamp/MonsterCampManager.lua

281 lines
10 KiB
Lua
Raw Normal View History

2020-08-25 15:46:38 +08:00
MonsterCampManager = {};
2020-05-09 13:31:21 +08:00
local this = MonsterCampManager
local monsterCampConfig = ConfigManager.GetConfig(ConfigName.FloodConfig)
local monsterGroupConfig = ConfigManager.GetConfig(ConfigName.MonsterGroup)
local monsterConfig = ConfigManager.GetConfig(ConfigName.MonsterConfig)
local monterViewConfig = ConfigManager.GetConfig(ConfigName.MonsterViewConfig)
local heroViewConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
local resConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
2020-12-14 09:54:50 +08:00
local CampTowerConfig = ConfigManager.GetConfig(ConfigName.CampTowerConfig)
--四灵试炼数据
this.fourMonsterData = {}
2020-05-09 13:31:21 +08:00
function this.Initialize()
this.monsterWave = 0 -- 当前妖兽波次
this.m_Jump = false -- 跳过战斗设置
2020-12-21 09:51:08 +08:00
----------------------------------------------------------------------四灵试炼------------------------------------------------------------------
2020-12-14 09:54:50 +08:00
local config = {}
for i = 1 ,4 do
this.fourMonsterData[i] = {}
local config = ConfigManager.GetConfigDataByKey(ConfigName.CampTowerConfig,"CampId",i)
this.fourMonsterData[i].canFightId = config.Privilege[1]
this.fourMonsterData[i].freeTimeId = config.Privilege[2]
this.fourMonsterData[i].buyTimeId = config.Privilege[3]
2020-12-21 09:51:08 +08:00
this.fourMonsterData[i].monsterWave = 0
--0 未开 1已开
this.fourMonsterData[i].openState = 0
this.fourMonsterData[i].freeTime = 0
this.fourMonsterData[i].buyTime = 0
this.fourMonsterData[i].canFightTime = 0
this.fourMonsterData[i].fourElementType = i
2020-12-14 09:54:50 +08:00
end
end
function this.InitFourMonsterData(msg)
2020-12-21 09:51:08 +08:00
for i = 1 , #msg.info do
LogGreen("type:"..msg.info[i].type.." currentFloor:"..msg.info[i].currentFloor.." msg.info[i].remainTimes:"..msg.info[i].remainTimes.." overTime:"..msg.info[i].overTime)
local index = msg.info[i].type
this.fourMonsterData[index].monsterWave = msg.info[i].currentFloor
this.fourMonsterData[index].canFightTime = msg.info[i].remainTimes
this.fourMonsterData[index].openState = msg.info[i].overTime
2020-12-14 09:54:50 +08:00
end
end
--设置扫荡剩余次数
function this.GetTimeTip(campId)
LogBlue("购买总次数:"..PrivilegeManager.GetPrivilegeNumber(this.fourMonsterData[campId].buyTimeId))
LogBlue("购买使用的次数:"..PrivilegeManager.GetPrivilegeUsedTimes(this.fourMonsterData[campId].buyTimeId))
LogBlue("免费总次数:"..PrivilegeManager.GetPrivilegeNumber(this.fourMonsterData[campId].freeTimeId))
LogBlue("免费使用次数:"..PrivilegeManager.GetPrivilegeUsedTimes(this.fourMonsterData[campId].freeTimeId))
this.fourMonsterData[campId].buyTime = PrivilegeManager.GetPrivilegeRemainValue(this.fourMonsterData[campId].buyTimeId)
LogBlue("购买剩余次数:"..this.fourMonsterData[campId].buyTime)
this.fourMonsterData[campId].freeTime= PrivilegeManager.GetPrivilegeRemainValue(this.fourMonsterData[campId].freeTimeId) --免费次数
LogBlue("免费剩余次数:"..this.fourMonsterData[campId].buyTime)
return this.fourMonsterData[campId].freeTime,this.fourMonsterData[campId].buyTime
end
--获取当前通过的总层数
function this.GetFourElementTotalWave()
local waves = 0
for k,v in pairs(this.fourMonsterData) do
2020-12-21 09:51:08 +08:00
waves = waves + v.monsterWave
2020-12-14 09:54:50 +08:00
end
return waves
2020-05-09 13:31:21 +08:00
end
2020-12-21 09:51:08 +08:00
function this.GetCurFourElementMonsterInfo(index)
return this.fourMonsterData[index]
end
function this.GetFourElementMonstersInfo(curType,curWave)
local monsterInfo = {}
local data = ConfigManager.GetConfigDataByDoubleKey(ConfigName.CampTowerConfig,"CampId",curType,"FloorId",curWave)
for i = 1, curWave + data.UpLimitWave do
local tempData = this.GetFourElementMonsterInfoByWave(curType,i)
if tempData then
table.insert(monsterInfo,tempData)
end
end
return monsterInfo
end
function this.GetFourElementMonsterInfoByWave(curType,wave)
local tempConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.CampTowerConfig,"CampId",curType,"FloorId",wave)
if not tempConfig then
return nil
end
local data = {}
data.wave = tempConfig.FloorId
--战力
data.power = tempConfig.Force
data.firstReward = {}
--首通奖励
if tempConfig.FirstReward and #tempConfig.FirstReward > 0 then
for i = 1, #tempConfig.FirstReward do
table.insert(data.firstReward,{id = tempConfig.FirstReward[i][1],num = tempConfig.FirstReward[i][2]})
end
end
data.commonReward = {}
--首通奖励
if tempConfig.CommonReward and #tempConfig.CommonReward > 0 then
for i = 1, #tempConfig.CommonReward do
table.insert(data.commonReward,{id = tempConfig.CommonReward[i][1],num = tempConfig.CommonReward[i][2]})
end
end
local monsterGroupId = tempConfig.Monster
-- 默认显示第一只怪
local id = monsterGroupConfig[monsterGroupId].Contents[1][1]
data.monsterConfig = monsterConfig[id]
data.herodata = this.SetSingleMonster(data.monsterConfig.MonsterId)
return data
end
function this.SetSingleMonster(id)
local herodata = {}
local _configData = ConfigManager.GetConfigData(ConfigName.HeroConfig,id)
herodata.live = GetResourcePath(_configData.Live)
herodata.painting = GetResourcePath(_configData.Painting)
herodata.icon = GetResourcePath(_configData.Icon)
herodata.scale = _configData.Scale
herodata.position = _configData.Position
herodata.profession = _configData.Profession
herodata.profession = _configData.Profession
herodata.ProfessionResourceId = _configData.ProfessionResourceId
if GetJobSpriteStrByJobNum(_configData.Profession) then
herodata.professionIcon = GetJobSpriteStrByJobNum(_configData.Profession)
else
herodata.professionIcon = GetJobSpriteStrByJobNum(1)
end
herodata.name = _configData.ReadingName
herodata.property = _configData.PropertyName
return herodata
end
function this.GetMonsterTeamInfo()
local tempConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.CampTowerConfig,"CampId",curType,"FloorId",wave)
if not tempConfig then
return nil
end
local teamMonsterInfo = {}
local monsterGroupId = tempConfig.Monster
for i = 1, #monsterGroupConfig[monsterGroupId].Contents[1] do
local id = monsterConfig[monsterGroupConfig[monsterGroupId].Contents[1][i]].MonsterId
local monsterConfig = this.SetSingleMonster(data.monsterConfig.MonsterId)
end
end
----------------------------------------------------------------------四灵试炼------------------------------------------------------------------
2020-05-09 13:31:21 +08:00
-- 返回5个大虾的信息, 显示怪物的第一个,
function this.GetNextWaveMonsterInfo()
local curWave = this.monsterWave
local monsterInfo = {}
--遇到表格的结尾处,则停止
for i = curWave + 1, curWave + 5 do
if not monsterCampConfig[i] then break end
local data = {}
data.rewardShow = monsterCampConfig[i].RewardShow
local monsterGroupId = monsterCampConfig[i].Monster
-- 默认显示第一只怪
local id = monsterGroupConfig[monsterGroupId].Contents[1][1]
local monsterId = monsterConfig[id].MonsterId
local resId = 0
if monsterId > 10000 then -- 这是人类
resId = heroViewConfig[monsterId].Icon
else -- 这是妖精
resId = monterViewConfig[monsterId].MonsterIcon
end
local resPath = GetResourcePath(resId)
local icon = Util.LoadSprite(resPath)
data.icon = icon
data.name = resConfig[resId].Desc
monsterInfo[i] = data
end
return monsterInfo
end
-- 返回当前怪物阵容信息
function this.GetCurMonsterInfo()
local curWave = this.monsterWave
local monsterInfo = {}
local mainMonsterInfo = {}
local data = {}
data.icon = {}
data.level={}
data.rewardShow = monsterCampConfig[curWave].RewardShow
local monsterGroupId = monsterCampConfig[curWave].Monster
local ids = monsterGroupConfig[monsterGroupId].Contents
for i = 1, #ids do
for j = 1, #ids[i] do
-- 所有怪信息
local monsterId = monsterConfig[ids[i][j]].MonsterId
local resId = 0
if monsterId > 10000 then -- 这是人类
resId = heroViewConfig[monsterId].Icon
else -- 这是妖精
resId = monterViewConfig[monsterId].MonsterIcon
end
local resPath = GetResourcePath(resId)
local icon = Util.LoadSprite(resPath)
data.icon[#data.icon + 1] = icon
data.level[j]= monsterConfig[ids[i][j]].Level
-- 主怪信息
if i == 1 and j == 1 then
mainMonsterInfo.name = resConfig[resId].Desc
mainMonsterInfo.live2dPath = resConfig[resId].Name
mainMonsterInfo.monsterId = monsterId
end
end
end
monsterInfo = data
return monsterInfo, mainMonsterInfo
end
-- 消耗道具上限值
function this.GetMaxCostItem()
return PrivilegeManager.GetPrivilegeNumber(23)
end
-- 是否需要回复
function this.IsNeedSupply()
return BagManager.GetItemCountById(53) < this.GetMaxCostItem()
end
--返回当前的怪物组Id
function this.GetCurWaveMonsterGroupId()
return monsterCampConfig[this.monsterWave].Monster
end
-- 通过怪物ID返回头像
function this.GetIconByMonsterId(monsterId)
local resId = 0
local level = 0
local icon
local liveId = monsterConfig[monsterId].MonsterId
if liveId > 10000 then -- 这是人类
resId = heroViewConfig[liveId].Icon
else -- 这是妖精
resId = monterViewConfig[liveId].MonsterIcon
end
level = monsterConfig[monsterId].Level
icon =Util.LoadSprite(GetResourcePath(resId))
return icon, level
end
-- 获取表的上限值
function this.GetMaxNum()
local max = 0
for k, v in ConfigPairs(monsterCampConfig) do
max = max > k and max or k
end
return max
end
-- 跳过战斗设置
function this.GetBattleJump()
2020-06-13 11:47:13 +08:00
return false
-- if not this.CheckBattleJump() then
-- return false
-- end
-- return this.m_Jump
2020-05-09 13:31:21 +08:00
end
function this.SetBattleJump(state)
this.m_Jump = state
end
function this.CheckBattleJump()
local isOpen = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.MonsterCampJump)
return isOpen
end
2020-06-23 18:36:24 +08:00
return this