源战役客户端
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.
 
 
 
 
 

240 líneas
7.1 KiB

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