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 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 = BaseView }) 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() end function M:InitView(url) local room = self._room UIPackage.AddPackage("extend/majiang/lichuan/ui/Extend_MJ_LiChuan") 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: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 ------------------------------------------------------- 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(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") 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)] playerInfo.hand_left_count = info.hand_left_count + 1 local info = self._player_card_info[self:GetPos(seat)] 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("LiChuan_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") end) _gamectr:AddEventListener(TX_GameEvent.ZPResult2, function(...) print("lingmeng witness ZPResult2") 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(...) self:__CloseTip() 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 local effect = UIPackage.CreateObject("Extend_MJ_LiChuan", "FzEffect") if fz.type == FZType.Peng then self:PlaySound("LiChuan_MJ", player.self_user.sex, "peng" .. math.random(1, 3)) effect:GetChild("word1").icon = UIPackage.GetItemURL("Main_Majiang", "碰") effect:GetChild("word2").icon = UIPackage.GetItemURL("Main_Majiang", "碰") -- effect:GetChild("kuang").icon = UIPackage.GetItemURL("Main_Majiang", "碰框") elseif fz.type == FZType.Chi then self:PlaySound("LiChuan_MJ", player.self_user.sex, "chi" .. math.random(1, 3)) effect:GetChild("word1").icon = UIPackage.GetItemURL("Main_Majiang", "吃") effect:GetChild("word2").icon = UIPackage.GetItemURL("Main_Majiang", "吃") else self:PlaySound("LiChuan_MJ", player.self_user.sex, "gang" .. math.random(1, 2)) effect:GetChild("word1").icon = UIPackage.GetItemURL("Main_Majiang", "杠") effect:GetChild("word2").icon = UIPackage.GetItemURL("Main_Majiang", "杠") -- effect:GetChild("kuang").icon = UIPackage.GetItemURL("Main_Majiang", "杠框") end effect.touchable = false effect:GetTransition("t2"):Play() -- pNode:AddChild(effect) coroutine.start(function() coroutine.wait(0.3) self._popEvent = true end) coroutine.start(function() coroutine.wait(2) effect:Dispose() end) self:RemoveCursor() if (player.seat ~= fz.from_seat) then local fs_info = _player_card_info[self:GetPos(fz.from_seat)] fs_info:UpdateOutCardList() end info:UpdateFzList(fz, index, true) local getcard = fz.type == FZType.Peng or fz.type == FZType.Chi printlog(getcard) info:UpdateHandCard(getcard) self:__CloseTip() end function M:OnUpdate() if (self._popEvent) then local func = self._gamectr:PopEvent() if (func ~= nil) then if pcall(func) then else print("错误报错,不准重连") -- self._gamectr = ControllerManager.GetController(GameController) -- if self._gamectr then -- self._gamectr:ResetConnect() -- end end --func() end end 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