public void StartGame(IPlayerBodyFacade player)
        {
            var playerBody = player as PlayerBody;

            //Calculate start position
            var notSolidTiles = Map.Tiles.SelectMany(v => v).Where(v =>
                                                                   v.Solid == TileSolidityType.NotSolid && v.Bodies.Count == 0);
            var tilesCount = notSolidTiles.Count();

            if (tilesCount > 0)
            {
                var tileNumber = _randomizer.Next(tilesCount - 1);
                var tile       = notSolidTiles.ElementAt(tileNumber);

                //playerBody.Shape.Position = new Point(
                //    tile.Shape.Position.X,
                //    tile.Shape.Position.Y);

                playerBody.Shape.Position = new Point(300, 300);
            }

            playerBody.Heal(playerBody.LifeMax);

            AddBody(playerBody);
        }
Exemple #2
0
        public static void UpdatePlayerState(IPlayerBodyFacade playerBodyFacade)
        {
            var playerMapping = _connectionsPlayerMapping.FirstOrDefault(v => v.Value.Player.Id == playerBodyFacade.Id);

            //Find connectionId
            if (playerMapping.Value != null)
            {
                var clientConnection = GlobalHost.ConnectionManager.GetHubContext <SlowpokeHub>().Clients.Client(playerMapping.Key);
                clientConnection.playerStateChanged(playerBodyFacade.State);
            }
        }