/// <summary> /// Initializes the client after it has successfully joined a game on /// a game server. /// </summary> /// <param name="spawnPosition"> /// The position on the map where the server has created the <see cref="PlayerEntity"/> /// for the player /// </param> /// <param name="serverStub"> /// An object that can invoke methods on the game server /// </param> /// <returns></returns> protected async Task InitializeAsync(Point spawnPosition, IGameServerStub serverStub) { _serverStub = serverStub; PlayerPosition = spawnPosition; Map = new Map(new RemoteChunkStorage(PlayerInfo.PlayerId, _serverStub)); // Load chunk at spawn position await Map.GetAsync(spawnPosition); }
public async Task DisconnectAsync() { if (_serverStub == null) return; await _serverStub.LeaveAsync(PlayerInfo.PlayerId); _serverStub = null; PlayerPosition = Point.Zero; Map = null; }
public RemoteChunkStorage(string playerId, IGameServerStub server) { _playerId = playerId; _server = server; }