四人同步

master
罗家炜 2025-04-22 18:49:20 +08:00
parent 6785ccde59
commit 7bf51f5168
4 changed files with 237 additions and 234 deletions

View File

@ -460,6 +460,7 @@ function M:EventInit()
if _room.curren_round ~= _room.room_config.round then if _room.curren_round ~= _room.room_config.round then
-- if #niao == 0 then self._view:GetChild("n13").visible = false end -- if #niao == 0 then self._view:GetChild("n13").visible = false end
self._clearingView:InitData(0, _room, result, nil, function(...) self._clearingView:InitData(0, _room, result, nil, function(...)
print("===============================lingthis")
for i = 1, #data do for i = 1, #data do
local p = _room:GetPlayerBySeat(data[i].seat) local p = _room:GetPlayerBySeat(data[i].seat)
p.total_score = data[i].total_score p.total_score = data[i].total_score
@ -488,6 +489,7 @@ function M:EventInit()
DataManager.CurrenRoom.self_player.card_list = {} DataManager.CurrenRoom.self_player.card_list = {}
self._state.selectedIndex = 2 self._state.selectedIndex = 2
self._clearingView = nil self._clearingView = nil
print("===============================lingend")
end) end)
end end
self._player_card_info[1]:ShowHuTip() self._player_card_info[1]:ShowHuTip()
@ -798,6 +800,7 @@ function M:__PiaoNiaoTip()
end end
function M:ReloadRoom(bskip) function M:ReloadRoom(bskip)
print("lingmengReloadRoom")
local room = self._room local room = self._room
-- if not room.playing then -- if not room.playing then
-- self._state.selectedIndex = 2 -- self._state.selectedIndex = 2

View File

