Merge branch 'dev' of git.juzugame.com:b6-client/b6-lua into dev

This commit is contained in:
chenxi 2023-04-13 22:04:25 +08:00
commit 15a182cd30
31 changed files with 742 additions and 190 deletions

View File

@ -116,6 +116,7 @@ BIReport.RUNE_OPT_TYPE = {
BIReport.ITEM_GET_TYPE = {
NEW_PLAYER_INITIAL = "NewPlayerInitial", -- 新玩家创号自带
UPGRADE_HERO = "UpgradeHero"
}
BIReport.ADS_CLICK_TYPE = {
@ -744,32 +745,19 @@ function BIReport:postGemGet(bigNum, getType, itemId)
end
-- 钻石使用
function BIReport:postGemUse(bigNum, getType, itemId)
-- CoinNum 代币数量
-- Type 使用类型
-- CoinsType 代币类型
-- IsNew 是否是新用户
-- MaxLevel 最大关卡
local itemBigNum = DataManager.BagData.ItemData:getItemBigNumById(itemId)
function BIReport:postGemUse(num, getType, itemId)
-- CoinNum 代币数量 减少代币时 Int 使用代币数量
-- Type 使用类型 String Box=开启宝箱、复活=Revive、天赋升级=Talent、Equip=装备升级
-- CoinsType 代币类型 String Gold=金币、Gems=钻石
-- IsNew 是否是新用户 Boolean 是否为当天新用户True = 是False = 否
-- MaxChapter 最大章节 Int 已解锁的最大章节
local args = {
type = getType,
-- coin_value = bigNum.value,
-- coin_unit = bigNum.unit,
coin_num = num,
coin_type = BIReport.COIN_TYPE[itemId],
-- coin_all_value = itemBigNum.value,
-- coin_all_unit = itemBigNum.unit,
coin_all = DataManager.BagData.ItemData:getItemNumById(itemId),
-- max_chapter = DataManager.StageData:getNewChapterId(),
}
if itemId == GConst.ItemConst.ITEM_ID_GEM then
args.coin_value = BigNumOpt.bigNum2Num(bigNum)
args.coin_unit = 0
args.coin_all_value = BigNumOpt.bigNum2Num(itemBigNum)
args.coin_all_unit = 0
else
args.coin_value = bigNum.value
args.coin_unit = bigNum.unit
args.coin_all_value = itemBigNum.value
args.coin_all_unit = itemBigNum.unit
end
self:report(EVENT_NAME_COIN_USE, args)
BIReport:printArgsStr(EVENT_NAME_COIN_USE, args)
end

View File

@ -85,7 +85,7 @@ function DataManager:initWithServerData(data)
self.PlayerData:init(data.PlayerData)
self.ChapterData:init(data.ChapterData)
self.HeroData:init(data.HeroData)
self.BagData:init(data)
self.BagData:init(data.BagData)
self.FormationData:init(data.FormationData)
self:scheduleGlobal()

View File

@ -12,6 +12,7 @@ local MODULE_PATHS = {
TaskManager = "app/module/task/task_manager",
BattleManager = "app/module/battle/battle_manager",
FormationManager = "app/module/formation/formation_manager",
HeroManager = "app/module/hero/hero_manager",
}
-- 这里的key对应func_open里的id

View File

@ -11,6 +11,18 @@ local LocalizationGlobalConst =
BTN_TEXT_CANCEL = "BTN_TEXT_CANCEL",
BTN_TEXT_OK = "BTN_TEXT_OK",
BATTLE_DESC_1 = "BATTLE_DESC_1",
ITEM_NOT_ENOUGH = "ITEM_NOT_ENOUGH",
START_DESC = "START_DESC",
["ELEMENT_NAME_2"] = "ELEMENT_NAME_2",
["ELEMENT_NAME_3"] = "ELEMENT_NAME_3",
["ELEMENT_NAME_4"] = "ELEMENT_NAME_4",
["ELEMENT_NAME_5"] = "ELEMENT_NAME_5",
["HERO_DESC_1"] = "HERO_DESC_1",
["HERO_DESC_2"] = "HERO_DESC_2",
["HERO_DESC_3"] = "HERO_DESC_3",
["HERO_DESC_4"] = "HERO_DESC_4",
["HERO_DESC_5"] = "HERO_DESC_5",
}
return LocalizationGlobalConst

View File

@ -12,7 +12,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=1
["icon"]="1"
},
[2]={
["universal"]=1,
@ -27,7 +27,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=1
["icon"]="1"
},
[3]={
["universal"]=1,
@ -42,7 +42,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=1
["icon"]="1"
},
[4]={
["universal"]=1,
@ -57,7 +57,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=2
["icon"]="2"
},
[5]={
["universal"]=1,
@ -72,7 +72,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=2
["icon"]="2"
},
[6]={
["universal"]=1,
@ -87,7 +87,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=2
["icon"]="2"
},
[7]={
["universal"]=1,
@ -102,7 +102,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=3
["icon"]="3"
},
[8]={
["universal"]=1,
@ -117,7 +117,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=3
["icon"]="3"
},
[9]={
["universal"]=1,
@ -132,7 +132,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=3
["icon"]="3"
},
[10]={
["universal"]=1,
@ -147,7 +147,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=4
["icon"]="4"
},
[11]={
["universal"]=1,
@ -162,7 +162,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=4
["icon"]="4"
},
[12]={
["universal"]=1,
@ -177,7 +177,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=4
["icon"]="4"
},
[13]={
["universal"]=1,
@ -192,7 +192,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=5
["icon"]="5"
},
[14]={
["universal"]=1,
@ -207,7 +207,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=5
["icon"]="5"
},
[15]={
["universal"]=1,
@ -222,7 +222,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=5
["icon"]="5"
},
[16]={
["universal"]=1,
@ -237,7 +237,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=6
["icon"]="6"
},
[17]={
["universal"]=1,
@ -252,7 +252,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=6
["icon"]="6"
},
[18]={
["universal"]=1,
@ -267,7 +267,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=6
["icon"]="6"
},
[19]={
["universal"]=1,
@ -284,7 +284,7 @@ local skill_rogue = {
}
},
["obj"]=1,
["icon"]=7
["icon"]="7"
},
[20]={
["universal"]=1,
@ -299,7 +299,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=8
["icon"]="8"
},
[21]={
["universal"]=1,
@ -314,7 +314,7 @@ local skill_rogue = {
["maxnum"]=500
}
},
["icon"]=9
["icon"]="9"
},
[22]={
["universal"]=1,
@ -329,7 +329,7 @@ local skill_rogue = {
["maxnum"]=1200
}
},
["icon"]=9
["icon"]="9"
},
[23]={
["universal"]=1,
@ -344,7 +344,7 @@ local skill_rogue = {
["maxnum"]=2000
}
},
["icon"]=9
["icon"]="9"
},
[24]={
["universal"]=1,
@ -361,7 +361,7 @@ local skill_rogue = {
}
},
["obj"]=1,
["icon"]=10
["icon"]="10"
},
[25]={
["universal"]=1,
@ -376,7 +376,7 @@ local skill_rogue = {
["maxnum"]=100
}
},
["icon"]=11
["icon"]="11"
},
[26]={
["universal"]=1,
@ -391,7 +391,7 @@ local skill_rogue = {
["maxnum"]=1000
}
},
["icon"]=12
["icon"]="12"
},
[27]={
["universal"]=1,
@ -406,7 +406,7 @@ local skill_rogue = {
["maxnum"]=1000
}
},
["icon"]=13
["icon"]="13"
},
[28]={
["universal"]=1,
@ -421,7 +421,7 @@ local skill_rogue = {
["maxnum"]=1000
}
},
["icon"]=14
["icon"]="14"
},
[29]={
["universal"]=1,
@ -437,7 +437,7 @@ local skill_rogue = {
}
},
["obj"]=1,
["icon"]=20
["icon"]="20"
},
[30]={
["universal"]=1,
@ -453,7 +453,7 @@ local skill_rogue = {
["range"]=2
}
},
["icon"]=15
["icon"]="15"
},
[31]={
["universal"]=1,
@ -469,7 +469,7 @@ local skill_rogue = {
["range"]=4
}
},
["icon"]=15
["icon"]="15"
},
[32]={
["universal"]=1,
@ -485,7 +485,7 @@ local skill_rogue = {
["range"]=5
}
},
["icon"]=15
["icon"]="15"
},
[33]={
["universal"]=1,
@ -501,7 +501,7 @@ local skill_rogue = {
["range"]=2
}
},
["icon"]=16
["icon"]="16"
},
[34]={
["universal"]=1,
@ -517,7 +517,7 @@ local skill_rogue = {
["range"]=4
}
},
["icon"]=16
["icon"]="16"
},
[35]={
["universal"]=1,
@ -533,7 +533,7 @@ local skill_rogue = {
["range"]=5
}
},
["icon"]=16
["icon"]="16"
},
[36]={
["universal"]=1,
@ -549,7 +549,7 @@ local skill_rogue = {
["range"]=2
}
},
["icon"]=17
["icon"]="17"
},
[37]={
["universal"]=1,
@ -565,7 +565,7 @@ local skill_rogue = {
["range"]=4
}
},
["icon"]=17
["icon"]="17"
},
[38]={
["universal"]=1,
@ -581,7 +581,7 @@ local skill_rogue = {
["range"]=5
}
},
["icon"]=17
["icon"]="17"
},
[39]={
["universal"]=1,
@ -597,7 +597,7 @@ local skill_rogue = {
["range"]=2
}
},
["icon"]=18
["icon"]="18"
},
[40]={
["universal"]=1,
@ -613,7 +613,7 @@ local skill_rogue = {
["range"]=4
}
},
["icon"]=18
["icon"]="18"
},
[41]={
["universal"]=1,
@ -629,7 +629,7 @@ local skill_rogue = {
["range"]=5
}
},
["icon"]=18
["icon"]="18"
},
[42]={
["universal"]=1,
@ -645,7 +645,7 @@ local skill_rogue = {
["range"]=2
}
},
["icon"]=19
["icon"]="19"
},
[43]={
["universal"]=1,
@ -661,7 +661,7 @@ local skill_rogue = {
["range"]=4
}
},
["icon"]=19
["icon"]="19"
},
[44]={
["universal"]=1,
@ -677,7 +677,7 @@ local skill_rogue = {
["range"]=5
}
},
["icon"]=19
["icon"]="19"
},
[200101]={
["limit_times"]=1,
@ -695,7 +695,7 @@ local skill_rogue = {
["range"]=1
}
},
["icon"]=200101
["icon"]="200101"
},
[200102]={
["limit_times"]=2,
@ -706,7 +706,7 @@ local skill_rogue = {
1000
},
["skill_position"]=3,
["icon"]=200102
["icon"]="200102"
},
[200103]={
["limit_times"]=1,
@ -723,7 +723,7 @@ local skill_rogue = {
}
},
["obj"]=2,
["icon"]=200103
["icon"]="200103"
},
[200201]={
["limit_times"]=1,
@ -734,7 +734,7 @@ local skill_rogue = {
21
},
["skill_position"]=2,
["icon"]=200201
["icon"]="200201"
},
[200202]={
["limit_times"]=2,
@ -745,7 +745,7 @@ local skill_rogue = {
1000
},
["skill_position"]=2,
["icon"]=200202
["icon"]="200202"
},
[200203]={
["limit_times"]=1,
@ -756,7 +756,7 @@ local skill_rogue = {
1
},
["skill_position"]=2,
["icon"]=200203
["icon"]="200203"
},
[200301]={
["limit_times"]=1,
@ -764,7 +764,7 @@ local skill_rogue = {
["qlt"]=3,
["type"]=4,
["skill_position"]=4,
["icon"]=200301
["icon"]="200301"
},
[200302]={
["limit_times"]=3,
@ -775,7 +775,7 @@ local skill_rogue = {
1000
},
["skill_position"]=4,
["icon"]=200302
["icon"]="200302"
},
[200303]={
["limit_times"]=2,
@ -789,7 +789,7 @@ local skill_rogue = {
["range"]=2
}
},
["icon"]=200303
["icon"]="200303"
},
[200401]={
["limit_times"]=1,
@ -797,7 +797,7 @@ local skill_rogue = {
["qlt"]=3,
["type"]=4,
["skill_position"]=5,
["icon"]=200401
["icon"]="200401"
},
[200402]={
["limit_times"]=2,
@ -809,7 +809,7 @@ local skill_rogue = {
1000
},
["skill_position"]=5,
["icon"]=200402
["icon"]="200402"
},
[200403]={
["limit_times"]=1,
@ -821,7 +821,7 @@ local skill_rogue = {
1
},
["skill_position"]=5,
["icon"]=200403
["icon"]="200403"
},
[200501]={
["limit_times"]=1,
@ -839,7 +839,7 @@ local skill_rogue = {
["range"]=1
}
},
["icon"]=200501
["icon"]="200501"
},
[200502]={
["limit_times"]=2,
@ -850,7 +850,7 @@ local skill_rogue = {
1000
},
["skill_position"]=1,
["icon"]=200502
["icon"]="200502"
},
[200503]={
["limit_times"]=1,
@ -866,7 +866,7 @@ local skill_rogue = {
["round"]=1
}
},
["icon"]=200503
["icon"]="200503"
},
[200601]={
["limit_times"]=1,
@ -874,7 +874,7 @@ local skill_rogue = {
["qlt"]=3,
["type"]=4,
["skill_position"]=3,
["icon"]=200601
["icon"]="200601"
},
[200602]={
["limit_times"]=2,
@ -885,7 +885,7 @@ local skill_rogue = {
1000
},
["skill_position"]=3,
["icon"]=200602
["icon"]="200602"
},
[200603]={
["limit_times"]=1,
@ -901,7 +901,7 @@ local skill_rogue = {
["round"]=1
}
},
["icon"]=200603
["icon"]="200603"
},
[200701]={
["limit_times"]=1,
@ -912,7 +912,7 @@ local skill_rogue = {
71
},
["skill_position"]=2,
["icon"]=200701
["icon"]="200701"
},
[200702]={
["limit_times"]=2,
@ -923,7 +923,7 @@ local skill_rogue = {
1000
},
["skill_position"]=2,
["icon"]=200702
["icon"]="200702"
},
[200703]={
["limit_times"]=1,
@ -934,7 +934,7 @@ local skill_rogue = {
72
},
["skill_position"]=2,
["icon"]=200703
["icon"]="200703"
},
[200801]={
["limit_times"]=1,
@ -945,7 +945,7 @@ local skill_rogue = {
81
},
["skill_position"]=4,
["icon"]=200801
["icon"]="200801"
},
[200802]={
["limit_times"]=2,
@ -956,7 +956,7 @@ local skill_rogue = {
1000
},
["skill_position"]=4,
["icon"]=200802
["icon"]="200802"
},
[200803]={
["limit_times"]=1,
@ -968,7 +968,7 @@ local skill_rogue = {
1
},
["skill_position"]=4,
["icon"]=200803
["icon"]="200803"
}
}
local config = {

View File

@ -11,6 +11,19 @@ local localization_global =
["BTN_TEXT_CANCEL"] = "取消",
["BTN_TEXT_OK"] = "确定",
["BATTLE_DESC_1"] = "是否退出战斗",
["ITEM_NOT_ENOUGH"] = "{0}不足",
["START_DESC"] = "开始",
["ELEMENT_NAME_1"] = "红色元素",
["ELEMENT_NAME_2"] = "黄色元素",
["ELEMENT_NAME_3"] = "绿色元素",
["ELEMENT_NAME_4"] = "蓝色元素",
["ELEMENT_NAME_5"] = "紫色元素",
["HERO_DESC_1"] = "等级{0}",
["HERO_DESC_2"] = "生命",
["HERO_DESC_3"] = "攻击力",
["HERO_DESC_4"] = "升级",
["HERO_DESC_5"] = "激活",
}
return localization_global

