示例#1
0
        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);
        }
示例#2
0
 /**
  * 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();
 }