rework pre-battle timer (notificartion)

This commit is contained in:
Robert Paciorek 2024-01-21 02:53:14 +00:00 committed by Spirtix
parent 37d23af369
commit b58f01d101
5 changed files with 68 additions and 55 deletions

View File

@ -27,26 +27,6 @@ class LoginHandler : ICommandHandler
rl.Add(r1); rl.Add(r1);
NetworkArray r2 = new(); NetworkArray r2 = new();
NetworkArray we = new();
NetworkArray we1 = new();
NetworkArray we2 = new();
we1.Add("WE_ScoutAttack");
we1.Add((Byte)4);
we1.Add(WorldEvent.Get().EventInfo());
we1.Add(false);
we1.Add(true);
we2.Add("WEN_ScoutAttack");
we2.Add((Byte)4);
we2.Add(WorldEvent.Get().EventInfoNext());
we2.Add(false);
we2.Add(true);
we.Add(we1);
we.Add(we2);
r2.Add(1); r2.Add(1);
r2.Add("ADMIN"); r2.Add("ADMIN");
r2.Add("default"); r2.Add("default");
@ -55,7 +35,7 @@ class LoginHandler : ICommandHandler
r2.Add(true); r2.Add(true);
r2.Add((short)0); r2.Add((short)0);
r2.Add((short)1); r2.Add((short)1);
r2.Add(we); r2.Add(WorldEvent.Get().EventInfoArray(true));
rl.Add(r2); rl.Add(r2);
NetworkArray r3 = new(); NetworkArray r3 = new();

View File