View File

@ -163,6 +163,7 @@ GConst.TYPEOF_LUA_CLASS = {
ITEM_CELL = "app/ui/common/cell/item_cell",
HERO_CELL = "app/ui/common/cell/hero_cell",
REWARD_CELL = "app/ui/common/cell/reward_cell",
LARGE_HERO_CELL = "app/ui/common/cell/large_hero_cell",
}
GConst.ATLAS_PATH = {
@ -173,6 +174,7 @@ GConst.ATLAS_PATH = {
UI_LOGIN = "assets/arts/atlas/ui/login.asset",
ICON_SKILL = "assets/arts/atlas/icon/skill.asset",
ICON_HERO = "assets/arts/atlas/icon/hero.asset",
ICON_SKILL_BUFF = "assets/arts/atlas/icon/skill_buff.asset",
}
GConst.TOUCH_EVENT = {

View File

@ -599,6 +599,7 @@ end
function GFunc.showItemNotEnough(itemId)
local gemTextInfo = I18N:getConfig("item")[itemId]
Logger.printTable(gemTextInfo)
if gemTextInfo then
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.ITEM_NOT_ENOUGH, gemTextInfo.name))
end
@ -611,6 +612,22 @@ function GFunc.showJewelryNotEnough(itemId)
end
end
function GFunc.checkCost(id, num, showToast, giftType)
if num <= 0 then
BIReport:postDataException(id, num, giftType)
-- return false
end
local count = DataManager.BagData.ItemData:getItemNumById(id)
if count < num then
if showToast then
GFunc.showItemNotEnough(id)
end
return false
else
return true
end
end
function GFunc.checkCostNum(id, num, giftType)
if num <= 0 then
BIReport:postDataException(id, num, giftType)

