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 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._viewMap = {} self._viewMap[ViewManager.View_Main] = EXMainView self._viewMap[ViewManager.View_PlayBack] = EXPlayBackView return self end --卸载资源 function M:UnAllAssets() UIPackage.RemovePackage("extend/majiang/changsha/ui/Info_MJ_ChangSha") self:UnAssets() end --卸载资源 function M:UnAssets() UIPackage.RemovePackage("extend/majiang/changsha/ui/Extend_MJ_ChangSha") ResourcesManager.UnLoadGroup("ChangSha_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"] room.room_config = EXRoomConfig.new(_config) local playerList = _tableInfo["playerData"] room.curren_round = _tableInfo["round"] if room.curren_round == 0 and reload then room.curren_round = 1 end self:FillPlayerData(playerList) if (reload) then local _reloadInfo = s2croom["reloadInfo"] local _hand_card = _reloadInfo["hand_card"] room.self_player.card_list = _hand_card table.sort(_hand_card, ViewUtil.HandCardSort) 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"] room.left_count = _reloadInfo["left_card"] room.banker_seat = bank_seat room.curren_outcard_seat = _reloadInfo["curren_outcard_seat"] room.active_seat = _reloadInfo["active_seat"] room.last_outcard_seat = last_outcard_seat room.playing = playing local _ok_list = _reloadInfo["okinfo"] if _ok_list then room.kg_card = _ok_list.cardList end for i=1,#_info_list do local tem = _info_list[i] local playerid = tem["playerid"] local auto_play = tem["auto"] 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.auto_play = auto_play if auto_play then p.draw_card = tem["draw_card"] end p.ting = tem["ting"] p.win_count = tem["win_count"] p.piao_niao = tem["piao_niao"] or 0 -- p.entrust = tem["entrust"] or false local opcard = tem["opcard"] for k=1,#opcard do local op = opcard[k] local fz = {} fz.type = op["type"] fz.card = op["card"] fz.opengang = op["opengang"] if fz.type == FZType.Chi then fz.opcard = {} fz.opcard[1] = op["opcard"][1] fz.opcard[2] = fz.card fz.opcard[3] = op["opcard"][2] end p.fz_list[#p.fz_list+1] = fz end if (not playing and room.curren_round > 0) or room.status == 1 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"] 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"] 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"] 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, ViewUtil.HandCardSort) 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 return M