@ -32,7 +32,8 @@ class WorldEventHealthHandler : ICommandHandler {
// send: {"a":11,"c":0,"p":{"r":367256,"vl":[["WEH_ZydLUmCC1",4,"0.33133352,Thu Jun 22 02:02:43 UTC 2023",false,false]]}} // send: {"a":11,"c":0,"p":{"r":367256,"vl":[["WEH_ZydLUmCC1",4,"0.33133352,Thu Jun 22 02:02:43 UTC 2023",false,false]]}}
NetworkPacket packet = Utils.VlNetworkPacket( NetworkPacket packet = Utils.VlNetworkPacket(
"WEH_" + targetUid, "WEH_" + targetUid,
health.ToString("0.0#####", CultureInfo.GetCultureInfo("en-US")) + "," + DateTime.UtcNow.ToString("ddd MMM dd HH:mm:ss UTC yyyy", CultureInfo.GetCultureInfo("en-US")) health.ToString("0.0#####", CultureInfo.GetCultureInfo("en-US")) + "," + DateTime.UtcNow.ToString("ddd MMM dd HH:mm:ss UTC yyyy", CultureInfo.GetCultureInfo("en-US")),
WorldEvent.Get().GetRoom().Id
); );
foreach (var roomClient in WorldEvent.Get().GetRoom().Clients) { foreach (var roomClient in WorldEvent.Get().GetRoom().Clients) {
roomClient.Send(packet); roomClient.Send(packet);
@ -50,7 +51,8 @@ class WorldEventFlareHandler : ICommandHandler {
// send: {"a":11,"c":0,"p":{"r":403777,"vl":[["WEF_WpnpDyJ51,14,0",4,"0,6/29/2023 3:03:18 AM",false,false]]}} // send: {"a":11,"c":0,"p":{"r":403777,"vl":[["WEF_WpnpDyJ51,14,0",4,"0,6/29/2023 3:03:18 AM",false,false]]}}
NetworkPacket packet = Utils.VlNetworkPacket( NetworkPacket packet = Utils.VlNetworkPacket(
"WEF_" + p.Get<string>("fuid"), "WEF_" + p.Get<string>("fuid"),
p.Get<string>("oh") + "," + p.Get<string>("ts") p.Get<string>("oh") + "," + p.Get<string>("ts"),
WorldEvent.Get().GetRoom().Id
); );
foreach (var roomClient in WorldEvent.Get().GetRoom().Clients) { foreach (var roomClient in WorldEvent.Get().GetRoom().Clients) {
roomClient.Send(packet); roomClient.Send(packet);

View File

@ -50,4 +50,8 @@ public class Room {
public static void Add(string name) { public static void Add(string name) {
rooms[name] = new Room(rooms.Count + 3, name); rooms[name] = new Room(rooms.Count + 3, name);
} }
public static Room[] AllRooms() {
return rooms.Values.ToArray();
}
} }

View File

@ -22,23 +22,23 @@ internal static class Utils {
return true; return true;
} }
public static NetworkPacket VlNetworkPacket(NetworkArray vl2, int roomID) { public static NetworkPacket VlNetworkPacket(NetworkArray vl, int roomID) {
NetworkObject wedata = new(); NetworkObject obj = new();
NetworkArray vl = new(); obj.Add("r", roomID);
vl.Add(vl2); obj.Add("vl", vl);
wedata.Add("r", roomID); return NetworkObject.WrapObject(0, 11, obj).Serialize();
wedata.Add("vl", vl);
return NetworkObject.WrapObject(0, 11, wedata).Serialize();
} }
public static NetworkPacket VlNetworkPacket(string a, string b) { public static NetworkPacket VlNetworkPacket(string a, string b, int roomID) {
NetworkArray vl = new();
NetworkArray vl2 = new(); NetworkArray vl2 = new();
vl2.Add(a); vl2.Add(a);
vl2.Add((Byte)4); vl2.Add((Byte)4);
vl2.Add(b); vl2.Add(b);
vl2.Add(false); vl2.Add(false);
vl2.Add(false); vl2.Add(false);
return VlNetworkPacket(vl2, WorldEvent.Get().GetRoom().Id); vl.Add(vl2);
return VlNetworkPacket(vl, roomID);
} }
public static NetworkPacket ArrNetworkPacket(string[] data) { public static NetworkPacket ArrNetworkPacket(string[] data) {

View File

@ -12,7 +12,7 @@ class WorldEvent {
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; private System.Timers.Timer timer = null;
public static WorldEvent Get() { public static WorldEvent Get() {
if (_instance == null) { if (_instance == null) {
@ -22,7 +22,7 @@ class WorldEvent {
} }
private WorldEvent() { private WorldEvent() {
Reset(1.3f); Reset(3.3f);
} }
private Room room; private Room room;
@ -52,9 +52,25 @@ class WorldEvent {
endTimeIsSet = false; endTimeIsSet = false;
Console.WriteLine($"Event {uid} start time: {startTimeString}"); Console.WriteLine($"Event {uid} start time: {startTimeString}");
ResetTimer((endTime - DateTime.UtcNow).TotalSeconds + 30);
} }
} }
private void ResetTimer(double timeout) {
if (timer != null) {
timer.Stop();
timer.Close();
}
timer = new System.Timers.Timer(timeout * 1000);
timer.Elapsed += PostEndEvent;
timer.AutoReset = false;
timer.Enabled = true;
Console.WriteLine($"Event {uid} reset timer set to {timeout} s");
}
private void InitEvent() { private void InitEvent() {
lock (EventLock) { lock (EventLock) {
if (AITime < DateTime.UtcNow) { if (AITime < DateTime.UtcNow) {
@ -69,7 +85,7 @@ class WorldEvent {
state = State.Active; state = State.Active;
} }
operatorAI.Send(Utils.VlNetworkPacket("WE__AI", operatorAI.PlayerData.Uid)); operatorAI.Send(Utils.VlNetworkPacket("WE__AI", operatorAI.PlayerData.Uid, room.Id));
Console.WriteLine($"Event {uid} AI operator: {operatorAI.PlayerData.Uid}"); Console.WriteLine($"Event {uid} AI operator: {operatorAI.PlayerData.Uid}");
} }
} }
@ -96,7 +112,8 @@ class WorldEvent {
NetworkPacket packet = Utils.VlNetworkPacket( NetworkPacket packet = Utils.VlNetworkPacket(
"WE_ScoutAttack_End", "WE_ScoutAttack_End",
$"{uid};{results};{scores};{targets}" $"{uid};{results};{scores};{targets}",
room.Id
); );
foreach (var roomClient in room.Clients) { foreach (var roomClient in room.Clients) {
roomClient.Send(packet); roomClient.Send(packet);
@ -104,7 +121,6 @@ class WorldEvent {
Console.WriteLine($"Event {uid} end: {results} {targets}"); Console.WriteLine($"Event {uid} end: {results} {targets}");
NetworkObject wedata = new();
NetworkArray vl = new(); NetworkArray vl = new();
NetworkArray vl1 = new(); NetworkArray vl1 = new();
vl1.Add("WE__AI"); vl1.Add("WE__AI");
@ -129,20 +145,13 @@ class WorldEvent {
vl3.Add(false); vl3.Add(false);
vl.Add(vl3); vl.Add(vl3);
} }
wedata.Add("r", room.Id); packet = Utils.VlNetworkPacket(vl, room.Id);
wedata.Add("vl", vl);
packet = NetworkObject.WrapObject(0, 11, wedata).Serialize();
foreach (var roomClient in room.Clients) { foreach (var roomClient in room.Clients) {
roomClient.Send(packet); roomClient.Send(packet);
} }
Reset(4); // (re)schedule event reset and announcement of next event
ResetTimer(10);
timer = new System.Timers.Timer(10000);
timer.Elapsed += PostEndEvent;
timer.AutoReset = false;
timer.Enabled = true;
return true; return true;
} }
@ -150,12 +159,14 @@ class WorldEvent {
} }
private void PostEndEvent(Object source, ElapsedEventArgs e) { private void PostEndEvent(Object source, ElapsedEventArgs e) {
NetworkPacket packet = Utils.ArrNetworkPacket( new string[] { Reset(7);
"WESR",
"WE_ScoutAttack|" + EventInfo() Console.WriteLine($"Event {uid} send event notification (WE_ + WEN_) to all clients");
}); NetworkPacket packet = Utils.VlNetworkPacket(EventInfoArray(), room.Id);
foreach (var roomClient in room.Clients) { foreach (var r in Room.AllRooms()) {
roomClient.Send(packet); foreach (var roomClient in r.Clients) {
roomClient.Send(packet);
}
} }
} }
@ -164,8 +175,24 @@ class WorldEvent {
return startTimeString + "," + uid + ", false, HubTrainingDO"; return startTimeString + "," + uid + ", false, HubTrainingDO";
} }
public string EventInfoNext() { public NetworkArray EventInfoArray(bool x = false) {
return startTimeString; // TODO on og this was different time (real next event?) NetworkArray vl = new();
NetworkArray vl1 = new();
vl1.Add("WE_ScoutAttack");
vl1.Add((Byte)4);
vl1.Add(EventInfo());
vl1.Add(false);
vl1.Add(x);
vl.Add(vl1);
NetworkArray vl2 = new();
vl2.Add("WEN_ScoutAttack");
vl2.Add((Byte)4);
vl2.Add(startTimeString);
vl2.Add(false);
vl2.Add(x);
vl.Add(vl2);
return vl;
} }
public string GetUid() => uid; public string GetUid() => uid;