View File

@ -2,7 +2,7 @@
local BattleManager = class("BattleManager", BaseModule)
local BattleConst = GConst.BattleConst
BattleManager.SKILL_HERO_CFG = ConfigManager:getConfig("skill_hero")
BattleManager.SKILL_HERO_CFG = ConfigManager:getConfig("skill")
local BATTLE_CONTROLLER_BASE = "app/module/battle/controller/battle_controller"

View File

@ -0,0 +1,74 @@
local HeroManager = class("HeroManager", BaseModule)
function HeroManager:showHeroDetailUI(heroId)
UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId})
end
function HeroManager:getMatchTypeIcon(matchType)
return GConst.HeroConst.MATCH_ICON_NAME[matchType]
end
function HeroManager:getMatchTypeName(matchType)
return I18N:getGlobalText("ELEMENT_NAME_" .. matchType)
end
function HeroManager:getSkillDesc(skillId)
return I18N:getConfig("skill")[skillId].desc
end
function HeroManager:getSkillIcon(skillId)
return ConfigManager:getConfig("skill")[skillId].icon
end
function HeroManager:getSkillRogueDesc(skillId)
return I18N:getConfig("skill_rogue")[skillId].desc
end
function HeroManager:getSkillRogueIcon(skillId)
return ConfigManager:getConfig("skill_rogue")[skillId].icon
end
function HeroManager:getActiveRogueLvs()
if not self.activeRogueLvs then
self.activeRogueLvs = {}
local lvMap = {}
for lv, info in ipairs(ConfigManager:getConfig("hero_level")) do
if not lvMap[info.unlock_skill] then
table.insert(self.activeRogueLvs, lv)
lvMap[info.unlock_skill] = true
end
end
end
return self.activeRogueLvs
end
function HeroManager:upgradeHero(heroId)
local heroEntity = DataManager.HeroData:getHeroById(heroId)
if not heroEntity then
return
end
local materials = heroEntity:getLvUpMaterials()
if not materials or not materials[2] then
return
end
local fragmentCost = materials[1] or 0
if not GFunc.checkCost(heroEntity:getFramentId(), fragmentCost, true) then
return
end
if not heroEntity:canLvUp() then
return
end
ServerDataManager:dataOperate(GConst.ServerDataConst.DATA_OP_BEHAVIOR.UPGRADE_HERO, {heroId = heroId}, function(result)
if result.status == 0 then
GFunc.addCosts(result.costs, BIReport.ITEM_GET_TYPE.UPGRADE_HERO)
DataManager.HeroData:setHeroLv(result.heroId, result.lv)
end
end)
end
return HeroManager

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 043758738c8f026498f9ccf0fa929a26
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -14,10 +14,19 @@ function ServerHeroData:addHero(id, lv)
if self.data.heroes[idStr] then
return
end
self.data.heroes[idStr] = {
cfg_id = id,
lv = lv,
}
end
function ServerHeroData:upgradeHero(heroId)
local idStr = tostring(heroId)
if not self.data.heroes[idStr] then
self:addHero(heroId, 0)
end
self.data.heroes[idStr].lv = self.data.heroes[idStr].lv + 1
end
return ServerHeroData

