(ServerDataMessage serverData)
| 248 | */ |
| 249 | //checked once, was ok. |
| 250 | public static void ParseServerData(ServerDataMessage serverData) { |
| 251 | Com.DPrintf("ParseServerData():Serverdata packet received.\n"); |
| 252 | // |
| 253 | // wipe the client_state_t struct |
| 254 | // |
| 255 | CL.ClearState(); |
| 256 | ClientGlobals.cls.state = Defines.ca_connected; |
| 257 | |
| 258 | // parse protocol version number |
| 259 | ClientGlobals.cls.serverProtocol = serverData.protocol; |
| 260 | |
| 261 | // BIG HACK to let demos from release work with the 3.0x patch!!! |
| 262 | // fixme: get rid of this |
| 263 | if (Globals.server_state == ServerStates.SS_DEAD || Defines.PROTOCOL_VERSION != 34) { |
| 264 | if (serverData.protocol != Defines.PROTOCOL_VERSION) |
| 265 | Com.Error(Defines.ERR_DROP, "Server returned version " + serverData.protocol |
| 266 | + ", not " + Defines.PROTOCOL_VERSION); |
| 267 | } |
| 268 | |
| 269 | ClientGlobals.cl.servercount = serverData.spawnCount; |
| 270 | ClientGlobals.cl.attractloop = serverData.demo; |
| 271 | |
| 272 | // game directory |
| 273 | ClientGlobals.cl.gamedir = serverData.gameName; |
| 274 | Com.dprintln("gamedir=" + serverData.gameName); |
| 275 | |
| 276 | // set gamedir |
| 277 | // wtf?! |
| 278 | if (serverData.gameName.length() > 0 |
| 279 | && (FS.fs_gamedirvar.string == null |
| 280 | || FS.fs_gamedirvar.string.length() == 0 || FS.fs_gamedirvar.string |
| 281 | .equals(serverData.gameName)) |
| 282 | || (serverData.gameName.length() == 0 && (FS.fs_gamedirvar.string != null || FS.fs_gamedirvar.string |
| 283 | .length() == 0))) |
| 284 | Cvar.getInstance().Set("game", serverData.gameName); |
| 285 | |
| 286 | // parse player entity number |
| 287 | ClientGlobals.cl.playernum = serverData.playerNumber; |
| 288 | Com.dprintln("numplayers=" + ClientGlobals.cl.playernum); |
| 289 | // get the full level name |
| 290 | Com.dprintln("levelname=" + serverData.levelString); |
| 291 | |
| 292 | if (ClientGlobals.cl.playernum == -1) { // playing a cinematic or showing a |
| 293 | // pic, not a level |
| 294 | SCR.PlayCinematic(serverData.levelString); |
| 295 | } else { |
| 296 | // seperate the printfs so the server message can have a color |
| 297 | // Com.Printf( |
| 298 | // "\n\n\35\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\37\n\n"); |
| 299 | // Com.Printf('\02' + str + "\n"); |
| 300 | Com.Printf("Levelname:" + serverData.levelString + "\n"); |
| 301 | // need to prep refresh at next oportunity |
| 302 | ClientGlobals.cl.refresh_prepped = false; |
| 303 | } |
| 304 | } |
| 305 | |
| 306 | /* |
| 307 | * ================ CL_LoadClientinfo |
no test coverage detected