/
GameData.go
178 lines (167 loc) · 6.77 KB
/
GameData.go
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
package theater
import (
"github.com/OSHeroes/bfheroesFesl/inter/network"
"github.com/OSHeroes/bfheroesFesl/inter/network/codec"
"github.com/sirupsen/logrus"
)
// GameClient Represents a game client connected to theater
type GameClient struct {
ip string
port string
}
// GameServer Represents a game server and it's data
type GameServer struct {
ip string
port string
intIP string
intPort string
name string
level string
activePlayers int
maxPlayers int
queueLength int
joiningPlayers int
gameMode string
elo float64
numObservers int
maxObservers int
sguid string
hash string
password string
ugid string
sType string
join string
version string
dataCenter string
serverMap string
armyBalance string
armyDistribution string
availSlotsNational bool
availSlotsRoyal bool
Platform string
avgAllyRank float64
avgAxisRank float64
serverState string
communityName string
}
type reqGDAT struct {
// TID=3
TID int `fesl:"TID"`
// LID=0
LobbyID int `fesl:"LID"`
// GID=1
GameID int `fesl:"GID"`
}
type ansGDAT struct {
Ap string `fesl:"AP"` //act players
ArmyDistribution string `fesl:"B-U-army_distribution"`
AvailableVipsNation string `fesl:"B-U-avail_vips_national"`
AvailableVipsRoyal string `fesl:"B-U-avail_vips_royal"`
AvgAllyRank string `fesl:"B-U-avg_ally_rank"`
AvgAxisRank string `fesl:"B-U-avg_axis_rank"`
AvgLevel string `fesl:"B-U-lvl_avg"`
Easyzone string `fesl:"B-U-easyzone"`
EloRank string `fesl:"B-U-elo_rank"`
GameID string `fesl:"GID"`
IsRanked string `fesl:"B-U-ranked"`
Join string `fesl:"JOIN"`
LobbyID string `fesl:"LID"`
MapName string `fesl:"B-U-map_name"`
PunkBusterEnabled string `fesl:"B-U-punkb"`
ServerName string `fesl:"NAME"`
Platform string `fesl:"PC"`
ServerType string `fesl:"B-U-servertype"`
StdDevLevel string `fesl:"B-U-lvl_sdv"`
TID string `fesl:"TID"`
BMaxObservers string `fesl:"B-maxObservers"`
BNumObservers string `fesl:"B-numObservers"`
BUAlwaysQueue string `fesl:"B-U-alwaysQueue"`
BUArmyBalance string `fesl:"B-U-army_balance"`
BUAvailSlotsNational string `fesl:"B-U-avail_slots_national"`
BUAvailSlotsRoyal string `fesl:"B-U-avail_slots_royal"`
BUCommunityName string `fesl:"B-U-community_name"`
BUDataCenter string `fesl:"B-U-data_center"`
BUMap string `fesl:"B-U-map"`
BUPercentFull string `fesl:"B-U-percent_full"`
BUServerIP string `fesl:"B-U-server_ip"`
BUServerPort string `fesl:"B-U-server_port"`
BUServerState string `fesl:"B-U-server_state"`
BVersion string `fesl:"B-version"`
DisableAutoDequeue string `fesl:"DISABLE-AUTO-DEQUEUE"`
Httype string `fesl:"HTTYPE"`
Hxfr string `fesl:"HXFR"`
IntIp string `fesl:"INT-IP"`
IntPort string `fesl:"INT-PORT"`
IP string `fesl:"IP"`
MaxPlayers string `fesl:"MAX-PLAYERS"`
Port string `fesl:"PORT"`
Qlen string `fesl:"QLEN"`
QueueLength string `fesl:"QUEUE-LENGTH"`
ReserveHost string `fesl:"RESERVE-HOST"`
Rt string `fesl:"RT"`
Secret string `fesl:"SECRET"`
Message string `fesl:"TYPE"`
Ugid string `fesl:"UGID"`
}
// GDAT - CLIENT called to get data about the server
func (tm *Theater) GDAT(event network.EvProcess) {
logrus.Println("=======GDAT======")
////////////////////////////////////////////
gameID := event.Process.Msg["GID"]
gameServer := tm.level.NewObject("gdata", gameID)
////////////////////////////////////////////
event.Client.Answer(&codec.Packet{
Message: thtrGDAT,
Content: ansGDAT{
TID: event.Process.Msg["TID"],
Ap: gameServer.Get("AP"),
GameID: gameID, //(GID)
LobbyID: gameServer.Get("LID"),
ArmyDistribution: gameServer.Get("B-U-army_distribution"),
AvailableVipsNation: gameServer.Get("B-U-avail_vips_national"),
AvailableVipsRoyal: gameServer.Get("B-U-avail_vips_royal"),
AvgAllyRank: gameServer.Get("B-U-avg_ally_rank"),
AvgAxisRank: gameServer.Get("B-U-avg_axis_rank"),
Easyzone: gameServer.Get("B-U-easyzone"),
EloRank: gameServer.Get("B-U-elo_rank"),
AvgLevel: gameServer.Get("B-U-lvl_avg"),
StdDevLevel: gameServer.Get("B-U-lvl_sdv"),
MapName: gameServer.Get("B-U-map_name"),
PunkBusterEnabled: gameServer.Get("B-U-punkb"),
IsRanked: gameServer.Get("B-U-ranked"),
ServerType: gameServer.Get("B-U-servertype"),
Join: gameServer.Get("JOIN"),
ServerName: gameServer.Get("NAME"),
BMaxObservers: gameServer.Get("B-maxObservers"),
BNumObservers: gameServer.Get("B-numObservers"),
BUAlwaysQueue: gameServer.Get("B-U-alwaysQueue"),
BUArmyBalance: gameServer.Get("B-U-army_balance"),
BUAvailSlotsNational: gameServer.Get("B-U-avail_slots_national"),
BUAvailSlotsRoyal: gameServer.Get("B-U-avail_slots_royal"),
BUCommunityName: gameServer.Get("B-U-community_name"),
BUDataCenter: gameServer.Get("B-U-data_center"),
BUMap: gameServer.Get("B-U-map"),
BUPercentFull: gameServer.Get("B-U-percent_full"),
BUServerIP: gameServer.Get("B-U-server_ip"),
BUServerPort: gameServer.Get("B-U-server_port"),
BUServerState: gameServer.Get("B-U-server_state"),
BVersion: gameServer.Get("B-version"),
DisableAutoDequeue: gameServer.Get("DISABLE-AUTO-DEQUEUE"),
Httype: gameServer.Get("HTTYPE"),
Hxfr: gameServer.Get("HXFR"),
IntIp: gameServer.Get("INT-IP"),
IntPort: gameServer.Get("INT-PORT"),
IP: gameServer.Get("IP"),
Platform: gameServer.Get("PL"),
MaxPlayers: gameServer.Get("MAX-PLAYERS"),
Port: gameServer.Get("PORT"),
Qlen: gameServer.Get("QLEN"),
QueueLength: gameServer.Get("QUEUE-LENGTH"),
ReserveHost: gameServer.Get("RESERVE-HOST"),
Rt: gameServer.Get("RT"),
Secret: gameServer.Get("SECRET"),
Message: gameServer.Get("TYPE"),
Ugid: gameServer.Get("UGID"),
},
})
}