Room improvements

- add comments for roomInfo array fiels
- allow external control for RoomVariables array
This commit is contained in:
Robert Paciorek 2024-02-28 02:22:18 +00:00
parent 5c6f39c800
commit e7e2c21be6
2 changed files with 16 additions and 55 deletions

View File

@ -20,7 +20,9 @@ public class GauntletRoom : Room {
return newroom; return newroom;
} }
public GauntletRoom(string name) : base (name, "GauntletDO", true) { } public GauntletRoom(string name) : base (name, "GauntletDO") {
base.RoomVariables.Add(NetworkArray.VlElement("IS_RACE_ROOM", true));
}
class Status { class Status {

View File

@ -12,9 +12,9 @@ public class Room {
public int Id { get; private set; } public int Id { get; private set; }
public string Name { get; private set; } public string Name { get; private set; }
public string Group { get; private set; } public string Group { get; private set; }
public bool IsRaceRoom { get; private set; } public NetworkArray RoomVariables = new();
public Room(string name, string group = null, bool isRaceRoom = false) { public Room(string name, string group = null) {
Id = rooms.Count + 3; Id = rooms.Count + 3;
Name = name; Name = name;
if (group is null) { if (group is null) {
@ -22,7 +22,6 @@ public class Room {
} else { } else {
Group = group; Group = group;
} }
IsRaceRoom = isRaceRoom;
rooms.Add(Name, this); rooms.Add(Name, this);
} }
@ -71,30 +70,14 @@ public class Room {
roomInfo.Add(Id); roomInfo.Add(Id);
roomInfo.Add(Name); // Room Name roomInfo.Add(Name); // Room Name
roomInfo.Add(Group); // Group Name roomInfo.Add(Group); // Group Name
roomInfo.Add(true); roomInfo.Add(true); // is game
roomInfo.Add(false); roomInfo.Add(false); // is hidden
roomInfo.Add(false); roomInfo.Add(false); // is password protected
if (IsRaceRoom) { roomInfo.Add((short)clients.Count); // player count
NetworkArray raceRoom = new(); roomInfo.Add((short)4096); // max player count
raceRoom.Add("IS_RACE_ROOM"); roomInfo.Add(RoomVariables); // variables
raceRoom.Add((Byte)1); roomInfo.Add((short)0); // spectator count
raceRoom.Add(true); roomInfo.Add((short)0); // max spectator count
raceRoom.Add(false);
raceRoom.Add(false);
NetworkArray raceRoom2 = new();
raceRoom2.Add(raceRoom);
roomInfo.Add((short)1);
roomInfo.Add((short)2);
roomInfo.Add(raceRoom2);
} else {
roomInfo.Add((short)24);
roomInfo.Add((short)27);
roomInfo.Add(new NetworkArray());
}
roomInfo.Add((short)0);
roomInfo.Add((short)0);
NetworkArray userList = new(); NetworkArray userList = new();
foreach (Client player in Clients) { foreach (Client player in Clients) {
@ -121,40 +104,16 @@ public class Room {
r1.Add(true); r1.Add(true);
r1.Add(false); r1.Add(false);
r1.Add(false); r1.Add(false);
if (IsRaceRoom) { r1.Add((short)clients.Count); // player count
r1.Add((short)1); r1.Add((short)4096); // max player count
r1.Add((short)2);
} else {
r1.Add((short)24);
r1.Add((short)27);
}
r1.Add(new NetworkArray()); r1.Add(new NetworkArray());
r1.Add((short)0); r1.Add((short)0);
r1.Add((short)0); r1.Add((short)0);
NetworkArray r2 = new();
r2.Add(Id);
r2.Add(Name); // Room Name
r2.Add(Group); // Group Name
r2.Add(true);
r2.Add(false);
r2.Add(false);
if (IsRaceRoom) {
r2.Add((short)1);
r2.Add((short)2);
} else {
r2.Add((short)7);
r2.Add((short)27);
}
r2.Add(new NetworkArray());
r2.Add((short)0);
r2.Add((short)0);
list.Add(r1); list.Add(r1);
list.Add(r2);
obj.Add("rl", list); obj.Add("rl", list);
obj.Add("g", Name); obj.Add("g", Group);
return NetworkObject.WrapObject(0, 15, obj).Serialize(); return NetworkObject.WrapObject(0, 15, obj).Serialize();
} }
} }