hengyang_client/lua_probject/base_project/Game/View/LobbyView.lua

449 lines
15 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

--大厅View对象
--author--
local JoinRoomView = import(".Lobby.JoinRoomView")
local LobbySettingView = import(".Lobby.LobbySettingView")
local LobbyShopView = import(".Lobby.LobbyShopView")
local LobbyAuthenticateView = import(".Lobby.LobbyAuthenticateView")
local LobbyMessagesView = import(".Lobby.LobbyMessagesView")
local LobbyRecordView = import(".Lobby.LobbyRecordView")
local LobbyPlayerInfoView = import(".Lobby.LobbyPlayerInfoView")
local CreatePlayView = import(".Family.CreatePlayView")
local DiamondRecord = import(".Lobby.DiamondRecord")
local GamePlayDetail = import(".Lobby.GamePlayDetail")
local CreateRoomView = import(".Lobby.CreateRoomView")
local RankView = import(".Lobby.RankView")
local GroupMainView = import(".NewGroup.GroupMainView")
local NoticeView = import(".Lobby.NoticeView")
local HeadView = import(".Lobby.LobbyHeadView")
local PhoneBindView = import(".Lobby.PhoneBindView")
local RealAddressView = import(".Lobby.RealAddressView")
local LobbyHeadView = import(".Lobby.LobbyHeadView")
local LobbyGiftDiamond = import(".Lobby.LobbyGiftDiamond")
local LobbyService = import(".Lobby.LobbyService")
LobbyView = {}
local M = {}
function LobbyView.new()
-- -- print("new lobbyView!!!!")
setmetatable(M, { __index = BaseView })
local self = setmetatable({}, { __index = M })
self.class = "LobbyView"
UIPackage.AddPackage("base/lobby/ui/Lobby")
self.lobby_pause_time = 0
self._full = true
self:InitView("ui://Lobby/Main_New")
-- self._close_destroy = false
return self
end
function M:InitView(url)
-- -- print("init lobbyView!!!!")
BaseView.InitView(self, url)
self._full_offset = false
local view = self._view
-- local btn_joinroom = self._view:GetChild("btn_join")
-- btn_joinroom.onClick:Add(handler(self, self.OnJoinRoomAction))
local btn_setting = self._view:GetChild("btn_setting")
btn_setting.onClick:Set(handler(self, function()
local settingView = LobbySettingView.new()
settingView:Show()
end))
-- local btn_shop = self._view:GetChild("btn_shop")
-- btn_shop.onClick:Add(handler(self, function()
-- local shopView = LobbyShopView.new(function()
-- ViewUtil.ErrorTip(-1, "该功能还会开放,敬请期待")
-- -- self:ShowPlayerInfo(1, DataManager.SelfUser.diamo, 1)
-- end)
-- shopView:Show()
-- end))
-- local btn_authenticate = self._view:GetChild("btn_authenticate")
-- btn_authenticate.onClick:Add(handler(self, function()
-- local authenticateView = LobbyAuthenticateView.new()
-- -- ViewUtil.ErrorTip(-1, "该功能还会开放,敬请期待")
-- end))
-- local btn_notice = self._view:GetChild("btn_notice")
-- btn_notice.onClick:Set(function()
-- local diamondRecord = DiamondRecord.New(self._root_view)
-- -- noticeView:FillData(DataManager.SelfUser.notices.data)
-- diamondRecord:Show()
-- end)
-- local btn_record = self._view:GetChild("btn_record")
-- btn_record.onClick:Add(handler(self, function()
-- local lobbyRecordView = LobbyRecordView.new(self, true)
-- lobbyRecordView:Show()
-- end))
-- btn_record.displayObject.gameObject:SetActive(true)
-- local btn_gamePlay = self._view:GetChild("btn_gamePlay")
-- btn_gamePlay.onClick:Add(function()
-- local gamePlayDetail = GamePlayDetail.New()
-- gamePlayDetail:Show()
-- end)
-- local btn_more = self._view:GetChild("btn_more")
-- btn_more.onClick:Add(function()
-- ViewUtil.ErrorTip(self._view, "该功能还会开放,敬请期待")
-- end)
local clickTime = 0
local btn_family = self._view:GetChild("btn_family")
btn_family.onClick:Add(function()
local user = DataManager.SelfUser
if user.group_id ~= 0 then
self:ReconnectRoom(user.group_id)
return
end
ControllerManager.ChangeController(NewGroupController)
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GroupList(function(res)
end)
ViewManager.ChangeView(ViewManager.View_Family)
end)
-- local createRoomBtn = self._view:GetChild("btn_createRoom")
-- createRoomBtn.touchable = true
-- createRoomBtn.onClick:Set(function()
-- local _createRoomView = CreateRoomView.new(1)
-- _createRoomView.onCeateRoom = function()
-- ViewManager.ChangeView(ViewManager.View_Main, DataManager.CurrenRoom.game_id)
-- end
-- _createRoomView:Show()
-- end)
-- local btn_card = self._view:GetChild("btn_card")
-- btn_card.onClick:Add(function()
-- btn_card.touchable = false
-- btn_card:GetChild('n6').grayed = true
-- self:GetPlayerInfoData()
-- coroutine.start(function()
-- coroutine.wait(3)
-- btn_card.touchable = true
-- btn_card:GetChild('n6').grayed = false
-- end)
-- end)
-- local btn_customerService = self._view:GetChild("btn_customerService")
-- btn_customerService.onClick:Add(function()
-- local lobbyService = LobbyService.new()
-- -- lobbyService:Show()
-- end)
-- local btn_invite = self._view:GetChild("btn_invite")
-- btn_invite.onClick:Add(function()
-- GameApplication.Instance:CopyToClipboard(DataManager.DownLink or "暂无链接")
-- local _curren_msg = MsgWindow.new(self._root_view, "下载地址已复制,请到浏览器粘贴", MsgWindow.MsgMode.OnlyOk)
-- _curren_msg:Show()
-- end)
local btn_head = view:GetChild("btn_head")
ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject, "Lobby", function()
printlog("load Callback")
self._flag_loadImageSucces = true
end)
-- btn_head.onClick:Set(function()
-- local lobbyPlayerInfoView = LobbyPlayerInfoView.new(DataManager.SelfUser, function()
-- ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject)
-- end)
-- end)
-- local btn_teamwork = view:GetChild("btn_teamwork")
-- btn_teamwork.onClick:Set(function()
-- local lobbyHeadView = LobbyHeadView.new(DataManager.SelfUser, DataManager.SelfUser.agent, function()
-- ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject)
-- end)
-- lobbyHeadView:Show()
-- end)
view:GetChild("tex_name").emojies = EmojiDitc.EmojiesDitc
view:GetChild("tex_name").text = Utils.TextOmit(DataManager.SelfUser.nick_name, 6, "...")
view:GetChild("tex_id").text = string.format("ID:%s", tostring(DataManager.SelfUser.account_id))
-- view:GetChild("btn_card").text = tostring(DataManager.SelfUser.diamo)
-- local btn_exit = self._view:GetChild("btn_exit")
-- btn_exit.onClick:Set(handler(self, function()
-- local _curren_msg = MsgWindow.new(self._root_view, '确认退出游戏', MsgWindow.MsgMode.OkAndCancel)
-- _curren_msg.onOk:Add(function()
-- Application.Quit()
-- end)
-- _curren_msg:Show()
-- end))
-- local message = self._view:GetChild("c_message")
-- self._message = message:GetChild("message")
-- self._tex_message = message:GetChild("text")
-- self:__GetMessage()
-- local btn_giftDiamond = self._view:GetChild('btn_giftDiamond')
-- if btn_giftDiamond then
-- btn_giftDiamond.visible = DataManager.SelfUser.type == 1
-- btn_giftDiamond.onClick:Set(function()
-- local lobbyGiftDiamond = LobbyGiftDiamond.new(nil, function()
-- view:GetChild("btn_card").text = tostring(DataManager.SelfUser.diamo)
-- end)
-- lobbyGiftDiamond:Show()
-- end)
-- end
--在大厅的时候就拉去一次亲友圈列表
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GroupList(function(res)
end)
end
function M:OnJoinRoomAction(context)
local joinRoomView = JoinRoomView.new(self._root_view)
joinRoomView:Show()
end
function M:__show_service()
local _buy_win = BaseWindow.new("ui://Lobby/Win_service", self._root_view)
_buy_win._close_destroy = true
_buy_win:Show()
local sview = _buy_win._view
local btn_copy = sview:GetChild("btn_copy")
btn_copy.onClick:Set(function()
GameApplication.Instance:CopyToClipboard("xbkf888108") --湘北
-- GameApplication.Instance:CopyToClipboard("ttwmq008")--fb
_buy_win:Destroy()
end)
end
function M:__GetMessage(data)
print("on GetMessage~~~~~~~~~~~~~~~~~~~~~~~~~~~")
if not data or not data.notice_list then
self._mesList = ""
else
local message = self._view:GetChild("com_message")
message.visible = true
local mesl = {}
for i = 1, #data.notice_list do
mesl[i] = data.notice_list[i] --.informContent
end
self._mesList = mesl
DataManager.GameNotice = mesl
end
self:__moveMsg(0)
end
function M:__PopMsg(index)
local num = #self._mesList
index = index + 1
if index > num then index = 1 end
local str = tostring(self._mesList[index])
if str == nil or str == "nil" then str = "" end
return index, string.gsub(str, "\r", "")
end
function M:__moveMsg(index)
-- -- print("on moveMsg!!!!!!!!!!!!!!!!!!!!!!!!!")
if not self._tex_message then return end
index, self._tex_message.text = self:__PopMsg(index)
self._tex_message.x = self._message.width
if self._mesTw then
TweenUtils.Kill(self._mesTw)
end
local change = -self._message.width * 2
local dd = self._tex_message.width / self._message.width
if dd < 1 then dd = 1 end
self._mesTw = TweenUtils.TweenFloat(0, 1 * dd, 10 * dd, function(value)
self._tex_message.x = self._message.width + (change * value)
end)
TweenUtils.OnComplete(self._mesTw, function()
self._mesTw = nil
if (#self._mesList == 0) then
self:__GetMessage()
else
self:__PopMsg(index)
self:__moveMsg(index)
end
end)
end
function M:__ShowShare()
local pop_share = self._view:GetChild("pop_share")
local shareUrl = GetGameInfo("invite_link") .. "?uid=" .. DataManager.SelfUser.account_id
---- print("shareUrl=================")
---- print(shareUrl)
local btn_wx_session = pop_share:GetChild("btn_wx_session")
btn_wx_session.onClick:Add(function()
shareQRCodePicture(shareUrl, 0)
end)
local btn_wx_line = pop_share:GetChild("btn_wx_line").asButton
btn_wx_line.onClick:Add(function()
shareQRCodePicture(shareUrl, 1)
end)
end
function M:OnUpdate()
local roomid = GameApplication.Instance:GetRoomID()
if roomid and string.len(roomid) > 1 then
ControllerManager.WebClient:clearActionQueue()
local joinRoomView = JoinRoomView.new(self._root_view)
joinRoomView:JoinRoom(roomid)
end
end
function M:Close()
BaseView.Close(self)
UpdateBeat:Remove(self.OnUpdate, self)
coroutine.stopAll()
if self._mesTw then
TweenUtils.Kill(self._mesTw)
end
BaseWindow.DestroyAll()
DSTweenManager.ClearTween()
end
function M:Destroy()
UpdateBeat:Remove(self.OnUpdate, self)
if self._mesTw then
TweenUtils.Kill(self._mesTw)
end
self._tex_message = nil
coroutine.stopAll()
BaseView.Destroy(self)
BaseWindow.DestroyAll()
DSTweenManager.ClearTween()
end
function M:Show()
---- print("on lobbyView show~~~~~~")
BaseView.Show(self)
ViewUtil.PlaySoundBg()
UpdateBeat:Add(self.OnUpdate, self)
-- 旧重连
--[[
-- 如果在圈子内的房间显示tip
local user = DataManager.SelfUser
local tem = user.notices
if user.group_id ~= 0 then
self:ReconnectRoom(user.group_id)
local msg_tip = MsgWindow.new(self._root_view, "还在圈子的房间中,现在重连吗?", MsgWindow.MsgMode.OkAndCancel)
msg_tip.onOk:Add(function()
self:ReconnectRoom(user.group_id)
end)
msg_tip:Show()
tem.auto_show = false
else
end
]]
local lobbyCtr1 = ControllerManager.GetController(LoddyController)
lobbyCtr1:UpdateNotice(DataManager.SelfUser.account_id, function(result, data)
-- local data1 = {}
-- data1.notice_list = {}
-- data1.notice_list[1] = "ccccccccccccccccccccccccccc"
if result then
self:__GetMessage(data)
end
end)
--self:GetPlayerInfoData()
-- 获取GPS坐标
if not DataManager.SelfUser.location or DataManager.SelfUser.location:Location2String() == "" then
get_gps()
end
if self.groupMainView and self.groupMainView._groupInfoView then
self.groupMainView._groupInfoView:hidePipei()
end
self:GetPlayerInfoData()
end
function M:GetPlayerInfoData()
local loddyCtr1 = ControllerManager.GetController(LoddyController)
loddyCtr1:UpdatePlayerInfo(function(result, data)
if result then
self:ShowPlayerInfo(data.raffle, data.diamo, data.newMail)
if data.group_id ~= 0 then
-- 重连,确保头像加载成功才能重连
self:ReconnectRoom(data.groupId)
end
end
end)
end
function M:ShowPlayerInfo(raffle, diamo, newMail)
self._view:GetChild("btn_card").text = diamo or 0
end
function M:OnApplicationPause()
ControllerManager.WebClient:clearActionQueue()
-- 切后台时间
if DataManager.SelfUser.cur_group then
self.lobby_pause_time = os.time()
DataManager.SelfUser.cur_group.pause = true
end
end
function M:OnApplicationActive()
ControllerManager.WebClient:clearActionQueue()
self:GetPlayerInfoData()
-- 切后台太久牌友圈重连
if DataManager.SelfUser.cur_group then
DataManager.SelfUser.cur_group.pause = false
if os.time() - self.lobby_pause_time > 15 then
self.lobby_pause_time = os.time()
DataManager.SelfUser.cur_group:Reconnect()
end
end
end
-----------------------lingmeng----------------------------
function M:ReconnectRoom(groupId)
local roomId = DataManager.SelfUser.room_id
print("===============================ReconnectRoom", roomId, 1)
if roomId and #roomId > 0 then
local roomCtr = ControllerManager.GetController(RoomController)
roomCtr:PublicJoinRoom(
Protocol.WEB_FG_JOIN_ROOM,
roomId,
false,
function(response)
if (response.ReturnCode == -1) then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1')
RestartGame()
return
end
if response.ReturnCode ~= 0 then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败')
FamilyView.lastId = groupId
ViewManager.ChangeView(ViewManager.View_Lobby)
return
else
FamilyView.lastId = groupId
DataManager.SelfUser.room_id = ""
ViewManager.ChangeView(ViewManager.View_Main, DataManager.CurrenRoom.game_id)
end
end,
groupId
)
end
end
-----------------------------------------------------------