View File

@ -204,18 +204,6 @@ function ServerItemData:_addItem(id, num, getType)
ServerGameData.PlayerData:setVit(finalNum)
end
self.data.items[idStr].count = finalNum
if num < 0 then
if id == GConst.ItemConst.ITEM_ID_GEM then
ServerGameData.TaskData:addTaskProgress(GConst.TASK_TYPE.TASK_GEM_COST, -num)
end
end
getType = getType or ""
if num > 0 and id == GConst.ItemConst.ITEM_ID_GOLD and
getType ~= GConst.ServerDataConst.DATA_OP_BEHAVIOR.EQUIP_RESOLVE and
getType ~= GConst.ServerDataConst.DATA_OP_BEHAVIOR.EQUIP_REBACK then
ServerGameData.TaskData:addTaskProgress(GConst.TASK_TYPE.TASK_GOLD_GET, num)
end
end
return ServerItemData

View File

@ -0,0 +1,65 @@
local ServerHeroManager = {}
function ServerHeroManager:onUpgradeHero(params, callback)
local result = {
status = 1
}
if params == nil then
if callback then
callback(result)
end
return
end
local heroId = params.heroId
local heroCfg = ConfigManager:getConfig("hero")[heroId]
if heroId and heroCfg then
local ServerGameData = ServerDataManager:getServerGameData()
local ItemData = ServerGameData.BagData.ItemData
local heroInfo = ServerGameData.HeroData:getHeroByCfgId(heroId) or {cfg_id = heroId, lv = 0}
local lv = heroInfo.lv + 1
if lv < heroCfg.begin_lv then
lv = heroCfg.begin_lv
end
local nextLvInfo = ConfigManager:getConfig("hero_level")[lv]
if not nextLvInfo then
return
end
local fieldName = "cost_" .. heroCfg.qlt
nextLvInfo = nextLvInfo[fieldName]
local fragmentCost = nextLvInfo[1] or 0
if not ItemData:tryAddItem(heroCfg.item_id, -fragmentCost) then
return
end
local goldCost = nextLvInfo[2] or 0
if not ItemData:tryAddItem(GConst.ItemConst.ITEM_ID_GOLD, -goldCost) then
return
end
local costs = {
{
type = GConst.REWARD_TYPE.ITEM,
id = heroCfg.item_id,
num = fragmentCost
},
{
type = GConst.REWARD_TYPE.ITEM,
id = GConst.ItemConst.ITEM_ID_GOLD,
num = goldCost
}
}
ServerGameData.HeroData:upgradeHero(heroId)
result.heroId = heroId
result.lv = lv
result.costs = ServerGameData:addCosts(costs)
result.status = 0
end
if callback then
callback(result)
end
end
return ServerHeroManager

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: b697148ece07e2f4c873aa1bd9589e59
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -8,7 +8,8 @@ ServerDataConst.REWARD_TYPE = {
ServerDataConst.DATA_OP_BEHAVIOR = {
SYNC_DATA = "SYNC_DATA",
CROSS_DAY = "CROSS_DAY",
UPDATE_FORMATION = "UPDATE_FORMATION"
UPDATE_FORMATION = "UPDATE_FORMATION",
UPGRADE_HERO = "UPGRADE_HERO",
}
return ServerDataConst

View File

@ -4,6 +4,7 @@ local ServerDataManager = {}
function ServerDataManager:init()
self.ServerFormationManager = require("app/server/manager/server_formation_manager")
self.HeroManager = require("app/server/manager/server_hero_manager")
end
function ServerDataManager:saveData()
@ -60,6 +61,7 @@ end
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.HeroManager:onUpgradeHero(...) end,
}
function ServerDataManager:dealGM(params, callback)
@ -77,6 +79,7 @@ function ServerDataManager:dealGM(params, callback)
return
end
ServerGameData.BagData.ItemData:addItem(id, count)
ServerGameData.BagData.ItemData:saveLocalData()
if id == GConst.ItemConst.ITEM_ID_EXP then
ServerGameData.PlayerData:addExp(count)
end
@ -145,4 +148,8 @@ function ServerDataManager:dealGM(params, callback)
end
end
function ServerDataManager:getServerGameData()
return ServerGameData
end
return ServerDataManager

View File

