1154 lines
37 KiB
Lua
1154 lines
37 KiB
Lua
|
|
local MainRightPanelView = import('.MainRightPanelView')
|
|||
|
|
local PlayerInfoView = import('.PlayerInfoView')
|
|||
|
|
local ChatView = import('.ChatView')
|
|||
|
|
local DismissRoomWindow = import('.DismissRoomWindow')
|
|||
|
|
local SettingView = import('.SettingView')
|
|||
|
|
local PlayerDistanceView = import('.PlayerDistanceView')
|
|||
|
|
local FGAssistView = import('.FGAssistView')
|
|||
|
|
|
|||
|
|
-- MainView
|
|||
|
|
MainView = {}
|
|||
|
|
|
|||
|
|
-- 继承 BaseView
|
|||
|
|
setmetatable(MainView, {__index = BaseView})
|
|||
|
|
|
|||
|
|
local M = MainView
|
|||
|
|
|
|||
|
|
-- 语音是否禁止
|
|||
|
|
local record_baned = 0
|
|||
|
|
|
|||
|
|
function M:init()
|
|||
|
|
TimerManager.Clear()
|
|||
|
|
self._gamectr = ControllerManager.GetController(GameController)
|
|||
|
|
self._room = DataManager.CurrenRoom
|
|||
|
|
self._allow_dissmiss = true -- 游戏开始后显示解散房间按钮
|
|||
|
|
self._multilingual = false -- 游戏支持多语言切换
|
|||
|
|
self._language = 0 -- 语言默认0,1可以设为需要的方言
|
|||
|
|
self._style = 1 -- 游戏风格
|
|||
|
|
self._hide_assist = false -- 是否隐藏牌友圈助手
|
|||
|
|
self._gps_style = 1
|
|||
|
|
self.dismiss_cd = 0
|
|||
|
|
UIPackage.AddPackage('base/chat/ui/Chat')
|
|||
|
|
self.Fix_Msg_Chat = ViewUtil.Fix_Msg_Chat -- 自动回复消息列表
|
|||
|
|
self.Fix_Msg_Chat2 = nil -- 自动回复列表2
|
|||
|
|
self:InitView()
|
|||
|
|
self:SetTuoGuanState()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:SetTuoGuanState()
|
|||
|
|
--printlog("初始化设置托管状态")
|
|||
|
|
if ControllerManager.enterPlayerData and #ControllerManager.enterPlayerData>0 then
|
|||
|
|
--pt(ControllerManager.enterPlayerData)
|
|||
|
|
for i=1,#ControllerManager.enterPlayerData do
|
|||
|
|
local p =self._player_info[self:GetPos(ControllerManager.enterPlayerData[i].seat)]
|
|||
|
|
--p.seat=ControllerManager.enterPlayerData[i].seat
|
|||
|
|
local t=ControllerManager.enterPlayerData[i].entrust_time
|
|||
|
|
--local isShow=ControllerManager.enterPlayerData[i].entrust
|
|||
|
|
--if isShow==nil then return end
|
|||
|
|
|
|||
|
|
if t and t>0 then
|
|||
|
|
p:IsShowTGTips(true,t)
|
|||
|
|
else
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
ControllerManager.enterPlayerData=nil
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:InitView(url, isHideIpAdds)
|
|||
|
|
--print("url===>>>")
|
|||
|
|
--print(url)
|
|||
|
|
--print(debug.traceback())
|
|||
|
|
BaseView.InitView(self, url)
|
|||
|
|
--
|
|||
|
|
|
|||
|
|
--[[ 多语言切换(适用于设置界面使用Main_Majiang中SettingView2的游戏)
|
|||
|
|
在EXMainView中进行以下操作
|
|||
|
|
1.在调用 MainView.InitView()前设置self._multilingual = true
|
|||
|
|
2.(没重写M:NewSettingView()就无视这条)
|
|||
|
|
2.1在NewSettingView方法中,创建SettingView对象时第二个参数传true,SettingView.new(self._root_view, true)
|
|||
|
|
2.2加上切换语言回调 settingView.onChangeLanguageCallback:Add(function(languauge) self._language = languauge end)
|
|||
|
|
3.在扩展EXMainView中直接使用self._language判断语言,根据需要重写PlaySound和PlayChatSound
|
|||
|
|
]]
|
|||
|
|
if self._multilingual then
|
|||
|
|
self:SetLanguage(PlayerPrefs.GetInt('Languauge' .. DataManager.CurrenRoom.game_id))
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
self._gcm_chat = self._view:GetChild('gcm_chat')
|
|||
|
|
if self._gcm_chat then
|
|||
|
|
if self._room.ban_chat2 then
|
|||
|
|
self._gcm_chat:GetController('sdk').selectedIndex = 1
|
|||
|
|
self._gcm_chat.visible = false
|
|||
|
|
end
|
|||
|
|
if self._room.room_config and self._room.room_config.isHidden and self._room.room_config.isHidden == 1 then
|
|||
|
|
self._gcm_chat.visible = false
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local _view = self._view
|
|||
|
|
local _room = self._room
|
|||
|
|
self._state = _view:GetController('state')
|
|||
|
|
self._ctr_action = _view:GetController("action")
|
|||
|
|
|
|||
|
|
self:InitPlayerInfoView(isHideIpAdds)
|
|||
|
|
|
|||
|
|
-- 风格1是屏幕上方左右两个组件显示信息
|
|||
|
|
if self._style == 1 then
|
|||
|
|
-- 风格2,屏幕上方一个组件显示信息,所有按钮放在一个单独的下拉菜单中
|
|||
|
|
local rightpanel = self._view:GetChild('right_panel')
|
|||
|
|
if rightpanel then
|
|||
|
|
self._rightPanelView = MainRightPanelView.new(self, rightpanel)
|
|||
|
|
if self._rightPanelView then
|
|||
|
|
self._rightPanelView:_ShowTime()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
local roominfo_panel = _view:GetChild('roominfo_panel')
|
|||
|
|
self:FillRoomConfig(roominfo_panel, _room)
|
|||
|
|
local roominfo_panel1 = _view:GetChild('roominfo_panel1')
|
|||
|
|
self:FillRoomConfig(roominfo_panel1, _room)
|
|||
|
|
|
|||
|
|
-- 显示玩家距离
|
|||
|
|
self.btn_distance = self._view:GetChild('btn_distance')
|
|||
|
|
--self.btn_distance.displayObject.gameObject:SetActive(false)
|
|||
|
|
if self.btn_distance then
|
|||
|
|
self.btn_distance.onClick:Add(function()
|
|||
|
|
if self._room.self_player.seat == 0 then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
self.distance_view = PlayerDistanceView.new(false, self._gps_style, function(v)
|
|||
|
|
self:continue_game(v)
|
|||
|
|
end)
|
|||
|
|
self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and self._state.selectedIndex < 3 and 1 or 0
|
|||
|
|
self.distance_view:Show()
|
|||
|
|
end)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local btn_rule = self._view:GetChild('btn_rule')
|
|||
|
|
if btn_rule ~= nil then
|
|||
|
|
btn_rule.onClick:Set(function()
|
|||
|
|
if self.RuleView == nil or self.RuleView._is_destroy then
|
|||
|
|
self.RuleView = RoomInfoView.new(self._room)
|
|||
|
|
end
|
|||
|
|
self.RuleView:Show()
|
|||
|
|
end)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if _view:GetChild('tex_version') ~= nil then
|
|||
|
|
_view:GetChild('tex_version').text = 'v' .. ExtendManager.GetGameData(_room.game_id).version
|
|||
|
|
end
|
|||
|
|
elseif self._style == 2 then
|
|||
|
|
local com_roominfo = self._view:GetChild('com_roominfo')
|
|||
|
|
com_roominfo:GetChild('tex_roomid').text = _room.room_id
|
|||
|
|
local times = _room.score_times
|
|||
|
|
local str_des = _room.room_config:GetGameName()
|
|||
|
|
if times ~= 1 then
|
|||
|
|
str_des = string.format('%s %s倍', str_des, times)
|
|||
|
|
end
|
|||
|
|
str_des = string.format('%s %s', str_des, _room.room_config:GetDes())
|
|||
|
|
com_roominfo:GetChild('tex_detail').text = str_des
|
|||
|
|
local tex_time = com_roominfo:GetChild('tex_time')
|
|||
|
|
self._co_timer =coroutine.start(function()
|
|||
|
|
while true do
|
|||
|
|
tex_time.text = os.date('%m-%d %H:%M')
|
|||
|
|
local _client = ControllerManager.GameNetClinet
|
|||
|
|
if not _client then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
local ping = _client:getAveragePingTime()
|
|||
|
|
if not ping then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
local ctr_xh = com_roominfo:GetChild('gcm_xinhao'):GetController('c1')
|
|||
|
|
ping = math.floor(ping / 2)
|
|||
|
|
if ping > 300 then
|
|||
|
|
ping = 300
|
|||
|
|
end
|
|||
|
|
if ping <= 100 then
|
|||
|
|
ctr_xh.selectedIndex = 0
|
|||
|
|
elseif ping <= 300 then
|
|||
|
|
ctr_xh.selectedIndex = 1
|
|||
|
|
else
|
|||
|
|
ctr_xh.selectedIndex = 2
|
|||
|
|
end
|
|||
|
|
coroutine.wait(10)
|
|||
|
|
end
|
|||
|
|
end)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local list = _room.player_list
|
|||
|
|
for i = 1, #list do
|
|||
|
|
local p = list[i]
|
|||
|
|
if (p.seat ~= 0) then
|
|||
|
|
local info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
info._view.visible = true
|
|||
|
|
info:FillData(p)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 语音Stard
|
|||
|
|
local gcm_chat = _view:GetChild('gcm_chat')
|
|||
|
|
--gcm_chat.displayObject.gameObject:SetActive(false)
|
|||
|
|
if gcm_chat then
|
|||
|
|
gcm_chat.visible = false
|
|||
|
|
local _btn_chat = gcm_chat:GetChild('n1')
|
|||
|
|
_btn_chat.onClick:Add(function()
|
|||
|
|
if self.chat_view == nil then
|
|||
|
|
self.chat_view = ChatView.new(self)
|
|||
|
|
end
|
|||
|
|
if self._room.ban_chat1 then
|
|||
|
|
if self.chat_view.HideInputField then
|
|||
|
|
self.chat_view:HideInputField()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
self.chat_view:Show()
|
|||
|
|
end)
|
|||
|
|
|
|||
|
|
self._ctr_voice = gcm_chat:GetController('voice')
|
|||
|
|
|
|||
|
|
self._btn_record = gcm_chat:GetChild('btn_record')
|
|||
|
|
self._btn_record.displayObject.gameObject:SetActive(false)
|
|||
|
|
self.ctr_record_ban = self._btn_record:GetController('ban')
|
|||
|
|
self.ctr_record_ban.selectedIndex = record_baned
|
|||
|
|
self._record_time = 0
|
|||
|
|
--[[self._btn_record.onTouchBegin:Set(function()
|
|||
|
|
if record_baned == 1 then
|
|||
|
|
self:__SetRecordEnable()
|
|||
|
|
else
|
|||
|
|
self._record_time = 0
|
|||
|
|
GameApplication.Instance.StopMusic = GameApplication.Instance.StopMusic + 1
|
|||
|
|
self._btn_record.onTouchEnd:Set(self.__RecordTouchEnd, self)
|
|||
|
|
Voice.BeginRecord()
|
|||
|
|
self._ctr_voice.selectedIndex = 1
|
|||
|
|
self.__runwait_record = nil
|
|||
|
|
self.__runwait_record = coroutine.start(self.__WaitRecord, self)
|
|||
|
|
end
|
|||
|
|
end)--]]
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local btn_ready = _view:GetChild('btn_ready')
|
|||
|
|
btn_ready.onClick:Set(function()
|
|||
|
|
self._gamectr:PlayerReady()
|
|||
|
|
end)
|
|||
|
|
|
|||
|
|
local btn_xipai = _view:GetChild('btn_xipai')
|
|||
|
|
if btn_xipai then
|
|||
|
|
btn_xipai.onClick:Set(function()
|
|||
|
|
self._gamectr:PlayerXiPai()
|
|||
|
|
end)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
local btn_start = _view:GetChild('btn_start')
|
|||
|
|
btn_start.onClick:Set(function()
|
|||
|
|
self._gamectr:StartGame()
|
|||
|
|
end)
|
|||
|
|
|
|||
|
|
local _btn_wxyqhy = _view:GetChild('btn_wxyqhy')
|
|||
|
|
if _btn_wxyqhy then
|
|||
|
|
_btn_wxyqhy.visible = false
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
self:EventInit()
|
|||
|
|
self._popEvent = true
|
|||
|
|
self._left_time = 0
|
|||
|
|
self.dismiss_room_cd_time = 0
|
|||
|
|
local btn_back_exit = _view:GetChild('btn_back_exit')
|
|||
|
|
--btn_back_exit.displayObject.gameObject:SetActive(false)
|
|||
|
|
if btn_back_exit ~= nil then
|
|||
|
|
btn_back_exit.onClick:Set(
|
|||
|
|
function()
|
|||
|
|
local tip_owner = '您是否退出房间?\n(退出房间后房间将解散)'
|
|||
|
|
local tip = '您是否退出房间?'
|
|||
|
|
local tipStr = ''
|
|||
|
|
if self._room.agent then
|
|||
|
|
tipStr = '您是否退出房间?'
|
|||
|
|
else
|
|||
|
|
tipStr = self._room.owner_id == self._room.self_player.self_user.account_id and tip_owner or tip
|
|||
|
|
end
|
|||
|
|
local _curren_msg = MsgWindow.new(self._root_view, tipStr, MsgWindow.MsgMode.OkAndCancel)
|
|||
|
|
_curren_msg.onOk:Add(
|
|||
|
|
function()
|
|||
|
|
if self._state.selectedIndex > 0 and self._state.selectedIndex < 3 then
|
|||
|
|
ViewUtil.ErrorTip(nil, '房间已开始,无法退出游戏。')
|
|||
|
|
else
|
|||
|
|
ViewUtil.ShowModalWait(self._root_view)
|
|||
|
|
self._gamectr:LevelRoom(
|
|||
|
|
function(res)
|
|||
|
|
ViewUtil.CloseModalWait()
|
|||
|
|
if res.ReturnCode == 0 then
|
|||
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|||
|
|
else
|
|||
|
|
ViewUtil.ErrorTip(res.ReturnCode)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
_curren_msg:Show()
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
local btn_back_lobby = _view:GetChild('btn_back_lobby')
|
|||
|
|
if btn_back_lobby ~= nil then
|
|||
|
|
btn_back_lobby.onClick:Set(
|
|||
|
|
function()
|
|||
|
|
local tip_owner = '您是否退出房间?\n(退出房间后房间将解散)'
|
|||
|
|
local tip = '您是否退出房间?' -- \n (请注意,申请洗牌后退出,不会返还洗牌分)
|
|||
|
|
local tipStr = ''
|
|||
|
|
if self._room.agent then
|
|||
|
|
tipStr = '您是否退出房间?'
|
|||
|
|
else
|
|||
|
|
tipStr = self._room.owner_id == self._room.self_player.self_user.account_id and tip_owner or tip
|
|||
|
|
end
|
|||
|
|
local _curren_msg = MsgWindow.new(self._root_view, tipStr, MsgWindow.MsgMode.OkAndCancel)
|
|||
|
|
_curren_msg.onOk:Add(
|
|||
|
|
function()
|
|||
|
|
if self._state.selectedIndex > 0 and self._state.selectedIndex < 3 then
|
|||
|
|
ViewUtil.ErrorTip(nil, '房间已开始,无法退出游戏。')
|
|||
|
|
else
|
|||
|
|
ViewUtil.ShowModalWait(self._root_view)
|
|||
|
|
self._gamectr:LevelRoom(
|
|||
|
|
function(res)
|
|||
|
|
ViewUtil.CloseModalWait()
|
|||
|
|
if res.ReturnCode == 0 then
|
|||
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|||
|
|
else
|
|||
|
|
ViewUtil.ErrorTip(res.ReturnCode)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
_curren_msg:Show()
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
--[[local btn_back_lobby = _view:GetChild('btn_back_lobby')
|
|||
|
|
btn_back_lobby.displayObject.gameObject:SetActive(false)
|
|||
|
|
if btn_back_lobby ~= nil then
|
|||
|
|
btn_back_lobby.onClick:Set(
|
|||
|
|
function()
|
|||
|
|
if self._state.selectedIndex > 0 and self._state.selectedIndex < 3 then
|
|||
|
|
ViewUtil.ErrorTip(nil, '房间已开始,无法退出游戏。')
|
|||
|
|
else
|
|||
|
|
self._gamectr.tmpRoomID = self._room.room_id
|
|||
|
|
self._gamectr.tmpGroupID = self._room.group_id
|
|||
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end--]]
|
|||
|
|
|
|||
|
|
UpdateBeat:Add(self.OnUpdate, self)
|
|||
|
|
if self._room.room_config.people_num <= 4 and self._room.room_config.people_num >= 3 and self._gamectr:CheckGPS() then
|
|||
|
|
self._show_distance = true
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 显示牌友圈助手
|
|||
|
|
if self._room.group_id ~= 0 and not self._hide_assist then
|
|||
|
|
|
|||
|
|
local bShow = true
|
|||
|
|
local l_groups = DataManager.groups
|
|||
|
|
local group = l_groups:get(self._room.group_id)
|
|||
|
|
if group ~= nil then
|
|||
|
|
local option = group.option or 0
|
|||
|
|
if bit:_and(option,8) > 0 then
|
|||
|
|
bShow = false
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
if bShow then
|
|||
|
|
--self:ShowFGAssist()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
if self._room.self_player.entrust then
|
|||
|
|
self:MarkSelfTuoguan()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
--[[local gameCommonBtn = UIPackage.CreateObjectFromURL('ui://Common/gameCommonPanel')
|
|||
|
|
if gameCommonBtn then
|
|||
|
|
self._view:AddChild(gameCommonBtn)
|
|||
|
|
local shuaxingameBtn=gameCommonBtn:GetChild("shuaxinbtn")
|
|||
|
|
if shuaxingameBtn then
|
|||
|
|
shuaxingameBtn.onClick:Set(
|
|||
|
|
function ()
|
|||
|
|
ViewManager.refreshGameView()
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
end--]]
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:continue_game(continue)
|
|||
|
|
if continue then
|
|||
|
|
self.distance_view:Destroy()
|
|||
|
|
else
|
|||
|
|
local tip_owner = '您是否退出房间?\n(退出房间后房间将解散)'
|
|||
|
|
local tip = '您是否退出房间?'
|
|||
|
|
local tipStr = ''
|
|||
|
|
if self._room.agent then
|
|||
|
|
tipStr = '您是否返回大厅?'
|
|||
|
|
else
|
|||
|
|
tipStr = self._room.owner_id == self._room.self_player.self_user.account_id and tip_owner or tip
|
|||
|
|
end
|
|||
|
|
local _curren_msg = MsgWindow.new(self._root_view, tipStr, MsgWindow.MsgMode.OkAndCancel)
|
|||
|
|
_curren_msg.onOk:Add(
|
|||
|
|
function()
|
|||
|
|
if self._state.selectedIndex > 0 and self._state.selectedIndex < 3 then
|
|||
|
|
ViewUtil.ErrorTip(nil, '房间已开始,无法退出游戏。')
|
|||
|
|
else
|
|||
|
|
ViewUtil.ShowModalWait(self._root_view)
|
|||
|
|
self._gamectr:LevelRoom(
|
|||
|
|
function(res)
|
|||
|
|
ViewUtil.CloseModalWait()
|
|||
|
|
if res.ReturnCode == 0 then
|
|||
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|||
|
|
else
|
|||
|
|
ViewUtil.ErrorTip(res.ReturnCode)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
_curren_msg:Show()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 公用的playerinfoview方法,如果扩展有改动可以重写
|
|||
|
|
function M:InitPlayerInfoView(isHideIpAdds)
|
|||
|
|
self._player_info = {}
|
|||
|
|
local _player_info = self._player_info
|
|||
|
|
for i = 1, self._room.room_config.people_num do
|
|||
|
|
local tem = self._view:GetChild('player_info' .. i)
|
|||
|
|
_player_info[i] = PlayerInfoView.new(tem, self, isHideIpAdds)
|
|||
|
|
tem.visible = false
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 显示牌友圈助手
|
|||
|
|
function M:ShowFGAssist()
|
|||
|
|
UIPackage.AddPackage('base/newgroup/ui/FGAssist')
|
|||
|
|
local btn_assist = UIPackage.CreateObjectFromURL('ui://FGAssist/btn_assist')
|
|||
|
|
self.btn_assist = btn_assist
|
|||
|
|
self._view:AddChild(btn_assist)
|
|||
|
|
local panel_assist =
|
|||
|
|
FGAssistView.new(
|
|||
|
|
self._root_view,
|
|||
|
|
function()
|
|||
|
|
btn_assist.touchable = true
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
if self._full then
|
|||
|
|
btn_assist.x = 40
|
|||
|
|
else
|
|||
|
|
btn_assist.x = (GRoot.inst.width - 1334) * -0.5 + 40
|
|||
|
|
end
|
|||
|
|
btn_assist.y = panel_assist._root_view.height / 3 - 0.5 * btn_assist.height
|
|||
|
|
|
|||
|
|
btn_assist.onClick:Set(
|
|||
|
|
function()
|
|||
|
|
panel_assist:ReloadView()
|
|||
|
|
panel_assist:Show()
|
|||
|
|
btn_assist.touchable = false
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
self.panel_assist = panel_assist
|
|||
|
|
self._state.onChanged:Set(
|
|||
|
|
function()
|
|||
|
|
btn_assist.visible = self._state.selectedIndex == 0
|
|||
|
|
if self._state.selectedIndex == 1 then
|
|||
|
|
if panel_assist then
|
|||
|
|
panel_assist:Close()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 设置助手按钮的位置
|
|||
|
|
function M:SetBtnAssistPos(x, y)
|
|||
|
|
if not self.btn_assist then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
if self._full then
|
|||
|
|
self.btn_assist.x = x
|
|||
|
|
else
|
|||
|
|
self.btn_assist.x = (GRoot.inst.width - 1334) * -0.5 + x
|
|||
|
|
end
|
|||
|
|
self.btn_assist.y = y
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:NewSettingView()
|
|||
|
|
local settingView = SettingView.new(self._root_view)
|
|||
|
|
settingView:FillBgSection(
|
|||
|
|
function(url)
|
|||
|
|
LoadGameBg(url, self._root_view)
|
|||
|
|
end,
|
|||
|
|
self._room.game_id,
|
|||
|
|
5
|
|||
|
|
)
|
|||
|
|
return settingView
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:__RecordTouchEnd()
|
|||
|
|
if (self.__runwait_record ~= nil) then
|
|||
|
|
coroutine.stop(self.__runwait_record)
|
|||
|
|
end
|
|||
|
|
if self._record_time < 0.3 then
|
|||
|
|
self:__SetRecordEnable()
|
|||
|
|
end
|
|||
|
|
self.__runwait_record = nil
|
|||
|
|
self._ctr_voice.selectedIndex = 0
|
|||
|
|
GameApplication.Instance.StopMusic = GameApplication.Instance.StopMusic - 1
|
|||
|
|
self._btn_record.onTouchEnd:Remove(self.__RecordTouchEnd, self)
|
|||
|
|
local room = self._room
|
|||
|
|
Voice.EndRecord(
|
|||
|
|
room.room_id,
|
|||
|
|
DataManager.SelfUser.account_id,
|
|||
|
|
function(filename)
|
|||
|
|
local _gamectr = ControllerManager.GetController(GameController)
|
|||
|
|
_gamectr:SendInteraction(DataManager.SelfUser.account_id, 3, filename)
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:__WaitRecord()
|
|||
|
|
coroutine.wait(20)
|
|||
|
|
self:__RecordTouchEnd()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:__SetRecordEnable()
|
|||
|
|
record_baned = 1 - record_baned
|
|||
|
|
self.ctr_record_ban.selectedIndex = record_baned
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:FillRoomConfig(roominfo_panel, _room)
|
|||
|
|
if roominfo_panel ~= nil then
|
|||
|
|
local tex_roomid = roominfo_panel:GetChild('tex_roomid')
|
|||
|
|
tex_roomid.text = _room.room_id
|
|||
|
|
if _room.room_config.isHidden and _room.room_config.isHidden == 1 then
|
|||
|
|
--tex_roomid.text = "000000"
|
|||
|
|
end
|
|||
|
|
local tex_gametype = roominfo_panel:GetChild('tex_gametype')
|
|||
|
|
if (tex_gametype ~= nil) then
|
|||
|
|
tex_gametype.text = _room.room_config:GetGameName()
|
|||
|
|
end
|
|||
|
|
local tex_roomconfig = roominfo_panel:GetChild('tex_roomconfig')
|
|||
|
|
if (tex_roomconfig ~= nil) then
|
|||
|
|
tex_roomconfig.text = _room.room_config:GetDes()
|
|||
|
|
end
|
|||
|
|
local tex_times = roominfo_panel:GetChild('tex_times')
|
|||
|
|
if DataManager.CurrenRoom.hpOnOff == 1 and DataManager.CurrenRoom.score_times ~= 1 then
|
|||
|
|
if tex_times then
|
|||
|
|
tex_times.text = DataManager.CurrenRoom.score_times .. '倍'
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:EventInit()
|
|||
|
|
local _gamectr = self._gamectr
|
|||
|
|
local _player_info = self._player_info
|
|||
|
|
local _room = self._room
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(GameEvent.PlayerEnter, handler(self, self.OnPlayerEnter))
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(
|
|||
|
|
GameEvent.PlayerState,
|
|||
|
|
function(...)
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
local info = _player_info[self:GetPos(p.seat)]
|
|||
|
|
info._ctr_offline.selectedIndex = p.line_state == 0 and 1 or 0
|
|||
|
|
self:PlayerChangeLineState()
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
_gamectr:AddEventListener(GameEvent.OnUpdateInfo, handler(self, self.OnUpdateInfo))
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(GameEvent.PlayerLeave, handler(self, self.OnPlayerLeave))
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(GameEvent.PlayerReady, handler(self, self.OnPlayerReady))
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(
|
|||
|
|
GameEvent.DeskBreak,
|
|||
|
|
function(...)
|
|||
|
|
local arg = {...}
|
|||
|
|
local code = arg[1]
|
|||
|
|
if code == 0 then
|
|||
|
|
if self.dismissWin == nil then
|
|||
|
|
self.dismissWin = DismissRoomWindow.new(self._root_view)
|
|||
|
|
end
|
|||
|
|
self.dismissWin:FillData(arg[2])
|
|||
|
|
self.dismissWin:Show()
|
|||
|
|
elseif code == 1 then
|
|||
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|||
|
|
ViewUtil.ShowTips('房间已解散!')
|
|||
|
|
elseif code == 2 then
|
|||
|
|
-- self:DismissRoomAgree(p,result)
|
|||
|
|
local p = arg[2]
|
|||
|
|
local result = arg[3]
|
|||
|
|
elseif code == 3 then
|
|||
|
|
if self.dismissWin ~= nil then
|
|||
|
|
self.dismissWin:Destroy()
|
|||
|
|
end
|
|||
|
|
self.dismissWin = nil
|
|||
|
|
self.dismiss_room_cd_time = 30
|
|||
|
|
ViewUtil.ShowTips('解散失败!')
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(
|
|||
|
|
GameEvent.Interaction,
|
|||
|
|
function(...)
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
if not p or not p.seat or p.seat == 0 then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
if DataManager.BanInteractRoom == _room.room_id and p.seat ~= _room.self_player.seat then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
local info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
local ttype = arg[2]
|
|||
|
|
if ttype == 5 then
|
|||
|
|
local parm = arg[3]
|
|||
|
|
local array = split(parm, '_')
|
|||
|
|
local tp = self._room:GetPlayerById(tonumber(array[2]))
|
|||
|
|
if not tp or not tp.seat or tp.seat == 0 then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
local pos = self._view:GlobalToLocal(info._view:LocalToGlobal(info:GetHeadCenter()))
|
|||
|
|
if tp.seat == p.seat then
|
|||
|
|
for i = 1, #_room.player_list do
|
|||
|
|
local player = _room.player_list[i]
|
|||
|
|
if player.seat ~= tp.seat then
|
|||
|
|
tinfo = self._player_info[self:GetPos(player.seat)]
|
|||
|
|
tpos = self._view:GlobalToLocal(tinfo._view:LocalToGlobal(tinfo:GetHeadCenter()))
|
|||
|
|
self:PlayInteractAnimation(array[1], pos, tpos)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
local tinfo = self._player_info[self:GetPos(tp.seat)]
|
|||
|
|
local tpos = self._view:GlobalToLocal(tinfo._view:LocalToGlobal(tinfo:GetHeadCenter()))
|
|||
|
|
self:PlayInteractAnimation(array[1], pos, tpos)
|
|||
|
|
end
|
|||
|
|
elseif ttype == 3 then
|
|||
|
|
if record_baned == 0 then
|
|||
|
|
info:ShowInteraction(ttype, arg[3])
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
info:ShowInteraction(ttype, arg[3])
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(
|
|||
|
|
GameEvent.OnKicked,
|
|||
|
|
function()
|
|||
|
|
printlog("GameEvent.OnKicked====》》》》》")
|
|||
|
|
self:UnmarkSelfTuoguan()
|
|||
|
|
local _curren_msg = MsgWindow.new(self._root_view, '由于长时间未准备,你已被踢出房间!', MsgWindow.MsgMode.OnlyOk)
|
|||
|
|
_curren_msg.onOk:Add(
|
|||
|
|
function()
|
|||
|
|
ViewManager.ChangeView(ViewManager.View_Lobby)
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
_curren_msg:Show()
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
_gamectr:AddEventListener(
|
|||
|
|
GameEvent.TupGuanOpen,
|
|||
|
|
function(...)
|
|||
|
|
--print("刷新托管数据=====")
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
local info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
|
|||
|
|
if info and info.IsShowTGTips then
|
|||
|
|
info:IsShowTGTips(arg[2],arg[3])
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if info and info.SetShowTGTips then
|
|||
|
|
info:SetShowTGTips(arg[2],arg[3])
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 设置能否互动,1允许,0禁止
|
|||
|
|
function M:SetInteractEnabled(val)
|
|||
|
|
if val == 0 then
|
|||
|
|
DataManager.BanInteractRoom = self._room.room_id
|
|||
|
|
else
|
|||
|
|
DataManager.BanInteractRoom = nil
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 获取能否互动状态
|
|||
|
|
function M:GetInteractEnabled()
|
|||
|
|
return DataManager.BanInteractRoom == self._room.room_id and 0 or 1
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 桌面动画效果
|
|||
|
|
function M:PlayInteractAnimation(str, mypos, pos)
|
|||
|
|
local eff = UIPackage.CreateObjectFromURL('ui://Common/Eff' .. str)
|
|||
|
|
local myEff = UIPackage.CreateObjectFromURL('ui://Common/myEff' .. str)
|
|||
|
|
self._view:AddChild(myEff)
|
|||
|
|
myEff.x = mypos.x
|
|||
|
|
myEff.y = mypos.y
|
|||
|
|
local offsetX = pos.x - mypos.x
|
|||
|
|
local offsetY = pos.y - mypos.y
|
|||
|
|
|
|||
|
|
if str ~= '5' and str ~= '1' then
|
|||
|
|
local total_rotation = (offsetY + offsetX) / 100 * 50
|
|||
|
|
self._run_move =
|
|||
|
|
TweenUtils.TweenFloat(
|
|||
|
|
0,
|
|||
|
|
1,
|
|||
|
|
0.5,
|
|||
|
|
function(value)
|
|||
|
|
myEff.x = mypos.x + offsetX * value
|
|||
|
|
myEff.y = mypos.y + offsetY * value
|
|||
|
|
if str == '2' then
|
|||
|
|
myEff.rotation = total_rotation * value
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
self._run_eff =
|
|||
|
|
coroutine.start(
|
|||
|
|
function()
|
|||
|
|
if str ~= '1' then
|
|||
|
|
coroutine.wait(0.5)
|
|||
|
|
else
|
|||
|
|
local degree = math.atan2(offsetX, offsetY) * 180 / math.pi - 90
|
|||
|
|
if degree < -180 then
|
|||
|
|
degree = 360 + degree
|
|||
|
|
end
|
|||
|
|
degree = degree * -1
|
|||
|
|
if degree > 90 or degree < -90 then
|
|||
|
|
degree = degree + 180 * (degree > 90 and -1 or 1)
|
|||
|
|
myEff.scaleX = -1
|
|||
|
|
end
|
|||
|
|
myEff.rotation = degree
|
|||
|
|
coroutine.wait(0.2)
|
|||
|
|
end
|
|||
|
|
self._view:AddChild(eff)
|
|||
|
|
eff.x = pos.x
|
|||
|
|
eff.y = pos.y
|
|||
|
|
coroutine.wait(1.5)
|
|||
|
|
eff:Dispose()
|
|||
|
|
myEff:Dispose()
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:GetReadyNum()
|
|||
|
|
local readyNum = 0
|
|||
|
|
local list = self._room.player_list
|
|||
|
|
for i = 1, #list do
|
|||
|
|
local p = list[i]
|
|||
|
|
if p.ready then
|
|||
|
|
readyNum = readyNum + 1
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
return readyNum
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:OnPlayerEnter(...)
|
|||
|
|
printlog("进入房间222222222222222222++++++++++++++++++++++++++++")
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
if
|
|||
|
|
p ~= self._room.self_player and self._room.room_config.people_num <= 4 and
|
|||
|
|
self._room.room_config.people_num >= 3 and
|
|||
|
|
self._gamectr:CheckGPS()
|
|||
|
|
then
|
|||
|
|
if self._room.self_player.seat == 0 then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
if self.distance_view then
|
|||
|
|
self.distance_view:Destroy()
|
|||
|
|
end
|
|||
|
|
self.distance_view = PlayerDistanceView.new(true, self._gps_style, function(v)
|
|||
|
|
self:continue_game(v)
|
|||
|
|
end)
|
|||
|
|
self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and self._state.selectedIndex < 3 and 1 or 0
|
|||
|
|
self.distance_view:Show()
|
|||
|
|
if self.btn_distance then
|
|||
|
|
self.btn_distance:GetController("state").selectedIndex = 1
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
local info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
info:FillData(p)
|
|||
|
|
info._view.visible = true
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:OnPlayerReady(...)
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
|
|||
|
|
if p.isSendCardState~=nil and p.isSendCardState==true then
|
|||
|
|
p.isSendCardState=false
|
|||
|
|
ControllerManager.IsSendCard=false
|
|||
|
|
--print("进入设置计时器控制==========")
|
|||
|
|
coroutine.start(function()
|
|||
|
|
--print("计时器倒计时5s=============")
|
|||
|
|
coroutine.wait(5)
|
|||
|
|
--print("当前状态==============")
|
|||
|
|
--print(ControllerManager.IsSendCard)
|
|||
|
|
if ControllerManager.IsSendCard==true then
|
|||
|
|
--print("以发送开牌======================")
|
|||
|
|
return
|
|||
|
|
else
|
|||
|
|
--print("开始断线重连")
|
|||
|
|
--ControllerManager.OnConnect(SocketCode.TimeoutDisconnect)
|
|||
|
|
ViewManager.refreshGameView()
|
|||
|
|
end
|
|||
|
|
ControllerManager.IsSendCard=false
|
|||
|
|
end)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if p.seat == self._room.self_player.seat then
|
|||
|
|
if self._ctr_action then
|
|||
|
|
self._ctr_action.selectedIndex = 0
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
local info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
info:Ready(true)
|
|||
|
|
printlog("基类准备++++++++++++++++++++++++++")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:OnUpdateInfo(...)
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
local t = arg[2]
|
|||
|
|
-- 托管状态变化
|
|||
|
|
if t == 5 then
|
|||
|
|
if p == DataManager.CurrenRoom.self_player then
|
|||
|
|
if p.entrust then
|
|||
|
|
self:closeTipOnTuoguan()
|
|||
|
|
self:MarkSelfTuoguan()
|
|||
|
|
else
|
|||
|
|
self:UnmarkSelfTuoguan()
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
local player_info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
if p.entrust then
|
|||
|
|
player_info:MarkTuoguan()
|
|||
|
|
else
|
|||
|
|
player_info:UnmarkTuoguan()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 标记自己托管
|
|||
|
|
function M:MarkSelfTuoguan()
|
|||
|
|
if self._com_tuoguan then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
self._com_tuoguan = UIPackage.CreateObjectFromURL('ui://Common/com_tuoguan_self')
|
|||
|
|
local com_tuoguan = self._com_tuoguan
|
|||
|
|
GRoot.inst:AddChild(com_tuoguan)
|
|||
|
|
--com_tuoguan:Center()
|
|||
|
|
--com_tuoguan.y = GRoot.inst.height - com_tuoguan.height
|
|||
|
|
--com_tuoguan.x = (GRoot.inst.width - com_tuoguan.width) * 0.5
|
|||
|
|
local _msg_view = nil
|
|||
|
|
com_tuoguan:GetChild('n0').onClick:Set(
|
|||
|
|
function()
|
|||
|
|
if _msg_view then
|
|||
|
|
_msg_view:Dispose()
|
|||
|
|
end
|
|||
|
|
local _curren_msg = UIPackage.CreateObjectFromURL('ui://Common/MessageBox')
|
|||
|
|
_msg_view = _curren_msg
|
|||
|
|
_msg_view:GetChild('btn_ok').onClick:Set(
|
|||
|
|
function()
|
|||
|
|
_msg_view:Dispose()
|
|||
|
|
_msg_view = nil
|
|||
|
|
self._gamectr:Entrust(false)
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
_msg_view:GetChild('btn_close').onClick:Set(
|
|||
|
|
function()
|
|||
|
|
_msg_view:Dispose()
|
|||
|
|
_msg_view = nil
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
_msg_view:GetChild('btn_close1').onClick:Set(
|
|||
|
|
function()
|
|||
|
|
_msg_view:Dispose()
|
|||
|
|
_msg_view = nil
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
local roate=GRoot.inst.width/GRoot.inst.height
|
|||
|
|
local num=100
|
|||
|
|
if roate<1.9 then
|
|||
|
|
num=250
|
|||
|
|
end
|
|||
|
|
com_tuoguan:AddChild(_msg_view)
|
|||
|
|
_msg_view:GetChild('tex_message').text = '确定要取消托管吗?'
|
|||
|
|
_msg_view.x = (com_tuoguan.width - _msg_view.width) * 0.5-num
|
|||
|
|
_msg_view.y = (com_tuoguan.height - com_tuoguan.y - _msg_view.height) * 0.5
|
|||
|
|
end
|
|||
|
|
)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 取消标记自己托管
|
|||
|
|
function M:UnmarkSelfTuoguan()
|
|||
|
|
if self._com_tuoguan then
|
|||
|
|
self._com_tuoguan:Dispose()
|
|||
|
|
self._com_tuoguan = nil
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:OnPlayerLeave(...)
|
|||
|
|
local arg = {...}
|
|||
|
|
local p = arg[1]
|
|||
|
|
local info = self._player_info[self:GetPos(p.seat)]
|
|||
|
|
info._view.visible = false
|
|||
|
|
if not self._gamectr:CheckGPS() then
|
|||
|
|
self.btn_distance:GetController("state").selectedIndex = 0
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:PlayerChangeLineState()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:ReloadInteractView()
|
|||
|
|
if self.chat_view then
|
|||
|
|
self.chat_view:FillChatMsg()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:PlayChatSound(sex, chat_index)
|
|||
|
|
local sex_path = ViewUtil.Sex_Chat[sex]
|
|||
|
|
local path1 = string.format('base/common/sound/%s/chat_%s.mp3', sex_path, tostring(chat_index - 1))
|
|||
|
|
GameApplication.Instance:PlaySound('base_chat', path1)
|
|||
|
|
-- GameApplication.Instance:PlaySound(path1)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 获取语言
|
|||
|
|
function M:GetLanguage()
|
|||
|
|
if self._multilingual then
|
|||
|
|
return self._language
|
|||
|
|
else
|
|||
|
|
return 0
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 设置语言
|
|||
|
|
function M:SetLanguage(language)
|
|||
|
|
if self._multilingual then
|
|||
|
|
self._language = language
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 获取消息使用的语言、序号
|
|||
|
|
function M:GetChatMsgLanguage(msg_index)
|
|||
|
|
local language = math.modf(msg_index / 100)
|
|||
|
|
local index = math.fmod(msg_index, 100)
|
|||
|
|
return language, index
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:DismissRoomAgree(p, result)
|
|||
|
|
local index = self:GetPos(p.seat)
|
|||
|
|
self._player_info[index]:DismissRoom(result)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:PlaySound(sex, path)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:OnUpdate()
|
|||
|
|
local deltaTime = Time.deltaTime
|
|||
|
|
if (self._popEvent) then
|
|||
|
|
local func = self._gamectr:PopEvent()
|
|||
|
|
if (func ~= nil) then
|
|||
|
|
local result , info = pcall(func)
|
|||
|
|
if result then
|
|||
|
|
|
|||
|
|
else
|
|||
|
|
printlog("error",info)
|
|||
|
|
self._gamectr = ControllerManager.GetController(GameController)
|
|||
|
|
if self._gamectr then
|
|||
|
|
self._gamectr:ResetConnect()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
--func()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
if self._view:GetChild('gcm_chat') then
|
|||
|
|
self._record_time = self._record_time + deltaTime
|
|||
|
|
end
|
|||
|
|
local _left_time = self._left_time
|
|||
|
|
if (_left_time > 0) then
|
|||
|
|
_left_time = _left_time - deltaTime
|
|||
|
|
_left_time = math.max(0, _left_time)
|
|||
|
|
local leftTime = math.floor(_left_time)
|
|||
|
|
if leftTime < 10 then
|
|||
|
|
self._tex_leftTime.text = '0' .. tostring(leftTime)
|
|||
|
|
for i=2,4 do
|
|||
|
|
local text = self["_tex_leftTime"..i]
|
|||
|
|
if text then
|
|||
|
|
text.text = '0' .. tostring(leftTime)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
self._tex_leftTime.text = tostring(leftTime)
|
|||
|
|
for i=2,4 do
|
|||
|
|
local text = self["_tex_leftTime"..i]
|
|||
|
|
if text then
|
|||
|
|
text.text = tostring(leftTime)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
self._left_time = _left_time
|
|||
|
|
-- 桌面計時器聲音
|
|||
|
|
if not self._curtime then
|
|||
|
|
self._curtime = 15
|
|||
|
|
end
|
|||
|
|
if leftTime <= 3 and self._curtime ~= leftTime and leftTime ~= 0 then
|
|||
|
|
self._curtime = leftTime
|
|||
|
|
GameApplication.Instance:PlaySound('base/sound/daojishi1.mp3')
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
self:onLeftTimeOver()
|
|||
|
|
if self._tex_leftTime then
|
|||
|
|
self._tex_leftTime.text = '00'
|
|||
|
|
end
|
|||
|
|
for i=2,4 do
|
|||
|
|
local text = self["_tex_leftTime"..i]
|
|||
|
|
if text then
|
|||
|
|
text.text = '00'
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
if (self.dismiss_room_cd_time > 0) then
|
|||
|
|
self.dismiss_room_cd_time = self.dismiss_room_cd_time - deltaTime
|
|||
|
|
self.dismiss_room_cd_time = math.max(0, self.dismiss_room_cd_time)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if self._style == 1 then
|
|||
|
|
if (self._rightPanelView) then
|
|||
|
|
self._rightPanelView:OnUpdate(deltaTime)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (self.dismissWin) then
|
|||
|
|
-- local ctr = ControllerManager.GetCurrenController()
|
|||
|
|
-- if(ctr.baseType ~= GameController) then
|
|||
|
|
-- self.dismissWin:Destroy()
|
|||
|
|
-- self.dismissWin = nil
|
|||
|
|
-- else
|
|||
|
|
self.dismissWin:OnUpdate(deltaTime)
|
|||
|
|
-- end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if self.OnMuShiUpdate then
|
|||
|
|
self:OnMuShiUpdate()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
function M:onLeftTimeOver()
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
function M:Clear()
|
|||
|
|
-- self:__CloseTip()
|
|||
|
|
for i = 1, #self._player_info do
|
|||
|
|
self._player_info[i]:Clear()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
function M:DestroyPlayerInfo()
|
|||
|
|
for i = 1, #self._player_info do
|
|||
|
|
self._player_info[i]:Destroy()
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
function M:GetPos(seat)
|
|||
|
|
return ViewUtil.GetPos(self._room.self_player.seat, seat, self._room.room_config.people_num)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 托管时关闭一些提示窗口,如起手胡、吃碰提示、海底,由扩展实现
|
|||
|
|
function M:closeTipOnTuoguan()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local last_pause_time = 0
|
|||
|
|
--游戏暂停
|
|||
|
|
function M:OnApplicationPause()
|
|||
|
|
if self.panel_assist then
|
|||
|
|
self.panel_assist:Close()
|
|||
|
|
end
|
|||
|
|
last_pause_time = os.time()
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--游戏激活
|
|||
|
|
function M:OnApplicationActive()
|
|||
|
|
--print("游戏激活================")
|
|||
|
|
if os.time() - last_pause_time > 15 then
|
|||
|
|
last_pause_time = os.time()
|
|||
|
|
ControllerManager.WebClient:clearActionQueue()
|
|||
|
|
local ctr = ControllerManager.GetCurrenController()
|
|||
|
|
if (ctr.baseType == GameController) then
|
|||
|
|
ControllerManager.OnConnect(SocketCode.TimeoutDisconnect)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:Show()
|
|||
|
|
BaseView.Show(self)
|
|||
|
|
if self._state.selectedIndex == 0 and self._show_distance then
|
|||
|
|
if self._room.self_player.seat == 0 then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
self.distance_view = PlayerDistanceView.new(true, self._gps_style, function(v)
|
|||
|
|
self:continue_game(v)
|
|||
|
|
end)
|
|||
|
|
self.distance_view._view:GetController("state").selectedIndex = self._state.selectedIndex > 0 and self._state.selectedIndex < 3 and 1 or 0
|
|||
|
|
self.distance_view:Show()
|
|||
|
|
self.btn_distance:GetController("state").selectedIndex = 1
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function M:Destroy()
|
|||
|
|
TimerManager.Clear()
|
|||
|
|
self:UnmarkSelfTuoguan()
|
|||
|
|
self:DestroyPlayerInfo()
|
|||
|
|
DSTweenManager.ClearTween()
|
|||
|
|
|
|||
|
|
NetResetConnectWindow.CloseNetReset()
|
|||
|
|
Voice.CrealRecord()
|
|||
|
|
ControllerManager.resetJionRoom = false
|
|||
|
|
self._popEvent = false
|
|||
|
|
GRoot.inst:HidePopup()
|
|||
|
|
ViewUtil.CloseModalWait()
|
|||
|
|
GameApplication.Instance.StopMusic = 0
|
|||
|
|
coroutine.stopAll()
|
|||
|
|
UpdateBeat:Remove(self.OnUpdate, self)
|
|||
|
|
BaseView.Destroy(self)
|
|||
|
|
BaseWindow.DestroyAll()
|
|||
|
|
ResourcesManager.UnLoadGroup('base_chat')
|
|||
|
|
|
|||
|
|
end
|