-- <*
|
|
-- @Author: Saber
|
|
-- @Description: 招财猫活动controller
|
|
-- *>
|
|
|
|
require("game.fortuneCat.FortuneCatModel")
|
|
require("game.fortuneCat.FortuneCatMainView") -- 招财猫活动主界面
|
|
require("game.fortuneCat.FortuneCatRecordItem") -- 招财猫活动招财记录节点
|
|
require("game.fortuneCat.FortuneCatRollItem") -- 招财猫活动抽奖节点
|
|
require("game.fortuneCat.FortuneCatAdTipsView") -- 招财猫活动广告界面
|
|
|
|
FortuneCatController = FortuneCatController or BaseClass(BaseController, true)
|
|
local FortuneCatController = FortuneCatController
|
|
|
|
function FortuneCatController:__init()
|
|
FortuneCatController.Instance = self
|
|
self.model = FortuneCatModel:getInstance()
|
|
self:AddEvents()
|
|
self:RegisterAllProtocal()
|
|
end
|
|
|
|
function FortuneCatController:RegisterAllProtocal( )
|
|
self:RegisterProtocal(33219, "handle33219") -- 查询招财猫活动配置数据
|
|
self:RegisterProtocal(33220, "handle33220") -- 查询单个招财猫活动信息
|
|
self:RegisterProtocal(33221, "handle33221") -- 招财猫招财
|
|
self:RegisterProtocal(33222, "handle33222") -- 招财猫招财记录
|
|
end
|
|
|
|
function FortuneCatController:AddEvents()
|
|
local function onRequestHandler(...)
|
|
local args = {...}
|
|
|
|
if args[1] == 33220 or args[1] == 33221 or args[1] == 33222 then
|
|
self:SendFmtToGame(args[1], "hh", args[2], args[3])
|
|
else
|
|
self:SendFmtToGame(args[1])
|
|
end
|
|
end
|
|
self.model:Bind(FortuneCatModel.REQUEST_CCMD_EVENT, onRequestHandler)
|
|
|
|
local function game_start()
|
|
self.model:Fire(FortuneCatModel.REQUEST_CCMD_EVENT, 33219)
|
|
end
|
|
GlobalEventSystem:Bind(EventName.GAME_START, game_start)
|
|
|
|
local function on_lv_up(lv)
|
|
local open_lv = GetModuleOpenLevel(331, 64, true)
|
|
if lv == open_lv then -- 活动按钮
|
|
self.model:CheckEventOpen()
|
|
end
|
|
|
|
end
|
|
RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, on_lv_up)
|
|
|
|
|
|
local function onTaskFinishHandler(taskId)
|
|
if taskId == CustomActivityModel.CAT_FOTANA_TASK_ID then
|
|
self.model:CheckAdViewOpen()
|
|
end
|
|
end
|
|
GlobalEventSystem:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, onTaskFinishHandler)
|
|
|
|
local function open_fortune_cat_view(show, sub_type)
|
|
if show then
|
|
if not sub_type then return end
|
|
if not self.fc_cat_view then
|
|
self.fc_cat_view = FortuneCatMainView.New()
|
|
end
|
|
if not self.fc_cat_view:HasOpen() then
|
|
self.fc_cat_view:Open(sub_type)
|
|
end
|
|
else
|
|
if self.fc_cat_view then
|
|
self.fc_cat_view:Close()
|
|
end
|
|
end
|
|
end
|
|
self.model:Bind(FortuneCatModel.OPEN_FORTUNE_CAT_VIEW, open_fortune_cat_view)
|
|
|
|
local function open_fortune_cat_ad_view(show, sub_type)
|
|
if show then
|
|
if not sub_type then return end
|
|
if self.model.fc_login_ad_view_flag then return end
|
|
if not self.fc_cat_ad_view then
|
|
self.fc_cat_ad_view = FortuneCatAdTipsView.New()
|
|
end
|
|
if not self.fc_cat_ad_view:HasOpen() then
|
|
self.fc_cat_ad_view:Open(sub_type)
|
|
end
|
|
else
|
|
if self.fc_cat_ad_view then
|
|
self.fc_cat_ad_view:Close()
|
|
end
|
|
end
|
|
end
|
|
self.model:Bind(FortuneCatModel.OPEN_FORTUNE_CAT_AD_VIEW, open_fortune_cat_ad_view)
|
|
|
|
-- 监听玩家彩钻是否满足转盘需要
|
|
local function check_role_jin()
|
|
local function check_role_jin_delay()
|
|
self.model:CheckFCAllSubTypeRed()
|
|
end
|
|
TimeManager.GetInstance():StartTime("FortuneCatController_CheckRoleJin", 1, check_role_jin_delay)
|
|
end
|
|
RoleManager.Instance.mainRoleInfo:BindOne("jin", check_role_jin)
|
|
end
|
|
|
|
|
|
function FortuneCatController:handle33219( )
|
|
local vo = SCMD33219.New(true)
|
|
self.model:SetFortuneCatConfig(vo)
|
|
-- 存在活动配置和活动信息协议的时序问题,所以拿到配置的时候也更新一下按钮打开情况
|
|
self.model:CheckEventOpen()
|
|
self.model:Fire(FortuneCatModel.UPDATE_FORTUNE_CAT_CONFIG)
|
|
end
|
|
|
|
function FortuneCatController:handle33220( )
|
|
local vo = SCMD33220.New(true)
|
|
self.model:SetFortuneCatRollTimes(vo)
|
|
self.model:CheckFortuneCatRed(vo.sub_type)
|
|
self.model:Fire(FortuneCatModel.UPDATE_FORTUNE_CAT_ROLL_TIME, vo.sub_type)
|
|
end
|
|
|
|
function FortuneCatController:handle33221( )
|
|
local vo = SCMD33221.New(true)
|
|
if vo.res == 1 then
|
|
self.model:SetFortuneCatRollResult(vo)
|
|
self.model:CheckFortuneCatRed(vo.sub_type)
|
|
self.model:Fire(FortuneCatModel.UPDATE_FORTUNE_CAT_RESULT, vo)
|
|
local function delay_method( )
|
|
if self.fc_cat_view and self.fc_cat_view:HasOpen() then
|
|
-- 构造玩家抽奖信息数据
|
|
local role_vo = RoleManager.Instance.mainRoleInfo
|
|
local info_data = {
|
|
role_id = role_vo.role_id,
|
|
role_name = role_vo.name,
|
|
time = TimeUtil:getServerTime(),
|
|
times = vo.times,
|
|
sort = vo.sort,
|
|
mult = vo.mult,
|
|
}
|
|
self.model:UpdateFortuneCatRollRecord(vo, info_data)
|
|
self.model:Fire(FortuneCatModel.UPDATE_FORTUNE_CAT_ROLL_RECORD, vo.sub_type)
|
|
end
|
|
end
|
|
-- 延时3秒弹出数据
|
|
setTimeout(delay_method, FortuneCatModel.AnimTime)
|
|
else
|
|
ErrorCodeShow(vo.res)
|
|
end
|
|
end
|
|
|
|
function FortuneCatController:handle33222( )
|
|
local vo = SCMD33222.New(true)
|
|
self.model:SetFortuneCatRollRecord(vo)
|
|
self.model:Fire(FortuneCatModel.UPDATE_FORTUNE_CAT_ROLL_RECORD, vo.sub_type)
|
|
end
|