@ -152,6 +152,39 @@ function ServerGameData:addRewards(cfgRewards, getType)
return rewards
end
-- 根据配置表添加奖励
function ServerGameData:addCosts(cfgRewards, getType)
local rewards = {}
if cfgRewards then
local count = #TempRewards
for i = 1, count do
table.remove(TempRewards)
end
for _, reward in ipairs(cfgRewards) do
table.insert(TempRewards, reward)
end
count = #TempRewards
for i = 1, count do
local reward = table.remove(TempRewards)
local newReward = self:getNewReward()
local rewardType = GFunc.getRewardType(reward)
newReward.type = rewardType
if rewardType == GConst.ServerDataConst.REWARD_TYPE.ITEM then
self.BagData.ItemData:addItemCost(reward, getType)
local rewardId = GFunc.getRewardId(reward)
local rewardNum = GFunc.getRewardNum(reward)
newReward.item = {
id = rewardId,
num = rewardNum
}
end
table.insert(rewards, newReward)
end
end
return rewards
end
function ServerGameData:getNewReward()
local rewards = {
type = 0,

View File

@ -6,6 +6,9 @@ function HeroCell:init()
self.heroBg = uiMap["hero_cell.hero_bg"]
self.check = uiMap["hero_cell.hero_bg.mask"]
self.matchImg = uiMap["hero_cell.hero_bg.match_img"]
self.progress = uiMap["hero_cell.hero_bg.progress"]
self.progressTx = uiMap["hero_cell.hero_bg.progress_tx"]
self.lvTx = uiMap["hero_cell.hero_bg.lv_tx"]
self.isGray = false
self.baseObject:addClickListener(function()
if self.clickCallback then
@ -17,11 +20,27 @@ end
function HeroCell:refresh(heroEntity, isGray)
local heroInfo = heroEntity:getConfig()
self:_refresh(heroInfo, isGray)
local materials = heroEntity:getLvUpMaterials() or {}
local fragmentCount = DataManager.BagData.ItemData:getItemNumById(heroEntity:getFramentId())
local needFragmentCount = materials[1] or 1
self.progressTx:setText(fragmentCount .. "/" .. needFragmentCount)
self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = fragmentCount / needFragmentCount
self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, heroEntity:getLv()))
end
function HeroCell:refreshWithCfgId(id, isGray)
local heroInfo = ConfigManager:getConfig("hero")[id]
self:_refresh(heroInfo, isGray)
local lv = heroInfo.begin_lv
local lvInfo = ConfigManager:getConfig("hero_level")[lv]
local materials = lvInfo["cost_" .. heroInfo.qlt]
local fragmentCount = DataManager.BagData.ItemData:getItemNumById(heroInfo.item_id)
local needFragmentCount = materials[1] or 1
self.progressTx:setText(fragmentCount .. "/" .. needFragmentCount)
self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = fragmentCount / needFragmentCount
self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, lv))
end
function HeroCell:_refresh(heroInfo, isGray)

View File

@ -6,28 +6,36 @@ function LargeHeroCell:init()
self.heroBg = uiMap["hero_cell.hero_bg"]
self.check = uiMap["hero_cell.hero_bg.mask"]
self.matchImg = uiMap["hero_cell.hero_bg.match_img"]
self.infoBtnDesc = uiMap["large_hero_cell.hero_bg.info_btn.desc"]
self.useBtn = uiMap["large_hero_cell.hero_bg.use_btn.desc"]
self.isGray = false
uiMap["large_hero_cell.hero_bg.info_btn"]:addClickListener(function()
if self.clickCallback1 then
self.clickCallback1()
end
if not self.heroId or not self.matchType then
return
end
ModuleManager.HeroManager:showHeroDetailUI(self.heroId)
end)
uiMap["large_hero_cell.hero_bg.use_btn"]:addClickListener(function()
if self.clickCallback1 then
self.clickCallback1()
end
if not self.heroId or not self.matchType then
return
end
ModuleManager.FormationManager:upHeroToStageFormation(self.heroId, self.matchType)
end)
end
function LargeHeroCell:refresh(heroEntity, isGray)
self.heroId = heroEntity:getCfgId()
self.matchType = heroEntity:getMatchType()
local heroInfo = heroEntity:getConfig()
self:_refresh(heroInfo, isGray)
end
function LargeHeroCell:refreshWithCfgId(id, isGray)
local heroInfo = ConfigManager:getConfig("hero")[id]
self.heroId = id
self.matchType = heroInfo.position
self:_refresh(heroInfo, isGray)
end
@ -47,9 +55,8 @@ function LargeHeroCell:showCheck(visible)
self.check:setVisible(visible)
end
function LargeHeroCell:addClickListener(btn1Callback, btn2Callback)
self.clickCallback1 = btn1Callback
self.clickCallback2 = btn2Callback
function LargeHeroCell:addClickListener(func)
self.baseObject:addClickListener(func)
end
function LargeHeroCell:setVisible(visible)

View File

@ -17,7 +17,12 @@ function HeroListCell:init()
self.titleTx = self.uiMap["hero_list_cell.title.title_desc"]
end
function HeroListCell:refresh(index, heroList, stageFormation, allHeroCount, activeCount)
function HeroListCell:refresh(index, heroList, stageFormation, allHeroCount, activeCount, func)
self.baseObject:addClickListener(function()
if func then
func()
end
end)
if activeCount > 0 and index == 1 then
self.title:setVisible(true)
self.titleTx:setText("临时文本:已解锁")
@ -44,7 +49,9 @@ function HeroListCell:refresh(index, heroList, stageFormation, allHeroCount, act
self.heroCells[i]:refresh(heroEntity, false)
self.heroCells[i]:showCheck(stageFormation[matchType] == heroId)
self.heroCells[i]:addClickListener(function()
ModuleManager.FormationManager:upHeroToStageFormation(heroId, matchType)
if func then
func(self.heroCells[i], heroId)
end
end)
elseif heroIndex <= allHeroCount then
if heroStartIndex <= activeCount then
@ -52,6 +59,11 @@ function HeroListCell:refresh(index, heroList, stageFormation, allHeroCount, act
else
self.heroCells[i]:setVisible(true)
self.heroCells[i]:refreshWithCfgId(heroList[heroIndex], true)
self.heroCells[i]:addClickListener(function()
if func then
func(self.heroCells[i], heroList[heroIndex])
end
end)
end
else
self.heroCells[i]:setVisible(false)

View File

@ -1,6 +1,7 @@
local HeroComp = class("HeroComp", LuaComponent)
local HERO_LIST_CELL = "app/ui/hero/cell/hero_list_cell"
local OUT_SCREEN_X = 10000
function HeroComp:init()
self.uiMap = self:getBaseObject():genAllChildren()
@ -9,7 +10,9 @@ function HeroComp:init()
return HERO_LIST_CELL
end)
self.scrollRect:addRefreshCallback(function(index, cell)
cell:refresh(index, self.heroList, self.stageFormation, self.allHeroCount, self.activeCount)
cell:refresh(index, self.heroList, self.stageFormation, self.allHeroCount, self.activeCount, function(cell)
self:onClickHero(cell, self.heroList[index])
end)
end)
self.heroList = {}
local heroCfg = ConfigManager:getConfig("hero")
@ -31,6 +34,12 @@ function HeroComp:init()
self.uiMap["hero_ui.formation.hero_5.add"],
}
self.heroSpineList = {}
self.largeHeroCell = CellManager:addCellComp(self.uiMap["hero_ui.scrollrect.viewport.content.large_hero_cell"], GConst.TYPEOF_LUA_CLASS.LARGE_HERO_CELL)
self.content = self.uiMap["hero_ui.scrollrect.viewport.content"]
self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
self.content:addClickListener(function()
self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
end)
end
function HeroComp:refresh()
@ -119,4 +128,27 @@ function HeroComp:sortHeroList()
end)
end
function HeroComp:onClickHero(cell, heroId)
if not cell or not heroId then
self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
return
end
local entity = DataManager.HeroData:getHeroById(heroId)
if entity then
if entity:isActived() then
local targetPos = cell:getBaseObject():getTransform().position
local sPoint = UIManager:getUICameraComponent():WorldToScreenPoint(targetPos)
targetPos = CS.BF.Utils.RectTransformScreenPointToLocalPointInRectangle(self.content:getTransform(), sPoint.x, sPoint.y, UIManager:getUICameraComponent())
self.largeHeroCell:getBaseObject():setAnchoredPosition(targetPos.x, targetPos.y)
self.largeHeroCell:getBaseObject():getTransform():SetAsLastSibling()
self.largeHeroCell:refresh(entity, self.stageFormation[entity:getMatchType()] == heroId)
else
ModuleManager.HeroManager:showHeroDetailUI(heroId)
end
else
self.largeHeroCell:getBaseObject():setAnchoredPositionX(OUT_SCREEN_X)
end
end
return HeroComp