@ -9,289 +9,289 @@ local M = {}
--- Create a new --- Create a new
function M.new() function M.new()
setmetatable(M, { __index = MJPlayBackView }) setmetatable(M, { __index = MJPlayBackView })
local self = setmetatable({}, { __index = M }) local self = setmetatable({}, { __index = M })
self.class = "PlayBackView" self.class = "PlayBackView"
self:init() self:init()
return self return self
end end
function M:InitView(url) function M:InitView(url)
local room = self._room local room = self._room
UIPackage.AddPackage("extend/majiang/lichuan/ui/Extend_MJ_LiChuan") UIPackage.AddPackage("extend/majiang/lichuan/ui/Extend_MJ_LiChuan")
MJPlayBackView.InitView(self, "ui://Main_Majiang/Main_" .. room.room_config.people_num) MJPlayBackView.InitView(self, "ui://Main_Majiang/Main_" .. room.room_config.people_num)
local _cardbox = self._view:GetChild("cardbox") local _cardbox = self._view:GetChild("cardbox")
--self._view:GetChild("panel_record"):GetChild("btn_LastStep").enabled = false --self._view:GetChild("panel_record"):GetChild("btn_LastStep").enabled = false
self._ctr_cardbox = _cardbox:GetController("c1") self._ctr_cardbox = _cardbox:GetController("c1")
self._tex_round = self._view:GetChild("tex_round") self._tex_round = self._view:GetChild("tex_round")
self._tex_LeftCard = self._view:GetChild("remaining_card") self._tex_LeftCard = self._view:GetChild("remaining_card")
self._anchor = self._view:GetChild("mask_tips") self._anchor = self._view:GetChild("mask_tips")
self._eventmap = {} self._eventmap = {}
self._cmdmap = {} self._cmdmap = {}
self._cmdmap[Record_Event.Evt_GetCard] = self.CmdGetCard self._cmdmap[Record_Event.Evt_GetCard] = self.CmdGetCard
self._cmdmap[Record_Event.Evt_OutCard] = self.CmdOutCard self._cmdmap[Record_Event.Evt_OutCard] = self.CmdOutCard
self._cmdmap[Record_Event.Evt_Action] = self.CmdAction self._cmdmap[Record_Event.Evt_Action] = self.CmdAction
self._cmdmap[Record_Event.Evt_Win] = self.CmdWin self._cmdmap[Record_Event.Evt_Win] = self.CmdWin
self._cmdmap[Record_Event.Evt_Niao] = self.CmdNiao self._cmdmap[Record_Event.Evt_Niao] = self.CmdNiao
self._cmdmap[Record_Event.Evt_Piao] = self.CmdPiao self._cmdmap[Record_Event.Evt_Piao] = self.CmdPiao
self._cmdmap[Record_Event.Evt_Result] = self.CmdResult self._cmdmap[Record_Event.Evt_Result] = self.CmdResult
end end
function M:FillRoomData(data) function M:FillRoomData(data)
MJPlayBackView.FillRoomData(self) MJPlayBackView.FillRoomData(self)
if self._win_pic then self._win_pic:Dispose() end if self._win_pic then self._win_pic:Dispose() end
if self._niao then self._niao:Dispose() end if self._niao then self._niao:Dispose() end
self._currentStep = 0 self._currentStep = 0
local room = DataManager.CurrenRoom local room = DataManager.CurrenRoom
local _player_card_info = self._player_card_info local _player_card_info = self._player_card_info
local left_count = data.info.left_card local left_count = data.info.left_card
self:UpdateLeftCard(left_count) self:UpdateLeftCard(left_count)
local round = data.info.round local round = data.info.round
self:UpdateRound(round) self:UpdateRound(round)
local roominfo_panel = self._view:GetChild("roominfo_panel1") local roominfo_panel = self._view:GetChild("roominfo_panel1")
roominfo_panel:GetChild("tex_roomid").text = room.room_id roominfo_panel:GetChild("tex_roomid").text = room.room_id
roominfo_panel:GetChild("tex_gametype").text = room.room_config:GetGameName() roominfo_panel:GetChild("tex_gametype").text = room.room_config:GetGameName()
for i = 1, #room.player_list do for i = 1, #room.player_list do
local p = room.player_list[i] local p = room.player_list[i]
local card_info = _player_card_info[self:GetPos(p.seat)] local card_info = _player_card_info[self:GetPos(p.seat)]
card_info:Clear() card_info:Clear()
table.sort(p.card_list, ViewUtil.HandCardSort) table.sort(p.card_list, ViewUtil.HandCardSort)
card_info:UpdateHandCard(false, true) card_info:UpdateHandCard(false, true)
self._player_info[i]._view:GetController("piao_niao").selectedIndex = 0 self._player_info[i]._view:GetController("piao_niao").selectedIndex = 0
end end
self:GenerateAllStepData(data) self:GenerateAllStepData(data)
self:UpdateStep(1) self:UpdateStep(1)
-- self:ShowStep(0) -- self:ShowStep(0)
end end
function M:ShowStep(index) function M:ShowStep(index)
local step = self._step[index + 1] local step = self._step[index + 1]
self:UpdateLeftCard(step.left_card) self:UpdateLeftCard(step.left_card)
-- self._ctr_cardbox.selectedIndex = step.current_out_seat -- self._ctr_cardbox.selectedIndex = step.current_out_seat
self:UpdateCardBox(self:GetPos(step.current_out_seat)) self:UpdateCardBox(self:GetPos(step.current_out_seat))
self:UpdateStep(index + 1) self:UpdateStep(index + 1)
if step.cmd ~= Record_Event.Evt_OutCard then if step.cmd ~= Record_Event.Evt_OutCard then
self:RemoveCursor() self:RemoveCursor()
end end
for i = 1, #step.player_card_data do for i = 1, #step.player_card_data do
local p = self._room:GetPlayerBySeat(i) local p = self._room:GetPlayerBySeat(i)
local info = self._player_card_info[self:GetPos(i)] local info = self._player_card_info[self:GetPos(i)]
p.card_list = step.player_card_data[i].card_list p.card_list = step.player_card_data[i].card_list
p.outcard_list = step.player_card_data[i].outcard_list p.outcard_list = step.player_card_data[i].outcard_list
p.fz_list = step.player_card_data[i].fz_list p.fz_list = step.player_card_data[i].fz_list
p.hand_left_count = #p.card_list p.hand_left_count = #p.card_list
info:Clear() info:Clear()
info:ResetFzList() info:ResetFzList()
p.piao_niao = step.player_card_data[i].piao_niao p.piao_niao = step.player_card_data[i].piao_niao
local head_info = self._player_info[self:GetPos(i)] local head_info = self._player_info[self:GetPos(i)]
if p.piao_niao and p.piao_niao > 0 then if p.piao_niao and p.piao_niao > 0 then
head_info._view:GetChild("mask_piao").title = "飘分 " .. p.piao_niao head_info._view:GetChild("mask_piao").title = "飘分 " .. p.piao_niao
head_info._view:GetController("piao_niao").selectedIndex = 1 head_info._view:GetController("piao_niao").selectedIndex = 1
else else
head_info._view:GetController("piao_niao").selectedIndex = 0 head_info._view:GetController("piao_niao").selectedIndex = 0
end end
if step.cmd == Record_Event.Evt_OutCard and i == step.last_out_seat then if step.cmd == Record_Event.Evt_OutCard and i == step.last_out_seat then
local card = p.outcard_list[#p.outcard_list] local card = p.outcard_list[#p.outcard_list]
info:UpdateOutCardList(nil, nil, self._cursor) info:UpdateOutCardList(nil, nil, self._cursor)
else else
info:UpdateOutCardList() info:UpdateOutCardList()
end end
if step.cmd == Record_Event.Evt_GetCard and p.seat == step.current_out_seat then if step.cmd == Record_Event.Evt_GetCard and p.seat == step.current_out_seat then
info:UpdateHandCard(true, true) info:UpdateHandCard(true, true)
else else
info:UpdateHandCard(false, true) info:UpdateHandCard(false, true)
end end
end end
if step.cmd == Record_Event.Evt_Win then if step.cmd == Record_Event.Evt_Win then
self._win_pic = UIPackage.CreateObjectFromURL("ui://Main_Majiang/胡") self._win_pic = UIPackage.CreateObjectFromURL("ui://Main_Majiang/胡")
local info = self._player_card_info[self:GetPos(step.win)] local info = self._player_card_info[self:GetPos(step.win)]
info._mask_liangpai:AddChild(self._win_pic) info._mask_liangpai:AddChild(self._win_pic)
self._win_pic:Center() self._win_pic:Center()
else else
if self._win_pic then if self._win_pic then
self._win_pic:Dispose() self._win_pic:Dispose()
end end
end end
if step.cmd == Record_Event.Evt_Niao then if step.cmd == Record_Event.Evt_Niao then
local niao_list = step.niao local niao_list = step.niao
self._niao = UIPackage.CreateObjectFromURL("ui://Extend_MJ_LiChuan/Panel_Birds") self._niao = UIPackage.CreateObjectFromURL("ui://Extend_MJ_LiChuan/Panel_Birds")
local list = self._niao:GetChild("Lst_birds") local list = self._niao:GetChild("Lst_birds")
list:RemoveChildrenToPool() list:RemoveChildrenToPool()
for i = 1, #niao_list do for i = 1, #niao_list do
local item = list:AddItemFromPool() local item = list:AddItemFromPool()
item.icon = UIPackage.GetItemURL("Main_Majiang", "201_" .. niao_list[i].card) item.icon = UIPackage.GetItemURL("Main_Majiang", "201_" .. niao_list[i].card)
if niao_list[i].score > 0 then if niao_list[i].score > 0 then
item:GetController("bg").selectedIndex = 2 item:GetController("bg").selectedIndex = 2
end end
end end
self._view:AddChild(self._niao) self._view:AddChild(self._niao)
self._view:AddChild(self._view:GetChild("panel_record")) self._view:AddChild(self._view:GetChild("panel_record"))
self._niao:Center() self._niao:Center()
else else
if self._niao then if self._niao then
self._niao:Dispose() self._niao:Dispose()
end end
end end
if step.cmd == Record_Event.Evt_Result then if step.cmd == Record_Event.Evt_Result then
if not self.result then if not self.result then
self.result = EXClearingView.new(self._root_view, true) self.result = EXClearingView.new(self._root_view, true)
self.result:InitData(0, self._room, step.result_data) self.result:InitData(0, self._room, step.result_data)
self.result._view.x = (GRoot.inst.width - self.result._view.width) * -0.5 self.result._view.x = (GRoot.inst.width - self.result._view.width) * -0.5
self.result._view.width = GRoot.inst.width self.result._view.width = GRoot.inst.width
self.result._view.height = GRoot.inst.height self.result._view.height = GRoot.inst.height
self.result._view:GetChild("btn_confirm").visible = false self.result._view:GetChild("btn_confirm").visible = false
self._anchor:AddChild(self.result._view) self._anchor:AddChild(self.result._view)
self.result._view.x = self._anchor.x * -1 self.result._view.x = self._anchor.x * -1
self.result._view.y = self._anchor.y * -1 self.result._view.y = self._anchor.y * -1
else else
self.result._view.visible = true self.result._view.visible = true
end end
-- self.result._view:Center() -- self.result._view:Center()
else else
if self.result then if self.result then
self.result._view.visible = false self.result._view.visible = false
end end
end end
end end
function M:GenerateAllStepData(data) function M:GenerateAllStepData(data)
local cmdList = self.cmdList local cmdList = self.cmdList
self._step = {} self._step = {}
local step = {} local step = {}
local info = data.info local info = data.info
step.cmd = "" step.cmd = ""
step.left_card = info.left_card step.left_card = info.left_card
step.last_out_seat = 0 step.last_out_seat = 0
step.current_out_seat = 1 step.current_out_seat = 1
step.win = 0 step.win = 0
step.niao = 0 step.niao = 0
step.player_card_data = {} step.player_card_data = {}
for i = 1, #self._room.player_list do for i = 1, #self._room.player_list do
local p = info.playerData[i] local p = info.playerData[i]
local u = {} local u = {}
u.seat = p.seat u.seat = p.seat
u.card_list = p.hand_card u.card_list = p.hand_card
u.hand_left_count = #u.card_list u.hand_left_count = #u.card_list
u.fz_list = {} u.fz_list = {}
u.outcard_list = {} u.outcard_list = {}
u.piao_niao = p.piao_niao u.piao_niao = p.piao_niao
step.player_card_data[u.seat] = u step.player_card_data[u.seat] = u
end end
self._step[#self._step + 1] = step self._step[#self._step + 1] = step
for i = 1, #cmdList do for i = 1, #cmdList do
local tem = cmdList[i] local tem = cmdList[i]
self._cmdmap[tem.cmd](self, tem, i) self._cmdmap[tem.cmd](self, tem, i)
end end
end end
function M:CmdGetCard(cmd, index) function M:CmdGetCard(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.current_out_seat = cmd.seat data.current_out_seat = cmd.seat
data.left_card = cmd.data.left_count data.left_card = cmd.data.left_count
local u = data.player_card_data[cmd.seat] local u = data.player_card_data[cmd.seat]
u.card_list[#u.card_list + 1] = cmd.data.card u.card_list[#u.card_list + 1] = cmd.data.card
end end
function M:CmdOutCard(cmd, index) function M:CmdOutCard(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.last_out_seat = cmd.seat data.last_out_seat = cmd.seat
local u = data.player_card_data[cmd.seat] local u = data.player_card_data[cmd.seat]
list_remove(u.card_list, cmd.data.card) list_remove(u.card_list, cmd.data.card)
table.sort(u.card_list, ViewUtil.HandCardSort) table.sort(u.card_list, ViewUtil.HandCardSort)
u.outcard_list[#u.outcard_list + 1] = cmd.data.card u.outcard_list[#u.outcard_list + 1] = cmd.data.card
end end
function M:CmdAction(cmd, index) function M:CmdAction(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.last_out_seat = 0 data.last_out_seat = 0
data.current_out_seat = cmd.seat data.current_out_seat = cmd.seat
local u = data.player_card_data[cmd.seat] local u = data.player_card_data[cmd.seat]
for i = 1, #cmd.data.opcard do for i = 1, #cmd.data.opcard do
list_remove(u.card_list, cmd.data.opcard[i]) list_remove(u.card_list, cmd.data.opcard[i])
end end
local fz = {} local fz = {}
fz.type = cmd.data.type fz.type = cmd.data.type
fz.card = cmd.data.card fz.card = cmd.data.card
fz.opcard = cmd.data.opcard fz.opcard = cmd.data.opcard
local uf = data.player_card_data[cmd.data.from_seat] local uf = data.player_card_data[cmd.data.from_seat]
if fz.type ~= FZType.Gang_An and fz.type ~= FZType.Gang_Peng then if fz.type ~= FZType.Gang_An and fz.type ~= FZType.Gang_Peng then
table.remove(uf.outcard_list, #uf.outcard_list) table.remove(uf.outcard_list, #uf.outcard_list)
end end
if fz.type ~= FZType.Gang_Peng then if fz.type ~= FZType.Gang_Peng then
u.fz_list[#u.fz_list + 1] = fz u.fz_list[#u.fz_list + 1] = fz
else else
for i = 1, #u.fz_list do for i = 1, #u.fz_list do
if u.fz_list[i].type == FZType.Peng and u.fz_list[i].card == fz.card then if u.fz_list[i].type == FZType.Peng and u.fz_list[i].card == fz.card then
u.fz_list[i].type = FZType.Gang_Peng u.fz_list[i].type = FZType.Gang_Peng
end end
end end
end end
end end
function M:CmdWin(cmd, index) function M:CmdWin(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.win = cmd.seat data.win = cmd.seat
end end
function M:CmdNiao(cmd, index) function M:CmdNiao(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.niao = cmd.data.niao data.niao = cmd.data.niao
end end
function M:CmdPiao(cmd, index) function M:CmdPiao(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.player_card_data[cmd.seat].piao_niao = cmd.data.num data.player_card_data[cmd.seat].piao_niao = cmd.data.num
end end
function M:CmdResult(cmd, index) function M:CmdResult(cmd, index)
local data = self:CopyLastStep(index) local data = self:CopyLastStep(index)
data.cmd = cmd.cmd data.cmd = cmd.cmd
data.result_data = cmd.data data.result_data = cmd.data
end end
function M:CopyLastStep(index) function M:CopyLastStep(index)
local step = {} local step = {}
local last_step = self._step[index] local last_step = self._step[index]
step = membe_deep_clone(last_step) step = membe_deep_clone(last_step)
self._step[#self._step + 1] = step self._step[#self._step + 1] = step
step.result_data = nil step.result_data = nil
return step return step
end end
function M:UpdateLeftCard(num) function M:UpdateLeftCard(num)
self._tex_LeftCard.text = "剩余 " .. num .. " 张牌" self._tex_LeftCard.text = "剩余 " .. num .. " 张牌"
end end
function M:UpdateCardBox(seat) function M:UpdateCardBox(seat)
local index = seat local index = seat
local people_num = self._room.room_config.people_num local people_num = self._room.room_config.people_num
if people_num == 2 and seat == 2 then if people_num == 2 and seat == 2 then
index = 3 index = 3
elseif people_num == 3 and seat == 3 then elseif people_num == 3 and seat == 3 then
index = 4 index = 4
end end
self._ctr_cardbox.selectedIndex = index self._ctr_cardbox.selectedIndex = index
end end
function M:UpdateRound(round) function M:UpdateRound(round)
self._tex_round.text = "" .. round .. "/" .. self._room.room_config.round .. "" self._tex_round.text = "" .. round .. "/" .. self._room.room_config.round .. ""
end end
function M:UpdateStep(step) function M:UpdateStep(step)
self._record:GetChild("tex_step").text = "" .. step .. " / " .. #self._step .. "" self._record:GetChild("tex_step").text = "" .. step .. " / " .. #self._step .. ""
end end
return M return M

View File

@ -80,9 +80,9 @@ function M:Clear()
self._area_handcard_list:RemoveChildren(0, -1, true) self._area_handcard_list:RemoveChildren(0, -1, true)
self._area_outcard_list:RemoveChildren(0, -1, true) self._area_outcard_list:RemoveChildren(0, -1, true)
self._mask_liangpai:RemoveChildren(0, -1, true) self._mask_liangpai:RemoveChildren(0, -1, true)
self._view_handCardList:RemoveChildrenToPool() self._view_handCardList:RemoveChildren(0, -1, true)
self._view_outCardList:RemoveChildrenToPool() self._view_outCardList:RemoveChildren(0, -1, true)
self._view_FZList:RemoveChildrenToPool() self._view_FZList:RemoveChildren(0, -1, true)
end end
-- 获取麻将资源前缀 -- 获取麻将资源前缀

View File

@ -400,9 +400,9 @@ function M:Clear(bskip)
self._area_fz_list:RemoveChildren(0, -1, true) self._area_fz_list:RemoveChildren(0, -1, true)
self._area_handcard_list:RemoveChildren(0, -1, true) self._area_handcard_list:RemoveChildren(0, -1, true)
self._area_outcard_list:RemoveChildren(0, -1, true) self._area_outcard_list:RemoveChildren(0, -1, true)
self._view_handCardList:RemoveChildrenToPool() self._view_handCardList:RemoveChildren(0, -1, true)
self._view_outCardList:RemoveChildrenToPool() self._view_outCardList:RemoveChildren(0, -1, true)
self._view_FZList:RemoveChildrenToPool() self._view_FZList:RemoveChildren(0, -1, true)
self._view_handCardList.selectedIndex = -1 self._view_handCardList.selectedIndex = -1
self._click_index = self._view_handCardList.selectedIndex self._click_index = self._view_handCardList.selectedIndex