|
|
- require("game.proto.418.Require418")
- require("game.beach.BeachModel")
- require("game.beach.BeachConst")
- require("game.beach.view.BeachResultView")--活动结算界面
- require("game.beach.view.BeachVoteTimeShowTip")--投票剩余次数组件
- require("game.beach.view.BeachVoteView")
- require("game.beach.view.BeachBuyTip")--投票购买界面
- require("game.beach.view.BeachRankBaseView")--榜单界面
- require("game.beach.view.BeachRankItem")--排行榜
- require("game.beach.view.BeachRankView")--排行榜
- require("game.beach.view.BeachRoleItem")--排行榜
- require("game.beach.view.BeachRoleView")--排行榜
- require("game.beach.view.BeachSceneView")--海滩场景
-
- require("game.beach.view.BeachChatView")--聊天界面
- require("game.beach.view.BeachMainView")--聊天界面
- require("game.beach.view.BeachMainRankItem")--聊天界面
- require("game.beach.view.BeachQuickChatItem")--聊天界面
-
- BeachController = BeachController or BaseClass(BaseController)
-
- function BeachController:__init()
- BeachController.Instance = self
- self.model = BeachModel:GetInstance()
-
- self:RegisterProtocals()
- self:InitEvent()
- end
-
- function BeachController:ShowErrow( res )
- if 4180009 == res then
- else
- ErrorCodeShow(res)
- end
- end
-
- function BeachController:RegisterProtocals()
- local register_cfg = {
- [41800] = {--错误码展示
- handler = function(self,scmd)
- print('----LZR BeachController.lua 舞池派对返回码-- scmd.res=',scmd.res)
- if scmd.res == 1006 then
- GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.FAULT)
- local function recharge_call( )
- if self.beachbuytip then
- self.beachbuytip:Close()
- end
- end
- local qc_data = {
- close_callback = recharge_call,
- }
- GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true, qc_data)
- else
- self:ShowErrow(scmd.res)
- end
- end,
- },
- [41801] = {
- req_event_data = {BeachConst.REQ_ACTIVITY_STATUS},req_func = false,
- handler = function(self,scmd)
- --活动状态
- --status 0-关闭 1-准备 2-进行中 3-发奖励(初定)
- scmd.end_time = scmd.start_time + scmd.duration + 5
- self.model:SetActivityInfo(scmd)
- -------------------------
- local curTime = TimeUtil:getServerTime()
- local status_time = scmd.end_time - curTime
- if scmd.status ~= 0 and status_time > 0 then
- ActivityIconManager:getInstance():addIcon(418, status_time)
- if self.model.need_show_activity_tip then
- if not SceneManager.Instance:IsBeachScene() then
- -- GlobalEventSystem:Fire(EventName.OPEN_ACITVITY_TIP, 418,nil,true)
- end
- self.model.need_show_activity_tip = false
- end
- ChatModel:getInstance():ClearAllMsgDataByChannel(ChatModel.CHANNEL_BEACH)
- else
- ActivityIconManager:getInstance():deleteIcon(418)
- self.model.need_show_activity_tip = true
- GlobalEventSystem:Fire(EventName.CLOSE_ACITVITY_TIP, 418,nil)
- end
- -------------------------
- self.model:Fire(BeachConst.ANS_ACTIVITY_STATUS)
- end,
- },
- [41802] = {--进入场景
- req_event_data = {BeachConst.REQ_ENTER_SCENE},req_func = false,
- handler = function(self,scmd)
- if scmd.rcode == 1 then
- GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
- Message.show("进入成功!")
- else
- self:ShowErrow(scmd.rcode)
- end
- end,
- },
- [41803] = {--退出场景
- req_event_data = {BeachConst.REQ_QUIT_SCENE},req_func = false,
- handler = function(self,scmd)
- if scmd.rcode == 1 then
- GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
- Message.show("退出成功!")
- else
- self:ShowErrow(scmd.rcode)
- end
- end,
- },
- [41804] = {--个人信息
- req_event_data = {BeachConst.REQ_MY_ACTIVITY_INFO},req_func = false,
- handler = function(self,scmd)
- self.model:SetMyInfo( scmd )
- self.model:Fire(BeachConst.ANS_MY_ACTIVITY_INFO)
- end,
- },
- [41805] = {--投票排行榜
- req_event_data = {BeachConst.REQ_RANK_INFO,"c"},req_func = false,
- handler_manual = function(self)
- --情况特殊需要手写协议
- local function get41805( )
- local data = {}
- data.self_rank = UserMsgAdapter.ReadFmt("i") or 0
- data.self_be_voted = UserMsgAdapter.ReadFmt("i") or 0
- local len0 = UserMsgAdapter.ReadFmt("h") or 0
- data.rank_list = data.rank_list or {}
- local vo0 = nil
- for i = 1,len0 do
- local role_vo = RoleVo.New()
- role_vo.rank=UserMsgAdapter.ReadFmt("i") or 0
- role_vo.be_voted=UserMsgAdapter.ReadFmt("i") or 0
- role_vo.figure=FigureProtoVo.ReadFmt(role_vo)
- role_vo.server_id=UserMsgAdapter.ReadFmt("h") or 0
- role_vo.have_vote=UserMsgAdapter.ReadFmt("c") or 0
- table.insert(data.rank_list,role_vo)
- end
-
- local len1 = UserMsgAdapter.ReadFmt("h") or 0
- data.left_rank = data.left_rank or {}
- local vo1 = nil
- for i = 1,len1 do
- vo1 = {}
- vo1.rank=UserMsgAdapter.ReadFmt("i") or 0
- vo1.be_voted=UserMsgAdapter.ReadFmt("i") or 0
- vo1.picture=PictureProtoVo.ReadFmt(vo1)
- vo1.server_id=UserMsgAdapter.ReadFmt("h") or 0
- vo1.have_vote=UserMsgAdapter.ReadFmt("c") or 0
- table.insert(data.left_rank,vo1)
- end
- return data
- end
- -------------------------
- -------------------------
- local scmd = get41805()
- self.model:SetVoteRankInfo( scmd )
- self.model:Fire(BeachConst.ANS_RANK_INFO)
- -----------------------
- --提取第一名的信息创造更新场景假人
- for k,v in pairs(scmd.rank_list) do
- if v.rank == 1 then
- local fake_data = DeepCopy(v)
- fake_data.role_id = BeachConst.FakeRoleId
- fake_data.is_fake_role = true
- fake_data.server_num = fake_data.server_num or fake_data.server_id
- local pos_data = self.model:GetKeyValue( "solo_dance_point" )
- pos_data = stringtotable(pos_data)
- fake_data.pos_x = tonumber(pos_data[1])
- fake_data.pos_y = tonumber(pos_data[2])
- -------------------------
- fake_data.hatred = 0
- fake_data.dance_status = 1
- -------------------------
- local role = Scene.Instance:GetRole(BeachConst.FakeRoleId)
- local role_vo = SceneManager.Instance:GetRoleVo(BeachConst.FakeRoleId)
- if not role and not role_vo then
- -------------------------
- --为了避免可能的重复加载,就不做延迟了吧
- SceneManager.Instance:AddRoleVo(fake_data)
- else
- for a,b in pairs(fake_data) do
- role_vo[a] = b
- end
- role:InitRoleVo(role_vo)
- role:LoadInfoFromVo()
- role_vo:RefreshFosterData()
- end
- break
- end
- end
- -------------------------
- end,
- },
- [41806] = {--增加经验
- req_event_data = {BeachConst.REQ_EXP_CHANGE},req_func = false,
- handler = function(self,scmd)
- if scmd.rcode == 1 then
- self.model:RefreshMyExp( scmd.add_exp )
- self.model:Fire(BeachConst.ANS_EXP_CHANGE)
- else
- self:ShowErrow(scmd.rcode)
- end
- end,
- },
- [41807] = {--魅力第一(舞台solo者)
- handler = function(self,scmd)
- self.model:SetTopInfo(scmd)
- self.model:Fire(BeachConst.ANS_TOP_INFO)
- end,
- },
- [41808] = {--投票
- -- 不能给自己投票哦
- req_event_data = {BeachConst.REQ_TRY_VOTE,"l"},req_func = function(self,role_id)
- if role_id == RoleManager.Instance.mainRoleInfo.role_id then
- Message.show("不能给自己投票哦")
- else
- self:SendFmtToGame(41808,"l",role_id)
- end
- end,
- handler = function(self,scmd)
- if scmd.rcode == 1 then
- GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
- Message.show("投票成功!")
- self.model:SetVoteClock()
- self.model:RefreshMyVoteNum( scmd.vote_times,nil,scmd.vote_other_time )
- self.model:Fire(BeachConst.ANS_TRY_VOTE)
- self.model:Fire(BeachConst.REQ_MY_ACTIVITY_INFO)--投票后刷一下界面
- local len = self.model:GetCurRankSetSCMDLength( )
- self.model:Fire(BeachConst.REQ_RANK_INFO,len)
- else
- ErrorCodeShow(scmd.rcode)
- end
- end,
- },
- [41809] = {--我的投票列表(谁投了我)
- req_event_data = {BeachConst.REQ_MY_VOTE_INFO},req_func = false,
- handler = function(self,scmd)
- self.model:SetMyVoteList(scmd.role_list)
- self.model:Fire(BeachConst.ANS_MY_VOTE_INFO)
- end,
- },
- [41811] = {--购买投票次数
- req_event_data = {BeachConst.REQ_BUY_VOTE_TIME,"c"},req_func = false,
- handler = function(self,scmd)
- GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS)
- Message.show("购买成功!")
- self.model:RefreshMyVoteNum( scmd.vote_times,scmd.has_buy_times,nil )
- self.model:Fire(BeachConst.ANS_BUY_VOTE_TIME)
- end,
- },
- [41812] = {--推送协议(投票红点)
- handler = function(self,scmd)
- self.model.vote_red_dot = true
- self.model:Fire(BeachConst.RED_DOT)
- end,
- },
- [41813] = {--广播投票弹窗
- handler = function(self,scmd)
- local data = {
- role_vo_1 = scmd, --我方
- role_vo_2 = nil, --敌方
- type = 1, --UI类型
- desc = string.format("投票给了 %s", scmd.be_voted_name), --描述
- max_num = 3, --同时显示最大数量
- need_cut_str = true,
- }
- if SceneManager:getInstance():IsShowDynamicInfoScene() then
- GlobalEventSystem:Fire(EventName.SHOW_DYNAMIC_INFO_TIP, data)
- end
- -------------------------
- end,
- },
- }
- self:RegisterProtocalByCFG(register_cfg)
- end
-
- function BeachController:InitEvent()
- local function change_account()
- if self.beachsceneview then
- self.beachsceneview:Close()
- end
- end
- GlobalEventSystem:Bind(EventName.CHANGE_ACCOUNT,change_account)
- GlobalEventSystem:Bind(EventName.CHANGE_ROLE,change_account)
-
- local function onGameStartHandler(level)
- if GetModuleIsOpen(418) then
- self.model:Fire(BeachConst.REQ_ACTIVITY_STATUS)
- end
- end
- self:Bind(EventName.GAME_START, onGameStartHandler)
-
- RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, function (level)
- if GetModuleOpenLevel( 418,0) == level and GetModuleIsOpen(418) then
- self.model:Fire(BeachConst.REQ_ACTIVITY_STATUS)
- end
- end)
-
- local function onSceneStartHandler( )
- self:ChangeScene()
- end
- self:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, onSceneStartHandler)
-
- local function OPEN_ACITVITY_RESULT( data )
- self.beachresultview = self.beachresultview or BeachResultView.New()
- self.beachresultview:Open(data)
- end
- self.model:Bind(BeachConst.OPEN_ACITVITY_RESULT,OPEN_ACITVITY_RESULT)
-
- local function OPEN_BUY_VOTE( )
- self.beachbuytip = self.beachbuytip or BeachBuyTip.New()
- self.beachbuytip:Open()
- end
- self.model:Bind(BeachConst.OPEN_BUY_VOTE,OPEN_BUY_VOTE)
-
- local function OPEN_RANK_BASE_VIEW( )
- self.beachrankbaseview = self.beachrankbaseview or BeachRankBaseView.New()
- self.beachrankbaseview:Open()
- end
- self.model:Bind(BeachConst.OPEN_RANK_BASE_VIEW,OPEN_RANK_BASE_VIEW)
-
- local function OPEN_MAIN_CHAT_VIEW( extra_params )
- self.beachmainview = self.beachmainview or BeachMainView.New()
- self.beachmainview:Open(extra_params)
- end
- self.model:Bind(BeachConst.OPEN_MAIN_CHAT_VIEW,OPEN_MAIN_CHAT_VIEW)
-
- local function OPEN_VOTE_VIEW( data )
- self.beachvoteview = self.beachvoteview or BeachVoteView.New()
- self.beachvoteview:Open( data )
- end
- self.model:Bind(BeachConst.OPEN_VOTE_VIEW,OPEN_VOTE_VIEW)
-
- -- local function CHANGE_DANCE_STATUS( flag,force )
- -- local main_role = Scene.Instance:GetMainRole()
- -- if (flag and flag > 0) and main_role and main_role:IsInState(PoseState.ATTACK) then
- -- Message.show("正在战斗中,请停下战后再跳舞!")
- -- return
- -- end
- -- local is_ride = RoleManager:getInstance():GetMainRoleVo() and (RoleManager:getInstance():GetMainRoleVo().is_ride ~= 0)
- -- if is_ride and (flag ~= 0) then
- -- GlobalEventSystem:Fire(EventName.HIDE_HORSE)
- -- end
- -- --int:8 动作0取消 后续数字为指定动作 1祝火2温泉跳舞
- -- if not force then--以前是只有一个跳舞动作,现在要随机多种,那么不发force的话我就在这里帮你随机了啊
- -- if flag and flag > 0 then
- -- flag = math.random(1,3)
- -- end
- -- end
- -- self:SendFmtToGame(12025, "c", flag or 0)
- -- end
- -- self.model:Bind(BeachConst.CHANGE_DANCE_STATUS,CHANGE_DANCE_STATUS)
-
- -------------------------
- local function onAddMsgHandler(info)
- --聊天红点监听
- if self.beachmainview then
- --开着界面就不用管了,让聊天界面控制
- else
- if info.channel == ChatModel.CHANNEL_BEACH then
- self.model.talk_red_dot = true
- self.model:Fire(BeachConst.RED_DOT)
- end
- end
- end
- ChatModel:getInstance():Bind(ChatModel.ADD_NEW_MSG, onAddMsgHandler)
-
-
- -------------------------
- local function TRY_TO_VOTE( role_id, role_name )
- if not (role_id == RoleManager.Instance.mainRoleInfo.role_id) then
- self.model:BeachSendMsg(BeachModel.VoiceType.Vote, role_name)
- end
- self.model:Fire(BeachConst.REQ_TRY_VOTE, role_id)
- end
- self.model:Bind(BeachConst.TRY_TO_VOTE, TRY_TO_VOTE)
- end
-
- function BeachController:ChangeScene()
- local scene_mgr = SceneManager.Instance
-
- self.model.show_scene_left_tip = nil
- if scene_mgr:IsBeachScene() then
- self.model:SetTopInfo( nil )--重置第一名信息
- self.beachsceneview = self.beachsceneview or BeachSceneView.New()
- self.beachsceneview:Open()
- self:SetMainUIVisible(false)
- -------------------------
- local main_vo = RoleManager.Instance.mainRoleInfo
- local temp_head_name = "舞池DJ"
- local str = "欢迎来到 魅力舞池!\n尽情舞动享受派对吧!"
- local data = {
- head_type = 1004,
- 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
- SceneManager.Instance:DeleteRoleVo( BeachConst.FakeRoleId )
- self.model.talk_red_dot = false
- self.model.vote_red_dot = false
- if self.beachsceneview then
- self.beachsceneview:Close()
- end
- if scene_mgr:IsBeachScene(scene_mgr:GetLastSceneId()) then
- self:SetMainUIVisible(true)
- -------------------------
- local result_data = self.model:GetTopInfo()
- if result_data then
- local list = self.model:GetRewardConfByRank( result_data.rank )
- table.insert(list, {100, 100007, result_data.acc_exp}) -- 默认多显示一个经验奖励图标
- local data = {
- time = 20,
- exp_num = result_data.acc_exp,
- first_name = GetCSLongName( (result_data.first_name or ""), result_data.first_server_id , nil, ColorUtil.YELLOW_DARK),
- award_list = list,
- close_call = function ( )
- end
- }
- self.model:Fire(BeachConst.OPEN_ACITVITY_RESULT, data)
- end
- -------------------------
- end
- end
- end
-
- --设置主界面的显示情况
- function BeachController:SetMainUIVisible(value)
- GlobalEventSystem:Fire(EventName.CHANGE_RIGHT_TIP_ICON, not value, MainUIModel.ACTIVITY_MODE)
- GlobalEventSystem:Fire(EventName.HIDE_LEFT_MIDDLE_VIEW, not value, MainUIModel.ACTIVITY_MODE)
- GlobalEventSystem:Fire(EventName.HIDE_RIGHT_BOTTOM_VIEW, not value, MainUIModel.ACTIVITY_MODE)
- GlobalEventSystem:Fire(EventName.HIDE_TASK_TEAM_VIEW, not value, MainUIModel.ACTIVITY_MODE)
- GlobalEventSystem:Fire(EventName.OPEN_LEFT_MIDDLE_MENU, value, MainUIModel.ACTIVITY_MODE)
- end
|