View File

@ -0,0 +1,121 @@
local HeroDetailUI = class("HeroDetailUI", BaseUI)
local DEFAULT_FACTOR = GConst.BattleConst.DEFAULT_FACTOR
function HeroDetailUI:isFullScreen()
return false
end
function HeroDetailUI:getPrefabPath()
return "assets/prefabs/ui/hero/hero_detail_ui.prefab"
end
function HeroDetailUI:ctor(parmas)
local heroId = parmas.heroId
self.heroEntity = DataManager.HeroData:getHeroById(heroId)
end
function HeroDetailUI:onLoadRootComplete()
self:_display()
self:_addListeners()
self:_bind()
end
function HeroDetailUI:_display()
local uiMap = self.root:genAllChildren()
uiMap["hero_detail_ui.bg.title_desc"]:setText(self.heroEntity:getName())
uiMap["hero_detail_ui.bg.lv_desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, self.heroEntity:getLv()))
uiMap["hero_detail_ui.bg.element_desc"]:setText(ModuleManager.HeroManager:getMatchTypeName(self.heroEntity:getMatchType()))
uiMap["hero_detail_ui.bg.skill_desc"]:setText(ModuleManager.HeroManager:getSkillDesc(self.heroEntity:getActiveSkill()))
uiMap["hero_detail_ui.bg.hp_name"]:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_2))
uiMap["hero_detail_ui.bg.atk_name"]:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_3))
-- uiMap["hero_detail_ui.bg.skill_icon"]:setSprite(GConst.ATLAS_PATH.ICON_SKILL, ModuleManager.HeroManager:getSkillIcon(self.heroEntity:getActiveSkill()))
uiMap["hero_detail_ui.bg.hero_icon"]:setSprite(GConst.ATLAS_PATH.ICON_HERO, self.heroEntity:getIcon())
uiMap["hero_detail_ui.bg.hero_element"]:setSprite(GConst.ATLAS_PATH.ICON_HERO, ModuleManager.HeroManager:getMatchTypeIcon(self.heroEntity:getMatchType()))
local materials = self.heroEntity:getLvUpMaterials() or {}
local fragmentCount = DataManager.BagData.ItemData:getItemNumById(self.heroEntity:getFramentId())
local needFragmentCount = materials[1] or 1
uiMap["hero_detail_ui.bg.fragment_num"]:setText(fragmentCount .. "/" .. needFragmentCount)
uiMap["hero_detail_ui.bg.slider"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = fragmentCount / needFragmentCount
local activeCount = self.heroEntity:getActiveRogueCount()
local skillList = self.heroEntity:getRogueSkillList()
local skillLvs = ModuleManager.HeroManager:getActiveRogueLvs()
for i = 1, 3 do
local skillId = skillList[i]
if skillId then
local skillIcon = uiMap["hero_detail_ui.bg.skill_up_" .. i]
local skillLv = uiMap["hero_detail_ui.bg.skill_up_" .. i .. ".desc"]
skillIcon:addClickListener(function()
-- ModuleManager.TipsManager:show
GFunc.showToast(ModuleManager.HeroManager:getSkillRogueDesc(skillId))
end)
skillIcon:setSprite(GConst.ATLAS_PATH.ICON_SKILL_BUFF, ModuleManager.HeroManager:getSkillRogueIcon(skillId))
skillIcon:setImageGray(i > activeCount)
skillIcon:setTouchEnable(true)
if i > activeCount then
skillLv:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, skillLvs[i] or 0))
else
skillLv:setText(GConst.EMPTY_STRING)
end
end
end
uiMap["hero_detail_ui.bg.fragment_bg"]:setVisible(not self.heroEntity:isMaxLv())
local lv = self.heroEntity:getLv()
local str
local hpStr
local atkStr
if self.heroEntity:isActived() then
str = I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4)
local curHp = self.heroEntity:getCfgHp() // DEFAULT_FACTOR
local curAtk = self.heroEntity:getCfgAtk() // DEFAULT_FACTOR
local addHp = self.heroEntity:getCfgHp(lv + 1) // DEFAULT_FACTOR - curHp
local addAtk = self.heroEntity:getCfgAtk(lv + 1) // DEFAULT_FACTOR - curAtk
if addHp <= 0 then
hpStr = curHp
else
hpStr = curHp .. "<color=#82FF82>+" .. addHp .. "</color>"
end
if addAtk <= 0 then
atkStr = curAtk
else
atkStr = curAtk .. "<color=#82FF82>+" .. addAtk .. "</color>"
end
else
str = I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_5)
hpStr = self.heroEntity:getCfgHp(self.heroEntity:getBeginLv())
atkStr = self.heroEntity:getCfgAtk(self.heroEntity:getBeginLv())
end
uiMap["hero_detail_ui.bg.up_btn.desc"]:setText(str)
uiMap["hero_detail_ui.bg.up_btn.num"]:setText(materials[2])
uiMap["hero_detail_ui.bg.up_btn.rp"]:setVisible(self.heroEntity:canLvUp())
uiMap["hero_detail_ui.bg.hp"]:setText(hpStr)
uiMap["hero_detail_ui.bg.atk"]:setText(atkStr)
uiMap["hero_detail_ui.bg.up_btn"]:setImageGray(not GFunc.checkCost(GConst.ItemConst.ITEM_ID_GOLD, materials[2] or 0))
uiMap["hero_detail_ui.bg.up_btn"]:setActive(not self.heroEntity:isMaxLv())
end
function HeroDetailUI:_addListeners()
local uiMap = self.root:genAllChildren()
uiMap["hero_detail_ui.bg.back_btn"]:addClickListener(function()
self:closeUI()
end)
uiMap["hero_detail_ui.bg.up_btn"]:addClickListener(function()
ModuleManager.HeroManager:upgradeHero(self.heroEntity:getCfgId())
end)
end
function HeroDetailUI:_bind()
self:bind(self.heroEntity, "lv", function()
self:_display()
end)
end
return HeroDetailUI

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 9d56482e42e9d474287fb81d23e5a982
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -122,6 +122,9 @@ function MainComp:refreshStageFormaion()
local heroEntity = DataManager.HeroData:getHeroById(formation[i])
if heroEntity then
heroCell:refresh(heroEntity)
heroCell:addClickListener(function()
ModuleManager.HeroManager:showHeroDetailUI(heroEntity:getCfgId())
end)
else
heroCell:setVisible(false)
end

View File

@ -15,7 +15,7 @@ end
function BagData:init(data)
if data then
self.ItemData:init(data.ItemData)
self.ItemData:init(data.ItemData.items)
else
self.ItemData:init()
end

View File

@ -4,11 +4,8 @@ local ItemConst = require "app/module/item/item_const"
local ItemData = class("ItemData", BaseData)
local CACHE_ITEM = {
id = 0,
count = {
value = 0,
unit = 0,
}
cfg_id = 0,
count = 0
}
function ItemData:ctor()
@ -25,8 +22,8 @@ function ItemData:init(data)
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(parmas)
-- elseif info.id == GConst.ItemConst.ITEM_ID_GOLD then
-- local parmas = {}
-- parmas.gold_value = info.count.value
-- parmas.gold_unit = info.count.unit
-- parmas.gold_value = info.count
-- parmas.gold_unit = info.count
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(parmas)
-- end
self:_add(info.cfg_id, info.count)
@ -67,6 +64,16 @@ function ItemData:getItemBigNumById(id)
return num
end
function ItemData:getItemNumById(id)
local num
if self.items[id] then
num = self.items[id]:getNum()
else
num = 0
end
return num
end
function ItemData:addItemReward(item, itemGetType)
CACHE_ITEM.cfg_id = GFunc.getRewardId(item)
CACHE_ITEM.count = GFunc.getRewardNum(item)
@ -107,41 +114,41 @@ function ItemData:addItem(data, itemGetType)
self:_addItemNumById(data.cfg_id, data.count)
if data.cfg_id == GConst.ItemConst.ITEM_ID_GEM or data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD then
if data.count.value < 0 then
if data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD and itemGetType == BIReport.ITEM_GET_TYPE.TRAIN_UP then
else
BIReport:postGemUse(data.count, itemGetType, data.cfg_id)
if data.cfg_id == GConst.ItemConst.ITEM_ID_GEM then
CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserAdd("gem", data.count)
elseif data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD then
local goldNum = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_GOLD)
local parmas = {}
parmas.gold = goldNum
CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(parmas)
end
end
else
if data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD and itemGetType == BIReport.ITEM_GET_TYPE.CHAPTER_DROP then
else
BIReport:postGemGet(data.count, itemGetType, data.cfg_id)
if data.cfg_id == GConst.ItemConst.ITEM_ID_GEM then
CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserAdd("gem", data.count)
elseif data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD then
local goldNum = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_GOLD)
local parmas = {}
parmas.gold = goldNum
CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(parmas)
end
end
end
else
if data.count.value < 0 then
BIReport:postItemUse(data.count, data.cfg_id, itemGetType)
else
BIReport:postItemGet(data.count, data.cfg_id, itemGetType)
end
end
-- if data.cfg_id == GConst.ItemConst.ITEM_ID_GEM or data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD then
-- if data.count < 0 then
-- if data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD and itemGetType == BIReport.ITEM_GET_TYPE.TRAIN_UP then
-- else
-- BIReport:postGemUse(data.count, itemGetType, data.cfg_id)
-- if data.cfg_id == GConst.ItemConst.ITEM_ID_GEM then
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserAdd("gem", data.count)
-- elseif data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD then
-- local goldNum = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_GOLD)
-- local parmas = {}
-- parmas.gold = goldNum
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(parmas)
-- end
-- end
-- else
-- if data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD and itemGetType == BIReport.ITEM_GET_TYPE.CHAPTER_DROP then
-- else
-- BIReport:postGemGet(data.count, itemGetType, data.cfg_id)
-- if data.cfg_id == GConst.ItemConst.ITEM_ID_GEM then
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserAdd("gem", data.count)
-- elseif data.cfg_id == GConst.ItemConst.ITEM_ID_GOLD then
-- local goldNum = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_GOLD)
-- local parmas = {}
-- parmas.gold = goldNum
-- CS.ThinkingAnalytics.ThinkingAnalyticsAPI.UserSet(parmas)
-- end
-- end
-- end
-- else
-- if data.count < 0 then
-- BIReport:postItemUse(data.count, data.cfg_id, itemGetType)
-- else
-- BIReport:postItemGet(data.count, data.cfg_id, itemGetType)
-- end
-- end
end
function ItemData:addItemNumById(id, num, itemGetType)

View File

