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); }
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); } }