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

500 lines
16 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 CreateRoomView = import(".Lobby.CreateRoomView")
local JoinRoomView = import(".Lobby.JoinRoomView")
local LobbySettingView = import(".Lobby.LobbySettingView")
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")
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")
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
self:InitClip()
local btn_head = view:GetChild("btn_head")
ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject)
btn_head.onClick:Set(function()
-- local headView = HeadView.new(DataManager.SelfUser, nil, function()
-- view:GetChild("tex_name").text = DataManager.SelfUser.nick_name
-- ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject)
-- end)
-- headView:Show()
local lobbyHeadView = LobbyHeadView.new(DataManager.SelfUser, DataManager.SelfUser.agent, function()
ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject)
end)
lobbyHeadView:Show()
end)
local btn_teamwork = view:GetChild("btn_teamwork")
btn_teamwork.onClick:Set(function()
-- local headView = HeadView.new(DataManager.SelfUser, nil, function()
-- view:GetChild("tex_name").text = DataManager.SelfUser.nick_name
-- ImageLoad.Load(DataManager.SelfUser.head_url, btn_head._iconObject)
-- end)
-- headView:Show()
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").text = DataManager.SelfUser.nick_name
view:GetChild("tex_id").text = tostring(DataManager.SelfUser.account_id)
view:GetChild("gcm_diamo").text = tostring(DataManager.SelfUser.diamo)
local btn_joinroom = self._view:GetChild("btn_joinroom")
btn_joinroom.onClick:Add(handler(self, self.OnJoinRoomAction))
--btn_joinroom.displayObject.gameObject:SetActive(false)
local createRoomBtn = self._view:GetChild("btn_ChuangJian")
--createRoomBtn.touchable = false
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_agent = self._view:GetChild("btn_agent")
--[[ btn_agent.onClick:Set(function()
local headView = HeadView.new(DataManager.SelfUser,true)
headView:Show()
end)--]]
btn_agent.displayObject.gameObject:SetActive(false)
local btn_record = self._view:GetChild("btn_record")
btn_record.onClick:Add(handler(self, function()
local _rankView = RankView.new(self, true)
_rankView:Show()
end))
--btn_record.displayObject.gameObject:SetActive(false)
local btn_video = self._view:GetChild("btn_video")
--[[btn_video.onClick:Set(function ()
local _rankView = RankView.new(self,true)
_rankView:Show()
end)--]]
btn_video.displayObject.gameObject:SetActive(false)
local btn_setting = self._view:GetChild("btn_setting")
btn_setting.onClick:Set(handler(self, function()
local settingView = LobbySettingView.new()
settingView:Show()
end))
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 lst_userBG = self._view:GetChild("n118")
lst_userBG.displayObject.gameObject:SetActive(false)
local lst_user = self._view:GetChild("lst_user")
lst_user.displayObject.gameObject:SetActive(false)
--[[ lst_user.onClickItem:Set(function (context)
if context.data.name == "real" then
local real_view = RealAddressView.new(0)
real_view:Show()
elseif context.data.name == "address" then
local real_view = RealAddressView.new(1)
real_view:Show()
elseif context.data.name == "phone" then
local phone_view = PhoneBindView.new()
phone_view:Show()
end
end)--]]
-- self:__ShowShare()
local btn_notice = self._view:GetChild("btn_notice")
--[[ btn_notice.onClick:Set(function()
local noticeView = NoticeView.new(self._root_view)
noticeView:FillData(DataManager.SelfUser.notices.data)
noticeView:Show()
end)
--]]
btn_notice.displayObject.gameObject:SetActive(false)
local btn_service = self._view:GetChild("btn_service")
--[[btn_service.onClick:Set(function()
self:__show_service()
end)--]]
btn_service.displayObject.gameObject:SetActive(false)
self.groupMainView = GroupMainView.new(self._view:GetChild("group"), self._root_view, self._view)
--self.groupMainView:Show()
local btn_more_group = self._view:GetChild("btn_more_group")
btn_more_group.onClick:Set(function()
--self.groupMainView._view.visible = true
ViewUtil.ShowModalWait(self._root_view, "请稍等,获取牌友圈中...")
local enterGroupCallBackFunc = function(code)
ViewUtil.CloseModalWait()
if code == 0 then
self.groupMainView._view.visible = true
else
ViewUtil.ErrorTip(10000000, "获取牌友圈失败,请检查网络设置!")
printlog("获取圈子数据失败=======>>>>")
end
end
self.groupMainView:Show(nil, enterGroupCallBackFunc)
end)
-- local btn_more_group = self._view:GetChild("btn_more_group")
-- btn_more_group.touchable = true
-- btn_more_group.onClick:Set(function()
-- local groups = DataManager.groups.groupList
-- if #groups == 0 then
-- self.groupMainView._view.visible = true
-- self.groupMainView:Show()
-- -- if not DataManager.SelfUser.phone then
-- -- local phone_view = PhoneBindView.new()
-- -- phone_view:Show()
-- -- return
-- -- end
-- else
-- self.groupMainView:DEnterGroup()
-- end
-- --self.groupMainView:DEnterGroup()
-- end)
-- self.btn_joingroup.onClick:Set(function()
-- local groups = DataManager.groups.groupList
-- if #groups == 0 then
-- local jgv = JoinGroupView.new(self._root_view)
-- jgv:Show()
-- else
-- local info = GroupInfoView.new(groups[1], self.fg_info)
-- self._groupInfoView = info
-- info:SetCallBack(function()
-- self._groupInfoView = nil
-- self:Show()
-- self._view.visible = true
-- end)
-- info:Show()
-- self._view.visible = false
-- end
-- if not DataManager.SelfUser.phone then
-- --local phone_view = PhoneBindView.new()
-- --phone_view:Show()
-- -- return
-- end
-- end)
-- self.btn_joingroup.touchable = true
local lst_game = self._view:GetChild("lst_game")
lst_game.displayObject.gameObject:SetActive(false)
--[[local games = DataManager.SelfUser.games
for i = 1, math.min( 4,#games ) do
local tem = games[i]
local item = lst_game:AddItemFromPool()
item.text = tem.name
local config = ExtendManager.GetExtendConfig(tem.game_id)
config.game_data = tem
local mode = config:GetGameInfo()
item.icon = mode:GetIconUrl()
item.onClick:Set(function ()
local _createRoomView = CreateRoomView.new(i)
_createRoomView.onCeateRoom = function ()
ViewManager.ChangeView(ViewManager.View_Main,DataManager.CurrenRoom.game_id)
end
_createRoomView:Show()
end)
end--]]
local message = self._view:GetChild("com_message")
--message.visible = true
self._message = message:GetChild("message")
self._tex_message = self._message:GetChild("tex_message")
self:__GetMessage()
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
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
local msg_tip = MsgWindow.new(self._root_view, "还在圈子的房间中,现在重连吗?", MsgWindow.MsgMode.OkAndCancel)
msg_tip.onOk:Add(function()
if self.groupMainView ~= nil then
self.groupMainView:Show(user.group_id)
end
end)
msg_tip:Show()
tem.auto_show = false
else
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)
end
local loddyCtr1 = ControllerManager.GetController(LoddyController)
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
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)
end
end)
end
function M:ShowPlayerInfo(raffle, diamo, newMail)
self._view:GetChild("gcm_diamo"):GetChild("title").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
function M:InitClip()
local taohuaEnd = 114
local taohuaName = "ui://Lobby/taohua_00"
local taohua = self._view:GetChild('clip_bg')
local taohuaIndex = 0
local renwuEnd = 143
local renwuName = "ui://Lobby/renwu-AE_00"
local renwu = self._view:GetChild('clip_renwu')
local renwuIndex = 0
local pukeEnd = 60
local pukeName = "ui://Lobby/puke_00"
local puke = self._view:GetChild('btn_ChuangJian')
local pukeIndex = 0
local jiangbeiEnd = 149
local jiangbeiName = "ui://Lobby/jiangbei_00"
local jiangbei = self._view:GetChild('btn_more_group')
local jiangbeiIndex = 0
local hechengEnd = 96
local hechengName = "ui://Lobby/hecheng 1_00"
local hecheng = self._view:GetChild('btn_joinroom')
local hechengIndex = 0
print("lingmengInitClip", taohua, renwu)
coroutine.start(
function()
while true do
-- taohuaIndex = self:ReplaceClip1(taohuaEnd, taohua, taohuaIndex, taohuaName)
renwuIndex = self:ReplaceClip1(renwuEnd, renwu, renwuIndex, renwuName)
-- pukeIndex = self:ReplaceClip2(pukeEnd, puke, pukeIndex, pukeName)
-- jiangbeiIndex = self:ReplaceClip2(jiangbeiEnd, jiangbei, jiangbeiIndex, jiangbeiName)
-- hechengIndex = self:ReplaceClip2(hechengEnd, hecheng, hechengIndex, hechengName)
coroutine.wait(0.060)
end
end
)
end
function M:ReplaceClip1(e, t, i, n)
if i > e then
i = 0
end
t.url = string.format("%s%03d", n, i)
return i + 2
end
function M:ReplaceClip2(e, t, i, n)
if i > e then
i = 0
end
t.icon = string.format("%s%03d", n, i)
return i + 1
end