dezhou_client/lua_probject/base_project/Game/View/FGAssistInviteView.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