|
--[[
|
|
说明: 合成模块
|
|
--]]
|
|
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
|