131 lines
3.5 KiB
Lua
131 lines
3.5 KiB
Lua
-- 牌友圈助手邀请界面
|
|
local FGAssistInviteView = {}
|
|
|
|
local M = FGAssistInviteView
|
|
setmetatable(M, {__index = BaseWindow})
|
|
|
|
function FGAssistInviteView.new(blur_view, callback)
|
|
local self = setmetatable({}, {__index = M})
|
|
self.class = "FGAssistInviteView"
|
|
self._blur_view = blur_view
|
|
self._animation = true
|
|
self._new_hide = false
|
|
self._put_map = false
|
|
self._close_destroy = true
|
|
self.callback = callback
|
|
self:initView("ui://FGAssist/panel_invite")
|
|
return self
|
|
end
|
|
|
|
function M:initView(url)
|
|
self:init(url)
|
|
self.lst_player = self._view:GetChild("lst_player")
|
|
local btn_refresh = self._view:GetChild("btn_refresh")
|
|
btn_refresh.onClick:Set(function()
|
|
self.lst_player:RemoveChildrenToPool()
|
|
self:FillData()
|
|
end)
|
|
|
|
self._timer = 0
|
|
self:FillData()
|
|
UpdateBeat:Add(self.OnUpdate,self)
|
|
end
|
|
|
|
function M:FillData()
|
|
local mgr_ctr = ControllerManager.GetController(GroupMgrController)
|
|
if not mgr_ctr._mgr_client then
|
|
return
|
|
else
|
|
self:GetOnlinePlayers()
|
|
end
|
|
end
|
|
|
|
function M:GetOnlinePlayers()
|
|
local mgr_ctr = ControllerManager.GetController(GroupMgrController)
|
|
mgr_ctr:FG_GetOnlinePlayers(function(res)
|
|
if res.ReturnCode ~= 0 then
|
|
ViewUtil.ErrorTip(res.ReturnCode, "获取在线成员失败")
|
|
else
|
|
self.players = res.Data.onlines
|
|
self._view:GetController("empty").selectedIndex = #self.players == 0 and 1 or 0
|
|
self:ShowOnlinePlayers()
|
|
end
|
|
end)
|
|
end
|
|
|
|
local function _showLeftTime(item, time)
|
|
item:GetChild("tex_left_time").text = time .. "s"
|
|
end
|
|
|
|
local _list_invite_time = {}
|
|
function M:ShowOnlinePlayers()
|
|
local players = self.players
|
|
for i = 1, #players do
|
|
if self.lst_player.isDisposed then return end
|
|
local item = self.lst_player:AddItemFromPool()
|
|
local p = players[i]
|
|
item:GetChild("tex_name").text = p.nick
|
|
item:GetChild("tex_id").text = "ID:" .. ViewUtil.HideID(p.uid)
|
|
local btn_head = item:GetChild("btn_head")
|
|
ImageLoad.Load(p.portrait, btn_head._iconObject)
|
|
local ctr_enable = item:GetController("enable")
|
|
ctr_enable.selectedIndex = 0
|
|
item:GetChild("btn_invite").onClick:Set(function()
|
|
local mgr_ctr = ControllerManager.GetController(GroupMgrController)
|
|
local room = DataManager.CurrenRoom
|
|
mgr_ctr:FG_InvitePlayer(p.uid, room.room_id, room.play_id, room.room_config:GetGameName(), function()
|
|
end)
|
|
|
|
local time = os.time()
|
|
_list_invite_time[p.uid] = time
|
|
ctr_enable.selectedIndex = 1
|
|
_showLeftTime(item, 15)
|
|
end)
|
|
local invite_time = _list_invite_time[p.uid]
|
|
if invite_time then
|
|
local i_timer = os.time() - invite_time
|
|
if i_timer < 15 then
|
|
ctr_enable.selectedIndex = 1
|
|
_showLeftTime(item, 15 - i_timer)
|
|
else
|
|
_list_invite_time[p.uid] = nil
|
|
ctr_enable.selectedIndex = 0
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function M:OnUpdate()
|
|
local deltaTime = Time.deltaTime
|
|
self._timer = self._timer + deltaTime
|
|
if self._timer >= 1 then
|
|
self._timer = 0
|
|
|
|
if self.lst_player.numChildren == 0 then return end
|
|
for i = 1, #self.players do
|
|
local p = self.players[i]
|
|
local invite_time = _list_invite_time[p.uid]
|
|
if invite_time then
|
|
local i_timer = os.time() - invite_time
|
|
local item = self.lst_player:GetChildAt(i - 1)
|
|
if not item then break end
|
|
if i_timer < 15 then
|
|
_showLeftTime(item, 15 - i_timer)
|
|
else
|
|
item:GetController("enable").selectedIndex = 0
|
|
_list_invite_time[p.uid] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function M:Destroy()
|
|
UpdateBeat:Remove(self.OnUpdate, self)
|
|
BaseWindow.Destroy(self)
|
|
if self.callback then
|
|
self.callback()
|
|
end
|
|
end
|
|
|
|
return M |