hengyang_client/lua_probject/extend_project/extend/majiang/changsha/ExtendConfig.lua

182 lines
5.8 KiB
Lua
Raw Permalink Normal View History

2025-04-01 10:48:36 +08:00
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