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