2025-06-04 05:02:57 +08:00

163 lines
3.2 KiB
Plaintext

autoImport("PvpTeamData");
PvpRoomData = class("PvpRoomData");
local Room_MaxIndex = 3;
function PvpRoomData:ctor(guid)
self.guid = guid
self.teamList = {};
for i=1,Room_MaxIndex do
self.teamList[i] = PvpTeamData.new();
self.teamList[i]:SetIndex(i);
end
self.endtime = 0;
end
function PvpRoomData:SetData(roomBriefInfo)
self.state = roomBriefInfo.state
self.roomid = roomBriefInfo.roomid
self.zoneid = roomBriefInfo.zoneid
self.name = roomBriefInfo.name;
self.player_num = roomBriefInfo.player_num;
self.type = roomBriefInfo.type;
for i=1,Room_MaxIndex do
local tmData = self.teamList[i];
local memberNum = roomBriefInfo["num"..i];
tmData:SetMemberNum(memberNum);
end
end
function PvpRoomData:SetRoomDetailInfo(roomDetailInfo)
local matchTeamDatas = roomDetailInfo.team_datas;
for i=1,Room_MaxIndex do
self.teamList[i]:ResetMembersData();
end
for i=1,#matchTeamDatas do
local matchTeamData = matchTeamDatas[i];
local index = matchTeamData.index;
local teamData = self.teamList[index];
if(teamData)then
teamData:SetMatchTeamData(matchTeamData);
end
end
end
function PvpRoomData:RemoveTeamByGuid(guid)
for i=Room_MaxIndex,1,-1 do
local teamData = self.teamList[i];
helplog("RemoveTeamByGuid", guid, teamData.id);
if(teamData.id == guid)then
teamData:ResetMembersData();
end
end
end
function PvpRoomData:GetTeamMemberNumByPos(pos)
local teamData = self.teamList[pos];
if(teamData)then
return teamData.memberNum;
end
end
function PvpRoomData:GetRoomTeamList()
return self.teamList;
end
function PvpRoomData:GetRoomTeamDataByPos(pos)
return self.teamList[pos]
end
function PvpRoomData:IsFull()
local isFull = true;
for i=1,Room_MaxIndex do
local teamData = self.teamList[i];
if(teamData.memberNum == 0)then
isFull = false;
break;
end
end
return isFull;
end
function PvpRoomData:SetIndex(index)
self.index = index;
end
function PvpRoomData:GetZoneString()
if self.zoneid then
local zoneid = self.zoneid % 10000
return ChangeZoneProxy.Instance:ZoneNumToString(zoneid)
end
return 0
end
function PvpRoomData:GetTeamByGuid(guid)
for i=1,#self.teamList do
if(self.teamList[i].id == guid)then
return self.teamList[i];
end
end
end
function PvpRoomData:SetEndTime(endtime)
self.endtime = endtime;
end
function PvpRoomData:GetEndTime()
return self.endtime;
end
--TestSet
function PvpRoomData:TestSetRoomDetail()
local matchTeamData1 =
{
guid = 100001,
zoneid = 1,
name = "TestTeam1",
index = 2,
members =
{
{
guid = 1000011,
name = "Test_Member1",
datas =
{
{type = SessionTeam_pb.EMEMBERDATA_PROFESSION, value = 13},
{type = SessionTeam_pb.EMEMBERDATA_PORTRAIT, value = 56005},
{type = SessionTeam_pb.EMEMBERDATA_BASELEVEL, value = 13},
},
},
{
guid = 1000012,
name = "Test_Member2",
datas =
{
{type = SessionTeam_pb.EMEMBERDATA_PROFESSION, value = 13},
{type = SessionTeam_pb.EMEMBERDATA_PORTRAIT, value = 56005},
{type = SessionTeam_pb.EMEMBERDATA_BASELEVEL, value = 41},
},
},
},
};
local testServerData =
{
guid = self.guid,
name = self.name,
team_datas = {
matchTeamData1,
},
};
self:SetRoomDetailInfo(testServerData);
end
function PvpRoomData:OnRemove()
end