517 lines
17 KiB
Lua
517 lines
17 KiB
Lua
--大厅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")
|
||
|
||
local LobbyGame = import(".LobbyNew.LobbyGame")
|
||
local LobbyHome = import(".LobbyNew.LobbyHome")
|
||
local LobbyMatch = import(".LobbyNew.LobbyMatch")
|
||
local LobbyMe = import(".LobbyNew.LobbyMe")
|
||
local LobbyUnit = import(".LobbyNew.LobbyUnit")
|
||
|
||
LobbyView = {
|
||
Game = 4,
|
||
Home = 3,
|
||
Match = 2,
|
||
Me = 5,
|
||
Unit = 1
|
||
}
|
||
|
||
local M = {}
|
||
|
||
function LobbyView.new()
|
||
setmetatable(M, { __index = BaseView })
|
||
local self = setmetatable({}, { __index = M })
|
||
self.class = "LobbyView"
|
||
|
||
self.lobby_pause_time = 0
|
||
self._full = true
|
||
|
||
return self
|
||
end
|
||
|
||
function M:init()
|
||
local view = self._view
|
||
|
||
local bg = view.transform:GetComponent(typeof(UnityEngine.UI.Image))
|
||
bg.sprite = CommonUISprite:GetSprite("bg1")
|
||
|
||
self.isJoinPlay = true
|
||
|
||
self.imagePoint = view.transform:Find("imagePoint")
|
||
self.aar_subView = {}
|
||
local localView = view.transform:Find("sub")
|
||
self.aar_subView.down = view.transform:Find("down")
|
||
self.aar_subView[LobbyView.Game] = LobbyGame.new(self.path .. "lobby/lobbyGame.prefab", localView)
|
||
self.aar_subView[LobbyView.Home] = LobbyHome.new(self.path .. "lobby/lobbyHome.prefab", localView)
|
||
self.aar_subView[LobbyView.Match] = LobbyMatch.new(self.path .. "lobby/lobbyMatch.prefab", localView)
|
||
self.aar_subView[LobbyView.Me] = LobbyMe.new(self.path .. "lobby/lobbyMe.prefab", localView)
|
||
self.aar_subView[LobbyView.Unit] = LobbyUnit.new(self.path, "lobby/lobbyUnit.prefab", localView)
|
||
|
||
self.down_arrBtnDown = {}
|
||
for i = 1, self.aar_subView.down.childCount do
|
||
self.down_arrBtnDown[i] = {}
|
||
local temp = self.down_arrBtnDown[i]
|
||
local down_btnTemp = self.aar_subView.down:GetChild(i - 1)
|
||
temp.AnimatorCircle = down_btnTemp:Find("circle")
|
||
temp.AnimatorCircle = temp.AnimatorCircle:GetComponent(typeof(UnityEngine.Animator))
|
||
temp.AnimatorCircle:Play("stop", -1, 0)
|
||
temp.AnimatorMax = down_btnTemp:Find("max")
|
||
temp.AnimatorMax = temp.AnimatorMax:GetComponent(typeof(UnityEngine.Animator))
|
||
temp.AnimatorMax:Play("stop", -1, 0)
|
||
down_btnTemp = down_btnTemp:GetComponent(typeof(UnityEngine.UI.Button))
|
||
LuaUIHelper:AddButtonClick(down_btnTemp, function(btnVar)
|
||
self:ShowPage(btnVar)
|
||
end, i)
|
||
end
|
||
|
||
for index, value in pairs(self.aar_subView) do
|
||
if type(value) == "table" then
|
||
value.view:SetActive(false)
|
||
end
|
||
end
|
||
self.down_selectbtn = 3
|
||
self:ShowPage(self.down_selectbtn)
|
||
|
||
if true then
|
||
return
|
||
end
|
||
-- print("init lobbyView!!!!")
|
||
BaseView.InitView(self, url)
|
||
self._full_offset = false
|
||
local view = self._view
|
||
|
||
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 = 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_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:ShowPage(btnVar)
|
||
self.down_arrBtnDown[self.down_selectbtn].AnimatorMax:Play("close", -1, 0)
|
||
self.aar_subView[self.down_selectbtn].view:SetActive(false)
|
||
self.down_selectbtn = btnVar
|
||
self.down_arrBtnDown[btnVar].AnimatorCircle:Play("open", -1, 0)
|
||
self.down_arrBtnDown[btnVar].AnimatorMax:Play("open", -1, 0)
|
||
self.aar_subView[btnVar].view:SetActive(true)
|
||
self.aar_subView[btnVar].position = self.imagePoint.position
|
||
|
||
local Unit = self.aar_subView[LobbyView.Unit]
|
||
if btnVar == 1 then
|
||
if self.isJoinPlay then
|
||
Unit.subView[Unit.Main].view:SetActive(true)
|
||
Unit.subView[Unit.JoinNone].view:SetActive(false)
|
||
else
|
||
Unit.subView[Unit.Main].view.gameObject:SetActive(false)
|
||
Unit.subView[Unit.JoinNone].view.gameObject:SetActive(true)
|
||
end
|
||
Unit.subView[Unit.List].view:SetActive(false)
|
||
Unit.subView[Unit.JoinUnit].view:SetActive(false)
|
||
elseif btnVar == 2 then
|
||
|
||
elseif btnVar == 3 then
|
||
|
||
elseif btnVar == 4 then
|
||
|
||
elseif btnVar == 5 then
|
||
|
||
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:Show()
|
||
local sview = _buy_win._view
|
||
local btn_copy = sview:GetChild("btn_copy")
|
||
btn_copy.onClick:Set(function()
|
||
GameApplication.Instance:CopyToClipboard("xbkf888108") --湘北
|
||
_buy_win:Destroy()
|
||
end)
|
||
end
|
||
|
||
function M:__GetMessage(data)
|
||
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)
|
||
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
|
||
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()
|
||
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)
|
||
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
|