public void onPlayerJoined(Player player) { if (player.JoinData["gameVersion"] != GameConfig.GAME_VERSION.ToString()) //make sure client & server are of the same version always { //either client or server version is too old (if client - update fixes that, if server - user probably will catch new version next time) player.sendMessage(MessageTypes.GAME_UPDATED); player.Disconnect(); return; } _roomLink.versionManager.checkVersion(); //client & server may be the same, but old version. Check for new one. //Just set values here. Don't care much about what is player's intentions are ATM. player.realID = player.ConnectUserId; player.setRoomLink(_roomLink); _registrationManager.checkIfNewbie(player); if (player.realID == _roomLink.RoomId || (player.isGuest && player.JoinData.ContainsKey("theboss"))) { player.isRoomCreator = true; _roomCreator = player; //save link for convenience _roomLink.playerEnergyTimer.onRoomCreated(_roomCreator, _roomLink); //do energy checks for creator, maybe start timer player.Send(MessageTypes.AUTH_DATA, player.PlayerObject.GetInt(DBProperties.ENERGY), _roomLink.playerEnergyTimer.getTimeOfNextUpdate(), Utils.unixSecs()); } if (player.JoinData.ContainsKey("safeBattle")) //wants to play safe battle { Console.WriteLine("Player join data contains safeBattle! : " + player.realID); if (_roomLink.game == null && _battleRequestWaiter == null) //if not currently playing or awaiting game & nobody is not waiting for response anymore { _battleRequestWaiter = player; _roomCreator.Send(MessageTypes.BATTLE_REQUESTED, player.realID); } else { player.Send(MessageTypes.PLAYER_PLAYING_ALREADY); player.Disconnect(); } } else Console.WriteLine("Player join data does not contain safeBattle! : " + player.realID); }
/** * Player decided not to "play again". * If it is room owner - kick all other guys out * If it was a guest - just disconnect him */ public void onPlayerLeaving(Player leaver) { if (leaver.isRoomCreator) { foreach (Player pl in _roomLink.Players) { if (!pl.isRoomCreator) pl.Disconnect(); } cleanUp(); } else leaver.Disconnect(); }