require("game.proto.422.Require422") require("game.wardrobe.WardrobeModel") require("game.wardrobe.WardrobeConst") require("game.wardrobe.WardrobeMainView") require("game.wardrobe.WardrobeTotalItem")--总览item require("game.wardrobe.WardrobeVerTabItem")--左边tab require("game.wardrobe.WardrobeShopItem")--商店item require("game.wardrobe.WardrobeShopView")--风采商店 require("game.wardrobe.WardrobeTipsView")--tip界面 WardrobeController = WardrobeController or BaseClass(BaseController, true) local WardrobeController = WardrobeController WardrobeController.IsDebug = true function WardrobeController:__init() WardrobeController.Instance = self self.model = WardrobeModel:GetInstance() self:AddEvents() self:RegisterAllProtocal() end function WardrobeController:__delete() end function WardrobeController:RegisterAllProtocal( ) self:RegisterProtocal(42200, "Handle42200")--风采总览 self:RegisterProtocal(42201, "Handle42201")--风采值更新(推送单个类型) self:RegisterProtocal(42202, "Handle42202")--商城信息 self:RegisterProtocal(42203, "Handle42203")--商城购买 end function WardrobeController:AddEvents() local function on_game_start() self.model:Reset() end GlobalEventSystem:Bind(EventName.GAME_START, on_game_start) local function onRequestHandler(...) local args = {...} if args[1] == 42202 then self:SendFmtToGame(args[1], "c", args[2]) elseif args[1] == 42203 then self:SendFmtToGame(args[1], "cii", args[2], args[3], args[4]) else self:SendFmtToGame(args[1]) end end self.model:Bind(WardrobeConst.REQ_WARDROBE_SCMD, onRequestHandler) local function update_red_dot_by_tab_id_func( tab_id )--主要的更新红点方法 if not tab_id then self.model:IsNeedRedAll() else self.model:IsNeedRed(tab_id) end local red_dot = self.model:GetWardrobeAllRedDot() local bool = false for i,v in pairs(red_dot) do if v then bool = true break end end GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 422, bool) end self.model:Bind(WardrobeConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func) local on_open_main_view = function (index, sub_index, param_list) if self.wardrobe_main_view == nil then self.wardrobe_main_view = WardrobeMainView.New() end if self.wardrobe_main_view:HasOpen() then self.wardrobe_main_view:ReOpen(index, sub_index, param_list) else self.wardrobe_main_view:Open(index, sub_index, param_list) end end GlobalEventSystem:Bind(WardrobeConst.OPEN_WARDROBE_MAIN_VIEW, on_open_main_view) local function open_wardrobe_tips_view(show) if RoleManager.Instance.mainRoleInfo.level < Config.Moduleid[422].open_lv then return end -- 如果界面还没加载完或者已经存在且在动画中则跳出 if self.tips_view and (not self.tips_view:HasOpen() or self.tips_view.is_animating) then return end local function close_tips_view() if self.tips_view:HasOpen() then self.tips_view:Close() end end if show then local tip_data = self.model:GetWardrobeTipData() if tip_data then if self.tips_view == nil then self.tips_view = WardrobeTipsView.New() end if not self.tips_view:HasOpen() then self.tips_view:Open(tip_data) else self.tips_view:ResetViewInfo(tip_data) end else close_tips_view() end else close_tips_view() end end self.model:Bind(WardrobeConst.OPEN_WARDROBE_TIP_VIEW, open_wardrobe_tips_view) end function WardrobeController:OnWardrobeGoodsUpdate( ) self.model:Fire(WardrobeConst.UPDATE_RED_DOT, WardrobeConst.TabId.DRESS) end -- ############## 风采总览 ############## -- protocol=42200 -- { -- c2s{ -- } -- s2c{ -- stage :int8 // 阶数 -- sum_wardrobe_value :int32 // 总风采值 -- wardrobe_list:array{ -- type :int8 // 类型 -- wardrobe_value :int32 // 风采值 -- collect :int8 // 收集进度 -- sum_collect :int8 // 总收集量(每类外观配置决定) -- } -- } -- } function WardrobeController:Handle42200( ) local vo = SCMD42200.New(true) -- print("HWR:WardrobeController [start:86] vo:", vo) -- PrintTable(vo) -- print("HWR:WardrobeController [end]") self.model:SetWardrobeTotalInfo(vo) end -- ############## 风采值更新(推送单个类型) ############## -- protocol=42201 -- { -- s2c{ -- // 总风采 -- stage :int8 // 阶数 -- sum_wardrobe_value :int32 // 总风采值 -- // 单个类型进度 -- type :int8 // 类型 -- wardrobe_value :int32 // 风采值 -- collect :int8 // 收集进度 -- sum_collect :int8 // 总收集量(每类外观配置决定) -- // 新激活外观信息 -- id :int32 // 进阶和伙伴是系统类型,其他是物品Id -- color :int8 // 品质(进阶和伙伴是阶数,物品是颜色) -- } -- } function WardrobeController:Handle42201( ) local vo = SCMD42201.New(true) -- print("HWR:WardrobeController [start:157] vo:", vo) -- PrintTable(vo) -- print("HWR:WardrobeController [end]") local need_add_extra = false--是否需要额外加一个商城出现的 -- local last_stage = self.model:GetMyWardrobeStage() --上次阶数 -- if vo.stage > last_stage then -- local last_shop = 0 -- for i,v in ipairs(Config.Wardrobeopen) do--遍历第一次找上次商城id -- if last_stage >= v.condition then -- last_shop = v.store_id -- end -- end -- --遍历第二次找激活的商城 -- local cur_shop = 0 -- for i=last_shop,#Config.Wardrobeopen do -- if Config.Wardrobeopen[i] then -- if vo.stage >= Config.Wardrobeopen[i].condition then -- cur_shop = Config.Wardrobeopen[i].store_id -- end -- end -- end -- need_add_extra = cur_shop > last_shop -- end local up_value = vo.sum_wardrobe_value - self.model:GetMyWardrobeValue() vo.up_value = up_value self.model:SetWardrobeTotalOneInfo(vo) self.model:SetWardrobeTipData(vo) -- if need_add_extra then -- vo.is_unlock = true -- self.model:SetWardrobeTipData(vo) -- end end -- ############## 商城信息 ############## -- protocol=42202 -- { -- c2s{ -- store_id :int8 // 货柜层数 -- } -- s2c{ -- store_id :int8 // 货柜层数 -- goods_list:array{ -- pos :int16 // 商品位置 -- gtype_id :int32 // 商品类型Id -- num :int32 // 已经购买的次数 -- } -- } -- } function WardrobeController:Handle42202( ) local vo = SCMD42202.New(true) self.model:SetWardrobeShopInfo(vo) end -- ############## 商城购买 ############## -- protocol=42203 -- { -- c2s{ -- store_id :int8 // 货柜层数 -- gtype_id :int32 // 商品类型Id -- buy_times :int32 // 购买个数 -- } -- s2c{ -- res :int32 // 返回码 -- store_id :int8 // 货柜层数 -- pos :int16 // 商品位置 -- gtype_id :int32 // 商品类型Id -- num :int32 // 已经购买的次数 -- } -- } function WardrobeController:Handle42203( ) local vo = SCMD42203.New(true) if vo.res == 1 then Message.show("购买成功") else ErrorCodeShow(vo.res) end self.model:Fire(WardrobeConst.REQ_WARDROBE_SCMD, 42202, vo.store_id) end