源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

266 行
9.4 KiB

--[[
跨服沙盘玩法
--]]
require("game.proto.604.Require604")
require("game.sandTable.SandTableModel")
require("game.sandTable.SandTableConst")
require("game.sandTable.view.SandTableView")--主界面
require("game.sandTable.view.SandTableNodeItem")--据点Item
-------------------------
require("game.sandTable.view.SandTableNodeTip")--据点tip信息
require("game.sandTable.view.SandTableNodeTipItem")--据点tip信息item
require("game.sandTable.view.SandTableTipCon")--tip信息页容器
require("game.sandTable.view.SandTableRankTip")--战功榜信息
require("game.sandTable.view.SandTableRankItem")--战功榜信息item
require("game.sandTable.view.SandTableSelfTip")--本国战况信息页
require("game.sandTable.view.SandTableBuffTip")--buff据点信息页
require("game.sandTable.view.SandTableSceneView")--场景
require("game.sandTable.view.SandTableSceneRankItem")--场景伤害榜单节点
require("game.sandTable.view.SandTableResultView")--结算
SandTableController = SandTableController or BaseClass(BaseController, true)
local SandTableController = SandTableController
function SandTableController:__init()
SandTableController.Instance = self
self.model = SandTableModel:getInstance()
self:RegisterAllProtocal()
self:AddEvents()
end
function SandTableController:__delete()
end
function SandTableController:RegisterAllProtocal( )
self:RegisterProtocal(60400, "on60400")-- 跨服沙盘-开启状态
self:RegisterProtocal(60401, "on60401")-- 跨服沙盘-全局信息
self:RegisterProtocal(60402, "on60402")-- 跨服沙盘-全局信息-单个据点-主推
self:RegisterProtocal(60403, "on60403")-- 跨服沙盘-查看据点攻占详情
self:RegisterProtocal(60404, "on60404")-- 跨服沙盘-进攻据点
self:RegisterProtocal(60405, "on60405")-- 跨服沙盘-插旗
self:RegisterProtocal(60407, "on60407")-- 跨服沙盘-领取据点占领奖励
self:RegisterProtocal(60408, "on60408")-- 跨服沙盘-我方激活的buff
self:RegisterProtocal(60409, "on60409")-- 跨服沙盘-副本内信息
self:RegisterProtocal(60410, "on60410")-- 跨服沙盘-副本结算信息
end
function SandTableController:AddEvents()
local protocal_format = {
[60402] = "h",
[60403] = "h",
[60404] = "hc",
[60405] = "hc",
[60406] = "c",
[60407] = "h",
}
local function onSendCmdFunc( ... )
local args_list = {...}
if protocal_format[args_list[1]] then
local proto_id = table.remove(args_list,1)
self:SendFmtToGame(proto_id, protocal_format[proto_id], unpack(args_list))
else
self:SendFmtToGame(args_list[1])
end
end
self.model:Bind(SandTableConst.PROTO_CCMD_EVENT, onSendCmdFunc)
local function on_game_start()
self.model:Reset()
if GetModuleIsOpen(604,nil) then
self.model:Fire(SandTableConst.PROTO_CCMD_EVENT, 60400)
end
end
GlobalEventSystem:Bind(EventName.GAME_START, on_game_start)
RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, function (level)
if GetModuleOpenLevel( 604,nil) == level then
self.model:Fire(SandTableConst.PROTO_CCMD_EVENT, 60400)
end
end)
local function OPEN_MAIN_VIEW( is_close )
if is_close then
if self.sandtableview then
self.sandtableview:Close()
end
else
self.sandtableview = self.sandtableview or SandTableView.New()
if not self.sandtableview:HasOpen() then
self.sandtableview:Open()
end
end
end
self.model:Bind(SandTableConst.OPEN_MAIN_VIEW, OPEN_MAIN_VIEW)
local function OPEN_RESULT_VIEW( data )
self.sandtableresultview = self.sandtableresultview or SandTableResultView.New()
if not self.sandtableresultview:HasOpen() then
self.sandtableresultview:Open(data)
end
end
self.model:Bind(SandTableConst.OPEN_RESULT_VIEW, OPEN_RESULT_VIEW)
local function onSceneStartHandler( )
self.model:ResetFightScoreCfg()--重置积分,节约空间
self:ChangeScene()
end
self:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, onSceneStartHandler)
local function ANS_CSGWAR_RED( )
self:CheckRedDot()
end
CSGWarModel:GetInstance():Bind(CSGWarConst.ANS_CSGWAR_RED, ANS_CSGWAR_RED)
local function on_arms_num_change_var( )
-- 那几个满足挑战条件的,给个外部红点让人去打
self:CheckRedDot()
end
CSMainModel:getInstance():BindOne("arms_num", on_arms_num_change_var)
end
function SandTableController:ChangeScene( )
if self.sandtablesceneview then
self.sandtablesceneview:Close()
end
if SceneManager.Instance:IsSandTableDungeon() then
self.sandtablesceneview = self.sandtablesceneview or SandTableSceneView.New()
self.sandtablesceneview:Open()
-------------------------
local point_type = self.model:GetPointTypeByDunId( )
local str = SandTableConst.EnterTip[point_type]
if not str then return end
local main_vo = RoleManager.Instance.mainRoleInfo
local temp_head_name = main_vo.name
local data = {
head_type = 1000 + main_vo.career,
desc = str,
head_name = temp_head_name or "",
hide_time = 8,
dalay_time = 1,
is_task_type = true,
}
GlobalEventSystem:Fire(EventName.SHOW_COM_DIALOGUE_SHOW_VIEW,data)
else
local last_id = SceneManager.Instance:GetLastSceneId()
if SceneManager.Instance:IsSandTableDungeonScene(last_id) then
--上一次是沙盘副本场景
CSMainModel:getInstance():Fire(CSMainConst.OPEN_CS_MAIN_BASE_VIEW)
local function delay( )
self.model:Fire(SandTableConst.OPEN_MAIN_VIEW)
end
setTimeout(delay,0.2)
end
end
end
-- ############ 跨服沙盘-开启状态 protocol=60400 ############
function SandTableController:on60400( )
local vo = SCMD60400.New(true)
self.model:SetActInfo(vo)
self.model:Fire(SandTableConst.PROTO_CCMD_EVENT, 60401)
end
-- ############ 跨服沙盘-全局信息 protocol=60401 ############
function SandTableController:on60401( )
local vo = SCMD60401.New(true)
self.model:SetPointDateList( vo.point_list,true )
self.model:SetBuffInfo( vo.buff_info )
self.model:Fire(SandTableConst.REFRESH_ALL_POINT_INFO)
self:CheckRedDot( )
end
-- ############ 跨服沙盘-全局信息-单个据点-主推 protocol=60402 ############
function SandTableController:on60402( )
local vo = SCMD60402.New(true)
self.model:SetPointDateList( {vo} )
self.model:Fire(SandTableConst.REFRESH_ALL_POINT_INFO)
self:CheckRedDot( )
end
-- ############ 跨服沙盘-查看据点攻占详情 protocol=60403 ############
function SandTableController:on60403( )
local vo = SCMD60403.New(true)
self.model:SetFightRankData(vo)
self.model:Fire(SandTableConst.OPEN_POINT_INFO_VIEW, vo.point_id, nil, vo)
end
-- ############ 跨服沙盘-进攻据点 protocol=60404 ############
function SandTableController:on60404( )
local vo = SCMD60404.New(true)
if vo.res == 1 then
Message.show("操作成功~")
self.model:SetDungeonInfo(false)
else
ErrorCodeShow(vo.res)
end
end
-- ############ 跨服沙盘-插旗 protocol=60405 ############
function SandTableController:on60405( )
local vo = SCMD60405.New(true)
if vo.res == 1 then
self.model:Fire(SandTableConst.CancelShowTip)
-------------------------
if vo.type == 1 then
Message.show("发起成功~")
-- local is_us = self.model:IsSelfFactionByPoint( vo.point_id )
local cfg = self.model:GetPointCfg( vo.point_id )
if cfg then
local content = string.format(SandTableConst.FlagTalk, Trim(cfg.name))
ChatModel:getInstance():Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_COUNTRY,content,nil,nil,ChatModel.CHAT_COMMON_TYPE.SYSTEM)
end
else
Message.show("已取消~")
end
else
ErrorCodeShow(vo.res)
end
end
-- ############ 跨服沙盘-领取据点占领奖励 protocol=60407 ############
function SandTableController:on60407( )
local vo = SCMD60407.New(true)
if vo.res == 1 then
Message.show("领取成功")
local data = self.model:GetPointDateList( vo.point_id )
if data then
--找到数据就自己更新
data.award_time = vo.award_time
self:CheckRedDot( )
self.model:Fire(SandTableConst.REFRESH_ALL_POINT_INFO)
else
--没找到就请求数据了
self.model:Fire(SandTableConst.PROTO_CCMD_EVENT, 60401)
end
else
ErrorCodeShow(vo.res)
end
end
-- ############ 跨服沙盘-我方激活的buff protocol=60408 ############
function SandTableController:on60408( )
local vo = SCMD60408.New(true)
self.model:SetSelfActiveBuff(vo.skill_list)
end
-- ############ 跨服沙盘-副本内信息 protocol=60409 ############
function SandTableController:on60409( )
local vo = SCMD60409.New(true)
self.model:SetDungeonInfo(vo)
self.model:Fire(SandTableConst.ANS_DUNGEON_INFO)
end
-- ############ 跨服沙盘-副本结算信息 protocol=60410 ############
function SandTableController:on60410( )
CustomActivityModel:getInstance():SetGoodsCanFly(false)
local vo = SCMD60410.New(true)
self.model:Fire(SandTableConst.OPEN_RESULT_VIEW, vo)
self.model:Fire(SandTableConst.CancelShowTip)
self.model:Fire(SandTableConst.PROTO_CCMD_EVENT, 60402, vo.point_id)
end
function SandTableController:CheckRedDot( )
local function call_backack( )
-- local csgwar_red_data = CSGWarModel:getInstance():GetCSGWarRedData()
-- local csgwar_red = csgwar_red_data.one_red or csgwar_red_data.support_red or csgwar_red_data.fight_red or csgwar_red_data.occupy_red
-------------------------
self.model:GetRedDot( true )
-------------------------
self.model:Fire(SandTableConst.RedDotRefresh)
end
TimeManager.GetInstance():StartTime("SandTableController_CheckRedDot", 0.5, call_backack)
end