local EXTEND_MODEL_NAME = ... local EXGameInfo = import(".EXGameInfo") local EXMainView = import(".EXMainView") local EXGameController = import(".EXGameController") local EXRoomConfig = import(".EXRoomConfig") local EXPlayBackView = import(".EXPlayBackView") local EXWitnessView = import(".EXWitnessView") local MJRoom = require("main.majiang.MJRoom") local ExtendConfig = {} local M = ExtendConfig function ExtendConfig.new() setmetatable(M, { __index = IExtendConfig }) local self = setmetatable({}, { __index = M }) self.class = "ExtendConfig" self.extend_id = 33 self._viewMap = {} self._viewMap[ViewManager.View_Main] = EXMainView self._viewMap[ViewManager.View_PlayBack] = EXPlayBackView self._viewMap[ViewManager.View_Witness] = EXWitnessView return self end --卸载资源 function M:UnAllAssets() UIPackage.RemovePackage("extend/majiang/lichuan/ui/Info_MJ_LiChuan") self:UnAssets() end --卸载资源 function M:UnAssets() UIPackage.RemovePackage("extend/majiang/lichuan/ui/Extend_MJ_LiChuan") ResourcesManager.UnLoadGroup("LiChuan_MJ") end local _gameInfo = nil function M:GetGameInfo() if not _gameInfo then _gameInfo = EXGameInfo.new() end return _gameInfo end local _ctr_game = nil function M:GetGameController() if _ctr_game == nil then _ctr_game = EXGameController.new() end return _ctr_game end function M:NewRoom() return MJRoom.new() end function M:FillRoomConfig(room, _config) room.room_config = EXRoomConfig.new(_config) end function M:FillRoomData(s2croom) local room = DataManager.CurrenRoom local reload = s2croom["reload"] local _tableInfo = s2croom["tableInfo"] local _config = _tableInfo["config"] pt(_config) room.room_config = EXRoomConfig.new(_config) local playerList = _tableInfo["playerData"] room.curren_round = _tableInfo["round"] room.witness_player_list = _tableInfo["playerSpectatorData"] room._flag_updateWitness = true self:FillPlayerData(playerList) if (reload) then local _reloadInfo = s2croom["reloadInfo"] local active_seat = _reloadInfo["active_seat"] local bank_seat = _reloadInfo["banker_seat"] local playing = _reloadInfo["playing"] local _info_list = _reloadInfo["info_list"] local last_outcard_seat = _reloadInfo["last_outcard_seat"] local jing = _reloadInfo["jing"] room.left_count = _reloadInfo["left_card"] room.banker_seat = bank_seat room.curren_outcard_seat = _reloadInfo["curren_outcard_seat"] room.last_outcard_seat = last_outcard_seat room.playing = playing room.reload = reload if jing then room.jing = jing end --将排序放在精牌后面 local _hand_card = _reloadInfo["hand_card"] room.self_player.card_list = _hand_card table.sort(_hand_card, self.HandCardSortAndJing) for i = 1, #_info_list do local tem = _info_list[i] local playerid = tem["playerid"] local p = room:GetPlayerById(playerid) local outcard_list = tem["outcard_list"] p.outcard_list = outcard_list p.total_score = tem["score"] p.hand_left_count = tem["card_count"] p.piao_niao = tem["piao_niao"] or 0 local opcard = tem["opcard"] for k = 1, #opcard do local op = opcard[k] local fz = {} fz.type = op["type"] fz.card = op["card"] fz.from_seat = op["from_seat"] p.fz_list[#p.fz_list + 1] = fz end if not playing and room.curren_round > 0 then -- self.GetGameController():PlayerReady() end end end end function M:FillPlayBackData(pd_data) local room = DataManager.CurrenRoom local _tableInfo = pd_data["info"] local _config = _tableInfo["config"] room.room_id = _tableInfo.roomid room.room_config = EXRoomConfig.new(_config) room.owner_id = _config["ownerid"] local active_seat = _tableInfo["active_seat"] local bank_seat = _tableInfo["banker_seat"] room.left_count = _tableInfo["left_card"] room.banker_seat = bank_seat room.curren_turn_seat = active_seat room.curren_round = _tableInfo["round"] local _info_list = _tableInfo["playerData"] local jing = _tableInfo["jing"] if jing then room.jing = jing end for i = 1, #_info_list do local _jp = _info_list[i] local p = room:NewPlayer() p.seat = _jp["seat"] local online = _jp["online"] p.line_state = online p.ready = _jp["ready"] == 1 and true or false local pid = _jp["aid"] p.piao_niao = _jp["piao_niao"] -- -- print(DataManager.SelfUser.account_id,pid) -- if (278 == pid) then -- room.self_player = p -- p.self_user = DataManager.SelfUser -- else if p.seat == 1 then room.self_player = p end local u = User.new() u.account_id = pid p.self_user = u u.nick_name = _jp["nick"] u.head_url = _jp["portrait"] u.sex = _jp["sex"] -- end p.self_user.host_ip = p.self_user.host_ip local _hand_card = _jp["hand_card"] p.card_list = _hand_card --room.self_player.card_list = _hand_card table.sort(_hand_card, self.HandCardSortAndJing) p.total_score = _jp["score"] p.hand_left_count = #_hand_card if _jp.hp_info then room.room_config.isNonnegative = 1 p.cur_hp = _jp.hp_info.cur_hp end room:AddPlayer(p) end room.cmdList = pd_data["cmdList"] end function M:FillWitnessData(pd_data) print("==========================FillWitnessData1") local room = DataManager.CurrenRoom pt(room) -- room.self_player = local _tableInfo = pd_data["tableInfo"] local _config = _tableInfo["config"] room.room_id = _tableInfo.roomid room.room_config = EXRoomConfig.new(_config) room.owner_id = _config["ownerid"] local active_seat = _tableInfo["active_seat"] local bank_seat = _tableInfo["banker_seat"] room.left_count = _tableInfo["left_card"] room.banker_seat = bank_seat room.curren_turn_seat = active_seat room.curren_round = _tableInfo["round"] room.witness_player_list = _tableInfo["playerSpectatorData"] local jing = _tableInfo["jing"] if jing then room.jing = jing end local _info_list = _tableInfo["playerData"] for i = 1, #_info_list do local _jp = _info_list[i] local p = room:NewPlayer() p.seat = _jp["seat"] local online = _jp["online"] p.line_state = online p.ready = _jp["ready"] == 1 and true or false local pid = _jp["aid"] p.piao_niao = _jp["piao_niao"] -- -- print(DataManager.SelfUser.account_id,pid) -- if (278 == pid) then -- room.self_player = p -- p.self_user = DataManager.SelfUser -- else if p.seat == 1 then room.self_player = p end local u = User.new() u.account_id = pid p.self_user = u u.nick_name = _jp["nick"] u.head_url = _jp["portrait"] u.sex = _jp["sex"] -- end p.self_user.host_ip = p.self_user.host_ip local _hand_card = {} p.hand_left_count = _jp["card_count"] p.card_list = _hand_card --room.self_player.card_list = _hand_card -- table.sort(_hand_card, self.HandCardSortAndJing) p.total_score = _jp["score"] p.outcard_list = _jp["outcard_list"] local opcard = _jp["opcard"] for k = 1, #opcard do local op = opcard[k] local fz = {} fz.type = op["type"] fz.card = op["card"] fz.from_seat = op["from_seat"] p.fz_list[#p.fz_list + 1] = fz end -- if _jp.hp_info then -- room.room_config.isNonnegative = 1 -- p.cur_hp = _jp.hp_info.cur_hp -- end room:AddPlayer(p) end 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