From 0a4b8ebeb2ca1fd953da3a6c29929d59dcf8d91f Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Tue, 17 Nov 2020 15:16:14 +0000 Subject: [PATCH] progress --- Sledgemapper.Api/Commands/BaseCommand.cs | 9 ++++ .../Commands/SaveNewSnapshotCommand.cs | 50 +++++++++++++++++ .../Commands/SaveNewTileCommand.cs | 5 +- .../Controllers/SessionController.cs | 7 +++ .../Handlers/SendNewTileMessage.cs | 3 +- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 20 ++++--- .../Notifications/BaseNotification.cs | 15 ++++++ .../Notifications/NewTileNotification.cs | 10 +++- Sledgemapper.Api/sledgemapper.db | Bin 32768 -> 45056 bytes Sledgemapper.Shared/Entities/Session.cs | 1 + Sledgemapper/IMapApi.cs | 4 ++ Sledgemapper/Sledgemapper.cs | 51 ++++++++++++------ Sledgemapper/UI/MainWidget.Generated.cs | 9 +++- Sledgemapper/UI/mainwidget.xml | 1 + 14 files changed, 157 insertions(+), 28 deletions(-) create mode 100644 Sledgemapper.Api/Commands/SaveNewSnapshotCommand.cs diff --git a/Sledgemapper.Api/Commands/BaseCommand.cs b/Sledgemapper.Api/Commands/BaseCommand.cs index a9c3160..dd1e8be 100644 --- a/Sledgemapper.Api/Commands/BaseCommand.cs +++ b/Sledgemapper.Api/Commands/BaseCommand.cs @@ -8,6 +8,8 @@ namespace Sledgemapper.Api.Commands public double Timestamp { get; private set; } public string SessionName { get; private set; } public int UserId { get; set; } +public int SessionId {get;set;} + public BaseCommand(string sessionName, int userId) { @@ -15,5 +17,12 @@ namespace Sledgemapper.Api.Commands SessionName = sessionName; UserId=userId; } + + public BaseCommand(int sessionId, int userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + SessionId = sessionId; + UserId=userId; + } } } diff --git a/Sledgemapper.Api/Commands/SaveNewSnapshotCommand.cs b/Sledgemapper.Api/Commands/SaveNewSnapshotCommand.cs new file mode 100644 index 0000000..1af3685 --- /dev/null +++ b/Sledgemapper.Api/Commands/SaveNewSnapshotCommand.cs @@ -0,0 +1,50 @@ +using System.Transactions; +using System.Net.Mail; +using MediatR; +using Sledgemapper.Api.Data; + +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; +using Sledgemapper.Api.Handlers; +using System.Linq; +using Sledgemapper.Shared.Entities; + +namespace Sledgemapper.Api.Commands +{ + public class SaveNewSnapshotCommand : BaseCommand + { + public Session Session { get; set; } + public SaveNewSnapshotCommand(string sessionName, Session session, int userId) : base(sessionName, userId) + { + Session = session; + } + } + + public class SaveNewSnapshotCommandHandler : IRequestHandler + { + private readonly MyDbContext _dbcontext; + private readonly IMediator _mediator; + + public SaveNewSnapshotCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + + public async Task Handle(SaveNewSnapshotCommand notification, CancellationToken cancellationToken) + { + + var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); + + var newSnapshot = new Sledgemapper.Api.Models.Snapshot{ + SessionId=session.SessionId, + Timestamp=notification.Timestamp, + Object = JsonSerializer.Serialize(notification.Session) + +}; +await _dbcontext.Snapshots.AddAsync(newSnapshot); + await _dbcontext.SaveChangesAsync(); + + return true; + } + + + } +} diff --git a/Sledgemapper.Api/Commands/SaveNewTileCommand.cs b/Sledgemapper.Api/Commands/SaveNewTileCommand.cs index ec187ca..f5a8294 100644 --- a/Sledgemapper.Api/Commands/SaveNewTileCommand.cs +++ b/Sledgemapper.Api/Commands/SaveNewTileCommand.cs @@ -2,12 +2,13 @@ using System.Transactions; using System.Net.Mail; using MediatR; using Sledgemapper.Api.Data; -using Sledgemapper.Shared.Entities; + using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Handlers; using System.Linq; +using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Commands { @@ -42,7 +43,7 @@ namespace Sledgemapper.Api.Commands UserId = notification.UserId }); await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewTileNotification(notification.SessionName, notification.Tile, notification.UserId)); + await _mediator.Publish(new NewTileNotification(session, notification.Tile, notification.UserId)); return true; } diff --git a/Sledgemapper.Api/Controllers/SessionController.cs b/Sledgemapper.Api/Controllers/SessionController.cs index 4348310..7da714c 100644 --- a/Sledgemapper.Api/Controllers/SessionController.cs +++ b/Sledgemapper.Api/Controllers/SessionController.cs @@ -33,6 +33,13 @@ namespace Sledgemapper.Api.Controllers return result; } + [HttpPost("snapshot")] + public async Task Post(string sessionName, [FromBody] Session session) + { + var userId = int.Parse(HttpContext.User.Identity.Name); + await _mediator.Send(new SaveNewSnapshotCommand(sessionName, session, userId)); + } + [HttpPost("tile")] public async Task Post(string sessionName, [FromBody] Tile tile) { diff --git a/Sledgemapper.Api/Handlers/SendNewTileMessage.cs b/Sledgemapper.Api/Handlers/SendNewTileMessage.cs index b03bd95..4feb9a7 100644 --- a/Sledgemapper.Api/Handlers/SendNewTileMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewTileMessage.cs @@ -15,7 +15,8 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewTileNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.SessionName).NewTile(notification.Tile); + + await _hub.Clients.Groups(notification.Session.SessionName).NewTile(notification.Tile); } } } diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index d9c2bc3..b918919 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -152,7 +152,7 @@ namespace SignalRChat.Hubs _dbContext.SessionUsers.Add(userSession); await _dbContext.SaveChangesAsync(); - var usersSession = _dbContext.SessionUsers.Where(m => m.SessionId == session.SessionId).Select(m => m.UserId).ToList(); + //var usersSession = _dbContext.SessionUsers.Where(m => m.SessionId == session.SessionId).Select(m => m.UserId).ToList(); // var players = _datacontext. // Users. // Where(m => usersSession.Contains(m.Id)).ToList(). @@ -165,17 +165,20 @@ namespace SignalRChat.Hubs // Position = new Tile { X = 0, Y = 0 } // }).ToList(); - await _dbContext.SaveChangesAsync(); + //await _dbContext.SaveChangesAsync(); - await Groups.AddToGroupAsync(Context.ConnectionId, sessionName); + await Groups.AddToGroupAsync(Context.ConnectionId, session.SessionName); var user = _datacontext.Users.First(u => u.Id == userId); var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == session.SessionId).OrderBy(m => m.UserId).ToList(); - var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = Colors[SessionUsers.IndexOf(SessionUsers.FirstOrDefault(m => m.UserId == userId))] }; + var u = SessionUsers.FirstOrDefault(m => m.UserId == userId); + var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = Colors[SessionUsers.IndexOf(u)] }; await Clients.Group(sessionName).NewPlayer(player); + var newSession = new Sledgemapper.Shared.Entities.Session { - SessionName = sessionName + SessionName = sessionName, + SessionId = session.SessionId }; return newSession; @@ -199,11 +202,11 @@ namespace SignalRChat.Hubs // } } - public async Task UpdatePosition(string sessionName, Tile tile) + public async Task UpdatePosition(string sessionName,int sessionId, Tile tile) { var userId = int.Parse(Context.User.Identity.Name); - var session = _dbContext.Sessions.FirstOrDefault(m => m.SessionName == sessionName); - var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == session.SessionId).OrderBy(m => m.UserId).ToList(); + //var session = _dbContext.Sessions.FirstOrDefault(m => m.SessionName == sessionName); + var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); var user = _datacontext.Users.First(u => u.Id == userId); var player = new Player { UserId = userId, Initials = user.Initials, Position = tile, Color = Colors[SessionUsers.IndexOf(SessionUsers.FirstOrDefault(m => m.UserId == userId))] }; await Clients.Group(sessionName).PlayerUpdate(player); @@ -242,6 +245,7 @@ namespace SignalRChat.Hubs { _dbContext.UserConnections.Remove(userConnection); } + var userSessions = _dbContext.SessionUsers.Where(m => m.UserId == userConnection.UserId).ToList(); { foreach (var userSession in userSessions) diff --git a/Sledgemapper.Api/Notifications/BaseNotification.cs b/Sledgemapper.Api/Notifications/BaseNotification.cs index 0a82f1c..110a5a7 100644 --- a/Sledgemapper.Api/Notifications/BaseNotification.cs +++ b/Sledgemapper.Api/Notifications/BaseNotification.cs @@ -1,4 +1,5 @@ using MediatR; +using Sledgemapper.Shared.Entities; using System; namespace Sledgemapper.Api.Handlers @@ -8,6 +9,8 @@ namespace Sledgemapper.Api.Handlers public double Timestamp { get; private set; } public string SessionName { get; private set; } public int UserId { get; private set; } + public int SessionId { get; set; } + public Models.Session Session { get; set; } public BaseNotification(string sessionName, int userId) { @@ -15,5 +18,17 @@ namespace Sledgemapper.Api.Handlers SessionName = sessionName; UserId = userId; } + + public BaseNotification(Models.Session session, int userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + Session = session;; + UserId = userId; + } + + public BaseNotification(int sessionId, string sessionName, int userId) : this(sessionName, userId) + { + SessionId = sessionId; + } } } diff --git a/Sledgemapper.Api/Notifications/NewTileNotification.cs b/Sledgemapper.Api/Notifications/NewTileNotification.cs index 433bcd1..d920c30 100644 --- a/Sledgemapper.Api/Notifications/NewTileNotification.cs +++ b/Sledgemapper.Api/Notifications/NewTileNotification.cs @@ -1,3 +1,6 @@ + + +using Sledgemapper.Api.Models; using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Handlers @@ -6,7 +9,12 @@ namespace Sledgemapper.Api.Handlers { public Tile Tile { get; private set; } - public NewTileNotification(string sessionName, Tile tile, int userId) : base(sessionName, userId) + public NewTileNotification(Models.Session session, Tile tile, int userId) : base(session, userId) + { + Tile = tile; + } + + public NewTileNotification(int sessionId, string sessionName, Tile tile, int userId) : base(sessionId, sessionName, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/sledgemapper.db b/Sledgemapper.Api/sledgemapper.db index 96676dd6ee9eed605ce081b81c56605c29c3b1b6..94d51261b40656cbcd35dbbed85c4cdbe7ab2d9a 100644 GIT binary patch literal 45056 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 d(M9G6A$k%ix}lGRpo%1YA(bIIQl7%!{1G zqHAXz9MYj!6ch(_F@Y|3+`Y%=;#VHWJgF*9M3Wt>!FX@~8pcc!oryZ(4nAD{B{htV z-o?Ah>X(n&Ec&F-C5&*7XFQ;r+3QzWsVK3eHGQug9tBZ_iz;ij!tglo<&+c)Y{zSF z2Zv7DUt4tL91}IR8@5ij0^e^PMCDgGDv=X@@QF9%nZ0?7PU56_!D5PtDhj1I Players { get; set; } public List Colors { get; set; } public string SessionName { get; set; } + public int SessionId { get; set; } public void NewTile(Tile selectedTile, string tileId) { diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 4d7e268..1d90ce0 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -18,6 +18,10 @@ namespace Sledgemapper [Post("/session/{sessionName}")] Task NewSession(string sessionName); + [Post("/session/{sessionName}/snapshot")] + Task SaveSnapshot([Body] Session session, string sessionName); + + [Post("/session/{sessionName}/tile")] Task NewTile([Body] Tile tile, string sessionName); diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 295ff34..85aecc8 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -38,10 +38,10 @@ namespace Sledgemapper public Sledgemapper() { _graphics = new GraphicsDeviceManager(this); - - _graphics.GraphicsProfile = GraphicsProfile.Reach; - _graphics.PreferMultiSampling = false; - //GraphicsDevice?.PresentationParameters.MultiSampleCount = 8; + + _graphics.GraphicsProfile = GraphicsProfile.Reach; + _graphics.PreferMultiSampling = false; + //GraphicsDevice?.PresentationParameters.MultiSampleCount = 8; Content.RootDirectory = "Content"; _desktop = new Desktop(); @@ -91,9 +91,11 @@ namespace Sledgemapper _mainWidget.MenuConnectLogin.Selected += OnMenuConnectLoginSelected; _mainWidget.MenuConnectNew.Selected += OnMenuConnectNewSelected; _mainWidget.MenuConnectJoin.Selected += OnMenuConnectJoinSelected; + _mainWidget.MenuConnectUpload.Selected += OnMenuConnectUploadSelected; _mainWidget.MenuConnectNew.Enabled = false; _mainWidget.MenuConnectJoin.Enabled = false; _mainWidget.MenuConnectSync.Enabled = false; + _mainWidget.MenuConnectUpload.Enabled = false; AddItemToToolGrid(_mainWidget.GridTiles, OnTileButtonClicked, "tiles"); AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, "walls"); @@ -140,7 +142,7 @@ namespace Sledgemapper { _state._selectedTile.X = _state._hoveredTile.X; _state._selectedTile.Y = _state._hoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state._selectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state._selectedTile); } if (newState.IsKeyDown(Keys.LeftControl) @@ -152,7 +154,7 @@ namespace Sledgemapper case InsertMode.Tile: _state._selectedTile.X = _state._hoveredTile.X; _state._selectedTile.Y = _state._hoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state._selectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state._selectedTile); _sessionData.NewTile(_state._selectedTile, _state._currentTileId); break; @@ -258,7 +260,7 @@ namespace Sledgemapper if (string.IsNullOrWhiteSpace(_sessionData.SessionName)) { - _spriteBatch.DrawRectangle(new Rectangle((_state._selectedTile.X * _state._tileSize)-2,(_state._selectedTile.Y * _state._tileSize)-2, _state._tileSize + 3, _state._tileSize + 3), Color.Red, 2); + _spriteBatch.DrawRectangle(new Rectangle((_state._selectedTile.X * _state._tileSize) - 2, (_state._selectedTile.Y * _state._tileSize) - 2, _state._tileSize + 3, _state._tileSize + 3), Color.Red, 2); } DrawPlayers(); @@ -432,9 +434,13 @@ namespace Sledgemapper _sessionData.Map = result.Map; _sessionData.Walls = result.Walls; _sessionData.Overlays = result.Overlays; - + + _sessionData.MapEntityAdded -= OnMapEntityAdded; + _sessionData.MapEntityDeleted -= OnMapEntityDeleted; _sessionData.MapEntityAdded += OnMapEntityAdded; _sessionData.MapEntityDeleted += OnMapEntityDeleted; + _sessionData.SessionId = result.SessionId; + _sessionData.SessionName = result.SessionName; } successful = result != null; } @@ -475,19 +481,24 @@ namespace Sledgemapper { var result = await _communicationManager.Api.NewSession(localContent.TxtSession.Text); - // var session = await _communicationManager.Connection?.InvokeAsync("NewSession", localContent.TxtSession.Text, _authResponse.Initials); + // var session = await _communicationManager.Connection?.InvokeAsync("NewSession", localContent.TxtSession.Text, _authResponse.Initials); if (result) { //_sessionData; + _sessionData.SessionName = localContent.TxtSession.Text; + _sessionData.MapEntityAdded -= OnMapEntityAdded; + _sessionData.MapEntityDeleted -= OnMapEntityDeleted; _sessionData.MapEntityAdded += OnMapEntityAdded; - // _sessionData.Players = session.Players; + _sessionData.MapEntityDeleted += OnMapEntityDeleted; + // _sessionData.Players = session.Players; } successful = result; var result2 = await _communicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - + _sessionData.SessionId = result2.SessionId; + _sessionData.SessionName = localContent.TxtSession.Text; } catch (Exception ex) { @@ -524,7 +535,7 @@ namespace Sledgemapper var successful = false; try { - + _authResponse = await _communicationManager.Login(new AuthenticateModel { Username = localContent.TxtEmail.Text, @@ -688,9 +699,19 @@ namespace Sledgemapper private async void OnMenuConnectSyncSelected(object sender, EventArgs e) { - // await _communicationManager.Connection?.InvokeAsync("Sync", _sessionData.SessionName, _sessionData); - var serverMap = await _communicationManager.Api.Session(_sessionData.SessionName); - + // await _communicationManager.Connection?.InvokeAsync("Sync", _sessionData.SessionName, _sessionData); + var serverMap = await _communicationManager.Api.Session(_sessionData.SessionName); + _sessionData.Overlays = serverMap.Overlays; + _sessionData.Map = serverMap.Map; + _sessionData.Walls = serverMap.Walls; + } + + private async void OnMenuConnectUploadSelected(object sender, EventArgs e) + { + await _communicationManager.Api.SaveSnapshot(_sessionData, _sessionData.SessionName); + // _sessionData.Overlays = serverMap.Overlays; + // _sessionData.Map = serverMap.Map; + // _sessionData.Walls = serverMap.Walls; } private void OnMenuConnectNewSelected(object sender, EventArgs e) diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index d0b5cc3..bb10ac2 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 11/11/2020 09:47:53 */ +/* Generated by MyraPad at 17/11/2020 15:10:52 */ using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; @@ -64,6 +64,11 @@ namespace Sledgemapper.UI MenuConnectSync.ShortcutText = "Ctrl+Y"; MenuConnectSync.Id = "MenuConnectSync"; + MenuConnectUpload = new MenuItem(); + MenuConnectUpload.Text = "&Upload"; + MenuConnectUpload.ShortcutText = "Ctrl+U"; + MenuConnectUpload.Id = "MenuConnectUpload"; + var menuItem1 = new MenuItem(); menuItem1.Text = "&Connect"; menuItem1.Items.Add(MenuConnectLogin); @@ -71,6 +76,7 @@ namespace Sledgemapper.UI menuItem1.Items.Add(MenuConnectNew); menuItem1.Items.Add(MenuConnectJoin); menuItem1.Items.Add(MenuConnectSync); + menuItem1.Items.Add(MenuConnectUpload); MenuHelpAbout = new MenuItem(); MenuHelpAbout.Text = "&About"; @@ -190,6 +196,7 @@ namespace Sledgemapper.UI public MenuItem MenuConnectNew; public MenuItem MenuConnectJoin; public MenuItem MenuConnectSync; + public MenuItem MenuConnectUpload; public MenuItem MenuHelpAbout; public HorizontalMenu _mainMenu; public Grid GridTiles; diff --git a/Sledgemapper/UI/mainwidget.xml b/Sledgemapper/UI/mainwidget.xml index 8dfb054..af587b5 100644 --- a/Sledgemapper/UI/mainwidget.xml +++ b/Sledgemapper/UI/mainwidget.xml @@ -18,6 +18,7 @@ +