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