|
|
- --[[
- 跨服沙盘玩法
- --]]
- 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
|