forked from SoDOff-Project/sodoff-mmo
rework pre-battle timer (notificartion)
This commit is contained in:
parent
37d23af369
commit
b58f01d101
@ -27,26 +27,6 @@ class LoginHandler : ICommandHandler
|
||||
rl.Add(r1);
|
||||
|
||||
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("ADMIN");
|
||||
r2.Add("default");
|
||||
@ -55,7 +35,7 @@ class LoginHandler : ICommandHandler
|
||||
r2.Add(true);
|
||||
r2.Add((short)0);
|
||||
r2.Add((short)1);
|
||||
r2.Add(we);
|
||||
r2.Add(WorldEvent.Get().EventInfoArray(true));
|
||||
rl.Add(r2);
|
||||
|
||||
NetworkArray r3 = new();
|
||||
|
@ -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]]}}
|
||||
NetworkPacket packet = Utils.VlNetworkPacket(
|
||||
"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) {
|
||||
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]]}}
|
||||
NetworkPacket packet = Utils.VlNetworkPacket(
|
||||
"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) {
|
||||
roomClient.Send(packet);
|
||||
|
@ -50,4 +50,8 @@ public class Room {
|
||||
public static void Add(string name) {
|
||||
rooms[name] = new Room(rooms.Count + 3, name);
|
||||
}
|
||||
|
||||
public static Room[] AllRooms() {
|
||||
return rooms.Values.ToArray();
|
||||
}
|
||||
}
|
||||
|
@ -22,23 +22,23 @@ internal static class Utils {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static NetworkPacket VlNetworkPacket(NetworkArray vl2, int roomID) {
|
||||
NetworkObject wedata = new();
|
||||
NetworkArray vl = new();
|
||||
vl.Add(vl2);
|
||||
wedata.Add("r", roomID);
|
||||
wedata.Add("vl", vl);
|
||||
return NetworkObject.WrapObject(0, 11, wedata).Serialize();
|
||||
public static NetworkPacket VlNetworkPacket(NetworkArray vl, int roomID) {
|
||||
NetworkObject obj = new();
|
||||
obj.Add("r", roomID);
|
||||
obj.Add("vl", vl);
|
||||
return NetworkObject.WrapObject(0, 11, obj).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();
|
||||
vl2.Add(a);
|
||||
vl2.Add((Byte)4);
|
||||
vl2.Add(b);
|
||||
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) {
|
||||
|
@ -12,7 +12,7 @@ class WorldEvent {
|
||||
private static WorldEvent _instance = null;
|
||||
private object EventLock = new object();
|
||||
private Random random = new Random();
|
||||
private System.Timers.Timer timer;
|
||||
private System.Timers.Timer timer = null;
|
||||
|
||||
public static WorldEvent Get() {
|
||||
if (_instance == null) {
|
||||
@ -22,7 +22,7 @@ class WorldEvent {
|
||||
}
|
||||
|
||||
private WorldEvent() {
|
||||
Reset(1.3f);
|
||||
Reset(3.3f);
|
||||
}
|
||||
|
||||
private Room room;
|
||||
@ -52,9 +52,25 @@ class WorldEvent {
|
||||
endTimeIsSet = false;
|
||||
|
||||
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() {
|
||||
lock (EventLock) {
|
||||
if (AITime < DateTime.UtcNow) {
|
||||
@ -69,7 +85,7 @@ class WorldEvent {
|
||||
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}");
|
||||
}
|
||||
}
|
||||
@ -96,7 +112,8 @@ class WorldEvent {
|
||||
|
||||
NetworkPacket packet = Utils.VlNetworkPacket(
|
||||
"WE_ScoutAttack_End",
|
||||
$"{uid};{results};{scores};{targets}"
|
||||
$"{uid};{results};{scores};{targets}",
|
||||
room.Id
|
||||
);
|
||||
foreach (var roomClient in room.Clients) {
|
||||
roomClient.Send(packet);
|
||||
@ -104,7 +121,6 @@ class WorldEvent {
|
||||
|
||||
Console.WriteLine($"Event {uid} end: {results} {targets}");
|
||||
|
||||
NetworkObject wedata = new();
|
||||
NetworkArray vl = new();
|
||||
NetworkArray vl1 = new();
|
||||
vl1.Add("WE__AI");
|
||||
@ -129,20 +145,13 @@ class WorldEvent {
|
||||
vl3.Add(false);
|
||||
vl.Add(vl3);
|
||||
}
|
||||
wedata.Add("r", room.Id);
|
||||
wedata.Add("vl", vl);
|
||||
packet = NetworkObject.WrapObject(0, 11, wedata).Serialize();
|
||||
|
||||
packet = Utils.VlNetworkPacket(vl, room.Id);
|
||||
foreach (var roomClient in room.Clients) {
|
||||
roomClient.Send(packet);
|
||||
}
|
||||
|
||||
Reset(4);
|
||||
|
||||
timer = new System.Timers.Timer(10000);
|
||||
timer.Elapsed += PostEndEvent;
|
||||
timer.AutoReset = false;
|
||||
timer.Enabled = true;
|
||||
// (re)schedule event reset and announcement of next event
|
||||
ResetTimer(10);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -150,22 +159,40 @@ class WorldEvent {
|
||||
}
|
||||
|
||||
private void PostEndEvent(Object source, ElapsedEventArgs e) {
|
||||
NetworkPacket packet = Utils.ArrNetworkPacket( new string[] {
|
||||
"WESR",
|
||||
"WE_ScoutAttack|" + EventInfo()
|
||||
});
|
||||
foreach (var roomClient in room.Clients) {
|
||||
Reset(7);
|
||||
|
||||
Console.WriteLine($"Event {uid} send event notification (WE_ + WEN_) to all clients");
|
||||
NetworkPacket packet = Utils.VlNetworkPacket(EventInfoArray(), room.Id);
|
||||
foreach (var r in Room.AllRooms()) {
|
||||
foreach (var roomClient in r.Clients) {
|
||||
roomClient.Send(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string EventInfo() {
|
||||
return startTimeString + "," + uid + ", false, HubTrainingDO";
|
||||
}
|
||||
|
||||
public string EventInfoNext() {
|
||||
return startTimeString; // TODO on og this was different time (real next event?)
|
||||
public NetworkArray EventInfoArray(bool x = false) {
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user