forked from NtsFranz/Spark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNetMQEvents.cs
67 lines (60 loc) · 1.81 KB
/
NetMQEvents.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using EchoVRAPI;
using NetMQ;
using NetMQ.Sockets;
using Spark.Data_Containers.ZMQ_Messages;
namespace Spark
{
public class NetMQEvents
{
private readonly PublisherSocket pubSocket;
public NetMQEvents()
{
try
{
AsyncIO.ForceDotNet.Force();
NetMQConfig.Cleanup();
pubSocket = new PublisherSocket();
pubSocket.Options.SendHighWatermark = 1000;
pubSocket.Bind("tcp://*:12345");
}
catch (Exception e)
{
Logger.LogRow(Logger.LogType.Error, $"Error setting up pub/sub system: {e}");
}
Program.FrameFetched += (time, session, bones) =>
{
pubSocket.SendMoreFrame("RawFrame").SendFrame(session);
};
Program.NewFrame += frame =>
{
};
Program.NewArenaFrame += frame =>
{
pubSocket.SendMoreFrame("TimeAndScore").SendFrame($"{frame.game_clock:0.00} Orange: {frame.orange_points} Blue: {frame.blue_points}");
};
Program.JoinedGame += frame =>
{
MatchEventZMQMessage msg = new MatchEventZMQMessage("NewMatch", "sessionid", frame.sessionid);
pubSocket.SendMoreFrame("MatchEvent").SendFrame(msg.ToJsonString());
};
Program.LeftGame += frame =>
{
MatchEventZMQMessage msg = new MatchEventZMQMessage("LeaveMatch", "sessionid", frame.sessionid);
pubSocket.SendMoreFrame("MatchEvent").SendFrame(msg.ToJsonString());
};
Program.GoalImmediate += frame => {
bool shouldPlayHorn = frame.ClientTeamColor == Team.TeamColor.spectator || frame.ClientTeamColor.ToString() == frame.last_score.team;
MatchEventZMQMessage msg = new MatchEventZMQMessage("GoalScored", "isClientTeam", shouldPlayHorn.ToString());
pubSocket.SendMoreFrame("MatchEvent").SendFrame(msg.ToJsonString());
};
}
public void CloseApp()
{
if (pubSocket != null)
{
pubSocket.SendMoreFrame("CloseApp").SendFrame("");
}
}
}
}