hengyang_client/lua_probject/extend_project/extend/majiang/nancheng/EXWitnessView.lua

479 lines
16 KiB
Lua

local EXRoomConfig = import(".EXRoomConfig")
local EXClearingView = import(".EXClearingView")
local TX_GameEvent = import(".GameEvent")
local PlayerInfoView = import(".EXPlayerInfoView")
local MJPlayerSelfCardInfoView = import(".MJPlayerSelfCardInfoView")
local MJPlayerCardInfoView = require("main.majiang.MJPlayerCardInfoView")
local TableBG = require("Game.Data.TableBG")
local WitnessView = require("extend.Common.WitnessView")
local Record_Event = import(".RecordEvent")
local bg_config = {
{ id = 1, url = "base/main_majiang/bg/bg1", thumb = "ui://Main_Majiang/b01" },
{ id = 2, url = "base/main_majiang/bg/bg2", thumb = "ui://Main_Majiang/b02" },
{ id = 3, url = "base/main_majiang/bg/bg3", thumb = "ui://Main_Majiang/b03" }
}
local M = {}
--- Create a new
function M.new()
setmetatable(M, { __index = WitnessView })
local self = setmetatable({}, { __index = M })
self.class = "EXMJWitness"
self:init()
return self
end
function M:init()
self._gamectr = ControllerManager.GetController(GameController)
self._room = DataManager.CurrenRoom
self._room.Witness = true
UIPackage.AddPackage('base/chat/ui/Chat')
UIPackage.AddPackage("base/main_majiang/ui/Main_Majiang")
self._eventmap = {}
-- self._full = true
self._put_map = false
self._new_hide = false
self._queue = false
self._style = 1
self._popEvent = true
self:InitView()
WitnessView.init(self)
end
function M:InitView(url)
local room = self._room
UIPackage.AddPackage("extend/majiang/nancheng/ui/Extend_MJ_NanCheng")
BaseView.InitView(self, string.format("ui://Main_Majiang/Main_new_%d_jiangxi", room.room_config.people_num))
self:EventInit()
UpdateBeat:Add(self.OnUpdate, self)
local centerBox = self._view:GetChild("Comp_ConterBox")
self._ctr_cardbox = centerBox:GetController("seat")
self._tex_leftTime = centerBox:GetChild("Text_Time")
self._tex_round = self._view:GetChild("tex_round")
self._tex_LeftCard = self._view:GetChild("remaining_card")
self._anchor = self._view:GetChild("mask_tips")
------------------渲染桌面信息--------------------------
local use_custom_bg = true
local default_bg = 1
if use_custom_bg then
TableBG.LoadTableBG(default_bg, self._room.game_id, self._root_view, bg_config)
end
local config = ExtendManager.GetExtendConfig(room.game_id)
local mode = config:GetGameInfo()
local gamePlay = mode:LoadConfigToDetail(json.encode(room.room_config.config))
self._view:GetChild('text_time').text = os.date("%H:%M", os.time())
self._view:GetChild('text_roomId').text = room.room_id
self._view:GetChild('wanfa_text').text = gamePlay
self._ctr_state = self._view:GetController("state")
self._text_remined = self._view:GetChild('remaining_card')
self._text_round = self._view:GetChild('text_round')
self._cursor = UIPackage.CreateObjectFromURL("ui://Main_Majiang/Ani_play_bj")
self:UpdateRound()
self:InitPlayerInfoView()
self._player_card_info = {}
local _player_card_info = self._player_card_info
for i = 1, #room.player_list do
local p = room.player_list[i]
local index = self:GetPos(p.seat)
print("lingmeng index", index)
local info = self._player_info[index]
local tem = self._view:GetChild("player_card_info" .. index)
_player_card_info[index] = self:NewMJPlayerCardInfoView(tem, index)
local cardInfo = _player_card_info[index]
cardInfo:SetPlayer(p)
cardInfo:UpdateHandCardWitness(false)
cardInfo:UpdateOutCardList(nil, nil, self._cursor)
for i = 1, #p.fz_list do
cardInfo:UpdateFzList(p.fz_list[i], -1)
end
info:FillData(p)
info._view.visible = true
end
-------------按钮初始化------------------------------
local changeTable = self._view:GetChild('btn_change')
if changeTable then
changeTable.onClick:Set(function()
default_bg = default_bg + 1 > #bg_config and 1 or default_bg + 1
TableBG.LoadTableBG(default_bg, self._room.game_id, self._root_view, bg_config)
end)
end
local btn_rule = self._view:GetChild('btn_rule')
if btn_rule ~= nil then
btn_rule.onClick:Set(function()
if self.RuleView == nil or self.RuleView._is_destroy then
self.RuleView = RoomInfoView.new(self._room)
end
self.RuleView:Show()
end)
end
local btn_exit = self._view:GetChild('btn_exitWitness')
if btn_exit ~= nil then
btn_exit.onClick:Set(function()
self._gamectr:ExitWitnessGame()
ViewManager.ChangeView(ViewManager.View_Family)
end)
end
-------------------------------------------------------
self._ctr_state.selectedIndex = 4
end
function M:EventInit()
-- UIPackage.AddPackage("extend/majiang/hongzhong/ui/Extend_MJ_HongZhong")
MainView.EventInit(self)
local _room = self._room
local _view = self._view
local _gcm_outcard_url = UIPackage.GetItemURL("Main_Majiang", "Gcm_OutCard")
local _player_info = self._player_info
local _gamectr = self._gamectr
_gamectr:AddEventListener(GameEvent.PlayerEnter, function(...)
local arg = { ... }
print("lingmeng witness PlayerEnter")
end)
_gamectr:AddEventListener(TX_GameEvent.SendLaiZi, function(...)
local arg = { ... }
print("lingmeng witness SendLaiZi")
end)
_gamectr:AddEventListener(TX_GameEvent.SendGangZi, function(...)
local arg = { ... }
print("lingmeng witness SendGangZi")
end)
_gamectr:AddEventListener(TX_GameEvent.EventBuGang, function(...)
local arg = { ... }
print("lingmeng witness EventBuGang")
end)
_gamectr:AddEventListener(TX_GameEvent.SendCards, function(...)
print("lingmeng witness SendCards")
-- self:ShowJing()
if self._clearingView then
self._clearingView:Destroy()
self._clearingView = nil
end
self:UpdateRound()
self._ctr_state.selectedIndex = 4
local list = _room.player_list
for i = 1, #list do
local p = list[i]
local info = self._player_info[self:GetPos(p.seat)]
info:FillData(p)
info:MarkBank(p.seat == _room.banker_seat)
info:Ready(false)
local card_info = self._player_card_info[self:GetPos(p.seat)]
card_info:UpdateHandCardWitness()
end
end)
_gamectr:AddEventListener(TX_GameEvent.EventTurn, function(...)
print("lingmeng witness EventTurn")
local arg = { ... }
self._left_time = 15
local seat = arg[1]
self:UpdateCardBox(self:GetPos(seat))
local playerInfo = self._player_info[self:GetPos(seat)]
local info = self._player_card_info[self:GetPos(seat)]
print("lingmeng hand_left_count", info._player.hand_left_count)
info._player.hand_left_count = info._player.hand_left_count + 1
info:UpdateHandCardWitness(true)
end)
_gamectr:AddEventListener(TX_GameEvent.OutHint, function(...)
print("lingmeng witness OutHint")
end)
local _gcm_outcard_url = "ui://Main_Majiang/Gcm_OutCard"
_gamectr:AddEventListener(TX_GameEvent.OutCard, function(...)
print("lingmeng witness OutCard")
self._left_time = 0
local arg = { ... }
local p = arg[1]
local card = arg[2]
local seat = p.seat
local info = self._player_card_info[self:GetPos(seat)]
print("lingmeng witness OutCard1", self:GetPos(seat), info)
self:RemoveCursor()
print("lingmeng witness OutCard1-2")
info:UpdateHandCardWitness(false)
print("lingmeng witness OutCard2")
info:UpdateOutCardList(nil, nil, self._cursor)
print("ling 2zhihouq")
self:PlaySound("NanCheng_MJ", p.self_user.sex, tostring(card))
self:PlayMJSound("chupai.mp3")
print("ling 2zhihou")
if seat == _room.self_player.seat then
_room.curren_outcard_seat = -1
end
print("ling 2zhihou2")
end)
_gamectr:AddEventListener(TX_GameEvent.GetCard, function(...)
print("lingmeng witness GetCard")
end)
_gamectr:AddEventListener(TX_GameEvent.FZTips, function(...)
print("lingmeng witness FZTips")
end)
_gamectr:AddEventListener(TX_GameEvent.FangziAction, handler(self, self.OnFangziAction))
_gamectr:AddEventListener(TX_GameEvent.ZPHuCard, function(...)
print("lingmeng witness ZPHuCard")
end)
_gamectr:AddEventListener(TX_GameEvent.EventNiao, function(...)
print("lingmeng witness EventNiao")
end)
_gamectr:AddEventListener(TX_GameEvent.ZPResult1, function(...)
print("lingmeng witness ZPResult1")
self._popEvent = false
self._left_time = 0
self:UpdateCardBox(0)
self._ctr_cardbox.selectedIndex = 0
local arg = { ... }
self:ShowHand(arg)
local result = arg[1]
local liuju = result.liuju
local data = result.info_list
local niao = result.niao
-- if liuju then
-- local le = UIPackage.CreateObjectFromURL("ui://Main_Majiang/LiuJu")
-- self._view:AddChild(le)
-- le:Center()
-- le:GetTransition("t0"):Play()
-- coroutine.start(function()
-- coroutine.wait(1)
-- le:Dispose()
-- end)
-- end
self:RemoveCursor()
if self._clearingView == nil then
self._clearingView = EXClearingView.new(self._root_view)
self._clearingView._root_view:GetChild("win_mode").visible = false
coroutine.start(function()
coroutine.wait(0.5)
self._clearingView:Show()
self._popEvent = true
end)
end
print("lingmeng witness ZPResult2")
if _room.curren_round ~= _room.room_config.round then
-- if #niao == 0 then self._view:GetChild("n13").visible = false end
for i = 1, #data do
local p = _room:GetPlayerBySeat(data[i].seat)
if p then
p.total_score = data[i].total_score
local card_info = self._player_card_info[self:GetPos(p.seat)]
local info = self._player_info[self:GetPos(p.seat)]
card_info:Clear()
card_info:ResetCardType()
if _room:checkHpNonnegative() then
p.cur_hp = data[i].hp_info.cur_hp
end
-- info:UpdateScore()
info._view:GetChild("zhanji").visible = true
local num = data[i].hp_info.total_hp
if num >= 0 then
info._view:GetController("text_color").selectedIndex = 0
info._view:GetChild("text_jifen").text = "+" .. d2ad(num)
else
info._view:GetController("text_color").selectedIndex = 1
info._view:GetChild("text_jifen").text = d2ad(num)
end
info._view:GetChild("mask_piao").title = ""
info._view:GetController("piao_niao").selectedIndex = 0
p.fz_list = {}
end
end
self._clearingView:InitData(0, _room, result, nil, function(...)
DataManager.CurrenRoom.self_player.card_list = {}
self._ctr_state.selectedIndex = 2
self._clearingView = nil
end, 1)
end
print("lingmeng witness ZPResult3")
-- self._player_card_info[1]:ShowHuTip()
end)
_gamectr:AddEventListener(TX_GameEvent.ZPResult2, function(...)
print("lingmeng witness ZPResult2")
-- self:UnmarkSelfTuoguan()
self._left_time = 0
self:UpdateCardBox(0)
self._ctr_cardbox.selectedIndex = 0
local arg = { ... }
local total_result = arg[2]
local result = arg[1]
local over = arg[3]
self._clearingView = EXClearingView.new()
coroutine.start(function()
coroutine.wait(0.5)
self._clearingView:Show()
end)
self._clearingView:InitData(over, _room, result, total_result)
ControllerManager.ChangeController(LoddyController)
end)
_gamectr:AddEventListener(TX_GameEvent.EvnetPiaoTip, function()
print("lingmeng witness EvnetPiaoTip")
end)
_gamectr:AddEventListener(TX_GameEvent.EvnetPiao, function(...)
print("lingmeng witness EvnetPiao")
end)
_gamectr:AddEventListener(TX_GameEvent.EventResidueCard, function(...)
print("lingmeng witness EventResidueCard")
end)
end
function M:InitPlayerInfoView()
self._player_info = {}
local _player_info = self._player_info
for i = 1, self._room.room_config.people_num do
local tem = self._view:GetChild(string.format("player_info%d_2", i))
_player_info[i] = PlayerInfoView.new(tem, self)
tem.visible = false
end
end
function M:NewMJPlayerCardInfoView(view, index)
if index == 1 then
return MJPlayerSelfCardInfoView.new(view, self)
end
return MJPlayerCardInfoView.new(view, self)
end
function M:RemoveCursor()
self._cursor:RemoveFromParent()
end
function M:UpdateCardBox(seat)
local index = seat - 1
local people_num = self._room.room_config.people_num
if people_num == 2 and seat == 2 then
index = 2
end
self._ctr_cardbox.selectedIndex = index
end
function M:OnFangziAction(...)
print("lingmeng OnFangziAction")
-- self:__CloseTip()
print("lingmeng OnFangziAction1")
local arg = { ... }
local _player_card_info = self._player_card_info
local fz = arg[1]
local player = arg[2]
local index = arg[3]
printlog("OnFangziAction")
local info = _player_card_info[self:GetPos(player.seat)]
-- local pNode = info._mask_liangpai
self:RemoveCursor()
if (player.seat ~= fz.from_seat) then
local fs_info = _player_card_info[self:GetPos(fz.from_seat)]
fs_info:UpdateOutCardList()
end
print("lingmeng OnFangziAction5")
info:UpdateFzList(fz, index, true)
local getcard = fz.type == FZType.Peng or fz.type == FZType.Chi
printlog(getcard)
print("lingmeng hand_left_count", info._player.hand_left_count)
info._player.hand_left_count = info._player.hand_left_count - 1
info:UpdateHandCardWitness(true)
-- self:__CloseTip()
end
function M:UpdateRound()
self._view:GetChild("text_round").text = string.format("当前局数:%d/%d", self._room.curren_round,
self._room.room_config.round)
end
function M:OnUpdate()
if (self._popEvent) then
local func = self._gamectr:PopEvent()
if (func ~= nil) then
local success, result = pcall(func)
if success then
else
print("witness error")
print(result)
-- self._gamectr = ControllerManager.GetController(GameController)
-- if self._gamectr then
-- self._gamectr:ResetConnect()
-- end
end
--func()
end
end
end
function M:ResetConnect()
end
function M:GetPos(seat)
return ViewUtil.GetPos(self._room.self_player.seat, seat, self._room.room_config.people_num)
end
function M.HandCardSortAndJing(a, b)
local jing = DataManager.CurrenRoom.jing
if a == jing or b == jing then
if a == b then
return a < b
end
return a == jing
else
if a < 200 then
a = a + 1000
elseif a < 300 then
a = a + 3000
elseif a < 400 then
a = a + 2000
else
a = a + 4000
end
if b < 200 then
b = b + 1000
elseif b < 300 then
b = b + 3000
elseif b < 400 then
b = b + 2000
else
b = b + 4000
end
return a < b
end
end
return M