players sync, full sync almost working
This commit is contained in:
parent
d31d448182
commit
abc24fe107
4 changed files with 25 additions and 13 deletions
|
@ -97,8 +97,11 @@ namespace MyGame
|
|||
|
||||
connection.On<Player>("PlayerUpdate", (player) =>
|
||||
{
|
||||
var p = Players.First(m => m.ConnectionId == player.ConnectionId);
|
||||
p.Position = player.Position;
|
||||
var p = Players.FirstOrDefault(m => m.ConnectionId == player.ConnectionId);
|
||||
if (p != null)
|
||||
{
|
||||
p.Position = player.Position;
|
||||
}
|
||||
});
|
||||
|
||||
connection.On<Tile>("DeleteTile", (tile) =>
|
||||
|
@ -137,7 +140,16 @@ namespace MyGame
|
|||
|
||||
connection.On<Player>("NewPlayer", (player) =>
|
||||
{
|
||||
Players.Add(player);
|
||||
var p = Players.FirstOrDefault(m => m.ConnectionId == player.ConnectionId);
|
||||
if (p is null)
|
||||
{
|
||||
Players.Add(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
p.Color = player.Color;
|
||||
p.Position = player.Position;
|
||||
}
|
||||
});
|
||||
|
||||
base.Initialize();
|
||||
|
@ -241,11 +253,11 @@ namespace MyGame
|
|||
try
|
||||
{
|
||||
var session = await connection?.InvokeAsync<SessionData>("NewSession", textbox.Text);
|
||||
if (session!=null)
|
||||
if (session != null)
|
||||
{
|
||||
Players= session.Players;
|
||||
Players = session.Players;
|
||||
}
|
||||
successful = session!=null;
|
||||
successful = session != null;
|
||||
}
|
||||
catch { }
|
||||
if (successful)
|
||||
|
@ -604,7 +616,7 @@ Players= session.Players;
|
|||
|
||||
_spriteBatch.Begin(transformMatrix: Matrix.CreateTranslation(_viewportCenter));
|
||||
|
||||
for (var i = 0; i < visibleTilesX; i++)
|
||||
for (var i = -1; i < visibleTilesX + 2; i++)
|
||||
{
|
||||
var posX1 = i * _tileSize - _viewportCenter.X;
|
||||
var posY1 = -_viewportCenter.Y;
|
||||
|
@ -622,7 +634,7 @@ Players= session.Players;
|
|||
Color.Black);
|
||||
}
|
||||
|
||||
for (var i = 0; i < visibleTilesY; i++)
|
||||
for (var i = -1; i < visibleTilesY + 2; i++)
|
||||
{
|
||||
var posX1 = -_viewportCenter.X;
|
||||
var posY1 = i * _tileSize - _viewportCenter.Y;
|
||||
|
|
2
SignalRChat/.vscode/launch.json
vendored
2
SignalRChat/.vscode/launch.json
vendored
|
@ -11,7 +11,7 @@
|
|||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
// If you have changed target frameworks, make sure to update the program path.
|
||||
"program": "${workspaceFolder}/bin/Debug/net5.0/SignalRChat.dll",
|
||||
"program": "${workspaceFolder}/SignalRChat/bin/Debug/net5.0/SignalRChat.dll",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"stopAtEntry": false,
|
||||
|
|
6
SignalRChat/.vscode/tasks.json
vendored
6
SignalRChat/.vscode/tasks.json
vendored
|
@ -7,7 +7,7 @@
|
|||
"type": "process",
|
||||
"args": [
|
||||
"build",
|
||||
"${workspaceFolder}/SignalRChat.csproj",
|
||||
"${workspaceFolder}/SignalRChat/SignalRChat.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
|
@ -19,7 +19,7 @@
|
|||
"type": "process",
|
||||
"args": [
|
||||
"publish",
|
||||
"${workspaceFolder}/SignalRChat.csproj",
|
||||
"${workspaceFolder}/SignalRChat/SignalRChat.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
|
@ -32,7 +32,7 @@
|
|||
"args": [
|
||||
"watch",
|
||||
"run",
|
||||
"${workspaceFolder}/SignalRChat.csproj",
|
||||
"${workspaceFolder}/SignalRChat/SignalRChat.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
|
|
|
@ -144,7 +144,6 @@ namespace SignalRChat.Hubs
|
|||
var player = new Player { Position = new Tile { X = 0, Y = 0 }, ConnectionId = Context.ConnectionId, Color = session.Colors[0] };
|
||||
session.Players.Add(player);
|
||||
_sessions.Add(sessionName, session);
|
||||
await Clients.Group(sessionName).SendAsync("NewPlayer", player);
|
||||
|
||||
await Groups.AddToGroupAsync(Context.ConnectionId, sessionName);
|
||||
return session;
|
||||
|
@ -157,6 +156,7 @@ namespace SignalRChat.Hubs
|
|||
var session = _sessions[sessionName];
|
||||
var player = new Player { Position = new Tile { X = 0, Y = 0 }, ConnectionId = Context.ConnectionId, Color = session.Colors[session.Players.Count] };
|
||||
session.Players.Add(player);
|
||||
await Clients.Group(sessionName).SendAsync("NewPlayer", player);
|
||||
await Groups.AddToGroupAsync(Context.ConnectionId, sessionName);
|
||||
return session;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue