源战役客户端
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 

284 líneas
10 KiB

--[[
说明: 合成模块
--]]
local require = require
require("game.proto.151.Require151")
require("game.composeNew.views.ComposeBaseView")--合成主界面
require("game.composeNew.views.ComposeGuardView")--合成子界面(守护/饰品/宝石)
require("game.composeNew.views.ComposeAwardBoxView")--合成子界面(宝箱/其他)
require("game.composeNew.views.ComposeEquipView")--合成子界面(装备)
require("game.composeNew.views.ComposeGuardTabItem")--合成子界面页签
require("game.composeNew.views.ComposeGuardShopItem")--合成子界面商城快捷购买item
require("game.composeNew.views.ComposeGuardCostItem")--合成子界面材料消耗item
require("game.composeNew.views.ComposeGuardAttrItem")--合成界面属性item
require("game.composeNew.views.ComposeGuardPriceItem")--合成界面价格item
require("game.composeNew.views.ComposeSelectGoodsView")--合成子界面选择道具界面
require("game.composeNew.views.ComposeSelectGoodsTabItem")--合成子界面选择道具界面页签
require("game.composeNew.views.ComposeSelectGoodsItem")--合成子界面选择道具item
require("game.composeNew.views.ComposeSuccessView")--合成成功界面
require("game.composeNew.views.ComposeUpModelView")--守护合成模型展示
require("game.composeNew.views.ComposeReqAwardTipView")--合成消耗提示界面
require("game.composeNew.views.ComposeEquipSpliteView")--橙装合成分解界面
require("game.composeNew.views.ComposeEquipAttrItem")--装备合成界面属性item
require("game.composeNew.ComposeEvent")
require("game.composeNew.ComposeModel")
ComposeController = ComposeController or BaseClass(BaseController)
function ComposeController:__init()
ComposeController.Instance = self
self.model = ComposeModel:getInstance()
self:EnableCheckoutClear()
self:RegisterAllProtocals()
self:InitEvent()
end
function ComposeController:RemoveCheckOutEvent()
self.model:Clear()
end
function ComposeController:RegisterAllProtocals()
self:RegisterProtocal(15101,"handler15101")--物品合成
end
function ComposeController:InitEvent()
--打开合成界面
local function open_func(tab_index,speaciel_data)
if RoleManager.Instance.mainRoleInfo.level < Config.Moduleid[151].open_lv then
Message.show("功能暂未开启","fault")
return
end
tab_index = tonumber(tab_index)
if self.ComposeBaseView == nil then
self.ComposeBaseView = ComposeBaseView.New()
end
if not self.ComposeBaseView:HasOpen() then
self.ComposeBaseView:Open(tab_index, speaciel_data)
end
end
GlobalEventSystem:Bind(EventName.OPEN_COMPOSE_VIEW, open_func)
--打开刻印选择界面
local function openComposeUpDraconicChooseView(data)
if self.ComposeUpDraconicChooseView == nil then
self.ComposeUpDraconicChooseView = ComposeUpDraconicChooseView.New()
end
if self.ComposeUpDraconicChooseView:HasOpen() then
-- self.ComposeUpDraconicChooseView:UpdateView(data)
else
self.ComposeUpDraconicChooseView:Open(data)
end
end
self.model:Bind(ComposeEvent.OPEN_COMPOSE_DRACONIC_CHOOSE_VIEW, openComposeUpDraconicChooseView)
--打开守护模型展示界面
local function openComposeUpModelView(goods_id)
print("huangcong:ComposeController [start:84] :", goods_id)
if self.ComposeUpModelView == nil then
self.ComposeUpModelView = ComposeUpModelView.New()
end
if self.ComposeUpModelView:HasOpen() then
-- self.ComposeUpModelView:UpdateView(goods_id)
else
self.ComposeUpModelView:Open(goods_id)
end
end
self.model:Bind(ComposeEvent.OPEN_COMPOSE_MODEL_VIEW, openComposeUpModelView)
--打开合成装备选择界面
local function openComposeSelectGoodsView(special_data,classify_id,need_click_bg_close)
print("huangcong:ComposeController [start:84] :", special_data,classify_id)
if self.ComposeSelectGoodsView == nil then
self.ComposeSelectGoodsView = ComposeSelectGoodsView.New()
end
if self.ComposeSelectGoodsView:HasOpen() then
-- self.ComposeSelectGoodsView:UpdateView(goods_id)
else
self.ComposeSelectGoodsView:Open(special_data,classify_id,need_click_bg_close)
end
end
self.model:Bind(ComposeEvent.OPEN_COMPOSE_SELECT_GOODS_VIEW, openComposeSelectGoodsView)
--打开合成装备选择界面
local function openComposeSuccessView(data)
print("huangcong:ComposeController [start:126] :", data)
if self.ComposeSuccessView == nil then
self.ComposeSuccessView = ComposeSuccessView.New()
end
if self.ComposeSuccessView:HasOpen() then
-- self.ComposeSuccessView:UpdateView(goods_id)
else
self.ComposeSuccessView:Open(data)
end
end
self.model:Bind(ComposeEvent.OPEN_COMPOSE_SUCCESS_VIEW, openComposeSuccessView)
--打开合成消耗界面
local function openComposeReqAwardTipView(data)
print("huangcong:ComposeController [start:126] :", data)
if self.ComposeReqAwardTipView == nil then
self.ComposeReqAwardTipView = ComposeReqAwardTipView.New()
end
if self.ComposeReqAwardTipView:HasOpen() then
-- self.ComposeReqAwardTipView:UpdateView(goods_id)
else
self.ComposeReqAwardTipView:Open(data)
end
end
self.model:Bind(ComposeEvent.OPEN_COMPOSE_COST_AWARD_TIP_VIEW, openComposeReqAwardTipView)
--打开橙装合成分解界面
local function openComposeEquipSpliteView()
if self.ComposeEquipSpliteView == nil then
self.ComposeEquipSpliteView = ComposeEquipSpliteView.New()
end
if self.ComposeEquipSpliteView:HasOpen() then
-- self.ComposeEquipSpliteView:UpdateView(goods_id)
else
self.ComposeEquipSpliteView:Open()
end
end
self.model:Bind(ComposeEvent.OPEN_COMPOSE_EQUIP_SPLITE_VIEW, openComposeEquipSpliteView)
local function compose_func(data)
if not data or data.times <= 0 then
Message.show("合成次数为0!","fault")
return
end
local list = data.list or {}
local auto_buy_list = data.auto_buy_list or {}
self:WriteBegin(15101)
self:WriteFMT("i", data.rule_id)
self:WriteFMT("l", data.main_goods_id)
self:WriteFMT("h", data.main_goods_location)
self:WriteFMT("h", #list)
for i, v in ipairs(list) do
self:WriteFMT("l", v[1])
self:WriteFMT("i", v[2])
self:WriteFMT("h", v[3])
end
self:WriteFMT("h", data.times)
self:WriteFMT("h", #auto_buy_list)
for i, v in ipairs(auto_buy_list) do
self:WriteFMT("i", v[1])
self:WriteFMT("i", v[2])
end
self:SendToGame()
end
self.model:Bind(ComposeEvent.REQUEST_COMPOSE, compose_func)
local function onGameStart ()
-- self.model:GameStartInit()
end
GlobalEventSystem:Bind(EventName.GAME_START,onGameStart)
--升级
local function onLevelUp(level)
if level == Config.Modulesub["151@1"].open_lv then--守护
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Guard)--守护
elseif level == Config.Modulesub["151@2"].open_lv then--饰品
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Ornaments)
elseif level == Config.Modulesub["151@3"].open_lv then--刻印
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Draconic)
elseif level == Config.Modulesub["151@4"].open_lv then--宝石
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Gemstone)
elseif level == Config.Modulesub["151@6"].open_lv then--宝箱
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.AwardBox)
elseif level == Config.Modulesub["151@7"].open_lv then--其他
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Other)
end
end
RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
local function onChangeBagListHandler()
if self._use_delete_method then return end
if GetModuleIsOpen(151,1) then
self:OnGuardUpdate()
end
if GetModuleIsOpen(151,6) then
self:OnAwardBoxUpdate()
end
if GetModuleIsOpen(151,7) then
self:OnOtherUpdate()
end
if GetModuleIsOpen(151,8) then
self:OnEquipUpdate()
end
end
GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
end
function ComposeController:OnGuardUpdate( )
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Guard)--守护
end
function ComposeController:OnAwardBoxUpdate( )
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.AwardBox)--宝箱
end
function ComposeController:OnOtherUpdate( )
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Other)--其他
end
function ComposeController:OnEquipUpdate( )
ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Equip)--装备
end
-- ########### 物品合成/升星 ##############
-- protocol=15101
-- {
-- c2s{
-- rule_id:int32 // 规则id
-- main_goods_id:int64 // 原物品id,普通合成为0
-- main_goods_location:int16 // 物品背包位置 main_goods_id > 0 有效
-- cost_list:array{ // 材料
-- goods_id :int64 // 物品id
-- type_id :int32 // 物品类型Id
-- goods_num:int16 // 物品数量
-- }
-- times :int16 // 合成次数(合成有效)
-- auto_buy_list :array{ // 商城自动购买列表
-- shop_id :int32
-- shop_num :int32
-- }
-- }
-- s2c{
-- code :int32 // 错误码 1成功/2失败/其他
-- compose_type_id :int32 // 最终合成物品id
-- compose_type_num :int32 // 最终合成物品id数量
-- }
-- }
function ComposeController:handler15101()
local scmd = SCMD15101.New(true)
if scmd then
if scmd.code == 1 then
Message.show("合成成功","success")
self.model:Fire(ComposeEvent.COMPOSE_SUCCESS)
EquipModel:getInstance():Fire(EquipModel.PLAY_GEMSTONE_EFFECT)
-- local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(scmd.compose_type_id)
-- if equip_cfg and equip_cfg.series == 99 then
-- ComposeModel:getInstance():Fire(ComposeEvent.OPEN_COMPOSE_MODEL_VIEW, scmd.compose_type_id)
-- else
local data = {goods_id = scmd.compose_type_id,goods_num = scmd.compose_type_num}
self.model:Fire(ComposeEvent.OPEN_COMPOSE_SUCCESS_VIEW,data)
-- end
elseif scmd.code == 2 then
Message.show("很可惜,合成失败了。","fault")
self.model:Fire(ComposeEvent.COMPOSE_SUCCESS)
else
ErrorCodeShow(scmd.code)
end
end
end