@ -2,7 +2,7 @@ local BattleTeamEntity = require "app/userdata/battle/team/battle_team_entity"
local BattleData = class("BattleData", BaseData)
local SKILL_HERO_CFG = ConfigManager:getConfig("skill_hero")
local SKILL_HERO_CFG = ConfigManager:getConfig("skill")
local BattleConst = GConst.BattleConst
local BATTLE_GRID_ENTITY = require "app/userdata/battle/battle_grid_entity"
local BATTLE_BOARD_SKILL_ENTITY = require "app/userdata/battle/skill/battle_borad_skill_entity"
@ -10,26 +10,32 @@ local BATTLE_BOARD_SKILL_ENTITY = require "app/userdata/battle/skill/battle_bora
local ATTR_TYPE = GConst.ATTR_TYPE
local DEFAULT_FACTOR = BattleConst.DEFAULT_FACTOR
function BattleData:init(skillIds, skillPool)
function BattleData:init()
self:clear()
self.atkTeam = self:initTeam(BattleConst.SIDE_ATK)
self.defTeam = self:initTeam(BattleConst.SIDE_DEF)
self:initRogueSkills()
end
--- todo
skillIds = {
10, 21, 30, 40, 50
}
for _, skillId in ipairs(skillIds) do
local cfg = SKILL_HERO_CFG[skillId]
self.skillMap[cfg.position] = BATTLE_BOARD_SKILL_ENTITY:create(skillId)
end
---- skillPool
self.skillPool = skillPool or {}
for id, info in pairs(ConfigManager:getConfig("skill_rogue")) do
if not info.universal then
table.insert(self.skillPool, id)
function BattleData:initRogueSkills()
self.skillPool = {}
self.skillMap = {}
local skillmap = {}
local formation = DataManager.FormationData:getStageFormation()
for matchType, heroId in pairs(formation) do
if heroId > 0 then
local heroEntity = DataManager.HeroData:getHeroById(heroId)
if heroEntity then
local skillId = heroEntity:getActiveSkill()
local cfg = SKILL_HERO_CFG[skillId]
self.skillMap[cfg.position] = BATTLE_BOARD_SKILL_ENTITY:create(skillId)
for _, id in ipairs(heroEntity:getActiveTogueSkills()) do
if not skillmap[id] then
table.insert(self.skillPool, id)
skillmap[id] = true
end
end
end
end
end
end

View File

@ -13,7 +13,7 @@ function BattleBoardSkillEnity:refreshSkillId(skillId)
return
end
self.skillId = skillId
self.config = ConfigManager:getConfig("skill_hero")[skillId]
self.config = ConfigManager:getConfig("skill")[skillId]
end
function BattleBoardSkillEnity:getSkillId()

View File

@ -39,4 +39,12 @@ function HeroData:getActiveHeroCount()
return self.data.activeCount
end
function HeroData:setHeroLv(id, lv)
if not self.heroes[id] then
self:addHero(id, lv)
return
end
self.heroes[id]:setLv(lv)
end
return HeroData

View File

@ -6,6 +6,7 @@ function HeroEntity:ctor(cfgId, lv)
self.data.lv = lv
self.attrDirty = false
self.config = ConfigManager:getConfig("hero")[self.cfgId]
self.beginLv = self.config.begin_lv -- 初始等级
self.baseAttrOriginal = {}
self.allAttr = {}
@ -41,6 +42,10 @@ function HeroEntity:getQlt()
return self.config.qlt
end
function HeroEntity:getBeginLv()
return self.beginLv
end
function HeroEntity:getMatchType()
return self.config.position
end
@ -63,13 +68,32 @@ function HeroEntity:updateAttr()
end
function HeroEntity:updateBaseAttr()
if self.data.lv <= 0 then
self.baseAttrOriginal[GConst.ATTR_TYPE.hp] = 0
self.baseAttrOriginal[GConst.ATTR_TYPE.atk] = 0
else
self.baseAttrOriginal[GConst.ATTR_TYPE.hp] = self.config.hp[self.data.lv] or self.config.hp[#self.config.hp]
self.baseAttrOriginal[GConst.ATTR_TYPE.atk] = self.config.atk[self.data.lv] or self.config.atk[#self.config.atk]
self.baseAttrOriginal[GConst.ATTR_TYPE.hp] = self:getCfgHp()
self.baseAttrOriginal[GConst.ATTR_TYPE.atk] = self:getCfgAtk()
end
function HeroEntity:getCfgHp(lv)
lv = lv or self.data.lv
if lv > self:getMaxLv() then
lv = self:getMaxLv()
end
if self.config and self.config.hp then
return self.config.hp[lv] or 0
end
return 0
end
function HeroEntity:getCfgAtk(lv)
lv = lv or self.data.lv
if lv > self:getMaxLv() then
lv = self:getMaxLv()
end
if self.config and self.config.atk then
return self.config.atk[lv] or 0
end
return 0
end
function HeroEntity:updateAllAttr()
@ -90,6 +114,17 @@ function HeroEntity:setDirty()
self.attrDirty = true
end
function HeroEntity:isMaxLv()
return self.data.lv >= self:getMaxLv()
end
function HeroEntity:getMaxLv()
if not self.maxLv then
self.maxLv = ConfigManager:getConfigNum("hero_level")
end
return self.maxLv
end
function HeroEntity:canLvUp()
if self:isMaxLv() then
return false
@ -100,21 +135,33 @@ function HeroEntity:canLvUp()
return false
end
for _, reward in ipairs(cost) do
if not GFunc.checkCost(reward.id, reward.num, false) then
return false
end
local fragmentCost = cost[1] or 0
if not GFunc.checkCost(self:getFramentId(), fragmentCost, false) then
return false
end
local goldCost = cost[2] or 0
if not GFunc.checkCost(GConst.ItemConst.ITEM_ID_GOLD, goldCost, false) then
return false
end
return true
end
function HeroEntity:isActived()
return self.data.lv >= self:getBeginLv()
end
function HeroEntity:getLvUpMaterials()
local nextLvInfo = ConfigManager:getConfig("hero_up")[self.data.lv + 1]
local lv = self.data.lv + 1
if lv < self:getBeginLv() then
lv = self:getBeginLv()
end
local nextLvInfo = ConfigManager:getConfig("hero_level")[lv]
if not nextLvInfo then
return
end
return nextLvInfo.exp
local fieldName = "cost_" .. self:getQlt()
return nextLvInfo[fieldName]
end
function HeroEntity:getConfig()
@ -133,4 +180,54 @@ function HeroEntity:getHurtSkill()
return self.config.hurt_skill
end
function HeroEntity:getFramentId()
return self.config.item_id
end
function HeroEntity:getIcon()
return self.config.icon
end
function HeroEntity:getName()
return I18N:getConfig("hero")[self:getCfgId()].name
end
function HeroEntity:getActiveRogueCount()
local lvInfo = ConfigManager:getConfig("hero_level")[self.data.lv]
if not lvInfo then
return 0
end
return lvInfo.unlock_skill
end
function HeroEntity:getRogueSkillList()
if not self.rogueSkillList then
self.rogueSkillList = {}
for i = 1, 3 do
local id = self.config["rouge_skill_" .. i]
if id then
table.insert(self.rogueSkillList, id)
else
break
end
end
end
return self.rogueSkillList
end
function HeroEntity:getActiveTogueSkills()
local list = {}
for i = 1, self:getActiveRogueCount() do
local id = self:getRogueSkillList()[i]
if id then
table.insert(list, id)
else
return
end
end
return list
end
return HeroEntity