yunque9/lua_probject/extend_project/extend/poker/runfast/RunFast_ResultView.lua

549 lines
19 KiB
Lua
Raw Normal View History

2025-05-24 14:29:14 +08:00
---
--- Created by 谌建军.
--- DateTime: 2017/12/19 11:05
---
require("Game.View.ResultView")
local RunFast_ResultView = {}
local M = RunFast_ResultView
function RunFast_ResultView.new(blur_view, data, roomid, over, win_seat, dissolve, remaincards)
setmetatable(M, { __index = ResultView })
local self = setmetatable({}, { __index = M })
2025-05-24 14:29:14 +08:00
self.class = "RunFast_ResultView"
self._currenIndex = 0
self._close_zone = false
--self._blur_view = blur_view
self._gamectr = ControllerManager.GetController(GameController)
self:init("ui://Extend_Poker_RunFastNew/clearing", data, roomid, over, win_seat, dissolve, remaincards)
2025-05-24 14:29:14 +08:00
return self
end
function M:init(url, data, roomid, over, win_seat, dissolve, remaincards)
ResultView.init(self, url, true)
self.xiPaiCtr = self._view:GetController("xipai")
local round = DataManager.CurrenRoom.room_config.config.times or 1
local xpconfig = DataManager.CurrenRoom.room_config.config.xi_pai
if xpconfig and round > 1 then
self.xiPaiCtr.selectedIndex = 1
else
self.xiPaiCtr.selectedIndex = 0
end
2025-05-24 14:29:14 +08:00
--self:InitData(data,roomid)
--self:InitData(data,roomid)
printlog("aaaaaaaaaaaaaaaa1111111111111111111111111222222222222222 ", dissolve)
2025-05-24 14:29:14 +08:00
pt(data)
if dissolve == 1 then
-- body
self.xiPaiCtr.selectedIndex = 0
2025-05-24 14:29:14 +08:00
self:InitData(data, win_seat, roomid)
else
local xipai = self._view:GetChild("btn_xipai")
xipai.touchable = true
xipai.onClick:Add(function()
local xiPaiCallBack = function()
xipai.touchable = false
self.xiPaiCtr.selectedIndex = 0
ViewUtil.ErrorTip(1000000, "申请洗牌成功")
end
local _gamectr = ControllerManager.GetController(GameController)
_gamectr:SendXiPaiAction(xiPaiCallBack)
end)
if DataManager.CurrenRoom.xipaiScore then
--xipai.text="洗牌 积分x"..DataManager.CurrenRoom.xipaiScore
else
--xipai.text="洗牌 积分x0"
end
2025-05-24 14:29:14 +08:00
self:InitData_One(data, win_seat, over, roomid, remaincards)
end
end
function M:ChangeCodeByTo(card)
2025-05-24 14:29:14 +08:00
local flower = card % 10
local number = math.floor(card / 10)
if number == 15 then
number = 2
end
return flower * 100 + number
end
-- 小结算
function M:InitData_One(data, winseat, over, roomid, remaincards)
local room = DataManager.CurrenRoom
self._view:GetController("sdk").selectedIndex = 1
local _gamectr = ControllerManager.GetController(GameController)
local list_view = self._view:GetChild("player_list_1")
list_view:RemoveChildrenToPool()
local leftCardAll = self._view:GetChild("leftCardHand")
leftCardAll:RemoveChildrenToPool()
if remaincards and #remaincards > 0 then
table.sort(remaincards, function(a, b)
2025-05-24 14:29:14 +08:00
return a % 100 < b % 100
end)
for i = 1, #remaincards do
local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. remaincards[i])
2025-05-24 14:29:14 +08:00
leftCardAll:AddChild(card_code_obj)
end
end
2025-05-24 14:29:14 +08:00
for i = 1, #data do
local player = data[i]
local item = list_view:AddItemFromPool("ui://Extend_Poker_RunFastNew/clearing_item_1")
local leftCard = item:GetChild("leftCard")
2025-05-24 14:29:14 +08:00
leftCard:RemoveChildrenToPool()
-- table.sort(data[i].handCards,function (a,b)
2025-05-24 14:29:14 +08:00
-- return a % 100 < b % 100
-- end)
for j = 1, #data[i].handCards do
2025-05-24 14:29:14 +08:00
local code = data[i].handCards[j]
local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. code)
2025-05-24 14:29:14 +08:00
leftCard:AddChild(card_code_obj)
end
-- table.sort(data[i].outCards,function (a,b)
-- return a % 100 < b % 100
-- end)
for k = 1, #data[i].outCards do
2025-05-24 14:29:14 +08:00
local code = data[i].outCards[k]
local card_code_obj = UIPackage.CreateObjectFromURL("ui://Extend_Poker_RunFastNew/" .. code)
2025-05-24 14:29:14 +08:00
leftCard:AddChild(card_code_obj)
card_code_obj:GetChildAt(0):GetChildAt(0).color = Color(0.7, 0.7, 0.7)
2025-05-24 14:29:14 +08:00
end
2025-05-24 14:29:14 +08:00
local boom = item:GetChild("boom")
boom.text = player.thisboomnum
2025-05-24 14:29:14 +08:00
local piao = item:GetChild("piao")
if player.piao <= 0 then
piao.text = "0"
else
piao.text = "" .. player.piao
end
2025-05-24 14:29:14 +08:00
local nichen = item:GetChild("nichen")
2025-05-24 14:29:14 +08:00
if player.nick ~= nil then
-- body
nichen.text = tostring(player.nick)
else
nichen.text = tostring(player.self_user.nick_name)
end
2025-05-24 14:29:14 +08:00
local shengpai = item:GetChild("shengpai")
if player.cards ~= nil then
-- body
shengpai.text = tostring(#player.cards)
else
shengpai.text = tostring(#player.hand_list)
end
2025-05-24 14:29:14 +08:00
local rt = 1
if room.hpOnOff == 1 then
rt = room.score_times
end
2025-05-24 14:29:14 +08:00
local hp_nonnegative = room:checkHpNonnegative()
local roundScore = player.winCardScore
2025-05-24 14:29:14 +08:00
if hp_nonnegative then
local jifen = ""
if roundScore > 0 then
jifen = "+" .. roundScore
else
jifen = "" .. roundScore
end
2025-05-24 14:29:14 +08:00
local tili = ""
local limit = ""
if player.hp_info.round_actual_hp > 0 then
-- tili = "(+" .. d2ad(player.hp_info.round_actual_hp) .. ")"
tili = "(+" .. roundScore .. ")"
2025-05-24 14:29:14 +08:00
if player.hp_info.upper_limit then
limit = "达到上限"
end
else
-- tili = "(" .. d2ad(player.hp_info.round_actual_hp) .. ")"
tili = "(" .. roundScore .. ")"
2025-05-24 14:29:14 +08:00
if player.hp_info.upper_limit then
limit = "达到下限"
end
end
2025-05-24 14:29:14 +08:00
item:GetChild("score").text = jifen .. tili .. limit
else
local jifen = ""
if roundScore >= 0 then
jifen = "+" .. roundScore
else
jifen = "" .. roundScore
end
jifen = jifen .. " "
2025-05-24 14:29:14 +08:00
local tili = ""
if room.hpOnOff > 0 then
local need = roundScore * rt
tili = "("
if roundScore > 0 then
tili = tili .. "+" .. tostring(need)
else
tili = tili .. tostring(need)
end
2025-05-24 14:29:14 +08:00
tili = tili .. ")"
end
2025-05-24 14:29:14 +08:00
item:GetChild("score").text = jifen .. tili
end
2025-05-24 14:29:14 +08:00
if roundScore >= 0 then
if room.self_player.seat == player.seat then
-- body
self._view:GetController("result").selectedIndex = 1
item:GetController('win').selectedIndex = 1
else
item:GetController('win').selectedIndex = 0
2025-05-24 14:29:14 +08:00
end
else
if room.self_player.seat == player.seat then
self._view:GetController("result").selectedIndex = 0
item:GetController('win').selectedIndex = 0
else
item:GetController('win').selectedIndex = 1
2025-05-24 14:29:14 +08:00
end
end
end
2025-05-24 14:29:14 +08:00
if over == 0 then
-- body
local btn_confirm = self._view:GetChild("btn_confirm")
btn_confirm.onClick:Set(function()
self:Destroy()
local _gamectr = ControllerManager.GetController(GameController)
_gamectr:ConformToNextGame()
end)
else
self.xiPaiCtr.selectedIndex = 0
2025-05-24 14:29:14 +08:00
local btn_confirm = self._view:GetChild("btn_confirm")
btn_confirm.onClick:Set(function()
--self:Destroy()
self:InitData(data, winseat, roomid)
-- ViewManager.ChangeView(ViewManager.View_Lobby)
2025-05-24 14:29:14 +08:00
end)
end
end
-- 大结算
function M:InitData(data, winseat, roomid)
self.xiPaiCtr.selectedIndex = 0
2025-05-24 14:29:14 +08:00
self._view:GetController("sdk").selectedIndex = 0
2025-05-24 14:29:14 +08:00
local room = DataManager.CurrenRoom
2025-05-24 14:29:14 +08:00
local rt = 1
if room.hpOnOff == 1 and room.score_times ~= 1 then
rt = room.score_times
end
2025-05-24 14:29:14 +08:00
-- 赋值result_info聊天室分享需要
local player_list = {}
for i = 1, #data do
player_list[i] = {}
2025-05-24 14:29:14 +08:00
local user = room:GetPlayerBySeat(data[i].seat).self_user
2025-05-24 14:29:14 +08:00
player_list[i].id = user.account_id
2025-05-24 14:29:14 +08:00
player_list[i].score = data[i].score
player_list[i].hp_info = data[i].hp_info
player_list[i].house = room.owner_id == player_list[i].id and 1 or 0
player_list[i].nick = user.nick_name
player_list[i].seat = data[i].seat
player_list[i].head_url = data[i].self_user.head_url
player_list[i].daniao = data[i].daniao
2025-05-24 14:29:14 +08:00
if data[i].entrust ~= nil then
player_list[i].entrust = data[i].entrust > 0
else
player_list[i].entrust = false
end
2025-05-24 14:29:14 +08:00
player_list[i].param = {}
2025-05-24 14:29:14 +08:00
player_list[i].param[1] = {}
player_list[i].param[1].key = "赢局数:"
player_list[i].param[1].value = tostring(data[i].settle_log.winnum)
2025-05-24 14:29:14 +08:00
player_list[i].param[2] = {}
player_list[i].param[2].key = "打出炸弹数:"
player_list[i].param[2].value = tostring(data[i].settle_log.boomnum)
2025-05-24 14:29:14 +08:00
player_list[i].param[3] = {}
player_list[i].param[3].key = "春天次数:"
player_list[i].param[3].value = tostring(data[i].settle_log.springnum)
2025-05-24 14:29:14 +08:00
player_list[i].param[4] = {}
player_list[i].param[4].key = "当局最高分:"
player_list[i].param[4].value = tostring(data[i].settle_log.maxscore * rt)
2025-05-24 14:29:14 +08:00
if data[i].daniao > 0 then
player_list[i].flag = { "打鸟" }
2025-05-24 14:29:14 +08:00
end
end
self:GenerateRoomResultInfo(room.room_config.Times, room.room_config:GetGameName(), room.room_id, room.create_time,
player_list)
2025-05-24 14:29:14 +08:00
self:InitBigResult(room)
local big_result = self._view:GetChild("big_result")
local lst_p = big_result:GetChild("player_list")
-- local list_param = com_p:GetChild("list_param")
for i = 1, lst_p.numChildren do
local com_p = lst_p:GetChildAt(i - 1)
local list_param = com_p:GetChild("list_param")
for j = 1, list_param.numChildren do
local tem = list_param:GetChildAt(j - 1)
tem:GetChild("txt_value").textFormat.size = 30
end
end
end
function M:InitBigResult(room, fontsize)
local big_result = self._view:GetChild('big_result')
if big_result ~= nil then
local player_list = big_result:GetChild('player_list')
player_list:RemoveChildrenToPool()
big_result:GetChild('txt_room_id').text = '房号:' .. self._resultInfo.room_id
big_result:GetChild('txt_game_name').text = self._resultInfo.game_name
big_result:GetChild('txt_game_data').text = os.date('%Y-%m-%d %H:%M', os.time())
local str_roominfo = string.gsub(room.room_config:GetDes(), '\r', '')
big_result:GetChild('txt_play').text = str_roominfo
if room.hpOnOff == 1 and room.score_times ~= 1 then
big_result:GetChild('txt_time').text = '倍数:' .. tostring(room.score_times)
big_result:GetController('time').selectedIndex = 1
end
local maxScore = 0
local isWin = false
local flag_new = big_result:GetChild('flag_tempNew')
for i = 1, #self._resultInfo.player_list do
local player_info = self._resultInfo.player_list[i]
local total_score = room:GetTotalScore(player_info.score)
local hp_nonnegative = room:checkHpNonnegative()
player_info.total_score = 0
if hp_nonnegative then
local hp_info = player_info.hp_info
player_info.total_score = d2ad(hp_info.total_hp)
else
player_info.total_score = total_score
end
if player_info.score > maxScore then
maxScore = player_info.score
end
if player_info.id == room.self_player.self_user.account_id then
if player_info.total_score >= 0 then
isWin = true
end
end
end
if isWin then
big_result:GetController('result').selectedIndex = 1
else
big_result:GetController('result').selectedIndex = 0
end
for i = 1, #self._resultInfo.player_list do
local player_info = self._resultInfo.player_list[i]
local item2
if player_info.id == room.self_player.self_user.account_id then
if isWin then
item2 = big_result:GetChild('play_win')
else
item2 = big_result:GetChild('play_lose')
end
else
if not isWin then
item2 = big_result:GetChild('play_win')
else
item2 = big_result:GetChild('play_lose')
end
end
local item = player_list:AddItemFromPool()
item:GetChild('txt_name').text = player_info.nick
item2:GetChild('txt_name').text = player_info.nick
item2:GetChild('txt_id').text = player_info.id
local head = item:GetChild('head'):GetChild('n4')
ImageLoad.Load(player_info.head_url, head)
local head = item2:GetChild('head'):GetChild('n4')
ImageLoad.Load(player_info.head_url, head)
if player_info.entrust ~= nil and player_info.entrust == true then
item:GetController('entrust').selectedIndex = 1
else
item:GetController('entrust').selectedIndex = 0
end
if player_info.hp_info ~= nil and player_info.hp_info.cur_hp ~= nil then
item:GetChild('txt_reserve_hp').text = '积分:' .. tostring(d2ad(player_info.hp_info.cur_hp))
end
if player_info.total_score ~= nil then
if tostring(player_info.score) == tostring(maxScore) and player_info.score > 0 then
item:GetController('big_win').selectedIndex = 1
else
item:GetController('big_win').selectedIndex = 0
end
if player_info.total_score >= 0 then
item:GetController('pn').selectedIndex = 1
item:GetChild('txt_positive').text = '+' .. tostring(player_info.total_score)
item2:GetChild('txt_navigate').text = string.format("总战绩:+%s", player_info.total_score)
item2:GetChild('txt_daniao').text = string.format("打鸟 +%s", player_info.daniao)
item2:GetChild('text_zongjifen').text = player_info.total_score < player_info.daniao and 0 or
player_info.total_score - player_info.daniao
else
item:GetController('pn').selectedIndex = 0
item:GetChild('txt_navigate').text = tostring(player_info.total_score)
item2:GetChild('txt_navigate').text = string.format("总战绩:%s", player_info.total_score)
item2:GetChild('txt_daniao').text = string.format("打鸟 %s", player_info.daniao)
item2:GetChild('text_zongjifen').text = player_info.total_score > player_info.daniao and 0 or
player_info.total_score - player_info.daniao
end
end
player_info.score = room:GetTotalScore(player_info.score)
local list_param = item:GetChild('list_param')
list_param:RemoveChildrenToPool()
if self._gameStatisticsLineSpacing ~= nil then
list_param.lineGap = self._gameStatisticsLineSpacing
end
if player_info.param ~= nil then
local big = false
if #player_info.param <= 4 then
big = true
end
for i = 1, #player_info.param do
local pitem = list_param:AddItemFromPool()
pitem:GetChild('txt_key').text = player_info.param[i].key
pitem:GetChild('txt_value').text = player_info.param[i].value
if fontsize ~= nil and fontsize > 0 then
pitem:GetChild('txt_key').textFormat.size = fontsize
pitem:GetChild('txt_value').textFormat.size = fontsize
else
if big then
pitem:GetChild('txt_key').textFormat.size = 30
pitem:GetChild('txt_value').textFormat.size = 30
else
pitem:GetChild('txt_key').textFormat.size = 24
pitem:GetChild('txt_value').textFormat.size = 24
end
end
end
end
local list_param = item2:GetChild('list_param')
list_param:RemoveChildrenToPool()
if self._gameStatisticsLineSpacing ~= nil then
list_param.lineGap = self._gameStatisticsLineSpacing
end
if player_info.param ~= nil then
local big = false
if #player_info.param <= 4 then
big = true
end
for i = 1, #player_info.param do
local pitem = list_param:AddItemFromPool()
pitem:GetChild('txt_key').text = player_info.param[i].key
pitem:GetChild('txt_value').text = player_info.param[i].value
if fontsize ~= nil and fontsize > 0 then
pitem:GetChild('txt_key').textFormat.size = fontsize
pitem:GetChild('txt_value').textFormat.size = fontsize
else
if big then
pitem:GetChild('txt_key').textFormat.size = 30
pitem:GetChild('txt_value').textFormat.size = 30
else
pitem:GetChild('txt_key').textFormat.size = 24
pitem:GetChild('txt_value').textFormat.size = 24
end
end
end
end
local flag = item:GetChild('flag')
flag:RemoveChildrenToPool()
if player_info.flag ~= nil and #player_info.flag > 0 then
for i = 1, #player_info.flag do
local pitem = flag:AddItemFromPool()
pitem:GetChild('txt_name').text = player_info.flag[i]
end
item:GetController('have_flag').selectedIndex = 1
else
item:GetController('have_flag').selectedIndex = 0
end
if player_info.id == room.self_player.self_user.account_id then
item:GetController('self').selectedIndex = 1
else
item:GetController('self').selectedIndex = 0
end
end
local btn_continue_game = big_result:GetChild('btn_continue_game')
if btn_continue_game then
local gid = room.group_id
if gid ~= 0 then
btn_continue_game.visible = true
local pid = room.room_config.pid
local game_id = room.game_id
btn_continue_game.onClick:Set(
function()
self:ContinueGame(gid, pid, game_id)
end
)
end
end
end
end
2025-05-24 14:29:14 +08:00
return M