dezhou_client/lua_probject/base_project/Game/View/Lobby/RankView.lua

402 lines
12 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.

-- 排行和战绩窗口
-- author谌建军
RankView = {}
local M = RankView
function RankView.new( main_view,video )
UIPackage.AddPackage("base/rank/ui/Rank")
setmetatable(M, {__index = BaseWindow})
local self = setmetatable({}, {__index = M})
self.class = "RankView"
self._animation = false
self._full = true
self._full_offset = false
self._close_destroy = true
self._main_view = main_view
self._video = video
self._put_map = false
self._new_hide = false
self._queue = false
self:init("ui://Rank/Main")
return self
end
function M:init( url )
BaseWindow.init(self,url)
self._view:GetController("tab").selectedIndex = self._video and 1 or 0
self._curren_tex = ""
self._curren_len = 0
local develop_panel = self._view:GetChild("n70")
self.tex_roomid = develop_panel:GetChild("tex_roomid")
self.tex_roomid.text = ""
for i = 0, 9 do
local btn = develop_panel:GetChild("btn_" .. i)
btn.onClick:Add(function()
if self._curren_len < 6 then
self._curren_tex = self._curren_tex .. i
self._curren_len = self._curren_len + 1
self.tex_roomid.text = self._curren_tex
if self._curren_len == 6 then
ViewUtil.ShowModalWait(self._root_view)
local loddyCtr1 = ControllerManager.GetController(LoddyController)
loddyCtr1:RequestRecordList(function (result)
ViewUtil.CloseModalWait()
if self._is_destroy then
return
end
if result == Table_Error_code.ERR_TIMEOUT then
self:readData()
return
end
if result == 0 then
self:InitRecord1(loddyCtr1.recordList, true)
end
end, self._curren_tex)
end
end
end)
end
develop_panel:GetChild("btn_del").onClick:Add(function()
if self._curren_len > 0 then
self._curren_len = self._curren_len - 1
self._curren_tex = string.sub(self._curren_tex, 0, self._curren_len)
self.tex_roomid.text = self._curren_tex
end
end)
develop_panel:GetChild("btn_retype").onClick:Add(function()
self._curren_tex = ""
self._curren_len = 0
self.tex_roomid.text = self._curren_tex
end)
end
function M:readData()
local view = self._view
local record_list_1 = view:GetChild("n26")
record_list_1:RemoveChildrenToPool()
local loddyCtr1 = ControllerManager.GetController(LoddyController)
loddyCtr1:RequestRecordList(function (result)
if self._is_destroy then
return
end
if result == Table_Error_code.ERR_TIMEOUT then
self:readData()
return
end
self:InitRecord1(loddyCtr1.recordList)
end)
end
function M:Show()
BaseWindow.Show(self)
UpdateBeat:Remove(self._main_view.OnUpdate, self._main_view)
-- self:readData()
end
function M:Destroy()
BaseWindow.Destroy(self)
UpdateBeat:Add(self._main_view.OnUpdate, self._main_view)
end
local load_head_num = 0
function M:InitRecord1(recordList, develop_tool)
--print("InitRecord1=========")
pt(recordList)
local main_view = self._view
-- 战绩 list
local record_list_1, ctr_recored, ctr_no_record
if develop_tool then
ctr_recored = main_view:GetController("developer")
ctr_recored.selectedIndex = 1
record_list_1 = main_view:GetChild("lst_record")
local btn_backto_search = main_view:GetChild("btn_backto_search")
btn_backto_search.onClick:Set(function()
ctr_recored.selectedIndex = 0
self._curren_tex = ""
self._curren_len = 0
self.tex_roomid.text = ""
end)
ctr_no_record = self._view:GetController("noRecordData2")
else
record_list_1 = main_view:GetChild("n26")
ctr_no_record = self._view:GetController("noRecordData")
end
record_list_1:RemoveChildrenToPool()
ctr_no_record.selectedIndex = #recordList == 0 and 1 or 0
for i=1, #recordList do
local record_list_item = recordList[i]
local total_score_list = record_list_item.TotalScoreList
local item = record_list_1:AddItemFromPool()
local player_item_list = item:GetChild("big_round")
local more_person = #total_score_list >= 6
if more_person then
item:GetController("person_num").selectedIndex = 1
else
item:GetController("person_num").selectedIndex = 0
end
local game_id = record_list_item.GameId
local game_data = ExtendManager.GetGameData(game_id)
local room_type_str = record_list_item.GameInfo.name
local room_id_str = record_list_item.RoomId
local time =tonumber(record_list_item.Time)
local room_time_str = os.date("%Y-%m-%d %H:%M", time)
local item_score_list = record_list_item.GameTimes
local play_back_id = record_list_item.PlayBackId
-- 显示 房间号 房间类型 时间
item:GetChild("RoomType").asTextField.text = room_type_str
item:GetChild("RoomID").asTextField.text = room_id_str
item:GetChild("Time").asTextField.text = room_time_str
if record_list_item.hp_times and record_list_item.hp_times ~= 0 then
item:GetChild("tex_times").text = record_list_item.hp_times .. ""
else
item:GetChild("tex_times").text = ""
end
player_item_list:RemoveChildrenToPool()
local hpOnOff = record_list_item.hpOnOff
local hpType = record_list_item.GameInfo.hpType
-- 显示 每个玩家的 名字和 分数
-- player_list 是聊天室数据
local player_list = {}
for j=1,#total_score_list do
local player_list_item = total_score_list[j]
local player_item = player_item_list:AddItemFromPool()
player_item:GetChild("n0").text = player_list_item.Name
local player_score = player_item:GetChild("n1")
local score = player_list_item.Score
if hpOnOff == 1 and hpType > 1 then
score = score / 10
end
if score < 0 then
player_item:GetController("num_color").selectedIndex = 1
else
player_item:GetController("num_color").selectedIndex = 0
end
player_score.text = score >= 0 and "+"..score or score
player_list[j] = {}
player_list[j].id = player_list_item.Id
player_list[j].score = score
player_list[j].house = 0
player_list[j].nick = player_list_item.Name
end
-- 点击事件
item.onClick:Add(function ()
self:ShowRecord2(play_back_id, room_type_str, room_id_str, room_time_str,item_score_list, game_id, develop_tool, record_list_item)
end)
-- 分享
item:GetChild("btn_screenshot").onClick:Set(function()
ViewUtil.ShowModalWait(self._view, "正在分享...")
local result_view = UIPackage.CreateObjectFromURL("ui://Rank/ResultView")
result_view.visible = false
self._view:AddChild(result_view)
result_view:GetChild("tex_roomnum").text = room_id_str .. " " .. room_type_str
result_view:GetChild("tex_data").text = room_time_str
result_view:GetChild("btn_confirm").onClick:Set(function() result_view:Dispose() end)
local lst_p = result_view:GetChild("list_result")
local lst_p2 = result_view:GetChild("list_result2")
load_head_num = #total_score_list
local count = #total_score_list
for j = 1, count do
local p = total_score_list[j]
local item = nil
if count < 6 or (count >= 6 and j <= math.ceil(count / 2)) then
item = lst_p:AddItemFromPool()
else
item = lst_p2:AddItemFromPool()
end
item:GetChild("name").text = p.Name
local score = p.Score
if hpOnOff == 1 and hpType > 1 then
score = score / 10
end
item:GetChild("score").text = score
if score < 0 then item:GetController("di").selectedIndex = 1 end
if p.Portrait and p.Portrait ~= "" then
ImageLoad.Load(p.Portrait, item:GetChild("n9")._iconObject, 1, function( ... )
load_head_num = load_head_num - 1
end)
else
load_head_num = load_head_num - 1
end
end
coroutine.start(function ( ... )
local left_time = 4
while (true) do
if load_head_num == 0 or left_time == 0 then
result_view.visible = true
coroutine.wait(0.2)
ShareScreenShotWithOption(function()
result_view:Dispose()
end)
ViewUtil.CloseModalWait()
break
end
coroutine.wait(1)
left_time = left_time - 1
end
end)
end)
item:GetChild("btn_link").onClick:Set(function()
local group_id = record_list_item.group_id and tonumber(record_list_item.group_id) or 0
ShareChatRoom(record_list_item.RoomId, tostring(os.time()), #item_score_list, room_type_str, group_id, player_list, self._root_view)
end)
end
end
function M:ShowRecord2(playback_id, room_type, room_id, room_time, item_score, game_id, develop_tool, record_item)
local record_list_2
if develop_tool then
record_list_2 = self._view:GetChild("lst_round")
self._view:GetController("developer").selectedIndex = 2
else
record_list_2 = self._view:GetChild("n29")
self._view:GetController("Record").selectedIndex = 1
end
local hpOnOff = record_item.hpOnOff
local hpType = record_item.GameInfo.hpType
record_list_2:RemoveChildrenToPool()
for i=1,#item_score do
local item_player_info = item_score[i]
local play_back_id = item_player_info.PlayBackId
local player_score = item_player_info.PlayerList
local record_item_2 = record_list_2:AddItemFromPool("ui://Rank/Record_Item_2")
local player_item_list = record_item_2:GetChild("List")
local more_person = #player_score >= 6
if more_person then
record_item_2:GetController("person_num").selectedIndex = 1
else
record_item_2:GetController("person_num").selectedIndex = 0
end
-- 设置房间信息
record_item_2:GetChild("RoomType").text = room_type
record_item_2:GetChild("RoomID").text = room_id
--record_item_2:GetChild("Time").text = room_time
record_item_2:GetChild("Number").text = tostring(i)
player_item_list:RemoveChildrenToPool()
for j=1,#player_score do
local player_item = player_item_list:AddItemFromPool()
player_item:GetChild("n0").text = player_score[j].Name
local player_score_text = player_item:GetChild("n1")
local score = player_score[j].Score
if hpOnOff == 1 and hpType > 1 then
score = score / 10
end
if score < 0 then
player_item:GetController("num_color").selectedIndex = 1
else
player_item:GetController("num_color").selectedIndex = 0
end
player_score_text.text = score >= 0 and "+"..score or score
end
local btn_play_back = record_item_2:GetChild("btn_play_back")
btn_play_back.onClick:Set(function()
--print("点击进入回放=====")
if DataManager.SelfUser.playback[playback_id] ~= nil and DataManager.SelfUser.playback[playback_id][i] ~= nil then
local room = ExtendManager.GetExtendConfig(game_id):NewRoom()
DataManager.CurrenRoom = room
room.game_id = game_id
local extend = ExtendManager.GetExtendConfig(game_id)
extend:FillPlayBackData(DataManager.SelfUser.playback[playback_id][i])
if not room.self_player then
room.self_player = room:GetPlayerBySeat(1)
end
local main = self:GenaratePlayBack(ViewManager.View_PlayBack, game_id)
main._currentId = playback_id
main._currentRound = i
main._totalRound = #item_score
main:FillRoomData(DataManager.SelfUser.playback[playback_id][i])
else
ViewUtil.ShowModalWait(self._view)
local _data = {}
_data["military_id"] = playback_id
_data["round"] = tostring(i)
local loddyCtr1 = ControllerManager.GetController(LoddyController)
loddyCtr1:RequestPlayBack(_data,function(code,data)
ViewUtil.CloseModalWait()
if code == 0 then
if DataManager.SelfUser.playback[playback_id] ~= nil then
DataManager.SelfUser.playback[playback_id][i] = data
else
local playback_data = {}
playback_data[i] = data
DataManager.SelfUser.playback[playback_id] = playback_data
end
local main = self:GenaratePlayBack(ViewManager.View_PlayBack, game_id)
main._currentId = playback_id
main._currentRound = i
main._totalRound = #item_score
--print(main)
main:FillRoomData(data)
elseif code == 25 then
ViewUtil.ErrorTip(code, "回放未找到!")
btn_play_back.grayed = true
end
end, record_item.GameInfo)
end
end)
end
end
function M:GenaratePlayBack(id, game_id, ...)
local tem =nil
local dview_class = nil
if not dview_class then
local exconfig = ExtendManager.GetExtendConfig(game_id)
dview_class = exconfig:GetView(id)
--print(dview_class)
end
if not dview_class then
return
end
local arg = {...}
tem = dview_class.new(...)
tem.Id = id
tem:Show()
return tem
end
function M:Destroy()
BaseWindow.Destroy(self)
UIPackage.RemovePackage("base/rank/ui/Rank")
end
return M