/// <summary> /// Move the caller to the specified position /// </summary> /// <param name="position"></param> public void UpdatePosition(Vector2 position, EPlayerDirection direction) { ServerPlayerModel candidate = ServiceProvider.GetPlayerService().GetPlayer(Context.ConnectionId); if (candidate == null) return; bool success = ServiceProvider.GetPlayerService().TryMovePlayerTo(Context.ConnectionId, position, direction); if (!success) return; string login = candidate.Pseudo; // Notify all the connected players that a player moved var players = ServiceProvider.GetPlayerService().GetAllPlayersServer(); object newPos = new { Pseudo = login, Position = position, Direction = direction }; for (int i = 0; i < players.Count; i++) { if (players[i].SignalRId == Context.ConnectionId) continue; Clients.Client(players[i].SignalRId).playerMoved(newPos); } }
/// <summary> /// Try to move a player to a specified location /// </summary> /// <param name="player"></param> /// <param name="to"></param> /// <param name="direction"></param> /// <returns></returns> public bool TryMovePlayerTo(string connectionId, Vector2 to, EPlayerDirection direction) { return MovePlayerTo(connectionId, to, direction); }
/// <summary> /// Move a given user to the specified destination (using the signalR connection Id) /// </summary> /// <param name="connectionId"></param> /// <param name="to"></param> public bool MovePlayerTo(string connectionId, Vector2 to, EPlayerDirection direction) { lock (Players) { ServerPlayerModel p = GetPlayer(connectionId); if (p == null) return false; p.Position = to; p.Direction = direction; return true; } }
/// <summary> /// Try to move a player to a specified location /// </summary> /// <param name="player"></param> /// <param name="to"></param> /// <param name="direction"></param> /// <returns></returns> public bool TryMovePlayerTo(ServerPlayerModel player, Vector2 to, EPlayerDirection direction) { return MovePlayerTo(player, to, direction); }
/// <summary> /// Move a given user to the specified destination /// </summary> /// <param name="player"></param> /// <param name="to"></param> public bool MovePlayerTo(ServerPlayerModel player, Vector2 to, EPlayerDirection direction) { return MovePlayerTo(player.SignalRId, to, direction); }