code quality fixes

This commit is contained in:
Robert Paciorek 2024-03-02 10:38:22 +00:00
parent f1865bd4a3
commit c909d07462
7 changed files with 60 additions and 57 deletions

View File

@ -30,7 +30,7 @@ class GauntletJoinRoomHandler : ICommandHandler
class GauntletPlayAgainHandler : ICommandHandler class GauntletPlayAgainHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { public void Handle(Client client, NetworkObject receivedObject) {
GauntletRoom room = client.Room as GauntletRoom; GauntletRoom room = (client.Room as GauntletRoom)!;
room.SetPlayerReady(client, false); room.SetPlayerReady(client, false);
NetworkPacket packet = Utils.ArrNetworkPacket(new string[] { NetworkPacket packet = Utils.ArrNetworkPacket(new string[] {
@ -52,7 +52,7 @@ class GauntletPlayAgainHandler : ICommandHandler
class GauntletLobbyUserReadyHandler : ICommandHandler class GauntletLobbyUserReadyHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { public void Handle(Client client, NetworkObject receivedObject) {
GauntletRoom room = client.Room as GauntletRoom; GauntletRoom room = (client.Room as GauntletRoom)!;
room.SetPlayerReady(client); room.SetPlayerReady(client);
NetworkPacket packet = Utils.ArrNetworkPacket(new string[] { NetworkPacket packet = Utils.ArrNetworkPacket(new string[] {
@ -84,7 +84,7 @@ class GauntletLobbyUserReadyHandler : ICommandHandler
class GauntletLobbyUserNotReadyHandler : ICommandHandler class GauntletLobbyUserNotReadyHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { public void Handle(Client client, NetworkObject receivedObject) {
GauntletRoom room = client.Room as GauntletRoom; GauntletRoom room = (client.Room as GauntletRoom)!;
room.SetPlayerReady(client, false); room.SetPlayerReady(client, false);
NetworkPacket packet = Utils.ArrNetworkPacket(new string[] { NetworkPacket packet = Utils.ArrNetworkPacket(new string[] {
@ -104,7 +104,7 @@ class GauntletLobbyUserNotReadyHandler : ICommandHandler
class GauntletLevelLoadHandler : ICommandHandler class GauntletLevelLoadHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { // {"a":13,"c":1,"p":{"c":"gs.GLL","p":{"0":"0","1":"0","2":"5","en":"GauntletGameExtension"},"r":365587}} public void Handle(Client client, NetworkObject receivedObject) { // {"a":13,"c":1,"p":{"c":"gs.GLL","p":{"0":"0","1":"0","2":"5","en":"GauntletGameExtension"},"r":365587}}
GauntletRoom room = client.Room as GauntletRoom; GauntletRoom room = (client.Room as GauntletRoom)!;
NetworkObject p = receivedObject.Get<NetworkObject>("p"); NetworkObject p = receivedObject.Get<NetworkObject>("p");
NetworkPacket packet = Utils.ArrNetworkPacket(new string[] { NetworkPacket packet = Utils.ArrNetworkPacket(new string[] {
@ -125,12 +125,12 @@ class GauntletLevelLoadHandler : ICommandHandler
[ExtensionCommandHandler("gs.GLLD")] [ExtensionCommandHandler("gs.GLLD")]
class GauntletLevelLoadedHandler : ICommandHandler class GauntletLevelLoadedHandler : ICommandHandler
{ {
private System.Timers.Timer timer = null; private System.Timers.Timer? timer = null;
private int counter; private int counter;
private GauntletRoom room; private GauntletRoom room;
public void Handle(Client client, NetworkObject receivedObject) { public void Handle(Client client, NetworkObject receivedObject) {
room = client.Room as GauntletRoom; room = (client.Room as GauntletRoom)!;
counter = 5; counter = 5;
// {"a":13,"c":1,"p":{"c":"msg","p":{"arr":["GCDS","365587","4"]},"r":365587}} // {"a":13,"c":1,"p":{"c":"msg","p":{"arr":["GCDS","365587","4"]},"r":365587}}
@ -149,7 +149,7 @@ class GauntletLevelLoadedHandler : ICommandHandler
timer.Elapsed += OnTick; timer.Elapsed += OnTick;
} }
private void OnTick(Object source, ElapsedEventArgs e) { private void OnTick(Object? source, ElapsedEventArgs e) {
NetworkPacket packet; NetworkPacket packet;
if (--counter > 0) { if (--counter > 0) {
// {"a":13,"c":1,"p":{"c":"msg","p":{"arr":["GCDS","365587","4"]},"r":365587}} // {"a":13,"c":1,"p":{"c":"msg","p":{"arr":["GCDS","365587","4"]},"r":365587}}
@ -165,8 +165,8 @@ class GauntletLevelLoadedHandler : ICommandHandler
room.Id.ToString() room.Id.ToString()
}, "msg", room.Id); }, "msg", room.Id);
timer.Stop(); timer!.Stop();
timer.Close(); timer!.Close();
timer = null; timer = null;
} }
foreach (var roomClient in room.Clients) { foreach (var roomClient in room.Clients) {
@ -181,7 +181,7 @@ class GauntletRelayGameDataHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) // {"a":13,"c":1,"p":{"c":"gs.RGD","p":{"0":"2700","1":"78","en":"GauntletGameExtension"},"r":4}} public void Handle(Client client, NetworkObject receivedObject) // {"a":13,"c":1,"p":{"c":"gs.RGD","p":{"0":"2700","1":"78","en":"GauntletGameExtension"},"r":4}}
{ {
GauntletRoom room = client.Room as GauntletRoom; GauntletRoom room = (client.Room as GauntletRoom)!;
NetworkObject p = receivedObject.Get<NetworkObject>("p"); NetworkObject p = receivedObject.Get<NetworkObject>("p");
// {"a":13,"c":1,"p":{"c":"msg","p":{"arr":["RGD","365587","150","75"]},"r":365587}} // {"a":13,"c":1,"p":{"c":"msg","p":{"arr":["RGD","365587","150","75"]},"r":365587}}
@ -204,7 +204,7 @@ class GauntletGameCompleteHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) // {"a":13,"c":1,"p":{"c":"gs.GC","p":{"0":"1550","1":"84","en":"GauntletGameExtension"},"r":4}} public void Handle(Client client, NetworkObject receivedObject) // {"a":13,"c":1,"p":{"c":"gs.GC","p":{"0":"1550","1":"84","en":"GauntletGameExtension"},"r":4}}
{ {
GauntletRoom room = client.Room as GauntletRoom; GauntletRoom room = (client.Room as GauntletRoom)!;
NetworkObject p = receivedObject.Get<NetworkObject>("p"); NetworkObject p = receivedObject.Get<NetworkObject>("p");
room.ProcessResult(client, p.Get<string>("0"), p.Get<string>("1")); room.ProcessResult(client, p.Get<string>("0"), p.Get<string>("1"));

View File

@ -18,7 +18,7 @@ class RacingPlayerReadyHandler : ICommandHandler
// so server do not need generate this packet // so server do not need generate this packet
if (client.Room.Group == "RacingDragon") { if (client.Room.Group == "RacingDragon") {
RacingRoom room = client.Room as RacingRoom; RacingRoom room = (client.Room as RacingRoom)!;
room.SetPlayerState(client, ready); room.SetPlayerState(client, ready);
Console.WriteLine($"IMR Lobby: {client.ClientID} {ready}"); Console.WriteLine($"IMR Lobby: {client.ClientID} {ready}");
room.TryLoad(); room.TryLoad();
@ -44,7 +44,7 @@ class RacingPlayerStatusHandler : ICommandHandler
class RacingUACKHandler : ICommandHandler class RacingUACKHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { public void Handle(Client client, NetworkObject receivedObject) {
RacingRoom room = client.Room as RacingRoom; RacingRoom room = (client.Room as RacingRoom)!;
room.SetPlayerState(client, RacingPlayerState.RaceReady1); room.SetPlayerState(client, RacingPlayerState.RaceReady1);
} }
} }
@ -54,7 +54,7 @@ class RacingUACKHandler : ICommandHandler
class RacingARACKHandler : ICommandHandler class RacingARACKHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { public void Handle(Client client, NetworkObject receivedObject) {
RacingRoom room = client.Room as RacingRoom; RacingRoom room = (client.Room as RacingRoom)!;
room.SetPlayerState(client, RacingPlayerState.RaceReady2); room.SetPlayerState(client, RacingPlayerState.RaceReady2);
if (room.GetPlayersCount(RacingPlayerState.RaceReady2) == room.ClientsCount) { if (room.GetPlayersCount(RacingPlayerState.RaceReady2) == room.ClientsCount) {
@ -71,7 +71,7 @@ class RacingARACKHandler : ICommandHandler
class RacingARHandler : ICommandHandler class RacingARHandler : ICommandHandler
{ {
public void Handle(Client client, NetworkObject receivedObject) { // {"a":13,"c":1,"p":{"c":"dr.AR","p":{"CT":"112.1268","FD":"3008.283","LC":"3","UN":"scourgexxwulf","en":""},"r":412467}} public void Handle(Client client, NetworkObject receivedObject) { // {"a":13,"c":1,"p":{"c":"dr.AR","p":{"CT":"112.1268","FD":"3008.283","LC":"3","UN":"scourgexxwulf","en":""},"r":412467}}
RacingRoom room = client.Room as RacingRoom; RacingRoom room = (client.Room as RacingRoom)!;
NetworkObject p = receivedObject.Get<NetworkObject>("p"); NetworkObject p = receivedObject.Get<NetworkObject>("p");
room.SetResults(client, p.Get<string>("UN"), p.Get<string>("CT"), p.Get<string>("LC")); room.SetResults(client, p.Get<string>("UN"), p.Get<string>("CT"), p.Get<string>("LC"));

View File

@ -3,34 +3,38 @@ using sodoffmmo.Data;
namespace sodoffmmo.Core; namespace sodoffmmo.Core;
public class GauntletRoom : Room { public class GauntletRoom : Room {
static GauntletRoom NextRoom = null; static GauntletRoom? NextRoom = null;
public static GauntletRoom Get() { public static GauntletRoom Get() {
if (NextRoom != null && NextRoom.ClientsCount == 1) { if (NextRoom != null && NextRoom.ClientsCount == 1) {
var ret = NextRoom; var ret = NextRoom!;
NextRoom = null; NextRoom = null;
return ret; return ret;
} else { } else {
NextRoom = new GauntletRoom(); NextRoom = new GauntletRoom();
return NextRoom; return NextRoom!;
} }
} }
public GauntletRoom(string name = null) : base (name, "GauntletDO", true) { public GauntletRoom() : base (null, "GauntletDO", true) {
base.RoomVariables.Add(NetworkArray.VlElement("IS_RACE_ROOM", true)); base.RoomVariables.Add(NetworkArray.VlElement("IS_RACE_ROOM", true));
} }
class Status { class Status {
public string uid; public string uid;
public bool isReady = false; public bool isReady = false;
public string resultA = null; public string resultA = "";
public string resultB = null; public string resultB = "";
public Status(string uid) {
this.uid = uid;
}
} }
private Dictionary<Client, Status> players = new(); private Dictionary<Client, Status> players = new();
public void AddPlayer(Client client) { public void AddPlayer(Client client) {
players[client] = new Status { uid = client.PlayerData.Uid }; players[client] = new Status(client.PlayerData.Uid);
} }
public void SetPlayerReady(Client client, bool status = true) { public void SetPlayerReady(Client client, bool status = true) {
@ -51,7 +55,6 @@ public class GauntletRoom : Room {
info.Add("UJR"); // User Joined Room info.Add("UJR"); // User Joined Room
info.Add(base.Id.ToString()); info.Add(base.Id.ToString());
info.Add("2"); info.Add("2");
int i = 0;
foreach(var player in players) { foreach(var player in players) {
info.Add(player.Value.uid); info.Add(player.Value.uid);
info.Add(player.Value.isReady.ToString()); info.Add(player.Value.isReady.ToString());
@ -70,7 +73,6 @@ public class GauntletRoom : Room {
info.Add("PA"); // Play Again info.Add("PA"); // Play Again
info.Add(base.Id.ToString()); info.Add(base.Id.ToString());
info.Add("1"); info.Add("1");
int i = 0;
foreach(var player in players) { foreach(var player in players) {
info.Add(player.Value.uid); info.Add(player.Value.uid);
info.Add(player.Value.isReady.ToString()); info.Add(player.Value.isReady.ToString());
@ -88,7 +90,7 @@ public class GauntletRoom : Room {
int count = 0; int count = 0;
foreach(var player in players) { foreach(var player in players) {
if (player.Value.resultA != null) ++count; if (player.Value.resultB != "") ++count;
} }
if (count != 2) if (count != 2)
return false; return false;
@ -98,7 +100,7 @@ public class GauntletRoom : Room {
info.Add("GC"); info.Add("GC");
info.Add(base.Id.ToString()); info.Add(base.Id.ToString());
foreach(var player in players) { foreach(var player in players) {
if (player.Value.resultA is null) if (player.Value.resultB == "")
continue; continue;
info.Add(player.Value.uid); info.Add(player.Value.uid);
info.Add(player.Value.resultA); info.Add(player.Value.resultA);
@ -117,7 +119,7 @@ public class GauntletRoom : Room {
static object joinLock = new object(); static object joinLock = new object();
static public void Join(Client client, GauntletRoom room = null) { static public void Join(Client client, GauntletRoom? room = null) {
lock(joinLock) { lock(joinLock) {
if (room is null) if (room is null)
room = GauntletRoom.Get(); room = GauntletRoom.Get();

View File

@ -19,12 +19,8 @@ public class RacingRoom : Room {
return new RacingRoom(); return new RacingRoom();
} }
public RacingRoom(string name = null, int? trackId = null) : base (name, "RacingDragon", true) { public RacingRoom() : base (null, "RacingDragon", true) {
if (trackId is null) {
TID = random.Next(105); TID = random.Next(105);
} else {
TID = (int)trackId;
}
players = new(); players = new();
results = new(); results = new();
@ -66,6 +62,12 @@ public class RacingRoom : Room {
public string userName; public string userName;
public string time; public string time;
public string laps; public string laps;
public Result(string userName, string time, string laps) {
this.userName = userName;
this.time = time;
this.laps = laps;
}
} }
SortedDictionary<float, Result> results; SortedDictionary<float, Result> results;
@ -75,11 +77,7 @@ public class RacingRoom : Room {
while (results.ContainsKey(timef)) while (results.ContainsKey(timef))
timef += 0.000001f; timef += 0.000001f;
results.Add(timef, new Result { results.Add(timef, new Result(userName, time, laps));
userName = userName,
time = time,
laps = laps
});
} }
public void SendResults() { public void SendResults() {
@ -104,7 +102,7 @@ public class RacingRoom : Room {
// start and countdown // start and countdown
System.Timers.Timer timer; System.Timers.Timer? timer = null;
int counter; int counter;
private void SetTimer(double timeout, System.Timers.ElapsedEventHandler callback, bool AutoReset = false) { private void SetTimer(double timeout, System.Timers.ElapsedEventHandler callback, bool AutoReset = false) {
@ -124,7 +122,7 @@ public class RacingRoom : Room {
SetTimer(0.2, SendJoin); SetTimer(0.2, SendJoin);
} }
private void SendJoin(Object source, ElapsedEventArgs e) { private void SendJoin(Object? source, ElapsedEventArgs e) {
foreach(var player in players) { foreach(var player in players) {
Console.WriteLine($"Join Racing Room: {Name} RoomID: {Id} IID: {player.Key.ClientID}"); Console.WriteLine($"Join Racing Room: {Name} RoomID: {Id} IID: {player.Key.ClientID}");
player.Key.JoinRoom(this); player.Key.JoinRoom(this);
@ -132,7 +130,7 @@ public class RacingRoom : Room {
SetTimer(1, CountDown, true); SetTimer(1, CountDown, true);
} }
private void CountDown(Object source, ElapsedEventArgs e) { private void CountDown(Object? source, ElapsedEventArgs e) {
if (!TryLoad()) { if (!TryLoad()) {
if (counter == 0) { if (counter == 0) {
Load(); Load();
@ -160,8 +158,8 @@ public class RacingRoom : Room {
} }
public void Load() { public void Load() {
timer.Stop(); timer!.Stop();
timer.Close(); timer!.Close();
// {"a":13,"c":1,"p":{"c":"","p":{"arr":["RA","","ST"]},"r":412467}} // {"a":13,"c":1,"p":{"c":"","p":{"arr":["RA","","ST"]},"r":412467}}
NetworkPacket packet = Utils.ArrNetworkPacket(new string[] { NetworkPacket packet = Utils.ArrNetworkPacket(new string[] {
@ -216,6 +214,9 @@ public class RacingLobby {
class Status { class Status {
public string uid; public string uid;
public RacingPlayerState state = RacingPlayerState.NotReady; public RacingPlayerState state = RacingPlayerState.NotReady;
public Status (string uid) {
this.uid = uid;
}
} }
static object lobbyLock = new object(); static object lobbyLock = new object();
@ -225,7 +226,7 @@ public class RacingLobby {
public static void SetPlayerState(Client client, RacingPlayerState state) { public static void SetPlayerState(Client client, RacingPlayerState state) {
lock (lobbyLock) { lock (lobbyLock) {
if (!lobbyPlayers.ContainsKey(client)) { if (!lobbyPlayers.ContainsKey(client)) {
lobbyPlayers[client] = new Status { uid = client.PlayerData.Uid }; lobbyPlayers[client] = new Status(client.PlayerData.Uid);
} }
lobbyPlayers[client].state = state; lobbyPlayers[client].state = state;
} }

View File

@ -16,15 +16,15 @@ public class Room {
public bool IsRemoved { get; private set; } = false; public bool IsRemoved { get; private set; } = false;
public NetworkArray RoomVariables = new(); public NetworkArray RoomVariables = new();
public Room(string name, string group = null, bool autoRemove = false) { public Room(string? name, string? group = null, bool autoRemove = false) {
Id = ++MaxId; Id = ++MaxId;
if (name is null) { if (name is null) {
Name = group + "_" + MaxId; Name = group! + "_" + MaxId;
} else { } else {
Name = name; Name = name;
} }
if (group is null) { if (group is null) {
Group = name; Group = name!;
} else { } else {
Group = group; Group = group;
} }

View File

@ -9,10 +9,10 @@ class WorldEvent {
End, End,
NotActive NotActive
} }
private static WorldEvent _instance = null; private static WorldEvent? _instance = null;
private object EventLock = new object(); private object EventLock = new object();
private Random random = new Random(); private Random random = new Random();
private System.Timers.Timer timer = null; private System.Timers.Timer? timer = null;
public static WorldEvent Get() { public static WorldEvent Get() {
if (_instance == null) { if (_instance == null) {
@ -24,6 +24,7 @@ class WorldEvent {
private WorldEvent() { private WorldEvent() {
startTime = DateTime.UtcNow.AddMinutes(-60); startTime = DateTime.UtcNow.AddMinutes(-60);
startTimeString = startTime.ToString("MM/dd/yyyy HH:mm:ss"); startTimeString = startTime.ToString("MM/dd/yyyy HH:mm:ss");
room = Room.GetOrAdd("HubTrainingDO");
uid = "sodoff"; uid = "sodoff";
state = State.End; state = State.End;
ScheduleEvent(Configuration.ServerConfiguration.FirstEventTimer); // WE_ != WEN_ ScheduleEvent(Configuration.ServerConfiguration.FirstEventTimer); // WE_ != WEN_
@ -32,7 +33,7 @@ class WorldEvent {
// controlled (init/reset) by Reset() // controlled (init/reset) by Reset()
private Room room; private Room room;
private string uid; private string uid;
private Client operatorAI; private Client? operatorAI;
private State state; private State state;
private DateTime startTime; private DateTime startTime;
@ -51,7 +52,6 @@ class WorldEvent {
// reset event - set new id, start time, end time, etc // reset event - set new id, start time, end time, etc
private void Reset(DateTime newStartTime) { private void Reset(DateTime newStartTime) {
lock (EventLock) { lock (EventLock) {
room = Room.GetOrAdd("HubTrainingDO");
uid = Path.GetRandomFileName().Substring(0, 8); // this is used as RandomSeed for random select ship variant uid = Path.GetRandomFileName().Substring(0, 8); // this is used as RandomSeed for random select ship variant
operatorAI = null; operatorAI = null;
state = State.NotActive; state = State.NotActive;
@ -87,7 +87,7 @@ class WorldEvent {
} }
// reset event and set timer to call PreEndEvent, send new WE_ info // reset event and set timer to call PreEndEvent, send new WE_ info
private void PreInit(Object source, ElapsedEventArgs e) { private void PreInit(Object? source, ElapsedEventArgs e) {
Reset(nextStartTime); // WE_ == WEN_ Reset(nextStartTime); // WE_ == WEN_
AnnounceEvent(); AnnounceEvent();
} }
@ -114,7 +114,7 @@ class WorldEvent {
} }
} }
private void PreEndEvent(Object source, ElapsedEventArgs e) { private void PreEndEvent(Object? source, ElapsedEventArgs e) {
Console.WriteLine($"Event {uid} force end from timer"); Console.WriteLine($"Event {uid} force end from timer");
EndEvent(true); EndEvent(true);
} }
@ -152,7 +152,7 @@ class WorldEvent {
} }
// send reward info // send reward info
private void PostEndEvent1(Object source, ElapsedEventArgs e) { private void PostEndEvent1(Object? source, ElapsedEventArgs e) {
NetworkPacket packet = Utils.VlNetworkPacket( NetworkPacket packet = Utils.VlNetworkPacket(
"WE_ScoutAttack_End", "WE_ScoutAttack_End",
lastResults, lastResults,
@ -179,7 +179,7 @@ class WorldEvent {
} }
// schedule next event, set timer to call PreInit() and send new WEN_ info // schedule next event, set timer to call PreInit() and send new WEN_ info
private void PostEndEvent2(Object source, ElapsedEventArgs e) { private void PostEndEvent2(Object? source, ElapsedEventArgs e) {
ScheduleEvent(); // WE_ != WEN_ ScheduleEvent(); // WE_ != WEN_
AnnounceEvent(false, true); // send only WEN_ (WE_ should stay unchanged ... as WE_..._End) AnnounceEvent(false, true); // send only WEN_ (WE_ should stay unchanged ... as WE_..._End)
} }

View File

@ -103,7 +103,7 @@ public class NetworkArray {
} }
public class NullClass {}; public class NullClass {};
public static NullClass NULL; public static NullClass NULL = new ();
public void AddWithType<T>(T value) { public void AddWithType<T>(T value) {
if (typeof(T) == typeof(NullClass)) if (typeof(T) == typeof(NullClass))
@ -120,7 +120,7 @@ public class NetworkArray {
throw new Exception("Unsupported type"); throw new Exception("Unsupported type");
} }
private void AddWithTypeObject(NetworkDataType dataType, byte typeId, object obj) { private void AddWithTypeObject(NetworkDataType dataType, byte typeId, object? obj) {
Add(new DataWrapper(NetworkDataType.Byte,typeId)); Add(new DataWrapper(NetworkDataType.Byte,typeId));
Add(new DataWrapper(dataType, obj)); Add(new DataWrapper(dataType, obj));
} }