关卡宝箱
This commit is contained in:
parent
f9541d56d8
commit
f74a7f6080
@ -117,7 +117,8 @@ BIReport.RUNE_OPT_TYPE = {
|
||||
BIReport.ITEM_GET_TYPE = {
|
||||
NEW_PLAYER_INITIAL = "NewPlayerInitial", -- 新玩家创号自带
|
||||
UPGRADE_HERO = "UpgradeHero",
|
||||
FIGHT_END = "fight_end",
|
||||
FIGHT_END = "FightEnd",
|
||||
CHAPTER_BOX = "ChapterBox"
|
||||
}
|
||||
|
||||
BIReport.ADS_CLICK_TYPE = {
|
||||
|
||||
@ -25,6 +25,8 @@ local LocalizationGlobalConst =
|
||||
HERO_DESC_5 = "HERO_DESC_5",
|
||||
HERO_DESC_6 = "HERO_DESC_6",
|
||||
HERO_DESC_7 = "HERO_DESC_7",
|
||||
|
||||
REWARD_PREVIEW_DESC = "REWARD_PREVIEW_DESC",
|
||||
}
|
||||
|
||||
return LocalizationGlobalConst
|
||||
@ -11,6 +11,7 @@ local localization_global =
|
||||
["BTN_TEXT_CANCEL"] = "取消",
|
||||
["BTN_TEXT_OK"] = "确定",
|
||||
["BATTLE_DESC_1"] = "是否退出战斗",
|
||||
|
||||
["ITEM_NOT_ENOUGH"] = "{0}不足",
|
||||
["START_DESC"] = "开始",
|
||||
["ELEMENT_NAME_1"] = "红色元素",
|
||||
@ -25,6 +26,19 @@ local localization_global =
|
||||
["HERO_DESC_5"] = "激活",
|
||||
["HERO_DESC_6"] = "已解锁",
|
||||
["HERO_DESC_7"] = "未解锁",
|
||||
|
||||
["GET_REWARDS"] = "获得奖励",
|
||||
["CLICK_CLOSE_DESC"] = "点击关闭",
|
||||
["REWARD_DESC"] = "奖励",
|
||||
["CONTINUE_DESC"] = "继续",
|
||||
["BATTLE_DESC_2"] = "暂停",
|
||||
["BATTLE_DESC_3"] = "刷新",
|
||||
["BATTLE_DESC_4"] = "达到",
|
||||
["BATTLE_DESC_5"] = "胜利",
|
||||
["BATTLE_DESC_6"] = "失败",
|
||||
["BATTLE_DESC_7"] = "累计造成总伤害:<color=#89FF76>{0}</color>",
|
||||
|
||||
["REWARD_PREVIEW_DESC"] = "奖励预览",
|
||||
}
|
||||
|
||||
return localization_global
|
||||
@ -1,5 +1,24 @@
|
||||
local ChapterManager = class("ChapterManager", BaseModule)
|
||||
|
||||
function ChapterManager:openBox(chapterId, index)
|
||||
if DataManager.ChapterData:getChapterBoxRewardGot(chapterId, index) then
|
||||
return
|
||||
end
|
||||
|
||||
local parmas = {
|
||||
id = chapterId,
|
||||
index = index,
|
||||
}
|
||||
ServerDataManager:dataOperate(GConst.ServerDataConst.DATA_OP_BEHAVIOR.OPEN_CHAPTER_BOX, parmas, function(result)
|
||||
if result.status == 0 then
|
||||
GFunc.addRewards(result.rewards, BIReport.ITEM_GET_TYPE.CHAPTER_BOX)
|
||||
GFunc.showRewardBox(result.rewards)
|
||||
DataManager.ChapterData:init(result.chapterData)
|
||||
DataManager.ChapterData:setDirty()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function ChapterManager:startFight()
|
||||
---- 通信
|
||||
ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.STAGE)
|
||||
@ -30,6 +49,7 @@ function ChapterManager:endFight(id, combatReport)
|
||||
GFunc.addRewards(result.rewards, BIReport.ITEM_GET_TYPE.FIGHT_END)
|
||||
ModuleManager.BattleManager:showBattleResultUI(parmas.rewards, combatReport)
|
||||
DataManager.ChapterData:init(result.chapterData)
|
||||
DataManager.ChapterData:setDirty()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
@ -34,4 +34,46 @@ function ServerChapterData:fightChapter(id, victory, wave)
|
||||
end
|
||||
end
|
||||
|
||||
function ServerChapterData:getChapterBoxRewardGot(chapterId, index)
|
||||
local idStr = tostring(chapterId)
|
||||
local list = self.data.chapterBoxInfo[idStr]
|
||||
if not list then
|
||||
return false
|
||||
end
|
||||
|
||||
for _, idx in ipairs(list) do
|
||||
if idx == index then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
function ServerChapterData:getChapterBoxRewards(chapterId, index)
|
||||
local cfg = ConfigManager:getConfig("chapter")[chapterId]
|
||||
if not cfg then
|
||||
return
|
||||
end
|
||||
|
||||
return cfg["box_reward_" .. index]
|
||||
end
|
||||
|
||||
function ServerChapterData:openChapterBox(chapterId, index)
|
||||
local idStr = tostring(chapterId)
|
||||
local list = self.data.chapterBoxInfo[idStr]
|
||||
if not list then
|
||||
self.data.chapterBoxInfo[idStr] = {}
|
||||
else
|
||||
for _, idx in ipairs(list) do
|
||||
if idx == index then
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(self.data.chapterBoxInfo[idStr], index)
|
||||
return true
|
||||
end
|
||||
|
||||
return ServerChapterData
|
||||
@ -1,5 +1,36 @@
|
||||
local ServerChapterManager = {}
|
||||
|
||||
function ServerChapterManager:openBox(params, callback)
|
||||
local result = {
|
||||
status = 1
|
||||
}
|
||||
if params == nil or not params.id or not params.index then
|
||||
if callback then
|
||||
callback(result)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local ServerGameData = ServerDataManager:getServerGameData()
|
||||
|
||||
if not ServerGameData.ChapterData:openChapterBox(params.id, params.index) then
|
||||
if callback then
|
||||
callback(result)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local rewards = ServerGameData.ChapterData:getChapterBoxRewards(params.id, params.index)
|
||||
result.rewards = ServerGameData:addRewards(rewards)
|
||||
result.chapterData = ServerGameData.ChapterData:getCloneData()
|
||||
result.status = 0
|
||||
|
||||
|
||||
if callback then
|
||||
callback(result)
|
||||
end
|
||||
end
|
||||
|
||||
function ServerChapterManager:endFight(params, callback)
|
||||
local result = {
|
||||
status = 1
|
||||
|
||||
@ -11,6 +11,7 @@ ServerDataConst.DATA_OP_BEHAVIOR = {
|
||||
UPDATE_FORMATION = "UPDATE_FORMATION",
|
||||
UPGRADE_HERO = "UPGRADE_HERO",
|
||||
END_FIGHT = "END_FIGHT",
|
||||
OPEN_CHAPTER_BOX = "OPEN_CHAPTER_BOX",
|
||||
}
|
||||
|
||||
return ServerDataConst
|
||||
@ -63,7 +63,8 @@ ServerDataManager.OP_FUNC = {
|
||||
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.SYNC_DATA] = function (...) ServerDataManager:onSyncData(...) end,
|
||||
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.UPDATE_FORMATION] = function (...) ServerDataManager.ServerFormationManager:updateFormation(...) end,
|
||||
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.UPGRADE_HERO] = function (...) ServerDataManager.ServerHeroManager:onUpgradeHero(...) end,
|
||||
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.END_FIGHT] = function(...) ServerDataManager.ServerChapterManager:endFight(...) end
|
||||
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.END_FIGHT] = function(...) ServerDataManager.ServerChapterManager:endFight(...) end,
|
||||
[GConst.ServerDataConst.DATA_OP_BEHAVIOR.OPEN_CHAPTER_BOX] = function(...) ServerDataManager.ServerChapterManager:openBox(...) end,
|
||||
}
|
||||
|
||||
function ServerDataManager:dealGM(params, callback)
|
||||
|
||||
@ -3,7 +3,7 @@ local CHAPTER_PATH = "assets/arts/textures/background/chapter/%s.png"
|
||||
|
||||
local BOX_ICON = {
|
||||
"common_chest_1",
|
||||
"common_chest_2"
|
||||
"common_chest_4"
|
||||
}
|
||||
|
||||
function MainComp:init()
|
||||
@ -85,15 +85,19 @@ function MainComp:refreshChapter(force)
|
||||
end
|
||||
end
|
||||
|
||||
local curMaxWave = DataManager.ChapterData:getChapterMaxWave()
|
||||
local boxCount = DataManager.ChapterData:getChapterBoxCount()
|
||||
slider:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = DataManager.ChapterData:getChapterMaxWave() / boxCount
|
||||
local maxWave = DataManager.ChapterData:getChapterBoxNum(chapterId, boxCount)
|
||||
slider:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = curMaxWave / maxWave
|
||||
|
||||
for index, objs in ipairs(self.boxObjs) do
|
||||
local show = boxCount >= index
|
||||
objs.box:setActive(show)
|
||||
objs.desc:setActive(show)
|
||||
if show then
|
||||
local needWave = DataManager.ChapterData:getChapterBoxNum(chapterId, index)
|
||||
local x = 370 * (index / boxCount)
|
||||
local rewards = DataManager.ChapterData:getChapterBoxByIndex(nil, index)
|
||||
local rewards = DataManager.ChapterData:getChapterBoxRewards(nil, index)
|
||||
local num = DataManager.ChapterData:getChapterBoxNum(nil, index)
|
||||
local rewardGot = DataManager.ChapterData:getChapterBoxRewardGot(nil, index)
|
||||
local icon = BOX_ICON[1]
|
||||
@ -101,7 +105,11 @@ function MainComp:refreshChapter(force)
|
||||
icon = BOX_ICON[2]
|
||||
end
|
||||
objs.box:addClickListener(function()
|
||||
if needWave <= curMaxWave and not rewardGot then
|
||||
ModuleManager.ChapterManager:openBox(chapterId, index)
|
||||
else
|
||||
ModuleManager.TipsManager:showRewardsTips(rewards, nil, objs.box)
|
||||
end
|
||||
end)
|
||||
objs.box:setSprite(GConst.ATLAS_PATH.COMMON, icon)
|
||||
objs.box:setAnchoredPositionX(x)
|
||||
|
||||
@ -19,7 +19,7 @@ function RewardsTips:init()
|
||||
if not self.rewardCells then
|
||||
self.rewardCells = {}
|
||||
for i = 1, 3 do
|
||||
self.rewardCells[i] = CellManager:addCellComp(uiMap["rewards_tips.reward_node.reward_layout.reward_cell_" .. i], GConst.TYPEOF_LUA_CLASS.REWARD_CELL)
|
||||
self.rewardCells[i] = CellManager:addCellComp(uiMap["rewards_tips.bg.reward_node.reward_layout.reward_cell_" .. i], GConst.TYPEOF_LUA_CLASS.REWARD_CELL)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -38,7 +38,7 @@ function RewardsTips:onRefresh()
|
||||
self:closeUI()
|
||||
end)
|
||||
|
||||
self.descTx:setText(self.params.customTitleStr or I18N:getGlobalText(I18N.GlobalConst.BOUNTY_DESC_11))
|
||||
self.descTx:setText(self.params.customTitleStr or I18N:getGlobalText(I18N.GlobalConst.REWARD_PREVIEW_DESC))
|
||||
if self.params.rewards then
|
||||
for i, cell in ipairs(self.rewardCells) do
|
||||
if self.params.rewards[i] then
|
||||
|
||||
@ -83,18 +83,6 @@ function ChapterData:getChapterBoxNum(chapterId, index)
|
||||
end
|
||||
end
|
||||
|
||||
function ChapterData:getChapterBoxByIndex(chapterId, index)
|
||||
chapterId = chapterId or self:getChapterId()
|
||||
if not self:getChapterBoxNum(chapterId, index) then
|
||||
return
|
||||
end
|
||||
|
||||
local cfg = self:getChapterCfg()[chapterId]
|
||||
if cfg then
|
||||
return cfg["box_reward_" .. index]
|
||||
end
|
||||
end
|
||||
|
||||
function ChapterData:getChapterBoxRewardGot(chapterId, index)
|
||||
chapterId = tostring(chapterId or self:getChapterId())
|
||||
local list = self.data.chapterBoxInfo[chapterId]
|
||||
@ -111,6 +99,18 @@ function ChapterData:getChapterBoxRewardGot(chapterId, index)
|
||||
return false
|
||||
end
|
||||
|
||||
function ChapterData:getChapterBoxRewards(chapterId, index)
|
||||
chapterId = chapterId or self:getChapterId()
|
||||
if not self:getChapterBoxNum(chapterId, index) then
|
||||
return
|
||||
end
|
||||
|
||||
local cfg = self:getChapterCfg()[chapterId]
|
||||
if cfg then
|
||||
return cfg["box_reward_" .. index]
|
||||
end
|
||||
end
|
||||
|
||||
function ChapterData:getChapterMaxWave(chapterId)
|
||||
chapterId = tostring(chapterId or self:getChapterId())
|
||||
if self.data.chapterFightInfo[chapterId] then
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user