源战役客户端
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

320 řádky
9.5 KiB

require("game.proto.334.Require334")
require("game.sakuraGift.SakuraGiftModel")
require("game.sakuraGift.SakuraGiftConst")
require("game.sakuraGift.view.SakuraGiftView")
require("game.sakuraGift.view.SakuraGiftShopView")
require("game.sakuraGift.view.SakuraGiftShopItem")
require("game.sakuraGift.view.SakuraGiftAwardItem")
require("game.sakuraGift.view.SakuraGiftExchangeView")
require("game.sakuraGift.view.SakuraGiftMessageView")
require("game.sakuraGift.view.SakuraGiftChuanwenItem")
require("game.sakuraGift.view.SakuraGiftRewardView")
require("game.sakuraGift.view.SakuraGiftRewardItem")
require("game.sakuraGift.view.SakuraGiftChuanwenLabel")
SakuraGiftController = SakuraGiftController or BaseClass(BaseController, true)
local SakuraGiftController = SakuraGiftController
function SakuraGiftController:__init()
SakuraGiftController.Instance = self
self.model = SakuraGiftModel:getInstance()
self:AddEvents()
self:RegisterAllProtocal()
end
function SakuraGiftController:__delete()
end
function SakuraGiftController:RegisterAllProtocal( )
local register_cfg = {
[33400] = {
handler = function(self,scmd)
self:Handle33400( scmd )
end,
},
[33401] = {
handler = function(self,scmd)
self:Handle33401( scmd )
end,
},
[33402] = {
handler = function(self,scmd)
self:Handle33402( scmd )
end,
},
[33403] = {
handler = function(self,scmd)
self:Handle33403( scmd )
end,
},
[33404] = {
handler = function(self,scmd)
self:Handle33404( scmd )
end,
},
}
self:RegisterProtocalByCFG(register_cfg)
end
function SakuraGiftController:AddEvents()
local function on_game_start()
self.model:Reset()
end
GlobalEventSystem:Bind(EventName.GAME_START, on_game_start)
local function onRequestProtocal(...)
local args = {...}
if args[1] == 33400 or args[1] == 33403 then
self:SendFmtToGame(args[1], "h", args[2])
elseif args[1] == 33402 then
self:SendFmtToGame(args[1], "hc", args[2], args[3])
elseif args[1] == 33401 then
self:SendFmtToGame(args[1], "hcc", args[2], args[3], args[4])
elseif args[1] == 33404 then
self:SendFmtToGame(args[1], "hih", args[2], args[3], args[4])
end
end
self.model:Bind(SakuraGiftModel.REQUEST_CCMD_EVENT, onRequestProtocal)
local function OPEN_BASE_VIEW( sub_type, is_close )
if is_close then
if self.sakuragiftview then
self.sakuragiftview:Close()
end
return
end
if self.sakuragiftview == nil then
self.sakuragiftview = SakuraGiftView.New()
end
local base_type = CustomActivityModel.CustomActBaseType.SAKURA_GIFT
local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
self.cur_sub_type = sub_type
if not self.sakuragiftview:HasOpen() then
self.sakuragiftview:Open(sub_type)
end
end
self.model:Bind(SakuraGiftModel.OPEN_BASE_VIEW, OPEN_BASE_VIEW)
local function OPEN_SHOP_VIEW( sub_type, is_close )
if is_close then
if self.sakuragiftshopview then
self.sakuragiftshopview:Close()
end
return
end
if self.sakuragiftshopview == nil then
self.sakuragiftshopview = SakuraGiftShopView.New()
end
if not self.sakuragiftshopview:HasOpen() then
self.sakuragiftshopview:Open(sub_type)
end
end
self.model:Bind(SakuraGiftModel.OPEN_SHOP_VIEW, OPEN_SHOP_VIEW)
local onSakuraGiftExchangeView = function (data, is_close)--兑换请求界面
if self.SakuraGiftExchangeView == nil then
self.SakuraGiftExchangeView = SakuraGiftExchangeView.New()
end
if self.SakuraGiftExchangeView:HasOpen() and not is_close then
elseif not is_close then
self.SakuraGiftExchangeView:Open(data)
else
self.SakuraGiftExchangeView:Close()
end
end
self.model:Bind(SakuraGiftModel.OPEN_EXCHANGE_REQ_VIEW, onSakuraGiftExchangeView)
local onSakuraGiftRewardView = function (data, is_close)
if self.SakuraGiftRewardView == nil then
self.SakuraGiftRewardView = SakuraGiftRewardView.New()
end
if self.SakuraGiftRewardView:HasOpen() and not is_close then
elseif not is_close then
self.SakuraGiftRewardView:Open(data)
else
self.SakuraGiftRewardView:Close()
end
end
self.model:Bind(SakuraGiftModel.OPEN_REWARD_VIEW, onSakuraGiftRewardView)
-- 上方滚屏
-- local onSakuraGiftMessageView = function (show)
-- if show then
-- if self.SakuraGiftMessageView == nil then
-- self.SakuraGiftMessageView = SakuraGiftMessageView.New()
-- end
-- else
-- if self.SakuraGiftMessageView then
-- self:HideNoticeView(false)
-- self.SakuraGiftMessageView:DeleteMe()
-- self.SakuraGiftMessageView = nil
-- end
-- end
-- end
-- self.model:Bind(SakuraGiftModel.OPEN_MESSAGE_VIEW, onSakuraGiftMessageView)
end
----------滚屏跑马逻辑-start---------
-- function SakuraGiftController:AppendNoticeMsg( content )
-- if not self.SakuraGiftMessageView then
-- return
-- end
-- self.SakuraGiftMessageView:AppendMessage(content)
-- end
-- function SakuraGiftController:HideNoticeView(bool)
-- if self.SakuraGiftMessageView then
-- self.SakuraGiftMessageView:SetHide(bool)
-- end
-- end
-- function SakuraGiftController:InitMessage( )
-- if self.SakuraGiftMessageView then
-- self.SakuraGiftMessageView:InitMsg()
-- end
-- end
----------滚屏跑马逻辑-end-----------
--[[############## 基础信息 ##############
protocol=33400
{
c2s{
sub_type :int16 // 活动子类型
}
s2c{
sub_type :int16 // 活动子类型
lucky_value :int32 // 源樱值(幸运值)
use_free_times :int8 // 已使用免费次数
}
}--]]
function SakuraGiftController:Handle33400( scmd )
self.model:SetActInfo(scmd)
self.model:CheckAllRed( scmd.sub_type )
self.model:Fire(SakuraGiftModel.REFRESH_ACT_INFO)
end
--[[############## 抽奖 ##############
protocol=33401
{
c2s{
sub_type :int16 // 活动子类型
type :int8 // 1-单抽 2-十连抽
is_auto :int8 // 是否自动购买
}
s2c{
errcode :int32 // 错误码
sub_type :int16 // 活动子类型
lucky_value :int32 // 源樱值(幸运值)
use_free_times :int8 // 已使用免费次数
reward_list:array{
reward_id :int32 // 奖励物品Id
num :int16 // 数量
}
score :int32 // 当前拥有积分
}
}
--]]
function SakuraGiftController:Handle33401( scmd )
if scmd.errcode == 1 then
Message.show("操作成功~")
self.model:SetActInfo(scmd)
self.model:CheckAllRed( scmd.sub_type )
self.model:Fire(SakuraGiftModel.REFRESH_ACT_INFO)
self.model:ShowGetRewardView(scmd.reward_list)
self.model:Fire(SakuraGiftModel.REQUEST_CCMD_EVENT,33402, scmd.sub_type, 1)
else
ErrorCodeShow(scmd.errcode)
end
end
--[[############## 记录信息 ##############
protocol=33402
{
c2s{
sub_type :int16 // 活动子类型
log_type :int8 // 1-全服记录 2-个人记录
}
s2c{
sub_type :int16 // 活动子类型
log_type :int8 // 1-全服记录 2-个人记录
log_list:array{
name :string
good_type_id :int32 // 物品配置Id
num :int16 // 物品数量
time :int32 // 时间
}
}
}--]]
function SakuraGiftController:Handle33402( scmd )
if scmd.sub_type == self.cur_sub_type then -- 全服传闻
local sort_func = function ( a, b )
return a.time < b.time
end
table.sort(scmd.log_list, sort_func)
self.model:InitMessage()
-- local function delay_method( )
local sort_func = function ( a, b )
return a.time > b.time
end
table.sort(scmd.log_list, sort_func)
for k,v in ipairs(scmd.log_list) do
local content = "%s 在%s中祈福得到了%s * %s,实在是福运绵长啊"
local goods_name = GoodsModel:getInstance():getGoodsName(v.good_type_id, true)
content = string.format(content,
HtmlColorTxt( v.name, ColorUtil.YELLOW_DARK),
HtmlColorTxt( "[源樱之礼]", ColorUtil.GREEN_DARK),
goods_name, v.num )
self.model:AppendNoticeMsg( content )
end
self.model:Fire(SakuraGiftModel.UPDATE_CHUANWEN)
-- end
-- setTimeout(delay_method, 3)
end
-- self.model:Fire(SakuraGiftModel.REFRESH_RECORD_INFO, scmd)
end
--积分商城信息
function SakuraGiftController:Handle33403( scmd )
self.model:SetShopInfo(scmd)
self.model:CheckAllRed( scmd.sub_type )
self.model:Fire(SakuraGiftModel.REFRESH_SHOP_INFO)
end
--[[############## 积分商城兑换 ##############
protocol=33404
{
c2s{
sub_type :int16 // 活动子类型
reward_id :int32 // 奖励Id(对应奖励配置Id)
buy_num :int16 // 兑换数量
}
s2c{
errcode :int32 // 错误码
sub_type :int16 // 活动子类型
score :int32 // 当前拥有积分
// 只更新兑换的物品数据
reward_id :int32 // 奖励Id(对应奖励配置Id)
times :int16 // 已兑换次数
}
}--]]
--积分商城兑换
function SakuraGiftController:Handle33404( scmd )
if scmd.errcode == 1 then
--print('=======Msh:SakuraGiftController.lua[200] ===TABLE====')
--PrintTable(scmd)
Message.show("兑换成功~")
local is_find = self.model:RefreshShopOneInfo(scmd)
--print('=======Msh:SakuraGiftController.lua[204] =======', is_find)
if is_find then
self.model:CheckRedByType(SakuraGiftModelRedType.Exchange, scmd.sub_type)
self.model:Fire(SakuraGiftModel.REFRESH_SHOP_INFO)
else
self.model:Fire(SakuraGiftModel.REQUEST_CCMD_EVENT, 33403, scmd.sub_type)
end
else
ErrorCodeShow(scmd.errcode)
end
end