mirror of
https://github.com/SoDOff-Project/sodoff-mmo.git
synced 2025-10-11 08:18:49 -07:00
rework pre-battle timer (notificartion)
This commit is contained in:
parent
37d23af369
commit
b58f01d101
@ -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();
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user