From bce97de302f543389604de61598f70a1b4cb7be4 Mon Sep 17 00:00:00 2001 From: Michele Date: Tue, 9 Feb 2021 17:13:52 +0000 Subject: [PATCH 01/81] ping on map feature complete --- Sledgemapper.Api/Commands/PingCommand.cs | 13 + .../Controllers/SessionController.cs | 11 +- .../Handlers/NewTileCommandHandler.cs | 2 - .../Handlers/PingCommandHandler.cs | 28 ++ Sledgemapper.Api/Handlers/SendPingMessage.cs | 23 + Sledgemapper.Api/Hubs/SledgemapperHub.cs | 11 +- .../Notifications/PingNotification.cs | 14 + .../Clients/ISledgemapperClient.cs | 1 + Sledgemapper.Shared/Easings.cs | 450 ++++++++++++++++++ Sledgemapper.Shared/Entities/Session.cs | 326 ++++++------- Sledgemapper.Shared/Entities/Tile.cs | 7 + Sledgemapper/CommunicationManager.cs | 13 + Sledgemapper/Content/Content.mgcb | 94 ++-- Sledgemapper/Content/handcursors | Bin 0 -> 4969 bytes Sledgemapper/Content/handcursors.png | Bin 0 -> 349 bytes Sledgemapper/Content/handcursorsIndex | 7 + Sledgemapper/Content/rippleSpriteIndex | 24 + Sledgemapper/Content/rippleSpriteMap | Bin 0 -> 14526 bytes Sledgemapper/Sledgemapper.cs | 211 +++++++- 19 files changed, 1002 insertions(+), 233 deletions(-) create mode 100644 Sledgemapper.Api/Commands/PingCommand.cs create mode 100644 Sledgemapper.Api/Handlers/PingCommandHandler.cs create mode 100644 Sledgemapper.Api/Handlers/SendPingMessage.cs create mode 100644 Sledgemapper.Api/Notifications/PingNotification.cs create mode 100644 Sledgemapper.Shared/Easings.cs create mode 100644 Sledgemapper/Content/handcursors create mode 100644 Sledgemapper/Content/handcursors.png create mode 100644 Sledgemapper/Content/handcursorsIndex create mode 100644 Sledgemapper/Content/rippleSpriteIndex create mode 100644 Sledgemapper/Content/rippleSpriteMap diff --git a/Sledgemapper.Api/Commands/PingCommand.cs b/Sledgemapper.Api/Commands/PingCommand.cs new file mode 100644 index 0000000..ef4db06 --- /dev/null +++ b/Sledgemapper.Api/Commands/PingCommand.cs @@ -0,0 +1,13 @@ +// using Sledgemapper.Shared.Entities; + +// namespace Sledgemapper.Api.Commands +// { +// public class PingCommand : BaseCommand +// { +// public Ping Location { get; private set; } +// public PingCommand(string sessionName, Ping location, int userId) : base(sessionName, userId) +// { +// Location = location; +// } +// } +// } diff --git a/Sledgemapper.Api/Controllers/SessionController.cs b/Sledgemapper.Api/Controllers/SessionController.cs index 2638ac5..4926ba2 100644 --- a/Sledgemapper.Api/Controllers/SessionController.cs +++ b/Sledgemapper.Api/Controllers/SessionController.cs @@ -2,6 +2,7 @@ using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; using System.Threading.Tasks; @@ -30,6 +31,12 @@ namespace Sledgemapper.Api.Controllers return result; } + // [HttpPost("ping")] + // public async Task Post(string sessionName, [FromBody] Ping pingLocation) + // { + // await _mediator.Send(new PingCommand(sessionName, pingLocation, UserId)); + // } + [HttpPost("snapshot")] public async Task Post(string sessionName, [FromBody] Session session) { @@ -60,13 +67,13 @@ namespace Sledgemapper.Api.Controllers await _mediator.Send(new NewNoteCommand(sessionName, note, UserId)); } - [HttpPost("room")] + [HttpPost("room")] public async Task Post(string sessionName, [FromBody] Room room) { await _mediator.Send(new NewRoomCommand(sessionName, room, UserId)); } - [HttpPost("line")] + [HttpPost("line")] public async Task Post(string sessionName, [FromBody] Line line) { await _mediator.Send(new NewLineCommand(sessionName, line, UserId)); diff --git a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs index 3169384..6b0a55c 100644 --- a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs @@ -35,7 +35,5 @@ namespace Sledgemapper.Api.Commands await _mediator.Publish(new NewTileNotification(session, notification.Tile, notification.UserId)); return true; } - - } } diff --git a/Sledgemapper.Api/Handlers/PingCommandHandler.cs b/Sledgemapper.Api/Handlers/PingCommandHandler.cs new file mode 100644 index 0000000..efc9325 --- /dev/null +++ b/Sledgemapper.Api/Handlers/PingCommandHandler.cs @@ -0,0 +1,28 @@ +// using MediatR; +// using Sledgemapper.Api.Data; +// using System.Threading; +// using System.Threading.Tasks; +// using Sledgemapper.Api.Notifications; +// using System.Linq; + +// namespace Sledgemapper.Api.Commands +// { +// public class PingCommandHandler : IRequestHandler +// { +// private readonly MyDbContext _dbcontext; +// private readonly IMediator _mediator; + +// public PingCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + +// public async Task Handle(PingCommand notification, CancellationToken cancellationToken) +// { +// var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); + + +// await _mediator.Publish(new PingNotification(session, notification.Location, notification.UserId)); +// return true; +// } + + +// } +// } diff --git a/Sledgemapper.Api/Handlers/SendPingMessage.cs b/Sledgemapper.Api/Handlers/SendPingMessage.cs new file mode 100644 index 0000000..9b7f0d9 --- /dev/null +++ b/Sledgemapper.Api/Handlers/SendPingMessage.cs @@ -0,0 +1,23 @@ +// using MediatR; +// using Microsoft.AspNetCore.SignalR; +// using Sledgemapper.Api.Notifications; +// using Sledgemapper.Clients; +// using System.Threading; +// using System.Threading.Tasks; +// using Sledgemapper.Api.Hubs; + +// namespace Sledgemapper.Api.Handlers +// { +// public class SendPingMessage : INotificationHandler +// { +// private readonly IHubContext _hub; + +// public SendPingMessage(IHubContext hub) => _hub = hub; + +// public async Task Handle(PingNotification notification, CancellationToken cancellationToken) +// { + +// await _hub.Clients.Groups(notification.Session.SessionName).Ping(notification.Location, notification.UserId); +// } +// } +// } diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index c356461..235af86 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -51,7 +51,7 @@ namespace Sledgemapper.Api.Hubs await Clients.Group(sessionName).NewRoom(room); } - public async Task NewLine(string sessionName, Line line) + public async Task NewLine(string sessionName, Line line) { await Clients.Group(sessionName).NewLine(line); } @@ -86,6 +86,15 @@ namespace Sledgemapper.Api.Hubs await Clients.Group(sessionName).DeleteOverlay(tile); } + public async Task Ping(string sessionName, Tile location) + { + var userId = int.Parse(Context.User.Identity.Name); + var user = _datacontext.Users.First(u => u.Id == userId); + + var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; + await Clients.Group(sessionName).Ping(new Ping{X=location.X, Y=location.Y, Player=player}); + } + public async Task JoinSession(string sessionName) { var session = _dbContext.Sessions.FirstOrDefault(s => s.SessionName == sessionName); diff --git a/Sledgemapper.Api/Notifications/PingNotification.cs b/Sledgemapper.Api/Notifications/PingNotification.cs new file mode 100644 index 0000000..e14c965 --- /dev/null +++ b/Sledgemapper.Api/Notifications/PingNotification.cs @@ -0,0 +1,14 @@ +// using Sledgemapper.Shared.Entities; + +// namespace Sledgemapper.Api.Notifications +// { +// public class PingNotification : BaseNotification +// { +// public Ping Location { get; private set; } + +// public PingNotification(Models.Session session, Ping location, int userId) : base(session, userId) +// { +// Location = location; +// } +// } +// } diff --git a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs index a1ec349..4e8bc07 100644 --- a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs +++ b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs @@ -20,5 +20,6 @@ namespace Sledgemapper.Clients Task UpdateMap(Session player); Task RefreshPlayers(); Task NewLine(Line line); + Task Ping(Ping ping); } } diff --git a/Sledgemapper.Shared/Easings.cs b/Sledgemapper.Shared/Easings.cs new file mode 100644 index 0000000..b82cd35 --- /dev/null +++ b/Sledgemapper.Shared/Easings.cs @@ -0,0 +1,450 @@ + +using System; +#if UNITY +using UnityEngine; +using Math = UnityEngine.Mathf; +#endif + +static public class Easings +{ + /// + /// Constant Pi. + /// + private const float PI = (float)(float)Math.PI; + + /// + /// Constant Pi / 2. + /// + private const float HALFPI =(float) (float)Math.PI / 2.0f; + + /// + /// Easing Functions enumeration + /// + public enum Functions + { + Linear, + QuadraticEaseIn, + QuadraticEaseOut, + QuadraticEaseInOut, + CubicEaseIn, + CubicEaseOut, + CubicEaseInOut, + QuarticEaseIn, + QuarticEaseOut, + QuarticEaseInOut, + QuinticEaseIn, + QuinticEaseOut, + QuinticEaseInOut, + SineEaseIn, + SineEaseOut, + SineEaseInOut, + CircularEaseIn, + CircularEaseOut, + CircularEaseInOut, + ExponentialEaseIn, + ExponentialEaseOut, + ExponentialEaseInOut, + ElasticEaseIn, + ElasticEaseOut, + ElasticEaseInOut, + BackEaseIn, + BackEaseOut, + BackEaseInOut, + BounceEaseIn, + BounceEaseOut, + BounceEaseInOut + } + + /// + /// Interpolate using the specified function. + /// + static public float Interpolate(float p, Functions function) + { + switch(function) + { + default: + case Functions.Linear: return Linear(p); + case Functions.QuadraticEaseOut: return QuadraticEaseOut(p); + case Functions.QuadraticEaseIn: return QuadraticEaseIn(p); + case Functions.QuadraticEaseInOut: return QuadraticEaseInOut(p); + case Functions.CubicEaseIn: return CubicEaseIn(p); + case Functions.CubicEaseOut: return CubicEaseOut(p); + case Functions.CubicEaseInOut: return CubicEaseInOut(p); + case Functions.QuarticEaseIn: return QuarticEaseIn(p); + case Functions.QuarticEaseOut: return QuarticEaseOut(p); + case Functions.QuarticEaseInOut: return QuarticEaseInOut(p); + case Functions.QuinticEaseIn: return QuinticEaseIn(p); + case Functions.QuinticEaseOut: return QuinticEaseOut(p); + case Functions.QuinticEaseInOut: return QuinticEaseInOut(p); + case Functions.SineEaseIn: return SineEaseIn(p); + case Functions.SineEaseOut: return SineEaseOut(p); + case Functions.SineEaseInOut: return SineEaseInOut(p); + case Functions.CircularEaseIn: return CircularEaseIn(p); + case Functions.CircularEaseOut: return CircularEaseOut(p); + case Functions.CircularEaseInOut: return CircularEaseInOut(p); + case Functions.ExponentialEaseIn: return ExponentialEaseIn(p); + case Functions.ExponentialEaseOut: return ExponentialEaseOut(p); + case Functions.ExponentialEaseInOut: return ExponentialEaseInOut(p); + case Functions.ElasticEaseIn: return ElasticEaseIn(p); + case Functions.ElasticEaseOut: return ElasticEaseOut(p); + case Functions.ElasticEaseInOut: return ElasticEaseInOut(p); + case Functions.BackEaseIn: return BackEaseIn(p); + case Functions.BackEaseOut: return BackEaseOut(p); + case Functions.BackEaseInOut: return BackEaseInOut(p); + case Functions.BounceEaseIn: return BounceEaseIn(p); + case Functions.BounceEaseOut: return BounceEaseOut(p); + case Functions.BounceEaseInOut: return BounceEaseInOut(p); + } + } + + /// + /// Modeled after the line y = x + /// + static public float Linear(float p) + { + return p; + } + + /// + /// Modeled after the parabola y = x^2 + /// + static public float QuadraticEaseIn(float p) + { + return p * p; + } + + /// + /// Modeled after the parabola y = -x^2 + 2x + /// + static public float QuadraticEaseOut(float p) + { + return -(p * (p - 2)); + } + + /// + /// Modeled after the piecewise quadratic + /// y = (1/2)((2x)^2) ; [0, 0.5) + /// y = -(1/2)((2x-1)*(2x-3) - 1) ; [0.5, 1] + /// + static public float QuadraticEaseInOut(float p) + { + if(p < 0.5f) + { + return 2 * p * p; + } + else + { + return (-2 * p * p) + (4 * p) - 1; + } + } + + /// + /// Modeled after the cubic y = x^3 + /// + static public float CubicEaseIn(float p) + { + return p * p * p; + } + + /// + /// Modeled after the cubic y = (x - 1)^3 + 1 + /// + static public float CubicEaseOut(float p) + { + float f = (p - 1); + return f * f * f + 1; + } + + /// + /// Modeled after the piecewise cubic + /// y = (1/2)((2x)^3) ; [0, 0.5) + /// y = (1/2)((2x-2)^3 + 2) ; [0.5, 1] + /// + static public float CubicEaseInOut(float p) + { + if(p < 0.5f) + { + return 4 * p * p * p; + } + else + { + float f = ((2 * p) - 2); + return 0.5f * f * f * f + 1; + } + } + + /// + /// Modeled after the quartic x^4 + /// + static public float QuarticEaseIn(float p) + { + return p * p * p * p; + } + + /// + /// Modeled after the quartic y = 1 - (x - 1)^4 + /// + static public float QuarticEaseOut(float p) + { + float f = (p - 1); + return f * f * f * (1 - p) + 1; + } + + /// + // Modeled after the piecewise quartic + // y = (1/2)((2x)^4) ; [0, 0.5) + // y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1] + /// + static public float QuarticEaseInOut(float p) + { + if(p < 0.5f) + { + return 8 * p * p * p * p; + } + else + { + float f = (p - 1); + return -8 * f * f * f * f + 1; + } + } + + /// + /// Modeled after the quintic y = x^5 + /// + static public float QuinticEaseIn(float p) + { + return p * p * p * p * p; + } + + /// + /// Modeled after the quintic y = (x - 1)^5 + 1 + /// + static public float QuinticEaseOut(float p) + { + float f = (p - 1); + return f * f * f * f * f + 1; + } + + /// + /// Modeled after the piecewise quintic + /// y = (1/2)((2x)^5) ; [0, 0.5) + /// y = (1/2)((2x-2)^5 + 2) ; [0.5, 1] + /// + static public float QuinticEaseInOut(float p) + { + if(p < 0.5f) + { + return 16 * p * p * p * p * p; + } + else + { + float f = ((2 * p) - 2); + return 0.5f * f * f * f * f * f + 1; + } + } + + /// + /// Modeled after quarter-cycle of sine wave + /// + static public float SineEaseIn(float p) + { + return (float)(float)Math.Sin((p - 1) * HALFPI) + 1; + } + + /// + /// Modeled after quarter-cycle of sine wave (different phase) + /// + static public float SineEaseOut(float p) + { + return (float)(float)Math.Sin(p * HALFPI); + } + + /// + /// Modeled after half sine wave + /// + static public float SineEaseInOut(float p) + { + return 0.5f * (1 - (float)(float)Math.Cos(p * PI)); + } + + /// + /// Modeled after shifted quadrant IV of unit circle + /// + static public float CircularEaseIn(float p) + { + return 1 - (float)Math.Sqrt(1 - (p * p)); + } + + /// + /// Modeled after shifted quadrant II of unit circle + /// + static public float CircularEaseOut(float p) + { + return (float)Math.Sqrt((2 - p) * p); + } + + /// + /// Modeled after the piecewise circular function + /// y = (1/2)(1 - (float)Math.Sqrt(1 - 4x^2)) ; [0, 0.5) + /// y = (1/2)((float)Math.Sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1] + /// + static public float CircularEaseInOut(float p) + { + if(p < 0.5f) + { + return 0.5f * (1 - (float)Math.Sqrt(1 - 4 * (p * p))); + } + else + { + return 0.5f * ((float)Math.Sqrt(-((2 * p) - 3) * ((2 * p) - 1)) + 1); + } + } + + /// + /// Modeled after the exponential function y = 2^(10(x - 1)) + /// + static public float ExponentialEaseIn(float p) + { + return (p == 0.0f) ? p : (float)Math.Pow(2, 10 * (p - 1)); + } + + /// + /// Modeled after the exponential function y = -2^(-10x) + 1 + /// + static public float ExponentialEaseOut(float p) + { + return (p == 1.0f) ? p : 1 - (float)Math.Pow(2, -10 * p); + } + + /// + /// Modeled after the piecewise exponential + /// y = (1/2)2^(10(2x - 1)) ; [0,0.5) + /// y = -(1/2)*2^(-10(2x - 1))) + 1 ; [0.5,1] + /// + static public float ExponentialEaseInOut(float p) + { + if(p == 0.0 || p == 1.0) return p; + + if(p < 0.5f) + { + return 0.5f * (float)Math.Pow(2, (20 * p) - 10); + } + else + { + return -0.5f * (float)Math.Pow(2, (-20 * p) + 10) + 1; + } + } + + /// + /// Modeled after the damped sine wave y = sin(13pi/2*x)*(float)Math.Pow(2, 10 * (x - 1)) + /// + static public float ElasticEaseIn(float p) + { + return (float)Math.Sin(13 * HALFPI * p) * (float)Math.Pow(2, 10 * (p - 1)); + } + + /// + /// Modeled after the damped sine wave y = sin(-13pi/2*(x + 1))*(float)Math.Pow(2, -10x) + 1 + /// + static public float ElasticEaseOut(float p) + { + return (float)Math.Sin(-13 * HALFPI * (p + 1)) * (float)Math.Pow(2, -10 * p) + 1; + } + + /// + /// Modeled after the piecewise exponentially-damped sine wave: + /// y = (1/2)*sin(13pi/2*(2*x))*(float)Math.Pow(2, 10 * ((2*x) - 1)) ; [0,0.5) + /// y = (1/2)*(sin(-13pi/2*((2x-1)+1))*(float)Math.Pow(2,-10(2*x-1)) + 2) ; [0.5, 1] + /// + static public float ElasticEaseInOut(float p) + { + if(p < 0.5f) + { + return 0.5f * (float)Math.Sin(13 * HALFPI * (2 * p)) * (float)Math.Pow(2, 10 * ((2 * p) - 1)); + } + else + { + return 0.5f * ((float)Math.Sin(-13 * HALFPI * ((2 * p - 1) + 1)) * (float)Math.Pow(2, -10 * (2 * p - 1)) + 2); + } + } + + /// + /// Modeled after the overshooting cubic y = x^3-x*sin(x*pi) + /// + static public float BackEaseIn(float p) + { + return p * p * p - p * (float)Math.Sin(p * PI); + } + + /// + /// Modeled after overshooting cubic y = 1-((1-x)^3-(1-x)*sin((1-x)*pi)) + /// + static public float BackEaseOut(float p) + { + float f = (1 - p); + return 1 - (f * f * f - f * (float)Math.Sin(f * PI)); + } + + /// + /// Modeled after the piecewise overshooting cubic function: + /// y = (1/2)*((2x)^3-(2x)*sin(2*x*pi)) ; [0, 0.5) + /// y = (1/2)*(1-((1-x)^3-(1-x)*sin((1-x)*pi))+1) ; [0.5, 1] + /// + static public float BackEaseInOut(float p) + { + if(p < 0.5f) + { + float f = 2 * p; + return 0.5f * (f * f * f - f * (float)Math.Sin(f * PI)); + } + else + { + float f = (1 - (2*p - 1)); + return 0.5f * (1 - (f * f * f - f * (float)Math.Sin(f * PI))) + 0.5f; + } + } + + /// + /// + static public float BounceEaseIn(float p) + { + return 1 - BounceEaseOut(1 - p); + } + + /// + /// + static public float BounceEaseOut(float p) + { + if(p < 4/11.0f) + { + return (121 * p * p)/16.0f; + } + else if(p < 8/11.0f) + { + return (363/40.0f * p * p) - (99/10.0f * p) + 17/5.0f; + } + else if(p < 9/10.0f) + { + return (4356/361.0f * p * p) - (35442/1805.0f * p) + 16061/1805.0f; + } + else + { + return (54/5.0f * p * p) - (513/25.0f * p) + 268/25.0f; + } + } + + /// + /// + static public float BounceEaseInOut(float p) + { + if(p < 0.5f) + { + return 0.5f * BounceEaseIn(p*2); + } + else + { + return 0.5f * BounceEaseOut(p * 2 - 1) + 0.5f; + } + } +} + \ No newline at end of file diff --git a/Sledgemapper.Shared/Entities/Session.cs b/Sledgemapper.Shared/Entities/Session.cs index 42c74fe..4ded5e6 100644 --- a/Sledgemapper.Shared/Entities/Session.cs +++ b/Sledgemapper.Shared/Entities/Session.cs @@ -27,10 +27,11 @@ namespace Sledgemapper.Shared.Entities Overlays = new ConcurrentDictionary(); Walls = new ConcurrentDictionary(); Notes = new ConcurrentDictionary(); - Lines=new ConcurrentDictionary(); - Rooms=new ConcurrentDictionary(); + Lines = new ConcurrentDictionary(); + Rooms = new ConcurrentDictionary(); Players = new List(); Colors = new List(); + Pings = new ConcurrentDictionary(); } public ConcurrentDictionary Map { get; set; } @@ -39,189 +40,190 @@ namespace Sledgemapper.Shared.Entities public ConcurrentDictionary Notes { get; set; } public bool IsValid { get; set; } public List Players { get; set; } - public List Colors { get; set; } - public string SessionName { get; set; } - public int SessionId { get; set; } - public ConcurrentDictionary Lines { get; set; } - public ConcurrentDictionary Rooms { get; set; } + public ConcurrentDictionary Pings { get; set; } + public List Colors { get; set; } + public string SessionName { get; set; } + public int SessionId { get; set; } + public ConcurrentDictionary Lines { get; set; } + public ConcurrentDictionary Rooms { get; set; } - public void NewTile(Tile selectedTile, string tileId) + public void NewTile(Tile selectedTile, string tileId) + { + if (selectedTile is null || string.IsNullOrWhiteSpace(tileId)) { - if (selectedTile is null || string.IsNullOrWhiteSpace(tileId)) - { - return; - } - - var tileExist = Map.TryGetValue(selectedTile.ToString(), out var tile); - var newTile = new Tile { X = selectedTile.X, Y = selectedTile.Y, ID = tileId }; - if (tileExist) - { - Map.TryRemove(tile.ToString(), out var _); - if (tile.ID == tileId) - { - newTile.Rotation = (tile.Rotation + 1) % 4; - } - } - - Map.TryAdd(newTile.ToString(), newTile); - OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newTile)); + return; } - public void NewOverlay(Overlay selectedOverlay, string overlayId) + var tileExist = Map.TryGetValue(selectedTile.ToString(), out var tile); + var newTile = new Tile { X = selectedTile.X, Y = selectedTile.Y, ID = tileId }; + if (tileExist) { - if (selectedOverlay is null || string.IsNullOrWhiteSpace(overlayId)) + Map.TryRemove(tile.ToString(), out var _); + if (tile.ID == tileId) { - return; - } - var overlayExist = Overlays.TryGetValue(selectedOverlay.ToString(), out var overlay); - var newOverlay = new Overlay { X = selectedOverlay.X, Y = selectedOverlay.Y, ID = overlayId, Intersection = selectedOverlay.Intersection }; - if (overlayExist) - { - Overlays.TryRemove(overlay.ToString(), out var _); - if (overlay.ID == overlayId) - { - newOverlay.Rotation = (overlay.Rotation + 1) % 4; - } - } - - Overlays.TryAdd(newOverlay.ToString(), newOverlay); - OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newOverlay)); - } - - public void NewWall(Wall selectedWall, string wallId) - { - if (selectedWall is null || string.IsNullOrWhiteSpace(wallId)) - { - return; - } - var tileExist = Walls.TryGetValue(selectedWall.ToString(), out var wall); - var newWall = new Wall { X = selectedWall.X, Y = selectedWall.Y, ID = wallId, Rotation = selectedWall.Rotation }; - if (tileExist) - { - Walls.TryRemove(wall.ToString(), out var _); - } - - Walls.TryAdd(newWall.ToString(), newWall); - OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newWall)); - } - - public void NewNote(Note selectedNote) - { - if (selectedNote is null) - { - return; - } - var noteExists = Notes.TryGetValue(selectedNote.ToString(), out var note); - var newNote = new Note { X = selectedNote.X, Y = selectedNote.Y, Text=selectedNote.Text }; - if (noteExists) - { - Walls.TryRemove(note.ToString(), out var _); - } - - Notes.TryAdd(newNote.ToString(), newNote); - OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newNote)); - } - - public void DeleteWall(Wall wall) - { - if (wall is null) - { - return; - } - var removed = Walls.TryRemove(wall.ToString(), out var _); - if (removed) - { - OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(wall)); + newTile.Rotation = (tile.Rotation + 1) % 4; } } - public void DeleteNote(Note note) + Map.TryAdd(newTile.ToString(), newTile); + OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newTile)); + } + + public void NewOverlay(Overlay selectedOverlay, string overlayId) + { + if (selectedOverlay is null || string.IsNullOrWhiteSpace(overlayId)) { - if (note is null) + return; + } + var overlayExist = Overlays.TryGetValue(selectedOverlay.ToString(), out var overlay); + var newOverlay = new Overlay { X = selectedOverlay.X, Y = selectedOverlay.Y, ID = overlayId, Intersection = selectedOverlay.Intersection }; + if (overlayExist) + { + Overlays.TryRemove(overlay.ToString(), out var _); + if (overlay.ID == overlayId) { - return; - } - var removed = Notes.TryRemove(note.ToString(), out var _); - if (removed) - { - OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(note)); + newOverlay.Rotation = (overlay.Rotation + 1) % 4; } } - public void DeleteOverlay(Overlay overlay) + Overlays.TryAdd(newOverlay.ToString(), newOverlay); + OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newOverlay)); + } + + public void NewWall(Wall selectedWall, string wallId) + { + if (selectedWall is null || string.IsNullOrWhiteSpace(wallId)) { - if (overlay is null) - { - return; - } - var removed = Overlays.TryRemove(overlay.ToString(), out var _); - if (removed) - { - OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(overlay)); - } + return; + } + var tileExist = Walls.TryGetValue(selectedWall.ToString(), out var wall); + var newWall = new Wall { X = selectedWall.X, Y = selectedWall.Y, ID = wallId, Rotation = selectedWall.Rotation }; + if (tileExist) + { + Walls.TryRemove(wall.ToString(), out var _); } - public void DeleteTile(Tile tile) + Walls.TryAdd(newWall.ToString(), newWall); + OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newWall)); + } + + public void NewNote(Note selectedNote) + { + if (selectedNote is null) { - if (tile is null) - { - return; - } - var removed = Map.TryRemove(tile.ToString(), out var _); - if (removed) - { - OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(tile)); - } + return; + } + var noteExists = Notes.TryGetValue(selectedNote.ToString(), out var note); + var newNote = new Note { X = selectedNote.X, Y = selectedNote.Y, Text = selectedNote.Text }; + if (noteExists) + { + Walls.TryRemove(note.ToString(), out var _); } - protected virtual void OnRaiseMapEntityAddedEvent(MapEntityAddedEventArgs e) + Notes.TryAdd(newNote.ToString(), newNote); + OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newNote)); + } + + public void DeleteWall(Wall wall) + { + if (wall is null) { - MapEntityAdded?.Invoke(this, e); + return; } - - protected virtual void OnRaiseMapEntityDeletedEvent(MapEntityDeletedEventArgs e) + var removed = Walls.TryRemove(wall.ToString(), out var _); + if (removed) { - MapEntityDeleted?.Invoke(this, e); - } - - public void NewLine(Line line) - { - if (line is null) - { - return; - } - - var lineExist = Lines.TryGetValue(line.ToString(), out var tile); - var newLine = new Line { Start=line.Start, End=line.End, Width=line.Width}; - if (lineExist) - { - Lines.TryRemove(line.ToString(), out var _); - } - - Lines.TryAdd(newLine.ToString(), newLine); - - //TODO fix this - OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newLine)); - } - - public void NewRoom(Room line) - { - if (line is null) - { - return; - } - - var lineExist = Rooms.TryGetValue(line.ToString(), out var tile); - var newLine = new Room { Start=line.Start, End=line.End, Delete=line.Delete}; - if (lineExist) - { - Rooms.TryRemove(line.ToString(), out var _); - } - - Rooms.TryAdd(newLine.ToString(), newLine); - - //TODO fix this - OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newLine)); + OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(wall)); } } + + public void DeleteNote(Note note) + { + if (note is null) + { + return; + } + var removed = Notes.TryRemove(note.ToString(), out var _); + if (removed) + { + OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(note)); + } + } + + public void DeleteOverlay(Overlay overlay) + { + if (overlay is null) + { + return; + } + var removed = Overlays.TryRemove(overlay.ToString(), out var _); + if (removed) + { + OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(overlay)); + } + } + + public void DeleteTile(Tile tile) + { + if (tile is null) + { + return; + } + var removed = Map.TryRemove(tile.ToString(), out var _); + if (removed) + { + OnRaiseMapEntityDeletedEvent(new MapEntityDeletedEventArgs(tile)); + } + } + + protected virtual void OnRaiseMapEntityAddedEvent(MapEntityAddedEventArgs e) + { + MapEntityAdded?.Invoke(this, e); + } + + protected virtual void OnRaiseMapEntityDeletedEvent(MapEntityDeletedEventArgs e) + { + MapEntityDeleted?.Invoke(this, e); + } + + public void NewLine(Line line) + { + if (line is null) + { + return; + } + + var lineExist = Lines.TryGetValue(line.ToString(), out var tile); + var newLine = new Line { Start = line.Start, End = line.End, Width = line.Width }; + if (lineExist) + { + Lines.TryRemove(line.ToString(), out var _); + } + + Lines.TryAdd(newLine.ToString(), newLine); + + //TODO fix this + OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newLine)); + } + + public void NewRoom(Room line) + { + if (line is null) + { + return; + } + + var lineExist = Rooms.TryGetValue(line.ToString(), out var tile); + var newLine = new Room { Start = line.Start, End = line.End, Delete = line.Delete }; + if (lineExist) + { + Rooms.TryRemove(line.ToString(), out var _); + } + + Rooms.TryAdd(newLine.ToString(), newLine); + + //TODO fix this + OnRaiseMapEntityAddedEvent(new MapEntityAddedEventArgs(newLine)); + } +} } diff --git a/Sledgemapper.Shared/Entities/Tile.cs b/Sledgemapper.Shared/Entities/Tile.cs index 0b622d2..f1e21e1 100644 --- a/Sledgemapper.Shared/Entities/Tile.cs +++ b/Sledgemapper.Shared/Entities/Tile.cs @@ -21,6 +21,13 @@ namespace Sledgemapper.Shared.Entities public double Timestamp { get; set; } } + public class Ping : BaseMapEntity + { + public Player Player { get; set; } + public int Iterations {get;set;} + public double StartTime {get;set;} + } + public class Tile : BaseMapEntity { diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 0fc37b6..9dd0972 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -155,6 +155,11 @@ namespace Sledgemapper p.Position = player.Position; } }); + + Connection.On("Ping", (ping) => + { + SessionData.Pings.TryAdd(Guid.NewGuid(), ping); + }); } private Task GetToken() @@ -233,6 +238,14 @@ namespace Sledgemapper } } + + internal async Task Ping(Tile hoveredTile) + { + if (Connection!=null && Connection.State == HubConnectionState.Connected) + { + await Connection.InvokeAsync("Ping",SessionData.SessionName, hoveredTile); + } + } } class AuthenticatedHttpClientHandler : HttpClientHandler diff --git a/Sledgemapper/Content/Content.mgcb b/Sledgemapper/Content/Content.mgcb index d40c401..7b85633 100644 --- a/Sledgemapper/Content/Content.mgcb +++ b/Sledgemapper/Content/Content.mgcb @@ -93,6 +93,23 @@ /processorParam:TextureFormat=Compressed /build:fonts/font99.spritefont +#begin handcursors +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:handcursors + +#begin handcursorsIndex +/importer:XmlImporter +/processor: +/build:handcursorsIndex + #begin icon_delete.png /importer:TextureImporter /processor:TextureProcessor @@ -141,6 +158,23 @@ /processorParam:TextureFormat=Color /build:location.png +#begin rippleSpriteIndex +/importer:XmlImporter +/processor:PassThroughProcessor +/build:rippleSpriteIndex + +#begin rippleSpriteMap +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:rippleSpriteMap + #begin shaders/OutlineShader.fx /importer:EffectImporter /processor:EffectProcessor @@ -380,30 +414,6 @@ /processorParam:TextureFormat=Color /build:walls/wall01.png -#begin walls/wall01.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:walls/wall01.png - -#begin walls/wall02.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:walls/wall02.png - #begin walls/wall02.png /importer:TextureImporter /processor:TextureProcessor @@ -428,18 +438,6 @@ /processorParam:TextureFormat=Color /build:walls/wall03.png -#begin walls/wall03.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:walls/wall03.png - #begin walls/wall04.png /importer:TextureImporter /processor:TextureProcessor @@ -452,30 +450,6 @@ /processorParam:TextureFormat=Color /build:walls/wall04.png -#begin walls/wall04.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:walls/wall04.png - -#begin walls/wall05.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:walls/wall05.png - #begin walls/wall05.png /importer:TextureImporter /processor:TextureProcessor diff --git a/Sledgemapper/Content/handcursors b/Sledgemapper/Content/handcursors new file mode 100644 index 0000000000000000000000000000000000000000..ef1ac08c7e56c616d4294ea5a486f5b6e56dbec8 GIT binary patch literal 4969 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 literal 0 HcmV?d00001 diff --git a/Sledgemapper/Content/handcursorsIndex b/Sledgemapper/Content/handcursorsIndex new file mode 100644 index 0000000..9f60bbe --- /dev/null +++ b/Sledgemapper/Content/handcursorsIndex @@ -0,0 +1,7 @@ + + + +handcursor_000 0 60 60 +handcursor_0161 0 60 60 + + diff --git a/Sledgemapper/Content/rippleSpriteIndex b/Sledgemapper/Content/rippleSpriteIndex new file mode 100644 index 0000000..e345a97 --- /dev/null +++ b/Sledgemapper/Content/rippleSpriteIndex @@ -0,0 +1,24 @@ + + + +ripple_000 0 128 128 +ripple_01129 0 128 128 +ripple_02258 0 128 128 +ripple_030 129 128 128 +ripple_04129 129 128 128 +ripple_050 258 128 128 +ripple_06129 258 128 128 +ripple_07258 129 128 128 +ripple_08258 258 128 128 +ripple_09387 0 128 128 +ripple_10387 129 128 128 +ripple_11516 0 128 128 +ripple_12387 258 128 128 +ripple_13516 129 128 128 +ripple_14645 0 128 128 +ripple_15774 0 128 128 +ripple_16645 129 128 128 +ripple_17516 258 128 128 +ripple_18645 258 128 128 + + diff --git a/Sledgemapper/Content/rippleSpriteMap b/Sledgemapper/Content/rippleSpriteMap new file mode 100644 index 0000000000000000000000000000000000000000..0e766035561f14714ca623e0d6d7f4e06cab4048 GIT binary patch literal 14526 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

o311tF(nr{BtB474%$Fc2 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 literal 0 HcmV?d00001 diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 5b81ac8..3b5a22b 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -6,6 +6,7 @@ using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using MonoGame.Extended; +using MonoGame.Extended.VectorDraw; using Myra; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.TextureAtlases; @@ -24,6 +25,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using AsyncAwaitBestPractices; namespace Sledgemapper { @@ -177,6 +179,7 @@ namespace Sledgemapper _lblOverlayName.Visible = false; } + private SpriteSheet _rippleSpriteSheet; Label _lblOverlayName; private void OnTileButtonTouchEntered(object sender, EventArgs e) @@ -221,7 +224,10 @@ namespace Sledgemapper _wallsContent = Content.LoadContentFolder("walls"); _spriteSheet = new SpriteSheet(); - _spriteSheet.LoadContent(Content); + _spriteSheet.LoadContent(Content, "spriteIndex", "sprites"); + _rippleSpriteSheet = new SpriteSheet(); + _rippleSpriteSheet.LoadContent(Content, "handcursorsIndex", "handcursors"); + _lblOverlayName = new Label(); _lblOverlayName.Background = new SolidBrush(Color.SlateGray); _lblOverlayName.Padding = new Myra.Graphics2D.Thickness(4); @@ -375,6 +381,7 @@ namespace Sledgemapper window.ShowModal(_desktop); noteWindow.NoteText.SetKeyboardFocus(); } + private bool _showRipple = false; protected override void Update(GameTime gameTime) { @@ -619,6 +626,17 @@ namespace Sledgemapper } } + if (oldState.IsKeyDown(Keys.LeftShift) && newState.IsKeyUp(Keys.LeftShift)) + { + _communicationManager.Ping(_state.HoveredTile).SafeFireAndForget(); + + _sessionData.Pings.TryAdd(Guid.NewGuid(),new Ping{ + X=_state.HoveredTile.X, +Y=_state.HoveredTile.Y, +Player=new Player{Color=Color.Purple.ToHexString()} + }); + } + foreach (var key in newState.GetPressedKeys()) { switch (key) @@ -688,7 +706,7 @@ namespace Sledgemapper _spriteBatch.Begin( transformMatrix: Matrix.CreateTranslation(_viewportCenter), - sortMode: SpriteSortMode.Texture); + sortMode: SpriteSortMode.Texture, samplerState: SamplerState.PointClamp); DrawTiles(); @@ -711,8 +729,10 @@ namespace Sledgemapper DrawLinePreview(); DrawRoomPreview(); - _spriteBatch.End(); + DrawRipple(gameTime); + + try { @@ -724,6 +744,83 @@ namespace Sledgemapper } base.Draw(gameTime); } + private int _rippleFrameIndex = 0; + + + private void DrawRipple(GameTime gameTime) + { + _spriteBatch.Begin( + blendState: BlendState.NonPremultiplied, + transformMatrix: Matrix.CreateTranslation(_viewportCenter)); + + var durationMs = 2000; + var baseRadius = _state.TileSize / 4f; + var baseOuterRadius = (float)_state.TileSize; + var iterations = 3f; + var guids = _sessionData.Pings.Keys.ToArray(); + + foreach (var guid in guids) + { + var pingFound = _sessionData.Pings.TryGetValue(guid, out var ping); + if (!pingFound) + { + continue; + } + + if (ping.StartTime == 0) + { + ping.StartTime = gameTime.TotalGameTime.TotalMilliseconds; + } + + var x = ping.X * _state.TileSize + _state.TileSize / 2f; + var y = ping.Y * _state.TileSize + _state.TileSize / 2f; + + if (IsOffscreen(new Tile { X = ping.X, Y = ping.Y })) + { + DrawPingPointer(ping, gameTime); + } + else + { + + _spriteBatch.DrawCircle( + center: new Vector2(x, y), + radius: baseRadius, + sides: 20, + color: ping.Player.Color.ToColor(), + thickness: baseRadius); + + for (var i = 0; i < iterations; i++) + { + var cycleTime = (((float)gameTime.TotalGameTime.TotalMilliseconds + (float)i * durationMs / iterations) % durationMs) / durationMs; + var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); + _spriteBatch.DrawCircle( + center: new Vector2(x, y), + radius: baseRadius + baseOuterRadius * easing, + sides: 20, + color: new Color(ping.Player.Color.ToColor(), (1 - easing)), + thickness: 2 + 5 * (1 - easing)); + + + } + } + } + foreach (var guid in guids) + { + var pingFound = _sessionData.Pings.TryGetValue(guid, out var ping); + if (!pingFound) + { + continue; + } + + if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > 20000 ) + { + _sessionData.Pings.TryRemove(guid, out var _); + } + } + + + _spriteBatch.End(); + } private void DrawRoomPreview() { @@ -1440,6 +1537,106 @@ namespace Sledgemapper } } + private void DrawPingPointer(Ping ping, GameTime gameTime) + { + var durationMs = 2000f; + var baseRadius = _state.TileSize / 4f; + var baseOuterRadius = (float)_state.TileSize; + var iterations = 3f; + + + var center = new Point((Window.ClientBounds.Width + 200) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); + + var cx = center.X / _state.TileSize; + var cy = center.Y / _state.TileSize; + + var p1 = new Vector2(cx * _state.TileSize, cy * _state.TileSize); + var p2 = new Vector2(ping.X * _state.TileSize, ping.Y * _state.TileSize); + + var p3 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); + var p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); + p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); + var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); + p4 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + p3 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + var uas = new List { ua1, ua2, ua3, ua4 }; + if (uas.Any(u => u > 0 && u < 1)) + { + var ua = uas.Where(u => u > 0 && u < 1).Min(); + var i = uas.IndexOf(ua); + var x = (p1.X + ua * (p2.X - p1.X)); + var y = (p1.Y + ua * (p2.Y - p1.Y)); + Vector2[] vertexes = new Vector2[0]; + switch (i) + { + case 0: + vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y + 10), new Vector2(x - 20, y - 10), new Vector2(x, y) }; + break; + case 1: + y += 20; + vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; + break; + case 2: + x += 0; + vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; + break; + case 3: + y -= 20; + vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y - 20), new Vector2(x + 10, y - 20), new Vector2(x, y) }; + break; + } + + _spriteBatch.DrawPolygon(Vector2.Zero, vertexes, ping.Player.Color.ToColor(), 4); + + + for (var j = 0; j < iterations; j++) + { + var cycleTime = (((float)gameTime.TotalGameTime.TotalMilliseconds + (float)j * durationMs / iterations) % durationMs) / durationMs; + var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); + var v2 = new Vector2[vertexes.Length]; + + + var tCenter = new Vector2((vertexes[0].X + vertexes[1].X + vertexes[2].X) / 3f, (vertexes[0].Y + vertexes[1].Y + vertexes[2].Y) / 3f); + + // var v1s = ((v2[0].X-tCenter.X)*(2 * (1 - easing)))+tCenter.X + + for (int i1 = 0; i1 < v2.Length; i1++) + { + + var svx = ((vertexes[i1].X - tCenter.X) * (1 + (2 * easing))) + tCenter.X; + var svy = ((vertexes[i1].Y - tCenter.Y) * (1 + (2 * easing))) + tCenter.Y; + v2[i1] = new Vector2(svx, svy); + } + + _spriteBatch.DrawPolygon( + offset: Vector2.Zero, + points: v2, + color:new Color(ping.Player.Color.ToColor(), 1f-easing), + thickness: 2+2*(1-easing)); + + // _spriteBatch.DrawCircle( + // center: new Vector2(x, y), + // radius: baseRadius + baseOuterRadius * easing, + // sides: 20, + // color: new Color(ping.Player.Color.ToColor(), (1 - easing)), + // thickness: 2 + 5 * (1 - easing)); + + + } + + } + } + private void DrawPlayerPointer(Player player) { var center = new Point((Window.ClientBounds.Width + 200) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); @@ -2328,10 +2525,10 @@ namespace Sledgemapper internal Texture2D Texture; internal Dictionary index; - public void LoadContent(ContentManager content) + public void LoadContent(ContentManager content, string spriteIndex, string texture) { - index = content.Load>("spriteIndex"); - Texture = content.Load("sprites"); + index = content.Load>(spriteIndex); + Texture = content.Load(texture); } internal Rectangle? SourceRectangle(string spriteName) @@ -2349,4 +2546,6 @@ namespace Sledgemapper } } } + + } From efc9e13737766013a80e786e5b96b0094ee1051e Mon Sep 17 00:00:00 2001 From: Michele Date: Wed, 10 Feb 2021 23:27:20 +0000 Subject: [PATCH 02/81] improvin player pointers --- Sledgemapper/CommunicationManager.cs | 4 +- Sledgemapper/Settings.cs | 2 +- Sledgemapper/Sledgemapper.cs | 259 ++++++++------------------- 3 files changed, 76 insertions(+), 189 deletions(-) diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 9dd0972..ccb35e9 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -239,11 +239,11 @@ namespace Sledgemapper } - internal async Task Ping(Tile hoveredTile) + internal async Task Ping(Tile location) { if (Connection!=null && Connection.State == HubConnectionState.Connected) { - await Connection.InvokeAsync("Ping",SessionData.SessionName, hoveredTile); + await Connection.InvokeAsync("Ping",SessionData.SessionName, location); } } } diff --git a/Sledgemapper/Settings.cs b/Sledgemapper/Settings.cs index 25b39f6..e6f884f 100644 --- a/Sledgemapper/Settings.cs +++ b/Sledgemapper/Settings.cs @@ -19,7 +19,7 @@ namespace Sledgemapper GridColor = Color.Black; NoteColor = Color.DarkRed; OverlayTintColor = new Color(24, 118, 157); -TileDeleteDivider=14; + TileDeleteDivider = 14; try { MachineName = Environment.MachineName; diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 3b5a22b..51b0cc0 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -456,6 +456,8 @@ namespace Sledgemapper var newNoteButton = new TextButton { Text = "New Note", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; newNoteButton.Click += OnContextMenuNewNoteClick; popup.AddChild(newNoteButton); + + } else { @@ -470,6 +472,12 @@ namespace Sledgemapper popup.AddChild(deleteNoteButton); } + var pingButton = new TextButton { Text = "Ping", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; + //pingButton.Click += OnContextMenuPingClick; + var location = new Tile { X = _state.HoveredTile.X, Y = _state.HoveredTile.Y }; + pingButton.Click += (s, e) => OnContextMenuPingClick(s, e, location); + popup.AddChild(pingButton); + _desktop.ShowContextMenu(popup, mouseState.Position); } @@ -629,12 +637,6 @@ namespace Sledgemapper if (oldState.IsKeyDown(Keys.LeftShift) && newState.IsKeyUp(Keys.LeftShift)) { _communicationManager.Ping(_state.HoveredTile).SafeFireAndForget(); - - _sessionData.Pings.TryAdd(Guid.NewGuid(),new Ping{ - X=_state.HoveredTile.X, -Y=_state.HoveredTile.Y, -Player=new Player{Color=Color.Purple.ToHexString()} - }); } foreach (var key in newState.GetPressedKeys()) @@ -688,10 +690,17 @@ Player=new Player{Color=Color.Purple.ToHexString()} var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); var dx = center.X - x * _state.TileSize - _viewportCenter.X; var dy = center.Y - y * _state.TileSize - _viewportCenter.Y; + _viewportCenter.X += dx; _viewportCenter.Y += dy; } + private void OnContextMenuPingClick(object sender, EventArgs e, Tile location) + { + _desktop.HideContextMenu(); + _communicationManager.Ping(location).SafeFireAndForget(); + } + protected override void Draw(GameTime gameTime) { if (_spriteBatch is null) @@ -812,7 +821,7 @@ Player=new Player{Color=Color.Purple.ToHexString()} continue; } - if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > 20000 ) + if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > 3000) { _sessionData.Pings.TryRemove(guid, out var _); } @@ -1089,88 +1098,16 @@ Player=new Player{Color=Color.Purple.ToHexString()} var isoffscreen = IsOffscreen(_state.SelectedTile); if (isoffscreen) { - var center = new Point((Window.ClientBounds.Width + 200) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); - - var cx = center.X / _state.TileSize; - var cy = center.Y / _state.TileSize; - - var p1 = new Vector2(cx * _state.TileSize, cy * _state.TileSize); - var p2 = new Vector2(_state.SelectedTile.X * _state.TileSize, _state.SelectedTile.Y * _state.TileSize); - - var p3 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); - var p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); - var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); - p4 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - var uas = new float[] { ua1, ua2, ua3, ua4 }; - if (uas.Any(u => u > 0 && u < 1)) + var validPointer = GetPointerVector(new Point(_state.SelectedTile.X, _state.SelectedTile.Y), out var points); + if (validPointer) { - var ua = uas.Where(u => u > 0 && u < 1).Min(); - - int i = 0; - for (var j = 0; j < 4; j++) - { - if (uas[j] == ua) - { - i = j; - } - } - - - var x = (p1.X + ua * (p2.X - p1.X)); - var y = (p1.Y + ua * (p2.Y - p1.Y)); - - - var v = _vector2Pool.Rent(4); - switch (i) - { - case 0: - v[0] = new Vector2(x, y); - v[1] = new Vector2(x - 20, y + 10); - v[2] = new Vector2(x - 20, y - 10); - v[3] = new Vector2(x, y); - break; - case 1: - v[0] = new Vector2(x, y); - v[1] = new Vector2(x - 10, y + 20); - v[2] = new Vector2(x + 10, y + 20); - v[3] = new Vector2(x, y); - y += 20; - break; - case 2: - x += 0; - v[0] = new Vector2(x, y); - v[1] = new Vector2(x + 20, y + 10); - v[2] = new Vector2(x + 20, y - 10); - v[3] = new Vector2(x, y); - break; - case 3: - y -= 20; - v[0] = new Vector2(x, y); - v[1] = new Vector2(x - 10, y - 20); - v[2] = new Vector2(x + 10, y - 20); - v[3] = new Vector2(x, y); - break; - } - _spriteBatch.DrawPolygon(Vector2.Zero, v, Color.Red, 2); - _vector2Pool.Return(v); - + _spriteBatch.DrawPolygon(Vector2.Zero, points, 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); + else + { + _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); + } } } @@ -1543,124 +1480,67 @@ Player=new Player{Color=Color.Purple.ToHexString()} var baseRadius = _state.TileSize / 4f; var baseOuterRadius = (float)_state.TileSize; var iterations = 3f; + var validPointer = GetPointerVector(new Point(ping.X, ping.Y), out var points); - - var center = new Point((Window.ClientBounds.Width + 200) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); - - var cx = center.X / _state.TileSize; - var cy = center.Y / _state.TileSize; - - var p1 = new Vector2(cx * _state.TileSize, cy * _state.TileSize); - var p2 = new Vector2(ping.X * _state.TileSize, ping.Y * _state.TileSize); - - var p3 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); - var p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); - var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); - p4 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - var uas = new List { ua1, ua2, ua3, ua4 }; - if (uas.Any(u => u > 0 && u < 1)) + if (validPointer) { - var ua = uas.Where(u => u > 0 && u < 1).Min(); - var i = uas.IndexOf(ua); - var x = (p1.X + ua * (p2.X - p1.X)); - var y = (p1.Y + ua * (p2.Y - p1.Y)); - Vector2[] vertexes = new Vector2[0]; - switch (i) - { - case 0: - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y + 10), new Vector2(x - 20, y - 10), new Vector2(x, y) }; - break; - case 1: - y += 20; - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; - break; - case 2: - x += 0; - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; - break; - case 3: - y -= 20; - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y - 20), new Vector2(x + 10, y - 20), new Vector2(x, y) }; - break; - } - - _spriteBatch.DrawPolygon(Vector2.Zero, vertexes, ping.Player.Color.ToColor(), 4); + _spriteBatch.DrawPolygon(Vector2.Zero, points, ping.Player.Color.ToColor(), 4); for (var j = 0; j < iterations; j++) { var cycleTime = (((float)gameTime.TotalGameTime.TotalMilliseconds + (float)j * durationMs / iterations) % durationMs) / durationMs; var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); - var v2 = new Vector2[vertexes.Length]; - + var v2 = new Vector2[points.Length]; - var tCenter = new Vector2((vertexes[0].X + vertexes[1].X + vertexes[2].X) / 3f, (vertexes[0].Y + vertexes[1].Y + vertexes[2].Y) / 3f); - // var v1s = ((v2[0].X-tCenter.X)*(2 * (1 - easing)))+tCenter.X + var tCenter = new Vector2((points[0].X + points[1].X + points[2].X) / 3f, (points[0].Y + points[1].Y + points[2].Y) / 3f); + for (int i1 = 0; i1 < v2.Length; i1++) { - var svx = ((vertexes[i1].X - tCenter.X) * (1 + (2 * easing))) + tCenter.X; - var svy = ((vertexes[i1].Y - tCenter.Y) * (1 + (2 * easing))) + tCenter.Y; + var svx = ((points[i1].X - tCenter.X) * (1 + (2 * easing))) + tCenter.X; + var svy = ((points[i1].Y - tCenter.Y) * (1 + (2 * easing))) + tCenter.Y; v2[i1] = new Vector2(svx, svy); } _spriteBatch.DrawPolygon( offset: Vector2.Zero, points: v2, - color:new Color(ping.Player.Color.ToColor(), 1f-easing), - thickness: 2+2*(1-easing)); - - // _spriteBatch.DrawCircle( - // center: new Vector2(x, y), - // radius: baseRadius + baseOuterRadius * easing, - // sides: 20, - // color: new Color(ping.Player.Color.ToColor(), (1 - easing)), - // thickness: 2 + 5 * (1 - easing)); - + color: new Color(ping.Player.Color.ToColor(), 1f - easing), + thickness: 2 + 2 * (1 - easing)); } } } - private void DrawPlayerPointer(Player player) + private bool GetPointerVector(Point target, out Vector2[] points) { - var center = new Point((Window.ClientBounds.Width + 200) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); + var leftBound = 200; + var topBound = 75; + var bottomBound = 25; + points = new Vector2[0]; + var center = new Point((Window.ClientBounds.Width + leftBound) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); - var cx = center.X / _state.TileSize; - var cy = center.Y / _state.TileSize; + var p1 = new Vector2(center.X, center.Y); + var p2 = new Vector2(target.X * _state.TileSize, target.Y * _state.TileSize); - var p1 = new Vector2(cx * _state.TileSize, cy * _state.TileSize); - var p2 = new Vector2(player.Position.X * _state.TileSize, player.Position.Y * _state.TileSize); - - var p3 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); - var p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + var p3 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, topBound - _viewportCenter.Y); + var p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, 0 - _viewportCenter.Y); + p3 = new Vector2(leftBound - _viewportCenter.X, topBound - _viewportCenter.Y); + p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, topBound - _viewportCenter.Y); var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - p3 = new Vector2(200 - _viewportCenter.X, 0 - _viewportCenter.Y); - p4 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + p3 = new Vector2(leftBound - _viewportCenter.X, topBound - _viewportCenter.Y); + p4 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - p3 = new Vector2(200 - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y); + p3 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); + p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); var uas = new List { ua1, ua2, ua3, ua4 }; @@ -1670,26 +1550,33 @@ Player=new Player{Color=Color.Purple.ToHexString()} var i = uas.IndexOf(ua); var x = (p1.X + ua * (p2.X - p1.X)); var y = (p1.Y + ua * (p2.Y - p1.Y)); - Vector2[] vertexes = new Vector2[0]; + switch (i) { case 0: - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y + 10), new Vector2(x - 20, y - 10), new Vector2(x, y) }; + points = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y - 10), new Vector2(x - 20, y + 10),new Vector2(x, y) }; break; case 1: - y += 20; - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; + points = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; break; case 2: - x += 0; - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; + points = new Vector2[] { new Vector2(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; break; case 3: - y -= 20; - vertexes = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y - 20), new Vector2(x + 10, y - 20), new Vector2(x, y) }; + points = new Vector2[] { new Vector2(x, y), new Vector2(x + 10, y - 20),new Vector2(x - 10, y - 20), new Vector2(x, y) }; break; } - _spriteBatch.DrawPolygon(Vector2.Zero, vertexes, player.Color.ToColor(), 2); + return true; + } + return false; + } + + private void DrawPlayerPointer(Player player) + { + var validPointer = GetPointerVector(new Point(player.Position.X, player.Position.Y), out var points); + if (validPointer) + { + _spriteBatch.DrawPolygon(Vector2.Zero, points, player.Color.ToColor(), 2); } } @@ -1697,20 +1584,18 @@ Player=new Player{Color=Color.Purple.ToHexString()} private bool IsOffscreen(Tile position) { - var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1; - var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; + var boxTL = new Point(200 - _state.TileSize / 2, 75 - _state.TileSize / 2); + var boxBR = new Point(GraphicsDevice.Viewport.Width + _state.TileSize / 2, GraphicsDevice.Viewport.Height - 25 + _state.TileSize / 2); - var screenPositionTopLeft = new Point(200 - _state.TileSize + 0 * _state.TileSize - (int)_viewportCenter.X, 0 * _state.TileSize + _state.TileSize - (int)_viewportCenter.Y); - var screenPositionBottomRight = new Point(visibleTilesX * _state.TileSize - (int)_viewportCenter.X, visibleTilesY * _state.TileSize - 20 - (int)_viewportCenter.Y); - var tileTopLeft = new Point(screenPositionTopLeft.X / _state.TileSize, screenPositionTopLeft.Y / _state.TileSize); - var tileBottomRight = new Point(screenPositionBottomRight.X / _state.TileSize, screenPositionBottomRight.Y / _state.TileSize); + var tileTL = new Point(position.X * _state.TileSize + (int)_viewportCenter.X, position.Y * _state.TileSize + (int)_viewportCenter.Y); + var tileBR = new Point(position.X * _state.TileSize + (int)_viewportCenter.X + _state.TileSize, position.Y * _state.TileSize + (int)_viewportCenter.Y + _state.TileSize); - if (position.X < tileTopLeft.X || position.Y < tileTopLeft.Y || position.X > tileBottomRight.X || position.Y > tileBottomRight.Y) + if (tileTL.X <= boxTL.X || tileTL.Y <= boxTL.Y || tileBR.X >= boxBR.X || tileBR.Y >= boxBR.Y) { return true; } - return false; + return false; } private int _borderWidth => (_state.TileSize / 6) % 2 == 0 ? (_state.TileSize / 6) : (_state.TileSize / 6) + 1; @@ -2304,6 +2189,8 @@ Player=new Player{Color=Color.Purple.ToHexString()} noteWindow.NoteText.SetKeyboardFocus(); } + + private void OnContextMenuDeleteNoteClick(object sender, EventArgs e) { _desktop.HideContextMenu(); From 73c8ca4e0fcf074cf251248198b8b9608a1d2ef3 Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 11 Feb 2021 10:03:40 +0000 Subject: [PATCH 03/81] refined player pointers. final ping changes --- Sledgemapper/Settings.cs | 2 ++ Sledgemapper/Sledgemapper.cs | 68 +++++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/Sledgemapper/Settings.cs b/Sledgemapper/Settings.cs index e6f884f..3188725 100644 --- a/Sledgemapper/Settings.cs +++ b/Sledgemapper/Settings.cs @@ -12,6 +12,7 @@ namespace Sledgemapper public Color NoteColor { get; set; } public string MachineName { get; set; } public int TileDeleteDivider { get; set; } + public int PingDuration {get;set;} public Settings() { @@ -20,6 +21,7 @@ namespace Sledgemapper NoteColor = Color.DarkRed; OverlayTintColor = new Color(24, 118, 157); TileDeleteDivider = 14; + PingDuration = 4000; try { MachineName = Environment.MachineName; diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 51b0cc0..2b7723c 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -634,7 +634,7 @@ namespace Sledgemapper } } - if (oldState.IsKeyDown(Keys.LeftShift) && newState.IsKeyUp(Keys.LeftShift)) + if (oldState.IsKeyDown(Keys.P) && newState.IsKeyUp(Keys.P)) { _communicationManager.Ping(_state.HoveredTile).SafeFireAndForget(); } @@ -738,11 +738,11 @@ namespace Sledgemapper DrawLinePreview(); DrawRoomPreview(); + _spriteBatch.End(); + DrawRipple(gameTime); - - try { _desktop?.Render(); @@ -753,8 +753,6 @@ namespace Sledgemapper } base.Draw(gameTime); } - private int _rippleFrameIndex = 0; - private void DrawRipple(GameTime gameTime) { @@ -821,7 +819,7 @@ namespace Sledgemapper continue; } - if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > 3000) + if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > _settings.PingDuration) { _sessionData.Pings.TryRemove(guid, out var _); } @@ -1343,11 +1341,12 @@ namespace Sledgemapper var playerCells = _sessionData.Players.Select(m => m.Position).Distinct().ToList(); - foreach (var cell in playerCells) + foreach (var cell in playerCells.Where(c => !IsOffscreen(c))) { var playersInCell = _sessionData.Players.Where(m => m.Position == cell).ToList(); var i = 0; foreach (var player in playersInCell) + { var color = player.Color.ToColor(); @@ -1365,7 +1364,7 @@ namespace Sledgemapper _state.TileSize - 1, _state.TileSize - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize, + player.Position.X * _state.TileSize + 1, player.Position.Y * _state.TileSize + _state.TileSize - measure.Y * fscale); } else if (playersInCell.Count == 2) @@ -1380,7 +1379,7 @@ namespace Sledgemapper _state.TileSize / 2 - 1, _state.TileSize - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize, + player.Position.X * _state.TileSize + 1, player.Position.Y * _state.TileSize + _state.TileSize - measure.Y * fscale); } else @@ -1391,7 +1390,7 @@ namespace Sledgemapper _state.TileSize / 2 - 1, _state.TileSize - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize + _state.TileSize / 2, + player.Position.X * _state.TileSize + _state.TileSize / 2 + 1, player.Position.Y * _state.TileSize + _state.TileSize - measure.Y * fscale); } i++; @@ -1408,7 +1407,7 @@ namespace Sledgemapper _state.TileSize / 2 - 1, _state.TileSize / 2 - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize, + player.Position.X * _state.TileSize + 1, player.Position.Y * _state.TileSize + _state.TileSize / 2 - measure.Y * fscale); break; @@ -1419,7 +1418,7 @@ namespace Sledgemapper _state.TileSize / 2 - 1, _state.TileSize / 2 - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize + _state.TileSize / 2, + player.Position.X * _state.TileSize + _state.TileSize / 2 + 1, player.Position.Y * _state.TileSize + _state.TileSize / 2 - measure.Y * fscale); break; @@ -1430,7 +1429,7 @@ namespace Sledgemapper _state.TileSize / 2 - 1, _state.TileSize / 2 - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize, + player.Position.X * _state.TileSize + 1, player.Position.Y * _state.TileSize + _state.TileSize - measure.Y * fscale); break; @@ -1442,7 +1441,7 @@ namespace Sledgemapper _state.TileSize / 2 - 1, _state.TileSize / 2 - 1); stringPosition = new Vector2( - player.Position.X * _state.TileSize + _state.TileSize / 2, + player.Position.X * _state.TileSize + _state.TileSize / 2 + 1, player.Position.Y * _state.TileSize + _state.TileSize - measure.Y * fscale); break; @@ -1518,17 +1517,32 @@ namespace Sledgemapper private bool GetPointerVector(Point target, out Vector2[] points) { - var leftBound = 200; - var topBound = 75; - var bottomBound = 25; + var offset = _state.TileSize / 2; + var leftBound = 200 + offset; + var topBound = 75 + offset; + var bottomBound = 25 + offset; + var rightBound = offset; points = new Vector2[0]; var center = new Point((Window.ClientBounds.Width + leftBound) / 2 - (int)_viewportCenter.X, Window.ClientBounds.Height / 2 - (int)_viewportCenter.Y); + // center var p1 = new Vector2(center.X, center.Y); - var p2 = new Vector2(target.X * _state.TileSize, target.Y * _state.TileSize); - var p3 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, topBound - _viewportCenter.Y); - var p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); + // point + var p2 = new Vector2( + target.X * _state.TileSize + offset, + target.Y * _state.TileSize + offset); + + // top right + var p3 = new Vector2( + Window.ClientBounds.Width - _viewportCenter.X - rightBound, + topBound - _viewportCenter.Y); + + //bottom right + var p4 = new Vector2( + Window.ClientBounds.Width - _viewportCenter.X - rightBound, + Window.ClientBounds.Height - _viewportCenter.Y - bottomBound); + var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); p3 = new Vector2(leftBound - _viewportCenter.X, topBound - _viewportCenter.Y); @@ -1536,11 +1550,11 @@ namespace Sledgemapper var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); p3 = new Vector2(leftBound - _viewportCenter.X, topBound - _viewportCenter.Y); - p4 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); + p4 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y - bottomBound); var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - p3 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y-bottomBound); + p3 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y - bottomBound); + p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y - bottomBound); var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); var uas = new List { ua1, ua2, ua3, ua4 }; @@ -1554,16 +1568,20 @@ namespace Sledgemapper switch (i) { case 0: - points = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y - 10), new Vector2(x - 20, y + 10),new Vector2(x, y) }; + x += offset; + points = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y - 10), new Vector2(x - 20, y + 10), new Vector2(x, y) }; break; case 1: + y -= offset; points = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; break; case 2: + x -= offset; points = new Vector2[] { new Vector2(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; break; case 3: - points = new Vector2[] { new Vector2(x, y), new Vector2(x + 10, y - 20),new Vector2(x - 10, y - 20), new Vector2(x, y) }; + y += offset; + points = new Vector2[] { new Vector2(x, y), new Vector2(x + 10, y - 20), new Vector2(x - 10, y - 20), new Vector2(x, y) }; break; } return true; From 9e9e03b4c7fa255d48890c65a23b8ed6e14acb47 Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 11 Feb 2021 10:04:56 +0000 Subject: [PATCH 04/81] remove commented out code --- Sledgemapper/Sledgemapper.cs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 2b7723c..07b9220 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -154,7 +154,6 @@ namespace Sledgemapper { var indexX = 0; var indexY = 0; - //foreach (var item in spriteSheet.index) grid.Widgets.Clear(); _mainWidget.ScrOverlay.ResetScroll(); foreach (var item in spriteSheet.index.Where(t => String.IsNullOrWhiteSpace(e) || t.Key.ToLower().Contains(e.ToLower()))) @@ -190,7 +189,6 @@ namespace Sledgemapper _lblOverlayName.Visible = true; _lblOverlayName.Text = ((ImageButton)sender).Id; _desktop.ShowContextMenu(_lblOverlayName, mouseState); - // _lblOverlayName.true; } protected override void LoadContent() @@ -255,20 +253,7 @@ namespace Sledgemapper private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) { - // var filteredWidget = _mainWidget.GridOverlays.Widgets.Where(m => m.Id.ToLower().Contains(e.NewValue.ToLower())).ToArray(); - // foreach (var w in _mainWidget.GridOverlays.Widgets) - // { - // w. - // w.Visible = false; - // } - - // foreach (var w in filteredWidget) - // { - // w.Visible = true; - // } - AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); - } private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) @@ -381,7 +366,6 @@ namespace Sledgemapper window.ShowModal(_desktop); noteWindow.NoteText.SetKeyboardFocus(); } - private bool _showRipple = false; protected override void Update(GameTime gameTime) { @@ -473,7 +457,6 @@ namespace Sledgemapper } var pingButton = new TextButton { Text = "Ping", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; - //pingButton.Click += OnContextMenuPingClick; var location = new Tile { X = _state.HoveredTile.X, Y = _state.HoveredTile.Y }; pingButton.Click += (s, e) => OnContextMenuPingClick(s, e, location); popup.AddChild(pingButton); From 344363df6f1809bdda0163f7b1633aedfc2c0442 Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 11 Feb 2021 10:38:28 +0000 Subject: [PATCH 05/81] delete db --- Sledgemapper.Api/db/LocalDatabase.db | Bin 20480 -> 0 bytes Sledgemapper.Api/db/sledgemapper.db | Bin 40960 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Sledgemapper.Api/db/LocalDatabase.db delete mode 100644 Sledgemapper.Api/db/sledgemapper.db diff --git a/Sledgemapper.Api/db/LocalDatabase.db b/Sledgemapper.Api/db/LocalDatabase.db deleted file mode 100644 index 29abb4332cafe77fabe12c434db60d37a26dd63e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI)c~BEq7y$6y1dM<&6ovE>o~bBQN+XDYa!8;NkQ|r;xil^&Z6i4(8!F({AXvx2 z!W6W&mQpRYA~>`_%K(FwDx-oCEZiAdC{$z&~c zkEJBl$ti06`iYy?p;7@~E4b$VwqgZr`i!GDpENzBuW|~;!9&u zq#zdY6>>?0n93{?h~*w5xmIY5q)AMj5C_QxF~hk=`-H@lT|?=IrZLH=2))LnA++Qq zT~P!{ZZa5E;RN{+2ZabFA(nF=J>F=yjL@3Kbu(?<%`rHG&Ew%25(|`4DOe%Wd}t(0 z8iSq;*N`TIF>TUD+KZ5r?lT7aJm-+`Fvk?UQzRP4{d`hJgDPdcDVlm~sgs?MmYP}w zZ3cS{563iml{$6gN+D8A2Ftc`(&H$XOxiqjZ$ESBGoOKza3Iqs%00@8p2!H?x zfB*=900@8p2!Oy#C$Ipg3)o&0@-c9NrRg?T^CR zy0FH*+eBB3Tux*+rMkYcY1XbRUGr%hZ|}r<9=kfSBB96cz~#qhlkbQ3RQNl+$~tO; z-r6w7uCb-z@XdL$OQ~_o3(aEM*n~(bj`R)~*Y(HWd2Qevqx0DbUW$_#;vz|8_09>70ovm zRE9jof7|br+WpLM&^a{FzO>2Lpv+5VwKnZ%pp!?mx$krpbg;XAEeoiQIu+bscKb(} z;}Wm4hcZf%@&jWxGGvQ>Ka&(69(HA}tem&ZzqchJrZvGM$Z2ieoPI_8^@VHt3ZGiZ z=hu{cpC&6G{{8<0jP+nTE^s&o2!H?xfB*=900@8p2!H?xfB*=9z_bb2;B+=_`PT>f Ezj)aphyVZp diff --git a/Sledgemapper.Api/db/sledgemapper.db b/Sledgemapper.Api/db/sledgemapper.db deleted file mode 100644 index 6e140107bce9584788016802be9bacb6d5018fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI*?`s=%90&0Gk>*#M-F|ghsnheyaA9TSF3ly^A+)Yh;<~g=Q`SzFkgd0^GflcC z-4BLHyAAvU1fTds5%J+b@QL<;i2A@^i1^&0B0i9zBF;|1@8#}tm*#G3v%y$-A1qDo za-Yxl^ZNccZfUm3iP5>5%Act$&KGNZjM`2y3^l~_6h$%QPmugEH$QpeF<+3MwC%au zQ-(V9!h0cdG!QsLZCl;;a_Eh&_d7ohejS_%+#z{}fB*y_0D&zka3$aiKO3Q! zd*;fs>gDuwVXCSw9;uYe>gn2CrCfiRo^9S4Jd#Zf=Tdw+Gm@I-1-Fv~ek{Wa&8G_d zf%=~GtPr{AC#m~vsVCKHmE_dUC>YPvv$maqmb|uu)){(U+aWD!Bc2ec`g~!fmtKC# zEZI0_M#vQBRb!Xm$T*crPfXbhb~vRetu3V%PKYcoczxkWgud2WE1oK;%__~Wd`8mT z@N=Un2f$E}C)+w$0!sQLmwF+UW!u$5o*Tj0sljY(< z^<1T9{`5ANY3?R+Ms{0li{tJR3>1j_z1jxAi7l>DJB-Rd2oh;Q(mubV{uC>ICZx_x92& zSL`(!^?4j?YpKgAbW4xwHEq0}`aEkMgl3nGT`H@K_o!){@rDl`q-W|CRWFpteP^Mn zURYAgr`2^Y*`^BD9XwDbbG@IO8Ce;kec_%S`ua=tn8%6>qm{GzBhwT?(05uy`s+6BRFQe0V3T@JN7nY4TJ9(I-5_Dkryt`9rk=^P3E9J~?SANVw& z2E6`v{VCs1zU#g|?zvo>x6jl2foj00NIvpwJVbXqw}e_jj;N=J-`% zS{Rg~{lbheD3TxP5n)icR4kREqR=m7D>Z#>85H{k>+(7%ABrUg5=tVPlq4}OEAiAp zG4Tq0>D=ADLxsH$H-V_cpO`tp$iA@_o9%J%OZ%NvnX}cM7{(6PSHW>ezH2i%}^iN)4f1UlevZ zBp^dXtAO-`TLRY#q6sCcSP6Fin&0W#1!6lDMB_axZynKP=Jx(9tF7dfT&1G+Z+gW7Ph$;KstJ}JuD^@QY@h~ z3J88#2)QR9t#nJ^whoC&vJNFJA^)5CE(ak(qm9vaDoBX-A>{e$WTz4T>6TR@;og4N z4v^zYG|}*3uH=KQ%@>pP=F9HkU3p}YEJAW4KJ|7!&>CMNrxPBMWz+m|QHo2AMQ-ii z&+`7(_#%NJ@!R1UkjN6$m|<)GyqNbn#J{hPD}O9TdbhDcto^li(rd)Gb+6&yPW#Cv zCT2DN_nY|+*XG|NyleN0a$J_J=HLEkWw$3lK0xER>$^HK*{i~2t+-ed2CoWf?QfHW zL9$ek3%}kU#(Gg+DwXV)d{LM2f-K@dV?Z`qX2#daslE+Qu5~HFb>r;3=3+Xo! zR%eMnNZ5zOQg5oc8ncH#xU;f@Fjn z>S1I0iq7J*qAv4&9QQ(SgJn29MXb{ar4r|9$tDa#C=P7xSI^O%H8B{bKgJ8+Zp7B00bZa z0SG_<0uX=z1Rwwb2tYs==w#Sl+W1uhW+%-?=;mK*V!2zCC+J~&X#E!#ddO*A0pkRU z;#juNJY74H)jt1cxZf!54tc-^0SG_<0uX=z1Rwwb2tWV=5P-nrFA!inR5x8CU#wxh zw1?v8BBR~^lP~>i_y2!B{sp1}2tWV=5P$##AOHafKmY;|fB*z60rGu4it^JmQ~&&5 zyZ^@q0SG_<0uX=z1Rwwb2tWV=5P-ne6=;0^|0DPL)~yniK>z{}fB*y_009U<00Izz z00g#*fD%x~yGtIhK>z{}fB*y_009U<00Izz00bbgMFjk;{!aif9+nFfwfq12 z_y5gVQu&SckPGp90Cx400bZa0SG_< U0uX=z1Rwx`Eg+!X_ Date: Thu, 11 Feb 2021 12:33:30 +0000 Subject: [PATCH 06/81] Update 'README.md' --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 7169fbe..df28940 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ # Map +to start the container run: + +``` +docker run --name= -p:5000:80 -v /home/michele/sledgemapper/:/app/db -d privateregistry.michelescandura.com/michele/sledgemapper: +``` \ No newline at end of file From dcc59f7b6981c43866a741711d6554bb2385a0bb Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 11 Feb 2021 23:47:32 +0000 Subject: [PATCH 07/81] first campaing bits --- .../Myra.1.2.1.0/AssetManagementBase.dll | Bin 12800 -> 0 bytes .../Myra.1.2.1.0/Assets/fonts/arial64.fnt | 288 ----- .../Myra.1.2.1.0/Assets/fonts/arial64_0.png | Bin 49070 -> 0 bytes .../Myra.1.2.1.0/Assets/fonts/calibri32.fnt | 985 ------------------ .../Myra.1.2.1.0/Assets/fonts/calibri32_0.png | Bin 16177 -> 0 bytes .../Myra.1.2.1.0/Assets/fonts/comicSans48.fnt | 195 ---- .../Assets/fonts/comicSans48_0.png | Bin 30386 -> 0 bytes .../Assets/images/LogoOnly_64px.png | Bin 23520 -> 0 bytes .../Cyotek.Drawing.BitmapFont.dll | Bin 41800 -> 0 bytes .../Myra.1.2.1.0/FontStashSharp.MonoGame.dll | Bin 38400 -> 0 bytes .../Myra.1.2.1.0/MonoGame.Framework.dll | Bin 1489920 -> 0 bytes .../MonoGame.Framework.dll.config | 9 - .../Myra.1.2.1.0/Myra.Samples.AllWidgets.exe | Bin 19968 -> 0 bytes .../Myra.Samples.AssetManagement.exe | Bin 9728 -> 0 bytes .../Myra.Samples.CustomUIStylesheet.exe | Bin 37376 -> 0 bytes .../Myra.Samples.CustomWidgets.exe | Bin 8704 -> 0 bytes .../Myra.Samples.DebugConsole.exe | Bin 10752 -> 0 bytes .../Myra.Samples.GridContainer.exe | Bin 12800 -> 0 bytes .../Myra.Samples.NonModalWindows.exe | Bin 12800 -> 0 bytes .../Myra.1.2.1.0/Myra.Samples.Notepad.exe | Bin 15360 -> 0 bytes .../Myra.Samples.ObjectEditor.exe | Bin 12288 -> 0 bytes .../Myra.Samples.SplitPaneContainer.exe | Bin 7680 -> 0 bytes External tools/Myra.1.2.1.0/Myra.dll | Bin 517120 -> 0 bytes External tools/Myra.1.2.1.0/MyraPad.exe | Bin 51712 -> 0 bytes External tools/Myra.1.2.1.0/StbImageSharp.dll | Bin 65024 -> 0 bytes .../Myra.1.2.1.0/StbTrueTypeSharp.dll | Bin 50176 -> 0 bytes .../Myra.1.2.1.0/Stylesheets/allControls.xmmp | 66 -- .../Stylesheets/commodore-64/commodore-64.fnt | 101 -- .../commodore-64/ui_stylesheet.atlas | 274 ----- .../commodore-64/ui_stylesheet.xmms | 87 -- .../commodore-64/ui_stylesheet_atlas.png | Bin 5964 -> 0 bytes .../Stylesheets/libgdx/ui_font.fnt | 101 -- .../Stylesheets/libgdx/ui_stylesheet.atlas | 201 ---- .../Stylesheets/libgdx/ui_stylesheet.xmms | 112 -- .../libgdx/ui_stylesheet_atlas.png | Bin 22779 -> 0 bytes External tools/Myra.1.2.1.0/image.png | Bin 41427 -> 0 bytes .../Myra.1.2.1.0/info.lundin.math.dll | Bin 26624 -> 0 bytes .../Myra.1.2.1.0/libSDL2-2.0.0.dylib | Bin 2303292 -> 0 bytes External tools/Myra.1.2.1.0/libopenal.1.dylib | Bin 1390500 -> 0 bytes .../Users => Models}/AuthenticateModel.cs | 0 Sledgemapper.Api/Models/Campaign.cs | 20 + Sledgemapper.Api/Models/Map.cs | 18 + .../Users => Models}/RegisterModel.cs | 0 Sledgemapper.Api/Models/Session.cs | 2 +- .../Users => Models}/UpdateModel.cs | 0 .../Users => Models}/UserModel.cs | 0 Sledgemapper.Api/Sledgemapper.Api.csproj | 10 +- Sledgemapper.Shared/Entities/Campaign.cs | 10 + Sledgemapper.Shared/Entities/Session.cs | 5 + Sledgemapper/Sledgemapper.csproj | 8 +- Sledgemapper/UI/MainWidget.Generated.cs | 65 +- .../UI/{loginwindow.xml => loginwindow.xmmp} | 0 Sledgemapper/UI/mainwidget.xml | 84 -- .../{mainwidget.xml.xmmp => mainwidget.xmmp} | 10 + .../UI/{noteList.xml => noteList.xmmp} | 0 .../{noteListItem.xml => noteListItem.xmmp} | 0 .../UI/{noteWindow.xml => noteWindow.xmmp} | 0 .../{sessionwindow.xml => sessionwindow.xmmp} | 0 58 files changed, 129 insertions(+), 2522 deletions(-) delete mode 100644 External tools/Myra.1.2.1.0/AssetManagementBase.dll delete mode 100644 External tools/Myra.1.2.1.0/Assets/fonts/arial64.fnt delete mode 100644 External tools/Myra.1.2.1.0/Assets/fonts/arial64_0.png delete mode 100644 External tools/Myra.1.2.1.0/Assets/fonts/calibri32.fnt delete mode 100644 External tools/Myra.1.2.1.0/Assets/fonts/calibri32_0.png delete mode 100644 External tools/Myra.1.2.1.0/Assets/fonts/comicSans48.fnt delete mode 100644 External tools/Myra.1.2.1.0/Assets/fonts/comicSans48_0.png delete mode 100644 External tools/Myra.1.2.1.0/Assets/images/LogoOnly_64px.png delete mode 100644 External tools/Myra.1.2.1.0/Cyotek.Drawing.BitmapFont.dll delete mode 100644 External tools/Myra.1.2.1.0/FontStashSharp.MonoGame.dll delete mode 100644 External tools/Myra.1.2.1.0/MonoGame.Framework.dll delete mode 100644 External tools/Myra.1.2.1.0/MonoGame.Framework.dll.config delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.AllWidgets.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.AssetManagement.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.CustomUIStylesheet.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.CustomWidgets.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.DebugConsole.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.GridContainer.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.NonModalWindows.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.Notepad.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.ObjectEditor.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.Samples.SplitPaneContainer.exe delete mode 100644 External tools/Myra.1.2.1.0/Myra.dll delete mode 100644 External tools/Myra.1.2.1.0/MyraPad.exe delete mode 100644 External tools/Myra.1.2.1.0/StbImageSharp.dll delete mode 100644 External tools/Myra.1.2.1.0/StbTrueTypeSharp.dll delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/allControls.xmmp delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/commodore-64/commodore-64.fnt delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.atlas delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.xmms delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet_atlas.png delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_font.fnt delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.atlas delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.xmms delete mode 100644 External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet_atlas.png delete mode 100644 External tools/Myra.1.2.1.0/image.png delete mode 100644 External tools/Myra.1.2.1.0/info.lundin.math.dll delete mode 100644 External tools/Myra.1.2.1.0/libSDL2-2.0.0.dylib delete mode 100644 External tools/Myra.1.2.1.0/libopenal.1.dylib rename Sledgemapper.Api/{Models copy/Users => Models}/AuthenticateModel.cs (100%) create mode 100644 Sledgemapper.Api/Models/Campaign.cs create mode 100644 Sledgemapper.Api/Models/Map.cs rename Sledgemapper.Api/{Models copy/Users => Models}/RegisterModel.cs (100%) rename Sledgemapper.Api/{Models copy/Users => Models}/UpdateModel.cs (100%) rename Sledgemapper.Api/{Models copy/Users => Models}/UserModel.cs (100%) create mode 100644 Sledgemapper.Shared/Entities/Campaign.cs rename Sledgemapper/UI/{loginwindow.xml => loginwindow.xmmp} (100%) delete mode 100644 Sledgemapper/UI/mainwidget.xml rename Sledgemapper/UI/{mainwidget.xml.xmmp => mainwidget.xmmp} (88%) rename Sledgemapper/UI/{noteList.xml => noteList.xmmp} (100%) rename Sledgemapper/UI/{noteListItem.xml => noteListItem.xmmp} (100%) rename Sledgemapper/UI/{noteWindow.xml => noteWindow.xmmp} (100%) rename Sledgemapper/UI/{sessionwindow.xml => sessionwindow.xmmp} (100%) diff --git a/External tools/Myra.1.2.1.0/AssetManagementBase.dll b/External tools/Myra.1.2.1.0/AssetManagementBase.dll deleted file mode 100644 index f49a1cc3624d5f5555be1f29269921574f2a9b25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12800 zcmeHNdvILkbwA&CckkZ4k``%Y%Qlwnl`Z3CC9P%rNNgO}vgF4Gza<-+h{!AHT3%S~ zmG7=>3kO$(;)D#45(+7vHi1kaNn0|c!>cK@A!(D6GzHR337M48(1f%+G9^qV&;b3N zbMHQ6n+$(+`bQ^My62wPcfRwTbH2yk-5po_AsIvz!u`%WM33Of*G7TA9ZW+UTlCc! zJrMnF+aqfGciRSzMsybl@cA<6&<(80 z|J7$eG7HyI*xkj*A)=piAkMy~iR!`Y+e$QWw(Pgj2_maTZh__@l&^HjIZ*;JodihW z=CKBT1CuKOuhL%88v!N09Rk9M>cm}hZA7}#o|AW>$iC7vZnlLG)?OQlHr3LM9}Jx0 zho&%Xyck_9BvNN9zDIhYK8dEG)M9O1D+m~H#b*feDV@B4$kxWvuKJ5S=u8xmAN!gl zq^1rfF+ei~rKYM<8!N?G=~|>Hq(j$2DU=%4Cxtx8l#zrL)1Aew;p_ZvO=&z~zeyX( z2-tOzVl!;iTdZW;&&{$rP0O7P{6~>aGvZ_1ShaF2E}-aKvU%7VnY?hZkF(uX!mHS| zi!HEG2McrXjJR_F>z|udW3$sVed|`rw;iL#g;m>$q>rC(Jn+9Gg&1N0q0|*dSDklh zC1MD%urEAiv2;^$9(tZ;oP%ekKBtQpf^#kAMrcMnQOo6^qh8F^t2#L!ik;d>83CqK zTDypYJ?Egi0FOn>S6YZ8D#K1`uE+@^xrm7m7g3Go9L`=x5di>-q;#abWCMt&!bn9j z0Yz;T+re;=OFMOmKFLnGikIrym&s^HodG91gr0L>C|G5-{NwHu7)kO8+kfH#Mm!n4yY zMoUxJMW7&S3eP#+3VA1kZm%vi`0yr#K z5KJSv66~(|I*D>Nr6{^$K4By=0T6E^xf)OI5VOSZP!KTc$_zpFS3E%Sd5R;x?C?nx zUnu1nvyy9IsPnAS79o^SM!s=DepRuB%(5*c%+yKb)AU|M2Hp3u+bz0=B}FTGsZU{) zi_+zKNuo}Iwti(N*McD-#U!eR^i=ZwFzP~R7uPX{DQG9xGxz{Nir0i4s8JMClb%!D z0G@3~Fzezf`FkLJuV&9=ieCt$-@E)up0ihaP6@iTRuq;SN8XG@x$Vo z=KF82FO@l9wxt6GSjav+0tp`!ZZt4}jhsf^1XX z9cE=**k;w`i#`{PVkf3I)kVYPDY*xrztrr za$D?bY?t#aXI6BHYrV-bZqXBZ)-vhm0@sBZf6I8lYNj`Mm84|o?yyO1;jfz}eLBSO zA%Oz|j|#Lz+9dcNMIVCBPYs4U!wera*yeHJJTKCF%`>n(5n*_j;M4RK;Mdz3zgF6=)y(;+^s-s-Ked=+ip`v6`?mwP>FLNru>82#xf-}h z>!NIV5dFp|t+z%@>e2&IllDk2cj~WWnIgKC0W!dUjr7l zidK#E8Ii@PgRaBm>5e{W@4!g9gnGjCspUd_%krtUWVAIB_ABgWF;oy!+k|4Sq7`bn zR@AIk>Nc8XtpR*9@?+XRJz%~`ZFG@d2k9-=HobyQtL?zAQa?tky=s5ZO3_XBLExVS ze+}JCS1KNTzheA;;0fTn6X=jmTYbi(O3?wKuCoppSE5~3sMFTV>Jg3aH(P`A##&-x6gANiW-{bo>Moacz{pm)MYseyWg zx|ObtenwwF2LsukM?MGYm{31c^D)*Yx?ZT$;&l^!F_5umar)X4w)r#lI(=C;(-T6S zMt_QC)6+g>{V1{q)UyHgQlt^oPb!*?sJz#O`kCUm;N&jXH^Z;fYpBC2b)Ck!L#}Uz z*)x1n2q$b>OLG=eR&e#I_P(X3U7SO0roTI7vD&nY1X<3ct zdRkedxt=Z!G%toG?;(mt!&R6!8XK_-Yv#R_fcY?ZwxxwOs4@&0={2VAm7-}Mbg%XeviI~?}pzi7VgCkoxsk3eTmw!KeS_Kwy`(xd~N~^ z(>%dZ`<6{B02^toz#f4afqMiV6qps56F3Dpn{EVDbe+Ke68@cnKP~u|0K4f8dKhc5 zQV$pkyB_P`O{qvX@O^eKb|dDr3yi9l>=BBpM)L^ZSTqm#z35Sa$FV0~u0H|&`^-;4 zzdxeDe>Qps@Co%WI0wRy;T;OYR)Nn_L9d~C>S^^o=={?DG2rdtp8&obeo^2n*o}By zS{3-fmRE`WHgzz9-ABDaBY@x1N9khq61_!_(}Q+MMb&(>UOi67?IysRjWx7ZN%YjO z!fWUW`s;9uYEuvC7WD)yx2cT!C*il77ppso@jc3lcB`yQ+9M_?~qO`Ai91fLeDl=LXDM_^XqT>|eG_zlILydcof ztiMDc8H^_cQb=%t8wDN`_`E<0v-J5e+rdWyZY6M|z(WG31>Pm_YXYAaNDsvkXDn#J#plmZnZUD6e^IEJyoazRo~?HsTJl*m1`lGu6yWEXh5r3#B6uzi zo=bygNASEfcn$^6ES@QxO55oa?vK(T`Yzo7`eV3nrQ6kQcp9kl5N->16t`UKH>@2R z>K^K*^;>d<(Vh}Mf(=iWoDIVPm&Gg2D;DmC5$GLSLF*Y=0c7W7KA#=VJ3up=3zOrH zSEhQ3MW?jg&5k-Agj*&HBZn@bzT8MD=N7Ww6bSf2>vy=LlX+(Y^-mQ`&UiYr3*Rqf zX}mb%dimUNnceH=^Nutvrnfo;$IFdSrr19@Jd)2Ai@Of*%^oka#{%)L38%2v$&M2H z0Oj4;(viKcTXIHe%qb0JiaQwm+=iR7MQ4kf$MDaU`E82l3U+(W;oOOH_&kmQcXMHs_IbI>kT}}wOysj8 z4)uCYwgm5srECG@R;R>X_TuX$8D;I*2>BSA$*37Q_2!+dCqba05spP|LMhXiD^9pY zPA=`8ER=HN4tKOITNni==yr?ejt87AIj}j-JG0{=-&M#@af>o7Pvp)i3C3X_AI?ve z#aq0b1Jf0{FXtiuuIDp)-SOdE0Uj22a>?aJ*fMcN2UQ@npXQkyDIJl*=W_8@v^i%L zqR&Bb@f!-ClRM@VDzdYxLPC2sPX^~_TH2M^$Dqu6QF0O<&J_1b(t1a>kR5ZzokB@? zL&GfbBac+O;}eLgCj&y#tFu=|UYW~O!S)qltwK?sGdwvq#wo1wxLc0{u# z-WGg+=^S^xtE>8(Pn4WO5mUIzDx2Vx?{~cO3p0hot~Z{Q$)A5$tzNfqI5#%wiQc(A z^f|>5FE_zPW(tFKrpokVC1&OjQLz(F?zn8_wl( zr5fpgH-&oIpUqD?bW9+ZroS}q_HyI763Qo7cdGPWXWRvQd$w506h@sByAGG@Bj_z1 zL<&Vn`wAF+cEah)ma_hvGa7IMgx80?PSKt8Mx35vz{KiUls9bBFE4*wLOgE-pI`=0 zk?l@l3@BEY;^jFYJF-_h95i+r%MF#>-XqS))#t0w^k_a${mw)d8FRh5-ywo-GPXBQvt#2RR)_v5EL<536OI**bvxo%^dH; z0$M=0-2(M^V^|#uGR-%i7;&U<2&o!yd5p3l1mhfViQ`coHppIg0(u08h8>TqSN4$r z4QBE7T;Zs{Zeo%K>r*8fy+^Vh`6J=H*~u1iLSn9V@uSQf{P( z-LJ@LXBWN0*anN0vhcU2v_JnHuix>G@>* zE&!{xO3+E_#-~uVZ=durjP?#RO3+TgpIVy-+mlwl_hqYu&!=SI-IdXa z8(+rKzyJPU?*HL$ZrgtPD-ZtLqqk4oNJfHGD4~=U256eiXiU(x=InT@S`ZHNBNmAm zvG|_&J{HCIpi#`iZwmIr4=xCY5(HqYg=Ec+U#a7nc(UF{7{*#d_<$Ef3k$Xlyui`1 zSj;2?FlN{)hL#J$c`E{d%!5j&po?ZlI@m=&*INUd==3zLSG z(7Kr#n-yG@o@@mXezOwKi1Q0cn=$li8LV%y18_TmHu3tHHVu3k5ud&@hR=~Yo{eWA z)-imL14b$q3rBR^G1#40)AZeDLdBi9(}3Sr%#KgrhtbBzH7Hf4rXNI~8^Mp_If*`+ zDI%O^LR%&go=FUJA;BBfI(J^94osD81af8CqE-*<3n{P{o*IFVXTWZL8{El49VuGCylr7>2?e!>d8O<;As-zX==AEth-QiJfkta{L%L;E7a965t~&J@dtr?Rz3m6xlN)XNkF$%(VX+FhXZ`};@=EK zaJX^!^8_tbl)%X#H+KoW-u}M+e_61x`9Hq0e*43B|Jl*| zKat6?jox*GIJ)y*R~$T#UxWCy;GjEv)nG8@!Gcp-wfcOT>50){>fhFL$?7!}bTnA* z2!rYVgWFGBGkENtTTaaS@^^M@tNJ#^c%n+zV&xwb`n(~0*6YjXcVu$~|FwqW$gw$S z@y=41IeXZ()_#ZopGSbdi$=}kwdKsNc}~mENzdW49#_PHLwL(6Z~K_TIR8p=KlRfP z;AYwjEQ4R#?gX6y+yb1h$3nk&o8JqDh2meJ@}=clXvTPo`3nY9{?&(vg4Hbc|1Ff0 z(?bR)2|f|<)h?|DAmuYm5%Mg~7CA@@A}6{(^fHVp_*8;c4*aq6So#Oi>Bd>b|64`F zz=*EEn^uK4;VzBik54xx^uj-`1m-Dq7 z(J$MckakmumaoV1>S^eFR(%f~oah{B!}eyuUO7sAa<&?gF;C2h$$PWQHDJ})+Yfu5 zjJX`!Zv5(YHSSArbFBRFaCSP18&;Fi?*1Ug*oP?PK0)dd2u4R6HWn9}XdGS-u%m=Pc5Gkf++lsZPJTy@Nz zYo0?do{Q=ks^W!ZuKt*(NEV%m8oj7hp^91@Nx=uh!3ru;E2Zj+s}!S!5zh-W+~~JM zq7N_V_loOG`)e;Z{RR$Bi|2kH&+Km0A7)(sLHvSFIZOF@dU}rPv7=?RO@o@%tg@T*-l_fc z)Y4B#m0349;4rHnHdITS7;rtTr?oI9i`Q(QwJrM&K4T8~E4wLUB46|>Q4YG_y4F2BFFmq0dLCL zLiX%$lRqUt`y^e66cd`1D@L2~2}fA1VV2kSn1Mw=XPRI@|A+2g7d!(A#aWk!4qI(I6_#re2NNJC-M_87J3>}L-)gBdgLy}O@y z96SDglLM`aphl9;&PwvH-s;_7vvQt=K`zsuc3r=z7;42K7QwuCLeJ^=kS{iW?OSG+ z)s8pPhhITOlRf&wRch_Y*_NRAG6x-`2|9L~Zbpp!t4&`Gg;mJ7)ZWEljhu84?YK|! z>Qv`s6F%gE1rs7}7f89#Flsc5>A+K3C;Lqm9&nfFg?JD<`-8mbaJpVMaU=n(#%my^Ivne8S?Ku^oST6o0uKlfg)VNc;s) z_GFTLr4cvBDRy3Onv)RDX&!{+3!#VTTIv1TXKE+;6q&KANaLH~ZaZEbA|^)rtu5BvK2 z`=@osr-7;QP!rG0R&LH)TX*h#{URT5vgdGdQu%NoBYM2xdeiyAch{9>@FDLFH6+8M3#eEEsdFwkkIqWoohBxoQq+0H<>lo|#UG7I>#Jv85eGJSB$)Fg8k`lZ$1Ey$?%Yv65iVX{~#B> z>+MbNjVrl~lm3JTQ4Xg}n?#TmPua$rnwoC&qKVag@R&|EO)%`>Jb9?rQf%`1QNVU5 zgT28D!>iYrZ|Q&#v;T`RU%s19?3r0o;Okklqw8e{p1ekvgC#qY^YflyfJ( zZst)^qn)GBEw8_$1+T6>$gn9ru8_F;>g(ddmw5JXf(4)z87W{PS>~k^%FPenYZt7q zue-1-pu|$t!PNCz1xcS%2qQ)ggnv>&o~}24Uw<+&K0aQ?4i@I@7u1V5}^Lq+6`GekXY;2T}${Iz{7Wy`t<2pxWWX&nT{H$wvdD$Ke zDk^BeMl9vovuEUZ?pj;)Q=y@uc!8xw#x7>udFy6pJdmy7NLA8nVF>~TC8qOz2NE~b zKBf?{v|Yyf+5Zf*{HA^$>^hxgjGYvrf^`n9&4^K|=HCu#brHJQ|-*`|Or zN@jCYQ`6D%K=jfj7|vT%#I?ML>$+guyd3zmD>VQ%(ABlxzTfUL2GD1kZX43G{=0o6 zA0A{@OtcZz#5(w~gJEm1+1^_j`H*~I0URtsF#(^n0_%TFTR~26_b}l>a>6oh4g*fI zvW6IuPpgcJ$8o#3d_ucG*U`?-PGz4d;n*UVF$JcbPvleoMeV)z*G@*T31f(VfY+=2 z)kX)wf6)v&j?ey)zr}188Jezz{nYHoE+sR0?od;OXANL4)iBUxC@Z5ci?&Fm25@ zWHz>2*KKrA9##t$5lgWQ$sA7V2)~M zz9FWzehM9fC)7f-_BV5ScyhaIszR)=OJRsxZ`26vo1O*}7Y!11zOGeLXL)Yz56S8# z9H=KD3chzx2=mQQgK*eH&jm5;KcgFYc%R)yCWZXg_P+n za2r|%&nL9NiH~@#yQ*s6tv8xOvK85^NTfOqj{X!p5^F+`@l^dAvXqf86Tw*twc%D| zB3Y@BWOh1|z(()QpSLHR*n66|cxpoQ6Drpmm2VR{74{YXl7xy8+J_!(~Vd#(&$ zO-EW!{}_BiR#Zp;{qF%^Ng!HVGOrp~xNyhg!1E@s<%2)!<}H0=45j2tW!}vpNIZ>C zZ$#5oP0!BGM*eWAE0N$cWGwm}LVVQZxb>wfdOHIjMJRRMFX46Zulv~E%d_172JsG& zVBC?!1l5j5sozY-1~MC(n9YxVa}jQp74q@nd|M&`KIu0&Z#VM-_ndH^2895$g?EeO zWuR_|v#uKbzcm;A&RrBOhs><47qspMhXc;Nf+Z%N+cwiX4hBVc!_FKtaS)4`#H%8T7gekc;3^u%!y ziX>3@MWA#J=SxkU$O;j=q=6Bl35f;Ys1ObY>S!%y`I(w*SxqnA$g3pcpeg$rT;J5x z)PGN&pK9rBv#hG>U(|rq9nby7XGdq*SL%<9WDIOEd2T2TvANj1hRuU-;Kk<@UehvFJ@r){9s}(y+-tyrE zf!1Njodh}|mubh{*2%DClMesR?T)GfaByt0A7zii_~?QW3R2S2(ww{W8tEau7lM=Y zk^dz&mB0rPCg$7@x;XPO8wtY2A+rO6?c0rR&f#Qcm5G5cD52f@kYX{0=c9l~(IXT?w_Qn4vKG6#> zk6RA@>}w~M5|>|-OljF#0(Oy@&>^{G*<<1fjc8M=LHnC3M5ad1#=3oe)I44wV2{p^ zc@GRY1LS#ePbX_Ngh`$gnSYgEVfl}r1shE{_2cnptHED zq6AgesU+e$WcMhr5;mN`9#pDH>NimrQAQob6CquEtIlcR-KW~htpQ->JPy{TDrFT= zAcF1h>+91i8sn$!;K0SBnKvH)3M(9^`|sIdDmg=jMn*<2Zu@z7c+iL!yMV|uCh$85 z-AI8Utg*jnOa~bBvt{zo?32vbcqaGm+c&j2D&C7S-3ktw^l!<{H&9QLa{(?>)3SAE zXGd&FXBmXhE5JY?kVHQ0ES1LYztu`O>KT9R!YK%14-Iv7^<{#E|2zfZI}myPSz221 zhl_%hy>y2?U{7lhjo~LMRNBoN!d~Y>=XooP5r^6t(-N^BGHO=%>#FI00j?Idu_&CkA@WcJc&ytI7fm_r({@82jO@} zTt9)&VK=(^6`$QXs4l-YxG(rGTbzSd7YR-q+6D`c?i*-2N-N@dQ#*sfUv3$Js& zA*C*q*ha7sbZC}bHd%w>z6lhI@OP=xZxSsk>NzXOsL#VLq4tlFE)S|I)5o|=ocJIFiK9K6ycnJ+!ZO&U|h`xK9nVC%Bwe|3ALD`A|1iN925pc8K%{y^k zKJ!|iMtVVkXY)#@Rv10|P(t~Th>Ku!wSbjh>!%?y;9##np(@WT?y7N-lpj7#ASaYJ zul39*4;CW;UZ*xq&HKXU&jGGVB&yw^-xmj zFcNbjtne_M z(CCZZG91gn%w|bcI9@?C`EG4D)biq1pml9w&m<)bQcv$WjwL0(>vhZiBOqFT1uhc0 zGXC5g9Ns%#tE-$jy)`oIV?GLpysCs+P3L+14cV^!^s8>L!|T9XGgZEGkQjnMqQ%G< z)CUL#PfzzwV=0KzvzW=w`5;>!*=nWV+FLt<9;6ifeOol_A&m2EYTcIYbtt$T>_r?6W@hvc2h*0 zYMO)xv|Sb%(;q=wtCi(V&zf5C_}!+;7tvz%C}Mct>TFlym&Il&$C0LO04^$zzsk;XWe)t=FF1%~4?LPDOg}xAF#>6CL%`{QOQKAp`|lpQ zC&FG$%A<(t%Eyc^z@ESvW`t8wHvK-pNUpp42+xH7I2On#{VvXqcb}=`yxY0?FdS>u zK}3qfKAyW(-`5X-ed^i#e~FotjEqb{p-g3SDF}vM0E-63Co04r1-}hAz{bY6BoT|@ z%MT!~dJj<4*T65Nk8w#WE~$*|$3%Y9Rb-PYku;0?C=MWuyd1C%_gfQuN#AVq8DCz{ z=g2w{vW9X*AVn`zMP_O3`oI79@gw(e+5VX;-~b+OZf-5+H+^;%zv_IrpRRp;ySh6L zSXgoGs^edT>6PUF%O|QkJ3EzAu3rv=ZcHj}{RaK=2IgYFVt^`qCiF&;b2%OAtl=pMagzRcVzUPc(&VC_onl}aP;=}l069m zGaw=?EL<^>am#0?Be&Oyw&JBymC`&*CXS0)P$wsRcDnolc$)w7#)gK5D+i~M&p>|U ze|EHOZB+0Z#G+SNfT1-0a&i_h^oIc?_o9`!%IoUtn8Q#6Mn~CL9MYlMwEz@}8Hc0*QKBbqJ@%KA z7Xt>KNx1E*@RJ03xH;P#-**V|a)RqK;MFKD?@X`@fZ;X(=CdMxaJWxM60XqNVUq|B z^x2@x^F!Gc8-Vi`;-&gj!8_bn-a-(!bXt`&zB!m2zzPa**@iGsL`w>so&LkQ2bcc=FIO=;GUSmuslv}d3-dV=F2;m}Ia8<;FpLQ_BrZSztav^Y z!hN$LiQwt!!TR?EeOqoiD?&f#lTG>2)%`lb8{vo_SFZMuMykhy(Yp-}IK1}<<%ja% zu$@Y>2t2;Z^Ar^qNx-zT`toF6REL>!$dfc#%#mIPm~iZ!?Sg2K1m@uWw|A+Dn#Lhg z+(^`Bb9R}aJT#o_oN)*1!zR+AQj!oid>sA+3_fN6X@eCL@$YIf1E^H2UrUk7L&vHPX)5?wB+ z$;?a}Ur|+6rF8BFn4&D;&IFyEno3hbE#fA0|Dast>td;X(yI-2#AB>CfIS6(gk=P2 z-E!mqaqyv3ri5yhH+2QEAlo}{XTR7YG^e5Lq0~ZW{LALp}q(33kB7 z_QbL5HA_y8wK*x|6pFC;`HH-XXBjxv^G^FX?$YvqY8Ph*d;JPPQ~pG^lg9L?{stK? zia0q&ggnL}?4xB9<9k;5W(85`4D#w%&=bXIzKQhNDo;i{oLi|g}OjcI}F{UnW#@pbtU4qg|p`5n{1>O2?h&d3P=RM3wFcM{Kvb(t)$~&@P)r2{cwe! zbZuHth&bmm9Ig-?RKC(Ik1w)fO4t^}M; z=}|EF(--GyMNMG|zZE6PUm|L5L`Qc<;=d+tfypwOb%=F5Wk?|CN$QR0_cMYN6PGzx za*)EcG+P60Y;2U4HY%a7 Gi1bUf!x|E3hpq9hTZ*;n0BxkW2m*=Eup-f`R9I~c=?CjLTDHan=gg!mJbt>%|ufo&p6{o1z#MeNY2;i zGe30ijt+sF<@Tj!fq0!B*i)TH{E2Fyin6}%yLtE>EBm4v1QDPh7UGI#9gefA!KXco zB=%1DYFM3?Bb+@)LIg7mEzS}&)4W2l8j|<~PvXURR!cKDW^k1S+uJ+VWc;4f8#|Uv zk#`3fMFP^q)&R(q!9_^R9J}vi3bMd1kULqSS?qAWU-EBi|(~=@0vHOu0Bao zd4KPfpkFYd&<5=jlZ9n>wblP=0T?$R_?T~|c7s2+sK`{i-D+Xk1k6D>JP=$_{dEPz z;l5_wUBKa2rEWwaCq*?5e-&MpzvwM&fthNgU0M!=hWrSD?62Z7nSuk|tj=c<1wHdw zcqA9EYBA*>StnYtw4oa$STVDZu#eo?FCi!*a~5ndf{4x|8q6>ypUVS6-ZTg){X)@Y zigBV+UnvD8C8aI8a*mmTY~_ z!@AQhQJYUUe>VD|2^tlk7KM#0qE1mR*A0ydEV>n_^?!75KnwrooA}bZJJcdbkWr>k z%-GmgIER^81%bshZc{*FZ~XoDn6MB9P7V0W*Hd_R^v~n*bI-da9*iu>hbz2mA^aY$ zwN5>~EIY>XZcb!Y+0UjCW|fQqrMisIU4O^Fwe)l=JjO4Xt7Hu@Y#H7Pq4s=tBrxt< zCR}>e`+}NI zH|jTm;^PS};+txg222g-R0+&*eW*hcRU9-5+gml?_PjAY8X2`sk9alyj8hhuFozQ< ztWCESwE(t58>~D}cy+nw1i?rQ37cc@F-YQ0{c!6SW1-JLyPRAn;B|RDDuN(l&yX2D zY*FhiDJ}+E%3%Pv{5CJa&;9f7hAEb+EY}u`zs&<@{MlAQCtu?7c=6Q(ISget@Hy$A ze3=H~MT(qJ$>t%Am}jVUKNs~xvD9DMts79ui^s&TgkQ-bjFJn)=A4|_TYg;!L&J#< zt&U(Og-phF{thH$$2HM#{cSdgIKaG?g7Wrp^H*QAr9MQiE6kg7u)$k(j-%rTyNJ_; zq8133asFG&_>gy|i{n*8K>_uS;;sbxVN~%LW)g}YQWtUmjv)oS!K%3BZ?YHjgnJ%Tz@SaHsoq4busCMlQQ;_#q-5Xp;e{O@E`Oax!)uzDo> zOb?*8_*6TAqV|H24owxg%z-o_D5!O2(>PgvAB;%&42z@;0`=kn>v3%0=zafSZ&ph$ zs;srpGUn_1H_ODuA$xWQ4Wc6MXb2^Qc-`Xy1H8OKs^q0&$#=~u8)@6 z6;k8i{tkHQ%S_5(f`wye$56Tf&W>igQA(`(P&SuDgDpp|irP6z@2r!K&?}g=d6ULu z7};|HNUUqmf3@EvYs{2^Cgcg|>mY#;cdQW}@D#Sdvvnw&7>%hJ>y7|?PwAltf5&tj z^3f}wpF^iAiVEG?>A#dl$;FWrTjcnfahIe`TU@mSlK)zcb17Yw6O>P2^pTxTmth?+ z6dCE_?(r=fu`1%ag;x4~jMMb@Jn@SBF-J+QY7|+5s|baaUo+wr-~KDa4Hk|kc=_BQ zE8ukbVJoSoiY4vQ=61*T$7v0Y*koP_r2{XEG{#cMVrY7FAvxAU>CbAqQ(3=9sKeL;)SAT&?*$GFrJB(Gl3 zJ7U!=R^MDCLSt6!Odjh&IA}AwzyE{VVx;D0kxQc|ean++jRR7PdJ9g%lgZVu|!$GbQ?J8$g|o28lS%@v*r z*w77ackY@|dEFD;HO?dU2(H3>!kf;IiJ&n}?vlOSw z1%`b}c27=%S+Gt9tXCXl5T!8%6#zDnP@oH>N;FEvY$~VLaJkm5dP~@f7x1sM@*LoI zKY{9y9>r5R%9&hlK3DufI#ia5CdSYv1h&Y#t@peU#35O7B6;Zw8c4nph{DeCxkjeo9N2tCRx0ZV9C$5Ut^>q9=tQxd`R*$$P53$+dhesGNIP zPg{nEhhG-c;o8@`CwdLYX#W2F%RiEd$~<$K6K~0rBDSDpn1#9|2A}iU|ehEw{U6 z8Wi85&6X0%gy(6rF^SK2yM&SL_M(lQzSQRI_})OM7yi~W9i^+;4o1s?wigI%k3Lkn zArVvi7P(v(eu$v_PkatuRsvQWy{6)hkkn01C2E>BDP4yzN8UGOWo3VbwsVlT z*-=bxvhN*+jnl@9RwL+KG^Fc!z@l!xI9V-q`AKa25FL0k(IBRaBwcPLbO4?{ZP89dVP{s zAyM%WPy#LN4#;1goo+T?{^Svo1Y;g_w*7_u7^VTx_8;-FL|Z%l-IxC%y~YfA3`)1O zjQ|i6d+{V)6wUjQ)Ipny3#V#h4QYH``0Q%0q!rW>RR(I_8K5TV?ASdyIcZoq<@{Io zbL_S-jUDCn>5n-R9+{gOU#eu{@eN!qNztH$l1{aL2 z*DvB@88_NcL4>|RmKu=1;Ur&E{x~Fqk@&i^py$9(OM*Xir5wgXpoRTNi5VdTLj^(U zWM@%lIgg~_xWs}RUz`+xxqW*apD~}3Yp3ZrREqHU-yRLVG}O7?QKk>fGw0{ZNdz-u z2qp!n*<-+%Jfx~de6%nXyk$u4Z;UK`37U74a#A=(Ltrznz%syLJ+V5V)!n%`KRqnJ z-6dwKbwH5D8H}`K(lDeEQ3#}u!HK|Zrvw3F6QO<`BK(}zS{2>*C0R->^nS?wl@-Do zvV`Fj3kC;6{#Luj3?uA|qK9cp`f0|(%Z7{^dnVu4@c3E~A-!U`6&s%6kRfT0dGnT# z-?|w>z7{O^5{We?U7eR(4#cY{vT5Or)({i}d)4w3oxylGg-$R-gDIi$z>ic@6XBO!flhsvmxD zj}DMKWu5dX$3$fNJf8pj*+;6&-+#?7O5gd)khFI}0?JP<4-vf~4m~J2t9$+$g1ByV z0w1god$Bv9P&MR#Z@P&ihsEk?;bsgHb8*wk3!+Xb#UftFU*@fYA>eB59t(a}%+27Z z$^)MgRUB%lk^Q2iPd)XcNDRf$vc#B5ND~`OT(;RBk2kcTt*Tu>NOLuVC7J`37J3D5 zkJI#ur6KA4CVij5IhOp6mSC@!MSwMq8UJ;*k-3!qcwG&L4}o}%H>eRv1##i=PrZVP zSP(jfg?zFJ_A!s@__5dtG9IRe;#g(b*?>HndvUBKzh*HWnZR$~^ps7@FA>t0f09FvZ~*%>1O-7ySs}OPC;HE zAX)gfG{vOKK6QoHDXZsrI-Z*wM2Wd*!A9?v0Ly;~4w)9DRFIQPGLwVZBZ?tm0Q8WtOI3NikDAw``XaDfg zAA(~0Xye??cFo8asA-&}8K+2nA;hYgD9^kLF}hI44>FKB5iIlBb}+vN{}iS0hf@gF zWgZKA)hS5R)O#u00$%{qVNW`NagnGvKqJmDN^?Nc@}2m-FF zkg_FRk{RZMgyY$8dXE)Q-Pj?%a)pm11ls^%2)?jwqObR(p4h|0wbC^93 zaLr;yP(*CbUqOJBB~cf6Cl|La6}84Z$&Xh}?U4xtclw+)5y>TER+aG` zYS4n}-(;hS3mLY0=YzphZ_j%Gx9__{4o?13E_hkiqY!jCLg_vPoBXCQh<<0HmZ*Z- zmaeAEn2g^=i{MS$o$mU^X*18((6cIZ@{8*n5iNPnwe*@5Q_csipguL}P5-_ZT|1IJ zDrnTsLW7bd@+VS}#V&<=&06j$)1iqQWpR0*(S#zEAt_qkn2_rl1a-lrm)B`RVv666 zQbrlx!?&p>;(saAQ>DzB-6ntli?%=awKMH`)yIf+ZPZk?jSf89~uO!Be1Y)0&>m7X7H$6I0~u5aHV6J zLm6ez-NJu$=MiDI7&T9pGacO#H6j9ES2OnwHw^8xsw5Ci_{U!Ix%RVo zJ=ah;X}9CNP7dxdB>Y6nju2hM^0kpnr!BpU>Gdam7!0P>Rzg<)V>eGfA?fqAYsn-; z7^ugp6037Knl+dM5HGe{Pq#RF6i__)U`6t|^m>zz{e7ajH=Dg+C*Ht9)M+r(|{sjREI=5-}V^zW)lR=;5oO4_=k!_hhbD zDwmV;k1=?)I^}E91|}rfa-zJ}iKA5xWqM_i_8Y|dMlIST$7D42X7v|#hB18c-6W8( z2G{-wlBpy9bJ8)|1Y-Jxv9>!cX5gsxESqU6BX0)f(B9N@^_?F9p?wO28tpj=ddE7- zgE9+MdNp^U?>PD<`FCMPN$L~yqhIgCwMK98zEx_KohQwH-Bza7u{$@Atx5_8|7L0R z33vqlAUf@o{kvB%P^HP`rU+)#n;u?{}1^B=Am z;s41ZElhCaiND#PAbXhxJhJmp>HRn%&)cKtx3kAMHHN*+AoqmqB>k6fxfLT&6$v<&3K+CMG7*UC7qYd+q!%Q+#iHMc}LJH&hZ(0>+ zd#e?&@4xLtRY6eQr?F99c&Mcy1{c|PSqftxL;fv>Pz6(hAId48F!&OsAG2bRFF7b2 zKAH(Sk#zJ{YsN)AN|a|RQ@P6@{&G2ZBioo8F8G9(kNqZ({nl=Xt+*1p>0`Mt8T;l+GPaZYRXL%AEuz{kZV?D7Hi}JskkI?ZDJA}70X^Lgs~dyu^a=Uv z;7R)R7Dm2P@5C-)xvc33#%bw>>b~5bOtQ&$LhcJ%BTcLBEeMW0D*YEC3UfY2;Fe9O z#CjS2Y1YJTT{=BGDhf4CDgb@ktLse>N3_vvlOm%dm& zxQtM@0E-fLlSMwiYM<1wS=5$8?rgguTAs{8=m`P^+p7aInlo{;K@ILOqh*5EJRnI1*GQhP`jDqd*%yb=IV%!12;1l# zmmPi?=UTO(@1ts__mM4otg#dyNH}#7+>~S=SavFZx>h;xblS|{TTqqKPf98hq5DyG zFa_@AJ(7OMWVxS|b89L~mNHLszd&&}uCJO{X*Gnk{WlveH0JL7mzJjT^#;pr(Pi0X zLMY_q9CU!@fmXCKEg^_N25(oaMX0;9=`{f24#qp$xW6IE1B+i zMlBCJiaoc#4G`>gkM<=Z>k38>uK;~3Cmq|&=zgLkdeRqMA?cjivy=7>bpv#LFJfH_ zDpm9ZjVm@w+8DwHmKmTZDI?)w8JoyV(quM6tt=N!IK+7bwJAaa5sipj=Ul@Y+|IIH zwFKIQKlPhUrxYh?JxvrL(NRC4)&zBACIoBsm;su;*dkpq26~E=>_uZs?Q~M6oZ;Jd zY|=@Uoy?@}@H+K)2GlIK@P+L8)o%%W%UbpB#Ijxyrr>40%og%wFx0hYp#{Tf>M<82 zLJd(*sU>w$J)9eqIZ`IfEq3Sd^&YA$#~arL@}$bsw+u;3mQ0~JZtu+g4i?neX*37_ z^`pvOx-aQ!IfV`O3>tW|l| zTkO5zWxu8yx)mnwT(O-d(137sxHyMz7?W|8y;87kgx{qM?|&QJlz2Dh3S2KXWFYRX z`9LxClHy?X%wb75P1+5ziQNVM2;qc}SCaB1$x0XrB{+q7S&SjV(pegN?yv1xl)!jP zD_}S0_!$N@pt*kElBV>%*OfSFBEm~sOxe+sB})TWEjT&?&+Fd`dqq&!V&`A|~X7tmLMHLl8{|Au7KaW$I5k+oVO+$X|_bO2RKiuVSEn2(Fx#6KZLyJidlJ#QDZJ}V#EbtO0@jfEC@MxqeS5#05 z8ntJ!fuasf*_tR+SkTyWdVaFB4RoOTQ2mr>1II9t9xCP5o-pRv@ee)i9G~tU5CmaSj6G zVF349NgyRzbwPpq(qYOUh;4fHKe2Ii%~{9q?eeOngv>XFK0Sj=jA!LgN8$BfOoNKGwZ`6`rqZR0zY8(y$(6 z$Wb!s?P}^e#NuO@i6LlFUWFe7yFG}!+8ctty1#Dw*YRd;2NZj=KW0E=dAts+;N zp4Cy#a?>9j@Oo77SHXQgLK9!&9Xffs3@`1rYL41>QE+)iMKeyj<84TP1W`N5+;<6z zfG^;tK{`%!S;XGFN z%o&1n!acZ`teQ(hQvJGCa)(ZfNS3@!f+F1qkVi;5z8qZGe3Hb9a{J-4RivJ2K04Rv zG;p9Li=S*#c#tD>)~aLK0RFo&yf;~xWO*`>0fea_{iskse7vt~7EEEF=^4?&(RCJWVmT)g&sJ+rLMjeA z7~Pkzgvc?{imarn)uNF)3O@$dB-|7s7pEsTRLv%;4g^DM4 zNXXh9>BN69Y6b5eA!x|EfAcO%*IdUVi%F@=GJ5UK6o&mRw%#dasS9ThQEMK$M+LVY z{;Ck&H*!vzvbD;+?#9@q+m~G_vye^-sjy_RM;Q>NlhRlW_Krp@iEb|U4BN@PNxpHFe&OUi@RPlBob1B*wlq++S(1~PP4fW#xCCyC$n?R2`@-}8$iHP zD=|{Hc8uaoj9oRI%)YF*J}LjK6jwFC!UG+k%#oK+A(0dhL7 zQ{kZyC1}4*BdOUxxp;$&DQfgE)NmEnmqOu=4 z*fAtirkdgF?}!?aiuI{|nksX25MCa;ouJoLPu?gtZR@t39?E8*w@c4S=25;;PgsnM zNq!xL>27Ma$8}L`qS9WdXS|NYf?NrL(0E>~vcSc4Th;FGOS>qx35ip+<52nx`_{i= z)I*g=#|A0fbiNvtwo`9Y2L-ZC7%DU(r<_rDESS+eG+C^sxijfL_Jxf2dF*n-9cu7ypT%M}W5<$Wy zkKY6+=kB^)hwRbx3Bv@GE&nKdQ7^4i(G?dwI_y|d3pZETgF}|58Z(j$iiTMvBbGf( zm;d7iIBN`0I|(Qwg@Ako?3OX7$MWSdnK=2@&!fGM)mobsn4Ce1Z;n9=qP zlYwRPI%t$cD&(^ObS}Bn{xSXkuG{V5WO;tL)Dh^#e!E{u!rC{1o10^RyMwwt893K) zm%aBcae6kK+O#A?9_Z~}0fHIUkRFRGE-yFzQ=A@L;>4FDAPXv7&@CGK3yNB*pl%ht z;kUOulmoEI)vyF`srm-^Eg2eLjcwdrG;jm`PT}FV<=g+0vn>XFuBfQU77q$TXoE}} zsDSz{GQpPoopRrBAp^*2O}SpEmQCPpRDrAGlwMuAh9I-Z*}eA|$cSG78L@1qIjD>j zhp3=+DuhNBKnUsfymdpM z=fkPCnHq7bYTPZ~kaJ6*@sI;tfB6!JLW6>W*z0jhRZt)a%4F*bTNV$`8gi9*2&$a8 zJMKf5rwDyHoZ@w*8IZnXcYq#~nj>cua7s^{p0UK87}N>J_vHEvtt438E}#L!IaZ2>qRQK_!HtnWJO5eB(`ax?0K|N zHLmVzXik0g3islItB7ZK93GhC1Nd(!gMQ(d|(pc|Y<$EorF3Q{3hNUx-luQOOgh*wi{aJ*4St zn4L{3%jS1@fV(d3LCD%I9DI9LMI5Y>Xds#q61)*9|JG~CH1a3Mzj@oBQ6Q4}pJp@d zG2oAfK8JX&4y_0t@q=O{?#n6up>n@sumK-{%C=Ppa_87TFu5yN^}kY9S~X5#%*`$T zB|9wGdMyZSItQG5kcUVDsDVJ4Z?dDKBPY=gvv@vO47wUQ1Ypeg{pEy zhnO5QdcGimA#`DOrb@a0A5mWc71j5B|7Pf+yCen?DS;ss6^4|Qp+i7gN)##S4rv9X zL9*YM(ZWaHp)^9+FxE*A8dqd$K0P^5_s!EATMzJVJEO1My%6*NXX>EVhA<2hc zCwX6M0?6ey2L)QXRP1=jih!AR`B)<0#hl|fnO-@lL*`%$z@wN35>AImsArTobmBOG z95uOZxGbgcp8_&dZT*Dr@Ipoh6jGFe_>48CQ=Xn8Jk;e91xFmMrzMo+RA2=emp)VtgxUdn|o9J2i3-HS0@ zq?2YoCjZuugbh_&h1hnH`RY%?t6Z$3={|MtcVuC5Bx`Ded z2w}5I5|v-pUa@F@>cBi5@ySG1A@<$NSW^^urq7v?lix4ZFi4{;x230IMkR&HQu#Fg z>K7Q3z}%xrpsn0FgAwEceKAcLDGYxUOV^v^$gaqBrkbh^HXD}y%M=OjKotevlh;!& z;5pZWYHy_kC(+e=qZU0)SE8-8CQ71RW!+is^Fc6=W>se-K~0A*U=+D z$}br%jVXXt35Y4eLmhkot26?9e?ua2+GcAEI3xdlYx+qfjIvas$YPByz-$qH<%h{r zugfoS-PigIHh=g6>tNAR(tUlo@y>a2=ARLFn=&b72U?EkdY%ssraP0!<@`nlQDhU# zmF|>YBX2U^HP69lv4zEijP3u*WgUNmn}a6qnjiQY6%06No%*);Q^!1y{yec-A|pkA zU8$(M10TPf??c?cXQJG|N<%oqCyBdJ)O!3=H28C7a+MR1H~(FgKUvlZ-cpcgy&SmX zg3F{HaSIV7r=Mn+T%@dJ=ROPKTPOa^POL=X@kJ~P5!oJ(iLxFxSABWkYCS~CF&{T; zd(B{Pgga4yO|#BNc_8><&-e{HLMTYwlbX8R|J<2*Iua}YnIh0};(fBSruJ!bwMs0< zpCLZU$Hj*A_YM8Lnh;xqW6OjwpJ|PJ-c@yZ<*Dlyd!s4BS)(g3HVZR~b#lakT50Rn zaV<2^euq*zw6u{&|3?!7%lP0Ps3)DAf=u}OpuXL&fF)!|g#+p? zuQ%-t-Rvkwhv4-r2ln7bio)sSo5Eqse4jr%m=Bc+LD)gVdbgM*$}Du$^~xomnoaFs zW@3rNu&!e9JAy;kM~Hp3ZlOb-vko05uVoJrK|xQvB=ut+p6xSCeYy(CV~IFazjOh4xiqxEpaS3IlDdhP9Kw5+q-Y^h z+E)Vle&G%=)=8^=u4$MKn=WhTcp5t+N-nma_(XwQ9W^J^pO;qpeNeXs45XmJ3ljAS z`Nm^E%s;!bza&N2wiOOWF_k9`tP0*Q%l+?rJAU=VOLSXf7V^LeLP4w*P<74qM52+r zdCn1xBqD_4cLQCa+fcfQ*vHvX$w{3Z;sKft&UD4@iJR7qobTsh-KH#=~dTgg8w2%FSxS&}EOF z_7Rc#8U(hYHg8KUYqnzb7=Hxzj%#{b1b#^PdZpwDHxXp4yQA>gl^%SD={7m0WK?Z3 z**U?%jf#>RX_m2g78`>u4q_{hRSoQfdUo20bc~cpEjCgB0O@&=M>vCcv}W)&;#RO< zE0_lpvUUfFC6uPzi?YD|m7|2O)*-9;%EHRX>^K6$dSpK8IzY`M2QpvQ+%R|P6o0M7 zKnQWI54<-beL!`ac9~}q1)V6@CZ)>L(~FSn^Eq4av_Y$K zPrTB}vNBzT=~el8E}sM@P?ChgLJpNI>Q*w)X#dDJi~xGQS; zcGA@0mbr`fNOgx!{hRmZ25&SL#@@ek-gA|3y3~x%P(R6VZYo088lwyXhXG3uFNczV zBJdDUQ@-=VdeMx}$gi!9+)!@3w{v~~V}rvk>f9bL;cWj@d)BNbbw|O ziwEYqol0SQ72&m8WEp_e(C+XT;Biw!O^m zimT82h=ka>C%(7$+c#vDzxtK+zU!BenQ^Iok;TZTS0r5VCX6DN&_j(dmq=?wJkL07 zc}d)peh)9SmP=y}?T@_*`YSZy!tlT}V0Y?Hu8KC)wi`(<#~(+%nSX9WD=e6naXYi@ z(Ku^dpu2u+Ya(mvb#Co03H7VB)^64>H)y^WPC&$3c(M)@UJxo4yTvKDU?LV8G1mm} zRgnb14*hfhC~&U zgC5Wt5JK4p_kEN5mZElDf!egs>qG0So|n!wiTGM&FFCLaPfhitSlVg3=-E0?2A^1zThz|puD3LoRm&CL~!8*nN201zZW1gGIs4$AbS zCvN~3>u4U-cLCuj?;5rJv3e#&2NTnIJhh z2DX<2LAFW61QcG~gzHPMu);bqT5_~Y7{7<7a%$Sckk!3Pt1n?<_LMIEO=sXVY8Rd z^Q+*>Seyd^8qgkIZcqB?63o)vxBy6raC(v9dd(0-lVNJx(Tg4+@c<4h2KXZ&LbCDl z@-pN#fc@8C;;1}xIo}ZA&`nfYG!-7XvM&Dm^~=<{2uvEBfsJ*mx`C7&Fagc2CcXlL zyHA9M>k32)pQ2F@i4|z2)^gu>Ds)Rc1%n6#P{H}nEV7EKAo&E}^-$73fve*}@n7WO zt>kHWBKcsje5C;X@M4?761RILSR|Cpvr$nHU4@?pK{PB_>zN}rwFKi_fyKg}-4`Ny z&JP;~B$;eH?;(ji_+}Wu#+TMywP&!IvYdD^)(Pisno-zXa#&!VZcbTt8YU|L7Nv}V zbjxq#>6boDzHbXvZF-&LWSrfWj7pp{pSZCmMBb+InTu4swJt86k#tKTG z75&va@@W`@JpoUexW!Rp4(L?Q_0apCF6eyMa>a@z6eZdGi*u2A(7epFhl-^3`->- zRRiCh@%>f!owfea+`V)g+a3c>LGp@M{D`g4(kzoayx@}Wkkpu!bPUsyFT=Z!=0Aq# z2i5u|Kjq%dSe|5d{Q@;C2FK7Ux=nz+>IbV7F^Bax@IHv{yDWeUPB|(MDIEVv;Y(tu z6%ply?l_R~`Cb0f5_lxd#ez^#RTRBjb05R^kpLC+M7w7BA+GM#a)4aG{sx-y^2%So zK(N~E{QUf6R}kWue1iVHdo`!wU9i^B=^Qlp0jw<8BqF<&8nviLTZ6tp%pML~C_M*D zCiPSvqCdVV#6aahMVX3Rdx=VpxI)GnT4bm7+sec$L~7qzZ6<>vE7& z8KUHD=ia_bJ$<=_c6VQxBS4S`eUf)VkCb3m%bQ1Qo-J5Ep&~V9G~D$CAOO59swO}t zmS`dLj+OmE!d7LMSfnhy47OGEtSQ2ol8kidD>tF{+qjMAkkt{IyOx7I1`YUpl`)U{ zxQ7?fDew4mREhEv{^-4VMB70O-)%Quu{&2V%(;r8&c}|=!Ss-enx6yboxF8q{_9IQ zI3<8L(uJu&u%fO4M2*Dh@9}F!GA|RFVxc^Sn$ezEY09PpF1k-%dwg|n5}8^Ku+`yT zR!17V!2fq9;M*>Nxo@zAT$+m+X{ff>5xAra`8cB7guZ-;u|^8B)X!0wS#VwVtm^&5 z925E|>@D|M>z{YS8c8OzNw7Z?;2-M7l$1H2jndV_HdJHs>Hwku2k!NmIt4ZMG%}n> z{~5qMr7#!_x@;zF%sdna&cM=zRii>X1lg}f7gDp=5le=40Xope$9S?$eL8&yuNYd} zNr*!%f{=^XfgHYlOHY4kGP|x_mv@OlDv$zvh*53{Xc^su&tt4e82mCAl_+O{6XKs3 zUV0p|6rc-yp&)%$W|ofT%lQumD>bTv9j=y+Rv1(~+z^24uKK2}?hLR0!5p#m+14E@ zT@JqHIgCKhRXE|QMGQ1g6;H6R7`HgY9afK*+pE+ETqXXhcRuz73&Xbjk3WXAgw>J{ zjfVu(f15)gFKwAxTx`m?KNTcldRQ3Na*cf(@6^7OXS*GZ6_ zbnqDuTO1sHYCN@NN-iMwAfQm(k!R>rjWOfqPt9ClgK4CKOgVdmP?{vWMbAr~84L^* zR$D?it*}d;0rG;neHfcJVfWT4;@Cy`fa~k~xD~OnzJl#PsT2pxSgbyp^iF)(BUJU$ctXxu$p6`KvCmiuFH4@8uvuYN0Va{-()V%M4A*t&U3TS<~&%z+I;} zS$OQJIe7J*4F(qf@0Kz^8qduM+1pmN5t2-;dqNc|nN94B5FLm_fNg+gq*Geo&n>|E zS_HrsJ*AA~_2t~fC zcTZGJU%A&HU7xD395QM_dT1og0LDN3+Mb0Tn3ueM$a_?YMcmM~GA@ zJrMy=62l=mC)lPG#zPeIa7#c%77wa!jHzLYy5MG$8UI;+zwC_{0AV$wAiaQ4w0ii4 zfiNXQz7PGtMf5!)N@1w%Hu>8R8{}F?uhpku-9U=h6a`y`FYDG>wplOU6Pxv*=LjB> z7Tf8PkxCkoR5o;Y^K3^4{5f$xEox>Edrn|)yAe`DY(A&}jv5f|u5$)kFi?=9AlP)` ztoJn6j9_2Q`Z2L3h@NW3Q(5$x65fIn%D!~j9E9NF;3DD$^hh@H+!+x`+@(f2PAm#^yPq%Y1iv?kTYG{17G#R#WwS}ED zR@QF;%Lq_{VsH!UpSgIC24MGWkKy zp@u@kQyTcF7yuMkqwv3X-$#MP1D6hd`!qTQHadlu(sZg4-aVCBvl6I11l5H_I8f>B zivF%2Fn}26CM73Uwtx!z%RtBokXp-MGJuwwM~i3HiMNuIUXTmb)eZ5tw?f-t-!{jq3 zh!%j&x&DGoWdzRZK3aM(+EEOkRpc|yRA4Ay?p%Pbw!DwL z>Pfo-Ly{RxfgBfIPuvfdd&HuQJ+)79vl32uAiy}1dclxB+sUUih%=h=PkAz4;wFQj zB-M*u9Yml!%9tXGSYKiJja+7i^T*qaKo%PSqLvcET7^?r=f_g4Go9-tV+OxuS{U@` zaY7y}wq>7kYKZW;3N9ouTkD1hj(0WQ-83c%BRkm8I)>TjUrp@G6gWwoMav|p3_LFu zXKh5xD}LfWIyJR={3+tiwx})Rb&JGyrTTA4RN#%^EL$D|sTC-}*%nr7%e8d_Gx%mp zFoL(7(S`ffI00;T*f_~hwS%suaxlSI?zi<#DUt|^M-aAsaV}en-@$wAFUgiv=M)>E zY#fb^T?Ea8RbV(O7?v38Ef%wY?X)CC{{XhHGWP5&WyDMorb$R=RdL~IdGuuu@3q@e z4@${4f2~+AM8L+`<`@U*ua8txS%T%mlBD#i3Ag{K)BpT@Aqp58vXC>e#-YK64NKR* zs7R3Ti>BrSA-Q2Bz3^l>N_Nttc&ATXyk&ocJL$Ye+7w8h!z08@rNri>z6n%ieLq>e zRZm2D)8U(}ZPc9}5gSjj|4}}5*3ymKeku$q#1rdN_>p_GY(7Cr{IX35la&#ph=f8g zOs1xmia~Pw)u;$QBI8NCQqQ%b^Uq?KaNyifU{9H_f)NAxGw{bFqsw=HE` zm@;FKGgk4=L>>)9+Wvw^#opKd`eyrj{ujZ9O+&Qcm2#w+&Hl#5#{G=0>Kq?f|7!^Z zboV<0&|Rxf)NRZ-$H_a0le^R_gx;M=s=bLJ+Cr4Ol#~}Wp{nqo@x5{S-)2>s6Zj#U zMe#j)E-a_r7n-O%S_uEegdKJf1A$@uTKhAwE5N9b%ZPn{owF_2oSuVee^)x?In?F! z9}#-io!`77l%E?^&S86|>#nj<9Lf3ltCc@!3&M0uIdor8(K~!<3ev9WHn(*IFVJj_f5+>GKFJ3= z+zY!F?@$nf{N#7;>LAq8rLFf&Lpuw+C{<|IjZ%lWZ@UVk7-^${V_i5Y0ROWYA zpLH+k6f65RnZ>zNggk6f*`^@k%~Bp)y+-n4Z2SZYyz`rVM-ycKdo@?S|1zp04lgI5 zv4x;Z4inMm`1mt9sd(D^I&GpCKM+ex9$Yr@jUm)}>J5PMv1#`Tb8J6vDIzc;=9gK+ z^QyU(ey)b@syq8;MY5hd;Sj!~Uts?V4bXElA;b8t#b`&WM|oBsXnn*C=yYbpzDf#D z=)TtjTfHp~+!Yyk3lfsIz!$8yNFhs-I!_CsS;qV0SIjql^=4O;P3jWQkF{qY?r~EL z1{VKb7CtJ!QTGYT1q(E01IvvfZ$2Y7s2)~Xd?JGXO{_To$MXbAfv_zOSTHlnmx&FV z;NA%>Cj~Cp&iesA>iJgN`d$$T;j|&cN)ht%1l|vxa3lctFWC3DQ1J$<=0r9)Ia3mD zeIOODtIz{7YOZCc2K;+0!xw3u#oHjFDXd1h8-;LG#XgoT@xfJ~49~832blv)CNq|J zlG1gIoSYnJ?y$L_Fv1hAb?}4WwP{dT=-dmOHoY;ELjQNkqHiwQRRLiacxpXy`ZnVvsj6ST0jv|L;s8sIXzG}3n-ENi%J#ARni2z`&7 zI8p%LlhJzjV&7$S@D^VdgLOLRP>gEXQYLY4>8c z^922t2a1cl9EFd2Ywz#BiZ!~*x^Njdi#UnjccwtwcAcJx?(+&SXaw1x1JA*_II~j%tko~O7w(i@Ed-G;?M#4b6M$0R%zt-PqLgd2@WT7pld&Z0qW}p?MBQP3o)Y-U|0)-F}G;TEOVNch@nE4&H z47>uZ7QItC=upSCnAyxmB)2S#fWy$Ym(%?OwbW0??D!B(#p9O|#GS_iHpU^c$_l}< zv}b}LEt(*P1cZuZx*xHTtJ#q~ z$RESbOp@Cd38_63YLQ>QB`3^s|#GTl9!-c?DE<#p}*#=aujMzc4t27^s%06g$$Ra{T^4Boa1{R1(YX_IZ zIY2~NjHEI3*XK_VK$-Gf<9^MG{u6em!|IfwS_m5tbnowiLAQ>Wk5kIWeNe?)u!s-8 z$BDMguP0<>&elCPGia0WNRxOp7=#1&4bueo9ipV!8iYa0x;S8F?8n3VtR_`1BvZ@q z@ZnM7w4oP~m12zcjyU>Z6xq`UkH~m*`>neq#hIlf#TIq0(jD5tcZNue$~wFUd$OW9 zI5{~L7ZhRliqExSA~yEZ!;>nz={KcWh{3rk)LfH+pf#5WR)i4H@TB=01pfJ`ZgKQ) zo+>Q^c5K}erZwkg*-geCb3{ud4S&*={{(0u_PlWI37DJxI+k^34OwEtMb?5GKI7T5 zXOe-1F$Zvb6@ZhQon(Xv$PZn>(H{w}VzN?Q1%ND^1A|hne)k%sg@mR&+6pIUMd4be zVt+18)05tHGAKiRri(J<=V_U8_z~fvzs%-HMut{6>J9x{B#dVTkWfF;;Fo{6G2ebC z7o;YzD8S(+(Gd z*8_5{Ek% zVP?zePLccxnYatU+WkfYqu@#n5pq)@UND9Y?7J3-duY_52gfGY1=s{VGh+%iJ+C@E z11Aw&&YKlg3{jVCO@go#f`1%H@et%BB{};c;xhl9eE+<>*#>fT+}^pcJ>Y$E1aaEx z&fS$RaVC@fQnqn`Gs9->HJbue8lk#`b|^66&qgsGvB=Z+8b9-C-Xi}1i>ueSsodFn z!cOy7@=^341Hu6IR;=NWr|y+861-q;yWpA&oEQkUQuj8FgP#J=_s^hNz{eZ2fVWP$ z56<9eDSmckAJH)2&V4_eJ7vkCST;={CDM<7723ko-tUa4#$RQlAvK&PFV&IZ!_#~> zPRaW`V3KVRTeYC51sxy_2|QqjcX${#hjO$VH057_3M$&g`rJ+t)nmqw#v^YP2v+Gj z7xjHa^N~<$3pl#*^X>ecTV@ILyls+epx*TCV1esw|Ar+uYC0lD<<&}7g&|fb>|@5c zNR1m^3hnDbdrfm633=eU*c2#xZD>8A$#-R@-?o*9;>I3@pYDW?Wo~}l3P0wCQ=*6;TZ8I>9+`Q zqA2HKiL%}jI-8w4nVs9508Neda?cKO&#sha?TWocMoBFVUUc1>w|z(5qxY(oIT8td z_~7{k!Y$A78y4lO7zXUWSDvPe!)u*I%qIkyyxEe8JDwgLl!u)oF^ypV`PV*3ZAc3+ zwczX@c%{ELOvwisz-gyw&}JNbuLCY&D{&Ol6YKj#F=3|xsRsqgj7S><*+dOif=Tyd z_v??gdx+^%_C5#PquP1)0T`bV=IgN2wjOsFYvyNw@K#t38R*_Awa|VN$q5Tw36U#! zsC6r!bb2SrP}KI@`#E9fWQ^P;Y=qlwr&dVf#@SOX7CW12Eh>26CqvYvWYOj|X=` zJ9A?iwWBzw#d<0s;U&=(m6AimkmY73*E;grKn;s@F%rM7>VTVn+iRH$#J%&XU~}mo z92|@bBKdhrVmNpmcs1uSusUK{<@NNTazSWbxa`uryzU<-;06o7W4O8q%Hr>6_J9}+tA&S17v2yx1%nT~ zF;xnoI1Q&sw+k(bERnIe{NWEuc4)GzoK{0%hVbWZ95*2hj^mRZ9U^rzQn!C*6BF6z zNxBp9lR>y}Ze1s<;+=ae4rY&&t^nL8td1~(sQ5EAdYzcdX81+r73RY~vK(B1t@u!v zfuZLPj)pEM+p6Wu#mLw}oiQH1l>!>?Yau<1PH|$M{ntm_w=U zjNOfwq$wYe6>nxOoinC`@F=%@s?c{Ynd@4!BP)}9lS7;&aU1CI8O!cxeVQ#1O9y*) z3Zc0HTOThT|E-!KRH_u=8W-vR!WsDx>h~MbX#C-%#gNzR87l)8{@uL;0{g~g8oH;?gS(){N{5&KT2QDOUEu6Nu3#pCjwy4X440A-h$eaNx&GI=bGKRHQE)?X5i;NW6P>B-VDasdz{a zz{tn<%!vaP2fMr4zIJ$?S3J`C%YimCuMDKU+b{?DHC$TDmtrDx{e*Cob1gkOcpk^k z^qb9_{}z~ZcEV~msOOlgo*{|f1t$_>cr+q##dQT0@hse;Y+7)gNB$r$QV*GOHw== zGdM=b8eS=ZxOwYum%#f^?MW7hcG!0m#w^VXc7ZwBKc{zRHk(vE%DcJ%z`->=l%|Tf zzV~nsn;OUZ2!9E}F5Bb=9WEE)c7hqg&bYBo2@G&O?8LEU$t_L-3;>bFOy#NuNdwAARO^iimjCyevq%gZ76Hc{=-s|3Sr0^#AOi?t51 zF3g!C${c#8RZ}$Ys>BQ|sC;vGVV+O$!O!&Djpq24lSQ83beFRL8Vr=7Gwn^UP}jGV zeh{h+RbW0h*=&C!sJXYi9n$e##P51*v^NFDZdJ$UOzCK7=SXq&@!vt}Y|!DdJj8L0 zggJy(8I=Fp!>zLN_wK*l4`?NCfXrRZ9^-kl&ZkM`qr69YrVECBDK#M6L1GK_Wi2(2 zD^b)-`{v=qtw9D1Y$;N&O8MW~@zwZp@xfgDU*BN*3p5s$a+ds7D*t-h0 zI?63{U$WZq+3u%{(xt0@$3FRU!%T73?ep5=q%}NZcB=+4n6%_Oyf23(6>W%1v>!hs zGP;v&mDXSy5^;lvoZeL1a7Im8S2yxUo^X%ysC9Ncf746OModcN9a`Vr(@RSy4?M2? z`s#7^PUhb4ZPN=~L3_=>b@SJkZ6BNOaGTLyJ{CMQ0~?~k5Q6)JKhUfs*66JkeF2r}b!aSHXp^yuF$Tn)kx&pnD zvdrX)+&m3e5L9k2X5VWmX_3*e%`pK5S0k|0>`P)<7d-|QueG^#8T|Sh32G94z|vYm z%QSqY3Uu4i0v`8^@vA2*z-P^(L`rDssE~~d$pNQoS64GBrQb0^#R|!Gqm0w$Vk(t) z@;;Q3l}~dO96c986NQ2JL?S&rJH2@4=;Sm{DVj<*?8T36QxMUpyL{{TcKpPYsg!Gj++7cojV#u5Aj7R_>l0xl@`&v3c7|nOvnDUDSkYFq17)AZCUCRf%}k z#MZONQdX>%)#(w@7TARekam(M?}#T@;3Tk$yU~8USeQXMa}Ily+J{!*%04u2k|O3- z??MxYSocgKS8W2TOsocqBC)IhA`35QDTce%!+aA5wriT2V zR1^4F-2xi{O!Zn~4>yx^X{9z3Q%~cD3;2`#bTH-$V5OUZ`92&p2ButCqIEtl4&DkVZsHHw-oT4H+I?hYd%Lu^s88M3)|!xkP=v zu$)T3R&n==?;8oj>uJ%PBbQ-Qi`3m^nkGF2?y;z#W|1HL19#AV9X8J8H z+5$l^(W>}N?q%}ip95G!AkAySE^$4{V2zK-_Yg!<2fzVZ?)|BS19e9JLrm4c z7oyzf%rDqvG_e<}-EpITpRX%MNQJ%6a(sK-GC)aFtDDVmoPke`e(dg>OIQApnJAsl z90KZE%HpaE+uXX)#AgRD9a*PpI0uapR=Whj?MeF+VJtH&Z zGLlo`TQbWcv9JTq_-NPb#rMTsX@41QQaVS~(lQL?|J}Tzz1>P|5;$IY9t1Y?g@7^i z9k*6hRn7CfgKJvngpvO`W#!eM<3Dl(Y2m@BiaSR%su)_z*45%Kk~DSfB)Rpsu-r%$ zeoh^PqPue3XK!dcbMc9sR)sc#LFdDFt5AVpWl924p=L9+6o1rr6!=AHCKoBM^Ou6n z!sE&t8a0r4w;X_7q^tO?SgHFBGF~;?^NeaK@;;#XS!ZXukVm&+r_7pz7---qyi0Ug z8Tf?}PB1Gg)zPXmjoBy$PqL5b5$kTBIc=L~U<2S4NW(ELvcGr zt{NtUB}q*LeWdQ0)W1!O_rhnxWtk^gOzZ!|$CgjzhWrs-Hqc{#P;s<_+~^#CMiTCq zl=>x@vFCLw5UFrZ&k&>tITazM{iJa%v>GXObzPy0NsX317346>=@UStm}DQ@&^Ek4 zZV6CDcYK2v=JZWplZsQ=K5XJn0BkZg9=tfM50$Ci&^8>_kxmY71s0P41G}#fyjX7L z!@?5S{8;A_6G#*fV3AzlcN6n~x78t~+q&kcMrtk%u6V=4z2?2I{yMMm*gx2Q6#s{Z z1}|Of%`Ry~$_x94Hx5Q7F4VRv{Wc@QlD>;-u6P8NtK+<1IfpTM?AK>Xq_2}krD90o zRxL2kYbW>U2bt2_UU=)f*Zg<F-H&Y z>4EU9p*97B+Ak==$e%z-Kr)x45&n*uA+@0vk%A&ae|acbGs|^lEroLDS7eOW`O84n z)n;t(HR3NF-oXbeh1lt!96eZvb(Vqa>3$D7hkf9l!vOpL|Xk5*M`z^P=?}_%lR(xs)9eKZCn7SKr%k z1p22YJAW&t$?~^WksJE)a1@ps1iNR}UZ$#7T&gsNY81hf!)icwem>WIS6K`5Qe;|j zwWQ*Ffv;@}pecaPFMfmq{*^h`@(2Bzf_^s3^+igm}*Vi5=K*lYPIas&OE14f@CWPOE5+20m}eYNV-R zBI~@!tDyEnny?c^)3jm@HW^%M2-s2LE*y_l*RD{B4b&zLg@*{v9vErtQ2wd0Hd{b% z<4FiK5M{wl=+0P0^VsAubVZ>3D|}OY3C60)5)q>JJL3L!b(57)EWHG2A)o+ydX$!t z=@MnpJDX{eV#>HnCj%1X45{z7*kp5yfN6pIUbdaiz6_X-HJ@5(PYQb(@tn%8WQ+1; z!ehf1wu0LhU99b`o`k07w6p92SN?BuKA8S?_p&ro;Rc2xRlS38-F;EeJ zy@6hx3QH!VG=#P)+Q<+iwc!%xV>naSGhHs1$ych zcjVrlRfptH+WxGT5HpAys5FAAwB;_z_rqLhUS1o*_I|L`R)RhZVFj0X(aJR!HM6;; z3#g|FF^et{sTa{-WbA|;`|W;)F4h1X1J0=*ix<*}5{<&Ww+}|mlGk3?T0QWA_X@aQ z$8zsYt-PW{MmDuF`VmD^fj1)Uj~HODur@mml)BJOA#CDi_e3vJ5OU7a)fyI7a&|WR zrvIgjxhI!}%_1r1G_ah_ujMLlyntfI>i}_H8e1|Ow3Q1v1IMKZ|F#Sox05f`SgG8< zF#;~8-{9IC-k{aCJCQ^4MYMuZ1XF4j%dLHK>jtxktPR_r&m^X7CrqK2*p9IBVYj^4 zdS{A9mC;D{S|$q(MBmKrBilAYjNRQ(LD8ska%XuTR<3-rOI^(cqJ*iL;^(NM;nD?7 z)(Xit`X!h1Pv_XoT+r^aeE9r3it*#eqJ*5$ogb9aB@D=o_!vWy_1+aebDm==Mej4X zZ=mDe)=T5v?pNB28;St!fT>KJ(l}Gk?Q=Gau-zlfv}{NyqkDmS@~L=5dI{@Jg(hjU%6iC9y*HoCK~nUs^kQ#i&I=@11@=r z7=s^;VCFGz*VB~LpYSf8W1};x#1^je>a^hE)z$vAYN&CG?YvemuwFMb*vl6PS0^!m z>2f+yYquAdOI}q>re(AkjqORckSh{o8K`vg{0>$ z)d_URS11K6bg)8IBMdhAMAe4+O+)1RF(oeX*! zHuZrH@29+&pzHUpIaF3tC-1T=4Oy31JxON!tL~l4Mr1m0rEurkBxMB3c8PshXSmuz zY{8`DW^PdiqOgUiAJ5REOL9RRXk?Hyda*vKMS&c`-PfO*-pmTrB60_zQb)b17Mt7{ zFVE|45aW?7AdR?YCnDktZmwLs#gF{@dheQap%6%wBtWCG%qT{N-eR)50+kEXeRjZ1 z4>5gK!;<>O_~T1t6}#9NI);PB5Nw(t@=HAN2f-37;-9)qM9N3>^l2txa;uE$8KQ){ zXsTtLXh|{%7GVH$&fk8Qnnwy~s>oPlLy~-*2gJc{5)6dd*`}NDlY^wM|$VwCj4T85Qd?bBA?< zl|ajSYPAZPOs8(7ID#=H;7^G0M6>xT(IS(+P_5Csxu8;%KU_B0P~kEry~e#W1aeOE z3PpA0nQlUt5+Ndz26SIMsaA4^up`hX`2fp_vY}Sk^%lfU(m$e-ZM)(>w&`6C)O2V{ zRxW54ZQ1`GN0Y7(CjHLrgL-E07>J$}pWG$rqpLEci0FO8XMZ!|<^yyNU3KGXV_S5< z=r*`o78IL_cHA+cYcp+Rt9Oza0j=&1pv{pT`TQny>W#sh3{?@EE50+>fz5zkx!NjT z{3?uf&yF-0uG0mpNlpXq@07qp^sKrAg?&FMJAL7iP6x|%Nbu1}D`9UA=+0IE%P?|R z6+m8}dcNmI&d!_aT24HsRux!q+h}K*yI12afRkl@iNx~+n3w+d?_aOERvnaZhvG0O z<-%(0oR>+nqYpK2n7yv?-ioe~2+(}6>SZw6ELY(U%d7)!BTW!7@s`ot-feTB{|?fj zm%<(x@@i9uXw(FVFA7}S**z6+2OAt_b6x^xy z?3AD9FudUB#lGHs=fx1^y(GV8lOOB&NP=0VeqT^|>;ztHf3E6}iV;frvHL|gT+w)7 z-qV^eP#q^8eUMh|AKkJhdFw%$)!@DJo|HC*Om}UUS33-sIqfMR3AQd>gcW%k3#9Th zU87(a?mE0HW73=HmQ@MZ9{m2_06=oE2@|_Gb*hlKIT`s%e`m^L(dbp-`S+PKJUXi;~lvF`a?jyoi(1RmvXy)jgKE@sq zVV=$yg313c{~NzSRtz%n9?26J2sk909GCdI*wI;K&!8qzG5FX1N43s)WJOp$8P}OR zc&VbUy)cl(OAfmKo?h~wPDMU22u(21GNcp$pu1|1MAwph`)@tG+P9aw7SM~t_gsJX zQ-z`4Iou+f?OO1@T)4on>}amjR@$H6L+5vG6WOAcs0GXv{_2 z>$;(Z4?I7Ax!;%x~ zw=Uz~c1N7&gZNz#{;Iv(Z%s%|5ixOt&ly&aHc^#HfAh5q)z}-<^|`cyHzdVTTDFSp zVTYkJv73{Yc51KgFz@^#J(&-bBb*qxTIlO_r`tm9=(%vOVouro_bvG zl$j-0Zq%|fKues8at~*2{MoA1{vf@kClkW*lqCHZ1;?P5?RLfVjX>#mO& z2fsDy^Q>n0z%s%Y@UMZ<*I-ba|Ld=zgxJs>wSCu-9N1%62#$Eg>x7+pkm^$+c$vVo z6jk-O1CYlBAHx~llQSKsS~mLT>msAtZqG~s?aEtS=Y4XV_)Eta&B1+LgXTC!T?=sH z!d4c}GX?-U`*_x)LNYrGq@K~x|At<&8EkURE~tBgd*~{ zk`TBIF7P_sO9a`Px`ecq9jXnsKKIgxdz%_Czk1#%4ZKv+?Ao%;%y#B zsu$0AWD=_kK*%qEp#OX=r_f@D&s%m3IJkU(`HfcD#V&su$Zjn=s-xkZW1E>V3X3Rq)oB>xTSJrDK_0*&IaS|oJ_TK-3j=|m6 z;&(k6enwkRJ>)aj=Vk^?-FAF_lK;%ctmQhZyQCYe0GLB*r_B zBDzEcz{U=D?6WvH!}(9S7XTXVJ!9U6W9Hj{2T zcSwwhiCJI0kQw{JYA^#llEOnIu#eh+ALxoK=Wcm46^Cqup>#Pg$-cE71uI%TedR_T zPF{@=mYIXSP4J`DeH`;gAhHNKbS}2#ko8=` znav`+Y=nBj<5tu~a;seGnw*pgub|YBQ8uMw*C&J}sQMqjv#C%(i}VjRkCx+=N3aubXc|?1d&3nF0J4mavA@RT|&-Z;7d5->wOw<8JVD4$( z)%YAg_DkHTwu@bD4Hw@aE7-kSe(c@xcNmdbpw|gc_{F}&OvmjQmx8Gfow1Br6RKWu zwOYu2?o)0HiP6u)DV?s=I9x(7kScoF-+t)S*&Uy*!kt?vntb&RSR(N1fBJpkBhc4U*hS^RHp#2*2;%nuY8tmoo{ed4^9-@%-9tu}4o zrme(8qET?ul#HQPP4QWOzDI0J zhnl-m3-$>ah2s4=wV;FL54w#AuWKKWCp)>+0K$WnI9}J7#d0fGB~Y7sWFgX*r4lcU zKOA}nuVpQ5ZSCb&^7?1v**B)z%!HG8Oz8b@3jQzhZsaa{N3i5u%XzunM}Bnf{140bY(aD9?DbfYfAFpAe;ojXS0;jKqOOEvaMBgs$8KTCo_u>8nfZKHZ zb~S?mj6LqYL8vgJvlVmQ+xH_ z#|RM)$*k-$50R{_BdhE^P6*j6E2G3QBAt>=R7f4`d)+-g-_QT>eLTMB(NA&Q*SXGh z-`DGUu2(^%!06l!*2m;t&2TiBqL;Z_DQ55TCcFk87>{MeK0h@n#LXh4z!*vW-C@~| zbOfW@8gF&Qs%;I#_$>dm5GkXS6x-NCIT6RG`Y?WdAP+Xz<%h;8%Z)~Efnd4`g0BBfsKBZJzuO0VSB zLQl%zm52;(W^%?Dg_8|Rn_{d`IDaYw>RRot)mWyZtS#cKm?!lqMMk<+$A?Uo7wGIv zWV#8*pvSM2YfxTAovYkBx5qvxl2T)@=Il|$#o$Di{c8hE;8$(G;tpSEWISrSgr#|f z3?HbEq^&c?ir+y|BKo+zuGY?Li#UmBRkeso>$Xh2wY&-Q?L@hJNsPT~apn%Iq|^BB z-b7{5g(t$suspXH(#3m4AC!7%oa&x>ng9vCSP-sO;45RX9BEh3GuY}?=ATv~o z$$X33Y!SEkOzJ=vRSu=?Y@?G)p)P8o#?Y~8>|yJIBe+J3X~|eX=VwwILH&Gq*UlWfT;e!wV`hw z%-`)o*WXj{2SmbA1sRoizbsh~g*tvP^r`FGRk+%!72i66`p}&Ul9I6e-6v*r@=as& z3O7m@CS;L~g+K|5`=Kl_^;(UG58ZR)SJ{s&NEi+@dy+; zw)>AwR@q;3^JkGz15fCqa6t#I!$ZA>qD37ta%hp3|a)w3$8E8@^2$X)}JKu4l zkvAn$;)C+0#7lcIYGuwr>35w~h8}-jkT>hnxVmYDIOH?uaTAl4VHf*pG!`1|AT!xY z)C|YB$?EO*)0n}6RZ8k_zN+X&pF*EMdJhk|>#2STMLseB((@juYgNawkL%+pX+Nso zmPLmRwA*&cM7<Z={>L(C-YX>Gl zbv_xH(_uBYV1n-TAf4Ab9NhD&Ija`>lgrsl&+4|Azh=QXTI`-a?z5NfVJ1&kwzCaO z8LTNM@479Q0C+N-y`P$93S%GK&aKbn)P z+aJrQjYB!~jC`0B%~XHIG`NNBso}6Vnxyqle^&7*@iMO z_i_g$Mc{oJz0AjKXlFm&+8!RQw+TdFZy7%?{h^8iO2qwiv4_xb_E}%uXELXCrqC5f zthqC_-Jmp->$6;2ldY(TK*ESQY*ej(>tm7`Gx~N_UBWf9 z5sRk^>!l1LfFRKS`$b$sFS_o(DX=%3U8VGfR?!Fu=g=UWAALx6Z2_B4BA=4Kr0ds< z-7VROpF0WMak$sTzt-$+KSB9<;%{O4x;WF2MHH>&;F+!L7m;!WL)aVR8NxYH51MuM z_ABl<^+^p;0SoS)1oOge`BeS3QK;Xk#!ouv(3)Mp$IU3?!Bq)PL(6wcLZW;*FxTL^k@T9m@tvR#-bcyOqbA}`opaODpxR(v^z;Mw4|r+T$mRtxB6=X9Jp z`{2=PN;6e)TK|)SaKkqc0JkPcE4?H_cfitXe~C+NsB?rdpZuy;7R#BxiuFtBnGp>_ zU>=wk34XCoxRj9RDM0Irv(zR?%Au21yA=o&wk?lyv{kd;i5(q}iJyG$s=#+M3u?TxtHhDV^I9th+4Z_g4_uY@=@Vy3c zqQ^dKm*p~JYLQU{tBWXwkKGFbLZFWN>Mda~d{L6xU`-yrnuQ6n%`0IA4TMX|acoeF zu^b>Qw*iOhDO*dThme(rBml`iSC%!%=?H5kNW(-DbS%ydr~Ket@XOayPOgaH*Ix>& z#bj9hh;v*s1lmX+mFY*+X<4xdPd$OCpxuf@?`w0d!1ygE7N}rRW49^c*cj}l`xTLS z!{yqlQ$n!`;_Dp||It8HVej4e$JaHA>_+G?TYetTbX|E~BQ$6q3i_i&@5*NzLHhvWZv!z(Whd91YtHRH7l=)}kjsO)f?c_%DY{|V zV?x_0m5zeL)~i4oE}2$6M&G2`a%NUeU+mOrbLOn7p>aPBZ^12a+5(6dDqH*(A07Gb z-W3+fO8PoIvZaW5z&U@uwX>M+x?S}C-&b9_+z;0RyP5M&#c>cEDcrjCk zdaY9rv$1+S&Bu#PzNQ&9-~1b~72d*_w-V%;e7cKJs3Pi{tKx`IKlp+@OkkSvAqQvU z8IajQxmk-Uyn>DW<$wCGtL1mvQda6H0#S4s~Prt2kKC@*8bL7r}w-Qky7S&M>xe)~{xt z(w6GLHr+2T?7Gx`{OHS=vF7M4g=%|!4}!n{p}U~d=^MoZ@DN*d5_**b!vj#wWaovt+SZ&vONyGX#hLb5`4E@OjYkQtw>(4*CYG5(icoinjVrPs z38~iMy=zc($=;XCIf#ip?3PjC%)xISR|!~S`xN`!=cJpB*S1V|0IaFG%eTmrFXSP8xBmuc- z@R=9Ex;!MEfGAF>7Y_rfDf3Ee?c?|>*TTL*(Z6Su{5LIiDVW`4L*i>AA6Pvc7Gldc z>y|}rTotYaFO_mLMOQ6CWvTv6bA?Qwd#vx0>~9!-#(e0?YNGvFF_yUDstA-S|5BRk z!z(Fy^d@~=ouc?+%j87!^kQ9|jny-SjeiQ0WG2V~_bM6V#K(-8XseF=H?5g~jQ${- zbhxZAv)|^<4%1W2J5F)5pqQ&1tT&l1I3sgmK-=ZdQ{mpqPj)xgxy&R*JT-DAN_#TU z#lN_XI22Hd@R`@#nQZS=x{@pTR} z$%N;~lK9_1j|ib8Yp38<`Iat@R|H(XKg_>H8wkb}9c3g@83VEpltak7t`iP!(-NS^ z$+c2WYihFoJH5Z8c{P9tFMBtCg6i<>if|M~aaLXM0CMywstYNdK)L?Bf3VbIpb)Q6 z4IpL`R!Ayi2-aEyD7J+H>ZZn6b6{3xn6rekoS;aFd#%q}uB-PvwLU(>@|lHn!XgKQ zox6(CQa4+V;buvZ9`*;?_+OCjbAyyy-5_t~tXMDoJkF16JqijBg5WR_>Q8S9z`pwu zm{(r}hRK&bBLdydDxJDQ;+jZJ5~B+}y&1ora7pHj|LhMF8IQ>}>{su5jaL~=O8CV} zo9Ziw>U_U~^M9A0e0jvALTi4-Bf%E}8`+T<>1Tr)8sxKZgp!`uS=|TvWnQqBr1+0& z)c~K{20Zq4&SS6(KY+sAMTA+`dsi1|a3d#DgamLFdldNXIRtJ1Bg}y6y8GLP$OeRK zc;QxMt2M&8~ z(FA0S{7ck6w~gm^G?pD*BvXrfi>0}V+8Bv~mI5%iA=l~UmDfi~W{pbE;BsIkZi7q` zCXBJzQck{MywqKo?p1FF#%LP~2pxnl->Q=>U~N^D@#&eX-jUTaBZJb~DATA4 zluHz?M6T~^u80q!!b7Dzxv>V!+4s#ugC}Ukhn~7_iG|&>)?fFT%@HW_&LO|Xlky8X z9p|z>tYD#pFyLafZP#(BDY{79ccQYsh`%=@yiZy=i*37iW3YUS7<@ms?Pro=f8(jx zhCkR>;Pk%iW7pUtAw@UPNUKSAZf$!^o7Udv8-`s<=dA%}u+cI;fXC<4*iRv|K2fa? zGarA>srvhW>Il;N+~9iD(njT?LTu2hKGvbg;+<$)eg6mIasMT}muy>K?>sTqHjk+O zFL(Q0>3HG2W+(d8;)_$yKib3jVcD?0e)HV)I-JIOel|I_RV`C9mGaAfzPr*PhRJw8 zwpaWy8;_YK&e#ql2p^Vz>km}%(2Tcw%uSXeGMv5{CXI~z$Of}J&syJTD}f~d_&|O7 zzR8&5bEjIr#URhz@h;SEbXU&#Y5-xw&NkgGC^6{Wbr`skw(c0|F-Ry;{mU2<^|XaX zBeH(2BehINXC9A5T#s>gth6*{o99y7;d#|tNp4qnbU@-Z5Jdm?WBV+ET6=!ZKaGVc#)$Wb)3);tc|%&7^%DL&h7pX(3kUeY=@cbJ%PZsUci101Kz zQd-Itx@Cg95F8tGHt1!^Q=dTQ@pp`eUK#z-9F1!)Fw^uUw130`q_VRrukr+0q#MxR zOdoqSJMyXHeQD?ZOwagUPOxFP3Q}$Gtj;{EK@U!1#P=*I@<3@WH;m)|RIPa6;%ck4&zYom>qK{z$;@vp=ql$np?zOW#oEW!WR%3A#08N!X8{k8WWU z>-XJ;?~UlX zZ+7GdoCykPp%Hz%cji}B2U3lt+@K2fXTDX%h#X2WT6lqxUx#d$)pL&5=!OTDAU)Up zUy0JEl~7_pOXYbA3~opT`Lj;uOD)hJeUy-O5I!H(bv|M3f^5_ecTIXZs?$B4gk1;( z*^q+}{uS|T64Y|RWcvilPlW z??Gks)mr}Zj||n&GHMZqws9@k7RVF5%^DczVE*$Fb+P*iTUELygjao3$8;K*hdk{urcxEilYl4`Mr#HX(c!8_$sk@)Z)g$zn#RU zVH8r&LvUqCZ4~nAk=gZf2gbc6f8odXEy7z~c;1VC9rPH_=EtBOd!3_uq(lP6BMe`sq@($!W)v#Kxy0T`?2^nT7N=Lqmy}QLG z__TmBv%UOi!jVe+rDBGvHvmrGI5ij40l81C+?;g2HLb@GtZ%)iO-r>~AAXCpfkwVo zA$f;v_-tX1rE4E!QhQi%-dOw;|0r&peU?a{TkI09(Vb+rF8=h}0GKqZ*;L z{evS=Z@tiW-yX|_RKHMs#G(4UUHK_BzKS)w6_C&KdY1~mjMNo;aNp=W462UE%Py?W zEhVJ`bZS{8qfX)=Qi*>v^QVqP^4Q~SAsK?U>W3z%1cKPC61v-i>kIDY!z*?T6zLRk zN=mKgRn$30poHH&D7__b%daHQQ7q#Jus|$bgxmy{#~y$R6Zg^wUlUDp8u=(R42u68 zooX2SioSOmeHFIelyMB~S^p3l)X76@0#3OarZ!V=t^6cvJlC3b#z|bkU9W3Wj5{qx ziCS`kA7NH}8hL*cd{|(1;fn~IjLthSfFL9wGBDD>>waAMd?RU?KJuT7XTiY(f;S<# zW%&lfY}5Z$I`5GoT_FJ}Bd{=#8_#o86!Zn$m@S!eZ1?G`PKO=qzXFhi$aa1km==5*qYrTrT zI|WuIU*JMP-A(i%KAwg*X>yQe63!MO-mW)Ll++vBJEf2V!R^P@IajHyCL@`lz*8H; ztr_R0p}{KD|>9CYS=hz&ppjUQQdH2>CU@|@CWQ%uV= z3`-F*%tl>b6`}BDNfdaJFIRZ?nQ=&jY{3+0&v++)S3=;{iTppQnZZOQ^F^v0Vi2yw zfn8bVU!-z=LJ%-0L={j&R97J&>(zbOFua0s_Q=#o7W&GYr_F+?Z(HE1cv+@Dg-JF- zDQ9oxD(QUSV9b+iP*k3&+G@rC!+~;0;uI@Pqxlsrlk%&~)OhMKZdG>VVo$h)oQ7d}KmlO!B+igwS ziW9EcU`>qrB=)TFqM}HRxVkR$m=9)awDjW#fag62-2U^>mgrA%#d=q~I)O5Zwr{i|UAEM=tEi8C)f;i|5nRZ4-l&^s?Su;jEtZ$`>&k!Q z-sM=p@^%H;l~)sGYR8VgSZg$t|Hs#&`1!jK9&*$3Hb0_r_BuBF_rvKPJuv^cLz{6kI{1-^ z2*>&b=GLJX%n!6)F*}IX{;MjdHkw2~R>+`g>d(1Km4sG7Y>%Zt>Kq`)9v{<4{1E6J z9`s9pHUNo6knlJRk7)BEOKV9HHryG=2o@HQW8d6`8pU=&RnP!u(EwN;kmUN>;DY<5 z7z%bpWUQ`;S7u<9z$(0L^IK|OqH3#i<_J0uLJyP*)g3R_@2+rI9NR_U4bxzEMGBMa{9jD9|9>%665K2dGPgK#6nZ1h7L*@V-s7?2SOY_Y zo?{H`{Q%%y!snp2++%coD+ZEra8a6~KMN^X;$A$`rf!AI}gL4}!qM z3)wO%hM}uo>I_^B?2fI$e}CO>7Cj3EVM8A2QomdlIqh^7Iw-vq64Mn9vC93x+`wr} zjPLu>h zxf%Ta2k;vz-Ckg0Y6Sr{M;Mr9CVh#ZX@~kljUrPjN2pPGgF1`F?Xf*;f^b}F5hx#^ z&dGZdH9S9=CL5Eco|>pe^F(9MyA%<=niOBJl#?UU)2GYNyLG+HvF5g+6?;}bz&6Ot zE2b#t-UFgf8_>LD|%7a=QZgKZ z1u({rWCDZNwleo^MuhKPk%VpJ_-uYjj&RzFQGkb{d%CI=33Nm}`*7;6y%jc1rdtWnwx09d?(F51Re=^b? zV{&F0-yUYanTO$!FOf_JMkFY&U%&^-wE*g@`2Ydl;ts^tW>Z)?+pZs{qq4pG)y3Jd z;HGzRZI9P()@div{oJ{SG`*6VF>UM-M4wia<^k^8q4RS=H%P^bCu2FZ-{;98W#2v$ z^56OK=%p$&`kq4048$lm9Ue)F!PeUyDL>W!bs{fqQ9`Uc7TEy;-w%%g2^=l&xL5dl zzGl+zOr88V1_qr>4b~MlWiFQ7yBPELLvD8fpYa8FVb_3S#`5J1HrUZo##F@`H6c+Q z+1GkeeyfFS!V%`a_>uXiqGC*fj6YeWJB`gneho zno7wZ8N>&3IW`EQ_^s4}o8ETxm`^NW8eK9we8Z%AXn#{{UB`h%3YENd)QYBo@t( zfc%X+W*Hp~CRP_bkg#1Pk-UJi4);yIwGDN<8|y0gy?u|~X`!Nv&r}b;GKJlL==J>E z#&uwWg@lnLQ(51m`7C+c)c5+7o?In?lO3UBMHQ>%t3%b>B4>f^Cb^B$KHDz6HZQ37 zk6A6rr?$TriDgWP>Y>I=8AXvp{wY1~tlIQwL3)68-(5 zpN-Kd+fGxc!JM^1bG2Bc#7(?kmbNx*$7^FJxsgT992WUwgJux+=WgTrDGwmy%)hXf z?Zcs}fox>cr?2=C6`8R{6)_b%++YiLeBzCC;LWX|j;{oS(%#i-Koi{@V~upLijIS$ zZq3Q3lY{b*_co9En9n9@tIvmxdq2b;M7~wzTtLQz$5D1^_4o1F4|@{rY-UZ8XRbfn z8?|Cd39+BUp}!fcTuC<&locCVWa{si9p%$LT`x}YP4cjowJ~wHU-X@(U3Pv@M55p6 zxfN`OQmVJC9voMIPps>wIS=FRs#mLJn(8Axr)f--jB^&O5bl?KopisXx;{&j*XMGcdBAU>I zcu6Z*9_a(gGi%D!0`~igROt;?VxlD7)fOq-1ON zDxpPuDXTt3l5xmj;h3!LuhI~M>9GTP_V|*YHkj)M-@5O=2uk`=VOUVH%rfZP^jISEz?Vgec@oiLh&KKU^?Uu+6!yH1u6r19!nr1fIo zk}n<(x5p1*Jv0n|6I&4Zt~iyu@Cl!&tl9jZwlClI*vISFQ@QdK18KX)&&wr_s zQufZ+QST4dmJH8wlbJ$)il)1}Ru+^RbiYAxBw>1TWn{7%Rvof8-%=#k+F_cl9Sv7a zeP~JX;DvF%f%INK2S@7%%1cB1YBzIKoj<&-U{PaVWl6tUNKhW)$#1DcZ;R4dDbru( zsG=-X6t;^hh>ty0(^`BG? z_yV*5gXXC8!Sq+q#1q(OPb(N;N@<@+915evDWut9r0us$+cs%9=7|;t!w^RO`^Hl?m|8Hw^fCuOoAwJ(S&ba{Hr==fZ4Z~r;_ zH2a%NBknbnKT?X;VXH#s2<8Z$zVAH3TPZm!sl)eJjvG$YGvB=6o4M{0X!!7Z(%*E) z+8=kgL?$-<;J7SrwxG*K1)MlW*_9cersw0fp*M2v(pOB_xdtV^X3@P1#Xff6ifS)| zIhD6n>XY$_ECqDRsSk6p(lu$`a?087gQWn{)jRV1pSh*;A{C{`5RW)5iSI&tRek}IEV(D*!BZKo{)K+iRO{I_5NdNAhCdY z@(A?m_W_lg8TQtM4&Vl%&b1mRP&6Ho?Ofvu-fjE29d>d+l9t+?x_Pf%?k;aA z0QXh^D;5JH!=2RsY=DNmZU6*=Fffc`q_2LeMP?D9n|&VSk)?cNSd9i54!`FJoQhBt z1@+GTaZ@h`98!Rxz8Rc``1ab3p-^5>2!hbpJrfe$n@jYslwj;Q$fC~~=J`JobhEZO zy~hBfcn{tNvggk1wg0IBa9I}6f?f7ZPxEGkk>LPk-lQ$$Lv|<{nWa zePiY_bOE7D`G%hA*&x-qx~id~W;aJ_&Z3E>iPey3wGgN_!|%4czOlm9*r(%A5r zOMV(B@u`*+#m4;9_YO3CYQ)+Sp&&i)0yqFe0UH&@(~eBRwhYh(-Y}0Dog{rpC>C-m z&QXQ_WAmXI9OfoeNcm#DyatsEO`}Yt8O)={4t{>&QMbu1^tM##f4Z#5&d98*U7}&o z9K7X+dIp@F2~>=(qrLJZ5qjhQ|M&mI4CwTqoXYy7ULxm=Hi3Z`O50G2pkW{Je*i2J B@NNJA diff --git a/External tools/Myra.1.2.1.0/Assets/fonts/calibri32.fnt b/External tools/Myra.1.2.1.0/Assets/fonts/calibri32.fnt deleted file mode 100644 index 32e8475..0000000 --- a/External tools/Myra.1.2.1.0/Assets/fonts/calibri32.fnt +++ /dev/null @@ -1,985 +0,0 @@ -info face="Calibri" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0 -common lineHeight=32 base=25 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0 -page id=0 file="calibri32_0.png" -chars count=193 -char id=0 x=254 y=0 width=0 height=1 xoffset=0 yoffset=31 xadvance=0 page=0 chnl=15 -char id=13 x=253 y=0 width=0 height=1 xoffset=0 yoffset=31 xadvance=0 page=0 chnl=15 -char id=32 x=247 y=41 width=3 height=1 xoffset=-1 yoffset=31 xadvance=6 page=0 chnl=15 -char id=33 x=216 y=62 width=4 height=18 xoffset=3 yoffset=7 xadvance=8 page=0 chnl=15 -char id=34 x=202 y=146 width=8 height=7 xoffset=1 yoffset=7 xadvance=10 page=0 chnl=15 -char id=35 x=238 y=97 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=36 x=79 y=0 width=12 height=22 xoffset=1 yoffset=6 xadvance=13 page=0 chnl=15 -char id=37 x=226 y=62 width=18 height=17 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 -char id=38 x=112 y=45 width=16 height=18 xoffset=1 yoffset=7 xadvance=18 page=0 chnl=15 -char id=39 x=217 y=146 width=4 height=7 xoffset=1 yoffset=7 xadvance=6 page=0 chnl=15 -char id=40 x=39 y=0 width=6 height=23 xoffset=1 yoffset=7 xadvance=8 page=0 chnl=15 -char id=41 x=46 y=0 width=6 height=23 xoffset=1 yoffset=7 xadvance=8 page=0 chnl=15 -char id=42 x=126 y=148 width=11 height=10 xoffset=1 yoffset=7 xadvance=13 page=0 chnl=15 -char id=43 x=181 y=133 width=13 height=12 xoffset=0 yoffset=12 xadvance=13 page=0 chnl=15 -char id=44 x=211 y=146 width=5 height=7 xoffset=0 yoffset=22 xadvance=6 page=0 chnl=15 -char id=45 x=68 y=166 width=8 height=2 xoffset=0 yoffset=17 xadvance=8 page=0 chnl=15 -char id=46 x=29 y=168 width=4 height=3 xoffset=1 yoffset=22 xadvance=7 page=0 chnl=15 -char id=47 x=26 y=0 width=12 height=23 xoffset=-1 yoffset=6 xadvance=10 page=0 chnl=15 -char id=48 x=210 y=99 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=49 x=209 y=116 width=11 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=50 x=185 y=116 width=11 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=51 x=233 y=116 width=11 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=52 x=196 y=99 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=53 x=81 y=120 width=12 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=54 x=42 y=121 width=12 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=55 x=94 y=120 width=12 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=56 x=140 y=100 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=57 x=107 y=118 width=12 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=58 x=84 y=151 width=4 height=12 xoffset=2 yoffset=13 xadvance=7 page=0 chnl=15 -char id=59 x=248 y=79 width=6 height=16 xoffset=0 yoffset=13 xadvance=7 page=0 chnl=15 -char id=60 x=221 y=133 width=12 height=12 xoffset=0 yoffset=12 xadvance=13 page=0 chnl=15 -char id=61 x=189 y=146 width=12 height=7 xoffset=0 yoffset=14 xadvance=13 page=0 chnl=15 -char id=62 x=208 y=133 width=12 height=12 xoffset=1 yoffset=12 xadvance=13 page=0 chnl=15 -char id=63 x=103 y=64 width=11 height=18 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15 -char id=64 x=37 y=46 width=21 height=19 xoffset=1 yoffset=9 xadvance=23 page=0 chnl=15 -char id=65 x=232 y=80 width=15 height=16 xoffset=0 yoffset=9 xadvance=15 page=0 chnl=15 -char id=66 x=14 y=121 width=13 height=16 xoffset=1 yoffset=9 xadvance=14 page=0 chnl=15 -char id=67 x=0 y=121 width=13 height=16 xoffset=1 yoffset=9 xadvance=14 page=0 chnl=15 -char id=68 x=64 y=103 width=15 height=16 xoffset=1 yoffset=9 xadvance=16 page=0 chnl=15 -char id=69 x=0 y=138 width=10 height=16 xoffset=2 yoffset=9 xadvance=13 page=0 chnl=15 -char id=70 x=197 y=116 width=11 height=16 xoffset=1 yoffset=9 xadvance=12 page=0 chnl=15 -char id=71 x=48 y=104 width=15 height=16 xoffset=0 yoffset=9 xadvance=16 page=0 chnl=15 -char id=72 x=95 y=101 width=14 height=16 xoffset=1 yoffset=9 xadvance=16 page=0 chnl=15 -char id=73 x=252 y=96 width=3 height=16 xoffset=2 yoffset=9 xadvance=7 page=0 chnl=15 -char id=74 x=20 y=138 width=8 height=16 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=15 -char id=75 x=120 y=118 width=12 height=16 xoffset=2 yoffset=9 xadvance=14 page=0 chnl=15 -char id=76 x=245 y=62 width=10 height=16 xoffset=1 yoffset=9 xadvance=11 page=0 chnl=15 -char id=77 x=177 y=82 width=20 height=16 xoffset=1 yoffset=9 xadvance=22 page=0 chnl=15 -char id=78 x=0 y=104 width=15 height=16 xoffset=1 yoffset=9 xadvance=17 page=0 chnl=15 -char id=79 x=215 y=82 width=16 height=16 xoffset=0 yoffset=9 xadvance=17 page=0 chnl=15 -char id=80 x=146 y=117 width=12 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=81 x=93 y=45 width=18 height=18 xoffset=1 yoffset=9 xadvance=18 page=0 chnl=15 -char id=82 x=224 y=99 width=13 height=16 xoffset=1 yoffset=9 xadvance=14 page=0 chnl=15 -char id=83 x=159 y=117 width=12 height=16 xoffset=0 yoffset=9 xadvance=12 page=0 chnl=15 -char id=84 x=168 y=99 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=85 x=32 y=104 width=15 height=16 xoffset=1 yoffset=9 xadvance=17 page=0 chnl=15 -char id=86 x=16 y=104 width=15 height=16 xoffset=0 yoffset=9 xadvance=15 page=0 chnl=15 -char id=87 x=132 y=83 width=23 height=16 xoffset=0 yoffset=9 xadvance=23 page=0 chnl=15 -char id=88 x=80 y=103 width=14 height=16 xoffset=0 yoffset=9 xadvance=14 page=0 chnl=15 -char id=89 x=28 y=121 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=90 x=172 y=116 width=12 height=16 xoffset=0 yoffset=9 xadvance=12 page=0 chnl=15 -char id=91 x=123 y=0 width=6 height=22 xoffset=2 yoffset=7 xadvance=8 page=0 chnl=15 -char id=92 x=92 y=0 width=12 height=22 xoffset=-1 yoffset=6 xadvance=10 page=0 chnl=15 -char id=93 x=130 y=0 width=6 height=22 xoffset=0 yoffset=7 xadvance=8 page=0 chnl=15 -char id=94 x=177 y=147 width=11 height=9 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=95 x=34 y=168 width=15 height=2 xoffset=-1 yoffset=28 xadvance=13 page=0 chnl=15 -char id=96 x=15 y=168 width=6 height=4 xoffset=1 yoffset=7 xadvance=8 page=0 chnl=15 -char id=97 x=26 y=155 width=11 height=12 xoffset=0 yoffset=13 xadvance=12 page=0 chnl=15 -char id=98 x=216 y=43 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=99 x=50 y=154 width=11 height=12 xoffset=0 yoffset=13 xadvance=11 page=0 chnl=15 -char id=100 x=229 y=43 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=101 x=0 y=155 width=12 height=12 xoffset=0 yoffset=13 xadvance=13 page=0 chnl=15 -char id=102 x=187 y=63 width=9 height=18 xoffset=0 yoffset=7 xadvance=8 page=0 chnl=15 -char id=103 x=107 y=83 width=12 height=17 xoffset=0 yoffset=13 xadvance=12 page=0 chnl=15 -char id=104 x=52 y=66 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=105 x=29 y=138 width=4 height=16 xoffset=1 yoffset=9 xadvance=6 page=0 chnl=15 -char id=106 x=193 y=22 width=6 height=21 xoffset=-1 yoffset=9 xadvance=6 page=0 chnl=15 -char id=107 x=127 y=64 width=11 height=18 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15 -char id=108 x=211 y=63 width=4 height=18 xoffset=1 yoffset=7 xadvance=6 page=0 chnl=15 -char id=109 x=112 y=135 width=19 height=12 xoffset=1 yoffset=13 xadvance=21 page=0 chnl=15 -char id=110 x=13 y=155 width=12 height=12 xoffset=1 yoffset=13 xadvance=14 page=0 chnl=15 -char id=111 x=152 y=134 width=14 height=12 xoffset=0 yoffset=13 xadvance=14 page=0 chnl=15 -char id=112 x=81 y=83 width=12 height=17 xoffset=1 yoffset=13 xadvance=14 page=0 chnl=15 -char id=113 x=94 y=83 width=12 height=17 xoffset=1 yoffset=13 xadvance=14 page=0 chnl=15 -char id=114 x=247 y=131 width=8 height=12 xoffset=1 yoffset=13 xadvance=9 page=0 chnl=15 -char id=115 x=73 y=151 width=10 height=12 xoffset=0 yoffset=13 xadvance=10 page=0 chnl=15 -char id=116 x=48 y=138 width=9 height=15 xoffset=0 yoffset=10 xadvance=9 page=0 chnl=15 -char id=117 x=234 y=133 width=12 height=12 xoffset=1 yoffset=13 xadvance=14 page=0 chnl=15 -char id=118 x=195 y=133 width=12 height=12 xoffset=0 yoffset=13 xadvance=12 page=0 chnl=15 -char id=119 x=132 y=135 width=19 height=12 xoffset=0 yoffset=13 xadvance=19 page=0 chnl=15 -char id=120 x=38 y=154 width=11 height=12 xoffset=0 yoffset=13 xadvance=11 page=0 chnl=15 -char id=121 x=68 y=85 width=12 height=17 xoffset=0 yoffset=13 xadvance=12 page=0 chnl=15 -char id=122 x=62 y=153 width=10 height=12 xoffset=0 yoffset=13 xadvance=10 page=0 chnl=15 -char id=123 x=114 y=0 width=8 height=22 xoffset=0 yoffset=7 xadvance=8 page=0 chnl=15 -char id=124 x=53 y=0 width=4 height=23 xoffset=4 yoffset=7 xadvance=12 page=0 chnl=15 -char id=125 x=105 y=0 width=8 height=22 xoffset=1 yoffset=7 xadvance=8 page=0 chnl=15 -char id=126 x=236 y=146 width=13 height=5 xoffset=0 yoffset=10 xadvance=13 page=0 chnl=15 -char id=160 x=251 y=41 width=3 height=1 xoffset=-1 yoffset=31 xadvance=6 page=0 chnl=15 -char id=161 x=221 y=62 width=4 height=18 xoffset=2 yoffset=10 xadvance=8 page=0 chnl=15 -char id=162 x=245 y=114 width=10 height=16 xoffset=2 yoffset=9 xadvance=13 page=0 chnl=15 -char id=163 x=154 y=100 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=164 x=58 y=138 width=13 height=14 xoffset=0 yoffset=11 xadvance=13 page=0 chnl=15 -char id=165 x=182 y=99 width=13 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=166 x=58 y=0 width=3 height=23 xoffset=5 yoffset=7 xadvance=13 page=0 chnl=15 -char id=167 x=137 y=22 width=11 height=21 xoffset=1 yoffset=7 xadvance=13 page=0 chnl=15 -char id=168 x=77 y=164 width=8 height=2 xoffset=1 yoffset=9 xadvance=10 page=0 chnl=15 -char id=169 x=73 y=45 width=19 height=18 xoffset=1 yoffset=7 xadvance=22 page=0 chnl=15 -char id=170 x=82 y=137 width=8 height=13 xoffset=1 yoffset=9 xadvance=10 page=0 chnl=15 -char id=171 x=114 y=148 width=11 height=11 xoffset=1 yoffset=13 xadvance=13 page=0 chnl=15 -char id=172 x=222 y=146 width=13 height=5 xoffset=0 yoffset=17 xadvance=13 page=0 chnl=15 -char id=173 x=50 y=167 width=8 height=2 xoffset=0 yoffset=17 xadvance=8 page=0 chnl=15 -char id=174 x=138 y=148 width=11 height=10 xoffset=1 yoffset=7 xadvance=13 page=0 chnl=15 -char id=175 x=59 y=167 width=8 height=2 xoffset=1 yoffset=8 xadvance=10 page=0 chnl=15 -char id=176 x=0 y=168 width=7 height=5 xoffset=1 yoffset=8 xadvance=9 page=0 chnl=15 -char id=177 x=34 y=138 width=13 height=15 xoffset=0 yoffset=10 xadvance=13 page=0 chnl=15 -char id=178 x=150 y=148 width=9 height=10 xoffset=0 yoffset=6 xadvance=9 page=0 chnl=15 -char id=179 x=160 y=147 width=9 height=10 xoffset=0 yoffset=6 xadvance=9 page=0 chnl=15 -char id=180 x=22 y=168 width=6 height=4 xoffset=1 yoffset=7 xadvance=8 page=0 chnl=15 -char id=181 x=53 y=85 width=14 height=17 xoffset=1 yoffset=13 xadvance=14 page=0 chnl=15 -char id=182 x=59 y=46 width=13 height=19 xoffset=1 yoffset=9 xadvance=15 page=0 chnl=15 -char id=183 x=250 y=144 width=5 height=3 xoffset=1 yoffset=16 xadvance=7 page=0 chnl=15 -char id=184 x=8 y=168 width=6 height=5 xoffset=1 yoffset=25 xadvance=8 page=0 chnl=15 -char id=185 x=170 y=147 width=6 height=10 xoffset=-1 yoffset=6 xadvance=6 page=0 chnl=15 -char id=186 x=72 y=137 width=9 height=13 xoffset=1 yoffset=9 xadvance=11 page=0 chnl=15 -char id=187 x=89 y=151 width=12 height=11 xoffset=1 yoffset=13 xadvance=13 page=0 chnl=15 -char id=188 x=36 y=86 width=16 height=17 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=15 -char id=189 x=18 y=86 width=17 height=17 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=15 -char id=190 x=0 y=86 width=17 height=17 xoffset=0 yoffset=8 xadvance=18 page=0 chnl=15 -char id=191 x=91 y=64 width=11 height=18 xoffset=0 yoffset=10 xadvance=12 page=0 chnl=15 -char id=192 x=48 y=24 width=15 height=21 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=193 x=64 y=23 width=15 height=21 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=194 x=32 y=24 width=15 height=21 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=195 x=16 y=24 width=15 height=21 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=196 x=0 y=46 width=15 height=20 xoffset=0 yoffset=5 xadvance=15 page=0 chnl=15 -char id=197 x=0 y=24 width=15 height=21 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=198 x=156 y=82 width=20 height=16 xoffset=-1 yoffset=9 xadvance=20 page=0 chnl=15 -char id=199 x=110 y=23 width=13 height=21 xoffset=1 yoffset=9 xadvance=14 page=0 chnl=15 -char id=200 x=149 y=22 width=10 height=21 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=201 x=182 y=22 width=10 height=21 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=202 x=171 y=22 width=10 height=21 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=203 x=16 y=46 width=10 height=20 xoffset=2 yoffset=5 xadvance=13 page=0 chnl=15 -char id=204 x=207 y=22 width=6 height=21 xoffset=-1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=205 x=200 y=22 width=6 height=21 xoffset=2 yoffset=4 xadvance=7 page=0 chnl=15 -char id=206 x=160 y=22 width=10 height=21 xoffset=-1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=207 x=27 y=46 width=9 height=20 xoffset=-1 yoffset=5 xadvance=7 page=0 chnl=15 -char id=208 x=198 y=82 width=16 height=16 xoffset=0 yoffset=9 xadvance=16 page=0 chnl=15 -char id=209 x=237 y=0 width=15 height=21 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=210 x=171 y=0 width=16 height=21 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=211 x=154 y=0 width=16 height=21 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=212 x=137 y=0 width=16 height=21 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=213 x=188 y=0 width=16 height=21 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=214 x=214 y=22 width=16 height=20 xoffset=0 yoffset=5 xadvance=17 page=0 chnl=15 -char id=215 x=102 y=150 width=11 height=11 xoffset=1 yoffset=12 xadvance=13 page=0 chnl=15 -char id=216 x=62 y=0 width=16 height=22 xoffset=1 yoffset=6 xadvance=17 page=0 chnl=15 -char id=217 x=221 y=0 width=15 height=21 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=218 x=80 y=23 width=15 height=21 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=219 x=205 y=0 width=15 height=21 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=220 x=231 y=22 width=15 height=20 xoffset=1 yoffset=5 xadvance=17 page=0 chnl=15 -char id=221 x=96 y=23 width=13 height=21 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=222 x=55 y=121 width=12 height=16 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=223 x=189 y=44 width=13 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=224 x=115 y=64 width=11 height=18 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15 -char id=225 x=175 y=63 width=11 height=18 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15 -char id=226 x=163 y=63 width=11 height=18 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15 -char id=227 x=151 y=63 width=11 height=18 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15 -char id=228 x=221 y=116 width=11 height=16 xoffset=0 yoffset=9 xadvance=12 page=0 chnl=15 -char id=229 x=139 y=64 width=11 height=18 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15 -char id=230 x=91 y=137 width=20 height=12 xoffset=0 yoffset=13 xadvance=20 page=0 chnl=15 -char id=231 x=120 y=83 width=11 height=17 xoffset=0 yoffset=13 xadvance=11 page=0 chnl=15 -char id=232 x=0 y=67 width=12 height=18 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=15 -char id=233 x=13 y=67 width=12 height=18 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=15 -char id=234 x=26 y=67 width=12 height=18 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=15 -char id=235 x=68 y=120 width=12 height=16 xoffset=0 yoffset=9 xadvance=13 page=0 chnl=15 -char id=236 x=197 y=63 width=6 height=18 xoffset=-1 yoffset=7 xadvance=6 page=0 chnl=15 -char id=237 x=204 y=63 width=6 height=18 xoffset=1 yoffset=7 xadvance=6 page=0 chnl=15 -char id=238 x=247 y=22 width=8 height=18 xoffset=-1 yoffset=7 xadvance=6 page=0 chnl=15 -char id=239 x=11 y=138 width=8 height=16 xoffset=-1 yoffset=9 xadvance=6 page=0 chnl=15 -char id=240 x=39 y=66 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=241 x=242 y=43 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=242 x=144 y=44 width=14 height=18 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=15 -char id=243 x=129 y=45 width=14 height=18 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=15 -char id=244 x=174 y=44 width=14 height=18 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=15 -char id=245 x=159 y=44 width=14 height=18 xoffset=0 yoffset=7 xadvance=14 page=0 chnl=15 -char id=246 x=110 y=101 width=14 height=16 xoffset=0 yoffset=9 xadvance=14 page=0 chnl=15 -char id=247 x=167 y=134 width=13 height=12 xoffset=0 yoffset=12 xadvance=13 page=0 chnl=15 -char id=248 x=125 y=101 width=14 height=16 xoffset=0 yoffset=11 xadvance=14 page=0 chnl=15 -char id=249 x=65 y=66 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=250 x=78 y=64 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=251 x=203 y=44 width=12 height=18 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=252 x=133 y=118 width=12 height=16 xoffset=1 yoffset=9 xadvance=14 page=0 chnl=15 -char id=253 x=0 y=0 width=12 height=23 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15 -char id=254 x=13 y=0 width=12 height=23 xoffset=1 yoffset=7 xadvance=14 page=0 chnl=15 -char id=255 x=124 y=23 width=12 height=21 xoffset=0 yoffset=9 xadvance=12 page=0 chnl=15 -kernings count=787 -kerning first=179 second=47 amount=-4 -kerning first=178 second=47 amount=-4 -kerning first=185 second=47 amount=-4 -kerning first=40 second=106 amount=1 -kerning first=47 second=179 amount=-3 -kerning first=47 second=178 amount=-3 -kerning first=47 second=185 amount=-2 -kerning first=47 second=198 amount=-1 -kerning first=47 second=197 amount=-1 -kerning first=47 second=196 amount=-1 -kerning first=47 second=195 amount=-1 -kerning first=47 second=194 amount=-1 -kerning first=47 second=193 amount=-1 -kerning first=47 second=192 amount=-1 -kerning first=47 second=65 amount=-1 -kerning first=46 second=255 amount=-1 -kerning first=46 second=253 amount=-1 -kerning first=46 second=121 amount=-1 -kerning first=46 second=119 amount=-1 -kerning first=46 second=118 amount=-1 -kerning first=46 second=116 amount=-1 -kerning first=46 second=102 amount=-1 -kerning first=46 second=221 amount=-2 -kerning first=46 second=89 amount=-2 -kerning first=65 second=84 amount=-2 -kerning first=46 second=87 amount=-2 -kerning first=46 second=86 amount=-2 -kerning first=46 second=84 amount=-2 -kerning first=44 second=116 amount=-1 -kerning first=44 second=221 amount=-2 -kerning first=44 second=89 amount=-2 -kerning first=44 second=87 amount=-2 -kerning first=44 second=86 amount=-2 -kerning first=44 second=84 amount=-2 -kerning first=191 second=255 amount=-1 -kerning first=191 second=253 amount=-1 -kerning first=191 second=121 amount=-1 -kerning first=191 second=119 amount=-1 -kerning first=65 second=86 amount=-1 -kerning first=65 second=87 amount=-1 -kerning first=191 second=118 amount=-1 -kerning first=191 second=102 amount=-1 -kerning first=191 second=221 amount=-1 -kerning first=191 second=89 amount=-1 -kerning first=65 second=89 amount=-2 -kerning first=191 second=86 amount=-1 -kerning first=65 second=221 amount=-2 -kerning first=191 second=84 amount=-1 -kerning first=122 second=113 amount=-1 -kerning first=65 second=116 amount=-1 -kerning first=122 second=248 amount=-1 -kerning first=122 second=246 amount=-1 -kerning first=122 second=245 amount=-1 -kerning first=65 second=121 amount=-1 -kerning first=122 second=244 amount=-1 -kerning first=65 second=253 amount=-1 -kerning first=122 second=243 amount=-1 -kerning first=65 second=255 amount=-1 -kerning first=65 second=63 amount=-1 -kerning first=122 second=242 amount=-1 -kerning first=122 second=111 amount=-1 -kerning first=122 second=235 amount=-1 -kerning first=122 second=234 amount=-1 -kerning first=122 second=233 amount=-1 -kerning first=122 second=232 amount=-1 -kerning first=122 second=101 amount=-1 -kerning first=122 second=100 amount=-1 -kerning first=122 second=231 amount=-1 -kerning first=122 second=99 amount=-1 -kerning first=255 second=46 amount=-2 -kerning first=255 second=44 amount=-2 -kerning first=253 second=46 amount=-2 -kerning first=253 second=44 amount=-2 -kerning first=121 second=46 amount=-2 -kerning first=121 second=44 amount=-2 -kerning first=120 second=113 amount=-1 -kerning first=120 second=248 amount=-1 -kerning first=120 second=246 amount=-1 -kerning first=120 second=245 amount=-1 -kerning first=120 second=244 amount=-1 -kerning first=120 second=243 amount=-1 -kerning first=120 second=242 amount=-1 -kerning first=120 second=111 amount=-1 -kerning first=120 second=235 amount=-1 -kerning first=120 second=234 amount=-1 -kerning first=120 second=233 amount=-1 -kerning first=120 second=232 amount=-1 -kerning first=120 second=101 amount=-1 -kerning first=120 second=100 amount=-1 -kerning first=120 second=231 amount=-1 -kerning first=120 second=99 amount=-1 -kerning first=119 second=46 amount=-2 -kerning first=119 second=44 amount=-2 -kerning first=118 second=46 amount=-2 -kerning first=118 second=44 amount=-2 -kerning first=223 second=255 amount=-1 -kerning first=223 second=253 amount=-1 -kerning first=223 second=121 amount=-1 -kerning first=114 second=46 amount=-3 -kerning first=114 second=44 amount=-2 -kerning first=114 second=230 amount=-1 -kerning first=114 second=229 amount=-1 -kerning first=114 second=228 amount=-1 -kerning first=114 second=227 amount=-1 -kerning first=114 second=226 amount=-1 -kerning first=114 second=225 amount=-1 -kerning first=114 second=224 amount=-1 -kerning first=114 second=97 amount=-1 -kerning first=254 second=120 amount=-1 -kerning first=112 second=120 amount=-1 -kerning first=248 second=120 amount=-1 -kerning first=246 second=120 amount=-1 -kerning first=245 second=120 amount=-1 -kerning first=244 second=120 amount=-1 -kerning first=243 second=120 amount=-1 -kerning first=242 second=120 amount=-1 -kerning first=111 second=120 amount=-1 -kerning first=192 second=84 amount=-2 -kerning first=107 second=113 amount=-1 -kerning first=107 second=248 amount=-1 -kerning first=107 second=246 amount=-1 -kerning first=107 second=245 amount=-1 -kerning first=107 second=244 amount=-1 -kerning first=107 second=243 amount=-1 -kerning first=107 second=242 amount=-1 -kerning first=107 second=111 amount=-1 -kerning first=107 second=235 amount=-1 -kerning first=107 second=234 amount=-1 -kerning first=107 second=233 amount=-1 -kerning first=107 second=232 amount=-1 -kerning first=107 second=101 amount=-1 -kerning first=192 second=86 amount=-1 -kerning first=192 second=87 amount=-1 -kerning first=107 second=100 amount=-1 -kerning first=107 second=231 amount=-1 -kerning first=107 second=99 amount=-1 -kerning first=103 second=47 amount=1 -kerning first=192 second=89 amount=-2 -kerning first=102 second=46 amount=-2 -kerning first=192 second=221 amount=-2 -kerning first=102 second=44 amount=-2 -kerning first=102 second=113 amount=-1 -kerning first=192 second=116 amount=-1 -kerning first=102 second=248 amount=-1 -kerning first=102 second=246 amount=-1 -kerning first=102 second=245 amount=-1 -kerning first=192 second=121 amount=-1 -kerning first=102 second=244 amount=-1 -kerning first=192 second=253 amount=-1 -kerning first=102 second=243 amount=-1 -kerning first=192 second=255 amount=-1 -kerning first=192 second=63 amount=-1 -kerning first=102 second=242 amount=-1 -kerning first=102 second=111 amount=-1 -kerning first=102 second=103 amount=-1 -kerning first=102 second=235 amount=-1 -kerning first=102 second=234 amount=-1 -kerning first=102 second=233 amount=-1 -kerning first=102 second=232 amount=-1 -kerning first=102 second=101 amount=-1 -kerning first=102 second=100 amount=-1 -kerning first=102 second=231 amount=-1 -kerning first=102 second=99 amount=-1 -kerning first=102 second=230 amount=-1 -kerning first=102 second=229 amount=-1 -kerning first=102 second=228 amount=-1 -kerning first=102 second=227 amount=-1 -kerning first=102 second=226 amount=-1 -kerning first=102 second=225 amount=-1 -kerning first=102 second=224 amount=-1 -kerning first=102 second=97 amount=-1 -kerning first=98 second=120 amount=-1 -kerning first=90 second=118 amount=-1 -kerning first=90 second=239 amount=1 -kerning first=90 second=238 amount=1 -kerning first=221 second=47 amount=-2 -kerning first=221 second=46 amount=-3 -kerning first=221 second=58 amount=-2 -kerning first=221 second=59 amount=-2 -kerning first=221 second=44 amount=-3 -kerning first=221 second=122 amount=-1 -kerning first=221 second=255 amount=-1 -kerning first=221 second=253 amount=-1 -kerning first=221 second=121 amount=-1 -kerning first=221 second=120 amount=-1 -kerning first=221 second=119 amount=-1 -kerning first=221 second=118 amount=-1 -kerning first=221 second=252 amount=-1 -kerning first=221 second=251 amount=-1 -kerning first=221 second=250 amount=-1 -kerning first=221 second=249 amount=-1 -kerning first=221 second=117 amount=-1 -kerning first=221 second=116 amount=-1 -kerning first=221 second=223 amount=-1 -kerning first=221 second=115 amount=-1 -kerning first=221 second=114 amount=-1 -kerning first=221 second=113 amount=-2 -kerning first=221 second=112 amount=-1 -kerning first=221 second=248 amount=-2 -kerning first=221 second=246 amount=-2 -kerning first=221 second=245 amount=-2 -kerning first=221 second=244 amount=-2 -kerning first=221 second=243 amount=-2 -kerning first=221 second=242 amount=-2 -kerning first=221 second=111 amount=-2 -kerning first=221 second=241 amount=-1 -kerning first=221 second=110 amount=-1 -kerning first=221 second=109 amount=-1 -kerning first=221 second=106 amount=-1 -kerning first=221 second=239 amount=1 -kerning first=193 second=84 amount=-2 -kerning first=221 second=238 amount=1 -kerning first=221 second=237 amount=-1 -kerning first=221 second=236 amount=1 -kerning first=221 second=103 amount=-2 -kerning first=221 second=102 amount=-1 -kerning first=221 second=235 amount=-2 -kerning first=221 second=234 amount=-2 -kerning first=221 second=233 amount=-2 -kerning first=221 second=232 amount=-2 -kerning first=221 second=101 amount=-2 -kerning first=221 second=100 amount=-2 -kerning first=221 second=231 amount=-2 -kerning first=221 second=99 amount=-2 -kerning first=193 second=86 amount=-1 -kerning first=193 second=87 amount=-1 -kerning first=221 second=230 amount=-2 -kerning first=221 second=229 amount=-2 -kerning first=221 second=228 amount=-2 -kerning first=221 second=227 amount=-2 -kerning first=193 second=89 amount=-2 -kerning first=221 second=226 amount=-2 -kerning first=193 second=221 amount=-2 -kerning first=221 second=225 amount=-2 -kerning first=221 second=224 amount=-2 -kerning first=193 second=116 amount=-1 -kerning first=221 second=97 amount=-2 -kerning first=221 second=81 amount=-1 -kerning first=221 second=214 amount=-1 -kerning first=193 second=121 amount=-1 -kerning first=221 second=213 amount=-1 -kerning first=193 second=253 amount=-1 -kerning first=221 second=212 amount=-1 -kerning first=193 second=255 amount=-1 -kerning first=193 second=63 amount=-1 -kerning first=221 second=211 amount=-1 -kerning first=221 second=210 amount=-1 -kerning first=221 second=79 amount=-1 -kerning first=221 second=74 amount=-1 -kerning first=221 second=71 amount=-1 -kerning first=221 second=199 amount=-1 -kerning first=221 second=67 amount=-1 -kerning first=221 second=198 amount=-2 -kerning first=221 second=197 amount=-2 -kerning first=221 second=196 amount=-2 -kerning first=221 second=195 amount=-2 -kerning first=221 second=194 amount=-2 -kerning first=221 second=193 amount=-2 -kerning first=221 second=192 amount=-2 -kerning first=221 second=65 amount=-2 -kerning first=89 second=47 amount=-2 -kerning first=89 second=46 amount=-3 -kerning first=89 second=58 amount=-2 -kerning first=89 second=59 amount=-2 -kerning first=89 second=44 amount=-3 -kerning first=89 second=122 amount=-1 -kerning first=89 second=255 amount=-1 -kerning first=89 second=253 amount=-1 -kerning first=89 second=121 amount=-1 -kerning first=89 second=120 amount=-1 -kerning first=89 second=119 amount=-1 -kerning first=89 second=118 amount=-1 -kerning first=89 second=252 amount=-1 -kerning first=89 second=251 amount=-1 -kerning first=89 second=250 amount=-1 -kerning first=89 second=249 amount=-1 -kerning first=89 second=117 amount=-1 -kerning first=89 second=116 amount=-1 -kerning first=89 second=223 amount=-1 -kerning first=89 second=115 amount=-1 -kerning first=89 second=114 amount=-1 -kerning first=89 second=113 amount=-2 -kerning first=89 second=112 amount=-1 -kerning first=89 second=248 amount=-2 -kerning first=89 second=246 amount=-2 -kerning first=89 second=245 amount=-2 -kerning first=89 second=244 amount=-2 -kerning first=89 second=243 amount=-2 -kerning first=89 second=242 amount=-2 -kerning first=89 second=111 amount=-2 -kerning first=89 second=241 amount=-1 -kerning first=89 second=110 amount=-1 -kerning first=89 second=109 amount=-1 -kerning first=89 second=106 amount=-1 -kerning first=89 second=239 amount=1 -kerning first=89 second=238 amount=1 -kerning first=89 second=237 amount=-1 -kerning first=89 second=236 amount=1 -kerning first=89 second=103 amount=-2 -kerning first=89 second=102 amount=-1 -kerning first=89 second=235 amount=-2 -kerning first=89 second=234 amount=-2 -kerning first=89 second=233 amount=-2 -kerning first=194 second=84 amount=-2 -kerning first=89 second=232 amount=-2 -kerning first=89 second=101 amount=-2 -kerning first=89 second=100 amount=-2 -kerning first=89 second=231 amount=-2 -kerning first=89 second=99 amount=-2 -kerning first=89 second=230 amount=-2 -kerning first=89 second=229 amount=-2 -kerning first=89 second=228 amount=-2 -kerning first=89 second=227 amount=-2 -kerning first=89 second=226 amount=-2 -kerning first=89 second=225 amount=-2 -kerning first=89 second=224 amount=-2 -kerning first=89 second=97 amount=-2 -kerning first=194 second=86 amount=-1 -kerning first=194 second=87 amount=-1 -kerning first=89 second=81 amount=-1 -kerning first=89 second=214 amount=-1 -kerning first=89 second=213 amount=-1 -kerning first=89 second=212 amount=-1 -kerning first=194 second=89 amount=-2 -kerning first=89 second=211 amount=-1 -kerning first=194 second=221 amount=-2 -kerning first=89 second=210 amount=-1 -kerning first=89 second=79 amount=-1 -kerning first=194 second=116 amount=-1 -kerning first=89 second=74 amount=-1 -kerning first=89 second=71 amount=-1 -kerning first=89 second=199 amount=-1 -kerning first=194 second=121 amount=-1 -kerning first=89 second=67 amount=-1 -kerning first=194 second=253 amount=-1 -kerning first=89 second=198 amount=-2 -kerning first=194 second=255 amount=-1 -kerning first=194 second=63 amount=-1 -kerning first=89 second=197 amount=-2 -kerning first=89 second=196 amount=-2 -kerning first=89 second=195 amount=-2 -kerning first=89 second=194 amount=-2 -kerning first=89 second=193 amount=-2 -kerning first=89 second=192 amount=-2 -kerning first=89 second=65 amount=-2 -kerning first=88 second=255 amount=-1 -kerning first=88 second=253 amount=-1 -kerning first=88 second=121 amount=-1 -kerning first=88 second=119 amount=-1 -kerning first=88 second=118 amount=-1 -kerning first=88 second=113 amount=-1 -kerning first=88 second=100 amount=-1 -kerning first=88 second=81 amount=-1 -kerning first=88 second=214 amount=-1 -kerning first=88 second=213 amount=-1 -kerning first=88 second=212 amount=-1 -kerning first=88 second=211 amount=-1 -kerning first=88 second=210 amount=-1 -kerning first=88 second=79 amount=-1 -kerning first=88 second=71 amount=-1 -kerning first=88 second=199 amount=-1 -kerning first=88 second=67 amount=-1 -kerning first=87 second=46 amount=-3 -kerning first=87 second=59 amount=-2 -kerning first=87 second=44 amount=-3 -kerning first=87 second=255 amount=-1 -kerning first=87 second=253 amount=-1 -kerning first=87 second=121 amount=-1 -kerning first=87 second=252 amount=-1 -kerning first=87 second=251 amount=-1 -kerning first=87 second=250 amount=-1 -kerning first=87 second=249 amount=-1 -kerning first=87 second=117 amount=-1 -kerning first=87 second=115 amount=-1 -kerning first=87 second=114 amount=-1 -kerning first=87 second=113 amount=-1 -kerning first=87 second=112 amount=-1 -kerning first=87 second=248 amount=-1 -kerning first=87 second=246 amount=-1 -kerning first=87 second=245 amount=-1 -kerning first=87 second=244 amount=-1 -kerning first=87 second=243 amount=-1 -kerning first=87 second=242 amount=-1 -kerning first=87 second=111 amount=-1 -kerning first=87 second=241 amount=-1 -kerning first=87 second=110 amount=-1 -kerning first=87 second=109 amount=-1 -kerning first=87 second=239 amount=1 -kerning first=87 second=103 amount=-1 -kerning first=87 second=235 amount=-1 -kerning first=87 second=234 amount=-1 -kerning first=87 second=233 amount=-1 -kerning first=87 second=232 amount=-1 -kerning first=87 second=101 amount=-1 -kerning first=87 second=100 amount=-1 -kerning first=87 second=231 amount=-1 -kerning first=195 second=84 amount=-2 -kerning first=87 second=99 amount=-1 -kerning first=87 second=230 amount=-1 -kerning first=87 second=229 amount=-1 -kerning first=87 second=228 amount=-1 -kerning first=87 second=227 amount=-1 -kerning first=87 second=226 amount=-1 -kerning first=87 second=225 amount=-1 -kerning first=87 second=224 amount=-1 -kerning first=87 second=97 amount=-1 -kerning first=87 second=74 amount=-1 -kerning first=87 second=198 amount=-2 -kerning first=87 second=197 amount=-1 -kerning first=87 second=196 amount=-1 -kerning first=195 second=86 amount=-1 -kerning first=195 second=87 amount=-1 -kerning first=87 second=195 amount=-1 -kerning first=87 second=194 amount=-1 -kerning first=87 second=193 amount=-1 -kerning first=87 second=192 amount=-1 -kerning first=195 second=89 amount=-2 -kerning first=87 second=65 amount=-1 -kerning first=195 second=221 amount=-2 -kerning first=86 second=47 amount=-1 -kerning first=86 second=46 amount=-3 -kerning first=195 second=116 amount=-1 -kerning first=86 second=58 amount=-1 -kerning first=86 second=59 amount=-1 -kerning first=86 second=44 amount=-2 -kerning first=195 second=121 amount=-1 -kerning first=86 second=122 amount=-1 -kerning first=195 second=253 amount=-1 -kerning first=86 second=252 amount=-1 -kerning first=195 second=255 amount=-1 -kerning first=195 second=63 amount=-1 -kerning first=86 second=251 amount=-1 -kerning first=86 second=250 amount=-1 -kerning first=86 second=249 amount=-1 -kerning first=86 second=117 amount=-1 -kerning first=86 second=115 amount=-1 -kerning first=86 second=114 amount=-1 -kerning first=86 second=113 amount=-1 -kerning first=86 second=112 amount=-1 -kerning first=86 second=248 amount=-1 -kerning first=86 second=246 amount=-1 -kerning first=86 second=245 amount=-1 -kerning first=86 second=244 amount=-1 -kerning first=86 second=243 amount=-1 -kerning first=86 second=242 amount=-1 -kerning first=86 second=111 amount=-1 -kerning first=86 second=241 amount=-1 -kerning first=86 second=110 amount=-1 -kerning first=86 second=109 amount=-1 -kerning first=86 second=239 amount=1 -kerning first=86 second=238 amount=1 -kerning first=86 second=236 amount=1 -kerning first=86 second=103 amount=-1 -kerning first=86 second=235 amount=-1 -kerning first=86 second=234 amount=-1 -kerning first=86 second=233 amount=-1 -kerning first=86 second=232 amount=-1 -kerning first=86 second=101 amount=-1 -kerning first=86 second=100 amount=-1 -kerning first=86 second=231 amount=-1 -kerning first=86 second=99 amount=-1 -kerning first=86 second=230 amount=-1 -kerning first=86 second=229 amount=-1 -kerning first=86 second=228 amount=-1 -kerning first=86 second=227 amount=-1 -kerning first=86 second=226 amount=-1 -kerning first=86 second=225 amount=-1 -kerning first=86 second=224 amount=-1 -kerning first=86 second=97 amount=-1 -kerning first=86 second=74 amount=-1 -kerning first=86 second=198 amount=-2 -kerning first=86 second=197 amount=-1 -kerning first=86 second=196 amount=-1 -kerning first=86 second=195 amount=-1 -kerning first=86 second=194 amount=-1 -kerning first=86 second=193 amount=-1 -kerning first=86 second=192 amount=-1 -kerning first=86 second=65 amount=-1 -kerning first=220 second=74 amount=-1 -kerning first=220 second=197 amount=-1 -kerning first=220 second=196 amount=-1 -kerning first=220 second=195 amount=-1 -kerning first=220 second=194 amount=-1 -kerning first=220 second=193 amount=-1 -kerning first=220 second=192 amount=-1 -kerning first=220 second=65 amount=-1 -kerning first=219 second=74 amount=-1 -kerning first=219 second=197 amount=-1 -kerning first=219 second=196 amount=-1 -kerning first=196 second=84 amount=-2 -kerning first=219 second=195 amount=-1 -kerning first=219 second=194 amount=-1 -kerning first=219 second=193 amount=-1 -kerning first=219 second=192 amount=-1 -kerning first=219 second=65 amount=-1 -kerning first=218 second=74 amount=-1 -kerning first=218 second=197 amount=-1 -kerning first=218 second=196 amount=-1 -kerning first=218 second=195 amount=-1 -kerning first=218 second=194 amount=-1 -kerning first=218 second=193 amount=-1 -kerning first=218 second=192 amount=-1 -kerning first=218 second=65 amount=-1 -kerning first=196 second=86 amount=-1 -kerning first=196 second=87 amount=-1 -kerning first=217 second=74 amount=-1 -kerning first=217 second=197 amount=-1 -kerning first=217 second=196 amount=-1 -kerning first=217 second=195 amount=-1 -kerning first=196 second=89 amount=-2 -kerning first=217 second=194 amount=-1 -kerning first=196 second=221 amount=-2 -kerning first=217 second=193 amount=-1 -kerning first=217 second=192 amount=-1 -kerning first=196 second=116 amount=-1 -kerning first=217 second=65 amount=-1 -kerning first=85 second=74 amount=-1 -kerning first=85 second=197 amount=-1 -kerning first=196 second=121 amount=-1 -kerning first=85 second=196 amount=-1 -kerning first=196 second=253 amount=-1 -kerning first=85 second=195 amount=-1 -kerning first=196 second=255 amount=-1 -kerning first=196 second=63 amount=-1 -kerning first=85 second=194 amount=-1 -kerning first=85 second=193 amount=-1 -kerning first=85 second=192 amount=-1 -kerning first=85 second=65 amount=-1 -kerning first=84 second=47 amount=-1 -kerning first=84 second=46 amount=-3 -kerning first=84 second=58 amount=-2 -kerning first=84 second=59 amount=-1 -kerning first=84 second=44 amount=-3 -kerning first=84 second=122 amount=-2 -kerning first=84 second=255 amount=-1 -kerning first=84 second=253 amount=-1 -kerning first=84 second=121 amount=-1 -kerning first=84 second=120 amount=-1 -kerning first=84 second=119 amount=-1 -kerning first=84 second=118 amount=-1 -kerning first=84 second=252 amount=-2 -kerning first=84 second=251 amount=-2 -kerning first=84 second=250 amount=-2 -kerning first=84 second=249 amount=-2 -kerning first=84 second=117 amount=-2 -kerning first=84 second=115 amount=-2 -kerning first=84 second=114 amount=-2 -kerning first=84 second=113 amount=-2 -kerning first=84 second=112 amount=-2 -kerning first=84 second=248 amount=-2 -kerning first=84 second=246 amount=-2 -kerning first=84 second=245 amount=-2 -kerning first=84 second=244 amount=-2 -kerning first=84 second=243 amount=-2 -kerning first=84 second=242 amount=-2 -kerning first=84 second=111 amount=-2 -kerning first=84 second=241 amount=-2 -kerning first=84 second=110 amount=-2 -kerning first=84 second=109 amount=-2 -kerning first=84 second=239 amount=1 -kerning first=84 second=238 amount=1 -kerning first=84 second=103 amount=-2 -kerning first=84 second=235 amount=-2 -kerning first=84 second=234 amount=-2 -kerning first=84 second=233 amount=-2 -kerning first=84 second=232 amount=-2 -kerning first=84 second=101 amount=-2 -kerning first=84 second=100 amount=-2 -kerning first=84 second=231 amount=-2 -kerning first=84 second=99 amount=-2 -kerning first=84 second=230 amount=-2 -kerning first=84 second=229 amount=-2 -kerning first=84 second=228 amount=-2 -kerning first=84 second=227 amount=-2 -kerning first=84 second=226 amount=-2 -kerning first=84 second=225 amount=-2 -kerning first=84 second=224 amount=-2 -kerning first=84 second=97 amount=-2 -kerning first=84 second=81 amount=-1 -kerning first=84 second=214 amount=-1 -kerning first=84 second=213 amount=-1 -kerning first=84 second=212 amount=-1 -kerning first=84 second=211 amount=-1 -kerning first=84 second=210 amount=-1 -kerning first=84 second=79 amount=-1 -kerning first=84 second=74 amount=-1 -kerning first=84 second=71 amount=-1 -kerning first=84 second=199 amount=-1 -kerning first=84 second=67 amount=-1 -kerning first=84 second=198 amount=-2 -kerning first=84 second=197 amount=-2 -kerning first=84 second=196 amount=-2 -kerning first=84 second=195 amount=-2 -kerning first=84 second=194 amount=-2 -kerning first=84 second=193 amount=-2 -kerning first=84 second=192 amount=-2 -kerning first=84 second=65 amount=-2 -kerning first=82 second=248 amount=-1 -kerning first=82 second=246 amount=-1 -kerning first=82 second=245 amount=-1 -kerning first=82 second=244 amount=-1 -kerning first=82 second=243 amount=-1 -kerning first=82 second=242 amount=-1 -kerning first=82 second=111 amount=-1 -kerning first=81 second=47 amount=2 -kerning first=81 second=59 amount=1 -kerning first=81 second=44 amount=1 -kerning first=81 second=106 amount=1 -kerning first=81 second=103 amount=1 -kerning first=81 second=221 amount=-1 -kerning first=81 second=89 amount=-1 -kerning first=81 second=84 amount=-1 -kerning first=81 second=74 amount=1 -kerning first=81 second=198 amount=1 -kerning first=80 second=47 amount=-1 -kerning first=80 second=46 amount=-3 -kerning first=80 second=44 amount=-3 -kerning first=80 second=248 amount=-1 -kerning first=80 second=246 amount=-1 -kerning first=80 second=245 amount=-1 -kerning first=80 second=244 amount=-1 -kerning first=80 second=243 amount=-1 -kerning first=80 second=242 amount=-1 -kerning first=80 second=111 amount=-1 -kerning first=80 second=235 amount=-1 -kerning first=80 second=234 amount=-1 -kerning first=80 second=233 amount=-1 -kerning first=80 second=232 amount=-1 -kerning first=80 second=101 amount=-1 -kerning first=80 second=231 amount=-1 -kerning first=80 second=99 amount=-1 -kerning first=80 second=230 amount=-1 -kerning first=80 second=229 amount=-1 -kerning first=80 second=228 amount=-1 -kerning first=80 second=227 amount=-1 -kerning first=80 second=226 amount=-1 -kerning first=80 second=225 amount=-1 -kerning first=80 second=224 amount=-1 -kerning first=80 second=97 amount=-1 -kerning first=80 second=74 amount=-2 -kerning first=80 second=198 amount=-2 -kerning first=80 second=197 amount=-2 -kerning first=80 second=196 amount=-2 -kerning first=80 second=195 amount=-2 -kerning first=80 second=194 amount=-2 -kerning first=80 second=193 amount=-2 -kerning first=80 second=192 amount=-2 -kerning first=80 second=65 amount=-2 -kerning first=214 second=44 amount=-1 -kerning first=214 second=221 amount=-1 -kerning first=214 second=89 amount=-1 -kerning first=214 second=88 amount=-1 -kerning first=214 second=84 amount=-1 -kerning first=213 second=44 amount=-1 -kerning first=213 second=221 amount=-1 -kerning first=213 second=89 amount=-1 -kerning first=213 second=88 amount=-1 -kerning first=213 second=84 amount=-1 -kerning first=212 second=44 amount=-1 -kerning first=212 second=221 amount=-1 -kerning first=212 second=89 amount=-1 -kerning first=212 second=88 amount=-1 -kerning first=212 second=84 amount=-1 -kerning first=211 second=44 amount=-1 -kerning first=211 second=221 amount=-1 -kerning first=211 second=89 amount=-1 -kerning first=211 second=88 amount=-1 -kerning first=211 second=84 amount=-1 -kerning first=210 second=44 amount=-1 -kerning first=210 second=221 amount=-1 -kerning first=210 second=89 amount=-1 -kerning first=210 second=88 amount=-1 -kerning first=210 second=84 amount=-1 -kerning first=79 second=44 amount=-1 -kerning first=79 second=221 amount=-1 -kerning first=79 second=89 amount=-1 -kerning first=79 second=88 amount=-1 -kerning first=79 second=84 amount=-1 -kerning first=76 second=255 amount=-1 -kerning first=76 second=253 amount=-1 -kerning first=76 second=121 amount=-1 -kerning first=76 second=119 amount=-1 -kerning first=76 second=118 amount=-1 -kerning first=76 second=221 amount=-2 -kerning first=76 second=89 amount=-2 -kerning first=76 second=87 amount=-2 -kerning first=76 second=86 amount=-2 -kerning first=76 second=220 amount=-1 -kerning first=76 second=219 amount=-1 -kerning first=76 second=218 amount=-1 -kerning first=76 second=217 amount=-1 -kerning first=76 second=85 amount=-1 -kerning first=76 second=84 amount=-2 -kerning first=76 second=81 amount=-1 -kerning first=76 second=214 amount=-1 -kerning first=76 second=213 amount=-1 -kerning first=76 second=212 amount=-1 -kerning first=76 second=211 amount=-1 -kerning first=76 second=210 amount=-1 -kerning first=76 second=79 amount=-1 -kerning first=76 second=71 amount=-1 -kerning first=76 second=198 amount=1 -kerning first=75 second=255 amount=-1 -kerning first=75 second=253 amount=-1 -kerning first=75 second=121 amount=-1 -kerning first=75 second=119 amount=-1 -kerning first=75 second=118 amount=-1 -kerning first=75 second=231 amount=-1 -kerning first=75 second=99 amount=-1 -kerning first=75 second=81 amount=-1 -kerning first=75 second=214 amount=-1 -kerning first=75 second=213 amount=-1 -kerning first=75 second=212 amount=-1 -kerning first=75 second=211 amount=-1 -kerning first=75 second=210 amount=-1 -kerning first=75 second=79 amount=-1 -kerning first=75 second=71 amount=-1 -kerning first=75 second=199 amount=-1 -kerning first=75 second=67 amount=-1 -kerning first=70 second=47 amount=-1 -kerning first=70 second=46 amount=-2 -kerning first=70 second=44 amount=-3 -kerning first=70 second=230 amount=-1 -kerning first=70 second=229 amount=-1 -kerning first=70 second=228 amount=-1 -kerning first=70 second=227 amount=-1 -kerning first=70 second=226 amount=-1 -kerning first=70 second=225 amount=-1 -kerning first=70 second=224 amount=-1 -kerning first=70 second=97 amount=-1 -kerning first=70 second=74 amount=-1 -kerning first=70 second=198 amount=-1 -kerning first=70 second=197 amount=-1 -kerning first=70 second=196 amount=-1 -kerning first=70 second=195 amount=-1 -kerning first=70 second=194 amount=-1 -kerning first=70 second=193 amount=-1 -kerning first=70 second=192 amount=-1 -kerning first=70 second=65 amount=-1 -kerning first=203 second=255 amount=-1 -kerning first=203 second=253 amount=-1 -kerning first=203 second=121 amount=-1 -kerning first=203 second=118 amount=-1 -kerning first=203 second=102 amount=-1 -kerning first=202 second=255 amount=-1 -kerning first=202 second=253 amount=-1 -kerning first=202 second=121 amount=-1 -kerning first=202 second=118 amount=-1 -kerning first=202 second=102 amount=-1 -kerning first=201 second=255 amount=-1 -kerning first=201 second=253 amount=-1 -kerning first=201 second=121 amount=-1 -kerning first=201 second=118 amount=-1 -kerning first=201 second=102 amount=-1 -kerning first=200 second=255 amount=-1 -kerning first=200 second=253 amount=-1 -kerning first=200 second=121 amount=-1 -kerning first=200 second=118 amount=-1 -kerning first=200 second=102 amount=-1 -kerning first=69 second=255 amount=-1 -kerning first=69 second=253 amount=-1 -kerning first=69 second=121 amount=-1 -kerning first=69 second=118 amount=-1 -kerning first=69 second=102 amount=-1 -kerning first=208 second=46 amount=-1 -kerning first=208 second=44 amount=-1 -kerning first=68 second=46 amount=-1 -kerning first=68 second=44 amount=-1 -kerning first=197 second=84 amount=-2 -kerning first=66 second=221 amount=-1 -kerning first=66 second=89 amount=-1 -kerning first=66 second=88 amount=-1 -kerning first=66 second=84 amount=-1 -kerning first=198 second=255 amount=-1 -kerning first=198 second=253 amount=-1 -kerning first=198 second=121 amount=-1 -kerning first=198 second=118 amount=-1 -kerning first=198 second=102 amount=-1 -kerning first=197 second=63 amount=-1 -kerning first=197 second=255 amount=-1 -kerning first=197 second=253 amount=-1 -kerning first=197 second=121 amount=-1 -kerning first=197 second=86 amount=-1 -kerning first=197 second=87 amount=-1 -kerning first=197 second=116 amount=-1 -kerning first=197 second=221 amount=-2 -kerning first=197 second=89 amount=-2 diff --git a/External tools/Myra.1.2.1.0/Assets/fonts/calibri32_0.png b/External tools/Myra.1.2.1.0/Assets/fonts/calibri32_0.png deleted file mode 100644 index 686ae0f269f6d32b2781bf7f8f80e0c1aeec2c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16177 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 UCGW3-QFus8P5(}rif!os1FQ$sv;Y7A diff --git a/External tools/Myra.1.2.1.0/Assets/fonts/comicSans48.fnt b/External tools/Myra.1.2.1.0/Assets/fonts/comicSans48.fnt deleted file mode 100644 index 0ba8894..0000000 --- a/External tools/Myra.1.2.1.0/Assets/fonts/comicSans48.fnt +++ /dev/null @@ -1,195 +0,0 @@ -info face="Comic Sans MS" size=48 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0 -common lineHeight=47 base=37 scaleW=512 scaleH=512 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0 -page id=0 file="comicSans48_0.png" -chars count=191 -char id=32 x=507 y=30 width=3 height=1 xoffset=-1 yoffset=46 xadvance=10 page=0 chnl=15 -char id=33 x=341 y=67 width=5 height=28 xoffset=1 yoffset=10 xadvance=8 page=0 chnl=15 -char id=34 x=269 y=172 width=11 height=11 xoffset=1 yoffset=11 xadvance=14 page=0 chnl=15 -char id=35 x=293 y=97 width=29 height=26 xoffset=0 yoffset=11 xadvance=29 page=0 chnl=15 -char id=36 x=441 y=0 width=20 height=34 xoffset=1 yoffset=9 xadvance=24 page=0 chnl=15 -char id=37 x=439 y=65 width=26 height=27 xoffset=2 yoffset=10 xadvance=28 page=0 chnl=15 -char id=38 x=49 y=74 width=22 height=28 xoffset=0 yoffset=11 xadvance=22 page=0 chnl=15 -char id=39 x=308 y=170 width=5 height=9 xoffset=4 yoffset=9 xadvance=13 page=0 chnl=15 -char id=40 x=82 y=38 width=11 height=34 xoffset=1 yoffset=10 xadvance=12 page=0 chnl=15 -char id=41 x=94 y=38 width=11 height=34 xoffset=1 yoffset=10 xadvance=12 page=0 chnl=15 -char id=42 x=110 y=181 width=17 height=14 xoffset=0 yoffset=10 xadvance=18 page=0 chnl=15 -char id=43 x=175 y=179 width=16 height=13 xoffset=0 yoffset=20 xadvance=16 page=0 chnl=15 -char id=44 x=370 y=168 width=6 height=8 xoffset=3 yoffset=35 xadvance=9 page=0 chnl=15 -char id=45 x=465 y=165 width=12 height=3 xoffset=1 yoffset=26 xadvance=13 page=0 chnl=15 -char id=46 x=383 y=168 width=5 height=4 xoffset=2 yoffset=35 xadvance=8 page=0 chnl=15 -char id=47 x=284 y=68 width=16 height=28 xoffset=1 yoffset=11 xadvance=17 page=0 chnl=15 -char id=48 x=112 y=130 width=21 height=26 xoffset=0 yoffset=11 xadvance=21 page=0 chnl=15 -char id=49 x=497 y=93 width=12 height=26 xoffset=2 yoffset=11 xadvance=15 page=0 chnl=15 -char id=50 x=330 y=123 width=17 height=26 xoffset=2 yoffset=11 xadvance=21 page=0 chnl=15 -char id=51 x=348 y=123 width=17 height=26 xoffset=2 yoffset=11 xadvance=21 page=0 chnl=15 -char id=52 x=134 y=128 width=21 height=26 xoffset=0 yoffset=11 xadvance=21 page=0 chnl=15 -char id=53 x=177 y=128 width=19 height=26 xoffset=1 yoffset=11 xadvance=21 page=0 chnl=15 -char id=54 x=255 y=125 width=18 height=26 xoffset=1 yoffset=11 xadvance=21 page=0 chnl=15 -char id=55 x=90 y=130 width=21 height=26 xoffset=0 yoffset=11 xadvance=21 page=0 chnl=15 -char id=56 x=197 y=127 width=19 height=26 xoffset=1 yoffset=11 xadvance=21 page=0 chnl=15 -char id=57 x=115 y=71 width=19 height=28 xoffset=1 yoffset=11 xadvance=21 page=0 chnl=15 -char id=58 x=32 y=185 width=6 height=17 xoffset=2 yoffset=18 xadvance=10 page=0 chnl=15 -char id=59 x=202 y=154 width=7 height=22 xoffset=1 yoffset=18 xadvance=10 page=0 chnl=15 -char id=60 x=140 y=181 width=11 height=14 xoffset=0 yoffset=20 xadvance=13 page=0 chnl=15 -char id=61 x=239 y=174 width=14 height=12 xoffset=1 yoffset=20 xadvance=17 page=0 chnl=15 -char id=62 x=56 y=184 width=13 height=16 xoffset=0 yoffset=18 xadvance=13 page=0 chnl=15 -char id=63 x=456 y=120 width=16 height=26 xoffset=0 yoffset=12 xadvance=17 page=0 chnl=15 -char id=64 x=423 y=35 width=27 height=29 xoffset=1 yoffset=10 xadvance=30 page=0 chnl=15 -char id=65 x=0 y=132 width=22 height=26 xoffset=1 yoffset=11 xadvance=24 page=0 chnl=15 -char id=66 x=19 y=104 width=18 height=27 xoffset=2 yoffset=11 xadvance=21 page=0 chnl=15 -char id=67 x=466 y=65 width=20 height=27 xoffset=1 yoffset=10 xadvance=20 page=0 chnl=15 -char id=68 x=26 y=75 width=22 height=28 xoffset=2 yoffset=11 xadvance=25 page=0 chnl=15 -char id=69 x=95 y=73 width=19 height=28 xoffset=2 yoffset=11 xadvance=21 page=0 chnl=15 -char id=70 x=135 y=71 width=19 height=28 xoffset=2 yoffset=11 xadvance=21 page=0 chnl=15 -char id=71 x=23 y=132 width=22 height=26 xoffset=1 yoffset=11 xadvance=23 page=0 chnl=15 -char id=72 x=450 y=93 width=23 height=26 xoffset=2 yoffset=11 xadvance=26 page=0 chnl=15 -char id=73 x=402 y=121 width=17 height=26 xoffset=1 yoffset=11 xadvance=19 page=0 chnl=15 -char id=74 x=72 y=73 width=22 height=28 xoffset=1 yoffset=11 xadvance=23 page=0 chnl=15 -char id=75 x=174 y=70 width=18 height=28 xoffset=3 yoffset=11 xadvance=21 page=0 chnl=15 -char id=76 x=212 y=69 width=18 height=28 xoffset=1 yoffset=11 xadvance=19 page=0 chnl=15 -char id=77 x=382 y=66 width=28 height=27 xoffset=1 yoffset=11 xadvance=29 page=0 chnl=15 -char id=78 x=349 y=94 width=25 height=26 xoffset=1 yoffset=11 xadvance=27 page=0 chnl=15 -char id=79 x=323 y=96 width=25 height=26 xoffset=1 yoffset=11 xadvance=27 page=0 chnl=15 -char id=80 x=420 y=121 width=17 height=26 xoffset=1 yoffset=11 xadvance=18 page=0 chnl=15 -char id=81 x=106 y=37 width=29 height=33 xoffset=1 yoffset=11 xadvance=30 page=0 chnl=15 -char id=82 x=156 y=128 width=20 height=26 xoffset=1 yoffset=11 xadvance=21 page=0 chnl=15 -char id=83 x=473 y=120 width=21 height=25 xoffset=2 yoffset=13 xadvance=24 page=0 chnl=15 -char id=84 x=375 y=94 width=24 height=26 xoffset=1 yoffset=11 xadvance=23 page=0 chnl=15 -char id=85 x=474 y=93 width=22 height=26 xoffset=2 yoffset=11 xadvance=25 page=0 chnl=15 -char id=86 x=46 y=132 width=21 height=26 xoffset=2 yoffset=11 xadvance=22 page=0 chnl=15 -char id=87 x=347 y=66 width=34 height=27 xoffset=2 yoffset=11 xadvance=35 page=0 chnl=15 -char id=88 x=425 y=93 width=24 height=26 xoffset=0 yoffset=11 xadvance=25 page=0 chnl=15 -char id=89 x=68 y=131 width=21 height=26 xoffset=0 yoffset=12 xadvance=22 page=0 chnl=15 -char id=90 x=400 y=94 width=24 height=26 xoffset=0 yoffset=11 xadvance=24 page=0 chnl=15 -char id=91 x=238 y=36 width=11 height=32 xoffset=2 yoffset=12 xadvance=13 page=0 chnl=15 -char id=92 x=318 y=67 width=16 height=28 xoffset=2 yoffset=11 xadvance=19 page=0 chnl=15 -char id=93 x=226 y=36 width=11 height=32 xoffset=2 yoffset=12 xadvance=13 page=0 chnl=15 -char id=94 x=281 y=171 width=15 height=9 xoffset=3 yoffset=10 xadvance=19 page=0 chnl=15 -char id=95 x=413 y=166 width=23 height=3 xoffset=-1 yoffset=40 xadvance=21 page=0 chnl=15 -char id=96 x=361 y=169 width=8 height=8 xoffset=2 yoffset=10 xadvance=19 page=0 chnl=15 -char id=97 x=460 y=147 width=17 height=17 xoffset=0 yoffset=20 xadvance=17 page=0 chnl=15 -char id=98 x=114 y=102 width=17 height=27 xoffset=2 yoffset=10 xadvance=20 page=0 chnl=15 -char id=99 x=0 y=185 width=15 height=17 xoffset=1 yoffset=20 xadvance=17 page=0 chnl=15 -char id=100 x=38 y=104 width=18 height=27 xoffset=1 yoffset=10 xadvance=20 page=0 chnl=15 -char id=101 x=405 y=148 width=18 height=17 xoffset=1 yoffset=20 xadvance=19 page=0 chnl=15 -char id=102 x=494 y=35 width=16 height=29 xoffset=0 yoffset=10 xadvance=17 page=0 chnl=15 -char id=103 x=366 y=121 width=17 height=26 xoffset=0 yoffset=20 xadvance=18 page=0 chnl=15 -char id=104 x=132 y=100 width=17 height=27 xoffset=2 yoffset=10 xadvance=20 page=0 chnl=15 -char id=105 x=101 y=157 width=6 height=24 xoffset=2 yoffset=13 xadvance=10 page=0 chnl=15 -char id=106 x=40 y=39 width=13 height=34 xoffset=-1 yoffset=13 xadvance=14 page=0 chnl=15 -char id=107 x=150 y=100 width=17 height=27 xoffset=2 yoffset=11 xadvance=18 page=0 chnl=15 -char id=108 x=335 y=67 width=5 height=28 xoffset=2 yoffset=10 xadvance=9 page=0 chnl=15 -char id=109 x=276 y=152 width=25 height=18 xoffset=1 yoffset=20 xadvance=26 page=0 chnl=15 -char id=110 x=442 y=147 width=17 height=17 xoffset=1 yoffset=20 xadvance=18 page=0 chnl=15 -char id=111 x=495 y=146 width=16 height=17 xoffset=1 yoffset=20 xadvance=18 page=0 chnl=15 -char id=112 x=301 y=68 width=16 height=28 xoffset=1 yoffset=19 xadvance=18 page=0 chnl=15 -char id=113 x=312 y=124 width=17 height=26 xoffset=0 yoffset=20 xadvance=18 page=0 chnl=15 -char id=114 x=16 y=185 width=15 height=17 xoffset=1 yoffset=20 xadvance=16 page=0 chnl=15 -char id=115 x=227 y=154 width=16 height=19 xoffset=0 yoffset=18 xadvance=17 page=0 chnl=15 -char id=116 x=145 y=155 width=16 height=23 xoffset=0 yoffset=14 xadvance=16 page=0 chnl=15 -char id=117 x=478 y=146 width=16 height=17 xoffset=1 yoffset=20 xadvance=18 page=0 chnl=15 -char id=118 x=345 y=150 width=17 height=18 xoffset=0 yoffset=20 xadvance=17 page=0 chnl=15 -char id=119 x=363 y=150 width=22 height=17 xoffset=1 yoffset=20 xadvance=23 page=0 chnl=15 -char id=120 x=324 y=151 width=20 height=18 xoffset=0 yoffset=20 xadvance=20 page=0 chnl=15 -char id=121 x=487 y=65 width=19 height=27 xoffset=-1 yoffset=20 xadvance=18 page=0 chnl=15 -char id=122 x=424 y=148 width=17 height=17 xoffset=1 yoffset=20 xadvance=18 page=0 chnl=15 -char id=123 x=68 y=38 width=13 height=34 xoffset=-1 yoffset=10 xadvance=12 page=0 chnl=15 -char id=124 x=502 y=0 width=4 height=34 xoffset=5 yoffset=9 xadvance=14 page=0 chnl=15 -char id=125 x=54 y=39 width=13 height=34 xoffset=-1 yoffset=10 xadvance=12 page=0 chnl=15 -char id=126 x=314 y=170 width=19 height=8 xoffset=1 yoffset=21 xadvance=19 page=0 chnl=15 -char id=160 x=507 y=28 width=3 height=1 xoffset=-1 yoffset=46 xadvance=10 page=0 chnl=15 -char id=161 x=287 y=97 width=5 height=27 xoffset=1 yoffset=11 xadvance=8 page=0 chnl=15 -char id=162 x=193 y=70 width=18 height=28 xoffset=1 yoffset=8 xadvance=21 page=0 chnl=15 -char id=163 x=317 y=36 width=25 height=30 xoffset=0 yoffset=10 xadvance=27 page=0 chnl=15 -char id=164 x=302 y=151 width=21 height=18 xoffset=0 yoffset=16 xadvance=21 page=0 chnl=15 -char id=165 x=81 y=158 width=19 height=24 xoffset=2 yoffset=13 xadvance=22 page=0 chnl=15 -char id=166 x=507 y=0 width=4 height=27 xoffset=5 yoffset=10 xadvance=14 page=0 chnl=15 -char id=167 x=236 y=126 width=18 height=26 xoffset=1 yoffset=11 xadvance=22 page=0 chnl=15 -char id=168 x=437 y=166 width=14 height=3 xoffset=3 yoffset=14 xadvance=19 page=0 chnl=15 -char id=169 x=177 y=155 width=24 height=22 xoffset=1 yoffset=10 xadvance=26 page=0 chnl=15 -char id=170 x=225 y=174 width=13 height=13 xoffset=1 yoffset=9 xadvance=16 page=0 chnl=15 -char id=171 x=90 y=183 width=19 height=14 xoffset=0 yoffset=20 xadvance=20 page=0 chnl=15 -char id=172 x=334 y=170 width=16 height=8 xoffset=0 yoffset=25 xadvance=16 page=0 chnl=15 -char id=173 x=452 y=165 width=12 height=3 xoffset=1 yoffset=26 xadvance=13 page=0 chnl=15 -char id=174 x=35 y=159 width=24 height=24 xoffset=1 yoffset=10 xadvance=26 page=0 chnl=15 -char id=175 x=389 y=166 width=23 height=3 xoffset=-1 yoffset=6 xadvance=21 page=0 chnl=15 -char id=176 x=254 y=172 width=14 height=12 xoffset=0 yoffset=9 xadvance=14 page=0 chnl=15 -char id=177 x=210 y=154 width=16 height=19 xoffset=0 yoffset=20 xadvance=16 page=0 chnl=15 -char id=178 x=128 y=181 width=11 height=14 xoffset=6 yoffset=8 xadvance=22 page=0 chnl=15 -char id=179 x=164 y=179 width=10 height=14 xoffset=6 yoffset=9 xadvance=22 page=0 chnl=15 -char id=180 x=351 y=169 width=9 height=8 xoffset=3 yoffset=10 xadvance=17 page=0 chnl=15 -char id=181 x=60 y=159 width=20 height=24 xoffset=0 yoffset=20 xadvance=18 page=0 chnl=15 -char id=182 x=451 y=35 width=23 height=29 xoffset=0 yoffset=11 xadvance=24 page=0 chnl=15 -char id=183 x=377 y=168 width=5 height=4 xoffset=2 yoffset=24 xadvance=8 page=0 chnl=15 -char id=184 x=297 y=171 width=10 height=9 xoffset=5 yoffset=35 xadvance=19 page=0 chnl=15 -char id=185 x=152 y=179 width=11 height=14 xoffset=6 yoffset=8 xadvance=22 page=0 chnl=15 -char id=186 x=192 y=178 width=16 height=13 xoffset=0 yoffset=9 xadvance=16 page=0 chnl=15 -char id=187 x=70 y=184 width=19 height=14 xoffset=0 yoffset=20 xadvance=20 page=0 chnl=15 -char id=188 x=20 y=40 width=19 height=34 xoffset=2 yoffset=9 xadvance=22 page=0 chnl=15 -char id=189 x=0 y=40 width=19 height=34 xoffset=2 yoffset=9 xadvance=22 page=0 chnl=15 -char id=190 x=482 y=0 width=19 height=34 xoffset=2 yoffset=9 xadvance=22 page=0 chnl=15 -char id=191 x=438 y=120 width=17 height=26 xoffset=0 yoffset=12 xadvance=17 page=0 chnl=15 -char id=192 x=241 y=0 width=22 height=35 xoffset=1 yoffset=2 xadvance=24 page=0 chnl=15 -char id=193 x=418 y=0 width=22 height=34 xoffset=1 yoffset=3 xadvance=24 page=0 chnl=15 -char id=194 x=218 y=0 width=22 height=35 xoffset=1 yoffset=2 xadvance=24 page=0 chnl=15 -char id=195 x=136 y=37 width=24 height=33 xoffset=1 yoffset=4 xadvance=24 page=0 chnl=15 -char id=196 x=343 y=35 width=22 height=30 xoffset=1 yoffset=7 xadvance=24 page=0 chnl=15 -char id=197 x=161 y=36 width=22 height=33 xoffset=1 yoffset=4 xadvance=24 page=0 chnl=15 -char id=198 x=383 y=35 width=39 height=29 xoffset=0 yoffset=10 xadvance=38 page=0 chnl=15 -char id=199 x=205 y=36 width=20 height=32 xoffset=1 yoffset=11 xadvance=20 page=0 chnl=15 -char id=200 x=40 y=0 width=19 height=38 xoffset=2 yoffset=1 xadvance=21 page=0 chnl=15 -char id=201 x=20 y=0 width=19 height=39 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=15 -char id=202 x=0 y=0 width=19 height=39 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=15 -char id=203 x=462 y=0 width=19 height=34 xoffset=2 yoffset=5 xadvance=21 page=0 chnl=15 -char id=204 x=287 y=0 width=17 height=35 xoffset=1 yoffset=2 xadvance=19 page=0 chnl=15 -char id=205 x=305 y=0 width=17 height=35 xoffset=1 yoffset=2 xadvance=19 page=0 chnl=15 -char id=206 x=125 y=0 width=17 height=36 xoffset=1 yoffset=1 xadvance=19 page=0 chnl=15 -char id=207 x=299 y=36 width=17 height=31 xoffset=1 yoffset=6 xadvance=19 page=0 chnl=15 -char id=208 x=0 y=75 width=25 height=28 xoffset=-1 yoffset=11 xadvance=25 page=0 chnl=15 -char id=209 x=340 y=0 width=25 height=34 xoffset=1 yoffset=3 xadvance=27 page=0 chnl=15 -char id=210 x=169 y=0 width=25 height=35 xoffset=1 yoffset=2 xadvance=27 page=0 chnl=15 -char id=211 x=392 y=0 width=25 height=34 xoffset=1 yoffset=3 xadvance=27 page=0 chnl=15 -char id=212 x=143 y=0 width=25 height=35 xoffset=1 yoffset=2 xadvance=27 page=0 chnl=15 -char id=213 x=366 y=0 width=25 height=34 xoffset=1 yoffset=3 xadvance=27 page=0 chnl=15 -char id=214 x=250 y=36 width=25 height=31 xoffset=1 yoffset=6 xadvance=27 page=0 chnl=15 -char id=215 x=209 y=177 width=15 height=13 xoffset=0 yoffset=20 xadvance=16 page=0 chnl=15 -char id=216 x=411 y=65 width=27 height=27 xoffset=1 yoffset=11 xadvance=27 page=0 chnl=15 -char id=217 x=195 y=0 width=22 height=35 xoffset=2 yoffset=2 xadvance=25 page=0 chnl=15 -char id=218 x=264 y=0 width=22 height=35 xoffset=2 yoffset=2 xadvance=25 page=0 chnl=15 -char id=219 x=102 y=0 width=22 height=36 xoffset=2 yoffset=1 xadvance=25 page=0 chnl=15 -char id=220 x=276 y=36 width=22 height=31 xoffset=2 yoffset=6 xadvance=25 page=0 chnl=15 -char id=221 x=60 y=0 width=21 height=37 xoffset=0 yoffset=1 xadvance=22 page=0 chnl=15 -char id=222 x=384 y=121 width=17 height=26 xoffset=1 yoffset=11 xadvance=18 page=0 chnl=15 -char id=223 x=366 y=35 width=16 height=30 xoffset=0 yoffset=10 xadvance=16 page=0 chnl=15 -char id=224 x=0 y=104 width=18 height=27 xoffset=0 yoffset=10 xadvance=17 page=0 chnl=15 -char id=225 x=76 y=102 width=18 height=27 xoffset=0 yoffset=10 xadvance=17 page=0 chnl=15 -char id=226 x=231 y=69 width=18 height=28 xoffset=0 yoffset=9 xadvance=17 page=0 chnl=15 -char id=227 x=217 y=127 width=18 height=26 xoffset=0 yoffset=11 xadvance=17 page=0 chnl=15 -char id=228 x=108 y=157 width=18 height=23 xoffset=0 yoffset=14 xadvance=17 page=0 chnl=15 -char id=229 x=475 y=35 width=18 height=29 xoffset=0 yoffset=8 xadvance=17 page=0 chnl=15 -char id=230 x=244 y=153 width=31 height=18 xoffset=0 yoffset=20 xadvance=31 page=0 chnl=15 -char id=231 x=19 y=159 width=15 height=25 xoffset=1 yoffset=20 xadvance=17 page=0 chnl=15 -char id=232 x=57 y=103 width=18 height=27 xoffset=1 yoffset=10 xadvance=19 page=0 chnl=15 -char id=233 x=95 y=102 width=18 height=27 xoffset=1 yoffset=10 xadvance=19 page=0 chnl=15 -char id=234 x=155 y=71 width=18 height=28 xoffset=1 yoffset=9 xadvance=19 page=0 chnl=15 -char id=235 x=0 y=159 width=18 height=25 xoffset=1 yoffset=12 xadvance=19 page=0 chnl=15 -char id=236 x=278 y=97 width=8 height=27 xoffset=0 yoffset=10 xadvance=10 page=0 chnl=15 -char id=237 x=268 y=97 width=9 height=27 xoffset=1 yoffset=10 xadvance=10 page=0 chnl=15 -char id=238 x=252 y=97 width=15 height=27 xoffset=-3 yoffset=10 xadvance=10 page=0 chnl=15 -char id=239 x=162 y=155 width=14 height=23 xoffset=-2 yoffset=14 xadvance=10 page=0 chnl=15 -char id=240 x=236 y=98 width=15 height=27 xoffset=2 yoffset=10 xadvance=17 page=0 chnl=15 -char id=241 x=274 y=125 width=18 height=26 xoffset=1 yoffset=11 xadvance=18 page=0 chnl=15 -char id=242 x=168 y=100 width=16 height=27 xoffset=1 yoffset=10 xadvance=18 page=0 chnl=15 -char id=243 x=185 y=99 width=16 height=27 xoffset=1 yoffset=10 xadvance=18 page=0 chnl=15 -char id=244 x=267 y=68 width=16 height=28 xoffset=1 yoffset=9 xadvance=18 page=0 chnl=15 -char id=245 x=293 y=124 width=18 height=26 xoffset=1 yoffset=11 xadvance=18 page=0 chnl=15 -char id=246 x=127 y=157 width=17 height=23 xoffset=1 yoffset=14 xadvance=18 page=0 chnl=15 -char id=247 x=39 y=184 width=16 height=16 xoffset=0 yoffset=18 xadvance=16 page=0 chnl=15 -char id=248 x=386 y=148 width=18 height=17 xoffset=0 yoffset=20 xadvance=18 page=0 chnl=15 -char id=249 x=219 y=98 width=16 height=27 xoffset=1 yoffset=10 xadvance=18 page=0 chnl=15 -char id=250 x=202 y=99 width=16 height=27 xoffset=1 yoffset=10 xadvance=18 page=0 chnl=15 -char id=251 x=250 y=68 width=16 height=28 xoffset=1 yoffset=9 xadvance=18 page=0 chnl=15 -char id=252 x=495 y=120 width=16 height=25 xoffset=1 yoffset=12 xadvance=18 page=0 chnl=15 -char id=253 x=82 y=0 width=19 height=37 xoffset=-1 yoffset=10 xadvance=18 page=0 chnl=15 -char id=254 x=323 y=0 width=16 height=35 xoffset=1 yoffset=12 xadvance=18 page=0 chnl=15 -char id=255 x=184 y=36 width=20 height=33 xoffset=-1 yoffset=14 xadvance=18 page=0 chnl=15 diff --git a/External tools/Myra.1.2.1.0/Assets/fonts/comicSans48_0.png b/External tools/Myra.1.2.1.0/Assets/fonts/comicSans48_0.png deleted file mode 100644 index c34875ba28c6f3d5899a30e611af9bdbb8786e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30386 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 BRg(Y! diff --git a/External tools/Myra.1.2.1.0/Assets/images/LogoOnly_64px.png b/External tools/Myra.1.2.1.0/Assets/images/LogoOnly_64px.png deleted file mode 100644 index f772ceae254b04e17c371e7c8a2a9f4283da1da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23520 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 diff --git a/External tools/Myra.1.2.1.0/Cyotek.Drawing.BitmapFont.dll b/External tools/Myra.1.2.1.0/Cyotek.Drawing.BitmapFont.dll deleted file mode 100644 index c1ac3099a5ff8d8dbe59b5dcb23ede0a77b44401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41800 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%0AfVDgmS5O?d(($&F0 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 OZX9L)|IdFv4g60G9l7uT diff --git a/External tools/Myra.1.2.1.0/MonoGame.Framework.dll b/External tools/Myra.1.2.1.0/MonoGame.Framework.dll deleted file mode 100644 index 9625655bbc01f764e866110065c615db737dbe4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1489920 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 z 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 (5h*_Q`fC=NM5&kuQu#5zZT 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�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

$?kFy12E04V#5|E?FFN^-@{IWH^ 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

4^;El^XtxvjbXxs#d``-Bdat9)dihMcf4a3B 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

@10XDn7%%_r902<%OgovRQyb@^`HV*2`O{Jm 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 diff --git a/External tools/Myra.1.2.1.0/MonoGame.Framework.dll.config b/External tools/Myra.1.2.1.0/MonoGame.Framework.dll.config deleted file mode 100644 index 09710ae..0000000 --- a/External tools/Myra.1.2.1.0/MonoGame.Framework.dll.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/External tools/Myra.1.2.1.0/Myra.Samples.AllWidgets.exe b/External tools/Myra.1.2.1.0/Myra.Samples.AllWidgets.exe deleted file mode 100644 index 76d1d5435f29658e22ef12817930d0d9db56497e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 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 diff --git a/External tools/Myra.1.2.1.0/Myra.Samples.DebugConsole.exe b/External tools/Myra.1.2.1.0/Myra.Samples.DebugConsole.exe deleted file mode 100644 index 676ed3cfefc3ec6a27dd675d801e94ff5e2c4fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10752 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 W^AYm^Hr!?mc{%5eA3q;C5Bwj-Q&VjK diff --git a/External tools/Myra.1.2.1.0/Myra.Samples.GridContainer.exe b/External tools/Myra.1.2.1.0/Myra.Samples.GridContainer.exe deleted file mode 100644 index 3c75f3f8e1f97476d5edd3aa5b82f5acf1bf1042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12800 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 diff --git a/External tools/Myra.1.2.1.0/Myra.Samples.NonModalWindows.exe b/External tools/Myra.1.2.1.0/Myra.Samples.NonModalWindows.exe deleted file mode 100644 index b86c9b51be99cb8355f96c99bd0c62e430e329e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12800 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 Q|5MY4cdFlB|Nk=ZpIj#wMF0Q* diff --git a/External tools/Myra.1.2.1.0/Myra.Samples.Notepad.exe b/External tools/Myra.1.2.1.0/Myra.Samples.Notepad.exe deleted file mode 100644 index ff20055afc8fd413155e2006e903995c45695a34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15360 zcmeHOdvqMtdH-g#8a-?aOMYR@V~~w4gtUG_u)*M!WMhFP*_JFq;#8j99qkU9omtP! zN?weKXi6LC2?3JOLrxOnkZ|JD|1+x|K!GNm?O7&&d zD<0-er)HYyB|5y0NCUhUvwb{6bZG};yt(HFy=MhcyWWHO4bWP(Ek(~X3B67|1fljb zAf3`ra~Ys0`JD!)X@GirBzVE`ulQLk0d~f*N*#%Y;q%5e9G>{9S#3z`tBDU|B2|jEVtV1{<`R zTmo-lSgAzd>ltoPNsA2SG8n5575MEn)YA<6t7?k%S4*{_m36kXmDRDdl_g)?YAkM0 z@-J>}S=^wcR;|j$2zcm%%b-#hNZ|Wx0x8rsLFF>|a2-|Pb2Ze{49BuF6*X7z4IqST zpoTN;LWRrqK3pEY$MxV_bqWmo2nuwG%9QpRT4f4uRb($kZMm-MaN+hd@N3A#>YV~AlZVz5crdA{_2iA%~0<-!ulI! zI5)I5)Z3)qd!>FFF`eq2ZBmthdU~y%qAaE^4_=3Lf zi~_IW+4OKTzRn$7j{_Iu;2=x;*d@`2B-qfW$BeQ!oIw|yhs(bKb9zsjrP+!i_$mCPXB>Q79bH zf=Z2W2RHBJ=5QCvYgDg)J=Ya={|400Kp0Tx(s<2)vl`)B(CpucLfN2+;IX_%=nQwG zQQ>ycYil6Y2E)f1)82c#GM(N7h7JEFZh9g1m74+d89|dygvi^oAGM3>lNEtbF`$vPs={(cpalhXhDZn^C$d$_ zSi3|pWVOYD)th3$xB-G8n=BAa@WdOs777;V_Z?uqMfYM7fyMC<`aQRyv-e>b=OD|} zGt9WRqww!wSSb33P-UOmuuUU)8gFGfLnKtl;*X&3`|U=bVfdq{ewXnyc%=@k)(&b1 zNSJ1fNhIH_-(PbF9{n^THl^k{45a=pUF89cO!-I9!U?O6WPS{T{G*I{S!454N%QWH zE~I+Zs9^W4Q`oA!ZyW@AIL9>7zH00ZQ90!-KplTWRLHXs^@u`UrlwXJPgL=kF23te zu%K)8(-Hxy=@_#p{+J-I+NKjEC#b$tKg}kWas8|yfp|!}iXG7!`=$S-UoNdJW zVu#>*9Ff>$j^93@$qrKOM`w4Xx21P(+qoV2gFVJ^k0>>+a zjIjw?I*c5>@z^*;2uZjBZM^N+Fan2u5Aa`c-+=3985s{i?annHYimQq(|>C_dE<)Z zfRKk+Mg|FvP6!*C#0QZj?Tmx5a`u5Q${56#d^0KRd{c}AL(qdw7Yu{`QOZBpe~5g& zo;{a-sb8Nm=+By_nhhF}(v`AZ$}Li!lk#PKs=1xon_q@AZPt$N)2fe3d zxV4?`N&QS~rzcu|MO`#cKLwp@Ft0%mN&PQdc*g&b@;kywmvD7b%6XkJ-;v^3E?|~+ zO0{-s22C2w!$Ufk-`2R?)i%|&bA{Wp;|E;8*+Gg$g8g#3^Sv!K$4clcUUD3Q*dk1yGvQ0=5 zY$Jv)6$tA*pjC94K-jebS_9h~^uyMNA;AsJT)y7KI;b>jSCFK(Q}|9!s%&x5v&`)12MEgHxPw)#n2Z0GOd~36GLO#c|ecH&~nV)LVp@V zt5O*p$B%DOG`|L#ZS;5yeFV@ldNPLQ0j;1<#?X5KT|&IMV_seW)Jgke=re#;(TG6b zr0=yJ*49uY(Bm}P{EW7iJ|&RS**f~%0_ZCOy^C`6HEkVz9UI3)yX)yM1bP<@(s^w? z{j8yH1N~RrH;O*2?a=TAI95{bHaIVAO>v8=?{4AxN2TQsPB#nM8*$!zy+>%C5Nd-` ze*~pYtKrTXU98?lPZ=8goV{l~%67UI~qL1~a9<;l1# zx2~j<^cYG_y9&|tVBCJR#YDW_r0t?AT2|84+Rt0|&~}a6AC;E-SHuxqoCp(mu} z30mEHfOcyqTSh3O@r)U5PJb({7HYe-`&){LN2Yv4+uL?8oy91`4a(m|{qtG|<WlOt3e;+xZ_5`@~wI}JM_OkXg%580*p$E0G)aSti%d!b{obUlt)@Nij@Bm5A(!I!=FKJI94!;z0__Y>K+pY~Zd%*dh=0JOv?rA%vozs4V_6x*0 z;k;IDo!8Q|j9x^!ie5&!fi9rjNV=Y;>*x^5o%A-8H&FrQAiW>u9a4_dS=8T-RpKc` z%eVAzNckfv*U-cCpR`FE&>Zbv5`*z<#%P2~?Rh|3%VZZ}bxKUlwiEgY-X2i`mIdaa)K z)~Zb8saEc70%uH3t=@F=ExDHy-k>{Gjhewil_E(TeL@S=TN zAGEx@YX<;tvpqX-a?+X!3L%;%Ew^G17A>z}=NsE^9`W-P*S>{Ds)3chEwIW(Cl~G* zN*^1hfr{hi@hx2=BZp|b8iLvM@EGw`V7!DZ^8?q(QfNn0!+AAe+$xn_J4}!I zkzKa(l*#AG%IBvhFf?X_xIW;Y8uJ<(8EMeu2h?IFi<{Q@MiX_#%~hpZ{ZRXE~TLVMB)9d0^W@gk>WPgKjcQX6y@F?1mCOL5Cm zjih-JD%oCzjV1s~JmExWK32|Kk*(^3mYb`%HIR{Rvr0C_x{x{=nZhWybHfDqp+ZvO zAtMzxa$Lt#5-@jkIPlAUz*ZM969R9<@~naluA%`ev`GnW)1Y4}gMJ{+09Nvu2>an| zB?5|_trQBZn|d3QDrMcO2vBdHumULi050F{IX{@GcO>{M!=xRAU}1r2ZiM;xoBwz6R^B$y(4xB zX^)&N6dyJ8&T{6$TV#P@u5y@saoqCbZKvfPC0dY%c>W7)eAiX2}qL5j%9S?+j*84g<>nxK#Z z9EFBQ;s}Xp)YQi5PS_d_r8;6c3XWBh%z4zFj&oas!*k3ME4!XBX<`19-b~ogf286> z4PYkgR~q3_d#<5ZqGC+^EK~_u^3@%7m6J0Khe?fN^G;;Snp_8Mw~U|)XCl8$Q~9_u z=-O5Q6MK0(fSKfLVbW5O8!SlQi9sU_8i(0jcha%v0KgD_KnMN6xd)2_6pyTmkU<-( zyAGvu+?FIMR#+x{BM+!0e1hR5^Cu>Ns}(#ygo#6l5GKuu4=2fG9IFwsZy2W(I4XNb z2qQ0Cfym|+iq|4SLJ6^8?wXp4@Y9}h2V~Q*#&V+_q`RK<6#AV`9yuu_*dv5myqpyg zr#|JLN`Zb3***`9tZxN*HA09Tw6GGuzvHGvPwXkQ{}c*dTOcuVuTV<-JmWeA57?2c zZu`AiC-4=_?hvon)UbBbVc!8Z_a62As3x8`;Tsxc*eh2Q54AwW+)`5VdWlQL<@{XvH9IHUr!WU56H0S3;{t6&gk>l6ZpExf#FH zmZdL^Th;V}akv&-zj$1NP0KdZI9W7{v5j-#>Tb!H8s563X3}QLV4oY$dBx&c5twx<}wNscO1Do3DrFBKj znZ+MV#F~txpDr0iJ7brDmB;qoB;5Kg>#bv4JA$)kfL;?`(1>e_MN1gT5}Vlnf9%_z zSke3B$iSx`I_um-qyIoDQ`1_TOwyWB>Fi{%qrD~7wI6@OT_f!#t?8P7K9n;@$53C(OkL}`OVv}P=^fy!qoV^l;TkBnx9DA$#zQbm=lu6@Zt4INUGuM~-pf_5 zZYXI=!sb8YvaWOf$4V1FX3>^|rVe@a&T5mE9hk7AqxFmT9G_gj>jw{_bvHhH z@yXzGOgD6V-G$F`d|L52V}RSsyDV1H6&>vitm$H@ntG@MAH7wJUj@06uLmdewY;d0 z`riIiIa{^?6UD%v3pL=WgW<47m!(JdPtRMNPM&#{%7mqP( zJtlBhU}{d(6E^lsv|OVW>|$-+zEht@TaFEzhn#F+1yvIpXfxTT^_d4oGbWCCCT|sS z%8`-V(>v1J)7y~$aH3|Sh%k*-Uu+$~0a}xz?h0I3|Kd-+E-%+)eSgNpOExZV_1&tO z!-{GLo}D-6oTz9XR7*#n%sY+ak%@)GEF;l}rez}WV|!zktg4xJa15Mfppq+^{9*=%oMP!_nDysWAZdrkOl<^$1hafjU$JLHtbM*VPd}p9@w+EH?Sjg?*VLDdEU5H zKzR-q14T^FmUO&X-(@X;0~sDWNy2S`_XDQv`C@$l%oLarR4h;vX7Pd%A57CL+E=t= zFI??2ar(fhpidlX4hCX{%y|AB-tuDUcmoe2!XwN(!)I8tZ2P!rs9OX$*d6pS$7l{& zne3nZ<{0b{VwWO3Cx&DHhxZ}QLUvr`(d^sP_8bp_pTo=8KZFMd#tb6MV`5Mr5EF57 z>PjYY4yBWR?AmQ*FD9XkUDqlk$p#M2J5@}q3@YkK6w1V5hKlEBqo5MP^-LV$P3WkK z_M8Lb#PUODtRk;cvIBM;4k9}MUFclc#{l$4*!)&+lC&aT;UZ)~!Gf2t`A=3HTRB3( z_w$GdaWSYWD#9PkIooyn{QyD0#s|JMOk0>L4?oAPN>B}vnIu#|AMrnJ&BEERV?_|6 zp92bxm-odUOd{{(r7m$8LbLGF0BK@|&6X?T{v%YPaU8igbHZhmP%x2?oYkKNS4h;* zGUkPU_LsnRA5*a~sh5Wh{1OM7Uny`x!2CE-!8K+ace>)LJQw-C8>UUZ9Ah_5lnZT% zyQm?ULb4vN%n)0}D#z0n5JX%T;6m=q7Qv7y*qUaAxq?LO!qN(DKwj8Kk}Gm1yC!3> zaU}F{hyvFEWc1-KUOv_s_rp2}ZH{4Bgzi;Bix(TqV2>{Wk-vNs#~-X}k|jdhE}>H3yN$Ft zfLKdHQ3iV|J;6byv8cfZqDtNYDH*|nA&r?cuv%gZ4guSh$b};#pJNHBa8`18t;O6H zzuh{GF1aKVpX8hhD{+p@<9sA?lz9=wQCrcq%pBj4Lcz!Y`LO7eV<(1&C0LP4S=Kp796ORPd!r%*r|XZ_^dN-5;^3-obY%c+=Cq3D^tr?z0LEDMQCyzDRrv^q3r z1+#Xz#}p5VI6I3GBR@AIegrWbgaEYWDTCGsb2^4dI1fS(vSkSQ7;6XOMbH|uN1@2W z%~`k!v)%_Ly@FWRj^=n7kLI92NP(>ZG7b9yOu+RLHd9!&VvodPn}_po5F)+HrXaAP zJq)->@~LoD;c$^c*mh+!xaLu0T^Uv#EzJS zH-Vhv{2+v=2UXgI++_>PoZ=ZdNI5XCFW`?CGbkKRz`Bb!8MQr{tk&2kBwB&_a!B61 zp5Pi+mVVv>S#G5K4O)@aSk_SXos29zB0~~4kWEA?I=m1{+Dk$i9t`dAMiQP@+jsWG zsl}AstA@iL>WdTtCM;tghR_hhNiw%!b53QPD`K_XUwA$W_v4H~t*6_^v>D_Wdnd5ytd9-M(2j&sgG zyi&4^E>PH&SZzq}khSj^EmIc-kXBediOpUVxR#B6;8U3EcTg*JdTL?*N z$=X&WazGHqLaZPdlnvvR4(R>4qHWJ`sESizyBrlkw~QU4kA(wvfWyXl*hgB7Skug1 z9;*(EjF<%^n5+^$!hjfK09jQ86<%;a8HQTc3&-#yg86W>_#y(fO_ zi|<|Qls+jq+bH?lg}cvfAW)h9Ri)K%pKs?(-f`(e2)O% z!{;_|!=w7pb^w~l;M+n^9^VN+dGzytC2Fh9!*{D5=#9psS&rmZbpqH-lb@q_M^3BB z!gtdl-VI?H>vz+PmyAtgP9CdnVEI;e;SDY0Zo`dTo#rHH;-@uGWO?}6j!`@C;cwQ@ zQM}cpK^LqS#`Q3R+rasoojZ-ur|{tiH;15k2v9+&vG&VytBl`VVG-PfLw`hXlex!4 z;sSV7b0@ZCh;{$wkvx2gu{UcCpSD;x5+QV!hocWB3<{ z5ImOPMXq?zZyL8ePxKRwXH^gG7;nDyRLSKF3qIiN?Z!=Iw`qGhpLfc8yN^vA=)bWW z$0)2yczMIK_jXt9u>00qcr$r3Z)5qT1QR5@aBnx?N`+YUOIC<8e*B|$KQ0nvHPk`X~ z5T9?c14X&F+X{zqS2tq^-DbtX2?ZPCz1`E;gxIlALS*YjxJg*wx`6kax7L&Zgqyb} Y7Q%m~s69yX%K^N~0r=bJ|D6W@7sYa#x&QzG diff --git a/External tools/Myra.1.2.1.0/Myra.Samples.ObjectEditor.exe b/External tools/Myra.1.2.1.0/Myra.Samples.ObjectEditor.exe deleted file mode 100644 index 379de964d8128c58fa767d8626977cd648ae1c15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 diff --git a/External tools/Myra.1.2.1.0/Myra.dll b/External tools/Myra.1.2.1.0/Myra.dll deleted file mode 100644 index 6681c3b611459c46f16c6291603fb1ae892c85e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517120 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

fukAtyL|6{Tp~PG6g7Pduy(_EU4v zS3r+Er>DKYmEZF^QAJum^L3;)AS~rIXOB*C4n922j5_g97lo}y>z;%Uk2*CyJ+k^f zunC#J3(Wg}#1D9rX32gRmoBfuIOBI=!FU;0#!ag&*Nrz>aCyf}`bxgxqt@Cqe}G&4579661!hrNCB<;zEq8}?FVX2e&Z&|S$# zX2N=`S=T^ji`8`dy5Nm%>2$bN@`yD?!rRQS&}<)s-?ZmQG5n_e)$k*lj(<7w)Q3fw z*!Gh&pjg-Nm<9Jm!~;N_0Dd%+9z82SUn50~2s|r5PefDJV^eYzOO&+=zlO#QGTw}@&Kd3gFukA2l-^RKUWdEe2Z!=eSRl630SB4-Ev(hY+*Ep|MHzU z-)3l~tpP_;vaQ9fyJ353q7Q8N(q*xmWf%2Mwl6%?h^yCt^tEvZGZyEzV{8!nD410I z7I3le#jKi)AJAmTk|9?E3tbUIQioz-!wFBuMZe4@jPYFqz$p+A8ic(FVcMd?j0jBv z&>4|EV~=BN!|`K+0vI)+%P3R z8(r?j!5n-r8o1=tUyNG97o*F*fahRK`L8I^Lw$1%;=F`GnQu_ARH^KB4+YHrA^&ek zAd)R$^vV%=OhOn>vO;A1IgI+%wTT;%pE*Kh+t^X7H}wD8f(7X7y1_y#f10jYa8A@% zU)HubX?+-MH#ZD)bqsAv z&>a2R5!c3W&?)-P^{J6Xu~cDx*SE?^ch1UoHEByeMfhWCyy%0j; zJjUnvrOPU=3)j-NTT9HFHXI2r{2EQaWu0luODfK7*c_XylW{zqW~BFe$bKo`VX^rw zI%`yHkksRSh{4wc>kk9#cl5Bvg{K?C*L|LiuDNmC5U#l`>R0_;g^515Cc_J`%m?Fh z&htGvI)<@DJ-4>P8RpGg^H%k7*qHl1Qnx3~p`d#p5#9{Yuv{8Q$|hsujK79utI;e} zzN`6JUBhFiHM~=KgpTqBDe5eSfvVZ!0iY)YhzEfA1U#g!v*;5?-F&3K3o4@n9Y)&K zUjF*$0!oteLJHzx+idj7#GKkE6ME=AvXL&@M@~t%U9Se%i!AH$^?o197%nDX0}ltU zPVj2jZgw~7s|k~+ANEPlz#XGLIQ}?rwJ5|DA>f0O{vwb(0#hNn3@?GZ3Sqji@N_g1 z6DD~^0%8gw@y+Q37_+QqA&RzO8)qTX;{8k!pOciufut;yB=olS&XFB@*;-aTlHr;t(Jn0G5OR@c@983#B2R&@3XNzzDd- z5J5ZultO@b0O$_^;(>6eFE6K*@K^ad*dNOSWt2bVB6_>>8vF#$B0^y!gq53NcN6x( zX4p7kzio!uX~44hiO^d_*kB057IkGcDyGH~nJ<^fIKW>ADE6Vs=MwerupFhOcKOPB zV76VptsY3*<&TE}>|RS5e~$9q1YL9XVFZOUEyWSM`~;;do~!OY7$>`Uq6Q=e8v(20 z`?dmHO2qeF%IKxB;6g~E{9{m;X+o*fK>iRyirB1kl-MdRd;>jgaL8bDDsrjQjZ{LO zo*R(V%(J+}q;5Bi1;~lP94xTE76B*bpFr86{G1o| z!F?IzP`MRHP|>7nc^*oA4T$vN@$uULtYAwlRl{0X3_Y%p@J~_#oL68BNqzAux100@ zq<5Vf?#snM;0_X)0D-m&+5&b^y3G*l0LAWOi8d8Hk7$gs4uJD0q_zfGCPd3>7_7w- zAom)Q`y&$7P(83&wPWbyY4lk({}f@2IoaWaSFQ?nX%4=^FJ6#xw`x`)|bh4B>4rTfd5*6{TLE9vG zWm+QubhCIsro7j+_QZXxF{Fau<0oBcI{@uek){(}{s&15@7^brAv_(9yxLI?N-b%) zWEqqBH4aoqBzh)GwLMbrPA(>*RMAO!zlQQ+MCdhGvV#N2Z1uk(0&7Zv12OQx`9M5z zZxBNOYf_7ockIXw%ui&A;gYp^6r3&WhGJL1!3vO|jt##+Sz}`#kkttLr z=9HIGn!jebe}f-cHar5Wv}~F|3(m-LQK~rC!)i@14wyd|$2W^@CWKW-+!ziLpxVce zIs6hvAdj&v!rDe!Wt|4oGcU%oCU$TfFjBfdSJcn6qKMyMX3P<*_VlwJ3RoM(QTKD8 zw5anntQTNbEttP@PSO}q~x%YNzgc;Q4vCbMqOdabG zdg!rEBVBZ?GbPCK$^h{(gfR<}J)2Q6Q!t&{;SPk9AXcfwB?`7+G4pPmRubd8H$8E2zV@Us(L(Vg3 zqpDioN%OTYW-H`(>Gbp4Rvo?V4GSSDGtm9lj@!EE_FIA&}-5Q&fZRh$@{xzWL`q$xi()p(FU=!Eu zcY_|rIw(n0zwPSLAX7TrQN6}7o3H|o|b;w-XrrrVJJ$!sPkmg}3Sj`Vot)DhpOwp87 zFoOQ!%ya(zs*phS`2{_O(H3YJenyHB|<4H zl%y@$a@LW$j8-8>wS^O`8}vZcXtson5j8-YQx1pv))Dwhk8SmnMnAs2xPX z_Jxm5px1_eh-5)dBn@)Xut1J3$WZ|dCaVh1E15bn$_a98R`@^$$>pC#KX?cFLH{ZM z;lGpqUFv@w{kzrw2Kx7iU)F9!Pq1ER-BFiAy|2_xM8CLbiak>cqbfLI7h1S!EhRt< z6+?AgV$$)%mZBdoV%ax*h1Y*Ma>fg*0%Ps>ZNvv71*SGMZvDZw_^r;c-)_m9E?eJF z#Xy|>LR^@_u|%_?$3rX=wwepoVeOd#qnNesO1PTB(CYojLbK%#16jhxf>!TRQ_clY zWEQ7yqt`mTX-ZdZY7f{_c4BL3aD5Wk^hbL7D9^lENp1~=$Up-JBk|4=FIGN`csN)9 z!VGX2!}L~JYpPMhuq96FoEu=f6#L#&@S|p&s7N0l@e-Tm73*lEwBtR%sIlp)z>K6Y z?!obj;Y>0luT0~zMfmm{u5BijD=I3uA~nuL$W`i~$y8|@-9t1?3LYjBBVJ0GRr=I^ z8_zz8#T3~M*Elku7ySeEHvst)dyY8)~>4EPHJC*T|L;p znCV#9r`?OTc_-V07F(*737I7`Nk9?;6RtBo z2}uwV_C*j`l--$xMG#O7aB&6@=rp3@`T#28LKGDgckyvoRK(rK755E-`~J8+>f;*U z@9&(teQ);Y~4jt1m^LCKVo0UBz2BdtpVrV~iqcHaf~5*N8B zHsy@sJ3^=v6-v6f-EKhW9xD1JWa?kG8&Kpdg_D$mHmnQ?{Xn*s{usPx&o71D@%%E2 zm!DtGipNk=Tf$@0t*znh9vsoZ5=3GBR6k$lmGp(#*^%2@{*l?=(+l*^un3}|*o*OV z8`;Io#^g!{DU226>1(xuU~m+(dlEv8mZz_4c@RTBX^a~(51+NRb_%V~*g#V*TRRnc zR9ZK&G`Q=?rj1PlKydv|`WEv_^24GD^VDIGH==`fpFraUn?fr02x#|A76DqFvwGq0 zB;G>YU_)2mGuX}zuNexEM^6?LaSi5%kW~WZWC@5d4z!7QYH+tZuzSFvn6Yv6CGe-e zqOq3aQnLqH#MUN4a0{SII$9aQx=3^2VpEtLzAX^fq}W86%Vug(vZtq;-_uzNYIZ#o zcE|NFiinb6t(zULp8iYvIy`b<#Nl8HT;iBkose7NT zQoBw0J{*Qzmxx>ciyFdO0W;Uk9KQS9hOiy(%?iG4p(+HGTaH|q`o1}bZ-%!aG~cxc zovB_-KR9cauo&j4`;y^1c{YVHUkh6=6-U^I9tJ2l8W?+giy8?f~GTT18KZ7(}Fet#N$$g z0U*v00=nAEnBw~qqaS~XLOg(xpuP*{vF-5%fc-(}yI`Kjvs<=|0Thh{G-Ms z@aROeVk{~bXU36LQs-xk<8GhFpO z=*veYlcV5Se}OVD(BAX%i`tJn-!1ZTS>WMnufOJ=Aq^)l`=J#`eDjN3)i1HD!v~X23b6*C1WhuFD>Kk%+Gn}!>h~{{-RX7g=+O0)S9%nPANz6 z*I{gvS8lKS8#i1We@)yn#8|C-SOwQcl`UVyKg7?I8PSame!tsW$P?WNYaCngu9dZ9 zBP#+?=RIEgqN>zj*sXGR{XkF9Ti6sH$5|E9a-FM)4nsv3?;8+Rh?XV3^`g z!#f9=Tk+#}z^>gWvp+eG=?5_8>)<(aZzo1ywR^u}_xQYOuWmOUs7&*$tZx+dq!$xc z*Ze${$&w%gD}@7lZIoWIZN(nj0OnB^o{AajFJ)vH>o5fJ2V%~lP}lsxODmA%j?>?e zjqyc+vhu@QR7NvCfP5tvQwezV%W6bNqy@Q1v4miObG3m!#o`SoFATTLp09fOwh-!z*HbwkrTSZJ3KwWR zoP9D84{4!MeiLek3gzNWR#W5Of>YbNAf;{q2sH)0C<^U#kCC}HZRA2ca(bJ|m--1| z(c8=B>L)tmncm)oc(1VZ=(O_b4S0IOlHOi(rPmqH(%a>DY(dPCp0GPkFN>E?Z|-=d z!VhS2`cp5&j;abOfGU7+8ha#n?Ap&;cg!rlOi9|=Y2UBR9iBGq%oL@YN8U?Uwlkz# zY2QK3%52hcRMso$sr(vX~#i#f-O&9 zLI2=uP`s_J-biuP7p#8<{uxSSO(#E+EjC?l%7#^WOix3qgA5EkrHldjp`Q;raj<&7~yEJrj=8t2wq33LzW+`f_@h|F(= z>&ZIX5YoEU8LrKu*L1Ar*N5Zga}*M*S5wh(*I#l39%-g0ibLal3N2*ZMI}s*1k#h^ z(tkdHDkVqBw}fvgIXVSr9to5j6GBT1?P6%Fb5Y?qzSgIhoLa+?L8f2n_(Y|!zpR7W z#|sLQ4j>fd0JC{fKXn>3^%sV{#pF#4c(w2&CE~8+b7Z5K+!Z|3YTaey;$rfK;GtIM zE*~&!S@l==m6Bs6ff`iYF70~KdzJMgt+8F&-pW>Y84O!DIjOT|-NdV(=4IAv&;F>y zyE#|s#dI)SJQaWHe{}@*u+~{tK0TLyP_OKT<4f0sn$D*K1$a1sbLZF6x{# zovEXrWdTjK8&g+D4RaV%o7$Pm%Jf6*qxhdlBJ^AW!`$K% zu=pCuIo_7}w`Lf2HrTcKL0aE4RbI<<$+Xe1yl4-b@F;knrE)#Ap+U~o;9w4ST`7y-dP+5 zEE=R07j3YMgzPOt0<;Et?H)chzl*kfht;uti5hL*1lO&dFk5EA5=)B?whU;bbR$F5 zpxZ9lZHno&3tH-+mok11x*4|nyTTT74|$pjr0)|v$ZLj`@kRY%;MQNUTNOa36R*n1 z)SB<-a=WR&ylF$ayUSKpX=>9(T3MDgB3Pc&3#dK}Gdf}WK9cKO_dMrDdu)DDLpwKB zy~n$#pM%cIUw?PWo&h(a9pdaZxk=1l+*dt2-(>!*9JOl5v`p_z3H!b#gSA_-HxRf zhKHIeHZO``%)-Sd3gI51Htn5Xjgr(taoZ}REn#szX6J&H*9Z$@1@60Frt)RoRMdoHgrK)pgVEr zhzf<*DZVqRHj`Wnmr+A{Avq2W!8~1+Cznfmu^^W1p2;=N4_olQkl%@bo zaD7$Z@>em9vu{IJ;JekBWJnv?``mr&nD`gE{ekXMdHAreAda@x%|Y6t=uL2euOHwW z=Qe3qT(r~J(*L5Ghm7v_BBW229!*Bvsx@u<6DwIfP{t~gmcM=qV*}0e2~zY~i83<% zhDxnIcWBM3a*_z414h!sj{54BJaHTkBd8_I@>B7k&Gs##)UQ9>%x}kgMlwf>)jjEs z(U#j`jiJ7Lcg~7W;&iD&w_TEP&@H;tpqAa<6-xaCctr6%cAyfUC=iWfGGEqTtyptO z^r}dIHM_AR(OV+pd$yrGOo$+V$YD2Jn|LGky_Idl*HQ!1m(fja9JxPLh63lzLE%d3 z!Qc5`1Jz?aLzh8z-5f|!jUBH5sB-46j{AE4C?yI;1j9XRBZXDRda+~EDC%wJ zO_zsE>A21TVm4f?!G3``_4JAvA54p)#$*QUis2U=2JRp3E{Nbm&C%b%lc2vH(yVg6tB2| z0_RN9;}FVdIXOYa!nQTN$4P*iZKLb#s_uj3)um?u4yDD|onu^EGtVyDNZ4papZQL= z=CdoIuRd@X)BTV;)y1-%miF>hu@dKGGM1de&zf&q-&8EH{9Jg0c%w!gMWU{WHv&a* zi;33N-Yt%~k^5g}d3#rTpQgOBQKW0W&k)QSg^t5*D<9Wl=xwH+t>Dz=!r=$M7}LvB zIp#i@A4(IHlS#|K(fZ9YJ;I&bJhDah{T$-?L2m7NKTDA^njEeHk>2&);(#ML8A~qh z9}AJ326?~yTM0$6co=(W6rV1a`SS2!!|Rd4CXW?)3<}bV!Yv6=%wH6)ij$ln5*cT$ zi^5e0R*;uBS{*w|bu1UmdGCpWl0Q=^xvoID7v4mimU@m4QQm_#?NRNM7Ij+1q+5vh z8ba(BlZp^#7U42}9Hi|K`6Pget>|@_7D{d0Ku$g}b5BNqbIe(V z-SM0?i(A&lh2pM6(bPrJF93)?6;gOfnt}mv^3oJxz_mQZ@ic2vB>5aG33x3tkf_dJ{dZWzqKD=LdRP2iHl3!PB#BmyN z7HmuL8}YzS&}eh^3m3PK8Np<|Cy|p)SBJRxa#NSSzXJ%ow|b{%VW|+RTS+~ZsT+m;;*#AaWXosoRy3(-6iI{V#KSVW_JE9F#7 z9zoK{2F5)s4g}XmTzX*OnbhTSqY^P(t{hV&$6fqCg8y0peo*UtG(_d2+~_7yxl!ZS z>qQ>p8FGyA{~(rs1rDZoB(8f1&F30OWH_(j)`n)GT@G7Mog@8n!w6afG_j_U#ay11 z5Ks+wg~eXqN;<4-EGhh^dtMc0xkoEVw;}Bqzg1y`GhJzNcib~Vn^}z=u-XoW z!NaSH!h4t_$x@rYL!TWw3axP5{Poab@#@Lqs+k?k4|s`*&+ZSUJ{YAIF5y3$ z>xC=${|WH<|8J+3e-eCg>5)^%kW%4~Al^bC?1q&r9%oJ+qguU)|2N~I^|JR8h{2%V zwlc%n4aj|c6VE7quZ#X!d=BDRXc&g+y{+cvTkqqa5l3)D89nj3Uogat}-(T8VH}QX-a58Z4J;#8Ro)H^f&s zee?Pa#giAoLvqJ&%Z2ztM+laQ2ywTC$jSfphJLq4RQ(@5jQN6+l>-4v--c?O*W-s= znhVud*`tN=yNujO_B+g-x+Z(ol3tKR=q zXwZ4VWCER_Ym(&H^(?1*oT2AqOrUzi9_U}G1kihkv!G5-%4ZtCHlilCiE6a87QaOT zwfjU0g-;i%Un+DT%urhTV+v`!-NqXl2e@2T9-o(w)xugEMwO5)ENM%7#I;;0doAp( z>I$DS?YDaUUNqpX1@-q@lakd@^|7ArIZ=Hen%+!nGDElIrHrr^6e7kQU2s>>J>>oA zxPxi1O{X8Nk)n;EO7i?=9AXa#O{of zhDUj7Q{6*liWvm_>CszEp+(>?r;aU-9bcYQ4kL9Z5qN5vIg0@i2Uj@1}Fpl{3SXPpR-M zbjmwaU%Z;y9KBXnzj!?a?Ph!CGaQE=9-rS|;Y$09;4)^l#>V;a?GU??Iv1f+)oTux zD)o9L`7t2p39@@>0;p|#zeXmxkQLm%@rGV4ZXKw}9mKIv1Jo9)lz&Gm)(1!NOUd=5 zA8h8rn#@;wvf-&bi|e;y>iBxmFRJmoFatuNyZwx^-90An2bXE>n) z^d;~9^$?(98>W|VQ>OH|QYYpWFPt&wA;5s}b8q_v z->%6JAlzZGdL#|k-$k}X!Jh(jd4!YSPECyZ-5=}Pq!j|W&?dR|hLjbyU6_6~4ve$G z`$SkDzaYeu$jUCmfN|M!_h>nH_b7hiE`-iy)dlaNh4x!V`pZ7s&I_B(vJX?dQDX}N z3#);5G7>VoCA%+NO~UoyZpHYCR7Fn37lS&qIjKg{?==0V>d1~l>!=UgN1-VFd5x*l zTbCmQLzPgFeoaDBX7I+||B2y(6&v5_8DAUT9e`@G(Ooe=x@$ZKzO~x_j_oZ z#X1Gyb&Ztn#DHFVV7%XAWzBahRm}z~KI*OdfcLs!i#L0f##eI@g4yD^9wq-8+dstj z-L3K+wKiF^yHLZZZv6)c!K9;=_^Q?3KG~145?xOngx}3y)AZ*q>LYJ~RU5p)Qc8vi zK<2Iu4O)|e`lUIC%@BrHbC-bW9r@=#^JR3PDM4R%vJ_&&t5hZ7)7t_Ul zzlb8*EWK!&h}%K@8hbK#OaxTicqg~Uv z&SG7~Ds`*Onc1m~Eti8`>%M^j3T?DfSWaL1UX@oSNGl-MM8){iWIl?o;kT!la8Q6b zW_$^*`cQGy+{>w%hi^!*_b-p19(2UsQQRO*b~QaF&Mm|}P0TAw|L==+cqXHCtfkxLXNpWuS(f?UXYuq1>G|lHMD{ov-N>N5B4`~dC(S~ z39pwNIKq;H7IqoX_yTW#m#_C)Z(&cmdw}&%N4CD1P`@TW*wN#*pX$kV|pBcsRX zbHyHZ0kj$u(`8Et@zpUBjEr2#{c)NPf|TM`_+v34t6;>BX%n-cK=Gnv;OU5 zXz7pMJX|EO0I&F3GL22bfZ)vz4+*}`;U$8vcX$uM&v1BH@KwNevEt7d^K*@YD)Z-r zQ-8XawCE{9TlKzy<)L8dTW)-n{(vc2>Nb^adE3PH;js787&fukQcD;Tn{k#LEWyi_ zdQG=^&E&nVYV&$(-s|c%uWRyNblkbLXp-fzd%0|jl-nQoz&uAsY59=va&nmh1e=>@ z17LmztFoQpT!-btUH0~!jyGPe26c(0FUD9l<@d1aV(yMK(Kp<>*x z2H=}R-Zs*`4CkJA8sopg^+%q18dft9- zJ#Wvno+UsF6GHx(xM<$wFMP);>klXW^2D+n^=PH$cdf+Y?<*inN(%{DVKpgXk+OCL zvck$X5w&`?niS!YIdauQGth3a=zc`IhT3P*LKsiN2<#Wq6P4lB%hTjrG~8+^7nwJ{ zu>PtfSHjAwg&YaOl)c54)34N@*b1`dtXzgno?IAxTzAG~-up-Dvlvc{OmEJ&T#sZ^FgZ+oGPT@03#&^*hDbl~h=#2>7$w&V9%`Cua>C@( z?`!%H`NR?hO<2=yFU71R&3LpnzQo@LvC4%(StFv%u;|=X)*j8|Tq2L&tk$hSY#l}n>|H~BKj)t70dH33y!ztqwcPo1-%{2`ar7mQ z`DJm6b{{9!OYsj>J!mQMAOXGKI1)bZRe2{|?^xqu=J9c+-^2L#R*P$+kumgPQ&qGW z|B2YV$;`s`bs$z~US27inpyMturC`Gbe{Pm(3^Rh$jJbPFYh%e@5 zei){mM-ewAQWrPYy}N_S4t}&*Xj|!EFIn@424<)$8tTbXy{Teo3vA_Lf!oi<8Mk)- zfFCN!UqJ9-bYTRYMUg&mtyTseK4~Mf0y> zvKLdR`tr2x%Vj6Hy_px2y@j9#%d)PQ2uut{HR+n~@Vd553opRK3)*h@cPPBtsrte5soQ#QRY=*Vv$oIO8}{L( zf5BGbabE=U+vc6?uZ}5f*x!r00u%2NQEM~pbcNqlx(eG#_dVO8EBvm~RoG6t@7xYu z;dhm;!gkVq_jc$CzpHc=wv#UQA#=)C_+6!|ux)g$yyj`mKw}u@7iZB#biW0o;V@Pj z>GUhc44ul@m7J~SgpQmmKBJ-S$G>mq@zJ>3kN>g%$M~Pf#i#kaRg%5Rzs2}VczP`t z-le5R_O=j8-+U;!vrtUgjF!InP;zIXKB!PybP?bUR!|mzMFtNbzyk=%0=!QFq#^_m z0DCX4GAp$%z$`Z9k%fPM8eYJh;pLHqXGg>73z##!JhJfjq~Qh38D1V)_|GZ)weT;1 z@QgAAMU5ZnH$GLxkI+%6rLisk4L0vWVF$4tuHEu#<&JR;!7#Q01)@52m?TTIYk%%;wve_01#hI5e5XCn4xV& zvG`H>X)JIp?Mi=+svlUK*x$kAF`7ba{GhNy$z$a-I61l9=M*`MO$FTo^4}U~1{P9lAm6oRpLyUK9D#^Ia){CRU26%A2Kj~?k-jCwcB`rP~ z#T#;-IcM=Jag#;-;{9hO`Ybemi2?Q01T)N`zWjN zd7wQ*s0yf&W2%dd^^Jf2kL?DT})ae7(2e0n>N#}sFd^n~4UdRe@DdOMHzlR489 zcE{;u@$%{IJl;>|Oi$PyrNXKbtc>VRxKf7B8RP&g1=j&h&)cae7(2e0n>N z_lr5x6L!bxW%2Uq?L6Ku=S)x79jBMY%cr;Vc)yx6Jz;m8UKTH(-p=Fw_nheoyW{k- zc=_~p9`Dz4rYG!<)63%J)7yEx-^`hwuscpKiVMeS3OX^y^%uu%tIQ*Ez?|c$VHS#5>f|`=9poN}isuq{r#Z z+2<-d<5_yU9PbZvrYG!<)63%J)7w!z)&N<{{9}819N>^Vg(W>sgU-%hXFN-9hw-Aq zV;Ga^kIfaEVvRIy=Cr73Yd#~*kC0xt9QU&V7u(c@x0+ZCw1IUvx*m4HF-_2DMdPq} zHV)g*=K0UjkS-WMG41~kjcl+S)3-Lh&ONw;%}t&Na8n4NZw+(AAYB>Nk`u~(|JhT@glik7mqVV-N4CEN+Dj?}#BHGs+i(S;6;ezP`Wp`2XXy zh9kQ+gt=k4@am|b_vU0YLJpJ_Gxl~9F5d)>nf0;NWY#iuHvMGuO~7J;5mA{N>~x;I zzC7l{LV05MO4)*&dE4s<$ofVR17ysTS%ZEhzr9YnFPO+-_(gQLk>ehdR}dm<{E6B& zI>8j*g~2~AOkS04!%7`&}$PhNg9nC#$6 z=pAvT*@%-Qlrje8(RRuTBFY_H3Z3J!m~2IcQR9C*q+aZ{;s`cwF&0+k`Y^)3L&C?X zux2yxgwr5poqI0VS?f2u#a18=Bjf`e=z)^|gg{2=*=>PBb(-(hsZy+1)fo$O*<#_% z)Yng#j+AzqSQs@v!MErq7&ztdaa?S`9!CHh z`-7wS*nH&iG;)fy$O{!YkFm&6{Fr=H(v_WEhRxDV!&$ltG)}rF<|C7?M^3R>x_OM* z@9maa!bkBNp)qwj2t~%&F@BRF*xC3V0KB9*Hpz_Wb)FPsyyzUk_*GH-$TnWm^93nZ zL02tQgpD{OEP%w9V2Xii{6q_-Z#{?V6RCXzIbIDlD zrQu8{3e-9{;xeAh&W*T?c~i99RPAHYNmUYa1l7>;*b+1Nqy|4fYJ3VzF}_We5~~GU zF)KEObgj#Zm3O}04?K;2K!4HZPZK1(VCvP8)Ep_LF?zh$6(K(}S4cy4hE%e%Xd1FT zqm z=%yl4OKq^%&>BKm45z${g{@ZeDB3ihw7zvSQ}LBf&l2;)UaB!u@l%EO@zH6mcp4aG z=f+rT%MrRJPbdqhvP}az?x^Bq1+@Qn^1A^2v8j}rVshaV~U7Ke`&e5=F934W==#|xfv_(Z`Q9e#}9vw_)h zE5(NkX+|NaUPdv8;ZA-nU(O}Hi#Aq_ehiRML6!1!M($Jz$j*KIJH5XFLCn2QfR$YZZP(GhgeHaOwQcs3r zo!2SetS|S6HkE?!=GeIj{F1k}`JF<6=b9qp0&A9PZI~8M6Lz8!zX#X&+A^bQA*>PW zbcKyy%V?W+tj3;|DH~S?7VJ&$zN*oQpTjVZr#5&|_HMPYvB-}Dd7GZ{Glj0eTx`~~hY7;R{MAjRX#)*gHl(+}5L7x+{0M=Lf2`B4f zXaefo(3qF=x$ywh;UfEupGz&~wJ}SAP%ZC~c5e~v<-HQlcGVC%2PKb$5S{tae9Ru^ z8WkLWMTY2CfLv9jW(hdG1m-HkP!RU2@Fkecz)F#BQy6juhgc~y~5EKkCj@2x|dmkvP<@NXxJXC0U-X7 zA`AfW7a^q6iuTry$s>w~k(hSR%v(3WT}2@#)B&`nV)%+lkvj@9pOK<1X)yLSn$X^s zCT76S&Cm#O8A39JkqCgsKT{e8fWS=Ivt&TJC-+&^%f>wXa%--Oe9cZ+*6jA3Yt61R zo~_yKLOl9=(u>;DTjqO!!jfKbuJk(NS$aE+S1O#u@Lqo`yHWK~gl|zzTDp6@m+JLM ze7&3_i6j=y9LjIR9y{mW%L>9|J78rV1v7l7Vz8#H(sbj<01WSE3f6_ z+SOjW@|28*g$Oq-XO-3i80BzcYdRRU$IBtb`SN&7lt<#d`Godx7Bc^w%GuhpMt9{} zd<4JDA8g$v{tx8bgCyR75Nsg4sj~56*GyB3HoC$IzETeEYnl#U(?bk=zH1VUrDo5e zFZ?S`w8b*`SW6kL7C*lL|4ZSM(-=_60@|CoTxK!KEynI)*>{(}4n!U_raXzS{un!6 zr}SJCdp{_#u(oUZd|Y?fwKTTpAjODr<2n`7QPeT3eB98sGLzeJo)l}^ZN4P^7&6)X zt4h6S)-BDySq+$L%%q-TD6yVaZTwbfeqLo^jN9DT8+(0Z=8+Uh4+=iHk>aTM#U|*k z_-T;9+}2`54J8}KW1<~3l(r?%CJY8HHI3D*r^<~Jm^;U}o8&Z-@TMPzJF;2*JJ~NK zH^D$WAxZGktd$%pjXTWj>|GCPK}ufVaYuET-yJa0tj?yS@$Bgtomy0y zUy5}n+Sq(p;#fqfE7nDPfwx6%^yfQsJ4)dAXy%2m+!XhjIC^ne*JJ>Sy)Q)=fZ$H1 zN{@Yvs(%UqGCmj{;zRfW)-g*x5yq)+fiq8*-(mb9`I#g9+nAqHGysYl<#7uX&jNtT zQG5awfiq9xCq9}VQ8~uH4erTyMh(an=z`S406Y#?43QTDkUySJATMy{IsC*Y@MAq( z;Bw|9A;^D!O3nZf11Z9QR3OjD1ah+Iox%@kohtY=CpB}1e;b1-1p^>Clp+k6gXPB& zGq5bsS)LR*jp9?5B|fpdFePUIh~X4r0Em$kVE~9lDZ&5{i&KOFX)dL+XxH|aW%yju zjUUes89q<&`3^rp@C6QEDEK0WpD6fA{HQ!tMa1-yG(iJE?4BYFNI7u5dBiLpE`dyt zkiZ$qBEFO#c)Bd}6FBoK`6c`)eN`@{zek#!0U#chA`AerXNoWY#L^UD0ElHN!T=C^ zr3eE+EKd;zv@#{R-Y_dqGq4u&B+yI!3Lx@yW#%W)TiR9b_teZ!p!;3ze%EAv0$mo@ zy5H0I#Mkp9xje(ajlENj4S?g*<)JsWRGs1E20rn#JhZVWX);9c)@eYRPsIva<9Ukp z{1EF#|29U`SO!35MT#&0#J(xQ01$DCFd$9n2U$WlE1?(g1FJ6-{33^M5&U9@Zx#F! zew6W-`M2@#l(GRNHI^a_NR!Gn{M$rk3qK_F3c;^*QYK_cWjv)|KuSTXDM;ltL>=Y3`lv&<@xT6ia_fo;()YKq85)c zq_|$NAxOm>lI-zmDh7Z!Aw?Jf;=~kT03H7RAmUg{9IP(LQH)tm9M@Rj5%OXjU|w<* zm9%*sAg_AxlA{< zTaA_$BP>XeF-b;?m>o9pSowrzW6k|3eE!N?AFF7)=BjmL% z#FC>JuMe?~l-EJQOOB#8E{)((^1{r;(vpMcScBKm^1@=nyyPgxhX=1m%Ik>WB}Xwn zGI$-6_mU&?I#ymsg;;VF~(=k$F8@UdM)5aunl7$wd`Y zCDKZG^m>#-$)VLi*U343FRSU(5Ac)xfFO?hy>JV5 zYr~D4Hj z)pDp!ZwCs=ix}~)(89JMipecLXxF{Stf&<@chWy|OW1cih}Zs@$}DJ+bP4&VPgtzn$3G+4~3-PxqkmioEY zwMi2NSRBGlKaxD$IXYq)zjJia^qF$cycE8gr~pD*?Py}~AXp{aM4QO|PKaji5Gb_}Kxu|(=1yUy90Dl)5Y4<+SgD8r zN=rmDuM<{^BAU5Npmaqv^Ll|&7tzcc1WIE>Gj9|qr4c~sjcDdg!b){SGjA3s?GZpJ zkZ9&D!b*pPStEJZy%8^={d`&F#yf;4L>}-~n;G@Sa(-L=@2O1mOg|TtZ_8oIq6U#X znrOW#%I^`A6lV*Cu$;TZEqX+goV}GdTM&X zs)TO7<$X{UJrS$@X)=nawozY&f46fL0u8hWsu94`a4J>kENcsr#V$^d;lmBOcavUn zJh?*HrCWjW??)j(C2AoAjX<{MJo6SoY9~-uDYL|oQi7>>piNtmmfN_ znfd;0oRTtO09>7#A`Ad=T8c0L#OW!*01#)S2m?TznIa4T@wgOWK$_L$FaX3QDZ&5{m!=2<(w6Cc4Z}41^X5uXm?gq0 z7q?j=tajKe5!O0vmI#k<*enqabl5Br);nyL2nRcCmI#MBY?cUzJ8YH+M>=el2uC|? zmI%iWT}ghFJG;d$uSXc^1T1$#=> ztv;5$u;q5kkLKlY7?qk&(I>ar^RMjX>?~}4wxBC z@HvmQ^5(R-Y}oI%@)IP5!|5H9bNJzfKRm-&X>~eQ^1#XC6oBjgHxgx_Yumzy(~)qK ze@O$0a`K-@DvYB(-5N*npl)uQnhe=irBe32pqX1Bm0ssEV{F;)w(|L6>mBMZZvrZZ znDXr0MG7zWZdW9}M;6}jTw+^gJ(bSOVEzq+i<(}tJUV@uI`SBh%Ye6)&lB$^(zhY8 zirwQ z)sC|e99Kext1v3tbnR)l2jg5jOc6Cak8_5OI)Zv8EU4;mav?t>tJj8VZE5AIxO-3K z5>Lr-Xx&e8Xzz<T7 zQ4uL~nX5!B~waN*9-tUjXoCf&x{X@UO}A ziZIoFsO?fYpa1Pq7(LSOlw+;%sjB^tQ)Nya?;$0Os^WLTA7&Q{pe06qi^+T4(_N+H zeR76~F&vMNT{L}=j_qGdWc0#Q_2D8%KI$2-7OiLVWaCW@CZnUnOAoz0c{OQ|Y-!4i zjbBAj$ZNJAQeL@`*KR+gymBEM+Yc$PG$e9Y-C{+-{`R~{)9lgV>08k)tRHX_G(2hn z;f;pifYW7$STg-FL+p5a)etFA5Xf7Vkg-!^qQh9b-2nK+7rVzSnMSvgw7Zk;>2{E3N#xUSA?otMUy{3JW zXDSqLd!&I3I5l^>n!kU{4FR1opY1W9rI_c32p`5!U^sanRVg_GHFELTMYBALo02o7 zh8SteSlz0eF0T{f@hL(>DK8tpoA;ZhYZz|jZJm}dMB;p+u-G0wmh!EYD{CLxQM{`t z_$zi2@9m*3L^B_xhBTiJ`Do@t0-s^vo#eZzT!+j2Fb9xC{h4&X)UT^~y)bs&of{CP z@cU&+kzJWLvRv1R%<#rlx%1w9t=gF|6GdyyQ}`C@_1kHWVyxq5x*8J}Nin4BwCKUhurO}XBOuATWX zB1rC4qd6y%U_95vVJQ*5r+r`*sdc`MPH2MJ+rujk3z!SqIKJG?{q&(HoEGIgZH-bE43tS zqtK7xGv4bSK7espGA_A- z)^$fK$!TP!c_^VvVn+Zg)URr>qd~FQkw?mo;Gk2_U~Yx%`)6Jq_&GuZip?YSDL3?S zevT5t+&O-F@+NU%-cxQU=>4>*dA80Szndo3J8E-)nW?m1yE|uH7k?bN^;PTLmAe$R zZ+x&)Ur@PAvmSf>?jET0m1iEN8GyD9?d^7T+R_Z8OP6`E=$OFh(gp6&Y;m+Z86irO zhv7=2Ha93Y1lx!?KR>vD`fHO4NOG2_hGbu(_+c{V26%&k29@V(!j$Sm{gU=;+N3>( z5t9#GDQopx@ z<=%fodR3Pmk5aazC-~o!UY{30caYs+H==u8yXd-8$!T5S2;}yl`broXC1BaY7C0D|b&6c@v-#|B%Yle2hiYZ~O`B8rmSIElvR4U1#$~fGG%j zb8Mg-Cf?*K#6IVR@DA#E^fs)l|Hp~VSmMUKePf~ zVf}kGOg_+G;!zV3@9M6z%+9MJT~4~cD^ony(v=DWP1Woj z%1vdWV)a3nCaZ9hi@`QeC!R4T0LI=b#@30kSKuwi3!1snYHnvcU{4o$mL1rW-E;d-hlnc1kJ6cBTKE1hSm9p(4$ zweQ|4GPqkZXf4M$QD2U+ydOoI{=V}5S;SN;cQrr9m%M*opJMY1e4QBqLwXH6dBDfMCc@;a_;ZbgV-$)z=X*J^E@@b`>l+#@6_4k!ISW5n9vbASx#x-w z(*k`f$=9GUI#{hQ?yugw{tpo%tn^o_@k^mLSX#&QsnB1(Ut^VQ1VECNYWy+}G2cV9 zj}ayYiKPC%Gt$dF(zmHP?7_X40+{IT$EJ|7ajIK907Gd4#9xQGi4g!(P!9u;`Zu%( ze}xBso&~>O^W`kXi2;)MVw!|eFvef$aWq`IUv1K25cGb6)=%X22>cH^&?&w>^^d;+ zD}%lLy+iRCgj+u%|K8+1z{6Vx`?}YcK_I%m_;x4HuDT?5WQ%~tPFP}Bs?%3%tbPjP zPXr8G3bq%KGtND4w>hD=d5FE+Ll~hOMCeo}^lXB4*EdGpl|B z@TYjZT~9qYKg>~dzMy};Rc>D*=aP%;5^uW0Z=g?##p6dNPhY1oy*CuoKs*{n8rcoc zqtox!m`f7{U8%8NOOwvWApD#r4r~3jdN(`2-;^A?bF}C#6)zqB4cqeRC?*8D4t$W~ zq+eF=Va)azv%HC6VfsrUP=Cosb{ec{2$_%K`fq3XMLMx9> zjI6kh_bp4?%I}kweE^Tq>*W)ljRWdoo}%`m;cLK#((?ys=91zYrN5S@${>;7IakxfTs9ivI%OAs?;U@+`bLmh?2y zblMkQGnkT9r^2MzT?j?zHf2K z@Q1OosFP59t|NC^C;JLaX=VE+X%cE^=0G##*T)rrBfu80=tuSwYO#Viu9W;Z7u{FM zSya4P@wE190Eic)2m^8~Y!M53C39>AOXu;&oWsUT)9?ns>K(0cEZ56Xw1E`oyyABe z$6g<;bLRVfBH*7EP65E_6MX(k;cJ~wHf?IzKca3RpTB{Q->qQ0_A2=OS(Fcw&x!MR zyhV(ts|c^{9ON(FT!~#(#9PhdytqqO6Vg%D(&NaAR7ozN6nt8CKZ<_qP}s(}w{06E z*s&c@ICit|V<5ek5#7XTfbm@_>_*>#@cSdPnrhxcm;k<5pml%oo3vh7Y`#R8_%r0D z$b?+=#@<1*eXa4)X!>6D@_nrKjW3F(ztwW|MAN@d9UM*jkm4^|OMYGhz3>#66-Elb zTKMH#ZoBQUWRx=HacdAmiCv@6xGe|2A_u=R2P?d+yUWu=NKgvV>sZxp-@xaLIOnG)$S!H$;Ah^+Uz z7m>_hX?U<}e0L2CwhWf5?4ZZ0N^WLm({Js$vl94VHTfqVO!|-Gf~!IikUlP+2T-R1 zE6cXk1x^)hpgSxabcfkL>q)QDh-FEFsD1w)IuX$)-i`vTY#Y8ar$AfeY^TrO8_SXy zPKrdc-7_<)9JWT5<3VPJ8XG~yQ;JJOaAABl6-M7+jjXSG9~Gw`ySy!fJ#;!*~?{zwabFvag04fJP)UZ)zRB>`_fpzrGl zt(FA(qwVPUUfk)sRIi$M#{bN-zMxRJCAw*8v3M}uhxV$TL<#+bLK-Gn>4lz3OC>DB zi*=>K_+dE>s*}DSfO1@;Fc{0##+T)M+54}JbKJG1goTLW*CK;*x*s1EmP1sNxLi0r zA>gt8Mt*BNmmtMU)7Rbt8*KI$HExAN9n@q;THwf3Q=foeGwwjtkjhJXU~ttULYe}! z@JTN?ukq6NqRmJmM>`jFWJ>Q7hjb?YpVQHZLVrbT^)^aZXXpJ^6n~1`Mpk5{iN#|n z&#ioL+hQNA=hz!w&9!l!`CO3ws? zpmiecell?|DPlBi>T3^gJ+eGli4LkHW>FA|FG}75P1bIr!ri3xv-Y$&1#WlSSz1zB zt(Rk+NTVZth0mowGaretSg{+Q8<`f*Te`qLe!s=ASLa1*`*^t>+GQUgY$v$x;8X2i zw6d3~Cmn2^z16>{aAHeNrdnn0(IzLu%3LL=rZj*t+pca~HCyw&3upvC&t#I#_gv;S ztnm4sB#|tz8h}nK*==kIvl5hoGG{|3N~E64CT2Gb$P+N{pxmq~9? zCcJ}QPDtBs84MaN5pT@CG(q=m6a=Y$!biY#7uq}wGitrXEd}XQXtyuQPrtiN!08

tO1qm8bWhhn+rzpWyit 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

e;;W|qz-HUPC} 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 diff --git a/External tools/Myra.1.2.1.0/MyraPad.exe b/External tools/Myra.1.2.1.0/MyraPad.exe deleted file mode 100644 index a30dbf12f719f4163e16895823eb0a1763ae414a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51712 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 diff --git a/External tools/Myra.1.2.1.0/StbImageSharp.dll b/External tools/Myra.1.2.1.0/StbImageSharp.dll deleted file mode 100644 index 2e60d6710bc53f0f2e66d85fd6a5923d70984b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65024 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 diff --git a/External tools/Myra.1.2.1.0/StbTrueTypeSharp.dll b/External tools/Myra.1.2.1.0/StbTrueTypeSharp.dll deleted file mode 100644 index a3a030e645d90b7129f83f8b747afa725f9c6b40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50176 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 PKfik?=np{exdi?PesZ)? diff --git a/External tools/Myra.1.2.1.0/Stylesheets/allControls.xmmp b/External tools/Myra.1.2.1.0/Stylesheets/allControls.xmmp deleted file mode 100644 index 3d9ffaa..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/allControls.xmmp +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/commodore-64.fnt b/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/commodore-64.fnt deleted file mode 100644 index b6cec83..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/commodore-64.fnt +++ /dev/null @@ -1,101 +0,0 @@ -info face="Commodore 64 Pixelized" size=20 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2 -common lineHeight=20 base=18 scaleW=512 scaleH=64 pages=1 packed=0 -page id=0 file="ui_stylesheet.atlas:commodore-64" -chars count=96 -char id=10 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=0 -char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=17 xadvance=16 page=0 chnl=0 -char id=33 x=502 y=0 width=6 height=16 xoffset=5 yoffset=3 xadvance=16 page=0 chnl=0 -char id=34 x=188 y=34 width=14 height=6 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=35 x=248 y=18 width=18 height=16 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=36 x=220 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=37 x=234 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=38 x=266 y=18 width=16 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=39 x=142 y=34 width=10 height=8 xoffset=5 yoffset=3 xadvance=16 page=0 chnl=0 -char id=40 x=90 y=18 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=41 x=100 y=18 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=42 x=114 y=34 width=18 height=12 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=43 x=100 y=34 width=14 height=12 xoffset=1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=44 x=152 y=34 width=8 height=8 xoffset=3 yoffset=13 xadvance=16 page=0 chnl=0 -char id=45 x=208 y=34 width=14 height=4 xoffset=1 yoffset=9 xadvance=16 page=0 chnl=0 -char id=46 x=202 y=34 width=6 height=6 xoffset=5 yoffset=13 xadvance=16 page=0 chnl=0 -char id=47 x=392 y=18 width=16 height=14 xoffset=1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=48 x=56 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=49 x=430 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=50 x=444 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=51 x=458 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=52 x=472 y=0 width=16 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=53 x=488 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=54 x=0 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=55 x=14 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=56 x=28 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=57 x=42 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=58 x=84 y=18 width=6 height=16 xoffset=5 yoffset=3 xadvance=16 page=0 chnl=0 -char id=59 x=0 y=0 width=8 height=18 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=60 x=158 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=61 x=160 y=34 width=14 height=8 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=62 x=172 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=63 x=70 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=64 x=192 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=65 x=8 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=66 x=22 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=67 x=36 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=68 x=50 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=69 x=64 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=0 -char id=70 x=78 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=0 -char id=71 x=92 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=72 x=106 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=73 x=120 y=0 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=74 x=130 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=75 x=144 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=76 x=158 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=0 -char id=77 x=172 y=0 width=16 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=78 x=188 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=79 x=202 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=80 x=216 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=81 x=230 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=82 x=244 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=83 x=258 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=84 x=272 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=85 x=286 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=86 x=300 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=87 x=314 y=0 width=16 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=88 x=330 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=89 x=344 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=90 x=358 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=91 x=110 y=18 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=92 x=408 y=18 width=16 height=14 xoffset=1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=93 x=120 y=18 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=94 x=206 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=95 x=222 y=34 width=18 height=4 xoffset=-1 yoffset=15 xadvance=16 page=0 chnl=0 -char id=96 x=132 y=34 width=10 height=8 xoffset=5 yoffset=3 xadvance=16 page=0 chnl=0 -char id=97 x=424 y=18 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=98 x=282 y=18 width=14 height=14 xoffset=1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=99 x=438 y=18 width=12 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=100 x=296 y=18 width=14 height=14 xoffset=1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=101 x=450 y=18 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=102 x=310 y=18 width=12 height=14 xoffset=3 yoffset=5 xadvance=16 page=0 chnl=0 -char id=103 x=322 y=18 width=14 height=14 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=104 x=372 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=105 x=386 y=0 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=106 x=396 y=0 width=10 height=16 xoffset=3 yoffset=5 xadvance=16 page=0 chnl=0 -char id=107 x=406 y=0 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=108 x=420 y=0 width=10 height=16 xoffset=3 yoffset=3 xadvance=16 page=0 chnl=0 -char id=109 x=464 y=18 width=16 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=110 x=480 y=18 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=111 x=494 y=18 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=112 x=336 y=18 width=14 height=14 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=113 x=350 y=18 width=14 height=14 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=114 x=0 y=34 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=115 x=14 y=34 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=116 x=364 y=18 width=14 height=14 xoffset=1 yoffset=5 xadvance=16 page=0 chnl=0 -char id=117 x=28 y=34 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=118 x=42 y=34 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=119 x=56 y=34 width=16 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=120 x=72 y=34 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=121 x=378 y=18 width=14 height=14 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=122 x=86 y=34 width=14 height=12 xoffset=1 yoffset=7 xadvance=16 page=0 chnl=0 -char id=123 x=130 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=124 x=186 y=18 width=6 height=16 xoffset=5 yoffset=3 xadvance=16 page=0 chnl=0 -char id=125 x=144 y=18 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -char id=126 x=174 y=34 width=14 height=8 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=0 -kernings count=0 diff --git a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.atlas b/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.atlas deleted file mode 100644 index 28ec4b0..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.atlas +++ /dev/null @@ -1,274 +0,0 @@ - -ui_stylesheet_atlas.png -size: 860,229 -format: RGBA8888 -filter: Nearest,Nearest -repeat: none -blue - rotate: false - xy: 106, 137 - size: 2, 2 - orig: 2, 2 - offset: 0, 0 - index: -1 -button - rotate: false - xy: 715, 139 - size: 36, 24 - split: 18, 17, 11, 12 - pad: 14, 14, 4, 4 - orig: 36, 24 - offset: 0, 0 - index: -1 -button-down - rotate: false - xy: 106, 140 - size: 36, 24 - split: 18, 17, 12, 11 - pad: 14, 14, 4, 4 - orig: 36, 24 - offset: 0, 0 - index: -1 -check-box - rotate: false - xy: 162, 152 - size: 12, 12 - orig: 12, 12 - offset: 0, 0 - index: -1 -check-box-off - rotate: false - xy: 715, 109 - size: 12, 12 - orig: 12, 12 - offset: 0, 0 - index: -1 -commodore-64 - rotate: false - xy: 1, 165 - size: 512, 64 - orig: 512, 64 - offset: 0, 0 - index: -1 -cursor - rotate: false - xy: 143, 148 - size: 18, 16 - split: 9, 8, 7, 8 - pad: 2, 0, 0, 0 - orig: 18, 16 - offset: 0, 0 - index: -1 -cursor-black - rotate: false - xy: 1, 14 - size: 18, 16 - split: 9, 8, 7, 8 - pad: 2, 0, 0, 0 - orig: 18, 16 - offset: 0, 0 - index: -1 -dialog - rotate: false - xy: 1, 31 - size: 38, 38 - split: 19, 18, 18, 19 - pad: 13, 13, 24, 13 - orig: 38, 38 - offset: 0, 0 - index: -1 -grey - rotate: false - xy: 752, 161 - size: 2, 2 - orig: 2, 2 - offset: 0, 0 - index: -1 -horizontal-split-pane - rotate: false - xy: 732, 128 - size: 14, 10 - split: 6, 6, 0, 0 - pad: 0, 0, 0, 0 - orig: 14, 10 - offset: 0, 0 - index: -1 -light-blue - rotate: false - xy: 143, 145 - size: 2, 2 - orig: 2, 2 - offset: 0, 0 - index: -1 -list - rotate: false - xy: 821, 215 - size: 22, 14 - split: 0, 21, 0, 13 - pad: 0, 17, 0, 2 - orig: 22, 14 - offset: 0, 0 - index: -1 -minus - rotate: false - xy: 78, 117 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -music - rotate: false - xy: 715, 164 - size: 46, 32 - orig: 46, 32 - offset: 0, 0 - index: -1 -music-off - rotate: false - xy: 774, 197 - size: 46, 32 - orig: 46, 32 - offset: 0, 0 - index: -1 -plus - rotate: false - xy: 821, 200 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -progress-bar - rotate: false - xy: 777, 180 - size: 16, 16 - split: 7, 8, 7, 8 - pad: 2, 2, 2, 2 - orig: 16, 16 - offset: 0, 0 - index: -1 -progress-bar-knob - rotate: false - xy: 715, 122 - size: 16, 16 - split: 4, 4, 4, 4 - pad: 0, 0, 0, 0 - orig: 16, 16 - offset: 0, 0 - index: -1 -radio-button - rotate: false - xy: 844, 217 - size: 16, 12 - orig: 16, 12 - offset: 0, 0 - index: -1 -radio-button - rotate: false - xy: 844, 217 - size: 16, 12 - split: 14, 0, 5, 5 - pad: 13, 0, 0, 0 - orig: 16, 12 - offset: 0, 0 - index: -1 -radio-button-off - rotate: false - xy: 1, 1 - size: 16, 12 - orig: 16, 12 - offset: 0, 0 - index: -1 -scroll-bar - rotate: false - xy: 20, 16 - size: 14, 14 - split: 6, 6, 6, 6 - pad: 0, 0, 0, 0 - orig: 14, 14 - offset: 0, 0 - index: -1 -scroll-bar-horizontal-knob - rotate: false - xy: 47, 117 - size: 30, 14 - split: 15, 14, 7, 6 - pad: 0, 0, 0, 0 - orig: 30, 14 - offset: 0, 0 - index: -1 -scroll-bar-vertical-knob - rotate: false - xy: 762, 166 - size: 14, 30 - split: 7, 6, 16, 13 - pad: 0, 0, 0, 0 - orig: 14, 30 - offset: 0, 0 - index: -1 -slider - rotate: false - xy: 40, 65 - size: 4, 4 - orig: 4, 4 - offset: 0, 0 - index: -1 -slider-knob - rotate: false - xy: 777, 167 - size: 10, 12 - orig: 10, 12 - offset: 0, 0 - index: -1 -sound - rotate: false - xy: 715, 197 - size: 58, 32 - orig: 58, 32 - offset: 0, 0 - index: -1 -sound-off - rotate: false - xy: 47, 132 - size: 58, 32 - orig: 58, 32 - offset: 0, 0 - index: -1 -touchpad - rotate: false - xy: 514, 29 - size: 200, 200 - orig: 200, 200 - offset: 0, 0 - index: -1 -touchpad-knob - rotate: false - xy: 1, 70 - size: 44, 44 - orig: 44, 44 - offset: 0, 0 - index: -1 -vertical-split-pane - rotate: false - xy: 794, 182 - size: 10, 14 - split: 0, 0, 6, 6 - pad: 0, 1, 0, 0 - orig: 10, 14 - offset: 0, 0 - index: -1 -white - rotate: false - xy: 93, 129 - size: 2, 2 - orig: 2, 2 - offset: 0, 0 - index: -1 -window - rotate: false - xy: 1, 115 - size: 45, 49 - split: 20, 20, 22, 22 - pad: 22, 22, 24, 24 - orig: 45, 49 - offset: 0, 0 - index: -1 diff --git a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.xmms b/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.xmms deleted file mode 100644 index 33906fa..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet.xmms +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet_atlas.png b/External tools/Myra.1.2.1.0/Stylesheets/commodore-64/ui_stylesheet_atlas.png deleted file mode 100644 index 04554a529d66cbbde730b2c1c67e90fd213ca4fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5964 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 diff --git a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_font.fnt b/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_font.fnt deleted file mode 100644 index 60ea417..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_font.fnt +++ /dev/null @@ -1,101 +0,0 @@ -info face="Droid Sans" size=17 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 -common lineHeight=20 base=18 scaleW=256 scaleH=128 pages=1 packed=0 -page id=0 file="ui_stylesheet.atlas:default" -chars count=95 -char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=16 xadvance=4 page=0 chnl=0 -char id=124 x=0 y=0 width=6 height=20 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0 -char id=106 x=6 y=0 width=9 height=20 xoffset=-4 yoffset=3 xadvance=4 page=0 chnl=0 -char id=81 x=15 y=0 width=15 height=19 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 -char id=74 x=30 y=0 width=11 height=19 xoffset=-5 yoffset=3 xadvance=4 page=0 chnl=0 -char id=125 x=41 y=0 width=10 height=18 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 -char id=123 x=51 y=0 width=10 height=18 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 -char id=93 x=61 y=0 width=8 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 -char id=91 x=69 y=0 width=8 height=18 xoffset=-2 yoffset=3 xadvance=5 page=0 chnl=0 -char id=41 x=77 y=0 width=9 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 -char id=40 x=86 y=0 width=9 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 -char id=64 x=95 y=0 width=18 height=17 xoffset=-3 yoffset=3 xadvance=14 page=0 chnl=0 -char id=121 x=113 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 -char id=113 x=126 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 -char id=112 x=139 y=0 width=13 height=17 xoffset=-2 yoffset=6 xadvance=9 page=0 chnl=0 -char id=103 x=152 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 -char id=38 x=165 y=0 width=16 height=16 xoffset=-3 yoffset=3 xadvance=11 page=0 chnl=0 -char id=37 x=181 y=0 width=18 height=16 xoffset=-3 yoffset=3 xadvance=14 page=0 chnl=0 -char id=36 x=199 y=0 width=12 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 -char id=63 x=211 y=0 width=11 height=16 xoffset=-3 yoffset=3 xadvance=7 page=0 chnl=0 -char id=33 x=222 y=0 width=7 height=16 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 -char id=48 x=229 y=0 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=57 x=242 y=0 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=56 x=0 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=54 x=13 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=53 x=26 y=20 width=12 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 -char id=51 x=38 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=100 x=51 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=98 x=64 y=20 width=13 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 -char id=85 x=77 y=20 width=14 height=16 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 -char id=83 x=91 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 -char id=79 x=104 y=20 width=15 height=16 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 -char id=71 x=119 y=20 width=14 height=16 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 -char id=67 x=133 y=20 width=13 height=16 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 -char id=127 x=146 y=20 width=12 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 -char id=35 x=158 y=20 width=15 height=15 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=0 -char id=92 x=173 y=20 width=11 height=15 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 -char id=47 x=184 y=20 width=11 height=15 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 -char id=59 x=195 y=20 width=8 height=15 xoffset=-3 yoffset=6 xadvance=4 page=0 chnl=0 -char id=55 x=203 y=20 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=52 x=216 y=20 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=50 x=230 y=20 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=49 x=243 y=20 width=9 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 -char id=116 x=0 y=36 width=10 height=15 xoffset=-3 yoffset=4 xadvance=5 page=0 chnl=0 -char id=108 x=10 y=36 width=6 height=15 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 -char id=107 x=16 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 -char id=105 x=28 y=36 width=7 height=15 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 -char id=104 x=35 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 -char id=102 x=47 y=36 width=11 height=15 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 -char id=90 x=58 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=89 x=71 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 -char id=88 x=84 y=36 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=87 x=98 y=36 width=19 height=15 xoffset=-3 yoffset=3 xadvance=15 page=0 chnl=0 -char id=86 x=117 y=36 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=84 x=131 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 -char id=82 x=144 y=36 width=13 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 -char id=80 x=157 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 -char id=78 x=169 y=36 width=14 height=15 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 -char id=77 x=183 y=36 width=17 height=15 xoffset=-2 yoffset=3 xadvance=14 page=0 chnl=0 -char id=76 x=200 y=36 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 -char id=75 x=211 y=36 width=13 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 -char id=73 x=224 y=36 width=10 height=15 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 -char id=72 x=234 y=36 width=14 height=15 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 -char id=70 x=0 y=51 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 -char id=69 x=11 y=51 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 -char id=68 x=22 y=51 width=14 height=15 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 -char id=66 x=36 y=51 width=13 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 -char id=65 x=49 y=51 width=15 height=15 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=0 -char id=58 x=64 y=51 width=7 height=13 xoffset=-2 yoffset=6 xadvance=4 page=0 chnl=0 -char id=117 x=71 y=51 width=12 height=13 xoffset=-2 yoffset=6 xadvance=10 page=0 chnl=0 -char id=115 x=83 y=51 width=11 height=13 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 -char id=111 x=94 y=51 width=13 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 -char id=101 x=107 y=51 width=13 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 -char id=99 x=120 y=51 width=12 height=13 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 -char id=97 x=132 y=51 width=12 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 -char id=60 x=144 y=51 width=13 height=12 xoffset=-3 yoffset=5 xadvance=9 page=0 chnl=0 -char id=122 x=157 y=51 width=11 height=12 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 -char id=120 x=168 y=51 width=13 height=12 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 -char id=119 x=181 y=51 width=17 height=12 xoffset=-3 yoffset=6 xadvance=12 page=0 chnl=0 -char id=118 x=198 y=51 width=13 height=12 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 -char id=114 x=211 y=51 width=10 height=12 xoffset=-2 yoffset=6 xadvance=6 page=0 chnl=0 -char id=110 x=221 y=51 width=12 height=12 xoffset=-2 yoffset=6 xadvance=10 page=0 chnl=0 -char id=109 x=233 y=51 width=17 height=12 xoffset=-2 yoffset=6 xadvance=15 page=0 chnl=0 -char id=94 x=0 y=66 width=13 height=11 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=62 x=13 y=66 width=13 height=11 xoffset=-3 yoffset=5 xadvance=9 page=0 chnl=0 -char id=42 x=26 y=66 width=13 height=10 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 -char id=43 x=39 y=66 width=13 height=10 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 -char id=61 x=52 y=66 width=13 height=8 xoffset=-3 yoffset=7 xadvance=9 page=0 chnl=0 -char id=39 x=65 y=66 width=6 height=8 xoffset=-2 yoffset=3 xadvance=3 page=0 chnl=0 -char id=34 x=71 y=66 width=9 height=8 xoffset=-2 yoffset=3 xadvance=6 page=0 chnl=0 -char id=44 x=80 y=66 width=8 height=7 xoffset=-3 yoffset=14 xadvance=4 page=0 chnl=0 -char id=126 x=88 y=66 width=13 height=6 xoffset=-3 yoffset=8 xadvance=9 page=0 chnl=0 -char id=46 x=101 y=66 width=7 height=6 xoffset=-2 yoffset=13 xadvance=4 page=0 chnl=0 -char id=96 x=108 y=66 width=8 height=6 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=0 -char id=45 x=116 y=66 width=9 height=5 xoffset=-3 yoffset=10 xadvance=5 page=0 chnl=0 -char id=95 x=125 y=66 width=13 height=4 xoffset=-4 yoffset=17 xadvance=6 page=0 chnl=0 -kernings count=-1 diff --git a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.atlas b/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.atlas deleted file mode 100644 index 32d78c1..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.atlas +++ /dev/null @@ -1,201 +0,0 @@ - -ui_stylesheet_atlas.png -size: 256,128 -format: RGBA8888 -filter: Linear,Linear -repeat: none -check-off - rotate: false - xy: 11, 5 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -textfield - rotate: false - xy: 11, 5 - size: 14, 14 - split: 3, 3, 3, 3 - orig: 14, 14 - offset: 0, 0 - index: -1 -check-on - rotate: false - xy: 125, 35 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -cursor - rotate: false - xy: 23, 1 - size: 3, 3 - split: 1, 1, 1, 1 - orig: 3, 3 - offset: 0, 0 - index: -1 -default - rotate: false - xy: 1, 50 - size: 254, 77 - orig: 254, 77 - offset: 0, 0 - index: -1 -default-pane - rotate: false - xy: 11, 1 - size: 5, 3 - split: 1, 1, 1, 1 - orig: 5, 3 - offset: 0, 0 - index: -1 -default-rect-pad - rotate: false - xy: 11, 1 - size: 5, 3 - split: 1, 1, 1, 1 - orig: 5, 3 - offset: 0, 0 - index: -1 -default-pane-noborder - rotate: false - xy: 170, 44 - size: 1, 1 - split: 0, 0, 0, 0 - orig: 1, 1 - offset: 0, 0 - index: -1 -default-rect - rotate: false - xy: 38, 25 - size: 3, 3 - split: 1, 1, 1, 1 - orig: 3, 3 - offset: 0, 0 - index: -1 -default-rect-down - rotate: false - xy: 170, 46 - size: 3, 3 - split: 1, 1, 1, 1 - orig: 3, 3 - offset: 0, 0 - index: -1 -default-round - rotate: false - xy: 112, 29 - size: 12, 20 - split: 5, 5, 5, 4 - pad: 4, 4, 1, 1 - orig: 12, 20 - offset: 0, 0 - index: -1 -default-round-down - rotate: false - xy: 99, 29 - size: 12, 20 - split: 5, 5, 5, 4 - pad: 4, 4, 1, 1 - orig: 12, 20 - offset: 0, 0 - index: -1 -default-round-large - rotate: false - xy: 57, 29 - size: 20, 20 - split: 5, 5, 5, 4 - orig: 20, 20 - offset: 0, 0 - index: -1 -default-scroll - rotate: false - xy: 78, 29 - size: 20, 20 - split: 2, 2, 2, 2 - orig: 20, 20 - offset: 0, 0 - index: -1 -default-select - rotate: false - xy: 29, 29 - size: 27, 20 - split: 4, 14, 4, 4 - orig: 27, 20 - offset: 0, 0 - index: -1 -default-select-selection - rotate: false - xy: 26, 16 - size: 3, 3 - split: 1, 1, 1, 1 - orig: 3, 3 - offset: 0, 0 - index: -1 -default-slider - rotate: false - xy: 29, 20 - size: 8, 8 - split: 2, 2, 2, 2 - orig: 8, 8 - offset: 0, 0 - index: -1 -default-slider-knob - rotate: false - xy: 1, 1 - size: 9, 18 - orig: 9, 18 - offset: 0, 0 - index: -1 -default-splitpane - rotate: false - xy: 17, 1 - size: 5, 3 - split: 0, 5, 0, 0 - orig: 5, 3 - offset: 0, 0 - index: -1 -default-splitpane-vertical - rotate: false - xy: 125, 29 - size: 3, 5 - split: 0, 0, 0, 5 - orig: 3, 5 - offset: 0, 0 - index: -1 -default-window - rotate: false - xy: 1, 20 - size: 27, 29 - split: 4, 3, 20, 3 - orig: 27, 29 - offset: 0, 0 - index: -1 -selection - rotate: false - xy: 174, 48 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 -tree-minus - rotate: false - xy: 140, 35 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -tree-plus - rotate: false - xy: 155, 35 - size: 14, 14 - orig: 14, 14 - offset: 0, 0 - index: -1 -white - rotate: false - xy: 129, 31 - size: 3, 3 - orig: 3, 3 - offset: 0, 0 - index: -1 - diff --git a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.xmms b/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.xmms deleted file mode 100644 index 16c1204..0000000 --- a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet.xmms +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet_atlas.png b/External tools/Myra.1.2.1.0/Stylesheets/libgdx/ui_stylesheet_atlas.png deleted file mode 100644 index f51c5bd1f298dd4f4779797b487e848065f8b501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22779 zcmYhiby!qy)CGEG7`nS*2tjG2OKK=70V$8|iMP1r+H1z{R4%0ssJ4NfDt501)s`AOHgm{Jqim9sGx0w-Q47 zwa5ISA-ad!>|+Nb_=6DykI;Wh=sjy!#il*=MZyM2)u_uHp=vf`)TpabbXj_tTXH$` zuOn{(xhgu+hRlkXsd@Cy-4^#eYj@8+S=_hETs*M&{&>aN9a(*Id)t0N`&dKDuEPOs zQ_p)rxW?Ds;s59tvU5qaFzi6j3$dE1%&;bh0sez&+>g!C$YG2CIP~&#e%Rp=1ttZr zsiVdW;Dr1EU&dnwfFlcK0amEkWHCQeIo~4sV<=U{s_W9G9o+8X2?4lYwZV^%)KV9F z)8N|>hT625|NcP$I9iv90`nFVCWA_;&Mk0db2 zA|C$TsCt{2WB~uL z0~M%RX)(0E{eI8mW)SVok;=U$(K5OIktfdmh?lyh*lli@1$Y#PT$4lN`QeB(E<;9e zH4*cAU)q(4R`*FDHw4rF@G>rFBLF0uQL6_+eGmJ`I$t{cJTra2o)9 z78|G_tk9VeXDg@c%j*8@SP|tkhE77%Y-=b(W3P#PG(v4dmk>gEvdM)J==?}CtV-A7 zY;3plJxdJ;$Oq#iMM4Ubg3)ErauFFCw&ElA{{C?3jiKaQs#vE)OB9{Q1af0Dv9UQZ z0MTl~btgB6{<;OCfW;*SfL@enOc6k=XuK9{nqTXSrZr++LMQZ?D%T)fU0p>^pWp-w z(;k9xJ=z6sLP_BLs|SB$%+oM|mbZr%!~yDJB7}c4j!t9*-tW{Lv9|MD9na^g`mx-(Aii@nJ8T&-VP`Ng*_S%2WSopT)dru54c6N`SI0$q7kSAv_%=7#qeSquBW2y0An81&G7abPi2%awV5QrsFZ0uffhz%W)#&af_=ci#)D-ZlVDHFVRO+6w2&lpmvE@UIGfawXK5QtyyehArP5hIL#OkSHtR zVPW#hj}+kB16*+)>>7n34m5w8oXvY%Jej{n8?7gRg7)5=8AzmU@%gzQgo^z!WWe}Dgqa!P`Lp6A z#7aT+1;efHQR4zS3owp4q_YS{{T7EIvv8fSSNp#KQ1Xk4{+qzB=HwAp2Rx-z66_WO zt<;g>MWu{%8f~)<^yz?J&JDTY|6bWt0)y;KSEOlym&#_x#y#*71^kR#R3Skp1Wspb zjF&ZI;`jc40R%n?2sgJR0Ku&i`GgIm4&~ z|GQaGJ~L+dnE_u&{1T`rPgR|O0(k*_e+tEY7Db^h?bc^UM%-}-sn(`Dikt=z{F z@AsGhTX1aMe@EW|Sxzj*e%jP`(I&LGzqe}QgL!$nd0x(Y)rl17M;CS1i)qc?BwO36 zi&`gb^c}>DZ*PaEkFz@V+P>V;#B^~dt&^?0xURk7HBwJ@J#%sL2asv>kI15VY;k%d zuMb}FgEjLO^ATps%j}F4etG>l>8LN7d~i1@P19$9 zau1azhI}0W|bHqd*b)_4`r{xd85>G@9ZhgzH>*cgB?@nzBh&0>GWxd_vd)}Xr82Tz>JrK;p5L^ zhapdDK`m$e{(bFMj}sN2MPR*UeIPzBwY^0FnOoIFE|qo-rZ&EqJNY}|pe;e;d2ECI zv*Xnsyrzwj9I>2TqDx=OJNNt~+}1-bnP?Qg$3tmbg<<}RFH zy;zV?``DFErcEuZU|A&9N zUUbJRw$iW?cQ3p7hR+TBLJfmhG=NGOsmJ^0{#PK3ASvFa{gnHCD#T>x%)h`m6&!-ena)`9RyFg;IXReK`>epEOtHWN#Ti{DOOUn%m?1taWK^r z^4Mz9%SnCv#MNTYhI>_!oyrd4lABNCIs_R06Vw!c%S@y#LBkjaG5l z{bvHhA_d0T%WPJ$i@^Kai>%R3ji6=i&CWm+Z-^Aa=lRowedRT>S*u|r;Roq2HqyTD zl9-iro?Sw1XFm2u5PF|1fVqq(ue3F66_Nk#OtgtD!la)nCS{e*B#r2n8-J6j~6Mxmwvb( z{r!=?<(|k~{INBR%^@>vO9Xl~{aI_fbH34b6f74gVHLCz-+2$U4I+2nt+(|EivNd!azGBlE#n1f&iPNazaRrSB6e~H5i!H6J~2AeHmX%RxpG1RaoH$qXE|a zjnNu;JyPF)h7<)Wf2=fWYgUVmWYet$0H^sQ<`|l-zF2OE9tWLR#BUB3pa>`B`-k5t z&&YSbPA;|pe}st=OzKZfWaVS28ebQGV+T4Ys;XYN%Z!+@1fU@*5&L)BTfz1xuHdpDjIq{0#ZxNNwgp0>aOr==mXPE8Gq>UkA1R<-TH2?U z{C;=7tasQw!26g=sHi=t-T&z!s!7RVt!WRQ$qRnuOBE6+I~hz3!86g~*PV(IGWh}= z)+V$c0>-jm_)@`ED3Re`r0sGMw$7nj7h;ePt03?TnQY?uMoV@VzkO9C@|PhbfMhzL z_!FkbV}C65+1=fpPvs#y-tG1N*tg+#5m_S)h0X!YVZP_S_NmQgzxJ?d zY(ZklXTY5nG&`>l zbaRPVsUGulT)T%cge*EdS0eJZ8c`^e0ghL^U?Hp|Zb1MCe?W}i@)Ku$au(=42rpZ* z(G4V{U{b)ucMv-2^`*2Xq2P@zz#&#-$edC};Imd)?r2D9)vq?a6{N3^&z9LAm>n^R zrtUHO?qXI*crN(TlC}Lh3nqyMJ~hUq2S+&`z@Vj z{vV`&Gpe-^*y6~@?VqO~{diL#6Iw`iB`rgRK(@S`#VZ}1w&MKgTC14IIBk8ffT?sD zLoeA5_)ceeiG{+@pPh;kwMnlSFE%-^3ni_&jZyenbZ?u=jKy-Af3uro$s8gMF{9vp zR?de{(p$!I*wJ3vuw{*7yI7@LV^rZ;75$Q^FFu6a(rQTzS2)6#PD$mKKX(1YYYafp z3eQ1spFwTxb&{iK2q7tp&K~H1|3lLn(^3MSIjW4o6Kv_ZKTnRkRH$d_H;DSYz zD?)~JO|!*nT?e`%D)|fGtKI=;Z(awDYuA`23dLM*r^Ap1TdMg;WCaG`+-sa+Me_WQ>^!GI69L+MgqZtLancfT zR^&^kNTMgDvf-r{!b)d9Wd3@nf>M2cSG4;^(5dr|mhlX=YpicmR+U>Cu_f98<^zN33 zuOuR+fm#ORVPs;q@&=p2Ia*jeH9VhOc zoSGfVWKNt))!hf;?+%MpQDEk6ai?yQtPz`vf-9nfFZW|_%2c!5p7+baL`r1V0)CUe zbot@5`TLXo7}EM-P_@?p_{l#%8*Nua*lFCku<*9AOca8Fi@Vt0+gbuq5+igM$CfR7 z$4=-C{hZGpyNy5L$qT)q~P(kJNoi#HVPR-U~nLg$Yg6OTna^GL;$xbx9{Qq#4X6 z>w{H~(DU8kz&5y!UHVmOmq6`_5wPmv_-XBx*F*q>OU1Xfg$(dPEX#2>cgY=B3GMf@Xg|B30la9+!wulQ?afPt++SGI24^UIFhks|I30!#W z6teh4_o0SQ>ZGx%ms{MCs@F*g%^@2vxzWQQ_=AOV(cO`l)tzUN9`?m;KTy-mKN15G z(UTa$qe=$7KO6TG(ovWcVYubz-UPs6DFFoq1x}n3h$5F;TU*%_n+3$l;26n7PhRrp z0aOo@(ew$xM#xfZUud1$>RdYXK7Nb8Z^JL5BS(p5NxBmw?Jc#86vY$c36FfEPyaxq z1tyNM$68(=xh%gF;azcJ#3XJ>Brz+R=A&GI>!&9u+9+w(=%itXXx)xDx{Gowdq{!+ zzx!L-?Y7?L`)4%6V-iXdzwEcRO71CqGpP_}ROB=JEO!^@S4uM^K5;gT4X z#lPwz^uEFmwB4*k1+=FmU`7`ev2&lke1L#eejG zG9TyBs!GQ5Ctmo_fLIK>Keemk-@c%q+^s9Z%6QcMZoy>Teu6R&grrLbCi+CnNMs@m z@b#uCBfo1!MNVf%aYK42T2ER*(!)*QJ1da7@jW_F}-%t z&uGcW1gR&&#k}vI?9|Dk>#EqP{aoV)_idb z99@bmKv?i`O` z@A5@A^rvVqdXWP06NbnV5RN6ncs_BQTT~(~hcg8hhT3nj@M5&}D*n zctYGhJjv7Xu_x9UCdvZDJ}#zum9KoWub*>z6T505%D^(!lNRL}kUU)C+SY3nuci=B zH!Se(XM!I{4>WZOKB?U2yL~%h7KaHBV@i)Wq8~Z_ic0sfkBzr2Fiv74E6DhlUD%>1pl{wXTuh6wm^jPOZ(Yf3uJf!WVCOZ3 zTHp{u7(L6ALAXJ9aX3q;qp%%w2+&N%a#%_On(BBl0nzon=?ZFnQjf*XuK)PHBFs;5 zIFJA}J#{@PNvIH9@blW&_k(Wr6;*`?(4Z&HT4ieNBpT-O4v=>gFQstTmnJ2=FF)ot zhWKGCyHgr1e=+tskrUGNWIGjYek!<_Gb1TP00Um``$e?z#8D-1GPDQ~*X=zYi2*R& z=|8jNok}Q?I1}}w6;q*Fqxo4)+!qM;;bLH5WIun8736$0IbWmY^jusrrFXWZHj%jNUGZIvEh1X0~3#=s6=Nql;_i`SU#Y-KW>^m`2vFZj$nd zrVxAXQOwWZKLE*5<*-h=_i&vn!f@IB^tYRlUdB-P)AycRuWOs)%esbHVDkv>@X^cS zva)SfvcJX(h|C>v%fA7J%^&AhI3U*-v&L5^q8@$#6acK1sNK;Y?By9f?cXN;#6G!a zVd#99EDThtD(sXnPpeq8QE>@-ppa=8|DuaeJMebbfGY<;h%74yG`d3$@SgV}621_Yve z5RKZLTGf1s{T&CETMx>aP;9<}sNuZ~E^AP$ieuWK>r6_Zc?+4PGVn9($|um1KU?ZY z@&!MOSkC#oxX7B&JhjC9AWI?dJ>JT40TLUDLFo~7!ISFne-sK6Tj~fOG~UEZp2Vm7 z#fph$!rcu@_qjtxF=j;0(K=9q;6y$l$3It7rc-}ZI=@C6%DW7G%`sU43zo;KW4oW(ph~97fO!x#kskhhcLl{Mc9f6vnk=((VLyX zq-9#gG%W;#DDbxt9_wkNLV98WL#z!< zK%=x{V@3_h|Hho3rD%hKW79};{i}+qa;Z&e0J#7z^uI}2bzG5?J+{+dv|GU7(SdQ! zu4d@zbuz=d=d&21NMY0da$@KIv<9AQW|ZLevi{3>#&ph>l`q}Hf+$lKS_{r{CWtrXE&iAnuGn(0&?SF1{NNTS{V`K@ zElR4}k#x0avcEcf*HWgq|K0e6vIm^lEI$w z1Zl<6-!v6N;_4CON+ImR_qx$YxwOIBnX67MP1dRas`36-h-g~Slh^p@y}y$H6H^q7<9HtO z4)yHv%;c=2E;Fp&G(r%B?kBOT(`9r+McxnzrAJ;rAR>uSseAcL+ItZtcqpYtv3Fitsx$ zc^hN&OBmDXO?`W+L1Feu`Z}2@OwC@3ha7Fppi*qpG~e|ThQS;884tC}U`4!0`{3-w z7o}TWirR{+6N*2*G-+qpHN_%5PS1#Wp#!fX1Z5gr&d#jedO#8lP#k;2T;#u66qQr!{ox?& zf3>bQos*GQ^T${=M^?Ab^+jS;ofR~^nx(_n`kVhh2mk1!y$y=mco8OEBaL-#E#|G= zZI1RPTnZleKFA;8DP0T@ygT_33L|_3j>mTedgrBAM;Kb_grU{cek@zXNj zqVt__lHQghNpoyZ7hhF=vfEaYp3N@ahd4%p{IhQ8@_S~Q>jMRIs$nMreG6ck54Fvl zZ5ETCk^KPiY-eurrp>U}`{ZZ}TpM~@E7_C$WXRcl(%cum&1A?vGIXM5td8E?EW#)1NnA z_^kf^W451f=t9;cP-O`_n}wu==~TTTm7@*4D=V-Y@GRKRd=YprnPubRkMInv`?qmOhiMvQb#+=mly&YvTtNIdwqVxHV z28D%keks%8h0-rUSW|hnp#6MxjFdf-5}?`C(jt_aD}q{q=lAkdJDc-7{zjhD`<8BoP6sqW=(%_yZ9A)_*ghb@yRtdzt&O~9#m z*UF%lEo^RJXoybC#KZK;${D0i!?%qY*SzD+4c-X9A<_Fs%~W*(Quo`99ky+z>nxn0 zvX0roQN=I397W3RhyQM=!(Z}cRF6Ndy0o?GA!h)4jl^DOK@-&XsGAmooo9ngt$f)x z8jNgxVmupuTM6nCRc=8OSlXq+8nV~fn-P+#T8Qs;9+ujBR1USGjW*M7s(=2H54JQd zd~JDrvGs~OlEw*7qu+}zvk$G+DzbR;AsBm3hB zG`*=0i0h{|C{3U!u;RVy2}xpXVlIokXB}>^o;;`Ulu71Z{H9LRzk$>c z`2tpKKf4Dfi1{TjO-B(z`M@rXBb*|w-$6WPG`^xZiXr-D%ODog{z(%wP+ul zh*(2-H8nn7{W)5UU%6#i+WqZ*%?UH_mp`BxgfR7vk%y<2g~>w(O>Y_+Ap4O??L!Pk zr~boo9`bBr=>ijFe5HGEWcHdz3e|qG*|npfb6spry*mU`i|D(){m`=1y~tFc79pUq z85Zy{mAIsu_7e-cg^bD1qHIVt>u^D3?JBvsX~W zJ9wh*{M}#6CaW zsa#MrajaBG?l*XZVk}ARAV5eaNXE-G)_*? zeRW|}p3q&=y}($J=H)_sFA#RgvZnlxeyq-1VZ%)FiL+;7kc(-|?nti09Wjeq;k^w} zvUf39)TbhYRpa=zAGEnM94z{*j@s^wPpyKq(ZC;dbkY$3??-fkRRsz zTCsVW1GNMdJsM}KFDs^9NEJEc>XPm<*H@l-*1RgYMol|ZTj`b1U;qM&h$3nfUO%aN zls$kPPCICDrZJ~2p3^3U*-#$!7>FjZ@lg^5f0?hM%w|px+2Gn3N)JU*CI{8{OXcI(Mf;@JMrAZI^p4keU*{^erTrt|4DSJY<4S^AD1!C)XX zg*Tyzg6)@hnYTkN7k7+TUKU3Hxij*M2l@w~){|Mr5l$f$3biPrAmLo5pvP(n9t<5P6+)yMhn@vuU-Nh;cE z1dTeElrRqb*dfCbAryE1PfK%)X~vsE(;_j%{1vC!gwgv_-<|@BSm#bOoA)n6gc1ne zLq<(=lDSsO2?C}nx1=}ZcP?^3=BLnP;I*V=hv6Sv#uY#7i!CDNJOqRti3qyN{E6;g48e|IWZB)WJp7ao3cZmch$xVb zC>p>9X*g7KtZqMr|B7+Rw9-`dYo)>Fb&f;i@!O5j_zHs`rwBFU)(Reev&pY$Fj)T1 z#`6iK?}WTk@^da;4=SkLCepW^37#NpAs4ekuq&EO*Ek;o;85}J@aP&>jbszAZC!hw zZP{z5H2cv*36cq+Ue|V0j!e&NBN=>MQX9~`+9Vi(@FqackNAQ!Jzzfu0j#K|EB?gC z^ZZ$xYpoQ;ky?@T<3-rCJuh?1{qiJ*WX%@?#GT3V@vGT{^svaf-;4(;sKDy+BN$|3HfjH@_wZj)>1d6PWT&)lm%kEScLO(9RpHK ziIAbTpF^4V+=x+MVCa1*uiPFBj}$ieWHV~cS(?uw(vo1%C^T)8fQ23Xf{kjKB_Na4 znH}L*7&B#_{3d=}8aS8Yn=ivVU+@Z|)Hrq_Rbye)>usuDSLC}D{oCubm^p)I(}~;c zkcpy}bC|6D0#fEDw3D{}cl=rX#IpgNAZYt_y6N;pyMc(4P?Q zr^i1c4+SjzobUg_wx+Jy+S=|pU$4Gwa8y+7*o1FVYPw)1jR0cYd$Topx~ArkH49eg zi%IFf0s2D`f8sYlZjf^Lf-2EBQ=wiBFPa20X2`>QD*ew#Ztd|EoretBum#@-oK(S! z0nn=I@XomMCsTm15KZHPX`3t5s&-`W*sfTGQ<|8;{(zC9Pq|4|tFjZZkB zyEdQ%tb@P*jRDeAnvY^MXMH}zW-)V4BT$)NCl$0SZsme9=0e}@u(4Qrys&C13t_p) zvF2Fwa0)`D{7F57wKR4@;c~5dXfK2a^m8E@JPrNeW(^Ue^|GoVdMY97bz-((g8+5MjBOr>jo&m>stRC_(NBlnR^C{D7w#a&6tRB4om=Xwij1?{nuZA z&b3^2GWbIj*!j=+4QZ>pq^w$9Xepq{6S<92eY9&EgQ~BwTFdM}8EyMN31e1h*{2>R zXS^y?%3CCUlLw0z(y7!N&qdtPSmXw*_Jq5mRuc9s_VXN-lgSoiNO6=FmpkGQ?hAwf zlPnf{pytY&A_a9INFq!6IQgvsSl39+2!4g-emLLQ4>|)}<762%6#Bf^)-a^;>WBU# z9@cz#o_$%N<5y8pr!TR5w?P#woGA`4imLr)Fbe^q!Xpe`1FJu8&bDjb2T;V!hk#o0 z5p)`@PpqmH=+~T$Cg%kSyWPrT8WpI5=#na zVwG)%X`Rv9RT=x>%nXK5A@aFol$1!SqKPf^hK!2|YF77i!BcObmoO%u#=v1J`XmEq zcR3j7wWz_E8Zenp%j*55F;wga)^{HiG%kRYp^H&jRuiC1wzTQj*)h z`jkER=^2T(9m#9zEW^y)j!BBR->BH}H+OgBe7(?}qt@4-HK+5pf2~&3toW9L?oXFc zLgpvjZWQ!7&sr(D72n+CkgZh)0Syc?A4oohVcf`5$#N-iNMs4v&Zujr8XqEqXk8+n zR$0vM?mr_O7fA*yx|djzUyUNegcot1ElC+$(jY!#yioex^=$IL+=+|EvEKG{3i_SM z`F0{nk0QCxw_HUM7j!Q{47@%(HGKT|KpzYi44oU0UgIqA<`N-rL6r_&z~0`BB${u>TF~NL zn;^Gp-JZL!3PTS>0JnrFJ5`@6NZK}UgA@NsAIcSBWsQ%mHq-iocK2oH3EpLT<-lIl z?w%eY;W4@i`EWvlW|n`I$FXrICnuQQnEcN)i__H%+Bxy(wPk`*?0!OJVi_e|#rM#_ z>gK|nI*7v}@GX3v^UvU*EeD=w@&5K2hWR1VMlh1Ok(pc}Cv-*8Y7NVLCpV)wsS`ex z-G;@5l~}>Uw2kmmCy3!Z7fRpO$-_(}WFYM258EDBU~|0>E#+E+bZccUh9)}^pj1u2 zp0X=Ci8UX|dfg?RbSjE6E~|l$XDh!)juV)pm#5n&*jd8%+a`AVO0~>a=I5moU0HnO zZasW%S(ko&*ZJv&P& z$KE@m?p_<*?(x(b)n73sq;DT{oFz-mJa$HSn3mTE@0OBL%FOhgF3wwPC}|=d69TBu z#Llb})sxkSkG5w1acQ5KtqaWf(Rz=*lDDV18fkT_X1T=t<81Q1qDn-AMrX>H{TK0F zuF%)#+)*u<7pi^KGbut3UyH=o6UR6562}d(AV1kkM4d2J%OKGD zlQ8)Dx9Cf+4y>5B} zi5ICsQIf8gI-+U)hRLz@1n1i_n-?leI#xt?I3%pqldQ!|YV!>R+6WzS(Sc*ZWlV z=vg*Y$5JK-cpQs*m&@s~N)J)DJIw^OKR%4lcUWEyDhkqqonK%(;iJU_I_e_8uLp3gz?FGvMgTFBHZGBlU?-JHG`RuHIn#!|I$W5g`}*{*U+WyrX9m z*-rK^-ymd@D|Cn&Ngw4DsJG&ip?>s*ie3l>QI z`Puam7b-|bVW=8mYiV0lR8;;~fB7h^6HR79WrF!PSZ1ia_xH7BolaH%cYl8&C%p*F zM5B-tR;iho4a6;K{N6N*`O*uTJ7k5A)@^62Z>SAST|ty1l&&6x`&^uLJ6FPc%jG;j zTNCU4aS${exUMJcM20o8$s$FfUF8dKcVAEhzj@*J&jbJN4mAOtSt$v|)uZcUWMYis zls4Dq{hdzQ1FUG0jQl6^N=qTd$V4b{Gmrwk`O8N{d@oHh1uJ0Ilk zFc>^R9XK{zZueCHk?!Yj-AxOWMkKxdE6t#Ie%}BJJ(NDz+w?@b)BDfH1ez<5*C*>O z&i7#I+ZOjYHc1x#tk>S|yxw1r8}V2Dlxvy+woolxNGm_>cVOQ=7v)Xz#muid>b|!) z45i=58f0hrDEo)mcy`wh#)}5@WbxW_CzrvRQOBp-rK!6lBVqCPeJ`&I=z68)rmP4p zXlEfz|AYn2e{=&|Qv~q(%jrBo*JEPIM}@-v?UMc1to`X>eN+e*b?Yvdm7NN(-kd)C z`=dVZ(|%CjTaEVLi@hHDY~X`=MKC)*IDQE*OhvN z)fF9}`IW$o$AiUe{{&|(Y9NEJ<#~`0qts1u!bN^}6)X~_ky4<@Wi|qpwRCgSZo|UD zvMI#a0&4N_adAl<@(N>WpZH&|hA+m{zQq+;NjDeEzKa7GQKTV|o!sZ|e?L)aV)^NJ z23oGN!+R0?sR$~e82MojdlPHv_f{ zOPUxuGc@yx=}iMR2+#C!`h|6K&(gtX95zRUZHluBlP&Rqb+J5_c{;W?SpY^vB49$t z)Ex%Ig@@F3d?i$8d39Y~uee$)a=vm=_1*W*t(RMzp_?~8a5-z4H%0`h)+5|Xq2VuM zig7uBZOw>+73Jibk4nVTe0ulK!#<$ljB>a1*!{~HX07}x1$yia{Owtw2TBA+B*E4e zk;47A51YTUZg!CE;^Z4Y!l|Q5T3sbhw=Z12o^51|CWXFAc0$67iPwMOHk5Z!_4oVd;MmEwR0qcq4ysRc^^9ViE zI-@3CQelx zMYgQeGEmmLNHBPB16rDgN!Ii=jk2tNDwm1m3^wV<-1O6ZYJ2yM9|bTZ|!!5LFd47|CQ1bdBc5Bl<;JkC>h?M#FQJ z8t4{qlsG*sPYPti9X8g7Y((|w6_ixvo6^G)^kgllXF85RL$+(2e4(!^AA%S5IlvZ| z@frFJ`s~KOTssEFhL4SS&1eoB5JnX?1G~anFzYUPw4C3s>DrvE^#x3mGvgjcs6nMB zHcZUa76|Dl9oiB%fT1*w{e6Vm;RRB)9M8QadXTsYLXfA*6OZrm?G6gXW@iaSa-TP zN*5|dVDDi&hHR;OmFX{dSdb#%8AiA*-Q?H{x@7%UV=BGKs%t4!^rTm|jKTYPzJT4$ z`LCUehL|@u0igE87QiP+L4}5%9qxV~Z@9D+@%;`ZRAhLrqYd=pgZj;zPFN9j$9D*! zC1QI~Bjj0!5F~$_(Y+8tIOxW|Eg;2l+sXuo!|PC>1ocvZP*lt&=Ql`~TZcrSwx?ZT zom{u{18uaZxph+(a=^zT7NYiupWK2Jnq4bYjG0KVGfyGnq%sl@DivbGwD2yW`yT7A zkM*WM1`k>b9xg?3F%5}N0E?ehazQ}lR(C$Zf-#-wM~s5bIg;DBX~e}cg0e_CjSKZ` zP1cc$k;n}P4Nq6lZ>nhc?MU>Jq4$*{dp#<*63H!dj3n5N!DbpbB$^NWv^M3g|5862 zbVnVjz`Hj8^U5E!v((QF^h)YTvjAHRDCl@ov&5Q8ii#L7I$q|zkT@V@!q5}q$roa2 zBh^n+R}xn%t@R7;QSafM7EYz^M?et~Eu)ItIiL0Oc**sl0Woa~&*9aeE`=M}658TWY^%`SX-wE+L;Q?BGhMTm3ZbrX2=chFJ=$kR~z5(odJ<5yQEr zmSR)9mCF>m#=*9*5hlDxJ|&K#ImV;+@&Lw)^eX~FDzrqp8#)AyY>mN>4?|JF!Jj%5 zh4IUpSOBw#kGPd=6;2dIB(OADMqb`K5mrseiCBu@4zX03&r+V+&&p zr1tZmJLR)~D3Aiu8$!{2Wg^jB-Nn6WvS6D=!1=ZP_F>!zMiw$BU^K3cwF~a4FAJqciCNZZJJ+(&*eyS|S zBNNAh=ax1@C3=GWCcZ0E)Qr&lXyxb#kM>$*_aEOY8W`i}ErZyOp9BH=we$>GukXYp z*DO;aEroyD%K(==GBxk;QG~svStxjiKnL`#dU{hVVg!vDo@Av4w&pmdkwR9QQ+*Xb zjM+ma{~h~8c@T3%i+d5f0VZzElh%!1C0l>|9prrQpB8~&{>K|DS3@{K8+FcW4r~--m z?}=Lm*$qZn>P;RIU;K}LHe%(8CZx@ri_=$%4uKl5e5++hClhBeF@>PQ;avT;FoX#w zT)o<;Z9e6PxSasgt2Rnf@3|w*{%!)yBD<$pVM{+;&`I<1k~8^@T)2FMpTpoWZNQ!0 z`+a2tS0Z$D+Sk*sN!U6!2h-4boTAOYnwJwO697y82H4a?mB#+}uJp)zS9WOU9>XOA z%=KnRBw$>(LZ|ABX^QxA8h~M)9wB6>8?9{YVB9{~Whnh6*Z>C-91ulN$)a+3ZWdjIVQ+566S%p?3Del7mj zZUd5I5|=qlQr1}HRIxms@%_>&5{fB*@fRQ_Uw!W`We%koHRv^Z2(q7m9Bw4X7WR?Y z&H%lCNYg#}k$!`fh7zkO;};`9Q3#%(m7jNNupqXII#x-b%n0y$a^4aNmFL4IC2)@?BD`>?Td#d7g=gMT@do);VqIqt27p_G zbJe8y=#d|CY#x0v1s*f8AWJJX;Mjh{^7dUD@L%)PKsicYjaorw8`ES@I?tT72lB%U;{s`i24vIO_{dDI_-ob?9G4 zXfwljO(K_#oD$eXqwHjl>;5L7^U53oTuZLz;9Nh9D+2r|1^P0*r(sOcPUQIDvj6EX z*6?)Y@ULA{3?Kt6USKfNuc#s8F}Nx1V@c#W_`ZLHo1PA}mqe_Ac%?g>kHy>?6!c5;=08^~$KiEcfz z`6YV4Mfr|Cc$FXm%}g|DfN`{-WmTe)FI>}l$EhsUm-pMI8XGP$hDiyi^VNy*GQCmz zl}Vc{^1=CGabb<}m&ZMpvd;e#QWmZ0bQhj)Dc%cjXN-|-Br2*opJR`fl;`UxuEK|} z3zUqD;*g3GJnxv&S{Buu%T*WG2P*bIHp5sYO&z?Jlt=D}v2RqbRiu1I z=ICVq$fS!Z?l(=FG`Su}H5XTW?`e{T>+pDL!#RV+&C);(*BbL4A~SA(M@O+v0myGnnKt`5EpnZt@H< zK3D!+n7gY5Jd5Z0@^b^EG3B(#o3Z4KR!1IhiNdv3DW8aCUn`wPBa1|tO`d;+j~;VW z5;-;LgX^43jl}yhv5)?RC>lc zqPD$s{ag!TsV61TJ0?pt{3K)va4MD<3Z|&IfS!_V&geBQ9g3v`+e5FI>3rrF39w zJj{u|+iQT86!e^}(q8I&{PN{XIlWeY_T9U8oAdV-B}pYQ;l>CAeI7k}^czu=lIGJ# z8eamqlG&crT}q{XXgCK^JU0oFl#tW(;K76b#yzBa*KgUfrId7Ry!;Hy1`)C0_3PL5 zs3nmmi;~R9^Ow?HoxS$0lur@t(XCszpZ4zEyMPu%0G28!27cb&A`KPyAr+L`99rDN zCa2&UTN-NJ8Q~r{ac&&Mwchk>xIoVuzJ~}_X2*^lQ>6$*aE~t^K76=EarlWYayMzx zq#gEsGsm?%bwQDHbkVh&6q6>(;GPapT6Fk}zSyJ~XCI1gO3W z;*#FO!=o9}t5c>-3H!mQvSrH-M|!h`@$xOP`Ocj?O~r9;_wL;bru|DQ&B2(NiJFD| zP+%4WjrO9m;X15)?NzH*4PwhZ#QltXMD}wUV?KpFE1!#t3r{!NxgL(`rsqzP^!`d!s#NL6*S0d)kxFyw@!dXs`XrQ8p7NJ2U0Tj_xYVXio2m4S z`b(EC4Uk0sLgILN#4&LB^WcI73y$LB@(xPRt%%~Ye1Pro^y$;XJ~UFKd?W8>;J|@D z(VR#7`S}e|Jj1eKBZi(ibLJXb7e%V<_pFyBiNdw2lusBr5R5SmXVY_q+Pexd3X;KG zLmFyVHqcFv6)RR4Q`A`&#>`TiHf=hL%*JciuE8RE(Sh2Ljg3{qSuYd~b7>}`=L`{u z*vubrva90o6aCcW8Z~O@UWvJL=K}azuxBJt(l23S$wOR84?+F((@%%+wFvCNnRlC+ z>&asW(0zqdoQR{JWuqP$62U1>NdA?-htaVM2a&Cj)(+!rzjfgu|Jxxh@5 zxqzxSr_H%{{P^)pB}$Z-Zpf`SYl+yfQdlw~nYkaWvd=)>s}V5cAPU?I(2FUiR=C${#cK4dYRU4Y;$lKARtZ)ar+SK0`YkS6hAEYE3OZzW2UNafW4 z(Ljtv(Au?Yfgmr5D`xZb^z4EAh&XRWf)cA4RYV}sv}x0FN@6$mVJc^fJ|$Sh-sB^7 zWFaSowUC0AfCoRUTel8w&j^2i|Ki%4dXF(>x2A|HrETlL%my$xR^jH;pDV(AQ=~|d zgVzi$_jMfPG>c&eS)gM~T!q#IfJB$GPTb_|wPwCv7e;7E4f7znNaxa-`JdfVrAqY` zsSk+venx*QnOMAYlrCLb5B2QOp#$R3LxCi8&teCGJF&HQ3x-C80Jt$B8RhQoK8*(qrZhD z31>JmJz=}i92Yv(^=`y;fKy^@D8hl`y6Iha6>|n~rz2ISD`Fq0-#&c!@FY^hiZXF^ zWRdnk88{&4l`B`4XzHxYBrK84r)#cpve;zF%Od;5yJyUpaTX^6HA5{0yn~46gw2~b zxaE|uB@yGIiIJ|M6Tu#_*_S;F zK}EEfI~4>#d6pWkZ`!nJPZM_*xJG4~#}OQzjJ$myBI!x1*zg!x3$`TzfG({-h8RqV zQBEC2NkR$WMi3XB&((QCjhq~M9Q_8-?twwn*Uu%KH*el<*7-_G`gu8=bd12BLx&DQ z&kJH7|4jZ{Rsue_ltPF|T%+|{?ZmvXccp2p_h6TxcMW9U^oGlqFP}CcdY`fg8%FCj zo$fu#>fI;@o(8={91*WmM4Ybr`1pLPnb)~5MiL!3-d_apuyx>Qb+cHC_-tPYMdhRO z=g-e4f_;eQg9M!}Y15{~xLzVJ0OC9mxS0wWC_; z@@VE&p5Mx#HH4L$1^UR(jbXtkt%8ND3BcL2XRok9;Rbj8bQhZV*YdR|PoBJGOi3hB zYYqW&e-cHrJ3#<64iE}Mu>^YlE(HNt#7K7%M~9Ivy<+j=#oKAIAO`(Oz*52_0H+h4 z3H>ZMIJi`nELn!qLN9P|Zk*9A<0%sWdd?Q+#03pT!(ljfTY(I(EydcKgFk^hIML_0 zp`4dk%ON2lA-_n+TSGMONNN+(KA$vb&>*oy03e#8e%@7DyE7zdl;kxl#>k#jLL#VL z!ALB^Ij0V)^#ZuECQFtqm=kDLaUc;6K%HSB0VHR_gMEhR|9!7sy&w^6XN&YaMQ(|H zR62>w$ZmXrZ-n@AjM1#2PR1V4+ zjsmh!n>e|vt;sVW&5a=@0yusy#D93V6jF+_$Y&N+YDoYT-$yS25J=4&1-%;w7Q|Cr zds9kDY{|wBPbUdLAP(2$!Ot}#0MNg99J=uk8^@J_&M3tA{Ddqk%tCxk&W#g+9)4Up z>$>54AYOCQGZ*sx2-VEfv17-t2yPBSUsWK3u1*kem7!}}60jB{m83a!{R}>uYq;c5 zX-9xPo8|;!3j{5Qa|!ABdRQnS?G(udBjWpmCr+HWhNl+HzWN-5a9_~hHVQAt;AYL5 zt!9_uX7(4O0`b?9!4N=Sg7yYu(vy1z4H}dnFfgz@sRYMN<}Bvz$@Yb^Y@~wSr*ElJ zr8?7kES4CFF8XK9nzb3;gYyk>t|Fg1DEsLlG3LE}`!)=EFG(aH3j^4sNt42P{%tIb zyM1uLG;GI1UcP>G{~PW6dHeVYm8$Yfio*3F0QCOOjNQo2VWC zy97W;04%;%W=@k5$1joCc!wEBV0yM6P`-ZRnX67lU}#QaLynK zObTnV$_SWc!-fqVrSk%@1{e4UY2&r9f{)9SCl3y{JZ>OXFKIuv5^?xMQ`Zgz&`)2r zYSldX%sxc|7UqnQ)!E_U;R|8JGy03A^ZjBn(GTm_ubmZ&4geC2`apNXoYP2Rlu{Q;Cb}7%m*x+Sol^{Wa zUwB<^ab+S9sUG?A<=e-S-C@oAv|VpjC6*BKKV*bms;LjN`QIi0!UmwdIYq}!p%=Zc z5l}bi6e&{V2OR&5Ln9T&6xGCBSfs|$-#F#>hICH=iG}@vIJ98Zanz_$l_X@y$`Z~@;)BE#xBH z9rmGccKznE(ANP2@H7Apm$EB6lSMp@S**Ssc&5rLF}vUFdsVK6vtx)JF95arQZJ_> z0Px!*5)22A5XD==qU5u#UAs0@P~X=CfDd~p4w3r!@#EdZ5!$4)4Uqi4#fh8flzzmB z5%mo2NdPO7muA7gj0i1-Umc4E(XhJq?jf0;EOLVjv|^)BIrcNF&YFwG2vnW99|&Iq zzTQ_sP~F(-UzXjYt@&N~nOK-v?Bnv>zU23`W4BOV6Qbe4*Vp1}JM!lMO?@hD7Dkd5 z{M=HEbf0RG%O?dSks$}2Iu-|Tx;u7CC~V<$-e>&}L|7zzR~NA++Rf!42Izd(DFfhBbHCiGk!SaMb>Kuy+2b%H+#$N zX1BNX*1RlEC3W)Jue7&QBfnQn1avvTz7?+=;lXDH%`n<>5%Ja`;a$O&@Zezm#zZS>a+uNT{PuXm79k^<8F8ujZ z6bJ$I(8{FK|H>!eIMei)eH>gu_sq7qPEQB^^Uptn5X_|LS9sj13^stIckbM2CD{mI zaKfp)zjFXjT27DMqIhRYcXxLfK~ejEh2r;E@HKN_jA(F!)_d^a!6)>$HT7x+(^`Ybz>!afmh3xEpzipx<}0B|LD=9Nep9dm+=0{p;EhSwG(UCfR9zPrm(D1V`TY5Fq&CJt!VZ43 zxL^0zBNfwdI1-?K_!JYwv#7A;zgtYa>dpbL-Zvks`T{gEGdL5CS|uhe(cr8<26P{wWz_if$_jSHnw){+M|$>ClMQr9lqY6nKNhpsE|0k+1>#cBz)@~m>|k&v+;SI ziYa;y&H3V?cKZ)BaF)zrVPVLgyGh)6WV&?eIx&Y)m9KVVDFDC%Up@j4y0&lM9%Z)I zaw14;=^k*dmN@+d$kw4lhg}>G@Vs~L-U|yAD%4MkloMiVVUiS<-MxEv*QHCB&d~Vo zBdY81r@CqA-U+GJqt|jo!J1p0!MTCTSo{ zdY|s`p!FKc=M1*RZ-I;e ztlanP*)x&G2=ybr0b#&_+tKfhv^RcqxEC7~C{UmiJ*$@Z%tuohTU-Mtl@CLGt@>zh zN1M4Zk|tu2-$fxcBw}eGrpdaeWVOiC24B0qFZch1MA*?tSRo`vv=g{~7gQf%DZtM{ zulKlm^=dPuOoE#uX{2Dmf)G1>Rh*f6CE}!dUG_|wGVK%@Rz!S;YVXEa1GrI%2T@;e zJ&r*+GUEQ5w7;XW(rWKU66yqiC6g|SUY9v>Ov4<2?1dSrM1xB+kKsMya{`5$;>pNr zb6LCn&ozj!Ul12QPde@#{$D?JmwG?qe*yQ2i@gs}1 zxwN;dx)??JZ-~guKYskUu2)kJy?OKILK5*Eomhh?#4cB^TtQ`;DHhj>c<;2@+vlf= zo|+L>KDOLTB0#QuohNf#@!8b|8N2;g8jv83kB`sy=g*&CS+Zowd@K<_M1?!72MTZy zckZP?w1b|s1Qy_jGiASan-9&MMHIe7;bnGqw8#FJ{8;{zg6G54;^pY3Kh zyG4We4{;cY4n?%L6CEJJ!(v{Ek=oc`T!Ov~i#C!u^0F@ONCb9g~Z diff --git a/External tools/Myra.1.2.1.0/image.png b/External tools/Myra.1.2.1.0/image.png deleted file mode 100644 index 2567fe7ca4fda298a31b02ccf70974dbdd86cb3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41427 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 Hu0mjfbD)p; diff --git a/External tools/Myra.1.2.1.0/info.lundin.math.dll b/External tools/Myra.1.2.1.0/info.lundin.math.dll deleted file mode 100644 index 45cad3ad77fc819198744d6fb843eb72a11183ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 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≤mx>PeS&?AG~Oi0$iS3DcsB? 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

~G$m{z$;F3ic^uB`|zE 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

d*Bjbi$%rf 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®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"}m!IZqCu{3|uls}kZS)U%piH3b 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�rh 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 oeVVS-gvf@iLyq+jtzW<9WPK29O100@*-D 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

ua*Vb^ZEjrD)K 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 diff --git a/Sledgemapper.Api/Models copy/Users/AuthenticateModel.cs b/Sledgemapper.Api/Models/AuthenticateModel.cs similarity index 100% rename from Sledgemapper.Api/Models copy/Users/AuthenticateModel.cs rename to Sledgemapper.Api/Models/AuthenticateModel.cs diff --git a/Sledgemapper.Api/Models/Campaign.cs b/Sledgemapper.Api/Models/Campaign.cs new file mode 100644 index 0000000..6baf042 --- /dev/null +++ b/Sledgemapper.Api/Models/Campaign.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Sledgemapper.Entities; + +namespace Sledgemapper.Api.Models +{ + public class Campaign + { + [Key] + public int CampaignId { get; set; } + + [Required] + public string CampaignName { get; set; } + + [Required] + public int OwnerUserId { get; set; } + + public List InvitedUsers { get; set; } + } +} diff --git a/Sledgemapper.Api/Models/Map.cs b/Sledgemapper.Api/Models/Map.cs new file mode 100644 index 0000000..fab85ba --- /dev/null +++ b/Sledgemapper.Api/Models/Map.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Sledgemapper.Api.Models +{ + public class Map + { + [Key] + public int MapId { get; set; } + + [Required] + public string MapName { get; set; } + + + [Required] + public int CampaignId { get; set; } + + } +} diff --git a/Sledgemapper.Api/Models copy/Users/RegisterModel.cs b/Sledgemapper.Api/Models/RegisterModel.cs similarity index 100% rename from Sledgemapper.Api/Models copy/Users/RegisterModel.cs rename to Sledgemapper.Api/Models/RegisterModel.cs diff --git a/Sledgemapper.Api/Models/Session.cs b/Sledgemapper.Api/Models/Session.cs index ac1d57c..79c2ca2 100644 --- a/Sledgemapper.Api/Models/Session.cs +++ b/Sledgemapper.Api/Models/Session.cs @@ -8,7 +8,7 @@ namespace Sledgemapper.Api.Models public int SessionId { get; set; } [Required] - public string SessionName{get;set;} + public string SessionName { get; set; } [Required] public int OwnerUserId { get; set; } diff --git a/Sledgemapper.Api/Models copy/Users/UpdateModel.cs b/Sledgemapper.Api/Models/UpdateModel.cs similarity index 100% rename from Sledgemapper.Api/Models copy/Users/UpdateModel.cs rename to Sledgemapper.Api/Models/UpdateModel.cs diff --git a/Sledgemapper.Api/Models copy/Users/UserModel.cs b/Sledgemapper.Api/Models/UserModel.cs similarity index 100% rename from Sledgemapper.Api/Models copy/Users/UserModel.cs rename to Sledgemapper.Api/Models/UserModel.cs diff --git a/Sledgemapper.Api/Sledgemapper.Api.csproj b/Sledgemapper.Api/Sledgemapper.Api.csproj index be04316..6456570 100644 --- a/Sledgemapper.Api/Sledgemapper.Api.csproj +++ b/Sledgemapper.Api/Sledgemapper.Api.csproj @@ -6,17 +6,17 @@ - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + - + diff --git a/Sledgemapper.Shared/Entities/Campaign.cs b/Sledgemapper.Shared/Entities/Campaign.cs new file mode 100644 index 0000000..dda0399 --- /dev/null +++ b/Sledgemapper.Shared/Entities/Campaign.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using Sledgemapper.Shared.Entities; + +public class Campaign +{ + public Guid Id {get;set;} + public string Name { get; set; } + public List Maps {get;set;} +} \ No newline at end of file diff --git a/Sledgemapper.Shared/Entities/Session.cs b/Sledgemapper.Shared/Entities/Session.cs index 4ded5e6..f7ab3ea 100644 --- a/Sledgemapper.Shared/Entities/Session.cs +++ b/Sledgemapper.Shared/Entities/Session.cs @@ -16,6 +16,11 @@ namespace Sledgemapper.Shared.Entities public MapEntityDeletedEventArgs(BaseMapEntity mapEntity) => MapEntity = mapEntity; } +public class Map:Session +{ + +} + public class Session { public event EventHandler MapEntityAdded; diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index f46b757..4c1713d 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -42,19 +42,19 @@ --> - + - 5.0.0 + 5.0.3 - + - + diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index 321f7d2..5cdeb3a 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 04/02/2021 10:36:48 */ +/* Generated by MyraPad at 11/02/2021 23:16:18 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -91,6 +91,46 @@ namespace Sledgemapper.UI menuItem1.Items.Add(MenuConnectSync); menuItem1.Items.Add(MenuConnectUpload); + MenuCampaingNew = new MenuItem(); + MenuCampaingNew.Text = "&New"; + MenuCampaingNew.ShortcutText = "Ctrl+N"; + MenuCampaingNew.Id = "MenuCampaingNew"; + + MenuCampaignOpen = new MenuItem(); + MenuCampaignOpen.Text = "&Open"; + MenuCampaignOpen.ShortcutText = "Ctrl+O"; + MenuCampaignOpen.Id = "MenuCampaignOpen"; + + var menuSeparator4 = new MenuSeparator(); + + MenuCampaignInvite = new MenuItem(); + MenuCampaignInvite.Text = "&Invite"; + MenuCampaignInvite.ShortcutText = "Ctrl+I"; + MenuCampaignInvite.Id = "MenuCampaignInvite"; + + var menuItem2 = new MenuItem(); + menuItem2.Text = "C&aign"; + menuItem2.Items.Add(MenuCampaingNew); + menuItem2.Items.Add(MenuCampaignOpen); + menuItem2.Items.Add(menuSeparator4); + menuItem2.Items.Add(MenuCampaignInvite); + + MenuMapNew = new MenuItem(); + MenuMapNew.Text = "&New"; + MenuMapNew.ShortcutText = "Ctrl+N"; + MenuMapNew.Id = "MenuMapNew"; + + MenuMapOpen = new MenuItem(); + MenuMapOpen.Text = "&Open"; + MenuMapOpen.ShortcutText = "Ctrl+O"; + MenuMapOpen.Id = "MenuMapOpen"; + + var menuItem3 = new MenuItem(); + menuItem3.Text = "&Map"; + menuItem3.ShortcutText = "Ctrl+M"; + menuItem3.Items.Add(MenuMapNew); + menuItem3.Items.Add(MenuMapOpen); + MenuViewShowNotes = new MenuItem(); MenuViewShowNotes.Text = "N&otes"; MenuViewShowNotes.ShortcutText = "Ctrl+O"; @@ -106,19 +146,19 @@ namespace Sledgemapper.UI MenuViewCenterOnSelection.ShortcutText = "Ctrl+E"; MenuViewCenterOnSelection.Id = "MenuViewCenterOnSelection"; - var menuItem2 = new MenuItem(); - menuItem2.Text = "&View"; - menuItem2.Items.Add(MenuViewShowNotes); - menuItem2.Items.Add(MenuViewShowCellNUmbers); - menuItem2.Items.Add(MenuViewCenterOnSelection); + var menuItem4 = new MenuItem(); + menuItem4.Text = "&View"; + menuItem4.Items.Add(MenuViewShowNotes); + menuItem4.Items.Add(MenuViewShowCellNUmbers); + menuItem4.Items.Add(MenuViewCenterOnSelection); MenuHelpAbout = new MenuItem(); MenuHelpAbout.Text = "&About"; MenuHelpAbout.Id = "MenuHelpAbout"; - var menuItem3 = new MenuItem(); - menuItem3.Text = "&Help"; - menuItem3.Items.Add(MenuHelpAbout); + var menuItem5 = new MenuItem(); + menuItem5.Text = "&Help"; + menuItem5.Items.Add(MenuHelpAbout); _mainMenu = new HorizontalMenu(); _mainMenu.Id = "_mainMenu"; @@ -126,6 +166,8 @@ namespace Sledgemapper.UI _mainMenu.Items.Add(menuItem1); _mainMenu.Items.Add(menuItem2); _mainMenu.Items.Add(menuItem3); + _mainMenu.Items.Add(menuItem4); + _mainMenu.Items.Add(menuItem5); BtnToolbarLine = new ImageTextButton(); BtnToolbarLine.Text = " C"; @@ -304,6 +346,11 @@ namespace Sledgemapper.UI public MenuItem MenuConnectJoin; public MenuItem MenuConnectSync; public MenuItem MenuConnectUpload; + public MenuItem MenuCampaingNew; + public MenuItem MenuCampaignOpen; + public MenuItem MenuCampaignInvite; + public MenuItem MenuMapNew; + public MenuItem MenuMapOpen; public MenuItem MenuViewShowNotes; public MenuItem MenuViewShowCellNUmbers; public MenuItem MenuViewCenterOnSelection; diff --git a/Sledgemapper/UI/loginwindow.xml b/Sledgemapper/UI/loginwindow.xmmp similarity index 100% rename from Sledgemapper/UI/loginwindow.xml rename to Sledgemapper/UI/loginwindow.xmmp diff --git a/Sledgemapper/UI/mainwidget.xml b/Sledgemapper/UI/mainwidget.xml deleted file mode 100644 index 53e84c3..0000000 --- a/Sledgemapper/UI/mainwidget.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Sledgemapper/UI/mainwidget.xml.xmmp b/Sledgemapper/UI/mainwidget.xmmp similarity index 88% rename from Sledgemapper/UI/mainwidget.xml.xmmp rename to Sledgemapper/UI/mainwidget.xmmp index aca05ef..076b0cb 100644 --- a/Sledgemapper/UI/mainwidget.xml.xmmp +++ b/Sledgemapper/UI/mainwidget.xmmp @@ -23,6 +23,16 @@ + + + + + + + + + + diff --git a/Sledgemapper/UI/noteList.xml b/Sledgemapper/UI/noteList.xmmp similarity index 100% rename from Sledgemapper/UI/noteList.xml rename to Sledgemapper/UI/noteList.xmmp diff --git a/Sledgemapper/UI/noteListItem.xml b/Sledgemapper/UI/noteListItem.xmmp similarity index 100% rename from Sledgemapper/UI/noteListItem.xml rename to Sledgemapper/UI/noteListItem.xmmp diff --git a/Sledgemapper/UI/noteWindow.xml b/Sledgemapper/UI/noteWindow.xmmp similarity index 100% rename from Sledgemapper/UI/noteWindow.xml rename to Sledgemapper/UI/noteWindow.xmmp diff --git a/Sledgemapper/UI/sessionwindow.xml b/Sledgemapper/UI/sessionwindow.xmmp similarity index 100% rename from Sledgemapper/UI/sessionwindow.xml rename to Sledgemapper/UI/sessionwindow.xmmp From 0e1c16ab91607f96eb4c029ce7ea28cbd5f22681 Mon Sep 17 00:00:00 2001 From: Michele Date: Mon, 15 Feb 2021 23:35:55 +0000 Subject: [PATCH 08/81] refactoring backend structure --- Assets/sledgemapper.drawio | 1 + .../Controllers/UsersController.cs | 2 +- .../Entities/CampaignAggregate}/Campaign.cs | 2 +- .../Entities/CampaignAggregate}/Map.cs | 3 +- Sledgemapper.Api/Data/MyDbContext.cs | 81 ------- .../Handlers/DeleteNoteCommandHandler.cs | 6 +- .../Handlers/DeleteOverlayCommandHandler.cs | 6 +- .../Handlers/DeleteTileCommandHandler.cs | 6 +- .../Handlers/DeleteWallCommandHandler.cs | 6 +- .../Handlers/GetMapSnapshotCommandHandler.cs | 6 +- .../Handlers/NewLineCommandHandler.cs | 6 +- .../Handlers/NewNoteCommandHandler.cs | 6 +- .../Handlers/NewOverlayCommandHandler.cs | 6 +- .../Handlers/NewRoomCommandHandler.cs | 6 +- .../Handlers/NewSnapshotCommandHandler.cs | 6 +- .../Handlers/NewTileCommandHandler.cs | 6 +- .../Handlers/NewWallCommandHandler.cs | 6 +- .../Handlers/PingCommandHandler.cs | 6 +- .../Handlers/StartNewSessionHandler.cs | 6 +- Sledgemapper.Api/Helpers/DataContext.cs | 40 ++-- Sledgemapper.Api/Helpers/SqliteDataContext.cs | 28 +-- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 16 +- .../20210214232542_InitialCreate.Designer.cs | 214 ++++++++++++++++++ .../20210214232542_InitialCreate.cs | 171 ++++++++++++++ .../Migrations/MyDbContextModelSnapshot.cs | 212 +++++++++++++++++ .../Infrastructure/Data/MyDbContext.cs | 88 +++++++ .../Services/UserService.cs | 7 +- .../20200102103423_InitialCreate.Designer.cs | 53 ----- .../20200102103423_InitialCreate.cs | 33 --- .../DataContextModelSnapshot.cs | 51 ----- .../20200102102942_InitialCreate.Designer.cs | 52 ----- .../20200102102942_InitialCreate.cs | 34 --- .../SqliteDataContextModelSnapshot.cs | 50 ---- Sledgemapper.Api/{Entities => Models}/User.cs | 0 Sledgemapper.Api/Program.cs | 6 +- Sledgemapper.Api/Startup.cs | 12 +- 36 files changed, 786 insertions(+), 454 deletions(-) create mode 100644 Assets/sledgemapper.drawio rename Sledgemapper.Api/{Models => Core/Entities/CampaignAggregate}/Campaign.cs (87%) rename Sledgemapper.Api/{Models => Core/Entities/CampaignAggregate}/Map.cs (81%) delete mode 100644 Sledgemapper.Api/Data/MyDbContext.cs create mode 100644 Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs create mode 100644 Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs create mode 100644 Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs create mode 100644 Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs rename Sledgemapper.Api/{ => Infrastructure}/Services/UserService.cs (96%) delete mode 100644 Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.Designer.cs delete mode 100644 Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.cs delete mode 100644 Sledgemapper.Api/Migrations/SqlServerMigrations/DataContextModelSnapshot.cs delete mode 100644 Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.Designer.cs delete mode 100644 Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.cs delete mode 100644 Sledgemapper.Api/Migrations/SqliteMigrations/SqliteDataContextModelSnapshot.cs rename Sledgemapper.Api/{Entities => Models}/User.cs (100%) diff --git a/Assets/sledgemapper.drawio b/Assets/sledgemapper.drawio new file mode 100644 index 0000000..d445036 --- /dev/null +++ b/Assets/sledgemapper.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/UsersController.cs b/Sledgemapper.Api/Controllers/UsersController.cs index 7988025..faf3f3a 100644 --- a/Sledgemapper.Api/Controllers/UsersController.cs +++ b/Sledgemapper.Api/Controllers/UsersController.cs @@ -9,10 +9,10 @@ using System.Text; using Microsoft.IdentityModel.Tokens; using System.Security.Claims; using Microsoft.AspNetCore.Authorization; -using Sledgemapper.Services; using Sledgemapper.Entities; using Sledgemapper.Models.Users; using Sledgemapper.Helpers; +using Sledgemapper.Api.Infrastructure.Services; namespace Sledgemapper.Controllers { diff --git a/Sledgemapper.Api/Models/Campaign.cs b/Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs similarity index 87% rename from Sledgemapper.Api/Models/Campaign.cs rename to Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs index 6baf042..7d9b6ab 100644 --- a/Sledgemapper.Api/Models/Campaign.cs +++ b/Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Sledgemapper.Entities; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities.CampaignAggregate { public class Campaign { diff --git a/Sledgemapper.Api/Models/Map.cs b/Sledgemapper.Api/Core/Entities/CampaignAggregate/Map.cs similarity index 81% rename from Sledgemapper.Api/Models/Map.cs rename to Sledgemapper.Api/Core/Entities/CampaignAggregate/Map.cs index fab85ba..44ed87b 100644 --- a/Sledgemapper.Api/Models/Map.cs +++ b/Sledgemapper.Api/Core/Entities/CampaignAggregate/Map.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities.CampaignAggregate { public class Map { @@ -10,7 +10,6 @@ namespace Sledgemapper.Api.Models [Required] public string MapName { get; set; } - [Required] public int CampaignId { get; set; } diff --git a/Sledgemapper.Api/Data/MyDbContext.cs b/Sledgemapper.Api/Data/MyDbContext.cs deleted file mode 100644 index aca62cd..0000000 --- a/Sledgemapper.Api/Data/MyDbContext.cs +++ /dev/null @@ -1,81 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Sledgemapper.Api.Models; -namespace Sledgemapper.Api.Data -{ - public static class DbInitializer - { - public static void Initialize(MyDbContext context) - { - context.Database.EnsureCreated(); - } - } - - public class MyDbContext : DbContext - { - public DbSet MapLogs { get; set; } - public DbSet Sessions { get; set; } - public DbSet UserConnections { get; set; } - public DbSet SessionUsers { get; set; } - public DbSet Snapshots { get; set; } - - public MyDbContext(DbContextOptions options) : base(options) - { - - } - - // protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - // { - // // optionsBuilder. - // // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); - // // optionsBuilder.UseSqlite("Filename=SledgemapperDatabase.db", options => - // // { - // // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); - // // }); - // optionsBuilder.UseSqlite("Filename=MyDatabase.db").UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); - - // base.OnConfiguring(optionsBuilder); - // } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - // Map table names - modelBuilder.Entity().ToTable("MapLog", "dbo"); - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.MapLogId); - }); - - modelBuilder.Entity().ToTable("Session", "dbo"); - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.SessionId); - entity.HasIndex(e => e.SessionName).IsUnique(); - }); - - - modelBuilder.Entity().ToTable("UserConnection", "dbo"); - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.UserConnectionId); - entity.HasIndex(e => e.UserId); - - }); - - modelBuilder.Entity().ToTable("SessionUser", "dbo"); - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.SessionUserId); - entity.HasIndex(e => e.SessionId); - - }); - - modelBuilder.Entity().ToTable("Snapshot", "dbo"); - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.SnapshotId); - }); - - base.OnModelCreating(modelBuilder); - } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs index dc8223b..9bb34d1 100644 --- a/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; @@ -13,11 +13,11 @@ namespace Sledgemapper.Api.Handlers public class DeleteNoteCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public DeleteNoteCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public DeleteNoteCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(DeleteNoteCommand notification, CancellationToken cancellationToken) diff --git a/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs index 5069970..6ec62bf 100644 --- a/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs @@ -1,6 +1,6 @@ using MediatR; using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Notifications; using System.Linq; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class DeleteOverlayCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public DeleteOverlayCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public DeleteOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(DeleteOverlayCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs index 40e9858..8e5cb52 100644 --- a/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs @@ -1,7 +1,7 @@ using MediatR; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using System.Linq; using System.Text.Json; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class DeleteTileCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public DeleteTileCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public DeleteTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(DeleteTileCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs index 5fdb16a..3daef43 100644 --- a/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; @@ -13,11 +13,11 @@ namespace Sledgemapper.Api.Handlers public class DeleteWallCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public DeleteWallCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public DeleteWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(DeleteWallCommand notification, CancellationToken cancellationToken) diff --git a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs index 6b542c1..d8960cf 100644 --- a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using System.Text.Json; using System.Threading; @@ -11,9 +11,9 @@ namespace Sledgemapper.Api.Commands { public class GetMapSnapshotCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; - public GetMapSnapshotCommandHandler(MyDbContext dbcontext) { _dbcontext = dbcontext; } + public GetMapSnapshotCommandHandler(SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; } public async Task Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs index 4901dae..d6e9e56 100644 --- a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; using System.Linq; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class NewLineCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewLineCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewLineCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewLineCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs index 5a50e45..8c19a2c 100644 --- a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class NewNoteCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewNoteCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewNoteCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewNoteCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 817a37f..92fc4f0 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -1,7 +1,7 @@ using MediatR; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using System.Linq; using System.Text.Json; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class NewOverlayCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewOverlayCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewOverlayCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs b/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs index 73561a1..a48e10b 100644 --- a/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; using System.Linq; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class NewRoomCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewRoomCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewRoomCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewRoomCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs index e6d88e0..0a811d5 100644 --- a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using System.Text.Json; using System.Threading; @@ -10,10 +10,10 @@ namespace Sledgemapper.Api.Commands { public class NewSnapshotCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewSnapshotCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewSnapshotCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewSnapshotCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs index 6b0a55c..cf3aae1 100644 --- a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using System.Text.Json; using System.Threading; @@ -12,10 +12,10 @@ namespace Sledgemapper.Api.Commands { public class NewTileCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewTileCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewTileCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs index af69b69..76e1c3c 100644 --- a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs @@ -1,5 +1,5 @@ using MediatR; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; @@ -12,11 +12,11 @@ namespace Sledgemapper.Api.Handlers { public class NewWallCommandHandler : IRequestHandler { - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; private readonly IMediator _mediator; - public NewWallCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } + public NewWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } public async Task Handle(NewWallCommand notification, CancellationToken cancellationToken) { diff --git a/Sledgemapper.Api/Handlers/PingCommandHandler.cs b/Sledgemapper.Api/Handlers/PingCommandHandler.cs index efc9325..9d3c53a 100644 --- a/Sledgemapper.Api/Handlers/PingCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/PingCommandHandler.cs @@ -1,5 +1,5 @@ // using MediatR; -// using Sledgemapper.Api.Data; +// using Sledgemapper.Api.Infrastructure.Data; // using System.Threading; // using System.Threading.Tasks; // using Sledgemapper.Api.Notifications; @@ -9,10 +9,10 @@ // { // public class PingCommandHandler : IRequestHandler // { -// private readonly MyDbContext _dbcontext; +// private readonly SledgemapperDbContext _dbcontext; // private readonly IMediator _mediator; -// public PingCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } +// public PingCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } // public async Task Handle(PingCommand notification, CancellationToken cancellationToken) // { diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index 211b019..ad745fa 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -1,6 +1,6 @@ using MediatR; using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Models; using System.Threading; using System.Threading.Tasks; @@ -10,9 +10,9 @@ namespace Sledgemapper.Api.Handlers public class StartNewSessionHandler : IRequestHandler { private readonly IMediator _mediator; - private readonly MyDbContext _dbcontext; + private readonly SledgemapperDbContext _dbcontext; - public StartNewSessionHandler(IMediator mediator, MyDbContext dbcontext) + public StartNewSessionHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _mediator = mediator; _dbcontext = dbcontext; diff --git a/Sledgemapper.Api/Helpers/DataContext.cs b/Sledgemapper.Api/Helpers/DataContext.cs index 905b1b2..33a3b85 100644 --- a/Sledgemapper.Api/Helpers/DataContext.cs +++ b/Sledgemapper.Api/Helpers/DataContext.cs @@ -1,24 +1,24 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Sledgemapper.Entities; +// using Microsoft.EntityFrameworkCore; +// using Microsoft.Extensions.Configuration; +// using Sledgemapper.Entities; -namespace Sledgemapper.Helpers -{ - public class DataContext : DbContext - { - protected readonly IConfiguration Configuration; +// namespace Sledgemapper.Helpers +// { +// public class DataContext : DbContext +// { +// protected readonly IConfiguration Configuration; - public DataContext(IConfiguration configuration) - { - Configuration = configuration; - } +// public DataContext(IConfiguration configuration) +// { +// Configuration = configuration; +// } - protected override void OnConfiguring(DbContextOptionsBuilder options) - { - // connect to sql server database - options.UseSqlServer(Configuration.GetConnectionString("WebApiDatabase")); - } +// protected override void OnConfiguring(DbContextOptionsBuilder options) +// { +// // connect to sql server database +// options.UseSqlServer(Configuration.GetConnectionString("WebApiDatabase")); +// } - public DbSet Users { get; set; } - } -} \ No newline at end of file +// public DbSet Users { get; set; } +// } +// } \ No newline at end of file diff --git a/Sledgemapper.Api/Helpers/SqliteDataContext.cs b/Sledgemapper.Api/Helpers/SqliteDataContext.cs index 5b799b9..67a7ca9 100644 --- a/Sledgemapper.Api/Helpers/SqliteDataContext.cs +++ b/Sledgemapper.Api/Helpers/SqliteDataContext.cs @@ -1,16 +1,16 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; +// using Microsoft.EntityFrameworkCore; +// using Microsoft.Extensions.Configuration; -namespace Sledgemapper.Helpers -{ - public class SqliteDataContext : DataContext - { - public SqliteDataContext(IConfiguration configuration) : base(configuration) { } +// namespace Sledgemapper.Helpers +// { +// public class SqliteDataContext : DataContext +// { +// public SqliteDataContext(IConfiguration configuration) : base(configuration) { } - protected override void OnConfiguring(DbContextOptionsBuilder options) - { - // connect to sqlite database - options.UseSqlite(Configuration.GetConnectionString("WebApiDatabase")); - } - } -} \ No newline at end of file +// protected override void OnConfiguring(DbContextOptionsBuilder options) +// { +// // connect to sqlite database +// options.UseSqlite(Configuration.GetConnectionString("WebApiDatabase")); +// } +// } +// } \ No newline at end of file diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 235af86..03bce2b 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -6,7 +6,7 @@ using System.Collections.Concurrent; using Sledgemapper.Shared.Entities; using Sledgemapper.Clients; using System; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Microsoft.AspNetCore.Authorization; using Sledgemapper.Api.Models; using Sledgemapper.Helpers; @@ -17,13 +17,13 @@ namespace Sledgemapper.Api.Hubs public class SledgemapperHub : Hub { private static readonly ConcurrentDictionary UserColors = new(); - private readonly MyDbContext _dbContext; - private readonly DataContext _datacontext; + private readonly SledgemapperDbContext _dbContext; + // private readonly DataContext _datacontext; - public SledgemapperHub(MyDbContext dbContext, DataContext datacontext) + public SledgemapperHub(SledgemapperDbContext dbContext/*, DataContext datacontext*/) { _dbContext = dbContext; - _datacontext = datacontext; + // _datacontext = datacontext; } // other colors @@ -89,7 +89,7 @@ namespace Sledgemapper.Api.Hubs public async Task Ping(string sessionName, Tile location) { var userId = int.Parse(Context.User.Identity.Name); - var user = _datacontext.Users.First(u => u.Id == userId); + var user = _dbContext.Users.First(u => u.Id == userId); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; await Clients.Group(sessionName).Ping(new Ping{X=location.X, Y=location.Y, Player=player}); @@ -106,7 +106,7 @@ namespace Sledgemapper.Api.Hubs _dbContext.SessionUsers.Add(userSession); await _dbContext.SaveChangesAsync(); await Groups.AddToGroupAsync(Context.ConnectionId, session.SessionName); - var user = _datacontext.Users.First(u => u.Id == userId); + var user = _dbContext.Users.First(u => u.Id == userId); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; @@ -131,7 +131,7 @@ namespace Sledgemapper.Api.Hubs { var userId = int.Parse(Context.User.Identity.Name); var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); - var user = _datacontext.Users.First(u => u.Id == userId); + var user = _dbContext.Users.First(u => u.Id == userId); var player = new Player { UserId = userId, Initials = user.Initials, Position = tile, Color = UserColors[userId] }; await Clients.Group(sessionName).PlayerUpdate(player); } diff --git a/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs b/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs new file mode 100644 index 0000000..9ad309b --- /dev/null +++ b/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs @@ -0,0 +1,214 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210214232542_InitialCreate")] + partial class InitialCreate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.3"); + + modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.HasKey("CampaignId"); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("BLOB"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.Property("Username") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CampaignId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Sledgemapper.Api.Models.Campaign", null) + .WithMany("InvitedUsers") + .HasForeignKey("CampaignId"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + { + b.Navigation("InvitedUsers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs b/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs new file mode 100644 index 0000000..e9d609a --- /dev/null +++ b/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs @@ -0,0 +1,171 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class InitialCreate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Campaigns", + columns: table => new + { + CampaignId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + CampaignName = table.Column(type: "TEXT", nullable: false), + OwnerUserId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Campaigns", x => x.CampaignId); + }); + + migrationBuilder.CreateTable( + name: "MapLogs", + columns: table => new + { + MapLogId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + UserId = table.Column(type: "INTEGER", nullable: false), + SessionId = table.Column(type: "INTEGER", nullable: false), + Operation = table.Column(type: "TEXT", maxLength: 1, nullable: false), + Type = table.Column(type: "TEXT", maxLength: 256, nullable: false), + Object = table.Column(type: "TEXT", maxLength: 256, nullable: false), + Timestamp = table.Column(type: "REAL", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MapLogs", x => x.MapLogId); + }); + + migrationBuilder.CreateTable( + name: "Maps", + columns: table => new + { + MapId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + MapName = table.Column(type: "TEXT", nullable: false), + CampaignId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Maps", x => x.MapId); + }); + + migrationBuilder.CreateTable( + name: "Sessions", + columns: table => new + { + SessionId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + SessionName = table.Column(type: "TEXT", nullable: false), + OwnerUserId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Sessions", x => x.SessionId); + }); + + migrationBuilder.CreateTable( + name: "SessionUsers", + columns: table => new + { + SessionUserId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + SessionId = table.Column(type: "INTEGER", nullable: false), + UserId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SessionUsers", x => x.SessionUserId); + }); + + migrationBuilder.CreateTable( + name: "Snapshots", + columns: table => new + { + SnapshotId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + SessionId = table.Column(type: "INTEGER", nullable: false), + Object = table.Column(type: "TEXT", nullable: false), + Timestamp = table.Column(type: "REAL", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Snapshots", x => x.SnapshotId); + }); + + migrationBuilder.CreateTable( + name: "UserConnections", + columns: table => new + { + UserConnectionId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + UserId = table.Column(type: "INTEGER", nullable: false), + ConnectionId = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserConnections", x => x.UserConnectionId); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + FirstName = table.Column(type: "TEXT", nullable: true), + LastName = table.Column(type: "TEXT", nullable: true), + Username = table.Column(type: "TEXT", nullable: true), + Initials = table.Column(type: "TEXT", nullable: true), + PasswordHash = table.Column(type: "BLOB", nullable: true), + PasswordSalt = table.Column(type: "BLOB", nullable: true), + CampaignId = table.Column(type: "INTEGER", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + table.ForeignKey( + name: "FK_Users_Campaigns_CampaignId", + column: x => x.CampaignId, + principalTable: "Campaigns", + principalColumn: "CampaignId", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_Users_CampaignId", + table: "Users", + column: "CampaignId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "MapLogs"); + + migrationBuilder.DropTable( + name: "Maps"); + + migrationBuilder.DropTable( + name: "Sessions"); + + migrationBuilder.DropTable( + name: "SessionUsers"); + + migrationBuilder.DropTable( + name: "Snapshots"); + + migrationBuilder.DropTable( + name: "UserConnections"); + + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropTable( + name: "Campaigns"); + } + } +} diff --git a/Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs b/Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs new file mode 100644 index 0000000..409062f --- /dev/null +++ b/Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs @@ -0,0 +1,212 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + partial class SledgemapperDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.3"); + + modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.HasKey("CampaignId"); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("BLOB"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.Property("Username") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CampaignId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Sledgemapper.Api.Models.Campaign", null) + .WithMany("InvitedUsers") + .HasForeignKey("CampaignId"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + { + b.Navigation("InvitedUsers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs b/Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs new file mode 100644 index 0000000..26b39bf --- /dev/null +++ b/Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs @@ -0,0 +1,88 @@ +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Core.Entities.CampaignAggregate; +using Sledgemapper.Api.Models; +using Sledgemapper.Entities; + +namespace Sledgemapper.Api.Infrastructure.Data +{ + // public static class DbInitializer + // { + // public static void Initialize(SledgemapperDbContext context) + // { + // context.Database.EnsureCreated(); + // } + // } + + public class SledgemapperDbContext : DbContext + { + public DbSet Campaigns { get; set; } + public DbSet MapLogs { get; set; } + public DbSet Maps { get; set; } + public DbSet Sessions { get; set; } + public DbSet SessionUsers { get; set; } + public DbSet Snapshots { get; set; } + public DbSet Users { get; set; } + public DbSet UserConnections { get; set; } + + public SledgemapperDbContext(DbContextOptions options) : base(options) + { + + } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + // optionsBuilder. + // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); + // optionsBuilder.UseSqlite("Filename=SledgemapperDatabase.db", options => + // { + // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); + // }); + + optionsBuilder.UseSqlite("Filename=Sledgemapper.db").UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); + + base.OnConfiguring(optionsBuilder); + } + + // protected override void OnModelCreating(ModelBuilder modelBuilder) + // { + // // Map table names + // modelBuilder.Entity().ToTable("MapLog", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.MapLogId); + // }); + + // modelBuilder.Entity().ToTable("Session", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.SessionId); + // entity.HasIndex(e => e.SessionName).IsUnique(); + // }); + + + // modelBuilder.Entity().ToTable("UserConnection", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.UserConnectionId); + // entity.HasIndex(e => e.UserId); + + // }); + + // modelBuilder.Entity().ToTable("SessionUser", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.SessionUserId); + // entity.HasIndex(e => e.SessionId); + + // }); + + // modelBuilder.Entity().ToTable("Snapshot", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.SnapshotId); + // }); + + // base.OnModelCreating(modelBuilder); + // } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Services/UserService.cs b/Sledgemapper.Api/Infrastructure/Services/UserService.cs similarity index 96% rename from Sledgemapper.Api/Services/UserService.cs rename to Sledgemapper.Api/Infrastructure/Services/UserService.cs index 6bc586b..8e1eed9 100644 --- a/Sledgemapper.Api/Services/UserService.cs +++ b/Sledgemapper.Api/Infrastructure/Services/UserService.cs @@ -1,10 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Entities; using Sledgemapper.Helpers; -namespace Sledgemapper.Services +namespace Sledgemapper.Api.Infrastructure.Services { public interface IUserService { @@ -18,9 +19,9 @@ namespace Sledgemapper.Services public class UserService : IUserService { - private DataContext _context; + private SledgemapperDbContext _context; - public UserService(DataContext context) + public UserService(SledgemapperDbContext context) { _context = context; } diff --git a/Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.Designer.cs b/Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.Designer.cs deleted file mode 100644 index 1d57dc6..0000000 --- a/Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.Designer.cs +++ /dev/null @@ -1,53 +0,0 @@ -// // -// using System; -// using Microsoft.EntityFrameworkCore; -// using Microsoft.EntityFrameworkCore.Infrastructure; -// using Microsoft.EntityFrameworkCore.Metadata; -// using Microsoft.EntityFrameworkCore.Migrations; -// using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -// using Sledgemapper.Helpers; - -// namespace Sledgemapper.Migrations.SqlServerMigrations -// { -// [DbContext(typeof(DataContext))] -// [Migration("20200102103423_InitialCreate")] -// partial class InitialCreate -// { -// protected override void BuildTargetModel(ModelBuilder modelBuilder) -// { -// #pragma warning disable 612, 618 -// modelBuilder -// .HasAnnotation("ProductVersion", "3.1.0") -// .HasAnnotation("Relational:MaxIdentifierLength", 128) -// .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - -// modelBuilder.Entity("Sledgemapper.Entities.User", b => -// { -// b.Property("Id") -// .ValueGeneratedOnAdd() -// .HasColumnType("int") -// .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - -// b.Property("FirstName") -// .HasColumnType("nvarchar(max)"); - -// b.Property("LastName") -// .HasColumnType("nvarchar(max)"); - -// b.Property("PasswordHash") -// .HasColumnType("varbinary(max)"); - -// b.Property("PasswordSalt") -// .HasColumnType("varbinary(max)"); - -// b.Property("Username") -// .HasColumnType("nvarchar(max)"); - -// b.HasKey("Id"); - -// b.ToTable("Users"); -// }); -// #pragma warning restore 612, 618 -// } -// } -// } diff --git a/Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.cs b/Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.cs deleted file mode 100644 index cae048f..0000000 --- a/Sledgemapper.Api/Migrations/SqlServerMigrations/20200102103423_InitialCreate.cs +++ /dev/null @@ -1,33 +0,0 @@ -// using Microsoft.EntityFrameworkCore.Migrations; - -// namespace Sledgemapper.Migrations.SqlServerMigrations -// { -// public partial class InitialCreate : Migration -// { -// protected override void Up(MigrationBuilder migrationBuilder) -// { -// migrationBuilder.CreateTable( -// name: "Users", -// columns: table => new -// { -// Id = table.Column(nullable: false) -// .Annotation("SqlServer:Identity", "1, 1"), -// FirstName = table.Column(nullable: true), -// LastName = table.Column(nullable: true), -// Username = table.Column(nullable: true), -// PasswordHash = table.Column(nullable: true), -// PasswordSalt = table.Column(nullable: true) -// }, -// constraints: table => -// { -// table.PrimaryKey("PK_Users", x => x.Id); -// }); -// } - -// protected override void Down(MigrationBuilder migrationBuilder) -// { -// migrationBuilder.DropTable( -// name: "Users"); -// } -// } -// } diff --git a/Sledgemapper.Api/Migrations/SqlServerMigrations/DataContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SqlServerMigrations/DataContextModelSnapshot.cs deleted file mode 100644 index d481d75..0000000 --- a/Sledgemapper.Api/Migrations/SqlServerMigrations/DataContextModelSnapshot.cs +++ /dev/null @@ -1,51 +0,0 @@ -// // -// using System; -// using Microsoft.EntityFrameworkCore; -// using Microsoft.EntityFrameworkCore.Infrastructure; -// using Microsoft.EntityFrameworkCore.Metadata; -// using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -// using Sledgemapper.Helpers; - -// namespace Sledgemapper.Migrations.SqlServerMigrations -// { -// [DbContext(typeof(DataContext))] -// partial class DataContextModelSnapshot : ModelSnapshot -// { -// protected override void BuildModel(ModelBuilder modelBuilder) -// { -// #pragma warning disable 612, 618 -// modelBuilder -// .HasAnnotation("ProductVersion", "3.1.0") -// .HasAnnotation("Relational:MaxIdentifierLength", 128) -// .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - -// modelBuilder.Entity("Sledgemapper.Entities.User", b => -// { -// b.Property("Id") -// .ValueGeneratedOnAdd() -// .HasColumnType("int") -// .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); - -// b.Property("FirstName") -// .HasColumnType("nvarchar(max)"); - -// b.Property("LastName") -// .HasColumnType("nvarchar(max)"); - -// b.Property("PasswordHash") -// .HasColumnType("varbinary(max)"); - -// b.Property("PasswordSalt") -// .HasColumnType("varbinary(max)"); - -// b.Property("Username") -// .HasColumnType("nvarchar(max)"); - -// b.HasKey("Id"); - -// b.ToTable("Users"); -// }); -// #pragma warning restore 612, 618 -// } -// } -// } diff --git a/Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.Designer.cs b/Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.Designer.cs deleted file mode 100644 index 1bf96db..0000000 --- a/Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.Designer.cs +++ /dev/null @@ -1,52 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Sledgemapper.Helpers; - -namespace Sledgemapper.Migrations.SqliteMigrations -{ - [DbContext(typeof(SqliteDataContext))] - [Migration("20200102102942_InitialCreate")] - partial class InitialCreate - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "3.1.0"); - - modelBuilder.Entity("Sledgemapper.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("FirstName") - .HasColumnType("TEXT"); - - b.Property("LastName") - .HasColumnType("TEXT"); - - b.Property("Initials") - .HasColumnType("TEXT"); - - b.Property("PasswordHash") - .HasColumnType("BLOB"); - - b.Property("PasswordSalt") - .HasColumnType("BLOB"); - - b.Property("Username") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("Users"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.cs b/Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.cs deleted file mode 100644 index 65b8fc1..0000000 --- a/Sledgemapper.Api/Migrations/SqliteMigrations/20200102102942_InitialCreate.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Sledgemapper.Migrations.SqliteMigrations -{ - public partial class InitialCreate : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Users", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - FirstName = table.Column(nullable: true), - LastName = table.Column(nullable: true), - Username = table.Column(nullable: true), - Initials = table.Column(nullable: true), - PasswordHash = table.Column(nullable: true), - PasswordSalt = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Users", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Users"); - } - } -} diff --git a/Sledgemapper.Api/Migrations/SqliteMigrations/SqliteDataContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SqliteMigrations/SqliteDataContextModelSnapshot.cs deleted file mode 100644 index d1eab3f..0000000 --- a/Sledgemapper.Api/Migrations/SqliteMigrations/SqliteDataContextModelSnapshot.cs +++ /dev/null @@ -1,50 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Sledgemapper.Helpers; - -namespace Sledgemapper.Migrations.SqliteMigrations -{ - [DbContext(typeof(SqliteDataContext))] - partial class SqliteDataContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "3.1.0"); - - modelBuilder.Entity("Sledgemapper.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("FirstName") - .HasColumnType("TEXT"); - - b.Property("LastName") - .HasColumnType("TEXT"); - - b.Property("Initials") - .HasColumnType("TEXT"); - - b.Property("PasswordHash") - .HasColumnType("BLOB"); - - b.Property("PasswordSalt") - .HasColumnType("BLOB"); - - b.Property("Username") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("Users"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Sledgemapper.Api/Entities/User.cs b/Sledgemapper.Api/Models/User.cs similarity index 100% rename from Sledgemapper.Api/Entities/User.cs rename to Sledgemapper.Api/Models/User.cs diff --git a/Sledgemapper.Api/Program.cs b/Sledgemapper.Api/Program.cs index f8fd8e5..774d2dc 100644 --- a/Sledgemapper.Api/Program.cs +++ b/Sledgemapper.Api/Program.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; namespace Sledgemapper.Api { @@ -37,8 +37,8 @@ namespace Sledgemapper.Api var services = scope.ServiceProvider; try { - var context = services.GetRequiredService(); - DbInitializer.Initialize(context); + var context = services.GetRequiredService(); + // DbInitializer.Initialize(context); } catch (Exception ex) { diff --git a/Sledgemapper.Api/Startup.cs b/Sledgemapper.Api/Startup.cs index 64ee362..137a667 100644 --- a/Sledgemapper.Api/Startup.cs +++ b/Sledgemapper.Api/Startup.cs @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Sledgemapper.Api.Data; +using Sledgemapper.Api.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using MediatR; using Microsoft.IdentityModel.Tokens; @@ -14,9 +14,9 @@ using Sledgemapper.Helpers; using Microsoft.AspNetCore.Authentication.JwtBearer; using System.Text; using AutoMapper; -using Sledgemapper.Services; using System.Security.Claims; using Sledgemapper.Api.Hubs; +using Sledgemapper.Api.Infrastructure.Services; namespace Sledgemapper.Api { @@ -38,7 +38,7 @@ namespace Sledgemapper.Api // if (_env.IsProduction()) // services.AddDbContext(); // else - services.AddDbContext(); + // services.AddDbContext(); // services.AddRazorPages(); services.AddCors(); @@ -46,9 +46,9 @@ namespace Sledgemapper.Api services.AddSignalR(); services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddMediatR(typeof(Startup)); - services.AddDbContext(options => {options.UseSqlite("Data Source=db/sledgemapper.db"); options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);}); + services.AddDbContext(options => {options.UseSqlite("Data Source=db/sledgemapper.db"); options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);}); - // services.AddEntityFrameworkSqlite().AddDbContext(); + // services.AddEntityFrameworkSqlite().AddDbContext(); // configure strongly typed settings objects var c = Configuration.GetSection("AppSettings"); var appSettingsSection = Configuration.GetSection("AppSettings"); @@ -98,7 +98,7 @@ namespace Sledgemapper.Api } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env, DataContext dataContext) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, SledgemapperDbContext dataContext) { dataContext.Database.Migrate(); From aa472f9e293f5586451e51356c7310e389688ec8 Mon Sep 17 00:00:00 2001 From: Michele Date: Sat, 20 Feb 2021 00:18:07 +0000 Subject: [PATCH 09/81] db and auth refactoring --- README.md | 31 ++ .../Commands/NewSessionCommand.cs | 29 +- .../Controllers/AuthManagementController.cs | 184 +++++++ .../Controllers/CampaignController.cs | 39 ++ .../Controllers/SessionController.cs | 70 +-- .../Controllers/UsersController.cs | 136 ----- Sledgemapper.Api/Core/Entities/BaseEntity.cs | 7 + Sledgemapper.Api/Core/Entities/Campaign.cs | 21 + .../Entities/CampaignAggregate/Campaign.cs | 20 - .../Entities/{CampaignAggregate => }/Map.cs | 2 +- .../{Models => Core/Entities}/MapLog.cs | 0 .../{Models => Core/Entities}/Session.cs | 0 .../{Models => Core/Entities}/SessionUser.cs | 0 .../{Models => Core/Entities}/Snapshot.cs | 0 Sledgemapper.Api/Core/Entities/User.cs | 18 + .../Entities}/UserConnection.cs | 0 .../Handlers/NewCampaignCommandHandler.cs | 78 +++ Sledgemapper.Api/Helpers/AppSettings.cs | 7 - Sledgemapper.Api/Helpers/AutoMapperProfile.cs | 2 - Sledgemapper.Api/Helpers/DataContext.cs | 24 - Sledgemapper.Api/Helpers/SqliteDataContext.cs | 16 - Sledgemapper.Api/Hubs/SledgemapperHub.cs | 6 +- .../Infrastructure/Data/MyDbContext.cs | 88 --- .../Data/SledgemapperDbContext.cs | 96 ++++ .../Infrastructure/Services/UserService.cs | 160 ------ Sledgemapper.Api/JwtConfig.cs | 7 + .../20210219223114_InitialCreate.Designer.cs} | 76 ++- .../20210219223114_InitialCreate.cs} | 120 +++-- ...ing authentication to our Api.Designer.cs} | 80 ++- ...223251_Adding authentication to our Api.cs | 17 + .../20210219230948_rename table.Designer.cs | 505 ++++++++++++++++++ .../Migrations/20210219230948_rename table.cs | 315 +++++++++++ .../SledgemapperDbContextModelSnapshot.cs | 503 +++++++++++++++++ Sledgemapper.Api/Models/AuthResult.cs | 11 + Sledgemapper.Api/Models/RegisterModel.cs | 6 +- .../Models/RegistrationResponse.cs | 7 + Sledgemapper.Api/Models/UpdateModel.cs | 10 - Sledgemapper.Api/Models/User.cs | 13 - Sledgemapper.Api/Models/UserLoginRequest.cs | 12 + Sledgemapper.Api/Models/UserModel.cs | 11 - Sledgemapper.Api/Sledgemapper.Api.csproj | 4 + Sledgemapper.Api/Startup.cs | 102 ++-- Sledgemapper.Api/appsettings.json | 30 +- Sledgemapper/UI/MainWidget.Generated.cs | 14 +- Sledgemapper/UI/mainwidget.xmmp | 2 +- 45 files changed, 2182 insertions(+), 697 deletions(-) create mode 100644 Sledgemapper.Api/Controllers/AuthManagementController.cs create mode 100644 Sledgemapper.Api/Controllers/CampaignController.cs delete mode 100644 Sledgemapper.Api/Controllers/UsersController.cs create mode 100644 Sledgemapper.Api/Core/Entities/BaseEntity.cs create mode 100644 Sledgemapper.Api/Core/Entities/Campaign.cs delete mode 100644 Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs rename Sledgemapper.Api/Core/Entities/{CampaignAggregate => }/Map.cs (81%) rename Sledgemapper.Api/{Models => Core/Entities}/MapLog.cs (100%) rename Sledgemapper.Api/{Models => Core/Entities}/Session.cs (100%) rename Sledgemapper.Api/{Models => Core/Entities}/SessionUser.cs (100%) rename Sledgemapper.Api/{Models => Core/Entities}/Snapshot.cs (100%) create mode 100644 Sledgemapper.Api/Core/Entities/User.cs rename Sledgemapper.Api/{Models => Core/Entities}/UserConnection.cs (100%) create mode 100644 Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs delete mode 100644 Sledgemapper.Api/Helpers/AppSettings.cs delete mode 100644 Sledgemapper.Api/Helpers/DataContext.cs delete mode 100644 Sledgemapper.Api/Helpers/SqliteDataContext.cs delete mode 100644 Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs create mode 100644 Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs delete mode 100644 Sledgemapper.Api/Infrastructure/Services/UserService.cs create mode 100644 Sledgemapper.Api/JwtConfig.cs rename Sledgemapper.Api/{Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs => Migrations/20210219223114_InitialCreate.Designer.cs} (73%) rename Sledgemapper.Api/{Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs => Migrations/20210219223114_InitialCreate.cs} (73%) rename Sledgemapper.Api/{Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs => Migrations/20210219223251_Adding authentication to our Api.Designer.cs} (71%) create mode 100644 Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.cs create mode 100644 Sledgemapper.Api/Migrations/20210219230948_rename table.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210219230948_rename table.cs create mode 100644 Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs create mode 100644 Sledgemapper.Api/Models/AuthResult.cs create mode 100644 Sledgemapper.Api/Models/RegistrationResponse.cs delete mode 100644 Sledgemapper.Api/Models/UpdateModel.cs delete mode 100644 Sledgemapper.Api/Models/User.cs create mode 100644 Sledgemapper.Api/Models/UserLoginRequest.cs delete mode 100644 Sledgemapper.Api/Models/UserModel.cs diff --git a/README.md b/README.md index df28940..a4a586e 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,35 @@ to start the container run: ``` docker run --name= -p:5000:80 -v /home/michele/sledgemapper/:/app/db -d privateregistry.michelescandura.com/michele/sledgemapper: +``` + +Curl + +Register user +``` + curl -i -X POST -H "Content-Type: application/json" http://localhost:5000/users/register -d '{\"FirstName\":\"Michele\",\"LastName\":\"Scandura\", \"Username\":\"michele.scandura@outlook.com\", \"Password\":\"password1\", \"Initials\":\"MS\"}' +``` + +Login +``` + curl -i -X POST -H "Content-Type: application/json" http://localhost:5000/users/authenticate -d '{\"Username\":\"michele.scandura@outlook.com\", \"Password\":\"password1\"}' +``` + +New Campaign +``` +curl -i -X POST -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjEiLCJuYmYiOjE2MTM3MjgzMjksImV4cCI6MTYxNDMzMzEyOCwiaWF0IjoxNjEzNzI4MzI5fQ.VEsDbYUTnnvpgWnB5buE88JyGx_cg3TJb5ybC3eLvmc" http://localhost:5000/campaign/highfell -d '""' +``` + +Get Campaigns +``` +curl -i -X GET -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjEiLCJuYmYiOjE2MTM3MjgzMjksImV4cCI6MTYxNDMzMzEyOCwiaWF0IjoxNjEzNzI4MzI5fQ.VEsDbYUTnnvpgWnB5buE88JyGx_cg3TJb5ybC3eLvmc" http://localhost:5000/campaign -d '""' +``` + + +``` +curl -i -X POST -H "Content-Type: application/json" http://localhost:5000/AuthManagement/register -d '{\"FirstName\":\"Michele\",\"LastName\":\"Scandura\", \"UserName\":\"michele\", \"Password\":\"Password1!\", \"Initials\":\"MS\", \"Email\":\"michele.scandura@outlook.com\"}' +``` + +``` +curl -i -X POST -H "Content-Type: application/json" http://localhost:5000/AuthManagement/login -d '{ \"Password\":\"Password1!\", \"Email\":\"michele.scandura@outlook.com\"}' ``` \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/NewSessionCommand.cs b/Sledgemapper.Api/Commands/NewSessionCommand.cs index 4b184cb..e85c6ab 100644 --- a/Sledgemapper.Api/Commands/NewSessionCommand.cs +++ b/Sledgemapper.Api/Commands/NewSessionCommand.cs @@ -1,9 +1,36 @@ +using System; +using System.Collections.Generic; +using MediatR; + namespace Sledgemapper.Api.Commands { public class NewSessionCommand : BaseCommand { - public NewSessionCommand(string sessionName, int userId):base(sessionName, userId) + public NewSessionCommand(string sessionName, int userId) : base(sessionName, userId) { } } + + public class NewCampaignCommand : IRequest + { + public double Timestamp { get; private set; } + public string CampaignName { get; private set; } + public string UserId { get; private set; } + public NewCampaignCommand(string campaingName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignName = campaingName; + UserId = userId; + } + } + + public class GetCampaignsCommand : IRequest> + { + public string UserId { get; private set; } + public GetCampaignsCommand(string userId) + { + UserId = userId; + } + } + } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/AuthManagementController.cs b/Sledgemapper.Api/Controllers/AuthManagementController.cs new file mode 100644 index 0000000..53acc5a --- /dev/null +++ b/Sledgemapper.Api/Controllers/AuthManagementController.cs @@ -0,0 +1,184 @@ +using MediatR; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.Tokens; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Notifications; +using Sledgemapper.Entities; +using Sledgemapper.Models.Users; +using Sledgemapper.Shared.Entities; +using System; +using System.Collections.Generic; +using System.IdentityModel.Tokens.Jwt; +using System.Linq; +using System.Security.Claims; +using System.Text; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Controllers +{ + + [Route("[controller]")] // api/authmanagement + [ApiController] + public class AuthManagementController : ControllerBase + { + private readonly UserManager _userManager; + private readonly JwtConfig _jwtConfig; + + public AuthManagementController(UserManager userManager, + IOptionsMonitor optionsMonitor) + { + _userManager = userManager; + _jwtConfig = optionsMonitor.CurrentValue; + } + + [HttpPost] + [Route("Register")] + public async Task Register([FromBody] Sledgemapper.Models.Users.RegisterModel user) + { + // Check if the incoming request is valid + if (ModelState.IsValid) + { + // check i the user with the same email exist + var existingUser = await _userManager.FindByEmailAsync(user.Email); + + if (existingUser != null) + { + return BadRequest(new Sledgemapper.Models.Users.RegistrationResponse() + { + Result = false, + Errors = new List(){ + "Email already exist" + } + }); + } + + var newUser = new User() { Email = user.Email, UserName = user.UserName }; + var isCreated = await _userManager.CreateAsync(newUser, user.Password); + if (isCreated.Succeeded) + { + var jwtToken = GenerateJwtToken(newUser); + + return Ok(new Sledgemapper.Models.Users.RegistrationResponse() + { + Result = true, + Token = jwtToken + }); + } + + return new JsonResult(new Sledgemapper.Models.Users.RegistrationResponse() + { + Result = false, + Errors = isCreated.Errors.Select(x => x.Description).ToList() + } + ) + { StatusCode = 500 }; + } + + return BadRequest(new Sledgemapper.Models.Users.RegistrationResponse() + { + Result = false, + Errors = new List(){ + "Invalid payload" + } + }); + } + + private string GenerateJwtToken(User user) + { + // Now its ime to define the jwt token which will be responsible of creating our tokens + var jwtTokenHandler = new JwtSecurityTokenHandler(); + + // We get our secret from the appsettings + var key = Encoding.ASCII.GetBytes(_jwtConfig.Secret); + + // we define our token descriptor + // We need to utilise claims which are properties in our token which gives information about the token + // which belong to the specific user who it belongs to + // so it could contain their id, name, email the good part is that these information + // are generated by our server and identity framework which is valid and trusted + var tokenDescriptor = new SecurityTokenDescriptor + { + Subject = new ClaimsIdentity(new[] + { + new Claim("Id", user.Id.ToString()), + new Claim(JwtRegisteredClaimNames.Sub, user.Email), + new Claim(JwtRegisteredClaimNames.Email, user.Email), + // the JTI is used for our refresh token which we will be convering in the next video + new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) + }), + // the life span of the token needs to be shorter and utilise refresh token to keep the user signedin + // but since this is a demo app we can extend it to fit our current need + Expires = DateTime.UtcNow.AddHours(6), + // here we are adding the encryption alogorithim information which will be used to decrypt our token + SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature) + }; + + var token = jwtTokenHandler.CreateToken(tokenDescriptor); + + var jwtToken = jwtTokenHandler.WriteToken(token); + + return jwtToken; + } + + [HttpPost] + [Route("Login")] + public async Task Login([FromBody] UserLoginRequest user) + { + if (ModelState.IsValid) + { + // check if the user with the same email exist + var existingUser = await _userManager.FindByEmailAsync(user.Email); + + if (existingUser == null) + { + // We dont want to give to much information on why the request has failed for security reasons + return BadRequest(new RegistrationResponse() + { + Result = false, + Errors = new List(){ + "Invalid authentication request" + } + }); + } + + // Now we need to check if the user has inputed the right password + var isCorrect = await _userManager.CheckPasswordAsync(existingUser, user.Password); + + if (isCorrect) + { + var jwtToken = GenerateJwtToken(existingUser); + + return Ok(new RegistrationResponse() + { + Result = true, + Token = jwtToken + }); + } + else + { + // We dont want to give to much information on why the request has failed for security reasons + return BadRequest(new RegistrationResponse() + { + Result = false, + Errors = new List(){ + "Invalid authentication request" + } + }); + } + } + + return BadRequest(new RegistrationResponse() + { + Result = false, + Errors = new List(){ + "Invalid payload" + } + }); + } + } + + +} diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs new file mode 100644 index 0000000..8bd6c49 --- /dev/null +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -0,0 +1,39 @@ +using MediatR; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Notifications; +using Sledgemapper.Shared.Entities; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Controllers +{ + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] + [Route("[controller]")] + public class CampaignController : ControllerBase + { + private readonly IMediator _mediator; + private string UserId => HttpContext.User.Claims.FirstOrDefault(m => m.Type == "Id").Value; + + public CampaignController(IMediator mediator) => _mediator = mediator; + + [HttpPost] + [Route("{campaignName}")] + public async Task Post(string campaignName) + { + var result = await _mediator.Send(new NewCampaignCommand(campaignName, UserId.ToString())); + return result; + } + + [HttpGet] + public async Task> Get() + { + var result = await _mediator.Send(new GetCampaignsCommand(UserId)); + return result; + } + + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/SessionController.cs b/Sledgemapper.Api/Controllers/SessionController.cs index 4926ba2..e13c9d1 100644 --- a/Sledgemapper.Api/Controllers/SessionController.cs +++ b/Sledgemapper.Api/Controllers/SessionController.cs @@ -9,98 +9,82 @@ using System.Threading.Tasks; namespace Sledgemapper.Api.Controllers { [Authorize] - [Route("[controller]/{sessionName}")] - public class SessionController : ControllerBase + [Route("[controller]/{mapName}")] + public class MapController : ControllerBase { private readonly IMediator _mediator; private int UserId => int.Parse(HttpContext.User.Identity.Name); - public SessionController(IMediator mediator) => _mediator = mediator; + public MapController(IMediator mediator) => _mediator = mediator; + + [HttpPost] - public async Task Post(string sessionName) + public async Task Post(string mapName) { - var result = await _mediator.Send(new NewSessionCommand(sessionName, UserId)); + var result = await _mediator.Send(new NewSessionCommand(mapName, UserId)); return result; } [HttpGet] - public async Task Get(string sessionName) + public async Task Get(string mapName) { - var result = await _mediator.Send(new GetMapSnapshotCommand(sessionName)); + var result = await _mediator.Send(new GetMapSnapshotCommand(mapName)); return result; } - // [HttpPost("ping")] - // public async Task Post(string sessionName, [FromBody] Ping pingLocation) - // { - // await _mediator.Send(new PingCommand(sessionName, pingLocation, UserId)); - // } - [HttpPost("snapshot")] - public async Task Post(string sessionName, [FromBody] Session session) + public async Task Post(string mapName, [FromBody] Session session) { - await _mediator.Send(new NewSnapshotCommand(sessionName, session, UserId)); - } - - [HttpPost("tile")] - public async Task Post(string sessionName, [FromBody] Tile tile) - { - await _mediator.Send(new NewTileCommand(sessionName, tile, UserId)); + await _mediator.Send(new NewSnapshotCommand(mapName, session, UserId)); } [HttpPost("overlay")] - public async Task Post(string sessionName, [FromBody] Overlay overlay) + public async Task Post(string mapName, [FromBody] Overlay overlay) { - await _mediator.Send(new NewOverlayCommand(sessionName, overlay, UserId)); + await _mediator.Send(new NewOverlayCommand(mapName, overlay, UserId)); } [HttpPost("wall")] - public async Task Post(string sessionName, [FromBody] Wall wall) + public async Task Post(string mapName, [FromBody] Wall wall) { - await _mediator.Send(new NewWallCommand(sessionName, wall, UserId)); + await _mediator.Send(new NewWallCommand(mapName, wall, UserId)); } [HttpPost("note")] - public async Task Post(string sessionName, [FromBody] Note note) + public async Task Post(string mapName, [FromBody] Note note) { - await _mediator.Send(new NewNoteCommand(sessionName, note, UserId)); + await _mediator.Send(new NewNoteCommand(mapName, note, UserId)); } [HttpPost("room")] - public async Task Post(string sessionName, [FromBody] Room room) + public async Task Post(string mapName, [FromBody] Room room) { - await _mediator.Send(new NewRoomCommand(sessionName, room, UserId)); + await _mediator.Send(new NewRoomCommand(mapName, room, UserId)); } [HttpPost("line")] - public async Task Post(string sessionName, [FromBody] Line line) + public async Task Post(string mapName, [FromBody] Line line) { - await _mediator.Send(new NewLineCommand(sessionName, line, UserId)); - } - - [HttpDelete("tile")] - public async Task Delete(string sessionName, [FromBody] Tile tile) - { - await _mediator.Send(new DeleteTileCommand(sessionName, tile, UserId)); + await _mediator.Send(new NewLineCommand(mapName, line, UserId)); } [HttpDelete("overlay")] - public async Task Delete(string sessionName, [FromBody] Overlay overlay) + public async Task Delete(string mapName, [FromBody] Overlay overlay) { - await _mediator.Send(new DeleteOverlayCommand(sessionName, overlay, UserId)); + await _mediator.Send(new DeleteOverlayCommand(mapName, overlay, UserId)); } [HttpDelete("wall")] - public async Task Delete(string sessionName, [FromBody] Wall wall) + public async Task Delete(string mapName, [FromBody] Wall wall) { - await _mediator.Send(new DeleteWallCommand(sessionName, wall, UserId)); + await _mediator.Send(new DeleteWallCommand(mapName, wall, UserId)); } [HttpDelete("note")] - public async Task Delete(string sessionName, [FromBody] Note note) + public async Task Delete(string mapName, [FromBody] Note note) { - await _mediator.Send(new DeleteNoteCommand(sessionName, note, UserId)); + await _mediator.Send(new DeleteNoteCommand(mapName, note, UserId)); } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/UsersController.cs b/Sledgemapper.Api/Controllers/UsersController.cs deleted file mode 100644 index faf3f3a..0000000 --- a/Sledgemapper.Api/Controllers/UsersController.cs +++ /dev/null @@ -1,136 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.AspNetCore.Mvc; -using AutoMapper; -using System.IdentityModel.Tokens.Jwt; - -using Microsoft.Extensions.Options; -using System.Text; -using Microsoft.IdentityModel.Tokens; -using System.Security.Claims; -using Microsoft.AspNetCore.Authorization; -using Sledgemapper.Entities; -using Sledgemapper.Models.Users; -using Sledgemapper.Helpers; -using Sledgemapper.Api.Infrastructure.Services; - -namespace Sledgemapper.Controllers -{ - [Authorize] - [ApiController] - [Route("[controller]")] - public class UsersController : ControllerBase - { - private IUserService _userService; - private IMapper _mapper; - private readonly AppSettings _appSettings; - - public UsersController( - IUserService userService, - IMapper mapper, - IOptions appSettings) - { - _userService = userService; - _mapper = mapper; - _appSettings = appSettings.Value; - } - - [AllowAnonymous] - [HttpPost("authenticate")] - public IActionResult Authenticate([FromBody]AuthenticateModel model) - { - var user = _userService.Authenticate(model.Username, model.Password); - - if (user == null) - return BadRequest(new { message = "Username or password is incorrect" }); - - var tokenHandler = new JwtSecurityTokenHandler(); - var key = Encoding.ASCII.GetBytes(_appSettings.Secret); - var tokenDescriptor = new SecurityTokenDescriptor - { - Subject = new ClaimsIdentity(new Claim[] - { - new Claim(ClaimTypes.Name, user.Id.ToString()) - }), - Expires = DateTime.UtcNow.AddDays(7), - SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) - }; - var token = tokenHandler.CreateToken(tokenDescriptor); - var tokenString = tokenHandler.WriteToken(token); - - // return basic user info and authentication token - return Ok(new - { - Id = user.Id, - Username = user.Username, - FirstName = user.FirstName, - LastName = user.LastName, - Initials = user.Initials, - Token = tokenString - }); - } - - [AllowAnonymous] - [HttpPost("register")] - public IActionResult Register([FromBody]RegisterModel model) - { - // map model to entity - var user = _mapper.Map(model); - - try - { - // create user - _userService.Create(user, model.Password); - return Ok(); - } - catch (AppException ex) - { - // return error message if there was an exception - return BadRequest(new { message = ex.Message }); - } - } - - [HttpGet] - public IActionResult GetAll() - { - var users = _userService.GetAll(); - var model = _mapper.Map>(users); - return Ok(model); - } - - [HttpGet("{id}")] - public IActionResult GetById(int id) - { - var user = _userService.GetById(id); - var model = _mapper.Map(user); - return Ok(model); - } - - [HttpPut("{id}")] - public IActionResult Update(int id, [FromBody]UpdateModel model) - { - // map model to entity and set id - var user = _mapper.Map(model); - user.Id = id; - - try - { - // update user - _userService.Update(user, model.Password); - return Ok(); - } - catch (AppException ex) - { - // return error message if there was an exception - return BadRequest(new { message = ex.Message }); - } - } - - [HttpDelete("{id}")] - public IActionResult Delete(int id) - { - _userService.Delete(id); - return Ok(); - } - } -} diff --git a/Sledgemapper.Api/Core/Entities/BaseEntity.cs b/Sledgemapper.Api/Core/Entities/BaseEntity.cs new file mode 100644 index 0000000..5196c35 --- /dev/null +++ b/Sledgemapper.Api/Core/Entities/BaseEntity.cs @@ -0,0 +1,7 @@ +using System.ComponentModel.DataAnnotations; + +public abstract class BaseEntity +{ + [Key] + public int Id { get; set; } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Core/Entities/Campaign.cs b/Sledgemapper.Api/Core/Entities/Campaign.cs new file mode 100644 index 0000000..2dc13b5 --- /dev/null +++ b/Sledgemapper.Api/Core/Entities/Campaign.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Entities; + +namespace Sledgemapper.Api.Core.Entities +{ + [Index(nameof(CampaignName), nameof(OwnerId), IsUnique = true)] + public class Campaign + { + public int CampaignId { get; set; } + public string CampaignName { get; set; } + + public string OwnerId { get; set; } + + public User Owner { get; set; } + + public ICollection InvitedUsers { get; set; } + + public ICollection Maps { get; set; } + } +} diff --git a/Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs b/Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs deleted file mode 100644 index 7d9b6ab..0000000 --- a/Sledgemapper.Api/Core/Entities/CampaignAggregate/Campaign.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using Sledgemapper.Entities; - -namespace Sledgemapper.Api.Core.Entities.CampaignAggregate -{ - public class Campaign - { - [Key] - public int CampaignId { get; set; } - - [Required] - public string CampaignName { get; set; } - - [Required] - public int OwnerUserId { get; set; } - - public List InvitedUsers { get; set; } - } -} diff --git a/Sledgemapper.Api/Core/Entities/CampaignAggregate/Map.cs b/Sledgemapper.Api/Core/Entities/Map.cs similarity index 81% rename from Sledgemapper.Api/Core/Entities/CampaignAggregate/Map.cs rename to Sledgemapper.Api/Core/Entities/Map.cs index 44ed87b..b46a373 100644 --- a/Sledgemapper.Api/Core/Entities/CampaignAggregate/Map.cs +++ b/Sledgemapper.Api/Core/Entities/Map.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Api.Core.Entities.CampaignAggregate +namespace Sledgemapper.Api.Core.Entities { public class Map { diff --git a/Sledgemapper.Api/Models/MapLog.cs b/Sledgemapper.Api/Core/Entities/MapLog.cs similarity index 100% rename from Sledgemapper.Api/Models/MapLog.cs rename to Sledgemapper.Api/Core/Entities/MapLog.cs diff --git a/Sledgemapper.Api/Models/Session.cs b/Sledgemapper.Api/Core/Entities/Session.cs similarity index 100% rename from Sledgemapper.Api/Models/Session.cs rename to Sledgemapper.Api/Core/Entities/Session.cs diff --git a/Sledgemapper.Api/Models/SessionUser.cs b/Sledgemapper.Api/Core/Entities/SessionUser.cs similarity index 100% rename from Sledgemapper.Api/Models/SessionUser.cs rename to Sledgemapper.Api/Core/Entities/SessionUser.cs diff --git a/Sledgemapper.Api/Models/Snapshot.cs b/Sledgemapper.Api/Core/Entities/Snapshot.cs similarity index 100% rename from Sledgemapper.Api/Models/Snapshot.cs rename to Sledgemapper.Api/Core/Entities/Snapshot.cs diff --git a/Sledgemapper.Api/Core/Entities/User.cs b/Sledgemapper.Api/Core/Entities/User.cs new file mode 100644 index 0000000..a4af244 --- /dev/null +++ b/Sledgemapper.Api/Core/Entities/User.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Identity; + +namespace Sledgemapper.Entities +{ + public class User:IdentityUser + { + // public int Id { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + // public string Email { get; set; } + // public string Username { get; set; } + public string Initials { get; set; } + // public byte[] PasswordHash { get; set; } + public byte[] PasswordSalt { get; set; } + public ICollection Campaigns {get;set;} + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/UserConnection.cs b/Sledgemapper.Api/Core/Entities/UserConnection.cs similarity index 100% rename from Sledgemapper.Api/Models/UserConnection.cs rename to Sledgemapper.Api/Core/Entities/UserConnection.cs diff --git a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs new file mode 100644 index 0000000..7f464fb --- /dev/null +++ b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs @@ -0,0 +1,78 @@ +using MediatR; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Handlers +{ + public class NewCampaignCommandHandler : IRequestHandler + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public NewCampaignCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task Handle(NewCampaignCommand notification, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(notification.UserId); + _dbcontext.Attach(user); + var campaign = new Core.Entities.Campaign + { + CampaignName = notification.CampaignName, + OwnerId = user.Id, + InvitedUsers = new System.Collections.Generic.List { user } + }; + + _dbcontext.Campaigns.Add(campaign); + + await _dbcontext.SaveChangesAsync(); + return true; + } + catch (Exception ex) + { + + + } + return false; + } + } + + public class GetCampaignsCommandHandler : IRequestHandler> + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public GetCampaignsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task> Handle(GetCampaignsCommand command, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(command.UserId); + _dbcontext.Attach(user); + var campaigns = _dbcontext.Campaigns.Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); + + return campaigns.ToList(); + } + catch (Exception ex) + { + } + return new List(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Helpers/AppSettings.cs b/Sledgemapper.Api/Helpers/AppSettings.cs deleted file mode 100644 index bcf36f3..0000000 --- a/Sledgemapper.Api/Helpers/AppSettings.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Sledgemapper.Helpers -{ - public class AppSettings - { - public string Secret { get; set; } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/Helpers/AutoMapperProfile.cs b/Sledgemapper.Api/Helpers/AutoMapperProfile.cs index fe86397..e9fd4aa 100644 --- a/Sledgemapper.Api/Helpers/AutoMapperProfile.cs +++ b/Sledgemapper.Api/Helpers/AutoMapperProfile.cs @@ -8,9 +8,7 @@ namespace Sledgemapper.Helpers { public AutoMapperProfile() { - CreateMap(); CreateMap(); - CreateMap(); } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Helpers/DataContext.cs b/Sledgemapper.Api/Helpers/DataContext.cs deleted file mode 100644 index 33a3b85..0000000 --- a/Sledgemapper.Api/Helpers/DataContext.cs +++ /dev/null @@ -1,24 +0,0 @@ -// using Microsoft.EntityFrameworkCore; -// using Microsoft.Extensions.Configuration; -// using Sledgemapper.Entities; - -// namespace Sledgemapper.Helpers -// { -// public class DataContext : DbContext -// { -// protected readonly IConfiguration Configuration; - -// public DataContext(IConfiguration configuration) -// { -// Configuration = configuration; -// } - -// protected override void OnConfiguring(DbContextOptionsBuilder options) -// { -// // connect to sql server database -// options.UseSqlServer(Configuration.GetConnectionString("WebApiDatabase")); -// } - -// public DbSet Users { get; set; } -// } -// } \ No newline at end of file diff --git a/Sledgemapper.Api/Helpers/SqliteDataContext.cs b/Sledgemapper.Api/Helpers/SqliteDataContext.cs deleted file mode 100644 index 67a7ca9..0000000 --- a/Sledgemapper.Api/Helpers/SqliteDataContext.cs +++ /dev/null @@ -1,16 +0,0 @@ -// using Microsoft.EntityFrameworkCore; -// using Microsoft.Extensions.Configuration; - -// namespace Sledgemapper.Helpers -// { -// public class SqliteDataContext : DataContext -// { -// public SqliteDataContext(IConfiguration configuration) : base(configuration) { } - -// protected override void OnConfiguring(DbContextOptionsBuilder options) -// { -// // connect to sqlite database -// options.UseSqlite(Configuration.GetConnectionString("WebApiDatabase")); -// } -// } -// } \ No newline at end of file diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 03bce2b..2fcb6b4 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -89,7 +89,7 @@ namespace Sledgemapper.Api.Hubs public async Task Ping(string sessionName, Tile location) { var userId = int.Parse(Context.User.Identity.Name); - var user = _dbContext.Users.First(u => u.Id == userId); + var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; await Clients.Group(sessionName).Ping(new Ping{X=location.X, Y=location.Y, Player=player}); @@ -106,7 +106,7 @@ namespace Sledgemapper.Api.Hubs _dbContext.SessionUsers.Add(userSession); await _dbContext.SaveChangesAsync(); await Groups.AddToGroupAsync(Context.ConnectionId, session.SessionName); - var user = _dbContext.Users.First(u => u.Id == userId); + var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; @@ -131,7 +131,7 @@ namespace Sledgemapper.Api.Hubs { var userId = int.Parse(Context.User.Identity.Name); var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); - var user = _dbContext.Users.First(u => u.Id == userId); + var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); var player = new Player { UserId = userId, Initials = user.Initials, Position = tile, Color = UserColors[userId] }; await Clients.Group(sessionName).PlayerUpdate(player); } diff --git a/Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs b/Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs deleted file mode 100644 index 26b39bf..0000000 --- a/Sledgemapper.Api/Infrastructure/Data/MyDbContext.cs +++ /dev/null @@ -1,88 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Sledgemapper.Api.Core.Entities.CampaignAggregate; -using Sledgemapper.Api.Models; -using Sledgemapper.Entities; - -namespace Sledgemapper.Api.Infrastructure.Data -{ - // public static class DbInitializer - // { - // public static void Initialize(SledgemapperDbContext context) - // { - // context.Database.EnsureCreated(); - // } - // } - - public class SledgemapperDbContext : DbContext - { - public DbSet Campaigns { get; set; } - public DbSet MapLogs { get; set; } - public DbSet Maps { get; set; } - public DbSet Sessions { get; set; } - public DbSet SessionUsers { get; set; } - public DbSet Snapshots { get; set; } - public DbSet Users { get; set; } - public DbSet UserConnections { get; set; } - - public SledgemapperDbContext(DbContextOptions options) : base(options) - { - - } - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - // optionsBuilder. - // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); - // optionsBuilder.UseSqlite("Filename=SledgemapperDatabase.db", options => - // { - // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); - // }); - - optionsBuilder.UseSqlite("Filename=Sledgemapper.db").UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); - - base.OnConfiguring(optionsBuilder); - } - - // protected override void OnModelCreating(ModelBuilder modelBuilder) - // { - // // Map table names - // modelBuilder.Entity().ToTable("MapLog", "dbo"); - // modelBuilder.Entity(entity => - // { - // entity.HasKey(e => e.MapLogId); - // }); - - // modelBuilder.Entity().ToTable("Session", "dbo"); - // modelBuilder.Entity(entity => - // { - // entity.HasKey(e => e.SessionId); - // entity.HasIndex(e => e.SessionName).IsUnique(); - // }); - - - // modelBuilder.Entity().ToTable("UserConnection", "dbo"); - // modelBuilder.Entity(entity => - // { - // entity.HasKey(e => e.UserConnectionId); - // entity.HasIndex(e => e.UserId); - - // }); - - // modelBuilder.Entity().ToTable("SessionUser", "dbo"); - // modelBuilder.Entity(entity => - // { - // entity.HasKey(e => e.SessionUserId); - // entity.HasIndex(e => e.SessionId); - - // }); - - // modelBuilder.Entity().ToTable("Snapshot", "dbo"); - // modelBuilder.Entity(entity => - // { - // entity.HasKey(e => e.SnapshotId); - // }); - - // base.OnModelCreating(modelBuilder); - // } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs new file mode 100644 index 0000000..15fbf27 --- /dev/null +++ b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs @@ -0,0 +1,96 @@ +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Core.Entities; +using Sledgemapper.Api.Models; +using Sledgemapper.Entities; + +namespace Sledgemapper.Api.Infrastructure.Data +{ + // public static class DbInitializer + // { + // public static void Initialize(SledgemapperDbContext context) + // { + // context.Database.EnsureCreated(); + // } + // } + + public class SledgemapperDbContext : IdentityDbContext + { + public DbSet Campaigns { get; set; } + public DbSet MapLogs { get; set; } + public DbSet Maps { get; set; } + public DbSet Sessions { get; set; } + public DbSet SessionUsers { get; set; } + public DbSet Snapshots { get; set; } + public DbSet Users { get; set; } + public DbSet UserConnections { get; set; } + + public SledgemapperDbContext(DbContextOptions options) : base(options) + { + + } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + // optionsBuilder. + // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); + // optionsBuilder.UseSqlite("Filename=SledgemapperDatabase.db", options => + // { + // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); + // }); + + optionsBuilder.UseSqlite("Filename=Sledgemapper.db").UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); + + base.OnConfiguring(optionsBuilder); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().HasOne(e=>e.Owner); + +modelBuilder.Entity().HasMany(e=>e.InvitedUsers).WithMany(e=>e.Campaigns); + + modelBuilder.Entity() //Use your application user class here + .ToTable( "Users" ); //Set the table name here + + // // Map table names + // modelBuilder.Entity().ToTable("MapLog", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.MapLogId); + // }); + + // modelBuilder.Entity().ToTable("Session", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.SessionId); + // entity.HasIndex(e => e.SessionName).IsUnique(); + // }); + + + // modelBuilder.Entity().ToTable("UserConnection", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.UserConnectionId); + // entity.HasIndex(e => e.UserId); + + // }); + + // modelBuilder.Entity().ToTable("SessionUser", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.SessionUserId); + // entity.HasIndex(e => e.SessionId); + + // }); + + // modelBuilder.Entity().ToTable("Snapshot", "dbo"); + // modelBuilder.Entity(entity => + // { + // entity.HasKey(e => e.SnapshotId); + // }); + + base.OnModelCreating(modelBuilder); + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Infrastructure/Services/UserService.cs b/Sledgemapper.Api/Infrastructure/Services/UserService.cs deleted file mode 100644 index 8e1eed9..0000000 --- a/Sledgemapper.Api/Infrastructure/Services/UserService.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Entities; -using Sledgemapper.Helpers; - -namespace Sledgemapper.Api.Infrastructure.Services -{ - public interface IUserService - { - User Authenticate(string username, string password); - IEnumerable GetAll(); - User GetById(int id); - User Create(User user, string password); - void Update(User user, string password = null); - void Delete(int id); - } - - public class UserService : IUserService - { - private SledgemapperDbContext _context; - - public UserService(SledgemapperDbContext context) - { - _context = context; - } - - public User Authenticate(string username, string password) - { - if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) - return null; - - var user = _context.Users.SingleOrDefault(x => x.Username == username); - - // check if username exists - if (user == null) - return null; - - // check if password is correct - if (!VerifyPasswordHash(password, user.PasswordHash, user.PasswordSalt)) - return null; - - // authentication successful - return user; - } - - public IEnumerable GetAll() - { - return _context.Users; - } - - public User GetById(int id) - { - return _context.Users.Find(id); - } - - public User Create(User user, string password) - { - // validation - if (string.IsNullOrWhiteSpace(password)) - throw new AppException("Password is required"); - - if (_context.Users.Any(x => x.Username == user.Username)) - throw new AppException("Username \"" + user.Username + "\" is already taken"); - - byte[] passwordHash, passwordSalt; - CreatePasswordHash(password, out passwordHash, out passwordSalt); - - user.PasswordHash = passwordHash; - user.PasswordSalt = passwordSalt; - - _context.Users.Add(user); - _context.SaveChanges(); - - return user; - } - - public void Update(User userParam, string password = null) - { - var user = _context.Users.Find(userParam.Id); - - if (user == null) - throw new AppException("User not found"); - - // update username if it has changed - if (!string.IsNullOrWhiteSpace(userParam.Username) && userParam.Username != user.Username) - { - // throw error if the new username is already taken - if (_context.Users.Any(x => x.Username == userParam.Username)) - throw new AppException("Username " + userParam.Username + " is already taken"); - - user.Username = userParam.Username; - } - - // update user properties if provided - if (!string.IsNullOrWhiteSpace(userParam.FirstName)) - user.FirstName = userParam.FirstName; - - if (!string.IsNullOrWhiteSpace(userParam.LastName)) - user.LastName = userParam.LastName; - - // update password if provided - if (!string.IsNullOrWhiteSpace(password)) - { - byte[] passwordHash, passwordSalt; - CreatePasswordHash(password, out passwordHash, out passwordSalt); - - user.PasswordHash = passwordHash; - user.PasswordSalt = passwordSalt; - } - - _context.Users.Update(user); - _context.SaveChanges(); - } - - public void Delete(int id) - { - var user = _context.Users.Find(id); - if (user != null) - { - _context.Users.Remove(user); - _context.SaveChanges(); - } - } - - // private helper methods - - private static void CreatePasswordHash(string password, out byte[] passwordHash, out byte[] passwordSalt) - { - if (password == null) throw new ArgumentNullException("password"); - if (string.IsNullOrWhiteSpace(password)) throw new ArgumentException("Value cannot be empty or whitespace only string.", "password"); - - using (var hmac = new System.Security.Cryptography.HMACSHA512()) - { - passwordSalt = hmac.Key; - passwordHash = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password)); - } - } - - private static bool VerifyPasswordHash(string password, byte[] storedHash, byte[] storedSalt) - { - if (password == null) throw new ArgumentNullException("password"); - if (string.IsNullOrWhiteSpace(password)) throw new ArgumentException("Value cannot be empty or whitespace only string.", "password"); - if (storedHash.Length != 64) throw new ArgumentException("Invalid length of password hash (64 bytes expected).", "passwordHash"); - if (storedSalt.Length != 128) throw new ArgumentException("Invalid length of password salt (128 bytes expected).", "passwordHash"); - - using (var hmac = new System.Security.Cryptography.HMACSHA512(storedSalt)) - { - var computedHash = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password)); - for (int i = 0; i < computedHash.Length; i++) - { - if (computedHash[i] != storedHash[i]) return false; - } - } - - return true; - } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/JwtConfig.cs b/Sledgemapper.Api/JwtConfig.cs new file mode 100644 index 0000000..7c5c5c4 --- /dev/null +++ b/Sledgemapper.Api/JwtConfig.cs @@ -0,0 +1,7 @@ +namespace Sledgemapper.Api +{ + public class JwtConfig + { + public string Secret { get; set; } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs b/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.Designer.cs similarity index 73% rename from Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs rename to Sledgemapper.Api/Migrations/20210219223114_InitialCreate.Designer.cs index 9ad309b..fc87031 100644 --- a/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.Designer.cs +++ b/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.Designer.cs @@ -9,7 +9,7 @@ using Sledgemapper.Api.Infrastructure.Data; namespace Sledgemapper.Api.Migrations { [DbContext(typeof(SledgemapperDbContext))] - [Migration("20210214232542_InitialCreate")] + [Migration("20210219223114_InitialCreate")] partial class InitialCreate { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -18,25 +18,44 @@ namespace Sledgemapper.Api.Migrations modelBuilder .HasAnnotation("ProductVersion", "5.0.3"); - modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("INTEGER"); + + b.Property("InvitedUsersId") + .HasColumnType("INTEGER"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => { b.Property("CampaignId") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("CampaignName") - .IsRequired() .HasColumnType("TEXT"); - b.Property("OwnerUserId") + b.Property("OwnerId") .HasColumnType("INTEGER"); b.HasKey("CampaignId"); + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + b.ToTable("Campaigns"); }); - modelBuilder.Entity("Sledgemapper.Api.Models.Map", b => + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => { b.Property("MapId") .ValueGeneratedOnAdd() @@ -51,6 +70,8 @@ namespace Sledgemapper.Api.Migrations b.HasKey("MapId"); + b.HasIndex("CampaignId"); + b.ToTable("Maps"); }); @@ -169,9 +190,6 @@ namespace Sledgemapper.Api.Migrations .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); - b.Property("CampaignId") - .HasColumnType("INTEGER"); - b.Property("FirstName") .HasColumnType("TEXT"); @@ -192,21 +210,47 @@ namespace Sledgemapper.Api.Migrations b.HasKey("Id"); - b.HasIndex("CampaignId"); - b.ToTable("Users"); }); - modelBuilder.Entity("Sledgemapper.Entities.User", b => + modelBuilder.Entity("CampaignUser", b => { - b.HasOne("Sledgemapper.Api.Models.Campaign", null) - .WithMany("InvitedUsers") - .HasForeignKey("CampaignId"); + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); - modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => { - b.Navigation("InvitedUsers"); + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); }); #pragma warning restore 612, 618 } diff --git a/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs b/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs similarity index 73% rename from Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs rename to Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs index e9d609a..06c8d02 100644 --- a/Sledgemapper.Api/Infrastructure/Data/Migrations/20210214232542_InitialCreate.cs +++ b/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs @@ -7,20 +7,6 @@ namespace Sledgemapper.Api.Migrations { protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "Campaigns", - columns: table => new - { - CampaignId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - CampaignName = table.Column(type: "TEXT", nullable: false), - OwnerUserId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Campaigns", x => x.CampaignId); - }); - migrationBuilder.CreateTable( name: "MapLogs", columns: table => new @@ -39,20 +25,6 @@ namespace Sledgemapper.Api.Migrations table.PrimaryKey("PK_MapLogs", x => x.MapLogId); }); - migrationBuilder.CreateTable( - name: "Maps", - columns: table => new - { - MapId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - MapName = table.Column(type: "TEXT", nullable: false), - CampaignId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Maps", x => x.MapId); - }); - migrationBuilder.CreateTable( name: "Sessions", columns: table => new @@ -121,28 +93,104 @@ namespace Sledgemapper.Api.Migrations Username = table.Column(type: "TEXT", nullable: true), Initials = table.Column(type: "TEXT", nullable: true), PasswordHash = table.Column(type: "BLOB", nullable: true), - PasswordSalt = table.Column(type: "BLOB", nullable: true), - CampaignId = table.Column(type: "INTEGER", nullable: true) + PasswordSalt = table.Column(type: "BLOB", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Users", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Campaigns", + columns: table => new + { + CampaignId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + CampaignName = table.Column(type: "TEXT", nullable: true), + OwnerId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Campaigns", x => x.CampaignId); table.ForeignKey( - name: "FK_Users_Campaigns_CampaignId", + name: "FK_Campaigns_Users_OwnerId", + column: x => x.OwnerId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CampaignUser", + columns: table => new + { + CampaignsCampaignId = table.Column(type: "INTEGER", nullable: false), + InvitedUsersId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CampaignUser", x => new { x.CampaignsCampaignId, x.InvitedUsersId }); + table.ForeignKey( + name: "FK_CampaignUser_Campaigns_CampaignsCampaignId", + column: x => x.CampaignsCampaignId, + principalTable: "Campaigns", + principalColumn: "CampaignId", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CampaignUser_Users_InvitedUsersId", + column: x => x.InvitedUsersId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Maps", + columns: table => new + { + MapId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + MapName = table.Column(type: "TEXT", nullable: false), + CampaignId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Maps", x => x.MapId); + table.ForeignKey( + name: "FK_Maps_Campaigns_CampaignId", column: x => x.CampaignId, principalTable: "Campaigns", principalColumn: "CampaignId", - onDelete: ReferentialAction.Restrict); + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( - name: "IX_Users_CampaignId", - table: "Users", + name: "IX_Campaigns_CampaignName_OwnerId", + table: "Campaigns", + columns: new[] { "CampaignName", "OwnerId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Campaigns_OwnerId", + table: "Campaigns", + column: "OwnerId"); + + migrationBuilder.CreateIndex( + name: "IX_CampaignUser_InvitedUsersId", + table: "CampaignUser", + column: "InvitedUsersId"); + + migrationBuilder.CreateIndex( + name: "IX_Maps_CampaignId", + table: "Maps", column: "CampaignId"); } protected override void Down(MigrationBuilder migrationBuilder) { + migrationBuilder.DropTable( + name: "CampaignUser"); + migrationBuilder.DropTable( name: "MapLogs"); @@ -162,10 +210,10 @@ namespace Sledgemapper.Api.Migrations name: "UserConnections"); migrationBuilder.DropTable( - name: "Users"); + name: "Campaigns"); migrationBuilder.DropTable( - name: "Campaigns"); + name: "Users"); } } } diff --git a/Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.Designer.cs similarity index 71% rename from Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs rename to Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.Designer.cs index 409062f..faeeb8c 100644 --- a/Sledgemapper.Api/Infrastructure/Data/Migrations/MyDbContextModelSnapshot.cs +++ b/Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.Designer.cs @@ -2,39 +2,60 @@ using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Sledgemapper.Api.Infrastructure.Data; namespace Sledgemapper.Api.Migrations { [DbContext(typeof(SledgemapperDbContext))] - partial class SledgemapperDbContextModelSnapshot : ModelSnapshot + [Migration("20210219223251_Adding authentication to our Api")] + partial class AddingauthenticationtoourApi { - protected override void BuildModel(ModelBuilder modelBuilder) + protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "5.0.3"); - modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("INTEGER"); + + b.Property("InvitedUsersId") + .HasColumnType("INTEGER"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => { b.Property("CampaignId") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("CampaignName") - .IsRequired() .HasColumnType("TEXT"); - b.Property("OwnerUserId") + b.Property("OwnerId") .HasColumnType("INTEGER"); b.HasKey("CampaignId"); + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + b.ToTable("Campaigns"); }); - modelBuilder.Entity("Sledgemapper.Api.Models.Map", b => + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => { b.Property("MapId") .ValueGeneratedOnAdd() @@ -49,6 +70,8 @@ namespace Sledgemapper.Api.Migrations b.HasKey("MapId"); + b.HasIndex("CampaignId"); + b.ToTable("Maps"); }); @@ -167,9 +190,6 @@ namespace Sledgemapper.Api.Migrations .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); - b.Property("CampaignId") - .HasColumnType("INTEGER"); - b.Property("FirstName") .HasColumnType("TEXT"); @@ -190,21 +210,47 @@ namespace Sledgemapper.Api.Migrations b.HasKey("Id"); - b.HasIndex("CampaignId"); - b.ToTable("Users"); }); - modelBuilder.Entity("Sledgemapper.Entities.User", b => + modelBuilder.Entity("CampaignUser", b => { - b.HasOne("Sledgemapper.Api.Models.Campaign", null) - .WithMany("InvitedUsers") - .HasForeignKey("CampaignId"); + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); - modelBuilder.Entity("Sledgemapper.Api.Models.Campaign", b => + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => { - b.Navigation("InvitedUsers"); + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); }); #pragma warning restore 612, 618 } diff --git a/Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.cs b/Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.cs new file mode 100644 index 0000000..79e5c82 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210219223251_Adding authentication to our Api.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class AddingauthenticationtoourApi : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210219230948_rename table.Designer.cs b/Sledgemapper.Api/Migrations/20210219230948_rename table.Designer.cs new file mode 100644 index 0000000..d16b294 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210219230948_rename table.Designer.cs @@ -0,0 +1,505 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210219230948_rename table")] + partial class renametable + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.3"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("INTEGER"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.HasIndex("CampaignId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.Property("Username") + .HasColumnType("TEXT"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210219230948_rename table.cs b/Sledgemapper.Api/Migrations/20210219230948_rename table.cs new file mode 100644 index 0000000..ac5f815 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210219230948_rename table.cs @@ -0,0 +1,315 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class renametable : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Campaigns_Users_OwnerId", + table: "Campaigns"); + + migrationBuilder.DropColumn( + name: "PasswordHash", + table: "Users"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "Users", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER") + .OldAnnotation("Sqlite:Autoincrement", true); + + migrationBuilder.AlterColumn( + name: "InvitedUsersId", + table: "CampaignUser", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.AlterColumn( + name: "OwnerId", + table: "Campaigns", + type: "TEXT", + nullable: true, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.CreateTable( + name: "AspNetRoles", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + Name = table.Column(type: "TEXT", maxLength: 256, nullable: true), + NormalizedName = table.Column(type: "TEXT", maxLength: 256, nullable: true), + ConcurrencyStamp = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetUsers", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + UserName = table.Column(type: "TEXT", maxLength: 256, nullable: true), + NormalizedUserName = table.Column(type: "TEXT", maxLength: 256, nullable: true), + Email = table.Column(type: "TEXT", maxLength: 256, nullable: true), + NormalizedEmail = table.Column(type: "TEXT", maxLength: 256, nullable: true), + EmailConfirmed = table.Column(type: "INTEGER", nullable: false), + PasswordHash = table.Column(type: "TEXT", nullable: true), + SecurityStamp = table.Column(type: "TEXT", nullable: true), + ConcurrencyStamp = table.Column(type: "TEXT", nullable: true), + PhoneNumber = table.Column(type: "TEXT", nullable: true), + PhoneNumberConfirmed = table.Column(type: "INTEGER", nullable: false), + TwoFactorEnabled = table.Column(type: "INTEGER", nullable: false), + LockoutEnd = table.Column(type: "TEXT", nullable: true), + LockoutEnabled = table.Column(type: "INTEGER", nullable: false), + AccessFailedCount = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + RoleId = table.Column(type: "TEXT", nullable: false), + ClaimType = table.Column(type: "TEXT", nullable: true), + ClaimValue = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + UserId = table.Column(type: "TEXT", nullable: false), + ClaimType = table.Column(type: "TEXT", nullable: true), + ClaimValue = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "TEXT", maxLength: 128, nullable: false), + ProviderKey = table.Column(type: "TEXT", maxLength: 128, nullable: false), + ProviderDisplayName = table.Column(type: "TEXT", nullable: true), + UserId = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserRoles", + columns: table => new + { + UserId = table.Column(type: "TEXT", nullable: false), + RoleId = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "TEXT", nullable: false), + LoginProvider = table.Column(type: "TEXT", maxLength: 128, nullable: false), + Name = table.Column(type: "TEXT", maxLength: 128, nullable: false), + Value = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "AspNetRoles", + column: "NormalizedName", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserRoles_RoleId", + table: "AspNetUserRoles", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "AspNetUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "AspNetUsers", + column: "NormalizedUserName", + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_Campaigns_Users_OwnerId", + table: "Campaigns", + column: "OwnerId", + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Users_AspNetUsers_Id", + table: "Users", + column: "Id", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Campaigns_Users_OwnerId", + table: "Campaigns"); + + migrationBuilder.DropForeignKey( + name: "FK_Users_AspNetUsers_Id", + table: "Users"); + + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserRoles"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropTable( + name: "AspNetRoles"); + + migrationBuilder.DropTable( + name: "AspNetUsers"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "Users", + type: "INTEGER", + nullable: false, + oldClrType: typeof(string), + oldType: "TEXT") + .Annotation("Sqlite:Autoincrement", true); + + migrationBuilder.AddColumn( + name: "PasswordHash", + table: "Users", + type: "BLOB", + nullable: true); + + migrationBuilder.AlterColumn( + name: "InvitedUsersId", + table: "CampaignUser", + type: "INTEGER", + nullable: false, + oldClrType: typeof(string), + oldType: "TEXT"); + + migrationBuilder.AlterColumn( + name: "OwnerId", + table: "Campaigns", + type: "INTEGER", + nullable: false, + defaultValue: 0, + oldClrType: typeof(string), + oldType: "TEXT", + oldNullable: true); + + migrationBuilder.AddForeignKey( + name: "FK_Campaigns_Users_OwnerId", + table: "Campaigns", + column: "OwnerId", + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs new file mode 100644 index 0000000..152de98 --- /dev/null +++ b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs @@ -0,0 +1,503 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + partial class SledgemapperDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.3"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("INTEGER"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.HasIndex("CampaignId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.Property("Username") + .HasColumnType("TEXT"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Models/AuthResult.cs b/Sledgemapper.Api/Models/AuthResult.cs new file mode 100644 index 0000000..ec22a2c --- /dev/null +++ b/Sledgemapper.Api/Models/AuthResult.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Sledgemapper.Models.Users +{ + public class AuthResult + { + public string Token { get; set; } + public bool Result { get; set; } + public List Errors { get; set; } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/RegisterModel.cs b/Sledgemapper.Api/Models/RegisterModel.cs index 98e3af3..de274f0 100644 --- a/Sledgemapper.Api/Models/RegisterModel.cs +++ b/Sledgemapper.Api/Models/RegisterModel.cs @@ -6,16 +6,18 @@ namespace Sledgemapper.Models.Users { [Required] public string FirstName { get; set; } + [Required] + public string UserName { get; set; } [Required] public string LastName { get; set; } [Required] - public string Username { get; set; } + public string Email { get; set; } [Required] public string Password { get; set; } - + [Required] public string Initials { get; set; } } diff --git a/Sledgemapper.Api/Models/RegistrationResponse.cs b/Sledgemapper.Api/Models/RegistrationResponse.cs new file mode 100644 index 0000000..59789c6 --- /dev/null +++ b/Sledgemapper.Api/Models/RegistrationResponse.cs @@ -0,0 +1,7 @@ +namespace Sledgemapper.Models.Users +{ + public class RegistrationResponse : AuthResult + { + + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/UpdateModel.cs b/Sledgemapper.Api/Models/UpdateModel.cs deleted file mode 100644 index fb421f7..0000000 --- a/Sledgemapper.Api/Models/UpdateModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Sledgemapper.Models.Users -{ - public class UpdateModel - { - public string FirstName { get; set; } - public string LastName { get; set; } - public string Username { get; set; } - public string Password { get; set; } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/User.cs b/Sledgemapper.Api/Models/User.cs deleted file mode 100644 index 00eb6d7..0000000 --- a/Sledgemapper.Api/Models/User.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Sledgemapper.Entities -{ - public class User - { - public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - public string Username { get; set; } - public string Initials { get; set; } - public byte[] PasswordHash { get; set; } - public byte[] PasswordSalt { get; set; } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/UserLoginRequest.cs b/Sledgemapper.Api/Models/UserLoginRequest.cs new file mode 100644 index 0000000..4e5fa99 --- /dev/null +++ b/Sledgemapper.Api/Models/UserLoginRequest.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Sledgemapper.Models.Users +{ + public class UserLoginRequest + { + [Required] + public string Email { get; set; } + [Required] + public string Password { get; set; } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/UserModel.cs b/Sledgemapper.Api/Models/UserModel.cs deleted file mode 100644 index c1bb502..0000000 --- a/Sledgemapper.Api/Models/UserModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Sledgemapper.Models.Users -{ - public class UserModel - { - public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - public string Username { get; set; } - public string Initials { get; set; } - } -} \ No newline at end of file diff --git a/Sledgemapper.Api/Sledgemapper.Api.csproj b/Sledgemapper.Api/Sledgemapper.Api.csproj index 6456570..842ad1b 100644 --- a/Sledgemapper.Api/Sledgemapper.Api.csproj +++ b/Sledgemapper.Api/Sledgemapper.Api.csproj @@ -10,11 +10,15 @@ + + runtime; build; native; contentfiles; analyzers; buildtransitive all + + diff --git a/Sledgemapper.Api/Startup.cs b/Sledgemapper.Api/Startup.cs index 137a667..2ceb194 100644 --- a/Sledgemapper.Api/Startup.cs +++ b/Sledgemapper.Api/Startup.cs @@ -1,11 +1,8 @@ using System; -using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; using Sledgemapper.Api.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using MediatR; @@ -13,10 +10,7 @@ using Microsoft.IdentityModel.Tokens; using Sledgemapper.Helpers; using Microsoft.AspNetCore.Authentication.JwtBearer; using System.Text; -using AutoMapper; -using System.Security.Claims; using Sledgemapper.Api.Hubs; -using Sledgemapper.Api.Infrastructure.Services; namespace Sledgemapper.Api { @@ -31,93 +25,67 @@ namespace Sledgemapper.Api } - // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { - // if (_env.IsProduction()) - // services.AddDbContext(); - // else - // services.AddDbContext(); - - // services.AddRazorPages(); - services.AddCors(); + services.AddCors(); services.AddControllers(); services.AddSignalR(); services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddMediatR(typeof(Startup)); - services.AddDbContext(options => {options.UseSqlite("Data Source=db/sledgemapper.db"); options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);}); + services.AddDbContext(options => { options.UseSqlite("Data Source=db/sledgemapper.db"); options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); }); - // services.AddEntityFrameworkSqlite().AddDbContext(); - // configure strongly typed settings objects - var c = Configuration.GetSection("AppSettings"); - var appSettingsSection = Configuration.GetSection("AppSettings"); - services.Configure(appSettingsSection); + services.Configure(Configuration.GetSection("JwtConfig")); - // configure jwt authentication - var appSettings = appSettingsSection.Get(); - var key = Encoding.ASCII.GetBytes(appSettings.Secret); - services.AddAuthentication(x => + // configure DI for application services + + // within this section we are configuring the authentication and setting the default scheme + services.AddAuthentication(options => { - x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) - .AddJwtBearer(x => + .AddJwtBearer(jwt => { - x.Events = new JwtBearerEvents + var key = Encoding.ASCII.GetBytes(Configuration["JwtConfig:Secret"]); + + jwt.SaveToken = true; + jwt.TokenValidationParameters = new TokenValidationParameters { - OnTokenValidated = context => - { - var userService = context.HttpContext.RequestServices.GetRequiredService(); - var userId = int.Parse(context.Principal.Identity.Name); - var user = userService.GetById(userId); - if (user == null) - { - // return unauthorized if user no longer exists - context.Fail("Unauthorized"); - } - context.HttpContext.User.Claims.Append(new Claim(ClaimTypes.Name, user.Username)); - context.HttpContext.User.Claims.Append(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())); - return Task.CompletedTask; - } - }; - x.RequireHttpsMetadata = false; - x.SaveToken = true; - x.TokenValidationParameters = new TokenValidationParameters - { - ValidateIssuerSigningKey = true, - IssuerSigningKey = new SymmetricSecurityKey(key), + ValidateIssuerSigningKey = true, // this will validate the 3rd part of the jwt token using the secret that we added in the appsettings and verify we have generated the jwt token + IssuerSigningKey = new SymmetricSecurityKey(key), // Add the secret key to our Jwt encryption ValidateIssuer = false, - ValidateAudience = false + ValidateAudience = false, + RequireExpirationTime = false, + ValidateLifetime = true }; }); - // configure DI for application services - services.AddScoped(); + services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false) + .AddEntityFrameworkStores(); + + services.AddSwaggerGen(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, SledgemapperDbContext dataContext) { - dataContext.Database.Migrate(); + // Enable middleware to serve generated Swagger as a JSON endpoint. + app.UseSwagger(); - // if (env.IsDevelopment()) - // { - // app.UseDeveloperExceptionPage(); - // } - // else - // { - // app.UseExceptionHandler("/Error"); - // // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - // app.UseHsts(); - // } + // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), + // specifying the Swagger JSON endpoint. + app.UseSwaggerUI(c => + { + c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); + }); - // //app.UseHttpsRedirection(); - // app.UseStaticFiles(); + dataContext.Database.Migrate(); app.UseRouting(); - // global cors policy + app.UseCors(x => x .AllowAnyOrigin() .AllowAnyMethod() @@ -132,9 +100,7 @@ namespace Sledgemapper.Api app.UseEndpoints(endpoints => { - // endpoints.MapRazorPages(); endpoints.MapHub("/sledgemapperhub"); - }); } } diff --git a/Sledgemapper.Api/appsettings.json b/Sledgemapper.Api/appsettings.json index 8df0888..3471d80 100644 --- a/Sledgemapper.Api/appsettings.json +++ b/Sledgemapper.Api/appsettings.json @@ -1,16 +1,16 @@ { - "AppSettings": { - "Secret": "THIS IS USED TO SIGN AND VERIFY JWT TOKENS, REPLACE IT WITH YOUR OWN SECRET, IT CAN BE ANY STRING" - }, - "ConnectionStrings": { - "WebApiDatabase": "ENTER PRODUCTION SQL SERVER CONNECTION STRING HERE" - }, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" -} + "JwtConfig": { + "Secret": "ALy9zGFVZBza9cju458dVC2rBdwPqfb7" + }, + "ConnectionStrings": { + "WebApiDatabase": "ENTER PRODUCTION SQL SERVER CONNECTION STRING HERE" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index 5cdeb3a..3be2355 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 11/02/2021 23:16:18 */ +/* Generated by MyraPad at 19/02/2021 14:56:38 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -103,17 +103,17 @@ namespace Sledgemapper.UI var menuSeparator4 = new MenuSeparator(); - MenuCampaignInvite = new MenuItem(); - MenuCampaignInvite.Text = "&Invite"; - MenuCampaignInvite.ShortcutText = "Ctrl+I"; - MenuCampaignInvite.Id = "MenuCampaignInvite"; + MenuCampaignPlayers = new MenuItem(); + MenuCampaignPlayers.Text = "&Players"; + MenuCampaignPlayers.ShortcutText = "CtrI+P"; + MenuCampaignPlayers.Id = "MenuCampaignPlayers"; var menuItem2 = new MenuItem(); menuItem2.Text = "C&aign"; menuItem2.Items.Add(MenuCampaingNew); menuItem2.Items.Add(MenuCampaignOpen); menuItem2.Items.Add(menuSeparator4); - menuItem2.Items.Add(MenuCampaignInvite); + menuItem2.Items.Add(MenuCampaignPlayers); MenuMapNew = new MenuItem(); MenuMapNew.Text = "&New"; @@ -348,7 +348,7 @@ namespace Sledgemapper.UI public MenuItem MenuConnectUpload; public MenuItem MenuCampaingNew; public MenuItem MenuCampaignOpen; - public MenuItem MenuCampaignInvite; + public MenuItem MenuCampaignPlayers; public MenuItem MenuMapNew; public MenuItem MenuMapOpen; public MenuItem MenuViewShowNotes; diff --git a/Sledgemapper/UI/mainwidget.xmmp b/Sledgemapper/UI/mainwidget.xmmp index 076b0cb..0bae61b 100644 --- a/Sledgemapper/UI/mainwidget.xmmp +++ b/Sledgemapper/UI/mainwidget.xmmp @@ -27,7 +27,7 @@ - + From 350a283b5eee3fe5890205733f461389c8201731 Mon Sep 17 00:00:00 2001 From: Michele Date: Sat, 20 Feb 2021 00:21:03 +0000 Subject: [PATCH 10/81] cleanup --- .gitignore | 4 +++- Sledgemapper.Api/sledgemapper.db | Bin 40960 -> 0 bytes 2 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 Sledgemapper.Api/sledgemapper.db diff --git a/.gitignore b/.gitignore index 2527dec..bfb3dac 100644 --- a/.gitignore +++ b/.gitignore @@ -362,4 +362,6 @@ MigrationBackup/ # Fody - auto-generated XML schema FodyWeavers.xsd -/db \ No newline at end of file +/db +*.db +*.db* \ No newline at end of file diff --git a/Sledgemapper.Api/sledgemapper.db b/Sledgemapper.Api/sledgemapper.db deleted file mode 100644 index 376d51c1b5a6e98dcd80d907bc82c5b22cc67400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI*&u`mg7zc3M`BkS)UT7tvsuZlZLTa=WHC?B+k&xD=QI#%DnqQ^e#3HwGM<7kI zBx~1|9ooW$e}D@T7Y-Z%P1=Fe4rr6OA#vb}HgV#B5JG_1IPluB8z)UhQidkAUn@=Q z*Y@+i&*!yOxv}3SwI^816i zLRPsMUd^N{N;z086qJo>u2|3(!`a3{XD|_(O@*XzbUw5y(RMpgDHfGzfP>PRgajePAZiOt5e-0qtA!4rb6*py{47*J!Wvi?Yg7D5Rr8cRvhbR;4LW6@+PG0Vy&x_qgrYpJxH2rtbh)}%|JHEA}T ziiM-B=A}?Hew?UVr9!K$UcGLY)4N}^IXuI|{Gneo=6bhSIcX zX~?i?pr%p_uwM$@C**}?_bekF3F`x@mlR&Xox^-g>|CZawkH@p8xqY?&ORp zDP>vxh0yM#*exk-R-N=@Qm@T>`_?(~IawhV_m}R=ZoBKQE92_x`-&A~f&c^{009U< z00Izz00bb=g+Q`blqkA-^+^o_7t+LB|>Z7YP;Ggi(H5$0!qv3fPDBQ^B zeKb+5)-Hqs<33vdTR>p^HoqP8zjr_BtOt!glc3{2d=VE#_B|zQsms>7p;|jxgF0-d z_-QQBqqo!5F8OX_ULB1)j+)sz^=?B3KTO#5kfcrKtaG~QqPf3c5fZken5~=Hbxikb zN$bCLd$&QK-2XUkY2~@irrPm2t>y0TwA<$%-g}S|^pFEKQ|@vl%U-phlUmR*cIbC@ zFwH$weoF997p$jocB)J@SbBLcS+=x;VA5DFh$@0SG_<0uX=z1Rwwb z2tWV=|BFDc%`z++_u=&O7BAm;TT?%))#|ib2Km~J3%yRkG9>Ev9&jA7SVnl$Z88Ju z_y0WkontRd5P$##AOHafKmY;|fB*y_009V`CIOMRavrgiE0v1s^*?*)pCf;f-^kCW zDM{o40SG_<0uX=z1Rwwb2tWV=5IDO6eWIGXojvKoaSo9ewD14jpK$Dj2?7v+00bZa z0SG_<0uX=z1R(Id1P-q9c24}jZ`)Ic@S}mf+dlfHoX=Nkv$1WZoR@d?rD%~2D#2FJ z>5O0f&_|j$;gkG6I*}QhFvY2lSkc{s_C7k<80h5V0I=-Cl@&Rk%hJH6oUbT8y3F!d z$}H_GZ~17jm@gXh`d$9ofQ|a78ucLvwShF$Q5ufE|NoJE^SnA4^+Esw5P$##AOHaf zKmY;|fB*y_(5b-7;!JQpnOMBGFtxI|7@xcqPVY=khl8^$z%V}}_;1DhmoJP>PG$WY z*~OKGDdl`NwWI!nKc4)_u@@!?KmY;|fB*y_009U<00Izz00d5#K#xU#{$IWR*Pj1> zLjEAXo~|U34Fn(n0SG_<0uX=z1Rwwb2teR03pgDtd)t8e)_-*U|Cl^J%O=Pj0uX=z c1Rwwb2tWV=5P$##AaEK5Z0bJ>v Date: Sun, 21 Feb 2021 22:59:43 +0000 Subject: [PATCH 11/81] basic player management --- .../Commands/GetCampaignPlayersCommand.cs | 21 +++++ .../Commands/GetCampaignsCommand.cs | 15 +++ .../Commands/InvitePlayerToCampaignCommand.cs | 21 +++++ .../Commands/NewSessionCommand.cs | 10 -- .../Controllers/AuthManagementController.cs | 92 +++++++++---------- .../Controllers/CampaignController.cs | 15 +++ ...{SessionController.cs => MapController.cs} | 3 - .../GetCampaignPlayersCommandHandler.cs | 43 +++++++++ .../Handlers/GetCampaignsCommandHandler.cs | 39 ++++++++ .../InvitePlayerToCampaignCommandHandler.cs | 44 +++++++++ .../Handlers/NewCampaignCommandHandler.cs | 31 ------- Sledgemapper.Shared/Entities/Player.cs | 1 + 12 files changed, 244 insertions(+), 91 deletions(-) create mode 100644 Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs create mode 100644 Sledgemapper.Api/Commands/GetCampaignsCommand.cs create mode 100644 Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs rename Sledgemapper.Api/Controllers/{SessionController.cs => MapController.cs} (98%) create mode 100644 Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs create mode 100644 Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs create mode 100644 Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs diff --git a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs new file mode 100644 index 0000000..a53e795 --- /dev/null +++ b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using MediatR; +using Sledgemapper.Shared.Entities; + +namespace Sledgemapper.Api.Commands +{ + public class GetCampaignPlayersCommand : IRequest> + { + public double Timestamp { get; private set; } + public string CampaignName { get; private set; } + public string UserId { get; private set; } + public GetCampaignPlayersCommand(string campaingName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignName = campaingName; + UserId = userId; + } + } + +} \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/GetCampaignsCommand.cs b/Sledgemapper.Api/Commands/GetCampaignsCommand.cs new file mode 100644 index 0000000..6c4fa2b --- /dev/null +++ b/Sledgemapper.Api/Commands/GetCampaignsCommand.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using MediatR; + +namespace Sledgemapper.Api.Commands +{ + public class GetCampaignsCommand : IRequest> + { + public string UserId { get; private set; } + public GetCampaignsCommand(string userId) + { + UserId = userId; + } + } + +} \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs b/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs new file mode 100644 index 0000000..8ecc338 --- /dev/null +++ b/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs @@ -0,0 +1,21 @@ +using System; +using MediatR; + +namespace Sledgemapper.Api.Commands +{ + public class InvitePlayerToCampaignCommand : IRequest + { + public double Timestamp { get; private set; } + public string CampaignName { get; private set; } + public string Email { get; private set; } + public string UserId { get; private set; } + public InvitePlayerToCampaignCommand(string campaingName, string email, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignName = campaingName; + UserId = userId; + Email = email; + } + } + +} \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/NewSessionCommand.cs b/Sledgemapper.Api/Commands/NewSessionCommand.cs index e85c6ab..38e4524 100644 --- a/Sledgemapper.Api/Commands/NewSessionCommand.cs +++ b/Sledgemapper.Api/Commands/NewSessionCommand.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using MediatR; namespace Sledgemapper.Api.Commands @@ -24,13 +23,4 @@ namespace Sledgemapper.Api.Commands } } - public class GetCampaignsCommand : IRequest> - { - public string UserId { get; private set; } - public GetCampaignsCommand(string userId) - { - UserId = userId; - } - } - } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/AuthManagementController.cs b/Sledgemapper.Api/Controllers/AuthManagementController.cs index 53acc5a..a6eda75 100644 --- a/Sledgemapper.Api/Controllers/AuthManagementController.cs +++ b/Sledgemapper.Api/Controllers/AuthManagementController.cs @@ -1,14 +1,10 @@ -using MediatR; -using Microsoft.AspNetCore.Authorization; +using AutoMapper; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; -using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Notifications; using Sledgemapper.Entities; using Sledgemapper.Models.Users; -using Sledgemapper.Shared.Entities; using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; @@ -19,19 +15,21 @@ using System.Threading.Tasks; namespace Sledgemapper.Api.Controllers { - [Route("[controller]")] // api/authmanagement [ApiController] public class AuthManagementController : ControllerBase { private readonly UserManager _userManager; private readonly JwtConfig _jwtConfig; + private readonly IMapper _mapper; public AuthManagementController(UserManager userManager, - IOptionsMonitor optionsMonitor) + IOptionsMonitor optionsMonitor, + IMapper mapper) { _userManager = userManager; _jwtConfig = optionsMonitor.CurrentValue; + _mapper = mapper; } [HttpPost] @@ -55,7 +53,8 @@ namespace Sledgemapper.Api.Controllers }); } - var newUser = new User() { Email = user.Email, UserName = user.UserName }; + var newUser = _mapper.Map(user); + // var newUser = new User() { Email = user.Email, UserName = user.UserName }; var isCreated = await _userManager.CreateAsync(newUser, user.Password); if (isCreated.Succeeded) { @@ -86,43 +85,6 @@ namespace Sledgemapper.Api.Controllers }); } - private string GenerateJwtToken(User user) - { - // Now its ime to define the jwt token which will be responsible of creating our tokens - var jwtTokenHandler = new JwtSecurityTokenHandler(); - - // We get our secret from the appsettings - var key = Encoding.ASCII.GetBytes(_jwtConfig.Secret); - - // we define our token descriptor - // We need to utilise claims which are properties in our token which gives information about the token - // which belong to the specific user who it belongs to - // so it could contain their id, name, email the good part is that these information - // are generated by our server and identity framework which is valid and trusted - var tokenDescriptor = new SecurityTokenDescriptor - { - Subject = new ClaimsIdentity(new[] - { - new Claim("Id", user.Id.ToString()), - new Claim(JwtRegisteredClaimNames.Sub, user.Email), - new Claim(JwtRegisteredClaimNames.Email, user.Email), - // the JTI is used for our refresh token which we will be convering in the next video - new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) - }), - // the life span of the token needs to be shorter and utilise refresh token to keep the user signedin - // but since this is a demo app we can extend it to fit our current need - Expires = DateTime.UtcNow.AddHours(6), - // here we are adding the encryption alogorithim information which will be used to decrypt our token - SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature) - }; - - var token = jwtTokenHandler.CreateToken(tokenDescriptor); - - var jwtToken = jwtTokenHandler.WriteToken(token); - - return jwtToken; - } - [HttpPost] [Route("Login")] public async Task Login([FromBody] UserLoginRequest user) @@ -178,7 +140,43 @@ namespace Sledgemapper.Api.Controllers } }); } + + private string GenerateJwtToken(User user) + { + // Now its ime to define the jwt token which will be responsible of creating our tokens + var jwtTokenHandler = new JwtSecurityTokenHandler(); + + // We get our secret from the appsettings + var key = Encoding.ASCII.GetBytes(_jwtConfig.Secret); + + // we define our token descriptor + // We need to utilise claims which are properties in our token which gives information about the token + // which belong to the specific user who it belongs to + // so it could contain their id, name, email the good part is that these information + // are generated by our server and identity framework which is valid and trusted + var tokenDescriptor = new SecurityTokenDescriptor + { + + Subject = new ClaimsIdentity(new[] + { + new Claim("Id", user.Id.ToString()), + new Claim(JwtRegisteredClaimNames.Sub, user.Email), + new Claim(JwtRegisteredClaimNames.Email, user.Email), + // the JTI is used for our refresh token which we will be convering in the next video + new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) + }), + // the life span of the token needs to be shorter and utilise refresh token to keep the user signedin + // but since this is a demo app we can extend it to fit our current need + Expires = DateTime.UtcNow.AddHours(6), + // here we are adding the encryption alogorithim information which will be used to decrypt our token + SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature) + }; + + var token = jwtTokenHandler.CreateToken(tokenDescriptor); + + var jwtToken = jwtTokenHandler.WriteToken(token); + + return jwtToken; + } } - - } diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 8bd6c49..576bd2b 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -35,5 +35,20 @@ namespace Sledgemapper.Api.Controllers return result; } + [HttpPost] + [Route("{campaignName}/players/{email}")] + public async Task Invite(string campaignName, string email) + { + var result = await _mediator.Send(new InvitePlayerToCampaignCommand(campaignName, email, UserId.ToString())); + return result; + } + + [HttpGet] + [Route("{campaignName}/players")] + public async Task> GetPlayers(string campaignName) + { + var result = await _mediator.Send(new GetCampaignPlayersCommand(campaignName, UserId.ToString())); + return result; + } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/SessionController.cs b/Sledgemapper.Api/Controllers/MapController.cs similarity index 98% rename from Sledgemapper.Api/Controllers/SessionController.cs rename to Sledgemapper.Api/Controllers/MapController.cs index e13c9d1..762cb2e 100644 --- a/Sledgemapper.Api/Controllers/SessionController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -2,7 +2,6 @@ using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; using System.Threading.Tasks; @@ -17,8 +16,6 @@ namespace Sledgemapper.Api.Controllers public MapController(IMediator mediator) => _mediator = mediator; - - [HttpPost] public async Task Post(string mapName) { diff --git a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs new file mode 100644 index 0000000..144cba0 --- /dev/null +++ b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs @@ -0,0 +1,43 @@ +using MediatR; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; +using Sledgemapper.Shared.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Handlers +{ + public class GetCampaignPlayersCommandHandler : IRequestHandler> + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public GetCampaignPlayersCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task> Handle(GetCampaignPlayersCommand command, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(command.UserId); + _dbcontext.Attach(user); + + var campaign = await _dbcontext.Campaigns.Where(campaign=>campaign.CampaignName==command.CampaignName && campaign.OwnerId==command.UserId).Include(campaign=>campaign.InvitedUsers).FirstAsync(); + + var players=campaign.InvitedUsers.Select(user=>new Player{Initials=user.Initials, UserName=user.UserName}).ToList(); + return players; + } + catch (Exception ex) + { + } + return null; + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs new file mode 100644 index 0000000..8588a0f --- /dev/null +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -0,0 +1,39 @@ +using MediatR; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Handlers +{ + public class GetCampaignsCommandHandler : IRequestHandler> + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public GetCampaignsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task> Handle(GetCampaignsCommand command, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(command.UserId); + _dbcontext.Attach(user); + var campaigns = _dbcontext.Campaigns.Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); + + return campaigns.ToList(); + } + catch (Exception ex) + { + } + return new List(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs new file mode 100644 index 0000000..c6c6a28 --- /dev/null +++ b/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs @@ -0,0 +1,44 @@ +using MediatR; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Handlers +{ + public class InvitePlayerToCampaignCommandHandler : IRequestHandler + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public InvitePlayerToCampaignCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task Handle(InvitePlayerToCampaignCommand command, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(command.UserId); + + var campaign = await _dbcontext.Campaigns.Where(campaign=>campaign.CampaignName==command.CampaignName && campaign.OwnerId==command.UserId).Include(campaign=>campaign.InvitedUsers).FirstAsync(); + var invitedUser = await _dbcontext.Users.FirstOrDefaultAsync(user=>user.Email==command.Email); + _dbcontext.Attach(invitedUser); + _dbcontext.Attach(campaign); + campaign.InvitedUsers.Add(invitedUser); + _dbcontext.Campaigns.Update(campaign); + await _dbcontext.SaveChangesAsync(); + return true; + } + catch (Exception ex) + { + } + return false; + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs index 7f464fb..97f022b 100644 --- a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs @@ -1,10 +1,7 @@ using MediatR; -using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -47,32 +44,4 @@ namespace Sledgemapper.Api.Handlers return false; } } - - public class GetCampaignsCommandHandler : IRequestHandler> - { - private readonly IMediator _mediator; - private readonly SledgemapperDbContext _dbcontext; - - public GetCampaignsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) - { - _mediator = mediator; - _dbcontext = dbcontext; - } - - public async Task> Handle(GetCampaignsCommand command, CancellationToken cancellationToken) - { - try - { - var user = await _dbcontext.Users.FindAsync(command.UserId); - _dbcontext.Attach(user); - var campaigns = _dbcontext.Campaigns.Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); - - return campaigns.ToList(); - } - catch (Exception ex) - { - } - return new List(); - } - } } \ No newline at end of file diff --git a/Sledgemapper.Shared/Entities/Player.cs b/Sledgemapper.Shared/Entities/Player.cs index 976d516..3a86110 100644 --- a/Sledgemapper.Shared/Entities/Player.cs +++ b/Sledgemapper.Shared/Entities/Player.cs @@ -4,6 +4,7 @@ namespace Sledgemapper.Shared.Entities { public int UserId { get; set; } public string Color { get; set; } + public string UserName { get; set; } public string Initials { get; set; } public Tile Position { get; set; } From b6999cef0ab023686b8296df8bc8c963215b359f Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 27 May 2021 23:20:47 +0100 Subject: [PATCH 12/81] small improvements to campaign management --- .../Handlers/GetCampaignsCommandHandler.cs | 3 +- Sledgemapper.Api/Sledgemapper.Api.csproj | 17 ++++---- Sledgemapper.Api/Startup.cs | 40 ++++++++++++++++++- Sledgemapper/Sledgemapper.csproj | 8 ++-- nuget.config | 1 - 5 files changed, 53 insertions(+), 16 deletions(-) diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs index 8588a0f..2d30481 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -1,4 +1,5 @@ using MediatR; +using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; using System; @@ -26,7 +27,7 @@ namespace Sledgemapper.Api.Handlers { var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaigns = _dbcontext.Campaigns.Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); + var campaigns = _dbcontext.Campaigns.Include(c=>c.InvitedUsers).Include(c=>c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); return campaigns.ToList(); } diff --git a/Sledgemapper.Api/Sledgemapper.Api.csproj b/Sledgemapper.Api/Sledgemapper.Api.csproj index 842ad1b..30d003d 100644 --- a/Sledgemapper.Api/Sledgemapper.Api.csproj +++ b/Sledgemapper.Api/Sledgemapper.Api.csproj @@ -9,18 +9,19 @@ - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + - - - + + + diff --git a/Sledgemapper.Api/Startup.cs b/Sledgemapper.Api/Startup.cs index 2ceb194..5e162ea 100644 --- a/Sledgemapper.Api/Startup.cs +++ b/Sledgemapper.Api/Startup.cs @@ -11,6 +11,8 @@ using Sledgemapper.Helpers; using Microsoft.AspNetCore.Authentication.JwtBearer; using System.Text; using Sledgemapper.Api.Hubs; +using Microsoft.OpenApi.Models; +using Newtonsoft.Json; namespace Sledgemapper.Api { @@ -29,7 +31,13 @@ namespace Sledgemapper.Api public void ConfigureServices(IServiceCollection services) { services.AddCors(); - services.AddControllers(); + services.AddControllers().AddNewtonsoftJson(o => + { + o.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; + }); ; + + + services.AddSignalR(); services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddMediatR(typeof(Startup)); @@ -65,7 +73,35 @@ namespace Sledgemapper.Api services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false) .AddEntityFrameworkStores(); - services.AddSwaggerGen(); + services.AddSwaggerGen(c => + { + c.SwaggerDoc("v1", new OpenApiInfo + { + Title = "My API", + Version = "v1" + }); + c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + In = ParameterLocation.Header, + Description = "Please insert JWT with Bearer into field", + Name = "Authorization", + Type = SecuritySchemeType.ApiKey + }); + c.AddSecurityRequirement(new OpenApiSecurityRequirement { + { new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + new string[] { } + } + }); + }); + + } diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 4c1713d..94bd825 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -41,20 +41,20 @@ --> - + - 5.0.3 + 5.0.4 - + - + diff --git a/nuget.config b/nuget.config index 8f3c5fe..380826d 100644 --- a/nuget.config +++ b/nuget.config @@ -1,7 +1,6 @@ - \ No newline at end of file From a13fb499426d3e4fa79868127285ca7cd7be94c0 Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 28 May 2021 23:14:40 +0100 Subject: [PATCH 13/81] wiring up new auth endpoint --- .../Commands/GetCampaignsCommand.cs | 3 +- .../Controllers/CampaignController.cs | 2 +- Sledgemapper.Api/Core/Entities/Campaign.cs | 3 +- .../Handlers/GetCampaignsCommandHandler.cs | 13 +- ...20210528182730_ChangeCompanyId.Designer.cs | 503 ++++++++++++++++++ .../20210528182730_ChangeCompanyId.cs | 110 ++++ .../SledgemapperDbContextModelSnapshot.cs | 22 +- .../Clients/ISledgemapperClient.cs | 3 + Sledgemapper.Shared/Entities/Campaign.cs | 12 +- Sledgemapper.Shared/Entities/RegisterModel.cs | 3 + Sledgemapper/CommunicationManager.cs | 2 +- Sledgemapper/IMapApi.cs | 19 +- Sledgemapper/Sledgemapper.cs | 89 +++- Sledgemapper/Sledgemapper.csproj | 8 +- Sledgemapper/UI/CampaignWindow.Generated.cs | 67 +++ Sledgemapper/UI/CampaignWindow.cs | 11 + Sledgemapper/UI/campaignWindow.xmmp | 17 + 17 files changed, 850 insertions(+), 37 deletions(-) create mode 100644 Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.cs create mode 100644 Sledgemapper/UI/CampaignWindow.Generated.cs create mode 100644 Sledgemapper/UI/CampaignWindow.cs create mode 100644 Sledgemapper/UI/campaignWindow.xmmp diff --git a/Sledgemapper.Api/Commands/GetCampaignsCommand.cs b/Sledgemapper.Api/Commands/GetCampaignsCommand.cs index 6c4fa2b..520717d 100644 --- a/Sledgemapper.Api/Commands/GetCampaignsCommand.cs +++ b/Sledgemapper.Api/Commands/GetCampaignsCommand.cs @@ -1,9 +1,10 @@ using System.Collections.Generic; using MediatR; +using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Commands { - public class GetCampaignsCommand : IRequest> + public class GetCampaignsCommand : IRequest> { public string UserId { get; private set; } public GetCampaignsCommand(string userId) diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 576bd2b..36cdd26 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -29,7 +29,7 @@ namespace Sledgemapper.Api.Controllers } [HttpGet] - public async Task> Get() + public async Task> Get() { var result = await _mediator.Send(new GetCampaignsCommand(UserId)); return result; diff --git a/Sledgemapper.Api/Core/Entities/Campaign.cs b/Sledgemapper.Api/Core/Entities/Campaign.cs index 2dc13b5..1caa09d 100644 --- a/Sledgemapper.Api/Core/Entities/Campaign.cs +++ b/Sledgemapper.Api/Core/Entities/Campaign.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Sledgemapper.Entities; @@ -7,7 +8,7 @@ namespace Sledgemapper.Api.Core.Entities [Index(nameof(CampaignName), nameof(OwnerId), IsUnique = true)] public class Campaign { - public int CampaignId { get; set; } + public Guid CampaignId { get; set; } public string CampaignName { get; set; } public string OwnerId { get; set; } diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs index 2d30481..4c651b2 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -2,6 +2,7 @@ using MediatR; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; +using Sledgemapper.Shared.Entities; using System; using System.Collections.Generic; using System.Linq; @@ -10,7 +11,7 @@ using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class GetCampaignsCommandHandler : IRequestHandler> + public class GetCampaignsCommandHandler : IRequestHandler> { private readonly IMediator _mediator; private readonly SledgemapperDbContext _dbcontext; @@ -21,20 +22,22 @@ namespace Sledgemapper.Api.Handlers _dbcontext = dbcontext; } - public async Task> Handle(GetCampaignsCommand command, CancellationToken cancellationToken) + public async Task> Handle(GetCampaignsCommand command, CancellationToken cancellationToken) { try { var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaigns = _dbcontext.Campaigns.Include(c=>c.InvitedUsers).Include(c=>c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); + var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); - return campaigns.ToList(); + return campaigns. + Select(c => new Shared.Entities.Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Shared.Entities.Map { SessionName = m.MapName }).ToList()}) + .ToList(); } catch (Exception ex) { } - return new List(); + return new List(); } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.Designer.cs b/Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.Designer.cs new file mode 100644 index 0000000..abbac2c --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.Designer.cs @@ -0,0 +1,503 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210528182730_ChangeCompanyId")] + partial class ChangeCompanyId + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("CampaignId1") + .HasColumnType("TEXT"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.HasIndex("CampaignId1"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId1"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.cs b/Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.cs new file mode 100644 index 0000000..b56d87e --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210528182730_ChangeCompanyId.cs @@ -0,0 +1,110 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class ChangeCompanyId : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Maps_Campaigns_CampaignId", + table: "Maps"); + + migrationBuilder.DropIndex( + name: "IX_Maps_CampaignId", + table: "Maps"); + + migrationBuilder.DropColumn( + name: "Username", + table: "Users"); + + migrationBuilder.AddColumn( + name: "CampaignId1", + table: "Maps", + type: "TEXT", + nullable: true); + + migrationBuilder.AlterColumn( + name: "CampaignsCampaignId", + table: "CampaignUser", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.AlterColumn( + name: "CampaignId", + table: "Campaigns", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER") + .OldAnnotation("Sqlite:Autoincrement", true); + + migrationBuilder.CreateIndex( + name: "IX_Maps_CampaignId1", + table: "Maps", + column: "CampaignId1"); + + migrationBuilder.AddForeignKey( + name: "FK_Maps_Campaigns_CampaignId1", + table: "Maps", + column: "CampaignId1", + principalTable: "Campaigns", + principalColumn: "CampaignId", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Maps_Campaigns_CampaignId1", + table: "Maps"); + + migrationBuilder.DropIndex( + name: "IX_Maps_CampaignId1", + table: "Maps"); + + migrationBuilder.DropColumn( + name: "CampaignId1", + table: "Maps"); + + migrationBuilder.AddColumn( + name: "Username", + table: "Users", + type: "TEXT", + nullable: true); + + migrationBuilder.AlterColumn( + name: "CampaignsCampaignId", + table: "CampaignUser", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + + migrationBuilder.AlterColumn( + name: "CampaignId", + table: "Campaigns", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT") + .Annotation("Sqlite:Autoincrement", true); + + migrationBuilder.CreateIndex( + name: "IX_Maps_CampaignId", + table: "Maps", + column: "CampaignId"); + + migrationBuilder.AddForeignKey( + name: "FK_Maps_Campaigns_CampaignId", + table: "Maps", + column: "CampaignId", + principalTable: "Campaigns", + principalColumn: "CampaignId", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs index 152de98..8a873af 100644 --- a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs +++ b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs @@ -14,12 +14,12 @@ namespace Sledgemapper.Api.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "5.0.3"); + .HasAnnotation("ProductVersion", "5.0.6"); modelBuilder.Entity("CampaignUser", b => { - b.Property("CampaignsCampaignId") - .HasColumnType("INTEGER"); + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); b.Property("InvitedUsersId") .HasColumnType("TEXT"); @@ -229,9 +229,9 @@ namespace Sledgemapper.Api.Migrations modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => { - b.Property("CampaignId") + b.Property("CampaignId") .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + .HasColumnType("TEXT"); b.Property("CampaignName") .HasColumnType("TEXT"); @@ -258,13 +258,16 @@ namespace Sledgemapper.Api.Migrations b.Property("CampaignId") .HasColumnType("INTEGER"); + b.Property("CampaignId1") + .HasColumnType("TEXT"); + b.Property("MapName") .IsRequired() .HasColumnType("TEXT"); b.HasKey("MapId"); - b.HasIndex("CampaignId"); + b.HasIndex("CampaignId1"); b.ToTable("Maps"); }); @@ -394,9 +397,6 @@ namespace Sledgemapper.Api.Migrations b.Property("PasswordSalt") .HasColumnType("BLOB"); - b.Property("Username") - .HasColumnType("TEXT"); - b.ToTable("Users"); }); @@ -479,9 +479,7 @@ namespace Sledgemapper.Api.Migrations { b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) .WithMany("Maps") - .HasForeignKey("CampaignId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("CampaignId1"); }); modelBuilder.Entity("Sledgemapper.Entities.User", b => diff --git a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs index 4e8bc07..ee771b6 100644 --- a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs +++ b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using System.Collections.Generic; using System.Threading.Tasks; namespace Sledgemapper.Clients @@ -21,5 +22,7 @@ namespace Sledgemapper.Clients Task RefreshPlayers(); Task NewLine(Line line); Task Ping(Ping ping); + Task NewCampaign(string campaignName); + Task> GetCampaigns(); } } diff --git a/Sledgemapper.Shared/Entities/Campaign.cs b/Sledgemapper.Shared/Entities/Campaign.cs index dda0399..99e8e2c 100644 --- a/Sledgemapper.Shared/Entities/Campaign.cs +++ b/Sledgemapper.Shared/Entities/Campaign.cs @@ -1,10 +1,12 @@ using System; using System.Collections.Generic; -using Sledgemapper.Shared.Entities; -public class Campaign +namespace Sledgemapper.Shared.Entities { - public Guid Id {get;set;} - public string Name { get; set; } - public List Maps {get;set;} + public class Campaign + { + public Guid Id { get; set; } + public string Name { get; set; } + public List Maps { get; set; } + } } \ No newline at end of file diff --git a/Sledgemapper.Shared/Entities/RegisterModel.cs b/Sledgemapper.Shared/Entities/RegisterModel.cs index d739ba1..b349269 100644 --- a/Sledgemapper.Shared/Entities/RegisterModel.cs +++ b/Sledgemapper.Shared/Entities/RegisterModel.cs @@ -13,6 +13,9 @@ namespace Sledgemapper.Shared.Entities [Required] public string Username { get; set; } + [Required] + public string Email { get; set; } + [Required] public string Password { get; set; } [Required] diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index ccb35e9..12668c5 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -167,7 +167,7 @@ namespace Sledgemapper return Task.FromResult(_authenticateResponse.Token); } - public async Task Register(RegisterModel registerModel) + public async Task Register(RegisterModel registerModel) { var result = await Api.Register(registerModel).ConfigureAwait(false); return result; diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index a68b3cd..ca2d5a8 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -1,5 +1,6 @@ using Refit; using Sledgemapper.Shared.Entities; +using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; @@ -42,12 +43,19 @@ namespace Sledgemapper Task DeleteNote([Body] Note overlay, string sessionName); - [Headers("Authorization")] - [Post("/users/register")] - Task Register([Body] RegisterModel registerModel); + public class AuthResult + { + public string Token { get; set; } + public bool Result { get; set; } + public List Errors { get; set; } + } [Headers("Authorization")] - [Post("/users/authenticate")] + [Post("/authmanagement/register")] + Task Register([Body] RegisterModel registerModel); + + [Headers("Authorization")] + [Post("/authmanagement/authenticate")] Task Authenticate([Body] AuthenticateModel registerModel); [Post("/session/{sessionName}/room")] @@ -55,5 +63,8 @@ namespace Sledgemapper [Post("/session/{sessionName}/line")] Task NewLine(Line line, string sessionName); + + [Post("/campaign/{campaignName}")] + Task NewCampaign(string campaignName); } } \ No newline at end of file diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 07b9220..787830c 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -1,4 +1,4 @@ -using Exceptionless; +using Exceptionless; using Exceptionless.Models; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; @@ -211,6 +211,8 @@ namespace Sledgemapper _mainWidget.MenuViewCenterOnSelection.Selected += OnMenuViewCenterOnSelectionSelected; _mainWidget.MenuViewShowCellNUmbers.Selected += OnMenuViewShowCellNUmbersSelected; _mainWidget.MenuViewShowNotes.Selected += OnMenuViewNotesSelected; + _mainWidget.MenuCampaingNew.Selected += OnMenuCampaignNew; + _mainWidget.MenuConnectNew.Enabled = false; _mainWidget.MenuConnectJoin.Enabled = false; _mainWidget.MenuConnectSync.Enabled = false; @@ -219,6 +221,7 @@ namespace Sledgemapper _mainWidget.BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; _mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; + _wallsContent = Content.LoadContentFolder("walls"); _spriteSheet = new SpriteSheet(); @@ -298,6 +301,27 @@ namespace Sledgemapper ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); } + private void OnMenuCampaignNew(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "New campaign" + }; + + var content = new CampaignWindow(); + //content.BtnNewCampaign.Text = "N"; + content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + window.Content = content; + + window.ShowModal(_desktop); + content.TxtCampaign.SetKeyboardFocus(); + } + private void OneMenuFileSettingsSelected(object sender, EventArgs e) { var propertyGrid = new PropertyGrid @@ -1900,6 +1924,64 @@ namespace Sledgemapper } } + private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + { + Container container = ((TextButton)sender).Parent; + while (!(container is Window)) + { + container = container.Parent; + } + var localWindow = (Window)container; + var localContent = localWindow.Content as CampaignWindow; + var isValid = ValidateTextbox(localContent.TxtCampaign); + if (!isValid) + { + return; + } + + if (_communicationManager.Connection.State != HubConnectionState.Connected) + { + _mainWidget.lblConnectionStatus.Text = "Connecting"; + await _communicationManager.Connection.StartAsync(); + UpdateConnectionState(_communicationManager.Connection); + } + + var successful = false; + try + { + await _communicationManager.Api.NewCampaign(localContent.TxtCampaign.Text); + + //if (result) + //{ + // _sessionData.SessionName = localContent.TxtSession.Text; + // _sessionData.MapEntityAdded -= OnMapEntityAdded; + // _sessionData.MapEntityDeleted -= OnMapEntityDeleted; + // _sessionData.MapEntityAdded += OnMapEntityAdded; + // _sessionData.MapEntityDeleted += OnMapEntityDeleted; + //} + //successful = result; + //var result2 = await _communicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + //_sessionData.SessionId = result2.SessionId; + //_sessionData.SessionName = localContent.TxtSession.Text; + } + catch (Exception ex) + { + ExceptionlessClient.Default.SubmitException(ex); + } + + if (successful) + { + //_sessionData.SessionName = localContent.TxtSession.Text; + //_communicationManager.SessionData.Map = _sessionData.Map; + //_communicationManager.SessionData.Overlays = _sessionData.Overlays; + //_communicationManager.SessionData.Walls = _sessionData.Walls; + //_mainWidget.lblSessionName.Text = _sessionData.SessionName; + //_mainWidget.MenuConnectSync.Enabled = true; + //_mainWidget.MenuConnectUpload.Enabled = true; + localWindow.Close(); + } + } + private async void OnButtonNewSessionClicked(object sender, EventArgs e) { Container container = ((TextButton)sender).Parent; @@ -2124,12 +2206,13 @@ namespace Sledgemapper var result = await _communicationManager.Register(new RegisterModel { Username = localContent.TxtEmail.Text, + Email = localContent.TxtEmail.Text, Password = localContent.TxtPassword.Text, FirstName = localContent.TxtFirstname.Text, LastName = localContent.TxtLastname.Text, Initials = localContent.TxtInitials.Text }); - if (result.IsSuccessStatusCode) + if (result.Result) { _authResponse = await _communicationManager.Login(new AuthenticateModel { @@ -2140,7 +2223,7 @@ namespace Sledgemapper } else { - localContent.LblLoginError.Text = result.ReasonPhrase; + localContent.LblLoginError.Text = result.Errors.FirstOrDefault(); localContent.LblLoginError.Visible = true; } } diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 94bd825..8265566 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -48,13 +48,13 @@ - 5.0.4 + 5.0.6 - - + + - + diff --git a/Sledgemapper/UI/CampaignWindow.Generated.cs b/Sledgemapper/UI/CampaignWindow.Generated.cs new file mode 100644 index 0000000..e913b0e --- /dev/null +++ b/Sledgemapper/UI/CampaignWindow.Generated.cs @@ -0,0 +1,67 @@ +/* Generated by MyraPad at 28/05/2021 22:36:14 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class CampaignWindow: VerticalStackPanel + { + private void BuildUI() + { + var label1 = new Label(); + label1.Text = "Campaign"; + + TxtCampaign = new TextBox(); + TxtCampaign.GridColumn = 1; + TxtCampaign.Id = "TxtCampaign"; + + var grid1 = new Grid(); + grid1.ColumnSpacing = 25; + grid1.RowSpacing = 10; + grid1.ColumnsProportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Pixels, + Value = 60, + }); + grid1.ColumnsProportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Fill, + }); + grid1.Widgets.Add(label1); + grid1.Widgets.Add(TxtCampaign); + + BtnNewCampaign = new TextButton(); + BtnNewCampaign.Text = "New"; + BtnNewCampaign.Padding = new Thickness(10, 5); + BtnNewCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnNewCampaign.Id = "BtnNewCampaign"; + + + Spacing = 16; + HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + Width = 300; + Padding = new Thickness(10); + Widgets.Add(grid1); + Widgets.Add(BtnNewCampaign); + } + + + public TextBox TxtCampaign; + public TextButton BtnNewCampaign; + } +} diff --git a/Sledgemapper/UI/CampaignWindow.cs b/Sledgemapper/UI/CampaignWindow.cs new file mode 100644 index 0000000..24447b9 --- /dev/null +++ b/Sledgemapper/UI/CampaignWindow.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 28/05/2021 22:36:14 */ +namespace Sledgemapper.UI +{ + public partial class CampaignWindow + { + public CampaignWindow() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/campaignWindow.xmmp b/Sledgemapper/UI/campaignWindow.xmmp new file mode 100644 index 0000000..a54c870 --- /dev/null +++ b/Sledgemapper/UI/campaignWindow.xmmp @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file From 53bfb770ea101fe713005650c584bfb3136de7d5 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Wed, 2 Jun 2021 23:10:37 +0100 Subject: [PATCH 14/81] Get campaign list --- .../Entities/AuthenticateModel.cs | 3 + Sledgemapper/IMapApi.cs | 5 +- Sledgemapper/Sledgemapper.cs | 29 ++++++- Sledgemapper/UI/CampaignList.Generated.cs | 80 +++++++++++++++++++ Sledgemapper/UI/CampaignList.cs | 11 +++ Sledgemapper/UI/campaignsList.xmmp | 19 +++++ 6 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 Sledgemapper/UI/CampaignList.Generated.cs create mode 100644 Sledgemapper/UI/CampaignList.cs create mode 100644 Sledgemapper/UI/campaignsList.xmmp diff --git a/Sledgemapper.Shared/Entities/AuthenticateModel.cs b/Sledgemapper.Shared/Entities/AuthenticateModel.cs index 61c8d20..cb13fb3 100644 --- a/Sledgemapper.Shared/Entities/AuthenticateModel.cs +++ b/Sledgemapper.Shared/Entities/AuthenticateModel.cs @@ -9,5 +9,8 @@ namespace Sledgemapper.Shared.Entities [Required] public string Password { get; set; } + + [Required] + public string Email { get; set; } } } \ No newline at end of file diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index ca2d5a8..5c594f1 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -55,7 +55,7 @@ namespace Sledgemapper Task Register([Body] RegisterModel registerModel); [Headers("Authorization")] - [Post("/authmanagement/authenticate")] + [Post("/authmanagement/login")] Task Authenticate([Body] AuthenticateModel registerModel); [Post("/session/{sessionName}/room")] @@ -66,5 +66,8 @@ namespace Sledgemapper [Post("/campaign/{campaignName}")] Task NewCampaign(string campaignName); + + [Get("/campaign/")] + Task> GetCampaigns(); } } \ No newline at end of file diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 787830c..041b7cc 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -211,8 +211,9 @@ namespace Sledgemapper _mainWidget.MenuViewCenterOnSelection.Selected += OnMenuViewCenterOnSelectionSelected; _mainWidget.MenuViewShowCellNUmbers.Selected += OnMenuViewShowCellNUmbersSelected; _mainWidget.MenuViewShowNotes.Selected += OnMenuViewNotesSelected; - _mainWidget.MenuCampaingNew.Selected += OnMenuCampaignNew; + _mainWidget.MenuCampaingNew.Selected += OnMenuCampaignNew; + _mainWidget.MenuCampaignOpen.Selected += OnMenuCampaignOpen; _mainWidget.MenuConnectNew.Enabled = false; _mainWidget.MenuConnectJoin.Enabled = false; _mainWidget.MenuConnectSync.Enabled = false; @@ -322,6 +323,31 @@ namespace Sledgemapper content.TxtCampaign.SetKeyboardFocus(); } + private async void OnMenuCampaignOpen(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "Campaigns" + }; + + var content = new CampaignList(); + var campaigns = await _communicationManager.Api.GetCampaigns(); + //content.BtnNewCampaign.Text = "N"; + + + +// content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + window.Content = content; + + window.ShowModal(_desktop); + // content.TxtCampaign.SetKeyboardFocus(); + } + private void OneMenuFileSettingsSelected(object sender, EventArgs e) { var propertyGrid = new PropertyGrid @@ -2133,6 +2159,7 @@ namespace Sledgemapper _authResponse = await _communicationManager.Login(new AuthenticateModel { Username = localContent.TxtEmail.Text, + Email = localContent.TxtEmail.Text, Password = localContent.TxtPassword.Text }); successful = _authResponse != null; diff --git a/Sledgemapper/UI/CampaignList.Generated.cs b/Sledgemapper/UI/CampaignList.Generated.cs new file mode 100644 index 0000000..e36e173 --- /dev/null +++ b/Sledgemapper/UI/CampaignList.Generated.cs @@ -0,0 +1,80 @@ +/* Generated by MyraPad at 01/06/2021 12:43:27 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class CampaignList: VerticalStackPanel + { + private void BuildUI() + { + var label1 = new Label(); + label1.Text = "Campaigns"; + label1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + + StackNotesList = new VerticalStackPanel(); + StackNotesList.Proportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Fill, + }); + StackNotesList.MinHeight = 350; + StackNotesList.Id = "StackNotesList"; + + var scrollViewer1 = new ScrollViewer(); + scrollViewer1.Content = StackNotesList; + + var textButton1 = new TextButton(); + textButton1.Text = "New"; + textButton1.Width = 70; + textButton1.Height = 20; + textButton1.Padding = new Thickness(5); + textButton1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + + var textButton2 = new TextButton(); + textButton2.Text = "Load"; + textButton2.Width = 70; + textButton2.Height = 20; + textButton2.Padding = new Thickness(5); + textButton2.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + + var textButton3 = new TextButton(); + textButton3.Text = "Cancel"; + textButton3.Width = 70; + textButton3.Height = 20; + textButton3.Padding = new Thickness(5); + textButton3.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + + var horizontalStackPanel1 = new HorizontalStackPanel(); + horizontalStackPanel1.Spacing = 15; + horizontalStackPanel1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Right; + horizontalStackPanel1.Widgets.Add(textButton1); + horizontalStackPanel1.Widgets.Add(textButton2); + horizontalStackPanel1.Widgets.Add(textButton3); + + + Spacing = 13; + Width = 400; + Padding = new Thickness(10); + Widgets.Add(label1); + Widgets.Add(scrollViewer1); + Widgets.Add(horizontalStackPanel1); + } + + + public VerticalStackPanel StackNotesList; + } +} diff --git a/Sledgemapper/UI/CampaignList.cs b/Sledgemapper/UI/CampaignList.cs new file mode 100644 index 0000000..a22afef --- /dev/null +++ b/Sledgemapper/UI/CampaignList.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 01/06/2021 12:43:27 */ +namespace Sledgemapper.UI +{ + public partial class CampaignList + { + public CampaignList() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/campaignsList.xmmp b/Sledgemapper/UI/campaignsList.xmmp new file mode 100644 index 0000000..dc1c328 --- /dev/null +++ b/Sledgemapper/UI/campaignsList.xmmp @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file From fd250258894f0365ed5b384a698d20d57c1e46bb Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 3 Jun 2021 16:21:05 +0100 Subject: [PATCH 15/81] ui test, nine patch image --- Sledgemapper/Content/Content.mgcb | 14 +++++- Sledgemapper/Content/listBackground.png | Bin 0 -> 697 bytes Sledgemapper/Sledgemapper.cs | 20 +++++++- Sledgemapper/UI/CampaignList.Generated.cs | 2 +- Sledgemapper/UI/CampaignListItem.Generated.cs | 45 ++++++++++++++++++ Sledgemapper/UI/CampaignListItem.cs | 11 +++++ Sledgemapper/UI/campaignListItem.xmmp | 6 +++ 7 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 Sledgemapper/Content/listBackground.png create mode 100644 Sledgemapper/UI/CampaignListItem.Generated.cs create mode 100644 Sledgemapper/UI/CampaignListItem.cs create mode 100644 Sledgemapper/UI/campaignListItem.xmmp diff --git a/Sledgemapper/Content/Content.mgcb b/Sledgemapper/Content/Content.mgcb index 7b85633..96d1fe1 100644 --- a/Sledgemapper/Content/Content.mgcb +++ b/Sledgemapper/Content/Content.mgcb @@ -107,7 +107,7 @@ #begin handcursorsIndex /importer:XmlImporter -/processor: +/processor:PassThroughProcessor /build:handcursorsIndex #begin icon_delete.png @@ -146,6 +146,18 @@ /processorParam:TextureFormat=Color /build:icon_room.png +#begin listBackground.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:listBackground.png + #begin location.png /importer:TextureImporter /processor:TextureProcessor diff --git a/Sledgemapper/Content/listBackground.png b/Sledgemapper/Content/listBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..a762eea20fdf0126a4290eb0f58178ff941e6bd7 GIT binary patch literal 697 zcmeAS@N?(olHy`uVBq!ia0y~yU|a-bCvh+XNmVcPSRln%9OUlAu zApigWUw{7m{Qc|u&mVvP|N9E0e*OOS=ilEy|9}7e|L5QTpFe;911kFWA868_-~ayn z{sS~wW764dASGWC}%WQW5v| zu5VG3gMh=szzH*50!?Ol)IIxm{7l1J$(ru(xi9o??3L=0U1^uQZLY?zw`!ZN{PNi% zT~w)^pQK^QzuV)p$CrKfJ%zy>OM8xA-f}Eb*th+2#W#+PJ&!A5q;)&3UI*mLcUEyH zKE1X=_0&c#4gJnv5iM7?y6k&)BWu?Yl@;E z*|8?SGpozdDF5~v|`)k>EC?2RMLRVyd8$1bT<%bK|C@4qW0ReSf{cbgXVpK<^6%K{o_ S#U+7J%i!ti=d#Wzp$P!~lwr~U literal 0 HcmV?d00001 diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 041b7cc..7ef6e91 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -337,6 +337,16 @@ namespace Sledgemapper var content = new CampaignList(); var campaigns = await _communicationManager.Api.GetCampaigns(); + foreach(var campaign in campaigns) + { + var item = new CampaignListItem(); + item.TxtCampaignName.Text=campaign.Name; +item.Background= new NinePatchRegion( + Content.Load("listBackground"), new Rectangle(0, 0, 418, 98), + new Myra.Graphics2D.Thickness {Left = 11, Right = 11, + Top = 11, Bottom = 11}); + content.StackNotesList.AddChild(item); + } //content.BtnNewCampaign.Text = "N"; @@ -454,7 +464,9 @@ namespace Sledgemapper _state.SelectClosestSnapPoint(screenPosition); } - if (!newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed && mouseState.LeftButton == oldMouseState.LeftButton) + if (!newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed && mouseState.LeftButton == oldMouseState.LeftButton && + !_desktop.IsMouseOverGUI + ) { _viewportCenter = new Vector3(_viewportCenter.X + mouseState.Position.X - oldMouseState.Position.X, _viewportCenter.Y + mouseState.Position.Y - oldMouseState.Position.Y, 0); if (mouseState.Position != oldMouseState.Position) @@ -2362,6 +2374,12 @@ namespace Sledgemapper }; var content = new LoginRegisterWindow(); + +#if DEBUG +content.TxtEmail.Text="michele.scandura@outlook.com"; +content.TxtPassword.Text="slePharland!79"; +#endif + content.RdoLogin.IsPressed = true; content.RdoLogin.Click += (s, e) => { diff --git a/Sledgemapper/UI/CampaignList.Generated.cs b/Sledgemapper/UI/CampaignList.Generated.cs index e36e173..edc9aca 100644 --- a/Sledgemapper/UI/CampaignList.Generated.cs +++ b/Sledgemapper/UI/CampaignList.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 01/06/2021 12:43:27 */ +/* Generated by MyraPad at 03/06/2021 15:48:34 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; diff --git a/Sledgemapper/UI/CampaignListItem.Generated.cs b/Sledgemapper/UI/CampaignListItem.Generated.cs new file mode 100644 index 0000000..1a084ed --- /dev/null +++ b/Sledgemapper/UI/CampaignListItem.Generated.cs @@ -0,0 +1,45 @@ +/* Generated by MyraPad at 03/06/2021 16:16:33 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class CampaignListItem: HorizontalStackPanel + { + private void BuildUI() + { + TxtCampaignName = new Label(); + TxtCampaignName.Text = "Highfell"; + TxtCampaignName.TextColor = ColorStorage.CreateColor(102, 102, 102, 255); + TxtCampaignName.VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + TxtCampaignName.Background = new SolidBrush("#00000000"); + TxtCampaignName.Id = "TxtCampaignName"; + + + VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + Width = 300; + Height = 45; + BorderThickness = new Thickness(2); + Padding = new Thickness(10); + Id = "PnlCampaignItem"; + Widgets.Add(TxtCampaignName); + } + + + public Label TxtCampaignName; + } +} diff --git a/Sledgemapper/UI/CampaignListItem.cs b/Sledgemapper/UI/CampaignListItem.cs new file mode 100644 index 0000000..0e86cde --- /dev/null +++ b/Sledgemapper/UI/CampaignListItem.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 03/06/2021 16:00:11 */ +namespace Sledgemapper.UI +{ + public partial class CampaignListItem + { + public CampaignListItem() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/campaignListItem.xmmp b/Sledgemapper/UI/campaignListItem.xmmp new file mode 100644 index 0000000..14e5c9a --- /dev/null +++ b/Sledgemapper/UI/campaignListItem.xmmp @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file From 92b5bab7ec4335f6a31b2695edc86b2f3b6d4dec Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:11:34 +0100 Subject: [PATCH 16/81] monogame dev update --- Sledgemapper/Sledgemapper.csproj | 14 +++++++------- nuget.config | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 8265566..a0a74e2 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -41,20 +41,20 @@ --> - + - + - - + + - 5.0.6 + 6.0.0-preview.7.21378.6 - + - + diff --git a/nuget.config b/nuget.config index 380826d..d18c541 100644 --- a/nuget.config +++ b/nuget.config @@ -2,5 +2,6 @@ + \ No newline at end of file From ef51f1baf258dfc81a1c62a1f930db3968107216 Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:15:20 +0100 Subject: [PATCH 17/81] always pull basecompile --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 9484e36..5f9168f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,7 +11,7 @@ steps: - name: frontend image: privateregistry.michelescandura.com/michele/basecompileimage - pull: true + pull: always volumes: - name: cache path: /release From bd6c3bdd43160b2883fb64108a532c44f892e3cf Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:38:52 +0100 Subject: [PATCH 18/81] revert monogame dev upgrade --- Sledgemapper/Sledgemapper.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index a0a74e2..55d4ac4 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -45,8 +45,8 @@ - - + + 6.0.0-preview.7.21378.6 From cd24313ac492e251c2500db3b74b4db04bc89b5d Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:42:41 +0100 Subject: [PATCH 19/81] drone bump --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 5f9168f..e2df758 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,7 +10,7 @@ steps: auto_tag: true - name: frontend - image: privateregistry.michelescandura.com/michele/basecompileimage + image: privateregistry.michelescandura.com/michele/basecompileimage:1.0 pull: always volumes: - name: cache From cb9d6387d1f8ad2d5e223787e968d1356f2508d4 Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:47:48 +0100 Subject: [PATCH 20/81] will it break --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index e2df758..f60e4e5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,7 +10,7 @@ steps: auto_tag: true - name: frontend - image: privateregistry.michelescandura.com/michele/basecompileimage:1.0 + image: privateregistry.michelescandura.com/michele/basecompileimages:1.0 pull: always volumes: - name: cache From 22d1a7bb8c266c1cd9fa781b4b7202a26a6ba21c Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:49:11 +0100 Subject: [PATCH 21/81] revert --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index f60e4e5..e2df758 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,7 +10,7 @@ steps: auto_tag: true - name: frontend - image: privateregistry.michelescandura.com/michele/basecompileimages:1.0 + image: privateregistry.michelescandura.com/michele/basecompileimage:1.0 pull: always volumes: - name: cache From 68c41478d967539b469b9d37c32192e57a5cd17d Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 20 Aug 2021 14:51:45 +0100 Subject: [PATCH 22/81] boh --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index e2df758..0a58d32 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,7 +10,7 @@ steps: auto_tag: true - name: frontend - image: privateregistry.michelescandura.com/michele/basecompileimage:1.0 + image: privateregistry.michelescandura.com/michele/basecompileimagenew:1.0 pull: always volumes: - name: cache From 866b554dde391c77b45896f4aad0a11ce557b9a7 Mon Sep 17 00:00:00 2001 From: Michele Date: Sat, 21 Aug 2021 11:58:19 +0000 Subject: [PATCH 23/81] new build image --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 9484e36..761b895 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,7 +10,7 @@ steps: auto_tag: true - name: frontend - image: privateregistry.michelescandura.com/michele/basecompileimage + image: privateregistry.michelescandura.com/michele/basecompileimage:1.1 pull: true volumes: - name: cache From d8f2f8a5fc96787ee3c5ecf0336010ed5edfbee6 Mon Sep 17 00:00:00 2001 From: Michele Date: Sat, 21 Aug 2021 21:13:26 +0000 Subject: [PATCH 24/81] fix cd --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 761b895..7891f20 100644 --- a/.drone.yml +++ b/.drone.yml @@ -50,7 +50,7 @@ steps: - name: cache path: /release settings: - api_key: 96d2ba3da7491bd7760e2681f8882cf41f82e609 + api_key: 5eb87a0a7d55fbf8fb64e678781a5ddcc1a27e09 base_url: https://git.michelescandura.com files: /release/zip/* title: ${DRONE_TAG} From 36134e1ea529a3378ba1f3efd450feeb90dcc89c Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 27 Aug 2021 10:54:58 +0100 Subject: [PATCH 25/81] stuff --- Sledgemapper/Sledgemapper.cs | 4 ++-- nuget.config | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 7ef6e91..7c39fc4 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -756,7 +756,7 @@ item.Background= new NinePatchRegion( var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; DrawMap(); - ApplyShaderToMap(); + //ApplyShaderToMap(); _spriteBatch.Begin( transformMatrix: Matrix.CreateTranslation(_viewportCenter), @@ -764,7 +764,7 @@ item.Background= new NinePatchRegion( DrawTiles(); - DrawWalls(); + //DrawWalls(); DrawOverlays(); diff --git a/nuget.config b/nuget.config index 380826d..328adf0 100644 --- a/nuget.config +++ b/nuget.config @@ -2,5 +2,6 @@ + \ No newline at end of file From 7cfe04c0db847dda9132c6bc304fc9c738110dc6 Mon Sep 17 00:00:00 2001 From: Michele Date: Sat, 28 Aug 2021 15:38:57 +0100 Subject: [PATCH 26/81] small changes --- Sledgemapper/Sledgemapper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 7c39fc4..64de356 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -756,7 +756,7 @@ item.Background= new NinePatchRegion( var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; DrawMap(); - //ApplyShaderToMap(); + ApplyShaderToMap(); _spriteBatch.Begin( transformMatrix: Matrix.CreateTranslation(_viewportCenter), From 96657989c8eb87823d40e150e094afe91aadfa7f Mon Sep 17 00:00:00 2001 From: Michele Date: Sat, 28 Aug 2021 22:41:42 +0100 Subject: [PATCH 27/81] small campaign progress --- .../Controllers/CampaignController.cs | 11 ++ Sledgemapper.Api/Core/Entities/Campaign.cs | 2 +- Sledgemapper/IMapApi.cs | 12 +- Sledgemapper/Sledgemapper.cs | 153 ++++++++++++++---- Sledgemapper/State.cs | 1 + Sledgemapper/UI/CampaignList.Generated.cs | 65 ++++---- Sledgemapper/UI/CampaignListItem.Generated.cs | 4 +- Sledgemapper/UI/PlayerList.Generated.cs | 73 +++++++++ Sledgemapper/UI/PlayerList.cs | 11 ++ Sledgemapper/UI/PlayerListItem.Generated.cs | 45 ++++++ Sledgemapper/UI/PlayerListItem.cs | 11 ++ Sledgemapper/UI/PlayerWindow.Generated.cs | 67 ++++++++ Sledgemapper/UI/PlayerWindow.cs | 11 ++ Sledgemapper/UI/campaignListItem.xmmp | 4 +- Sledgemapper/UI/campaignsList.xmmp | 25 ++- Sledgemapper/UI/newPlayerWindow.xmmp | 14 ++ Sledgemapper/UI/playerListItem.xmmp | 6 + Sledgemapper/UI/playersList.xmmp | 13 ++ 18 files changed, 439 insertions(+), 89 deletions(-) create mode 100644 Sledgemapper/UI/PlayerList.Generated.cs create mode 100644 Sledgemapper/UI/PlayerList.cs create mode 100644 Sledgemapper/UI/PlayerListItem.Generated.cs create mode 100644 Sledgemapper/UI/PlayerListItem.cs create mode 100644 Sledgemapper/UI/PlayerWindow.Generated.cs create mode 100644 Sledgemapper/UI/PlayerWindow.cs create mode 100644 Sledgemapper/UI/newPlayerWindow.xmmp create mode 100644 Sledgemapper/UI/playerListItem.xmmp create mode 100644 Sledgemapper/UI/playersList.xmmp diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 36cdd26..4f719c5 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -28,6 +29,14 @@ namespace Sledgemapper.Api.Controllers return result; } + //[HttpPost] + //[Route("{campaignName}")] + //public async Task Get(string campaignName) + //{ + // var result = await _mediator.Send(new GetCampaignCommand(campaignName, UserId.ToString())); + // return result; + //} + [HttpGet] public async Task> Get() { @@ -50,5 +59,7 @@ namespace Sledgemapper.Api.Controllers var result = await _mediator.Send(new GetCampaignPlayersCommand(campaignName, UserId.ToString())); return result; } + + } } \ No newline at end of file diff --git a/Sledgemapper.Api/Core/Entities/Campaign.cs b/Sledgemapper.Api/Core/Entities/Campaign.cs index 1caa09d..ea214f4 100644 --- a/Sledgemapper.Api/Core/Entities/Campaign.cs +++ b/Sledgemapper.Api/Core/Entities/Campaign.cs @@ -7,7 +7,7 @@ namespace Sledgemapper.Api.Core.Entities { [Index(nameof(CampaignName), nameof(OwnerId), IsUnique = true)] public class Campaign - { + { public Guid CampaignId { get; set; } public string CampaignName { get; set; } diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 5c594f1..f04142b 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -57,17 +57,23 @@ namespace Sledgemapper [Headers("Authorization")] [Post("/authmanagement/login")] Task Authenticate([Body] AuthenticateModel registerModel); - + [Post("/session/{sessionName}/room")] Task NewRoom(Room room, string sessionName); - + [Post("/session/{sessionName}/line")] Task NewLine(Line line, string sessionName); [Post("/campaign/{campaignName}")] Task NewCampaign(string campaignName); - + [Get("/campaign/")] Task> GetCampaigns(); + + [Get("/campaign/{campaignName}/players")] + Task> GetPlayers(string campaignName); + + [Post("/campaign/{campaignName}/players/{email}")] + Task InvitePlayer(string campaignName, string email); } } \ No newline at end of file diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 64de356..e060418 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -221,6 +221,7 @@ namespace Sledgemapper _mainWidget.BtnToolbarLine.Click += OnBtnToolbarLinClicked; _mainWidget.BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; _mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; + _mainWidget.MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; _wallsContent = Content.LoadContentFolder("walls"); @@ -255,6 +256,68 @@ namespace Sledgemapper _whiteRectangle.SetData(new[] { Color.White }); } + private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "Players" + }; + + var content = new PlayerList(); + var players = await _communicationManager.Api.GetPlayers(_state.CampaignName); + foreach (var player in players) + { + var item = new PlayerListItem(); + item.TxtPlayerName.Text = player.UserName; + item.Background = new NinePatchRegion( + Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), + new Myra.Graphics2D.Thickness + { + Left = 11, + Right = 11, + Top = 11, + Bottom = 11 + }); + + content.StackCampaignsList.AddChild(item); + } + //content.BtnNewCampaign.Text = "N"; + + + + content.BtnInvitePlayer.Click += (s, e) => + { + window.Close(); + ShowAddPLayerWindow(); + }; + + window.Content = content; + + window.ShowModal(_desktop); + // content.TxtCampaign.SetKeyboardFocus(); + } + + private void ShowAddPLayerWindow() + { + Window window = new() + { + Title = "Invite player" + }; + + var content = new PlayerWindow(); + //content.BtnNewCampaign.Text = "N"; + content.BtnNewCampaign.Click += OnButtonInvitePlayerClicked; + window.Content = content; + + window.ShowModal(_desktop); + content.TxtCampaign.SetKeyboardFocus(); + } + private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) { AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); @@ -304,7 +367,7 @@ namespace Sledgemapper private void OnMenuCampaignNew(object sender, EventArgs e) { - if (!((MenuItem)sender).Enabled) + if (sender is MenuItem && !((MenuItem)sender).Enabled) { return; } @@ -316,14 +379,14 @@ namespace Sledgemapper var content = new CampaignWindow(); //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + content.BtnNewCampaign.Click += OnButtonInvitePlayerClicked; window.Content = content; window.ShowModal(_desktop); content.TxtCampaign.SetKeyboardFocus(); } - private async void OnMenuCampaignOpen(object sender, EventArgs e) + private async void OnMenuCampaignOpen(object sender, EventArgs e) { if (!((MenuItem)sender).Enabled) { @@ -337,25 +400,42 @@ namespace Sledgemapper var content = new CampaignList(); var campaigns = await _communicationManager.Api.GetCampaigns(); - foreach(var campaign in campaigns) + foreach (var campaign in campaigns) { var item = new CampaignListItem(); - item.TxtCampaignName.Text=campaign.Name; -item.Background= new NinePatchRegion( - Content.Load("listBackground"), new Rectangle(0, 0, 418, 98), - new Myra.Graphics2D.Thickness {Left = 11, Right = 11, - Top = 11, Bottom = 11}); - content.StackNotesList.AddChild(item); + item.TxtCampaignName.Text = campaign.Name; + item.Background = new NinePatchRegion( + Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), + new Myra.Graphics2D.Thickness + { + Left = 11, + Right = 11, + Top = 11, + Bottom = 11 + }); + item.TouchUp += OnCampaignSelected; + content.StackCampaignsList.AddChild(item); } //content.BtnNewCampaign.Text = "N"; - -// content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + + content.BtnNewCampaign.Click += (s, e) => + { + window.Close(); + OnMenuCampaignNew(s, e); + }; + window.Content = content; window.ShowModal(_desktop); - // content.TxtCampaign.SetKeyboardFocus(); + // content.TxtCampaign.SetKeyboardFocus(); + } + + private void OnCampaignSelected(object sender, EventArgs e) + { + var item = sender as CampaignListItem; + _state.CampaignName = item.TxtCampaignName.Text; } private void OneMenuFileSettingsSelected(object sender, EventArgs e) @@ -1962,7 +2042,7 @@ item.Background= new NinePatchRegion( } } - private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) { Container container = ((TextButton)sender).Parent; while (!(container is Window)) @@ -1970,24 +2050,24 @@ item.Background= new NinePatchRegion( container = container.Parent; } var localWindow = (Window)container; - var localContent = localWindow.Content as CampaignWindow; + var localContent = localWindow.Content as PlayerWindow; var isValid = ValidateTextbox(localContent.TxtCampaign); if (!isValid) { return; } - if (_communicationManager.Connection.State != HubConnectionState.Connected) - { - _mainWidget.lblConnectionStatus.Text = "Connecting"; - await _communicationManager.Connection.StartAsync(); - UpdateConnectionState(_communicationManager.Connection); - } + //if (_communicationManager.Connection.State != HubConnectionState.Connected) + //{ + // _mainWidget.lblConnectionStatus.Text = "Connecting"; + // await _communicationManager.Connection.StartAsync(); + // UpdateConnectionState(_communicationManager.Connection); + //} var successful = false; try { - await _communicationManager.Api.NewCampaign(localContent.TxtCampaign.Text); + await _communicationManager.Api.InvitePlayer(_state.CampaignName, localContent.TxtCampaign.Text); //if (result) //{ @@ -2007,17 +2087,20 @@ item.Background= new NinePatchRegion( ExceptionlessClient.Default.SubmitException(ex); } - if (successful) - { - //_sessionData.SessionName = localContent.TxtSession.Text; - //_communicationManager.SessionData.Map = _sessionData.Map; - //_communicationManager.SessionData.Overlays = _sessionData.Overlays; - //_communicationManager.SessionData.Walls = _sessionData.Walls; - //_mainWidget.lblSessionName.Text = _sessionData.SessionName; - //_mainWidget.MenuConnectSync.Enabled = true; - //_mainWidget.MenuConnectUpload.Enabled = true; - localWindow.Close(); - } + //if (successful) + //{ + // //_sessionData.SessionName = localContent.TxtSession.Text; + // //_communicationManager.SessionData.Map = _sessionData.Map; + // //_communicationManager.SessionData.Overlays = _sessionData.Overlays; + // //_communicationManager.SessionData.Walls = _sessionData.Walls; + // //_mainWidget.lblSessionName.Text = _sessionData.SessionName; + // //_mainWidget.MenuConnectSync.Enabled = true; + // //_mainWidget.MenuConnectUpload.Enabled = true; + // localWindow.Close(); + //} + + localWindow.Close(); + } private async void OnButtonNewSessionClicked(object sender, EventArgs e) @@ -2376,8 +2459,8 @@ item.Background= new NinePatchRegion( var content = new LoginRegisterWindow(); #if DEBUG -content.TxtEmail.Text="michele.scandura@outlook.com"; -content.TxtPassword.Text="slePharland!79"; + content.TxtEmail.Text = "michele.scandura@outlook.com"; + content.TxtPassword.Text = "slePharland!79"; #endif content.RdoLogin.IsPressed = true; diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index d03d93b..02d0ec7 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -21,6 +21,7 @@ namespace Sledgemapper public float LineWidth { get; internal set; } public InsertMode InsertMode; + public string CampaignName { get; set; } public State() { diff --git a/Sledgemapper/UI/CampaignList.Generated.cs b/Sledgemapper/UI/CampaignList.Generated.cs index edc9aca..bd98c24 100644 --- a/Sledgemapper/UI/CampaignList.Generated.cs +++ b/Sledgemapper/UI/CampaignList.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 03/06/2021 15:48:34 */ +/* Generated by MyraPad at 28/08/2021 16:25:44 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -26,44 +26,44 @@ namespace Sledgemapper.UI label1.Text = "Campaigns"; label1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; - StackNotesList = new VerticalStackPanel(); - StackNotesList.Proportions.Add(new Proportion - { - Type = Myra.Graphics2D.UI.ProportionType.Fill, - }); - StackNotesList.MinHeight = 350; - StackNotesList.Id = "StackNotesList"; + StackCampaignsList = new VerticalStackPanel(); + StackCampaignsList.MinHeight = 350; + StackCampaignsList.MaxHeight = 350; + StackCampaignsList.Id = "StackCampaignsList"; var scrollViewer1 = new ScrollViewer(); - scrollViewer1.Content = StackNotesList; + scrollViewer1.Content = StackCampaignsList; - var textButton1 = new TextButton(); - textButton1.Text = "New"; - textButton1.Width = 70; - textButton1.Height = 20; - textButton1.Padding = new Thickness(5); - textButton1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnNewCampaign = new TextButton(); + BtnNewCampaign.Text = "New"; + BtnNewCampaign.Width = 70; + BtnNewCampaign.Height = 20; + BtnNewCampaign.Padding = new Thickness(5); + BtnNewCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnNewCampaign.Id = "BtnNewCampaign"; - var textButton2 = new TextButton(); - textButton2.Text = "Load"; - textButton2.Width = 70; - textButton2.Height = 20; - textButton2.Padding = new Thickness(5); - textButton2.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnLoadCampaign = new TextButton(); + BtnLoadCampaign.Text = "Load"; + BtnLoadCampaign.Width = 70; + BtnLoadCampaign.Height = 20; + BtnLoadCampaign.Padding = new Thickness(5); + BtnLoadCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnLoadCampaign.Id = "BtnLoadCampaign"; - var textButton3 = new TextButton(); - textButton3.Text = "Cancel"; - textButton3.Width = 70; - textButton3.Height = 20; - textButton3.Padding = new Thickness(5); - textButton3.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnCancelCampaign = new TextButton(); + BtnCancelCampaign.Text = "Cancel"; + BtnCancelCampaign.Width = 70; + BtnCancelCampaign.Height = 20; + BtnCancelCampaign.Padding = new Thickness(5); + BtnCancelCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnCancelCampaign.Id = "BtnCancelCampaign"; var horizontalStackPanel1 = new HorizontalStackPanel(); horizontalStackPanel1.Spacing = 15; horizontalStackPanel1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Right; - horizontalStackPanel1.Widgets.Add(textButton1); - horizontalStackPanel1.Widgets.Add(textButton2); - horizontalStackPanel1.Widgets.Add(textButton3); + horizontalStackPanel1.Widgets.Add(BtnNewCampaign); + horizontalStackPanel1.Widgets.Add(BtnLoadCampaign); + horizontalStackPanel1.Widgets.Add(BtnCancelCampaign); Spacing = 13; @@ -75,6 +75,9 @@ namespace Sledgemapper.UI } - public VerticalStackPanel StackNotesList; + public VerticalStackPanel StackCampaignsList; + public TextButton BtnNewCampaign; + public TextButton BtnLoadCampaign; + public TextButton BtnCancelCampaign; } } diff --git a/Sledgemapper/UI/CampaignListItem.Generated.cs b/Sledgemapper/UI/CampaignListItem.Generated.cs index 1a084ed..b3cf0da 100644 --- a/Sledgemapper/UI/CampaignListItem.Generated.cs +++ b/Sledgemapper/UI/CampaignListItem.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 03/06/2021 16:16:33 */ +/* Generated by MyraPad at 28/08/2021 19:31:16 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -32,7 +32,7 @@ namespace Sledgemapper.UI VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; Width = 300; - Height = 45; + Height = 30; BorderThickness = new Thickness(2); Padding = new Thickness(10); Id = "PnlCampaignItem"; diff --git a/Sledgemapper/UI/PlayerList.Generated.cs b/Sledgemapper/UI/PlayerList.Generated.cs new file mode 100644 index 0000000..f97d943 --- /dev/null +++ b/Sledgemapper/UI/PlayerList.Generated.cs @@ -0,0 +1,73 @@ +/* Generated by MyraPad at 28/08/2021 19:49:08 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class PlayerList: VerticalStackPanel + { + private void BuildUI() + { + var label1 = new Label(); + label1.Text = "Campaigns"; + label1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + + StackCampaignsList = new VerticalStackPanel(); + StackCampaignsList.MinHeight = 350; + StackCampaignsList.MaxHeight = 350; + StackCampaignsList.Id = "StackCampaignsList"; + + var scrollViewer1 = new ScrollViewer(); + scrollViewer1.Content = StackCampaignsList; + + BtnInvitePlayer = new TextButton(); + BtnInvitePlayer.Text = "Invite"; + BtnInvitePlayer.Width = 70; + BtnInvitePlayer.Height = 20; + BtnInvitePlayer.Padding = new Thickness(5); + BtnInvitePlayer.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnInvitePlayer.Id = "BtnInvitePlayer"; + + BtnCancelCampaign = new TextButton(); + BtnCancelCampaign.Text = "Cancel"; + BtnCancelCampaign.Width = 70; + BtnCancelCampaign.Height = 20; + BtnCancelCampaign.Padding = new Thickness(5); + BtnCancelCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnCancelCampaign.Id = "BtnCancelCampaign"; + + var horizontalStackPanel1 = new HorizontalStackPanel(); + horizontalStackPanel1.Spacing = 15; + horizontalStackPanel1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Right; + horizontalStackPanel1.Widgets.Add(BtnInvitePlayer); + horizontalStackPanel1.Widgets.Add(BtnCancelCampaign); + + + Spacing = 13; + Width = 400; + Padding = new Thickness(10); + Widgets.Add(label1); + Widgets.Add(scrollViewer1); + Widgets.Add(horizontalStackPanel1); + } + + + public VerticalStackPanel StackCampaignsList; + public TextButton BtnInvitePlayer; + public TextButton BtnCancelCampaign; + } +} diff --git a/Sledgemapper/UI/PlayerList.cs b/Sledgemapper/UI/PlayerList.cs new file mode 100644 index 0000000..ffdf573 --- /dev/null +++ b/Sledgemapper/UI/PlayerList.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 28/08/2021 19:49:08 */ +namespace Sledgemapper.UI +{ + public partial class PlayerList + { + public PlayerList() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerListItem.Generated.cs b/Sledgemapper/UI/PlayerListItem.Generated.cs new file mode 100644 index 0000000..3c3ec50 --- /dev/null +++ b/Sledgemapper/UI/PlayerListItem.Generated.cs @@ -0,0 +1,45 @@ +/* Generated by MyraPad at 28/08/2021 19:49:48 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class PlayerListItem: HorizontalStackPanel + { + private void BuildUI() + { + TxtPlayerName = new Label(); + TxtPlayerName.Text = "Highfell"; + TxtPlayerName.TextColor = ColorStorage.CreateColor(102, 102, 102, 255); + TxtPlayerName.VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + TxtPlayerName.Background = new SolidBrush("#00000000"); + TxtPlayerName.Id = "TxtPlayerName"; + + + VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + Width = 300; + Height = 30; + BorderThickness = new Thickness(2); + Padding = new Thickness(10); + Id = "PnlPlayerItem"; + Widgets.Add(TxtPlayerName); + } + + + public Label TxtPlayerName; + } +} diff --git a/Sledgemapper/UI/PlayerListItem.cs b/Sledgemapper/UI/PlayerListItem.cs new file mode 100644 index 0000000..8b1c488 --- /dev/null +++ b/Sledgemapper/UI/PlayerListItem.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 28/08/2021 19:49:48 */ +namespace Sledgemapper.UI +{ + public partial class PlayerListItem + { + public PlayerListItem() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerWindow.Generated.cs b/Sledgemapper/UI/PlayerWindow.Generated.cs new file mode 100644 index 0000000..62d81ea --- /dev/null +++ b/Sledgemapper/UI/PlayerWindow.Generated.cs @@ -0,0 +1,67 @@ +/* Generated by MyraPad at 28/08/2021 22:04:37 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class PlayerWindow: VerticalStackPanel + { + private void BuildUI() + { + var label1 = new Label(); + label1.Text = "Email"; + + TxtCampaign = new TextBox(); + TxtCampaign.GridColumn = 1; + TxtCampaign.Id = "TxtCampaign"; + + var grid1 = new Grid(); + grid1.ColumnSpacing = 25; + grid1.RowSpacing = 10; + grid1.ColumnsProportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Pixels, + Value = 60, + }); + grid1.ColumnsProportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Fill, + }); + grid1.Widgets.Add(label1); + grid1.Widgets.Add(TxtCampaign); + + BtnNewCampaign = new TextButton(); + BtnNewCampaign.Text = "New"; + BtnNewCampaign.Padding = new Thickness(10, 5); + BtnNewCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnNewCampaign.Id = "BtnNewCampaign"; + + + Spacing = 16; + HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + Width = 300; + Padding = new Thickness(10); + Widgets.Add(grid1); + Widgets.Add(BtnNewCampaign); + } + + + public TextBox TxtCampaign; + public TextButton BtnNewCampaign; + } +} diff --git a/Sledgemapper/UI/PlayerWindow.cs b/Sledgemapper/UI/PlayerWindow.cs new file mode 100644 index 0000000..76112a7 --- /dev/null +++ b/Sledgemapper/UI/PlayerWindow.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 28/08/2021 22:04:11 */ +namespace Sledgemapper.UI +{ + public partial class PlayerWindow + { + public PlayerWindow() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/campaignListItem.xmmp b/Sledgemapper/UI/campaignListItem.xmmp index 14e5c9a..4d2f3cd 100644 --- a/Sledgemapper/UI/campaignListItem.xmmp +++ b/Sledgemapper/UI/campaignListItem.xmmp @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/Sledgemapper/UI/campaignsList.xmmp b/Sledgemapper/UI/campaignsList.xmmp index dc1c328..74c0274 100644 --- a/Sledgemapper/UI/campaignsList.xmmp +++ b/Sledgemapper/UI/campaignsList.xmmp @@ -1,19 +1,14 @@ - - + + - + \ No newline at end of file diff --git a/Sledgemapper/UI/newPlayerWindow.xmmp b/Sledgemapper/UI/newPlayerWindow.xmmp new file mode 100644 index 0000000..6344929 --- /dev/null +++ b/Sledgemapper/UI/newPlayerWindow.xmmp @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Sledgemapper/UI/playerListItem.xmmp b/Sledgemapper/UI/playerListItem.xmmp new file mode 100644 index 0000000..aaac38a --- /dev/null +++ b/Sledgemapper/UI/playerListItem.xmmp @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Sledgemapper/UI/playersList.xmmp b/Sledgemapper/UI/playersList.xmmp new file mode 100644 index 0000000..e2082fb --- /dev/null +++ b/Sledgemapper/UI/playersList.xmmp @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file From c46e66595bc25307078faf3922da0e27186cf3ef Mon Sep 17 00:00:00 2001 From: Michele Date: Sun, 29 Aug 2021 22:51:18 +0100 Subject: [PATCH 28/81] more campaign stuff --- Sledgemapper/Sledgemapper.cs | 51 +++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index e060418..393ed74 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -214,6 +214,10 @@ namespace Sledgemapper _mainWidget.MenuCampaingNew.Selected += OnMenuCampaignNew; _mainWidget.MenuCampaignOpen.Selected += OnMenuCampaignOpen; + _mainWidget.MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; + + _mainWidget.MenuMapOpen.Selected += OnMenuMapOpen; + _mainWidget.MenuConnectNew.Enabled = false; _mainWidget.MenuConnectJoin.Enabled = false; _mainWidget.MenuConnectSync.Enabled = false; @@ -221,7 +225,6 @@ namespace Sledgemapper _mainWidget.BtnToolbarLine.Click += OnBtnToolbarLinClicked; _mainWidget.BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; _mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; - _mainWidget.MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; _wallsContent = Content.LoadContentFolder("walls"); @@ -256,6 +259,52 @@ namespace Sledgemapper _whiteRectangle.SetData(new[] { Color.White }); } + private async void OnMenuMapOpen(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "Maps" + }; + + var content = new CampaignList(); + //var campaigns = await _communicationManager.Api.GetMaps(); + //foreach (var campaign in campaigns) + //{ + // var item = new CampaignListItem(); + // item.TxtCampaignName.Text = campaign.Name; + // item.Background = new NinePatchRegion( + // Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), + // new Myra.Graphics2D.Thickness + // { + // Left = 11, + // Right = 11, + // Top = 11, + // Bottom = 11 + // }); + // item.TouchUp += OnCampaignSelected; + // content.StackCampaignsList.AddChild(item); + //} + //content.BtnNewCampaign.Text = "N"; + + + + content.BtnNewCampaign.Click += (s, e) => + { + window.Close(); + OnMenuCampaignNew(s, e); + }; + + window.Content = content; + + window.ShowModal(_desktop); + // content.TxtCampaign.SetKeyboardFocus(); + } + private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) { if (!((MenuItem)sender).Enabled) From 4c345bd0447d4257192548aeb0749aaed2725997 Mon Sep 17 00:00:00 2001 From: Michele Date: Mon, 30 Aug 2021 23:30:04 +0100 Subject: [PATCH 29/81] tentative campaign map management --- Sledgemapper.Api/Commands/BaseCommand.cs | 13 +- .../Commands/DeleteNoteCommand.cs | 2 +- .../Commands/DeleteOverlayCommand.cs | 2 +- .../Commands/DeleteTileCommand.cs | 2 +- .../Commands/DeleteWallCommand.cs | 2 +- Sledgemapper.Api/Commands/NewLineCommand.cs | 2 +- Sledgemapper.Api/Commands/NewNoteCommand.cs | 2 +- .../Commands/NewOverlayCommand.cs | 2 +- Sledgemapper.Api/Commands/NewRoomCommand.cs | 2 +- .../Commands/NewSessionCommand.cs | 2 +- .../Commands/NewSnapshotCommand.cs | 2 +- Sledgemapper.Api/Commands/NewTileCommand.cs | 2 +- Sledgemapper.Api/Commands/NewWallCommand.cs | 2 +- Sledgemapper.Api/Controllers/MapController.cs | 29 +- Sledgemapper.Api/Core/Entities/MapLog.cs | 2 +- Sledgemapper.Api/Core/Entities/Session.cs | 6 +- .../Handlers/GetCampaignsCommandHandler.cs | 4 +- .../Handlers/StartNewSessionHandler.cs | 7 +- ...0210830220131_AddCampaignToMap.Designer.cs | 506 +++++++++++++++++ .../20210830220131_AddCampaignToMap.cs | 24 + ...830220730_AddCampaignToMapGuid.Designer.cs | 506 +++++++++++++++++ .../20210830220730_AddCampaignToMapGuid.cs | 30 ++ .../20210830222316_StringUserId.Designer.cs | 508 ++++++++++++++++++ .../Migrations/20210830222316_StringUserId.cs | 45 ++ .../SledgemapperDbContextModelSnapshot.cs | 13 +- .../Notifications/BaseNotification.cs | 4 +- .../Notifications/DeleteNoteNotification.cs | 2 +- .../DeleteOverlayNotification.cs | 2 +- .../Notifications/DeleteTileNotification.cs | 2 +- .../Notifications/DeleteWallNotification.cs | 2 +- .../Notifications/NewLineNotification.cs | 2 +- .../Notifications/NewNoteNotification.cs | 2 +- .../Notifications/NewOverlayNotification.cs | 2 +- .../Notifications/NewRoomNotification.cs | 2 +- .../Notifications/NewSessionNotification.cs | 2 +- .../Notifications/NewTileNotification.cs | 2 +- .../Notifications/NewWallNotification.cs | 2 +- 37 files changed, 1693 insertions(+), 50 deletions(-) create mode 100644 Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.cs create mode 100644 Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.cs create mode 100644 Sledgemapper.Api/Migrations/20210830222316_StringUserId.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210830222316_StringUserId.cs diff --git a/Sledgemapper.Api/Commands/BaseCommand.cs b/Sledgemapper.Api/Commands/BaseCommand.cs index ec640ea..e4def4f 100644 --- a/Sledgemapper.Api/Commands/BaseCommand.cs +++ b/Sledgemapper.Api/Commands/BaseCommand.cs @@ -7,13 +7,22 @@ namespace Sledgemapper.Api.Commands { public double Timestamp { get; private set; } public string SessionName { get; private set; } - public int UserId { get; private set; } + public string Campaign { get; private set; } + public string UserId { get; private set; } - public BaseCommand(string sessionName, int userId) + public BaseCommand(string sessionName, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); SessionName = sessionName; UserId = userId; } + + public BaseCommand(string campaign, string sessionName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + SessionName = sessionName; + Campaign = campaign; + UserId = userId; + } } } diff --git a/Sledgemapper.Api/Commands/DeleteNoteCommand.cs b/Sledgemapper.Api/Commands/DeleteNoteCommand.cs index f1a0e9e..fe8000d 100644 --- a/Sledgemapper.Api/Commands/DeleteNoteCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteNoteCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Note Note { get; private set; } - public DeleteNoteCommand(string sessionName, Note note, int userId) : base(sessionName, userId) + public DeleteNoteCommand(string sessionName, Note note, string userId) : base(sessionName, userId) { Note = note; } diff --git a/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs b/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs index e3731d5..e3cde01 100644 --- a/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Overlay Overlay { get; private set; } - public DeleteOverlayCommand(string sessionName, Overlay overlay, int userId) : base(sessionName, userId) + public DeleteOverlayCommand(string sessionName, Overlay overlay, string userId) : base(sessionName, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Commands/DeleteTileCommand.cs b/Sledgemapper.Api/Commands/DeleteTileCommand.cs index 491a7a2..e55f1dc 100644 --- a/Sledgemapper.Api/Commands/DeleteTileCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteTileCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Tile Tile { get; private set; } - public DeleteTileCommand(string sessionName, Tile tile, int userId) : base(sessionName, userId) + public DeleteTileCommand(string sessionName, Tile tile, string userId) : base(sessionName, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Commands/DeleteWallCommand.cs b/Sledgemapper.Api/Commands/DeleteWallCommand.cs index f04edcf..454af3e 100644 --- a/Sledgemapper.Api/Commands/DeleteWallCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteWallCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Wall Wall { get; private set; } - public DeleteWallCommand(string sessionName, Wall wall, int userId) : base(sessionName, userId) + public DeleteWallCommand(string sessionName, Wall wall, string userId) : base(sessionName, userId) { Wall = wall; } diff --git a/Sledgemapper.Api/Commands/NewLineCommand.cs b/Sledgemapper.Api/Commands/NewLineCommand.cs index 3bfe3cf..ff97585 100644 --- a/Sledgemapper.Api/Commands/NewLineCommand.cs +++ b/Sledgemapper.Api/Commands/NewLineCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Line Line { get; private set; } - public NewLineCommand(string sessionName, Line line, int userId) : base(sessionName, userId) + public NewLineCommand(string sessionName, Line line, string userId) : base(sessionName, userId) { Line = line; } diff --git a/Sledgemapper.Api/Commands/NewNoteCommand.cs b/Sledgemapper.Api/Commands/NewNoteCommand.cs index 5c2dfb6..69c41ad 100644 --- a/Sledgemapper.Api/Commands/NewNoteCommand.cs +++ b/Sledgemapper.Api/Commands/NewNoteCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Note Note { get; private set; } - public NewNoteCommand(string sessionName, Note note, int userId) : base(sessionName, userId) + public NewNoteCommand(string sessionName, Note note, string userId) : base(sessionName, userId) { Note = note; } diff --git a/Sledgemapper.Api/Commands/NewOverlayCommand.cs b/Sledgemapper.Api/Commands/NewOverlayCommand.cs index 0aa4078..4fdb8e1 100644 --- a/Sledgemapper.Api/Commands/NewOverlayCommand.cs +++ b/Sledgemapper.Api/Commands/NewOverlayCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Overlay Overlay { get; private set; } - public NewOverlayCommand(string sessionName, Overlay overlay, int userId) : base(sessionName, userId) + public NewOverlayCommand(string sessionName, Overlay overlay, string userId) : base(sessionName, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Commands/NewRoomCommand.cs b/Sledgemapper.Api/Commands/NewRoomCommand.cs index 5b7619e..fccb7e3 100644 --- a/Sledgemapper.Api/Commands/NewRoomCommand.cs +++ b/Sledgemapper.Api/Commands/NewRoomCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Room Room { get; private set; } - public NewRoomCommand(string sessionName, Room room, int userId) : base(sessionName, userId) + public NewRoomCommand(string sessionName, Room room, string userId) : base(sessionName, userId) { Room = room; } diff --git a/Sledgemapper.Api/Commands/NewSessionCommand.cs b/Sledgemapper.Api/Commands/NewSessionCommand.cs index 38e4524..c314d44 100644 --- a/Sledgemapper.Api/Commands/NewSessionCommand.cs +++ b/Sledgemapper.Api/Commands/NewSessionCommand.cs @@ -5,7 +5,7 @@ namespace Sledgemapper.Api.Commands { public class NewSessionCommand : BaseCommand { - public NewSessionCommand(string sessionName, int userId) : base(sessionName, userId) + public NewSessionCommand(string campaign, string sessionName, string userId) : base(campaign, sessionName, userId) { } } diff --git a/Sledgemapper.Api/Commands/NewSnapshotCommand.cs b/Sledgemapper.Api/Commands/NewSnapshotCommand.cs index 8ec87b1..057ec88 100644 --- a/Sledgemapper.Api/Commands/NewSnapshotCommand.cs +++ b/Sledgemapper.Api/Commands/NewSnapshotCommand.cs @@ -5,7 +5,7 @@ namespace Sledgemapper.Api.Commands public class NewSnapshotCommand : BaseCommand { public Session Session { get; private set; } - public NewSnapshotCommand(string sessionName, Session session, int userId) : base(sessionName, userId) + public NewSnapshotCommand(string sessionName, Session session, string userId) : base(sessionName, userId) { Session = session; } diff --git a/Sledgemapper.Api/Commands/NewTileCommand.cs b/Sledgemapper.Api/Commands/NewTileCommand.cs index 4fbd5f3..522adf6 100644 --- a/Sledgemapper.Api/Commands/NewTileCommand.cs +++ b/Sledgemapper.Api/Commands/NewTileCommand.cs @@ -5,7 +5,7 @@ namespace Sledgemapper.Api.Commands public class NewTileCommand : BaseCommand { public Tile Tile { get; private set; } - public NewTileCommand(string sessionName, Tile tile, int userId) : base(sessionName, userId) + public NewTileCommand(string sessionName, Tile tile, string userId) : base(sessionName, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Commands/NewWallCommand.cs b/Sledgemapper.Api/Commands/NewWallCommand.cs index c8c72fd..d903b08 100644 --- a/Sledgemapper.Api/Commands/NewWallCommand.cs +++ b/Sledgemapper.Api/Commands/NewWallCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Wall Wall { get; private set; } - public NewWallCommand(string sessionName, Wall wall, int userId) : base(sessionName, userId) + public NewWallCommand(string sessionName, Wall wall, string userId) : base(sessionName, userId) { Wall = wall; } diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index 762cb2e..c25d1ff 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -3,83 +3,84 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; using Sledgemapper.Shared.Entities; +using System.Linq; using System.Threading.Tasks; namespace Sledgemapper.Api.Controllers { [Authorize] - [Route("[controller]/{mapName}")] + [Route("[controller]/{campaign}/{mapName}")] public class MapController : ControllerBase { private readonly IMediator _mediator; - private int UserId => int.Parse(HttpContext.User.Identity.Name); + private string UserId => HttpContext.User.Claims.FirstOrDefault(m => m.Type == "Id").Value; public MapController(IMediator mediator) => _mediator = mediator; [HttpPost] - public async Task Post(string mapName) + public async Task Post(string campaign, string mapName) { - var result = await _mediator.Send(new NewSessionCommand(mapName, UserId)); + var result = await _mediator.Send(new NewSessionCommand(campaign, mapName, UserId)); return result; } [HttpGet] - public async Task Get(string mapName) + public async Task Get(string campaign, string mapName) { var result = await _mediator.Send(new GetMapSnapshotCommand(mapName)); return result; } [HttpPost("snapshot")] - public async Task Post(string mapName, [FromBody] Session session) + public async Task Post(string campaign, string mapName, [FromBody] Session session) { await _mediator.Send(new NewSnapshotCommand(mapName, session, UserId)); } [HttpPost("overlay")] - public async Task Post(string mapName, [FromBody] Overlay overlay) + public async Task Post(string campaign, string mapName, [FromBody] Overlay overlay) { await _mediator.Send(new NewOverlayCommand(mapName, overlay, UserId)); } [HttpPost("wall")] - public async Task Post(string mapName, [FromBody] Wall wall) + public async Task Post(string campaign, string mapName, [FromBody] Wall wall) { await _mediator.Send(new NewWallCommand(mapName, wall, UserId)); } [HttpPost("note")] - public async Task Post(string mapName, [FromBody] Note note) + public async Task Post(string campaign, string mapName, [FromBody] Note note) { await _mediator.Send(new NewNoteCommand(mapName, note, UserId)); } [HttpPost("room")] - public async Task Post(string mapName, [FromBody] Room room) + public async Task Post(string campaign, string mapName, [FromBody] Room room) { await _mediator.Send(new NewRoomCommand(mapName, room, UserId)); } [HttpPost("line")] - public async Task Post(string mapName, [FromBody] Line line) + public async Task Post(string campaign, string mapName, [FromBody] Line line) { await _mediator.Send(new NewLineCommand(mapName, line, UserId)); } [HttpDelete("overlay")] - public async Task Delete(string mapName, [FromBody] Overlay overlay) + public async Task Delete(string campaign, string mapName, [FromBody] Overlay overlay) { await _mediator.Send(new DeleteOverlayCommand(mapName, overlay, UserId)); } [HttpDelete("wall")] - public async Task Delete(string mapName, [FromBody] Wall wall) + public async Task Delete(string campaign, string mapName, [FromBody] Wall wall) { await _mediator.Send(new DeleteWallCommand(mapName, wall, UserId)); } [HttpDelete("note")] - public async Task Delete(string mapName, [FromBody] Note note) + public async Task Delete(string campaign, string mapName, [FromBody] Note note) { await _mediator.Send(new DeleteNoteCommand(mapName, note, UserId)); } diff --git a/Sledgemapper.Api/Core/Entities/MapLog.cs b/Sledgemapper.Api/Core/Entities/MapLog.cs index d519df8..ac1c86b 100644 --- a/Sledgemapper.Api/Core/Entities/MapLog.cs +++ b/Sledgemapper.Api/Core/Entities/MapLog.cs @@ -9,7 +9,7 @@ namespace Sledgemapper.Api.Models public int MapLogId { get; set; } [Required] - public int UserId{get;set;} + public string UserId{get;set;} [Required] public int SessionId { get; set; } diff --git a/Sledgemapper.Api/Core/Entities/Session.cs b/Sledgemapper.Api/Core/Entities/Session.cs index 79c2ca2..a0c4905 100644 --- a/Sledgemapper.Api/Core/Entities/Session.cs +++ b/Sledgemapper.Api/Core/Entities/Session.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; namespace Sledgemapper.Api.Models @@ -7,10 +8,13 @@ namespace Sledgemapper.Api.Models [Key] public int SessionId { get; set; } + [Required] + public Guid CampaignId { get; set; } + [Required] public string SessionName { get; set; } [Required] - public int OwnerUserId { get; set; } + public string OwnerUserId { get; set; } } } diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs index 4c651b2..6e4285c 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -28,10 +28,10 @@ namespace Sledgemapper.Api.Handlers { var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); + var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Maps).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); return campaigns. - Select(c => new Shared.Entities.Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Shared.Entities.Map { SessionName = m.MapName }).ToList()}) + Select(c => new Shared.Entities.Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Shared.Entities.Map { SessionName = m.MapName }).ToList() }) .ToList(); } catch (Exception ex) diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index ad745fa..50134ef 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -2,6 +2,7 @@ using MediatR; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Models; +using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -20,10 +21,14 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewSessionCommand notification, CancellationToken cancellationToken) { + var campaign = _dbcontext.Campaigns.First(c => c.CampaignName == notification.Campaign && c.OwnerId == notification.UserId.ToString()); + _dbcontext.Sessions.Add(new Session { SessionName = notification.SessionName, - OwnerUserId = notification.UserId + OwnerUserId = notification.UserId, + CampaignId = campaign.CampaignId + }); await _dbcontext.SaveChangesAsync(); return true; diff --git a/Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.Designer.cs b/Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.Designer.cs new file mode 100644 index 0000000..e1365d5 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.Designer.cs @@ -0,0 +1,506 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210830220131_AddCampaignToMap")] + partial class AddCampaignToMap + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("CampaignId1") + .HasColumnType("TEXT"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.HasIndex("CampaignId1"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId1"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.cs b/Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.cs new file mode 100644 index 0000000..2bd6cf7 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210830220131_AddCampaignToMap.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class AddCampaignToMap : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CampaignId", + table: "Sessions", + type: "INTEGER", + nullable: false, + defaultValue: 0); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CampaignId", + table: "Sessions"); + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.Designer.cs b/Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.Designer.cs new file mode 100644 index 0000000..ebd924b --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.Designer.cs @@ -0,0 +1,506 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210830220730_AddCampaignToMapGuid")] + partial class AddCampaignToMapGuid + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("CampaignId1") + .HasColumnType("TEXT"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.HasIndex("CampaignId1"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .HasColumnType("INTEGER"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId1"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.cs b/Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.cs new file mode 100644 index 0000000..761e2b9 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210830220730_AddCampaignToMapGuid.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class AddCampaignToMapGuid : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "CampaignId", + table: "Sessions", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "CampaignId", + table: "Sessions", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210830222316_StringUserId.Designer.cs b/Sledgemapper.Api/Migrations/20210830222316_StringUserId.Designer.cs new file mode 100644 index 0000000..5376de8 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210830222316_StringUserId.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210830222316_StringUserId")] + partial class StringUserId + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("CampaignId1") + .HasColumnType("TEXT"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.HasIndex("CampaignId1"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId1"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210830222316_StringUserId.cs b/Sledgemapper.Api/Migrations/20210830222316_StringUserId.cs new file mode 100644 index 0000000..d3bb947 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210830222316_StringUserId.cs @@ -0,0 +1,45 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class StringUserId : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "OwnerUserId", + table: "Sessions", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "MapLogs", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "OwnerUserId", + table: "Sessions", + type: "INTEGER", + nullable: false, + oldClrType: typeof(string), + oldType: "TEXT"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "MapLogs", + type: "INTEGER", + nullable: false, + oldClrType: typeof(string), + oldType: "TEXT"); + } + } +} diff --git a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs index 8a873af..c6f7c84 100644 --- a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs +++ b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs @@ -299,8 +299,9 @@ namespace Sledgemapper.Api.Migrations .HasMaxLength(256) .HasColumnType("TEXT"); - b.Property("UserId") - .HasColumnType("INTEGER"); + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); b.HasKey("MapLogId"); @@ -313,8 +314,12 @@ namespace Sledgemapper.Api.Migrations .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); - b.Property("OwnerUserId") - .HasColumnType("INTEGER"); + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); b.Property("SessionName") .IsRequired() diff --git a/Sledgemapper.Api/Notifications/BaseNotification.cs b/Sledgemapper.Api/Notifications/BaseNotification.cs index a577ce8..a3e440c 100644 --- a/Sledgemapper.Api/Notifications/BaseNotification.cs +++ b/Sledgemapper.Api/Notifications/BaseNotification.cs @@ -6,11 +6,11 @@ namespace Sledgemapper.Api.Notifications public abstract class BaseNotification : INotification { public double Timestamp { get; private set; } - public int UserId { get; private set; } + public string UserId { get; private set; } public int SessionId { get; set; } public Models.Session Session { get; set; } - public BaseNotification(Models.Session session, int userId) + public BaseNotification(Models.Session session, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); Session = session; ; diff --git a/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs b/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs index 1052f6e..f245e51 100644 --- a/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Note Note { get; private set; } - public DeleteNoteNotification(Models.Session session, Note note, int userId) : base(session, userId) + public DeleteNoteNotification(Models.Session session, Note note, string userId) : base(session, userId) { Note = note; } diff --git a/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs b/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs index 6673611..cf62af4 100644 --- a/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Overlay Overlay { get; private set; } - public DeleteOverlayNotification(Models.Session session, Overlay overlay, int userId) : base(session, userId) + public DeleteOverlayNotification(Models.Session session, Overlay overlay, string userId) : base(session, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Notifications/DeleteTileNotification.cs b/Sledgemapper.Api/Notifications/DeleteTileNotification.cs index 8c9a1ff..c4bcbe3 100644 --- a/Sledgemapper.Api/Notifications/DeleteTileNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteTileNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Tile Tile { get; private set; } - public DeleteTileNotification(Models.Session session, Tile tile, int userId) : base(session, userId) + public DeleteTileNotification(Models.Session session, Tile tile, string userId) : base(session, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Notifications/DeleteWallNotification.cs b/Sledgemapper.Api/Notifications/DeleteWallNotification.cs index f56a362..3159fef 100644 --- a/Sledgemapper.Api/Notifications/DeleteWallNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteWallNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Wall Wall { get; private set; } - public DeleteWallNotification(Models.Session session, Wall wall, int userId) : base(session, userId) + public DeleteWallNotification(Models.Session session, Wall wall, string userId) : base(session, userId) { Wall = wall; } diff --git a/Sledgemapper.Api/Notifications/NewLineNotification.cs b/Sledgemapper.Api/Notifications/NewLineNotification.cs index 25c3005..b49f610 100644 --- a/Sledgemapper.Api/Notifications/NewLineNotification.cs +++ b/Sledgemapper.Api/Notifications/NewLineNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Line Line { get; private set; } - public NewLineNotification(Models.Session session, Line line, int userId) : base(session, userId) + public NewLineNotification(Models.Session session, Line line, string userId) : base(session, userId) { Line = line; } diff --git a/Sledgemapper.Api/Notifications/NewNoteNotification.cs b/Sledgemapper.Api/Notifications/NewNoteNotification.cs index bf65b42..e4dc718 100644 --- a/Sledgemapper.Api/Notifications/NewNoteNotification.cs +++ b/Sledgemapper.Api/Notifications/NewNoteNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Note Note { get; private set; } - public NewNoteNotification(Models.Session session, Note note, int userId) : base(session, userId) + public NewNoteNotification(Models.Session session, Note note, string userId) : base(session, userId) { Note = note; } diff --git a/Sledgemapper.Api/Notifications/NewOverlayNotification.cs b/Sledgemapper.Api/Notifications/NewOverlayNotification.cs index fe5a7a8..8111687 100644 --- a/Sledgemapper.Api/Notifications/NewOverlayNotification.cs +++ b/Sledgemapper.Api/Notifications/NewOverlayNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Overlay Overlay { get; private set; } - public NewOverlayNotification(Models.Session session, Overlay overlay, int userId) : base(session, userId) + public NewOverlayNotification(Models.Session session, Overlay overlay, string userId) : base(session, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Notifications/NewRoomNotification.cs b/Sledgemapper.Api/Notifications/NewRoomNotification.cs index d83e27d..97f26bf 100644 --- a/Sledgemapper.Api/Notifications/NewRoomNotification.cs +++ b/Sledgemapper.Api/Notifications/NewRoomNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Room Room { get; private set; } - public NewRoomNotification(Models.Session session, Room room, int userId) : base(session, userId) + public NewRoomNotification(Models.Session session, Room room, string userId) : base(session, userId) { Room = room; } diff --git a/Sledgemapper.Api/Notifications/NewSessionNotification.cs b/Sledgemapper.Api/Notifications/NewSessionNotification.cs index af6bf84..9f3598b 100644 --- a/Sledgemapper.Api/Notifications/NewSessionNotification.cs +++ b/Sledgemapper.Api/Notifications/NewSessionNotification.cs @@ -2,7 +2,7 @@ namespace Sledgemapper.Api.Notifications { public class NewSessionNotification : BaseNotification { - public NewSessionNotification(string sessionName, int userId) : base(new Models.Session { SessionName = sessionName }, userId) + public NewSessionNotification(string sessionName, string userId) : base(new Models.Session { SessionName = sessionName }, userId) { } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Notifications/NewTileNotification.cs b/Sledgemapper.Api/Notifications/NewTileNotification.cs index 00ae89f..b8d3cd1 100644 --- a/Sledgemapper.Api/Notifications/NewTileNotification.cs +++ b/Sledgemapper.Api/Notifications/NewTileNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Tile Tile { get; private set; } - public NewTileNotification(Models.Session session, Tile tile, int userId) : base(session, userId) + public NewTileNotification(Models.Session session, Tile tile, string userId) : base(session, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Notifications/NewWallNotification.cs b/Sledgemapper.Api/Notifications/NewWallNotification.cs index efae53c..24c0bcc 100644 --- a/Sledgemapper.Api/Notifications/NewWallNotification.cs +++ b/Sledgemapper.Api/Notifications/NewWallNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Wall Wall { get; private set; } - public NewWallNotification(Models.Session session, Wall wall, int userId) : base(session, userId) + public NewWallNotification(Models.Session session, Wall wall, string userId) : base(session, userId) { Wall = wall; } From 4d40add598f368957d201903b61926d27d8c11c1 Mon Sep 17 00:00:00 2001 From: Michele Date: Wed, 1 Sep 2021 23:53:52 +0100 Subject: [PATCH 30/81] add map to campaign --- .../Commands/GetCampaignPlayersCommand.cs | 13 + .../Controllers/CampaignController.cs | 8 + Sledgemapper.Api/Core/Entities/Campaign.cs | 3 +- Sledgemapper.Api/Core/Entities/Session.cs | 2 + .../GetCampaignPlayersCommandHandler.cs | 38 +- .../Handlers/GetCampaignsCommandHandler.cs | 2 +- ...10901220553_renameMapToSession.Designer.cs | 507 +++++++++++++++++ .../20210901220553_renameMapToSession.cs | 66 +++ ...10901223606_uniquesessionindex.Designer.cs | 508 ++++++++++++++++++ .../20210901223606_uniquesessionindex.cs | 32 ++ ...1224103_uniquesessionnameindex.Designer.cs | 508 ++++++++++++++++++ .../20210901224103_uniquesessionnameindex.cs | 33 ++ .../SledgemapperDbContextModelSnapshot.cs | 14 +- 13 files changed, 1722 insertions(+), 12 deletions(-) create mode 100644 Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.cs create mode 100644 Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.cs create mode 100644 Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.cs diff --git a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs index a53e795..44d7f30 100644 --- a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs +++ b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs @@ -18,4 +18,17 @@ namespace Sledgemapper.Api.Commands } } + public class GetCampaignMapsCommand : IRequest> + { + public double Timestamp { get; private set; } + public string CampaignName { get; private set; } + public string UserId { get; private set; } + public GetCampaignMapsCommand(string campaingName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignName = campaingName; + UserId = userId; + } + } + } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 4f719c5..be40923 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -61,5 +61,13 @@ namespace Sledgemapper.Api.Controllers } + [HttpGet] + [Route("{campaignName}/maps")] + public async Task> GetMaps(string campaignName) + { + var result = await _mediator.Send(new GetCampaignMapsCommand(campaignName, UserId.ToString())); + return result; + } + } } \ No newline at end of file diff --git a/Sledgemapper.Api/Core/Entities/Campaign.cs b/Sledgemapper.Api/Core/Entities/Campaign.cs index ea214f4..7cbadd2 100644 --- a/Sledgemapper.Api/Core/Entities/Campaign.cs +++ b/Sledgemapper.Api/Core/Entities/Campaign.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Models; using Sledgemapper.Entities; namespace Sledgemapper.Api.Core.Entities @@ -17,6 +18,6 @@ namespace Sledgemapper.Api.Core.Entities public ICollection InvitedUsers { get; set; } - public ICollection Maps { get; set; } + public ICollection Maps { get; set; } } } diff --git a/Sledgemapper.Api/Core/Entities/Session.cs b/Sledgemapper.Api/Core/Entities/Session.cs index a0c4905..ef08106 100644 --- a/Sledgemapper.Api/Core/Entities/Session.cs +++ b/Sledgemapper.Api/Core/Entities/Session.cs @@ -1,8 +1,10 @@ +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; namespace Sledgemapper.Api.Models { + [Index(nameof(CampaignId), nameof(SessionName), IsUnique = true)] public class Session { [Key] diff --git a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs index 144cba0..9446d86 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs @@ -29,9 +29,9 @@ namespace Sledgemapper.Api.Handlers var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaign = await _dbcontext.Campaigns.Where(campaign=>campaign.CampaignName==command.CampaignName && campaign.OwnerId==command.UserId).Include(campaign=>campaign.InvitedUsers).FirstAsync(); - - var players=campaign.InvitedUsers.Select(user=>new Player{Initials=user.Initials, UserName=user.UserName}).ToList(); + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); + + var players = campaign.InvitedUsers.Select(user => new Player { Initials = user.Initials, UserName = user.UserName }).ToList(); return players; } catch (Exception ex) @@ -40,4 +40,36 @@ namespace Sledgemapper.Api.Handlers return null; } } + + + + public class GetCampaignMapsCommandHandler : IRequestHandler> + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public GetCampaignMapsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task> Handle(GetCampaignMapsCommand command, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(command.UserId); + _dbcontext.Attach(user); + + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + + var maps = campaign.Maps.Select(session => new Session { SessionName = session.SessionName, SessionId = session.SessionId }).ToList(); + return maps; + } + catch (Exception ex) + { + } + return null; + } + } } \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs index 6e4285c..9b1e998 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -31,7 +31,7 @@ namespace Sledgemapper.Api.Handlers var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Maps).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); return campaigns. - Select(c => new Shared.Entities.Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Shared.Entities.Map { SessionName = m.MapName }).ToList() }) + Select(c => new Shared.Entities.Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Shared.Entities.Map { SessionName = m.SessionName }).ToList() }) .ToList(); } catch (Exception ex) diff --git a/Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.Designer.cs b/Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.Designer.cs new file mode 100644 index 0000000..1546417 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.Designer.cs @@ -0,0 +1,507 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210901220553_renameMapToSession")] + partial class renameMapToSession + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.HasIndex("CampaignId"); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.cs b/Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.cs new file mode 100644 index 0000000..d40e21f --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210901220553_renameMapToSession.cs @@ -0,0 +1,66 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class renameMapToSession : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Maps_Campaigns_CampaignId1", + table: "Maps"); + + migrationBuilder.DropIndex( + name: "IX_Maps_CampaignId1", + table: "Maps"); + + migrationBuilder.DropColumn( + name: "CampaignId1", + table: "Maps"); + + migrationBuilder.CreateIndex( + name: "IX_Sessions_CampaignId", + table: "Sessions", + column: "CampaignId"); + + migrationBuilder.AddForeignKey( + name: "FK_Sessions_Campaigns_CampaignId", + table: "Sessions", + column: "CampaignId", + principalTable: "Campaigns", + principalColumn: "CampaignId", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Sessions_Campaigns_CampaignId", + table: "Sessions"); + + migrationBuilder.DropIndex( + name: "IX_Sessions_CampaignId", + table: "Sessions"); + + migrationBuilder.AddColumn( + name: "CampaignId1", + table: "Maps", + type: "TEXT", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Maps_CampaignId1", + table: "Maps", + column: "CampaignId1"); + + migrationBuilder.AddForeignKey( + name: "FK_Maps_Campaigns_CampaignId1", + table: "Maps", + column: "CampaignId1", + principalTable: "Campaigns", + principalColumn: "CampaignId", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.Designer.cs b/Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.Designer.cs new file mode 100644 index 0000000..6eed562 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210901223606_uniquesessionindex")] + partial class uniquesessionindex + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.HasIndex("CampaignId", "SessionId") + .IsUnique(); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.cs b/Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.cs new file mode 100644 index 0000000..e56f5ae --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210901223606_uniquesessionindex.cs @@ -0,0 +1,32 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class uniquesessionindex : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_Sessions_CampaignId", + table: "Sessions"); + + migrationBuilder.CreateIndex( + name: "IX_Sessions_CampaignId_SessionId", + table: "Sessions", + columns: new[] { "CampaignId", "SessionId" }, + unique: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_Sessions_CampaignId_SessionId", + table: "Sessions"); + + migrationBuilder.CreateIndex( + name: "IX_Sessions_CampaignId", + table: "Sessions", + column: "CampaignId"); + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.Designer.cs b/Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.Designer.cs new file mode 100644 index 0000000..0d469c7 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210901224103_uniquesessionnameindex")] + partial class uniquesessionnameindex + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.HasIndex("CampaignId", "SessionName") + .IsUnique(); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("INTEGER"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.cs b/Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.cs new file mode 100644 index 0000000..3dc4508 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210901224103_uniquesessionnameindex.cs @@ -0,0 +1,33 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class uniquesessionnameindex : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_Sessions_CampaignId_SessionId", + table: "Sessions"); + + migrationBuilder.CreateIndex( + name: "IX_Sessions_CampaignId_SessionName", + table: "Sessions", + columns: new[] { "CampaignId", "SessionName" }, + unique: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_Sessions_CampaignId_SessionName", + table: "Sessions"); + + migrationBuilder.CreateIndex( + name: "IX_Sessions_CampaignId_SessionId", + table: "Sessions", + columns: new[] { "CampaignId", "SessionId" }, + unique: true); + } + } +} diff --git a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs index c6f7c84..322320a 100644 --- a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs +++ b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs @@ -258,17 +258,12 @@ namespace Sledgemapper.Api.Migrations b.Property("CampaignId") .HasColumnType("INTEGER"); - b.Property("CampaignId1") - .HasColumnType("TEXT"); - b.Property("MapName") .IsRequired() .HasColumnType("TEXT"); b.HasKey("MapId"); - b.HasIndex("CampaignId1"); - b.ToTable("Maps"); }); @@ -327,6 +322,9 @@ namespace Sledgemapper.Api.Migrations b.HasKey("SessionId"); + b.HasIndex("CampaignId", "SessionName") + .IsUnique(); + b.ToTable("Sessions"); }); @@ -480,11 +478,13 @@ namespace Sledgemapper.Api.Migrations b.Navigation("Owner"); }); - modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => { b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) .WithMany("Maps") - .HasForeignKey("CampaignId1"); + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Sledgemapper.Entities.User", b => From 12080cf6da4a1a749127a37743a9272270afe460 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 2 Sep 2021 16:37:14 +0100 Subject: [PATCH 31/81] add new map to campaign --- Sledgemapper/IMapApi.cs | 8 +- Sledgemapper/Sledgemapper.cs | 183 ++++++++++++++++++++++--- Sledgemapper/UI/MapWindow.Generated.cs | 67 +++++++++ Sledgemapper/UI/MapWindow.cs | 11 ++ Sledgemapper/UI/mapWindow.xmmp | 14 ++ 5 files changed, 261 insertions(+), 22 deletions(-) create mode 100644 Sledgemapper/UI/MapWindow.Generated.cs create mode 100644 Sledgemapper/UI/MapWindow.cs create mode 100644 Sledgemapper/UI/mapWindow.xmmp diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index f04142b..95b0953 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -12,8 +12,8 @@ namespace Sledgemapper [Get("/session/{sessionName}")] Task Session(string sessionName); - [Post("/session/{sessionName}")] - Task NewSession(string sessionName); + [Post("/map/{campaignName}/{sessionName}")] + Task NewSession(string campaignName, string sessionName); [Post("/session/{sessionName}/snapshot")] Task SaveSnapshot([Body] Session session, string sessionName); @@ -73,6 +73,10 @@ namespace Sledgemapper [Get("/campaign/{campaignName}/players")] Task> GetPlayers(string campaignName); + + [Get("/campaign/{campaignName}/maps")] + Task> GetMaps(string campaignName); + [Post("/campaign/{campaignName}/players/{email}")] Task InvitePlayer(string campaignName, string email); } diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 393ed74..e3b4b11 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -217,7 +217,8 @@ namespace Sledgemapper _mainWidget.MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; _mainWidget.MenuMapOpen.Selected += OnMenuMapOpen; - + _mainWidget.MenuMapNew.Selected += OnMenuMapNew; + _mainWidget.MenuConnectNew.Enabled = false; _mainWidget.MenuConnectJoin.Enabled = false; _mainWidget.MenuConnectSync.Enabled = false; @@ -259,6 +260,87 @@ namespace Sledgemapper _whiteRectangle.SetData(new[] { Color.White }); } + private void OnMenuMapNew(object sender, EventArgs e) + { + if (sender is MenuItem && !((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "New map" + }; + + var content = new MapWindow(); + //content.BtnNewCampaign.Text = "N"; + content.BtnNewCampaign.Click += OnButtonNewMapClicked; + window.Content = content; + + window.ShowModal(_desktop); + content.TxtCampaign.SetKeyboardFocus(); + } + + private async void OnButtonNewMapClicked(object sender, EventArgs e) + { + Container container = ((TextButton)sender).Parent; + while (!(container is Window)) + { + container = container.Parent; + } + var localWindow = (Window)container; + var localContent = localWindow.Content as MapWindow; + var isValid = ValidateTextbox(localContent.TxtCampaign); + if (!isValid) + { + return; + } + + //if (_communicationManager.Connection.State != HubConnectionState.Connected) + //{ + // _mainWidget.lblConnectionStatus.Text = "Connecting"; + // await _communicationManager.Connection.StartAsync(); + // UpdateConnectionState(_communicationManager.Connection); + //} + + var successful = false; + try + { + await _communicationManager.Api.NewSession(_state.CampaignName, localContent.TxtCampaign.Text); + + //if (result) + //{ + // _sessionData.SessionName = localContent.TxtSession.Text; + // _sessionData.MapEntityAdded -= OnMapEntityAdded; + // _sessionData.MapEntityDeleted -= OnMapEntityDeleted; + // _sessionData.MapEntityAdded += OnMapEntityAdded; + // _sessionData.MapEntityDeleted += OnMapEntityDeleted; + //} + //successful = result; + //var result2 = await _communicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + //_sessionData.SessionId = result2.SessionId; + //_sessionData.SessionName = localContent.TxtSession.Text; + } + catch (Exception ex) + { + ExceptionlessClient.Default.SubmitException(ex); + } + + //if (successful) + //{ + // //_sessionData.SessionName = localContent.TxtSession.Text; + // //_communicationManager.SessionData.Map = _sessionData.Map; + // //_communicationManager.SessionData.Overlays = _sessionData.Overlays; + // //_communicationManager.SessionData.Walls = _sessionData.Walls; + // //_mainWidget.lblSessionName.Text = _sessionData.SessionName; + // //_mainWidget.MenuConnectSync.Enabled = true; + // //_mainWidget.MenuConnectUpload.Enabled = true; + // localWindow.Close(); + //} + + localWindow.Close(); + } + private async void OnMenuMapOpen(object sender, EventArgs e) { if (!((MenuItem)sender).Enabled) @@ -272,23 +354,23 @@ namespace Sledgemapper }; var content = new CampaignList(); - //var campaigns = await _communicationManager.Api.GetMaps(); - //foreach (var campaign in campaigns) - //{ - // var item = new CampaignListItem(); - // item.TxtCampaignName.Text = campaign.Name; - // item.Background = new NinePatchRegion( - // Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), - // new Myra.Graphics2D.Thickness - // { - // Left = 11, - // Right = 11, - // Top = 11, - // Bottom = 11 - // }); - // item.TouchUp += OnCampaignSelected; - // content.StackCampaignsList.AddChild(item); - //} + var campaigns = await _communicationManager.Api.GetMaps(_state.CampaignName); + foreach (var campaign in campaigns) + { + var item = new CampaignListItem(); + item.TxtCampaignName.Text = campaign.SessionName; + item.Background = new NinePatchRegion( + Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), + new Myra.Graphics2D.Thickness + { + Left = 11, + Right = 11, + Top = 11, + Bottom = 11 + }); + item.TouchUp += OnCampaignSelected; + content.StackCampaignsList.AddChild(item); + } //content.BtnNewCampaign.Text = "N"; @@ -428,7 +510,7 @@ namespace Sledgemapper var content = new CampaignWindow(); //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonInvitePlayerClicked; + content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; window.Content = content; window.ShowModal(_desktop); @@ -2152,6 +2234,67 @@ namespace Sledgemapper } + private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + { + Container container = ((TextButton)sender).Parent; + while (!(container is Window)) + { + container = container.Parent; + } + var localWindow = (Window)container; + var localContent = localWindow.Content as CampaignWindow; + var isValid = ValidateTextbox(localContent.TxtCampaign); + if (!isValid) + { + return; + } + + //if (_communicationManager.Connection.State != HubConnectionState.Connected) + //{ + // _mainWidget.lblConnectionStatus.Text = "Connecting"; + // await _communicationManager.Connection.StartAsync(); + // UpdateConnectionState(_communicationManager.Connection); + //} + + var successful = false; + try + { + await _communicationManager.Api.NewCampaign(localContent.TxtCampaign.Text); + + //if (result) + //{ + // _sessionData.SessionName = localContent.TxtSession.Text; + // _sessionData.MapEntityAdded -= OnMapEntityAdded; + // _sessionData.MapEntityDeleted -= OnMapEntityDeleted; + // _sessionData.MapEntityAdded += OnMapEntityAdded; + // _sessionData.MapEntityDeleted += OnMapEntityDeleted; + //} + //successful = result; + //var result2 = await _communicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + //_sessionData.SessionId = result2.SessionId; + //_sessionData.SessionName = localContent.TxtSession.Text; + } + catch (Exception ex) + { + ExceptionlessClient.Default.SubmitException(ex); + } + + //if (successful) + //{ + // //_sessionData.SessionName = localContent.TxtSession.Text; + // //_communicationManager.SessionData.Map = _sessionData.Map; + // //_communicationManager.SessionData.Overlays = _sessionData.Overlays; + // //_communicationManager.SessionData.Walls = _sessionData.Walls; + // //_mainWidget.lblSessionName.Text = _sessionData.SessionName; + // //_mainWidget.MenuConnectSync.Enabled = true; + // //_mainWidget.MenuConnectUpload.Enabled = true; + // localWindow.Close(); + //} + + localWindow.Close(); + + } + private async void OnButtonNewSessionClicked(object sender, EventArgs e) { Container container = ((TextButton)sender).Parent; @@ -2177,7 +2320,7 @@ namespace Sledgemapper var successful = false; try { - var result = await _communicationManager.Api.NewSession(localContent.TxtSession.Text); + var result = await _communicationManager.Api.NewSession(_state.CampaignName, localContent.TxtSession.Text); if (result) { diff --git a/Sledgemapper/UI/MapWindow.Generated.cs b/Sledgemapper/UI/MapWindow.Generated.cs new file mode 100644 index 0000000..c6ba8d0 --- /dev/null +++ b/Sledgemapper/UI/MapWindow.Generated.cs @@ -0,0 +1,67 @@ +/* Generated by MyraPad at 02/09/2021 16:26:04 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class MapWindow: VerticalStackPanel + { + private void BuildUI() + { + var label1 = new Label(); + label1.Text = "Map"; + + TxtCampaign = new TextBox(); + TxtCampaign.GridColumn = 1; + TxtCampaign.Id = "TxtCampaign"; + + var grid1 = new Grid(); + grid1.ColumnSpacing = 25; + grid1.RowSpacing = 10; + grid1.ColumnsProportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Pixels, + Value = 60, + }); + grid1.ColumnsProportions.Add(new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Fill, + }); + grid1.Widgets.Add(label1); + grid1.Widgets.Add(TxtCampaign); + + BtnNewCampaign = new TextButton(); + BtnNewCampaign.Text = "New"; + BtnNewCampaign.Padding = new Thickness(10, 5); + BtnNewCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + BtnNewCampaign.Id = "BtnNewCampaign"; + + + Spacing = 16; + HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + Width = 300; + Padding = new Thickness(10); + Widgets.Add(grid1); + Widgets.Add(BtnNewCampaign); + } + + + public TextBox TxtCampaign; + public TextButton BtnNewCampaign; + } +} diff --git a/Sledgemapper/UI/MapWindow.cs b/Sledgemapper/UI/MapWindow.cs new file mode 100644 index 0000000..ba6a9c4 --- /dev/null +++ b/Sledgemapper/UI/MapWindow.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 02/09/2021 16:26:04 */ +namespace Sledgemapper.UI +{ + public partial class MapWindow + { + public MapWindow() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/mapWindow.xmmp b/Sledgemapper/UI/mapWindow.xmmp new file mode 100644 index 0000000..f656c90 --- /dev/null +++ b/Sledgemapper/UI/mapWindow.xmmp @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file From a8991b474f4dcf83e4e9d765804f01ad8c1d962f Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 2 Sep 2021 23:42:03 +0100 Subject: [PATCH 32/81] ui fixes --- Sledgemapper/Sledgemapper.cs | 18 +++++++++--------- Sledgemapper/UI/CampaignList.Generated.cs | 9 ++++++--- Sledgemapper/UI/CampaignListItem.Generated.cs | 10 +++++----- Sledgemapper/UI/campaignListItem.xmmp | 4 ++-- Sledgemapper/UI/campaignsList.xmmp | 6 ++++-- 5 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index e3b4b11..7a35a22 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -535,15 +535,15 @@ namespace Sledgemapper { var item = new CampaignListItem(); item.TxtCampaignName.Text = campaign.Name; - item.Background = new NinePatchRegion( - Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), - new Myra.Graphics2D.Thickness - { - Left = 11, - Right = 11, - Top = 11, - Bottom = 11 - }); + //item.Background = new NinePatchRegion( + // Content.Load("listBackground"), new Rectangle(0, 0, 418, 25), + // new Myra.Graphics2D.Thickness + // { + // Left = 11, + // Right = 11, + // Top = 11, + // Bottom = 11 + // }); item.TouchUp += OnCampaignSelected; content.StackCampaignsList.AddChild(item); } diff --git a/Sledgemapper/UI/CampaignList.Generated.cs b/Sledgemapper/UI/CampaignList.Generated.cs index bd98c24..d4aea85 100644 --- a/Sledgemapper/UI/CampaignList.Generated.cs +++ b/Sledgemapper/UI/CampaignList.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 28/08/2021 16:25:44 */ +/* Generated by MyraPad at 02/09/2021 23:40:23 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -27,11 +27,14 @@ namespace Sledgemapper.UI label1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; StackCampaignsList = new VerticalStackPanel(); - StackCampaignsList.MinHeight = 350; - StackCampaignsList.MaxHeight = 350; + StackCampaignsList.DefaultProportion = new Proportion + { + Type = Myra.Graphics2D.UI.ProportionType.Auto, + }; StackCampaignsList.Id = "StackCampaignsList"; var scrollViewer1 = new ScrollViewer(); + scrollViewer1.Height = 250; scrollViewer1.Content = StackCampaignsList; BtnNewCampaign = new TextButton(); diff --git a/Sledgemapper/UI/CampaignListItem.Generated.cs b/Sledgemapper/UI/CampaignListItem.Generated.cs index b3cf0da..275cd81 100644 --- a/Sledgemapper/UI/CampaignListItem.Generated.cs +++ b/Sledgemapper/UI/CampaignListItem.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 28/08/2021 19:31:16 */ +/* Generated by MyraPad at 02/09/2021 22:56:13 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -24,17 +24,17 @@ namespace Sledgemapper.UI { TxtCampaignName = new Label(); TxtCampaignName.Text = "Highfell"; - TxtCampaignName.TextColor = ColorStorage.CreateColor(102, 102, 102, 255); + TxtCampaignName.TextColor = ColorStorage.CreateColor(32, 32, 32, 255); + TxtCampaignName.Margin = new Thickness(10, 0, 0, 0); TxtCampaignName.VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; - TxtCampaignName.Background = new SolidBrush("#00000000"); TxtCampaignName.Id = "TxtCampaignName"; VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; - Width = 300; Height = 30; BorderThickness = new Thickness(2); - Padding = new Thickness(10); + Padding = new Thickness(5); + Background = new SolidBrush("#D9D9D9FF"); Id = "PnlCampaignItem"; Widgets.Add(TxtCampaignName); } diff --git a/Sledgemapper/UI/campaignListItem.xmmp b/Sledgemapper/UI/campaignListItem.xmmp index 4d2f3cd..63da35f 100644 --- a/Sledgemapper/UI/campaignListItem.xmmp +++ b/Sledgemapper/UI/campaignListItem.xmmp @@ -1,6 +1,6 @@ - - \ No newline at end of file diff --git a/Sledgemapper/UI/campaignsList.xmmp b/Sledgemapper/UI/campaignsList.xmmp index 74c0274..f56979c 100644 --- a/Sledgemapper/UI/campaignsList.xmmp +++ b/Sledgemapper/UI/campaignsList.xmmp @@ -2,8 +2,10 @@ diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index 381ea36..c022a91 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -6,6 +6,7 @@ using Microsoft.Xna.Framework; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; using Sledgemapper.Shared.Entities; +using TinyMessenger; namespace Sledgemapper.UI { @@ -13,15 +14,16 @@ namespace Sledgemapper.UI { private AuthenticateResponse _authResponse; private readonly CommunicationManager CommunicationManager; - private readonly MainWidget MainWidget; private readonly Window Window; + private readonly TinyMessengerHub _messenger; - public LoginRegisterWindow(CommunicationManager communicationManager, MainWidget mainWidget, Window window) + public LoginRegisterWindow(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger) { BuildUI(); - MainWidget=mainWidget; CommunicationManager=communicationManager; Window=window; + _messenger=messenger; + #if DEBUG TxtEmail.Text = "michele.scandura@outlook.com"; TxtPassword.Text = "slePharland!79"; @@ -60,21 +62,7 @@ namespace Sledgemapper.UI } - //TODO refactor - private bool ValidateTextbox(TextBox textBox) - { - var valid = !string.IsNullOrWhiteSpace(textBox.Text); - if (!valid) - { - textBox.Background = new SolidBrush(Color.Red); - } - else - { - textBox.Background = new SolidBrush(new Color(51, 51, 51)); ; - } - return valid; - } private async void OnButtonRegisterClick(object sender, EventArgs e) { @@ -88,11 +76,11 @@ namespace Sledgemapper.UI } var isValid = true; - isValid &= ValidateTextbox(TxtEmail); - isValid &= ValidateTextbox(TxtPassword); - isValid &= ValidateTextbox(TxtFirstname); - isValid &= ValidateTextbox(TxtLastname); - isValid &= ValidateTextbox(TxtInitials); + isValid &= TxtEmail.ValidateTextbox(); + isValid &= TxtPassword.ValidateTextbox(); + isValid &= TxtFirstname.ValidateTextbox(); + isValid &= TxtLastname.ValidateTextbox(); + isValid &= TxtInitials.ValidateTextbox(); if (!isValid) { @@ -152,11 +140,7 @@ namespace Sledgemapper.UI } if (successful) { - MainWidget.MenuConnectNew.Enabled = true; - MainWidget.MenuConnectJoin.Enabled = true; - - MainWidget.lblUsername.Text = $"{_authResponse.Username} - {_authResponse.Initials}"; - + _messenger.Publish(new LoginSuccesfulMessage(this){UserName=_authResponse.Username, Initials=_authResponse.Initials}); localContent.Window.Close(); } } @@ -179,8 +163,8 @@ namespace Sledgemapper.UI } var isValid = true; - isValid &= ValidateTextbox(localContent.TxtEmail); - isValid &= ValidateTextbox(localContent.TxtPassword); + isValid &= localContent.TxtEmail.ValidateTextbox(); + isValid &= localContent.TxtPassword.ValidateTextbox(); if (!isValid) { @@ -225,9 +209,7 @@ namespace Sledgemapper.UI if (successful) { - MainWidget.MenuConnectNew.Enabled = true; - MainWidget.MenuConnectJoin.Enabled = true; - MainWidget.lblUsername.Text = $"{_authResponse.Username} - {_authResponse.Initials}"; + _messenger.Publish(new LoginSuccesfulMessage(this){UserName=_authResponse.Username, Initials=_authResponse.Initials}); localWindow.Close(); } } diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 90fe413..aa805d4 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -14,6 +14,7 @@ using System; using System.Diagnostics; using System.IO; using System.Linq; +using TinyMessenger; namespace Sledgemapper.UI { @@ -23,10 +24,12 @@ namespace Sledgemapper.UI private readonly CommunicationManager CommunicationManager; private State _state; private Settings _settings; - private GameWindow _window; - + private readonly TinyMessengerHub _messenger; + private readonly CachedContent _cachedContent; - public MainWidget(CommunicationManager communicationManager, State state, Settings settings, CachedContent cachedContent, GameWindow window) + private readonly GameWindow Window; + + public MainWidget(CommunicationManager communicationManager, State state, Settings settings, CachedContent cachedContent, TinyMessengerHub messenger, GameWindow window) { BuildUI(); @@ -34,7 +37,8 @@ namespace Sledgemapper.UI _state = state; _settings = settings; _cachedContent = cachedContent; - _window = window; + + _messenger=messenger; MenuConnectLogin.Selected += OnMenuConnectLoginSelected; MenuConnectSync.Selected += OnMenuConnectSyncSelected; MenuFileLoad.Selected += OnMenuFileLoadSelected; @@ -62,9 +66,36 @@ namespace Sledgemapper.UI BtnToolbarLine.Click += OnBtnToolbarLinClicked; BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; + _messenger.Subscribe(OnLoginSuccesfulMessage); + _messenger.Subscribe(OnSignalrConnectionUpdateMessage); + _messenger.Subscribe(OnMapOpenedMessage); } - + private void OnMapOpenedMessage(MapOpenedMessage obj) + { + lblSessionName.Text = CommunicationManager.SessionData.SessionName; + MenuConnectSync.Enabled = true; + MenuConnectUpload.Enabled = true; + CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + } + + private async void OnSignalrConnectionUpdateMessage(SignalrConnectionUpdateMessage obj) + { + lblConnectionStatus.Text = "Connecting"; + await CommunicationManager.Connection.StartAsync(); + UpdateConnectionState(CommunicationManager.Connection); + } + + private void OnLoginSuccesfulMessage(LoginSuccesfulMessage obj) + { + MenuConnectNew.Enabled = true; + MenuConnectJoin.Enabled = true; + + lblUsername.Text = $"{_authResponse.Username} - {_authResponse.Initials}"; + } public void ClearSelection() { @@ -96,204 +127,11 @@ namespace Sledgemapper.UI Title = "Login" }; - var content = new LoginRegisterWindow(CommunicationManager, this, window); - -// #if DEBUG -// content.TxtEmail.Text = "michele.scandura@outlook.com"; -// content.TxtPassword.Text = "slePharland!79"; -// #endif - -// content.RdoLogin.IsPressed = true; -// content.RdoLogin.Click += (s, e) => -// { -// content.TxtFirstname.Visible = false; -// content.TxtLastname.Visible = false; -// content.TxtInitials.Visible = false; -// content.LblFirstname.Visible = false; -// content.LblLastname.Visible = false; -// content.LblInitials.Visible = false; -// content.BtnLogin.Visible = true; -// content.BtnRegister.Visible = false; -// window.Title = "Login"; -// }; - -// content.RdoRegister.Click += (s, e) => -// { -// content.TxtFirstname.Visible = true; -// content.TxtLastname.Visible = true; -// content.TxtInitials.Visible = true; -// content.LblFirstname.Visible = true; -// content.LblLastname.Visible = true; -// content.LblInitials.Visible = true; -// content.BtnLogin.Visible = false; -// content.BtnRegister.Visible = true; -// window.Title = "Register"; -// }; - -// content.BtnRegister.Click += OnButtonRegisterClick; -// content.BtnLogin.Click += OnButtonLoginClick; -// content.TxtEmail.SetKeyboardFocus(); - + var content = new LoginRegisterWindow(CommunicationManager, window,_messenger); window.Content = content; window.ShowModal(Desktop); } - // private async void OnButtonRegisterClick(object sender, EventArgs e) - // { - // var button = ((TextButton)sender); - - // var localContent = GetParentContentInWindow(button);// localWindow.Content as PlayerWindow; - - // if (!button.Enabled) - // { - // return; - // } - - // var isValid = true; - // isValid &= ValidateTextbox(localContent.Content.TxtEmail); - // isValid &= ValidateTextbox(localContent.Content.TxtPassword); - // isValid &= ValidateTextbox(localContent.Content.TxtFirstname); - // isValid &= ValidateTextbox(localContent.Content.TxtLastname); - // isValid &= ValidateTextbox(localContent.Content.TxtInitials); - - // if (!isValid) - // { - // localContent.Content.LblLoginError.Text = "Please complete all the fields"; - // localContent.Content.LblLoginError.Visible = true; - // return; - // } - - // var successful = false; - // try - // { - // button.Text = "Wait..."; - // localContent.Content.LblLoginError.Text = ""; - // localContent.Content.LblLoginError.Visible = false; - - // var result = await CommunicationManager.Register(new RegisterModel - // { - // Username = localContent.Content.TxtEmail.Text, - // Email = localContent.Content.TxtEmail.Text, - // Password = localContent.Content.TxtPassword.Text, - // FirstName = localContent.Content.TxtFirstname.Text, - // LastName = localContent.Content.TxtLastname.Text, - // Initials = localContent.Content.TxtInitials.Text - // }); - // if (result.Result) - // { - // _authResponse = await CommunicationManager.Login(new AuthenticateModel - // { - // Username = localContent.Content.TxtEmail.Text, - // Password = localContent.Content.TxtPassword.Text - // }); - // successful = true; - // } - // else - // { - // localContent.Content.LblLoginError.Text = result.Errors.FirstOrDefault(); - // localContent.Content.LblLoginError.Visible = true; - // } - // } - // catch (Refit.ApiException refitException) - // { - // ExceptionlessClient.Default.SubmitException(refitException); - // localContent.Content.LblLoginError.Text = refitException.Content; - // localContent.Content.LblLoginError.Visible = true; - // } - // catch (Exception ex) - // { - // ExceptionlessClient.Default.SubmitException(ex); - // localContent.Content.LblLoginError.Text = "Can't connect to the server"; - // localContent.Content.LblLoginError.Visible = true; - // Debug.Write(ex); - // } - // finally - // { - // button.Enabled = true; - // button.Text = "Register"; - // } - // if (successful) - // { - // MenuConnectNew.Enabled = true; - // MenuConnectJoin.Enabled = true; - - // lblUsername.Text = $"{_authResponse.Username} - {_authResponse.Initials}"; - - // localContent.Window.Close(); - // } - // } - - // private async void OnButtonLoginClick(object sender, EventArgs e) - // { - // var button = ((TextButton)sender); - // Container container = button.Parent; - // while (!(container is Window)) - // { - // container = container.Parent; - // } - - // var localWindow = (Window)container; - // var localContent = localWindow.Content as LoginRegisterWindow; - - // if (!button.Enabled) - // { - // return; - // } - - // var isValid = true; - // isValid &= ValidateTextbox(localContent.TxtEmail); - // isValid &= ValidateTextbox(localContent.TxtPassword); - - // if (!isValid) - // { - // localContent.LblLoginError.Text = "Username or password is not valid"; - // localContent.LblLoginError.Visible = true; - - // return; - // } - - // var successful = false; - // try - // { - // button.Text = "Wait..."; - // localContent.LblLoginError.Text = ""; - // localContent.LblLoginError.Visible = false; - // _authResponse = await CommunicationManager.Login(new AuthenticateModel - // { - // Username = localContent.TxtEmail.Text, - // Email = localContent.TxtEmail.Text, - // Password = localContent.TxtPassword.Text - // }); - // successful = _authResponse != null; - // } - // catch (Refit.ApiException refitException) - // { - // ExceptionlessClient.Default.SubmitException(refitException); - // localContent.LblLoginError.Text = refitException.Content; - // localContent.LblLoginError.Visible = true; - // } - // catch (Exception ex) - // { - // ExceptionlessClient.Default.SubmitException(ex); - // localContent.LblLoginError.Text = "Can't connect to the server"; - // localContent.LblLoginError.Visible = true; - // Debug.Write(ex); - // } - // finally - // { - // button.Enabled = true; - // button.Text = "Login"; - // } - - // if (successful) - // { - // MenuConnectNew.Enabled = true; - // MenuConnectJoin.Enabled = true; - // lblUsername.Text = $"{_authResponse.Username} - {_authResponse.Initials}"; - // localWindow.Close(); - // } - // } - private void OnMenuConnectNewSelected(object sender, EventArgs e) { @@ -307,96 +145,10 @@ namespace Sledgemapper.UI Title = "New mapping session" }; - var content = new SessionWindow(); - content.BtnLogin.Text = "Join"; - content.BtnLogin.Click += OnButtonNewSessionClicked; + var content = new SessionWindow(CommunicationManager,_messenger,window, _state); window.Content = content; window.ShowModal(Desktop); - content.TxtSession.SetKeyboardFocus(); - } - - private async void OnButtonNewSessionClicked(object sender, EventArgs e) - { - var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; - - var isValid = ValidateTextbox(localContent.Content.TxtSession); - if (!isValid) - { - return; - } - - if (CommunicationManager.Connection.State != HubConnectionState.Connected) - { - lblConnectionStatus.Text = "Connecting"; - await CommunicationManager.Connection.StartAsync(); - UpdateConnectionState(CommunicationManager.Connection); - } - - var successful = false; - try - { - var result = await CommunicationManager.Api.NewSession(_state.CampaignName, localContent.Content.TxtSession.Text); - - if (result) - { - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - } - successful = result; - var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); - CommunicationManager.SessionData.SessionId = result2.SessionId; - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - } - catch (Exception ex) - { - ExceptionlessClient.Default.SubmitException(ex); - } - - if (successful) - { - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - lblSessionName.Text = CommunicationManager.SessionData.SessionName; - MenuConnectSync.Enabled = true; - MenuConnectUpload.Enabled = true; - localContent.Window.Close(); - } - } - - //TODO refactor - private bool ValidateTextbox(TextBox textBox) - { - var valid = !string.IsNullOrWhiteSpace(textBox.Text); - if (!valid) - { - textBox.Background = new SolidBrush(Color.Red); - } - else - { - textBox.Background = new SolidBrush(new Color(51, 51, 51)); ; - } - return valid; - - } - - //TODO Refactor - private (Window Window, C Content) GetParentContentInWindow(Widget widget) where C : Widget - { - Container container = widget.Parent; - while (!(container is Window)) - { - container = container.Parent; - } - - var localWindow = (Window)container; - var localContent = localWindow.Content as C; - return (localWindow, localContent); } private void UpdateConnectionState(HubConnection connection) @@ -585,7 +337,7 @@ namespace Sledgemapper.UI private void CenterOnTile(int x, int y) { - var center = new Point((_window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, _window.ClientBounds.Height / 2 - _state.TileSize / 2); + var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); var dx = center.X - x * _state.TileSize - _state.ViewportCenter.X; var dy = center.Y - y * _state.TileSize - _state.ViewportCenter.Y; _state.ViewportCenter = new Vector3(_state.ViewportCenter.X + dx, _state.ViewportCenter.Y + dy, _state.ViewportCenter.Z); @@ -672,7 +424,7 @@ namespace Sledgemapper.UI private void OnCampaignSelected(object sender, EventArgs e) { var item = sender as UI.ListItem; - var localContent = GetParentContentInWindow(item); + var localContent = item.GetParentContentInWindow(); _state.CampaignName = item.ItemName.Text; var list = item.Parent as Myra.Graphics2D.UI.Grid; for (var i = 0; i < list.ChildrenCount; i++) @@ -687,7 +439,7 @@ namespace Sledgemapper.UI private void OnMapSelected(object sender, EventArgs e) { var item = sender as UI.ListItem; - var localContent = GetParentContentInWindow(item); + var localContent = item.GetParentContentInWindow(); var list = item.Parent as Myra.Graphics2D.UI.Grid; for (var i = 0; i < list.ChildrenCount; i++) @@ -790,9 +542,9 @@ namespace Sledgemapper.UI private async void OnButtonJoinSessionClicked(object sender, EventArgs e) { - var localContent = GetParentContentInWindow(((TextButton)sender)); + var localContent = ((TextButton)sender).GetParentContentInWindow(); - var isValid = ValidateTextbox(localContent.Content.TxtSession); + var isValid = localContent.Content.TxtSession.ValidateTextbox(); if (!isValid) { return; @@ -841,8 +593,8 @@ namespace Sledgemapper.UI private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) { - var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; - var isValid = ValidateTextbox(localContent.Content.TxtCampaign); + var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); if (!isValid) { return; @@ -896,9 +648,9 @@ namespace Sledgemapper.UI private async void OnButtonNewCampaignClicked(object sender, EventArgs e) { - var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; + var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - var isValid = ValidateTextbox(localContent.Content.TxtCampaign); + var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); if (!isValid) { return; @@ -1005,7 +757,7 @@ namespace Sledgemapper.UI } var localWindow = (Window)container; var localContent = localWindow.Content as MapWindow; - var isValid = ValidateTextbox(localContent.TxtCampaign); + var isValid = localContent.TxtCampaign.ValidateTextbox(); if (!isValid) { return; @@ -1078,7 +830,7 @@ namespace Sledgemapper.UI private void OnButtonNoteOkClick(object sender, EventArgs e) { var button = ((TextButton)sender); - var localContent = GetParentContentInWindow(button); + var localContent = button.GetParentContentInWindow(); var note = new Note { X = _state.SelectedNote.X, @@ -1092,7 +844,7 @@ namespace Sledgemapper.UI private void OnButtonNoteCancelClick(object sender, EventArgs e) { var button = ((TextButton)sender); - var content = GetParentContentInWindow(button); + var content = button.GetParentContentInWindow(); content.Window.Close(); } diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs new file mode 100644 index 0000000..842af8a --- /dev/null +++ b/Sledgemapper/UI/SessionWindow.Custom.cs @@ -0,0 +1,75 @@ +/* Generated by MyraPad at 10/11/2020 10:59:36 */ +using System; +using Exceptionless; +using Microsoft.AspNetCore.SignalR.Client; +using Myra.Graphics2D.UI; +using Sledgemapper.Shared.Entities; +using TinyMessenger; + +namespace Sledgemapper.UI +{ + public partial class SessionWindow + { + + private readonly CommunicationManager CommunicationManager; + private readonly Window Window; + private readonly TinyMessengerHub Messenger; + private readonly State State; + + public SessionWindow(CommunicationManager communicationManager, TinyMessengerHub messenger, Window window, State state) + { + BuildUI(); + CommunicationManager=communicationManager; + Messenger=messenger; + State=state; + BtnLogin.Text = "Join"; + BtnLogin.Click += OnButtonNewSessionClicked; + } + + private async void OnButtonNewSessionClicked(object sender, EventArgs e) + { + var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + + var isValid = localContent.Content.TxtSession.ValidateTextbox(); + if (!isValid) + { + return; + } + + if (CommunicationManager.Connection.State != HubConnectionState.Connected) + { + Messenger.Publish(new SignalrConnectionUpdateMessage(this)); + } + + var successful = false; + try + { + var result = await CommunicationManager.Api.NewSession(State.CampaignName, localContent.Content.TxtSession.Text); + + if (result) + { + CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + + } + successful = result; + var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); + CommunicationManager.SessionData.SessionId = result2.SessionId; + CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + } + catch (Exception ex) + { + ExceptionlessClient.Default.SubmitException(ex); + } + + if (successful) + { + CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; + CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; + CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; + + localContent.Window.Close(); + } + } + } +} \ No newline at end of file From 09c32c605efbb224d8e1a6a31cc89c3f85e96f6e Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 9 Sep 2021 10:58:05 +0100 Subject: [PATCH 41/81] more refactoring --- Sledgemapper/Sledgemapper.cs | 125 +---------------------------------- Sledgemapper/SpriteSheet.cs | 37 +++++++++++ 2 files changed, 39 insertions(+), 123 deletions(-) create mode 100644 Sledgemapper/SpriteSheet.cs diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index cbd7fa0..fc4440d 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -2,7 +2,6 @@ using Exceptionless; using Exceptionless.Models; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using MonoGame.Extended; @@ -1734,46 +1733,10 @@ namespace Sledgemapper } } - - - private void UpdateConnectionState(HubConnection connection) - { - switch (connection.State) - { - case HubConnectionState.Connected: - _mainWidget.lblConnectionStatus.Text = "Connected"; - break; - case HubConnectionState.Connecting: - _mainWidget.lblConnectionStatus.Text = "Connecting"; - break; - case HubConnectionState.Disconnected: - _mainWidget.lblConnectionStatus.Text = "Disconnected"; - - break; - case HubConnectionState.Reconnecting: - _mainWidget.lblConnectionStatus.Text = "Reconnecting"; - - break; - } - } - - private (Window Window, C Content) GetParentContentInWindow(Widget widget) where C : Widget - { - Container container = widget.Parent; - while (!(container is Window)) - { - container = container.Parent; - } - - var localWindow = (Window)container; - var localContent = localWindow.Content as C; - return (localWindow, localContent); - } - private void OnButtonNoteOkClick(object sender, EventArgs e) { var button = ((TextButton)sender); - var localContent = GetParentContentInWindow(button); + var localContent = button.GetParentContentInWindow(); var note = new Note { X = _state.SelectedNote.X, @@ -1787,7 +1750,7 @@ namespace Sledgemapper private void OnButtonNoteCancelClick(object sender, EventArgs e) { var button = ((TextButton)sender); - var content = GetParentContentInWindow(button); + var content = button.GetParentContentInWindow(); content.Window.Close(); } @@ -1840,89 +1803,5 @@ namespace Sledgemapper ((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); _state.InsertMode = InsertMode.Wall; } - - - - private async void OnMenuConnectSyncSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - var serverMap = await _communicationManager.Api.Session(_sessionData.SessionName); - _sessionData.Overlays = serverMap.Overlays; - _sessionData.Map = serverMap.Map; - _sessionData.Walls = serverMap.Walls; - _sessionData.Notes = serverMap.Notes; - _sessionData.Lines = serverMap.Lines; - _sessionData.Rooms = serverMap.Rooms; - } - - private async void OnMenuConnectUploadSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - await _communicationManager.Api.SaveSnapshot(_sessionData, _sessionData.SessionName); - } - - - - private void OnMapEntityAdded(object sender, MapEntityAddedEventArgs e) - { - _communicationManager.Enqueue(e.MapEntity, TileAction.Add); - } - - private void OnMapEntityDeleted(object sender, MapEntityDeletedEventArgs e) - { - _communicationManager.Enqueue(e.MapEntity, TileAction.Delete); - } - - private bool ValidateTextbox(TextBox textBox) - { - var valid = !string.IsNullOrWhiteSpace(textBox.Text); - if (!valid) - { - textBox.Background = new SolidBrush(Color.Red); - } - else - { - textBox.Background = new SolidBrush(new Color(51, 51, 51)); ; - } - return valid; - - } } - - internal class SpriteSheet - { - internal Texture2D Texture; - internal Dictionary index; - - public void LoadContent(ContentManager content, string spriteIndex, string texture) - { - index = content.Load>(spriteIndex); - Texture = content.Load(texture); - } - - internal Rectangle? SourceRectangle(string spriteName) - { - Rectangle r; - bool hasValue = index.TryGetValue(spriteName, out r); - - if (hasValue) - { - return r; - } - else - { - throw new Exception("value doesn't exist"); - } - } - } - - } diff --git a/Sledgemapper/SpriteSheet.cs b/Sledgemapper/SpriteSheet.cs new file mode 100644 index 0000000..00bc421 --- /dev/null +++ b/Sledgemapper/SpriteSheet.cs @@ -0,0 +1,37 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; + +namespace Sledgemapper +{ + internal class SpriteSheet + { + internal Texture2D Texture; + internal Dictionary index; + + public void LoadContent(ContentManager content, string spriteIndex, string texture) + { + index = content.Load>(spriteIndex); + Texture = content.Load(texture); + } + + internal Rectangle? SourceRectangle(string spriteName) + { + Rectangle r; + bool hasValue = index.TryGetValue(spriteName, out r); + + if (hasValue) + { + return r; + } + else + { + throw new Exception("value doesn't exist"); + } + } + } + + +} From 90331510061b6ffb8a3d3804e4102c4db4fa32d5 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Wed, 15 Sep 2021 11:51:59 +0100 Subject: [PATCH 42/81] more ui refactoring --- Sledgemapper/Sledgemapper.cs | 4 +- Sledgemapper/State.cs | 66 ++++-- Sledgemapper/UI/CampaignList.Custom.cs | 158 ++++++++++++++ Sledgemapper/UI/CampaignWindow.Custom.cs | 25 +++ Sledgemapper/UI/MainWidget.Custom.cs | 260 +++++++++++------------ Sledgemapper/UI/SessionWindow.Custom.cs | 28 +-- 6 files changed, 375 insertions(+), 166 deletions(-) create mode 100644 Sledgemapper/UI/CampaignList.Custom.cs create mode 100644 Sledgemapper/UI/CampaignWindow.Custom.cs diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index fc4440d..d992a21 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -67,7 +67,7 @@ namespace Sledgemapper _communicationManager.Connection.Reconnected += OnHubReconnected; _communicationManager.Connection.Reconnecting += OnHubReconnecting; _communicationManager.Connection.Closed += OnHubDisconnected; - _state = new State(); + _state = State.Instance; _settings = new Settings(); _vector2Pool = ArrayPool.Create(); _messenger = new TinyMessengerHub(); @@ -198,7 +198,7 @@ namespace Sledgemapper ResetRenderTarget(); - _mainWidget = new MainWidget(_communicationManager, _state, _settings, _cachedContent, _messenger, Window); + _mainWidget = new MainWidget(_communicationManager, _settings, _cachedContent, _messenger, Window); diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 3acefc1..b4da7fb 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -5,8 +5,44 @@ using System.Collections.Generic; namespace Sledgemapper { - public class State + public sealed class State { + private static readonly State instance = new State(); + + // Explicit static constructor to tell C# compiler + // not to mark type as beforefieldinit + static State() + { + } + + private State() + { + CurrentTileId = ""; + CurrentWallId = ""; + CurrentOverlayId = ""; + SelectedTile = new() { X = 1, Y = 1 }; + HoveredTile = new() { X = 1, Y = 1 }; + SelectedWall = new() { X = 1, Y = 1 }; + SelectedOverlay = new() { X = 1, Y = 1 }; + SelectedNote = new() { X = 1, Y = 1 }; + TileSize = 30; + LineWidth = 1; + ViewportCenter = new(0, 0, 0); + } + + public static State Instance + { + get + { + return instance; + } + } + + + + + + public Tile SelectedTile { get; set; } public Tile HoveredTile { get; set; } public Wall SelectedWall { get; set; } @@ -25,20 +61,20 @@ namespace Sledgemapper public bool ShowCellNumbers { get; set; } public Vector3 ViewportCenter { get; set; } - public State() - { - CurrentTileId = ""; - CurrentWallId = ""; - CurrentOverlayId = ""; - SelectedTile = new() { X = 1, Y = 1 }; - HoveredTile = new() { X = 1, Y = 1 }; - SelectedWall = new() { X = 1, Y = 1 }; - SelectedOverlay = new() { X = 1, Y = 1 }; - SelectedNote = new() { X = 1, Y = 1 }; - TileSize = 30; - LineWidth=1; - ViewportCenter = new(0, 0, 0); - } + //public State() + //{ + // CurrentTileId = ""; + // CurrentWallId = ""; + // CurrentOverlayId = ""; + // SelectedTile = new() { X = 1, Y = 1 }; + // HoveredTile = new() { X = 1, Y = 1 }; + // SelectedWall = new() { X = 1, Y = 1 }; + // SelectedOverlay = new() { X = 1, Y = 1 }; + // SelectedNote = new() { X = 1, Y = 1 }; + // TileSize = 30; + // LineWidth=1; + // ViewportCenter = new(0, 0, 0); + //} public void SelectClosestWall(Point mousePosition) { diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs new file mode 100644 index 0000000..5845fa1 --- /dev/null +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -0,0 +1,158 @@ +using Exceptionless; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI; +using System; +using System.Threading.Tasks; +using TinyMessenger; + +namespace Sledgemapper.UI +{ + public partial class CampaignList + { + private readonly CommunicationManager CommunicationManager; + private readonly Window Window; + private readonly TinyMessengerHub Messenger; + + private Settings _settings; + + public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings) + { + BuildUI(); + CommunicationManager = communicationManager; + Window = window; + Messenger = messenger; + + _settings = settings; + BtnNewCampaign.Click += (s, e) => + { + window.Close(); + OnMenuCampaignNew(s, e); + }; + + BtnLoadCampaign.Click += (s, e) => + { + if (campaignSelected) + { + campaignSelected = false; + window.Close(); + } + }; + + BtnCancelCampaign.Click += (s, e) => + { + + Window.Close(); + }; + } + + private void OnMenuCampaignNew(object sender, EventArgs e) + { + if (sender is MenuItem && !((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "New campaign" + }; + + var content = new CampaignWindow(); + //content.BtnNewCampaign.Text = "N"; + content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + window.Content = content; + + window.ShowModal(Desktop); + content.TxtCampaign.SetKeyboardFocus(); + } + + + + private bool campaignSelected; + + + private void OnCampaignSelected(object sender, EventArgs e) + { + var item = sender as UI.ListItem; + var localContent = item.GetParentContentInWindow(); + State.Instance.CampaignName = item.ItemName.Text; + var list = item.Parent as Myra.Graphics2D.UI.Grid; + for (var i = 0; i < list.ChildrenCount; i++) + { + var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; + currentItem.Background = new SolidBrush("#D9D9D9FF"); + } + item.Background = new SolidBrush(_settings.OverlayTintColor); + campaignSelected = true; + } + + private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + { + var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + + var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); + if (!isValid) + { + return; + } + + //if (CommunicationManager.Connection.State != HubConnectionState.Connected) + //{ + // lblConnectionStatus.Text = "Connecting"; + // await CommunicationManager.Connection.StartAsync(); + // UpdateConnectionState(CommunicationManager.Connection); + //} + + var successful = false; + try + { + await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); + + //if (result) + //{ + // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + //} + //successful = result; + //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + //CommunicationManager.SessionData.SessionId = result2.SessionId; + //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + } + catch (Exception ex) + { + ExceptionlessClient.Default.SubmitException(ex); + } + + //if (successful) + //{ + // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; + // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; + // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; + // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; + // //MenuConnectSync.Enabled = true; + // //MenuConnectUpload.Enabled = true; + // localWindow.Close(); + //} + + localContent.Window.Close(); + + } + + public async Task LoadCampaigns() + { + var campaigns = await CommunicationManager.Api.GetCampaigns(); + foreach (var campaign in campaigns) + { + var item = new UI.ListItem(); + item.ItemName.Text = campaign.Name; + + item.TouchUp += OnCampaignSelected; + StackCampaignsList.AddChild(item); + } + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/CampaignWindow.Custom.cs b/Sledgemapper/UI/CampaignWindow.Custom.cs new file mode 100644 index 0000000..c940530 --- /dev/null +++ b/Sledgemapper/UI/CampaignWindow.Custom.cs @@ -0,0 +1,25 @@ +using Myra.Graphics2D.UI; +using System.Threading.Tasks; +using TinyMessenger; + +namespace Sledgemapper.UI +{ + public partial class CampaignWindow + { + private readonly CommunicationManager CommunicationManager; + private readonly Window Window; + private readonly TinyMessengerHub Messenger; + + public CampaignWindow(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger) + { + BuildUI(); + CommunicationManager = communicationManager; + Window = window; + Messenger = messenger; + + + } + + + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index aa805d4..595307d 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -20,25 +20,24 @@ namespace Sledgemapper.UI { public partial class MainWidget { - private AuthenticateResponse _authResponse; private readonly CommunicationManager CommunicationManager; - private State _state; + private Settings _settings; private readonly TinyMessengerHub _messenger; - + private readonly CachedContent _cachedContent; private readonly GameWindow Window; - public MainWidget(CommunicationManager communicationManager, State state, Settings settings, CachedContent cachedContent, TinyMessengerHub messenger, GameWindow window) + public MainWidget(CommunicationManager communicationManager, Settings settings, CachedContent cachedContent, TinyMessengerHub messenger, GameWindow window) { BuildUI(); - + CommunicationManager = communicationManager; - _state = state; + _settings = settings; _cachedContent = cachedContent; - - _messenger=messenger; + Window = window; + _messenger = messenger; MenuConnectLogin.Selected += OnMenuConnectLoginSelected; MenuConnectSync.Selected += OnMenuConnectSyncSelected; MenuFileLoad.Selected += OnMenuFileLoadSelected; @@ -63,6 +62,11 @@ namespace Sledgemapper.UI MenuConnectJoin.Enabled = false; MenuConnectSync.Enabled = false; MenuConnectUpload.Enabled = false; + MenuCampaignOpen.Enabled = false; + MenuCampaignPlayers.Enabled = false; + MenuCampaingNew.Enabled = false; + MenuMapNew.Enabled = false; + MenuMapOpen.Enabled = false; BtnToolbarLine.Click += OnBtnToolbarLinClicked; BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; @@ -74,27 +78,30 @@ namespace Sledgemapper.UI private void OnMapOpenedMessage(MapOpenedMessage obj) { lblSessionName.Text = CommunicationManager.SessionData.SessionName; - MenuConnectSync.Enabled = true; - MenuConnectUpload.Enabled = true; - CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + MenuConnectSync.Enabled = true; + MenuConnectUpload.Enabled = true; + CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; } private async void OnSignalrConnectionUpdateMessage(SignalrConnectionUpdateMessage obj) { lblConnectionStatus.Text = "Connecting"; - await CommunicationManager.Connection.StartAsync(); - UpdateConnectionState(CommunicationManager.Connection); + await CommunicationManager.Connection.StartAsync(); + UpdateConnectionState(CommunicationManager.Connection); } private void OnLoginSuccesfulMessage(LoginSuccesfulMessage obj) { - MenuConnectNew.Enabled = true; - MenuConnectJoin.Enabled = true; + MenuConnectNew.Enabled = true; + MenuConnectJoin.Enabled = true; + MenuCampaignOpen.Enabled = true; + MenuCampaignPlayers.Enabled = true; + MenuCampaingNew.Enabled = true; - lblUsername.Text = $"{_authResponse.Username} - {_authResponse.Initials}"; + lblUsername.Text = $"{obj.UserName} - {obj.Initials}"; } public void ClearSelection() @@ -127,7 +134,7 @@ namespace Sledgemapper.UI Title = "Login" }; - var content = new LoginRegisterWindow(CommunicationManager, window,_messenger); + var content = new LoginRegisterWindow(CommunicationManager, window, _messenger); window.Content = content; window.ShowModal(Desktop); } @@ -145,7 +152,7 @@ namespace Sledgemapper.UI Title = "New mapping session" }; - var content = new SessionWindow(CommunicationManager,_messenger,window, _state); + var content = new SessionWindow(CommunicationManager, _messenger, window); window.Content = content; window.ShowModal(Desktop); @@ -296,7 +303,7 @@ namespace Sledgemapper.UI private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) { - _state.ShowCellNumbers = !_state.ShowCellNumbers; + State.Instance.ShowCellNumbers = !State.Instance.ShowCellNumbers; } private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) @@ -331,16 +338,16 @@ namespace Sledgemapper.UI private void CenterOnSelectedTile() { - CenterOnTile(_state.SelectedTile.X, _state.SelectedTile.Y); + CenterOnTile(State.Instance.SelectedTile.X, State.Instance.SelectedTile.Y); } private void CenterOnTile(int x, int y) { - - var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); - var dx = center.X - x * _state.TileSize - _state.ViewportCenter.X; - var dy = center.Y - y * _state.TileSize - _state.ViewportCenter.Y; - _state.ViewportCenter = new Vector3(_state.ViewportCenter.X + dx, _state.ViewportCenter.Y + dy, _state.ViewportCenter.Z); + + var center = new Point((Window.ClientBounds.Width + 200) / 2 - State.Instance.TileSize / 2, Window.ClientBounds.Height / 2 - State.Instance.TileSize / 2); + var dx = center.X - x * State.Instance.TileSize - State.Instance.ViewportCenter.X; + var dy = center.Y - y * State.Instance.TileSize - State.Instance.ViewportCenter.Y; + State.Instance.ViewportCenter = new Vector3(State.Instance.ViewportCenter.X + dx, State.Instance.ViewportCenter.Y + dy, State.Instance.ViewportCenter.Z); } @@ -357,12 +364,12 @@ namespace Sledgemapper.UI }; var content = new CampaignWindow(); - //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; - window.Content = content; + ////content.BtnNewCampaign.Text = "N"; + //content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + //window.Content = content; - window.ShowModal(Desktop); - content.TxtCampaign.SetKeyboardFocus(); + //window.ShowModal(Desktop); + //content.TxtCampaign.SetKeyboardFocus(); } private async void OnMenuCampaignOpen(object sender, EventArgs e) @@ -377,40 +384,41 @@ namespace Sledgemapper.UI Title = "Campaigns" }; - var content = new CampaignList(); - var campaigns = await CommunicationManager.Api.GetCampaigns(); - foreach (var campaign in campaigns) - { - var item = new UI.ListItem(); - item.ItemName.Text = campaign.Name; + var content = new CampaignList(CommunicationManager, window, _messenger, _settings); + await content.LoadCampaigns(); + //var campaigns = await CommunicationManager.Api.GetCampaigns(); + //foreach (var campaign in campaigns) + //{ + // var item = new UI.ListItem(); + // item.ItemName.Text = campaign.Name; - item.TouchUp += OnCampaignSelected; - content.StackCampaignsList.AddChild(item); - } + // item.TouchUp += OnCampaignSelected; + // content.StackCampaignsList.AddChild(item); + //} //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += (s, e) => - { - window.Close(); - OnMenuCampaignNew(s, e); - }; + //content.BtnNewCampaign.Click += (s, e) => + //{ + // window.Close(); + // OnMenuCampaignNew(s, e); + //}; - content.BtnLoadCampaign.Click += (s, e) => - { - if (campaignSelected) - { - campaignSelected = false; - window.Close(); - } - }; + //content.BtnLoadCampaign.Click += (s, e) => + //{ + // if (campaignSelected) + // { + // campaignSelected = false; + // window.Close(); + // } + //}; - content.BtnCancelCampaign.Click += (s, e) => - { + //content.BtnCancelCampaign.Click += (s, e) => + //{ - window.Close(); - }; + // window.Close(); + //}; window.Content = content; @@ -418,24 +426,6 @@ namespace Sledgemapper.UI // content.TxtCampaign.SetKeyboardFocus(); } - private bool campaignSelected; - - - private void OnCampaignSelected(object sender, EventArgs e) - { - var item = sender as UI.ListItem; - var localContent = item.GetParentContentInWindow(); - _state.CampaignName = item.ItemName.Text; - var list = item.Parent as Myra.Graphics2D.UI.Grid; - for (var i = 0; i < list.ChildrenCount; i++) - { - var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; - currentItem.Background = new SolidBrush("#D9D9D9FF"); - } - item.Background = new SolidBrush(_settings.OverlayTintColor); - campaignSelected = true; - } - private void OnMapSelected(object sender, EventArgs e) { var item = sender as UI.ListItem; @@ -463,7 +453,7 @@ namespace Sledgemapper.UI }; var content = new PlayerList(); - var players = await CommunicationManager.Api.GetPlayers(_state.CampaignName); + var players = await CommunicationManager.Api.GetPlayers(State.Instance.CampaignName); foreach (var player in players) { var item = new UI.ListItem(); @@ -500,7 +490,7 @@ namespace Sledgemapper.UI }; var content = new MapList(); - var campaigns = await CommunicationManager.Api.GetMaps(_state.CampaignName); + var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName); foreach (var campaign in campaigns) { var item = new UI.ListItem(); @@ -610,7 +600,7 @@ namespace Sledgemapper.UI var successful = false; try { - await CommunicationManager.Api.InvitePlayer(_state.CampaignName, localContent.Content.TxtCampaign.Text); + await CommunicationManager.Api.InvitePlayer(State.Instance.CampaignName, localContent.Content.TxtCampaign.Text); //if (result) //{ @@ -646,64 +636,64 @@ namespace Sledgemapper.UI } - private async void OnButtonNewCampaignClicked(object sender, EventArgs e) - { - var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + //private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + //{ + // var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); - if (!isValid) - { - return; - } + // var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); + // if (!isValid) + // { + // return; + // } - //if (CommunicationManager.Connection.State != HubConnectionState.Connected) - //{ - // lblConnectionStatus.Text = "Connecting"; - // await CommunicationManager.Connection.StartAsync(); - // UpdateConnectionState(CommunicationManager.Connection); - //} + // //if (CommunicationManager.Connection.State != HubConnectionState.Connected) + // //{ + // // lblConnectionStatus.Text = "Connecting"; + // // await CommunicationManager.Connection.StartAsync(); + // // UpdateConnectionState(CommunicationManager.Connection); + // //} - var successful = false; - try - { - await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); + // var successful = false; + // try + // { + // await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); - //if (result) - //{ - // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - //} - //successful = result; - //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - //CommunicationManager.SessionData.SessionId = result2.SessionId; - //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - } - catch (Exception ex) - { - ExceptionlessClient.Default.SubmitException(ex); - } + // //if (result) + // //{ + // // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + // // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + // // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + // // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + // //} + // //successful = result; + // //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + // //CommunicationManager.SessionData.SessionId = result2.SessionId; + // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // } + // catch (Exception ex) + // { + // ExceptionlessClient.Default.SubmitException(ex); + // } - //if (successful) - //{ - // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; - // //MenuConnectSync.Enabled = true; - // //MenuConnectUpload.Enabled = true; - // localWindow.Close(); - //} + // //if (successful) + // //{ + // // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; + // // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; + // // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; + // // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; + // // //MenuConnectSync.Enabled = true; + // // //MenuConnectUpload.Enabled = true; + // // localWindow.Close(); + // //} - localContent.Window.Close(); + // localContent.Window.Close(); - } + //} private void OnBtnToolbarRoomClicked(object sender, EventArgs e) { - _state.InsertMode = InsertMode.NewRoom; + State.Instance.InsertMode = InsertMode.NewRoom; ClearSelection(); ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); @@ -712,7 +702,7 @@ namespace Sledgemapper.UI private void OnBtnToolbarLinClicked(object sender, EventArgs e) { - _state.InsertMode = InsertMode.NewLine; + State.Instance.InsertMode = InsertMode.NewLine; ClearSelection(); ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); @@ -720,7 +710,7 @@ namespace Sledgemapper.UI private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) { - _state.InsertMode = InsertMode.NewDelete; + State.Instance.InsertMode = InsertMode.NewDelete; ClearSelection(); ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); @@ -773,7 +763,7 @@ namespace Sledgemapper.UI var successful = false; try { - await CommunicationManager.Api.NewSession(_state.CampaignName, localContent.TxtCampaign.Text); + await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.TxtCampaign.Text); //if (result) //{ @@ -811,7 +801,7 @@ namespace Sledgemapper.UI //TODO Refactor private void EditNote(Note note) { - _state.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; + State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; var noteWindow = new NoteWindow(); Window window = new() @@ -833,8 +823,8 @@ namespace Sledgemapper.UI var localContent = button.GetParentContentInWindow(); var note = new Note { - X = _state.SelectedNote.X, - Y = _state.SelectedNote.Y, + X = State.Instance.SelectedNote.X, + Y = State.Instance.SelectedNote.Y, Text = localContent.Content.NoteText.Text }; CommunicationManager.SessionData.NewNote(note); diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs index 842af8a..e202408 100644 --- a/Sledgemapper/UI/SessionWindow.Custom.cs +++ b/Sledgemapper/UI/SessionWindow.Custom.cs @@ -8,25 +8,25 @@ using TinyMessenger; namespace Sledgemapper.UI { - public partial class SessionWindow - { - + public partial class SessionWindow + { + private readonly CommunicationManager CommunicationManager; private readonly Window Window; private readonly TinyMessengerHub Messenger; - private readonly State State; - public SessionWindow(CommunicationManager communicationManager, TinyMessengerHub messenger, Window window, State state) + + public SessionWindow(CommunicationManager communicationManager, TinyMessengerHub messenger, Window window) { - BuildUI(); - CommunicationManager=communicationManager; - Messenger=messenger; - State=state; + BuildUI(); + CommunicationManager = communicationManager; + Messenger = messenger; + Window = window; BtnLogin.Text = "Join"; BtnLogin.Click += OnButtonNewSessionClicked; - } + } - private async void OnButtonNewSessionClicked(object sender, EventArgs e) + private async void OnButtonNewSessionClicked(object sender, EventArgs e) { var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; @@ -44,7 +44,7 @@ namespace Sledgemapper.UI var successful = false; try { - var result = await CommunicationManager.Api.NewSession(State.CampaignName, localContent.Content.TxtSession.Text); + var result = await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.Content.TxtSession.Text); if (result) { @@ -67,9 +67,9 @@ namespace Sledgemapper.UI CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - + localContent.Window.Close(); } } - } + } } \ No newline at end of file From dd97d5ec4ef66ba6718c3f0fa9f2f4e8dd02c784 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Wed, 15 Sep 2021 16:11:40 +0100 Subject: [PATCH 43/81] switch to sentry --- Sledgemapper/ChannelsQueue.cs | 5 ++--- Sledgemapper/Program.cs | 13 +++---------- Sledgemapper/Settings.cs | 3 +-- Sledgemapper/Sledgemapper.cs | 10 ++++------ Sledgemapper/Sledgemapper.csproj | 2 +- Sledgemapper/UI/CampaignList.Custom.cs | 3 +-- Sledgemapper/UI/LoginRegisterWindow.Custom.cs | 9 ++++----- Sledgemapper/UI/MainWidget.Custom.cs | 5 ++--- Sledgemapper/UI/SessionWindow.Custom.cs | 3 +-- 9 files changed, 19 insertions(+), 34 deletions(-) diff --git a/Sledgemapper/ChannelsQueue.cs b/Sledgemapper/ChannelsQueue.cs index 5515c41..e5ed66d 100644 --- a/Sledgemapper/ChannelsQueue.cs +++ b/Sledgemapper/ChannelsQueue.cs @@ -1,8 +1,7 @@ using System; using System.Threading.Tasks; using System.Threading.Channels; -using Exceptionless; -using Exceptionless.Models; + namespace Sledgemapper { @@ -29,7 +28,7 @@ namespace Sledgemapper } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); throw; } } diff --git a/Sledgemapper/Program.cs b/Sledgemapper/Program.cs index c61c5d3..0ab8046 100644 --- a/Sledgemapper/Program.cs +++ b/Sledgemapper/Program.cs @@ -1,5 +1,4 @@ -using System; -using Exceptionless; +using System; namespace Sledgemapper { @@ -8,14 +7,8 @@ namespace Sledgemapper [STAThread] static void Main() { - ExceptionlessClient.Default.Configuration.ServerUrl = "https://exceptionless.michelescandura.com"; - -#if DEBUG - ExceptionlessClient.Default.Startup("Qvdn6odZRJyGNnorjayMkiwjVsnAK3rNkFtn9bvL"); - #else - ExceptionlessClient.Default.Startup("uprV1LocxAlUPPC9oB4eOlt8jGZ5WypMZKdJCsdL"); -#endif - + + using(Sentry.SentrySdk.Init("https://973ac1606651454ba7a19f642d0a9bc1@glitchtip.michelescandura.com/1")) using (var game = new Sledgemapper()) game.Run(); } diff --git a/Sledgemapper/Settings.cs b/Sledgemapper/Settings.cs index 3188725..80ce9f9 100644 --- a/Sledgemapper/Settings.cs +++ b/Sledgemapper/Settings.cs @@ -1,5 +1,4 @@ using System; -using Exceptionless; using Microsoft.Xna.Framework; namespace Sledgemapper @@ -28,7 +27,7 @@ namespace Sledgemapper } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); MachineName = "n/a"; } } diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index d992a21..9d5217c 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -1,5 +1,3 @@ -using Exceptionless; -using Exceptionless.Models; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; @@ -75,27 +73,27 @@ namespace Sledgemapper private async Task OnHubDisconnected(Exception arg) { - ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub disconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); +// ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub disconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); _mainWidget.lblConnectionStatus.Text = "Disconnected"; await Task.Yield(); } private async Task OnHubReconnecting(Exception arg) { - ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Reconnecting Hub", Type = "SignalR Client Events", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Reconnecting Hub", Type = "SignalR Client Events", Source = _settings.MachineName }); _mainWidget.lblConnectionStatus.Text = "Reconnecting"; await Task.Yield(); } private async Task OnHubReconnected(string arg) { - ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); _mainWidget.lblConnectionStatus.Text = "Connected"; await Task.Yield(); } protected override void Initialize() { - ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Initialize", Type = "AppLifecycle", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Initialize", Type = "AppLifecycle", Source = _settings.MachineName }); IsMouseVisible = true; Window.AllowUserResizing = true; Window.ClientSizeChanged += OnClientSizeChanged; diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 6d54606..3fdf47d 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -42,7 +42,6 @@ --> - @@ -55,6 +54,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 5845fa1..2fa16ef 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -1,4 +1,3 @@ -using Exceptionless; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; using System; @@ -123,7 +122,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); } //if (successful) diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index c022a91..4c14328 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -1,7 +1,6 @@ using System; using System.Diagnostics; using System.Linq; -using Exceptionless; using Microsoft.Xna.Framework; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; @@ -122,13 +121,13 @@ namespace Sledgemapper.UI } catch (Refit.ApiException refitException) { - ExceptionlessClient.Default.SubmitException(refitException); + //ExceptionlessClient.Default.SubmitException(refitException); LblLoginError.Text = refitException.Content; LblLoginError.Visible = true; } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); LblLoginError.Text = "Can't connect to the server"; LblLoginError.Visible = true; Debug.Write(ex); @@ -190,13 +189,13 @@ namespace Sledgemapper.UI } catch (Refit.ApiException refitException) { - ExceptionlessClient.Default.SubmitException(refitException); + //ExceptionlessClient.Default.SubmitException(refitException); localContent.LblLoginError.Text = refitException.Content; localContent.LblLoginError.Visible = true; } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); localContent.LblLoginError.Text = "Can't connect to the server"; localContent.LblLoginError.Visible = true; Debug.Write(ex); diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 595307d..df9a555 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -1,4 +1,3 @@ -using Exceptionless; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; @@ -617,7 +616,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + Sentry.SentrySdk.CaptureException(ex); } //if (successful) @@ -780,7 +779,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); } //if (successful) diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs index e202408..d9ce8b5 100644 --- a/Sledgemapper/UI/SessionWindow.Custom.cs +++ b/Sledgemapper/UI/SessionWindow.Custom.cs @@ -1,6 +1,5 @@ /* Generated by MyraPad at 10/11/2020 10:59:36 */ using System; -using Exceptionless; using Microsoft.AspNetCore.SignalR.Client; using Myra.Graphics2D.UI; using Sledgemapper.Shared.Entities; @@ -58,7 +57,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - ExceptionlessClient.Default.SubmitException(ex); + //ExceptionlessClient.Default.SubmitException(ex); } if (successful) From b8d27a2a6fc2bf4e226a82d3496039c4520f34f8 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Wed, 15 Sep 2021 16:54:41 +0100 Subject: [PATCH 44/81] ui --- Sledgemapper/Sledgemapper.csproj | 139 ++++++++++-------- Sledgemapper/UI/CampaignList.Custom.cs | 110 +++++++------- .../{campaignsList.xmmp => CampaignList.xmmp} | 0 Sledgemapper/UI/CampaignWindow.Custom.cs | 59 +++++++- Sledgemapper/UI/MainWidget.Custom.cs | 6 +- .../{mainwidget.xmmp => MainWidget.UI.xmmp} | 0 6 files changed, 191 insertions(+), 123 deletions(-) rename Sledgemapper/UI/{campaignsList.xmmp => CampaignList.xmmp} (100%) rename Sledgemapper/UI/{mainwidget.xmmp => MainWidget.UI.xmmp} (100%) diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 3fdf47d..3374495 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -1,14 +1,14 @@ - - - Exe - net5.0 - false - false - false - - <_ExtraTrimmerArgs>$(_ExtraTrimmerArgs) --verbose - - + <_ExtraTrimmerArgs>$(_ExtraTrimmerArgs) --verbose + + - - app.manifest - Icon.ico - - - DEBUG;TRACE - - - TRACE - - - - - - - - - - - - - - - - - - - - - 6.0.0-preview.7.21378.6 - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - PreserveNewest - - - - - + + + + + + + + 6.0.0-preview.7.21378.6 + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + PreserveNewest + + + + + + + + \ No newline at end of file diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 2fa16ef..534eebd 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -11,16 +11,16 @@ namespace Sledgemapper.UI private readonly CommunicationManager CommunicationManager; private readonly Window Window; private readonly TinyMessengerHub Messenger; - + private readonly Desktop Desktop; private Settings _settings; - public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings) + public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings, Desktop desktop) { BuildUI(); CommunicationManager = communicationManager; Window = window; Messenger = messenger; - + Desktop= desktop; _settings = settings; BtnNewCampaign.Click += (s, e) => { @@ -56,13 +56,13 @@ namespace Sledgemapper.UI Title = "New campaign" }; - var content = new CampaignWindow(); + var content = new CampaignWindow(CommunicationManager,window,Messenger); //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; + //content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; window.Content = content; - window.ShowModal(Desktop); - content.TxtCampaign.SetKeyboardFocus(); + window.ShowModal(desktop); + //content.TxtCampaign.SetKeyboardFocus(); } @@ -85,61 +85,61 @@ namespace Sledgemapper.UI campaignSelected = true; } - private async void OnButtonNewCampaignClicked(object sender, EventArgs e) - { - var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + //private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + //{ + // var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); - if (!isValid) - { - return; - } + // var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); + // if (!isValid) + // { + // return; + // } - //if (CommunicationManager.Connection.State != HubConnectionState.Connected) - //{ - // lblConnectionStatus.Text = "Connecting"; - // await CommunicationManager.Connection.StartAsync(); - // UpdateConnectionState(CommunicationManager.Connection); - //} + // //if (CommunicationManager.Connection.State != HubConnectionState.Connected) + // //{ + // // lblConnectionStatus.Text = "Connecting"; + // // await CommunicationManager.Connection.StartAsync(); + // // UpdateConnectionState(CommunicationManager.Connection); + // //} - var successful = false; - try - { - await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); + // var successful = false; + // try + // { + // await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); - //if (result) - //{ - // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - //} - //successful = result; - //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - //CommunicationManager.SessionData.SessionId = result2.SessionId; - //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - } - catch (Exception ex) - { - //ExceptionlessClient.Default.SubmitException(ex); - } + // //if (result) + // //{ + // // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + // // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + // // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + // // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + // //} + // //successful = result; + // //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + // //CommunicationManager.SessionData.SessionId = result2.SessionId; + // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // } + // catch (Exception ex) + // { + // //ExceptionlessClient.Default.SubmitException(ex); + // } - //if (successful) - //{ - // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; - // //MenuConnectSync.Enabled = true; - // //MenuConnectUpload.Enabled = true; - // localWindow.Close(); - //} + // //if (successful) + // //{ + // // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; + // // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; + // // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; + // // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; + // // //MenuConnectSync.Enabled = true; + // // //MenuConnectUpload.Enabled = true; + // // localWindow.Close(); + // //} - localContent.Window.Close(); + // localContent.Window.Close(); - } + //} public async Task LoadCampaigns() { diff --git a/Sledgemapper/UI/campaignsList.xmmp b/Sledgemapper/UI/CampaignList.xmmp similarity index 100% rename from Sledgemapper/UI/campaignsList.xmmp rename to Sledgemapper/UI/CampaignList.xmmp diff --git a/Sledgemapper/UI/CampaignWindow.Custom.cs b/Sledgemapper/UI/CampaignWindow.Custom.cs index c940530..48962bb 100644 --- a/Sledgemapper/UI/CampaignWindow.Custom.cs +++ b/Sledgemapper/UI/CampaignWindow.Custom.cs @@ -1,4 +1,5 @@ using Myra.Graphics2D.UI; +using System; using System.Threading.Tasks; using TinyMessenger; @@ -16,10 +17,64 @@ namespace Sledgemapper.UI CommunicationManager = communicationManager; Window = window; Messenger = messenger; + BtnNewCampaign.Click += OnButtonNewCampaignClicked; - } + private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + { + //var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - } + var isValid = TxtCampaign.ValidateTextbox(); + if (!isValid) + { + return; + } + + //if (CommunicationManager.Connection.State != HubConnectionState.Connected) + //{ + // lblConnectionStatus.Text = "Connecting"; + // await CommunicationManager.Connection.StartAsync(); + // UpdateConnectionState(CommunicationManager.Connection); + //} + + var successful = false; + try + { + await CommunicationManager.Api.NewCampaign(TxtCampaign.Text); + + //if (result) + //{ + // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + //} + //successful = result; + //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); + //CommunicationManager.SessionData.SessionId = result2.SessionId; + //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + } + catch (Exception ex) + { + //ExceptionlessClient.Default.SubmitException(ex); + } + + //if (successful) + //{ + // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; + // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; + // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; + // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; + // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; + // //MenuConnectSync.Enabled = true; + // //MenuConnectUpload.Enabled = true; + // localWindow.Close(); + //} + + Window.Close(); + + } + } } \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index df9a555..35aa282 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -20,7 +20,7 @@ namespace Sledgemapper.UI public partial class MainWidget { private readonly CommunicationManager CommunicationManager; - + private Settings _settings; private readonly TinyMessengerHub _messenger; @@ -32,7 +32,7 @@ namespace Sledgemapper.UI BuildUI(); CommunicationManager = communicationManager; - + _settings = settings; _cachedContent = cachedContent; Window = window; @@ -383,7 +383,7 @@ namespace Sledgemapper.UI Title = "Campaigns" }; - var content = new CampaignList(CommunicationManager, window, _messenger, _settings); + var content = new CampaignList(CommunicationManager, window, _messenger, _settings, Desktop); await content.LoadCampaigns(); //var campaigns = await CommunicationManager.Api.GetCampaigns(); //foreach (var campaign in campaigns) diff --git a/Sledgemapper/UI/mainwidget.xmmp b/Sledgemapper/UI/MainWidget.UI.xmmp similarity index 100% rename from Sledgemapper/UI/mainwidget.xmmp rename to Sledgemapper/UI/MainWidget.UI.xmmp From 98e5f6bc8973e27cdfaff8058ca59b7809649da9 Mon Sep 17 00:00:00 2001 From: Michele Date: Wed, 15 Sep 2021 23:28:30 +0100 Subject: [PATCH 45/81] still moving code around --- Sledgemapper/CachedContent.cs | 23 ++ .../Messages/LoginSuccessfulMessage.cs | 10 + Sledgemapper/Sledgemapper.cs | 12 +- Sledgemapper/UI/CampaignList.Custom.cs | 14 +- Sledgemapper/UI/ListItem.Custom.cs | 8 + Sledgemapper/UI/MainWidget.Custom.cs | 218 ++---------------- Sledgemapper/UI/NoteList.Custom.cs | 56 +++++ Sledgemapper/UI/NoteWindow.Custom.cs | 45 ++++ 8 files changed, 168 insertions(+), 218 deletions(-) create mode 100644 Sledgemapper/UI/ListItem.Custom.cs create mode 100644 Sledgemapper/UI/NoteList.Custom.cs create mode 100644 Sledgemapper/UI/NoteWindow.Custom.cs diff --git a/Sledgemapper/CachedContent.cs b/Sledgemapper/CachedContent.cs index d9596a9..62bf345 100644 --- a/Sledgemapper/CachedContent.cs +++ b/Sledgemapper/CachedContent.cs @@ -9,6 +9,29 @@ namespace Sledgemapper { public class CachedContent { + private static readonly CachedContent instance = new CachedContent(); + + // Explicit static constructor to tell C# compiler + // not to mark type as beforefieldinit + static CachedContent() + { + } + + private CachedContent() + { + + } + + public static CachedContent Instance + { + get + { + return instance; + } + } + + + public Texture2D Eye { get; set; } public Texture2D Location { get; set; } } diff --git a/Sledgemapper/Messages/LoginSuccessfulMessage.cs b/Sledgemapper/Messages/LoginSuccessfulMessage.cs index ad1ff3b..f44a8ad 100644 --- a/Sledgemapper/Messages/LoginSuccessfulMessage.cs +++ b/Sledgemapper/Messages/LoginSuccessfulMessage.cs @@ -13,4 +13,14 @@ public class MapOpenedMessage : TinyMessenger.TinyMessageBase public MapOpenedMessage(object sender) : base(sender) { } +} + +public class CenterOnTileMessage : TinyMessenger.TinyMessageBase +{ + public CenterOnTileMessage(object sender) : base(sender) + { + } + + public int X { get; internal set; } + public int Y { get; internal set; } } \ No newline at end of file diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 9d5217c..7e080d6 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -73,27 +73,27 @@ namespace Sledgemapper private async Task OnHubDisconnected(Exception arg) { -// ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub disconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub disconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); _mainWidget.lblConnectionStatus.Text = "Disconnected"; await Task.Yield(); } private async Task OnHubReconnecting(Exception arg) { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Reconnecting Hub", Type = "SignalR Client Events", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Reconnecting Hub", Type = "SignalR Client Events", Source = _settings.MachineName }); _mainWidget.lblConnectionStatus.Text = "Reconnecting"; await Task.Yield(); } private async Task OnHubReconnected(string arg) { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); _mainWidget.lblConnectionStatus.Text = "Connected"; await Task.Yield(); } protected override void Initialize() { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Initialize", Type = "AppLifecycle", Source = _settings.MachineName }); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Initialize", Type = "AppLifecycle", Source = _settings.MachineName }); IsMouseVisible = true; Window.AllowUserResizing = true; Window.ClientSizeChanged += OnClientSizeChanged; @@ -189,14 +189,14 @@ namespace Sledgemapper protected override void LoadContent() { _spriteBatch = new SpriteBatch(GraphicsDevice); - _cachedContent = new CachedContent(); + _cachedContent = CachedContent.Instance; outlineShader = Content.Load("shaders/OutlineShader"); MyraEnvironment.Game = this; ResetRenderTarget(); - _mainWidget = new MainWidget(_communicationManager, _settings, _cachedContent, _messenger, Window); + _mainWidget = new MainWidget(_communicationManager, _settings, _messenger, Window); diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 534eebd..5dc34bf 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -6,21 +6,21 @@ using TinyMessenger; namespace Sledgemapper.UI { - public partial class CampaignList - { + public partial class CampaignList + { private readonly CommunicationManager CommunicationManager; private readonly Window Window; private readonly TinyMessengerHub Messenger; private readonly Desktop Desktop; private Settings _settings; - public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings, Desktop desktop) + public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings, Desktop desktop) { BuildUI(); CommunicationManager = communicationManager; Window = window; Messenger = messenger; - Desktop= desktop; + Desktop = desktop; _settings = settings; BtnNewCampaign.Click += (s, e) => { @@ -56,16 +56,16 @@ namespace Sledgemapper.UI Title = "New campaign" }; - var content = new CampaignWindow(CommunicationManager,window,Messenger); + var content = new CampaignWindow(CommunicationManager, window, Messenger); //content.BtnNewCampaign.Text = "N"; //content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; window.Content = content; - window.ShowModal(desktop); + window.ShowModal(Desktop); //content.TxtCampaign.SetKeyboardFocus(); } - + private bool campaignSelected; diff --git a/Sledgemapper/UI/ListItem.Custom.cs b/Sledgemapper/UI/ListItem.Custom.cs new file mode 100644 index 0000000..34ead63 --- /dev/null +++ b/Sledgemapper/UI/ListItem.Custom.cs @@ -0,0 +1,8 @@ +/* Generated by MyraPad at 03/09/2021 16:19:13 */ +namespace Sledgemapper.UI +{ + public partial class ListItem + { + + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 35aa282..0daa124 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -24,17 +24,15 @@ namespace Sledgemapper.UI private Settings _settings; private readonly TinyMessengerHub _messenger; - private readonly CachedContent _cachedContent; private readonly GameWindow Window; - public MainWidget(CommunicationManager communicationManager, Settings settings, CachedContent cachedContent, TinyMessengerHub messenger, GameWindow window) + public MainWidget(CommunicationManager communicationManager, Settings settings, TinyMessengerHub messenger, GameWindow window) { BuildUI(); CommunicationManager = communicationManager; _settings = settings; - _cachedContent = cachedContent; Window = window; _messenger = messenger; MenuConnectLogin.Selected += OnMenuConnectLoginSelected; @@ -72,6 +70,13 @@ namespace Sledgemapper.UI _messenger.Subscribe(OnLoginSuccesfulMessage); _messenger.Subscribe(OnSignalrConnectionUpdateMessage); _messenger.Subscribe(OnMapOpenedMessage); + _messenger.Subscribe(OnCenterOnTileMessage); + } + + private void OnCenterOnTileMessage(CenterOnTileMessage obj) + { + CenterOnTile(obj.X, obj.Y); + } private void OnMapOpenedMessage(MapOpenedMessage obj) @@ -290,14 +295,11 @@ namespace Sledgemapper.UI Title = "Join mapping session" }; - var content = new SessionWindow(); - content.BtnLogin.Text = "Join"; - content.BtnLogin.Click += OnButtonJoinSessionClicked; + var content = new SessionWindow(CommunicationManager, _messenger, window); window.Content = content; window.ShowModal(Desktop); - content.TxtSession.SetKeyboardFocus(); } private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) @@ -317,15 +319,15 @@ namespace Sledgemapper.UI Title = "Notes" }; - var content = new NoteList(); + var content = new NoteList(CommunicationManager, _messenger, window); for (var i = 0; i < CommunicationManager.SessionData.Notes.Values.Count; i++) { var note = CommunicationManager.SessionData.Notes.Values.ElementAt(i); var item = new NoteListItem(); item.LblNoteText.Text = $"{note.ToString()} - {note.Text}"; - item.BtnNoteCenter.Image = new TextureRegion(_cachedContent.Location); - item.BtnNoteView.Image = new TextureRegion(_cachedContent.Eye); + item.BtnNoteCenter.Image = new TextureRegion(CachedContent.Instance.Location); + item.BtnNoteView.Image = new TextureRegion(CachedContent.Instance.Eye); item.BtnNoteCenter.Click += (s, e) => { CenterOnTile(note.X, note.Y); }; item.BtnNoteView.Click += (s, e) => { EditNote(note); window.Close(); }; content.StackNotesList.AddChild(item); @@ -363,12 +365,6 @@ namespace Sledgemapper.UI }; var content = new CampaignWindow(); - ////content.BtnNewCampaign.Text = "N"; - //content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; - //window.Content = content; - - //window.ShowModal(Desktop); - //content.TxtCampaign.SetKeyboardFocus(); } private async void OnMenuCampaignOpen(object sender, EventArgs e) @@ -385,44 +381,10 @@ namespace Sledgemapper.UI var content = new CampaignList(CommunicationManager, window, _messenger, _settings, Desktop); await content.LoadCampaigns(); - //var campaigns = await CommunicationManager.Api.GetCampaigns(); - //foreach (var campaign in campaigns) - //{ - // var item = new UI.ListItem(); - // item.ItemName.Text = campaign.Name; - - // item.TouchUp += OnCampaignSelected; - // content.StackCampaignsList.AddChild(item); - //} - //content.BtnNewCampaign.Text = "N"; - - - - //content.BtnNewCampaign.Click += (s, e) => - //{ - // window.Close(); - // OnMenuCampaignNew(s, e); - //}; - - //content.BtnLoadCampaign.Click += (s, e) => - //{ - // if (campaignSelected) - // { - // campaignSelected = false; - // window.Close(); - // } - //}; - - //content.BtnCancelCampaign.Click += (s, e) => - //{ - - // window.Close(); - //}; window.Content = content; window.ShowModal(Desktop); - // content.TxtCampaign.SetKeyboardFocus(); } private void OnMapSelected(object sender, EventArgs e) @@ -461,9 +423,6 @@ namespace Sledgemapper.UI content.StackCampaignsList.AddChild(item); } - //content.BtnNewCampaign.Text = "N"; - - content.BtnInvitePlayer.Click += (s, e) => { @@ -474,7 +433,6 @@ namespace Sledgemapper.UI window.Content = content; window.ShowModal(Desktop); - // content.TxtCampaign.SetKeyboardFocus(); } private async void OnMenuMapOpen(object sender, EventArgs e) { @@ -497,9 +455,6 @@ namespace Sledgemapper.UI item.TouchUp += OnMapSelected; content.StackCampaignsList.AddChild(item); } - //content.BtnNewCampaign.Text = "N"; - - content.BtnNewCampaign.Click += (s, e) => { @@ -510,7 +465,6 @@ namespace Sledgemapper.UI window.Content = content; window.ShowModal(Desktop); - // content.TxtCampaign.SetKeyboardFocus(); } private void ShowAddPLayerWindow() @@ -589,107 +543,19 @@ namespace Sledgemapper.UI return; } - //if (CommunicationManager.Connection.State != HubConnectionState.Connected) - //{ - // lblConnectionStatus.Text = "Connecting"; - // await CommunicationManager.Connection.StartAsync(); - // UpdateConnectionState(CommunicationManager.Connection); - //} - var successful = false; try { await CommunicationManager.Api.InvitePlayer(State.Instance.CampaignName, localContent.Content.TxtCampaign.Text); - - //if (result) - //{ - // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - //} - //successful = result; - //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - //CommunicationManager.SessionData.SessionId = result2.SessionId; - //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; } catch (Exception ex) { Sentry.SentrySdk.CaptureException(ex); } - - //if (successful) - //{ - // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; - // //MenuConnectSync.Enabled = true; - // //MenuConnectUpload.Enabled = true; - // localWindow.Close(); - //} - localContent.Window.Close(); } - //private async void OnButtonNewCampaignClicked(object sender, EventArgs e) - //{ - // var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - - // var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); - // if (!isValid) - // { - // return; - // } - - // //if (CommunicationManager.Connection.State != HubConnectionState.Connected) - // //{ - // // lblConnectionStatus.Text = "Connecting"; - // // await CommunicationManager.Connection.StartAsync(); - // // UpdateConnectionState(CommunicationManager.Connection); - // //} - - // var successful = false; - // try - // { - // await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); - - // //if (result) - // //{ - // // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - // // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - // // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - // // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - // //} - // //successful = result; - // //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - // //CommunicationManager.SessionData.SessionId = result2.SessionId; - // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // } - // catch (Exception ex) - // { - // ExceptionlessClient.Default.SubmitException(ex); - // } - - // //if (successful) - // //{ - // // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - // // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - // // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - // // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; - // // //MenuConnectSync.Enabled = true; - // // //MenuConnectUpload.Enabled = true; - // // localWindow.Close(); - // //} - - // localContent.Window.Close(); - - //} private void OnBtnToolbarRoomClicked(object sender, EventArgs e) { State.Instance.InsertMode = InsertMode.NewRoom; @@ -752,48 +618,17 @@ namespace Sledgemapper.UI return; } - //if (CommunicationManager.Connection.State != HubConnectionState.Connected) - //{ - // lblConnectionStatus.Text = "Connecting"; - // await CommunicationManager.Connection.StartAsync(); - // UpdateConnectionState(CommunicationManager.Connection); - //} - var successful = false; try { await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.TxtCampaign.Text); - //if (result) - //{ - // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - //} - //successful = result; - //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - //CommunicationManager.SessionData.SessionId = result2.SessionId; - //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; } catch (Exception ex) { //ExceptionlessClient.Default.SubmitException(ex); } - //if (successful) - //{ - // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; - // //MenuConnectSync.Enabled = true; - // //MenuConnectUpload.Enabled = true; - // localWindow.Close(); - //} - localWindow.Close(); } @@ -801,41 +636,14 @@ namespace Sledgemapper.UI private void EditNote(Note note) { State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; - var noteWindow = new NoteWindow(); - Window window = new() { Title = $" Note on {note.X}:{note.Y}" }; - noteWindow.NoteText.Text = note.Text; - noteWindow.BtnOk.Click += OnButtonNoteOkClick; - noteWindow.BtnCancel.Click += OnButtonNoteCancelClick; + var noteWindow = new NoteWindow(CommunicationManager, window, note); window.Content = noteWindow; window.ShowModal(Desktop); - noteWindow.NoteText.SetKeyboardFocus(); } - - private void OnButtonNoteOkClick(object sender, EventArgs e) - { - var button = ((TextButton)sender); - var localContent = button.GetParentContentInWindow(); - var note = new Note - { - X = State.Instance.SelectedNote.X, - Y = State.Instance.SelectedNote.Y, - Text = localContent.Content.NoteText.Text - }; - CommunicationManager.SessionData.NewNote(note); - localContent.Window.Close(); - } - - private void OnButtonNoteCancelClick(object sender, EventArgs e) - { - var button = ((TextButton)sender); - var content = button.GetParentContentInWindow(); - content.Window.Close(); - } - } } \ No newline at end of file diff --git a/Sledgemapper/UI/NoteList.Custom.cs b/Sledgemapper/UI/NoteList.Custom.cs new file mode 100644 index 0000000..f937b11 --- /dev/null +++ b/Sledgemapper/UI/NoteList.Custom.cs @@ -0,0 +1,56 @@ +/* Generated by MyraPad at 01/12/2020 11:46:54 */ +using System.Linq; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Sledgemapper.Shared.Entities; +using TinyMessenger; + +namespace Sledgemapper.UI +{ + public partial class NoteList + { + private readonly CommunicationManager CommunicationManager; + private readonly Window Window; + private readonly TinyMessengerHub Messenger; + + + public NoteList(CommunicationManager communicationManager, TinyMessengerHub messenger, Window window) + { + BuildUI(); + CommunicationManager = communicationManager; + Messenger = messenger; + Window = window; + for (var i = 0; i < CommunicationManager.SessionData.Notes.Values.Count; i++) + { + var note = CommunicationManager.SessionData.Notes.Values.ElementAt(i); + var item = new NoteListItem(); + item.LblNoteText.Text = $"{note.ToString()} - {note.Text}"; + item.BtnNoteCenter.Image = new TextureRegion(CachedContent.Instance.Location); + item.BtnNoteView.Image = new TextureRegion(CachedContent.Instance.Eye); + item.BtnNoteCenter.Click += (s, e) => + { + Messenger.Publish(new CenterOnTileMessage(this) { X = note.X, Y = note.Y }); + }; + + item.BtnNoteView.Click += (s, e) => { EditNote(note); window.Close(); }; + StackNotesList.AddChild(item); + } + } + private void EditNote(Note note) + { + State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; + Window window = new() + { + Title = $" Note on {note.X}:{note.Y}" + }; + var noteWindow = new NoteWindow(CommunicationManager, window, note); + + + + + window.Content = noteWindow; + window.ShowModal(Desktop); + //noteWindow.NoteText.SetKeyboardFocus(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/NoteWindow.Custom.cs b/Sledgemapper/UI/NoteWindow.Custom.cs new file mode 100644 index 0000000..c9b9843 --- /dev/null +++ b/Sledgemapper/UI/NoteWindow.Custom.cs @@ -0,0 +1,45 @@ +/* Generated by MyraPad at 29/11/2020 23:50:42 */ +using System; +using Myra.Graphics2D.UI; +using Sledgemapper.Shared.Entities; + +namespace Sledgemapper.UI +{ + public partial class NoteWindow + { + private readonly Window Window; + private readonly CommunicationManager CommunicationManager; + private readonly Note Note; + public NoteWindow(CommunicationManager communicationManager, Window window, Note note) + { + BuildUI(); + NoteText.Text = note.Text; + Note = note; + Window = window; + CommunicationManager = communicationManager; + BtnOk.Click += OnButtonNoteOkClick; + BtnCancel.Click += OnButtonNoteCancelClick; + } + + private void OnButtonNoteOkClick(object sender, EventArgs e) + { + var button = ((TextButton)sender); + var localContent = button.GetParentContentInWindow(); + var note = new Note + { + X = State.Instance.SelectedNote.X, + Y = State.Instance.SelectedNote.Y, + Text = localContent.Content.NoteText.Text + }; + CommunicationManager.SessionData.NewNote(note); + localContent.Window.Close(); + } + + private void OnButtonNoteCancelClick(object sender, EventArgs e) + { + var button = ((TextButton)sender); + var content = button.GetParentContentInWindow(); + content.Window.Close(); + } + } +} \ No newline at end of file From b671c661a72508883a0673678d22258d0a7c607b Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 10:30:44 +0100 Subject: [PATCH 46/81] cleanup and sentry integration --- .../Controllers/CampaignController.cs | 2 -- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 1 - .../20210219223114_InitialCreate.cs | 3 +- Sledgemapper.Api/Startup.cs | 1 - Sledgemapper.Shared/Entities/Tile.cs | 1 - Sledgemapper/CachedContent.cs | 5 --- Sledgemapper/ChannelsQueue.cs | 4 +-- Sledgemapper/CommunicationManager.cs | 2 -- Sledgemapper/IMapApi.cs | 1 - Sledgemapper/Messages/CenterOnTileMessage.cs | 12 +++++++ .../Messages/LoginSuccessfulMessage.cs | 30 +++++----------- Sledgemapper/Messages/MapOpenedMessage.cs | 9 +++++ .../SignalrConnectionUpdateMessage.cs | 11 +++--- Sledgemapper/Settings.cs | 21 +++++++++-- Sledgemapper/Sledgemapper.cs | 36 ++++++++----------- Sledgemapper/State.cs | 1 - Sledgemapper/UI/CampaignWindow.Custom.cs | 5 +-- Sledgemapper/UI/LoginRegisterWindow.Custom.cs | 5 ++- Sledgemapper/UI/MainWidget.Custom.cs | 21 +++++------ Sledgemapper/UI/NoteList.Custom.cs | 1 + Sledgemapper/UI/SessionWindow.Custom.cs | 5 ++- 21 files changed, 89 insertions(+), 88 deletions(-) create mode 100644 Sledgemapper/Messages/CenterOnTileMessage.cs create mode 100644 Sledgemapper/Messages/MapOpenedMessage.cs diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index c67310e..013e6a8 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -3,9 +3,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Notifications; using Sledgemapper.Shared.Entities; -using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 2fcb6b4..ffd91d9 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -9,7 +9,6 @@ using System; using Sledgemapper.Api.Infrastructure.Data; using Microsoft.AspNetCore.Authorization; using Sledgemapper.Api.Models; -using Sledgemapper.Helpers; namespace Sledgemapper.Api.Hubs { diff --git a/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs b/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs index 06c8d02..81e0648 100644 --- a/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs +++ b/Sledgemapper.Api/Migrations/20210219223114_InitialCreate.cs @@ -1,5 +1,4 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Sledgemapper.Api.Migrations { diff --git a/Sledgemapper.Api/Startup.cs b/Sledgemapper.Api/Startup.cs index 5e162ea..eda24ad 100644 --- a/Sledgemapper.Api/Startup.cs +++ b/Sledgemapper.Api/Startup.cs @@ -7,7 +7,6 @@ using Sledgemapper.Api.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using MediatR; using Microsoft.IdentityModel.Tokens; -using Sledgemapper.Helpers; using Microsoft.AspNetCore.Authentication.JwtBearer; using System.Text; using Sledgemapper.Api.Hubs; diff --git a/Sledgemapper.Shared/Entities/Tile.cs b/Sledgemapper.Shared/Entities/Tile.cs index f1e21e1..aeace6a 100644 --- a/Sledgemapper.Shared/Entities/Tile.cs +++ b/Sledgemapper.Shared/Entities/Tile.cs @@ -1,5 +1,4 @@ using System; -using System.Security.Cryptography; namespace Sledgemapper.Shared.Entities { diff --git a/Sledgemapper/CachedContent.cs b/Sledgemapper/CachedContent.cs index 62bf345..61c0c86 100644 --- a/Sledgemapper/CachedContent.cs +++ b/Sledgemapper/CachedContent.cs @@ -1,9 +1,4 @@ using Microsoft.Xna.Framework.Graphics; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Sledgemapper { diff --git a/Sledgemapper/ChannelsQueue.cs b/Sledgemapper/ChannelsQueue.cs index e5ed66d..f072d7b 100644 --- a/Sledgemapper/ChannelsQueue.cs +++ b/Sledgemapper/ChannelsQueue.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; using System.Threading.Channels; - +using Sentry; namespace Sledgemapper { @@ -28,7 +28,7 @@ namespace Sledgemapper } catch (Exception ex) { - //ExceptionlessClient.Default.SubmitException(ex); + SentrySdk.CaptureException(ex); throw; } } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index f528271..515de91 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -1,11 +1,9 @@ using Microsoft.AspNetCore.SignalR.Client; -using Microsoft.Extensions.Configuration; using Polly; using Refit; using Sledgemapper.Shared.Entities; using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Net; using System.Net.Http; diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 95b0953..0878062 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -1,7 +1,6 @@ using Refit; using Sledgemapper.Shared.Entities; using System.Collections.Generic; -using System.Net.Http; using System.Threading.Tasks; namespace Sledgemapper diff --git a/Sledgemapper/Messages/CenterOnTileMessage.cs b/Sledgemapper/Messages/CenterOnTileMessage.cs new file mode 100644 index 0000000..647cec4 --- /dev/null +++ b/Sledgemapper/Messages/CenterOnTileMessage.cs @@ -0,0 +1,12 @@ +namespace Sledgemapper.Messages +{ + public class CenterOnTileMessage : TinyMessenger.TinyMessageBase + { + public CenterOnTileMessage(object sender) : base(sender) + { + } + + public int X { get; internal set; } + public int Y { get; internal set; } + } +} \ No newline at end of file diff --git a/Sledgemapper/Messages/LoginSuccessfulMessage.cs b/Sledgemapper/Messages/LoginSuccessfulMessage.cs index f44a8ad..4fb7eec 100644 --- a/Sledgemapper/Messages/LoginSuccessfulMessage.cs +++ b/Sledgemapper/Messages/LoginSuccessfulMessage.cs @@ -1,26 +1,12 @@ -public class LoginSuccesfulMessage : TinyMessenger.TinyMessageBase +namespace Sledgemapper.Messages { - public LoginSuccesfulMessage(object sender) : base(sender) + public class LoginSuccesfulMessage : TinyMessenger.TinyMessageBase { + public LoginSuccesfulMessage(object sender) : base(sender) + { + } + + public string UserName { get; internal set; } + public string Initials { get; internal set; } } - - public string UserName { get; internal set; } - public string Initials { get; internal set; } -} - -public class MapOpenedMessage : TinyMessenger.TinyMessageBase -{ - public MapOpenedMessage(object sender) : base(sender) - { - } -} - -public class CenterOnTileMessage : TinyMessenger.TinyMessageBase -{ - public CenterOnTileMessage(object sender) : base(sender) - { - } - - public int X { get; internal set; } - public int Y { get; internal set; } } \ No newline at end of file diff --git a/Sledgemapper/Messages/MapOpenedMessage.cs b/Sledgemapper/Messages/MapOpenedMessage.cs new file mode 100644 index 0000000..2690b10 --- /dev/null +++ b/Sledgemapper/Messages/MapOpenedMessage.cs @@ -0,0 +1,9 @@ +namespace Sledgemapper.Messages +{ + public class MapOpenedMessage : TinyMessenger.TinyMessageBase + { + public MapOpenedMessage(object sender) : base(sender) + { + } + } +} \ No newline at end of file diff --git a/Sledgemapper/Messages/SignalrConnectionUpdateMessage.cs b/Sledgemapper/Messages/SignalrConnectionUpdateMessage.cs index 2aaa47e..8cabee6 100644 --- a/Sledgemapper/Messages/SignalrConnectionUpdateMessage.cs +++ b/Sledgemapper/Messages/SignalrConnectionUpdateMessage.cs @@ -1,10 +1,9 @@ -public class SignalrConnectionUpdateMessage: TinyMessenger.TinyMessageBase +namespace Sledgemapper.Messages { - - - public SignalrConnectionUpdateMessage(object sender) : base(sender) + public class SignalrConnectionUpdateMessage : TinyMessenger.TinyMessageBase { + public SignalrConnectionUpdateMessage(object sender) : base(sender) + { + } } - - } \ No newline at end of file diff --git a/Sledgemapper/Settings.cs b/Sledgemapper/Settings.cs index 80ce9f9..4c22f57 100644 --- a/Sledgemapper/Settings.cs +++ b/Sledgemapper/Settings.cs @@ -1,5 +1,6 @@ using System; using Microsoft.Xna.Framework; +using Sentry; namespace Sledgemapper { @@ -13,7 +14,15 @@ namespace Sledgemapper public int TileDeleteDivider { get; set; } public int PingDuration {get;set;} - public Settings() + private static readonly Settings instance = new Settings(); + + // Explicit static constructor to tell C# compiler + // not to mark type as beforefieldinit + static Settings() + { + } + + private Settings() { BackgroundColor = Color.LightGray; GridColor = Color.Black; @@ -27,9 +36,17 @@ namespace Sledgemapper } catch (Exception ex) { - //ExceptionlessClient.Default.SubmitException(ex); + SentrySdk.CaptureException(ex); MachineName = "n/a"; } } + + public static Settings Instance + { + get + { + return instance; + } + } } } diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 7e080d6..d8d3658 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -3,24 +3,17 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using MonoGame.Extended; -using MonoGame.Extended.VectorDraw; using Myra; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; -using Myra.Graphics2D.UI.File; -using Myra.Graphics2D.UI.Properties; using Myra.Utility; -using Newtonsoft.Json; using Sledgemapper.Shared.Entities; using Sledgemapper.UI; using System; using System.Buffers; using System.Collections.Generic; -using System.Diagnostics; -using System.IO; using System.Linq; -using System.Text; using System.Threading.Tasks; using AsyncAwaitBestPractices; using TinyMessenger; @@ -43,7 +36,6 @@ namespace Sledgemapper private readonly Session _sessionData; private RenderTarget2D rendertarget; private MainWidget _mainWidget; - private readonly Settings _settings; private readonly TinyMessengerHub _messenger; public Sledgemapper() @@ -66,7 +58,7 @@ namespace Sledgemapper _communicationManager.Connection.Reconnecting += OnHubReconnecting; _communicationManager.Connection.Closed += OnHubDisconnected; _state = State.Instance; - _settings = new Settings(); + _vector2Pool = ArrayPool.Create(); _messenger = new TinyMessengerHub(); } @@ -196,7 +188,7 @@ namespace Sledgemapper ResetRenderTarget(); - _mainWidget = new MainWidget(_communicationManager, _settings, _messenger, Window); + _mainWidget = new MainWidget(_communicationManager, _messenger, Window); @@ -689,7 +681,7 @@ namespace Sledgemapper continue; } - if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > _settings.PingDuration) + if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > Settings.Instance.PingDuration) { _sessionData.Pings.TryRemove(guid, out var _); } @@ -732,7 +724,7 @@ namespace Sledgemapper var endposY = _state.SelectedSnapPoint.Y * _state.TileSize; if (_state.InsertMode == InsertMode.NewDelete) { - var ww = _state.TileSize / _settings.TileDeleteDivider; + var ww = _state.TileSize / Settings.Instance.TileDeleteDivider; if (posX == endposX) { endposX += ww; posX -= ww; } if (posY == endposY) { endposY += ww; posY -= ww; } } @@ -985,11 +977,11 @@ namespace Sledgemapper outlineShader.Parameters["ImageSize"].SetValue(texelSize); outlineShader.Parameters["BorderSize"].SetValue((int)(_state.TileSize / 100f * 10f)); - outlineShader.Parameters["R"].SetValue(_settings.OverlayTintColor.R / 255.0f); - outlineShader.Parameters["G"].SetValue(_settings.OverlayTintColor.G / 255.0f); - outlineShader.Parameters["B"].SetValue(_settings.OverlayTintColor.B / 255.0f); + outlineShader.Parameters["R"].SetValue(Settings.Instance.OverlayTintColor.R / 255.0f); + outlineShader.Parameters["G"].SetValue(Settings.Instance.OverlayTintColor.G / 255.0f); + outlineShader.Parameters["B"].SetValue(Settings.Instance.OverlayTintColor.B / 255.0f); - GraphicsDevice.Clear(_settings.BackgroundColor); + GraphicsDevice.Clear(Settings.Instance.BackgroundColor); _spriteBatch.Begin( effect: outlineShader, @@ -1093,7 +1085,7 @@ namespace Sledgemapper posX1, posY1, posX2, posY2, - _settings.GridColor); + Settings.Instance.GridColor); } for (var i = -1; i < visibleTilesY + 2; i++) @@ -1110,7 +1102,7 @@ namespace Sledgemapper _spriteBatch.DrawLine(posX1, posY1, posX2, posY2, - _settings.GridColor); + Settings.Instance.GridColor); } @@ -1170,7 +1162,7 @@ namespace Sledgemapper note.X * _state.TileSize + _state.TileSize - (int)(_state.TileSize / 2), note.Y * _state.TileSize + _state.TileSize / 8, (int)(_state.TileSize / 2.5), (int)(_state.TileSize / 2.5 / 1.136) - ), _settings.NoteColor + ), Settings.Instance.NoteColor ); } } @@ -1191,7 +1183,7 @@ namespace Sledgemapper posY = tile.Y * _state.TileSize; _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX + _state.TileSize / 25, posY + _state.TileSize / 25), spriteRec, Color.Black * .2f, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); - _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, _settings.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); + _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, Settings.Instance.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); } else { @@ -1200,7 +1192,7 @@ namespace Sledgemapper } _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX + _state.TileSize / 25, posY + _state.TileSize / 25), spriteRec, Color.Black * .2f, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); - _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, _settings.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); + _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, Settings.Instance.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); } } @@ -1642,7 +1634,7 @@ namespace Sledgemapper var endposY = tile.End.Y * _state.TileSize; - var ww = _state.TileSize / _settings.TileDeleteDivider; + var ww = _state.TileSize / Settings.Instance.TileDeleteDivider; if (posX == endposX) { endposX += ww; posX -= ww; } if (posY == endposY) { endposY += ww; posY -= ww; } switch (tile.Start.Index) diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index b4da7fb..1b5cf1f 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -1,7 +1,6 @@ using Microsoft.Xna.Framework; using System; using Sledgemapper.Shared.Entities; -using System.Collections.Generic; namespace Sledgemapper { diff --git a/Sledgemapper/UI/CampaignWindow.Custom.cs b/Sledgemapper/UI/CampaignWindow.Custom.cs index 48962bb..f4148bd 100644 --- a/Sledgemapper/UI/CampaignWindow.Custom.cs +++ b/Sledgemapper/UI/CampaignWindow.Custom.cs @@ -1,11 +1,11 @@ using Myra.Graphics2D.UI; +using Sentry; using System; -using System.Threading.Tasks; using TinyMessenger; namespace Sledgemapper.UI { - public partial class CampaignWindow + public partial class CampaignWindow { private readonly CommunicationManager CommunicationManager; private readonly Window Window; @@ -58,6 +58,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { + SentrySdk.CaptureException(ex); //ExceptionlessClient.Default.SubmitException(ex); } diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index 4c14328..1e363de 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -1,15 +1,14 @@ using System; using System.Diagnostics; using System.Linq; -using Microsoft.Xna.Framework; -using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; +using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using TinyMessenger; namespace Sledgemapper.UI { - public partial class LoginRegisterWindow + public partial class LoginRegisterWindow { private AuthenticateResponse _authResponse; private readonly CommunicationManager CommunicationManager; diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 0daa124..6dae826 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -1,19 +1,19 @@ using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework.Graphics; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; using Myra.Graphics2D.UI.File; using Myra.Graphics2D.UI.Properties; using Newtonsoft.Json; +using Sentry; +using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using System; -using System.Diagnostics; using System.IO; using System.Linq; using TinyMessenger; +using Session = Sledgemapper.Shared.Entities.Session; namespace Sledgemapper.UI { @@ -21,18 +21,15 @@ namespace Sledgemapper.UI { private readonly CommunicationManager CommunicationManager; - private Settings _settings; private readonly TinyMessengerHub _messenger; private readonly GameWindow Window; - public MainWidget(CommunicationManager communicationManager, Settings settings, TinyMessengerHub messenger, GameWindow window) + public MainWidget(CommunicationManager communicationManager, TinyMessengerHub messenger, GameWindow window) { BuildUI(); CommunicationManager = communicationManager; - - _settings = settings; Window = window; _messenger = messenger; MenuConnectLogin.Selected += OnMenuConnectLoginSelected; @@ -271,7 +268,7 @@ namespace Sledgemapper.UI { var propertyGrid = new PropertyGrid { - Object = _settings, + Object = Settings.Instance, Width = 350 }; @@ -379,7 +376,7 @@ namespace Sledgemapper.UI Title = "Campaigns" }; - var content = new CampaignList(CommunicationManager, window, _messenger, _settings, Desktop); + var content = new CampaignList(CommunicationManager, window, _messenger, Settings.Instance, Desktop); await content.LoadCampaigns(); window.Content = content; @@ -398,7 +395,7 @@ namespace Sledgemapper.UI var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; currentItem.Background = new SolidBrush("#D9D9D9FF"); } - item.Background = new SolidBrush(_settings.OverlayTintColor); + item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); } private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) @@ -550,7 +547,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - Sentry.SentrySdk.CaptureException(ex); + SentrySdk.CaptureException(ex); } localContent.Window.Close(); @@ -626,7 +623,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - //ExceptionlessClient.Default.SubmitException(ex); + SentrySdk.CaptureException(ex); } localWindow.Close(); diff --git a/Sledgemapper/UI/NoteList.Custom.cs b/Sledgemapper/UI/NoteList.Custom.cs index f937b11..839410e 100644 --- a/Sledgemapper/UI/NoteList.Custom.cs +++ b/Sledgemapper/UI/NoteList.Custom.cs @@ -2,6 +2,7 @@ using System.Linq; using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; +using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using TinyMessenger; diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs index d9ce8b5..3a3ccc0 100644 --- a/Sledgemapper/UI/SessionWindow.Custom.cs +++ b/Sledgemapper/UI/SessionWindow.Custom.cs @@ -2,8 +2,11 @@ using System; using Microsoft.AspNetCore.SignalR.Client; using Myra.Graphics2D.UI; +using Sentry; +using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using TinyMessenger; +using Session = Sledgemapper.Shared.Entities.Session; namespace Sledgemapper.UI { @@ -57,7 +60,7 @@ namespace Sledgemapper.UI } catch (Exception ex) { - //ExceptionlessClient.Default.SubmitException(ex); + SentrySdk.CaptureException(ex); } if (successful) From f15f1c88571ed140ceef1a1b8c1b97d75be0d73a Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 11:11:07 +0100 Subject: [PATCH 47/81] cleanup, refactoring, usual stuff --- .../Controllers/AuthManagementController.cs | 10 +-- Sledgemapper.Api/Core/Entities/User.cs | 2 +- .../Handlers/DeleteNoteCommandHandler.cs | 4 +- .../Handlers/DeleteOverlayCommandHandler.cs | 4 +- .../Handlers/DeleteTileCommandHandler.cs | 4 +- .../Handlers/DeleteWallCommandHandler.cs | 4 +- .../Handlers/GetCampaignsCommandHandler.cs | 2 +- .../Handlers/GetMapSnapshotCommandHandler.cs | 10 +-- .../Handlers/NewLineCommandHandler.cs | 4 +- .../Handlers/NewNoteCommandHandler.cs | 4 +- .../Handlers/NewOverlayCommandHandler.cs | 4 +- .../Handlers/NewRoomCommandHandler.cs | 4 +- .../Handlers/NewSnapshotCommandHandler.cs | 4 +- .../Handlers/NewTileCommandHandler.cs | 4 +- .../Handlers/NewWallCommandHandler.cs | 4 +- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 4 +- .../Data/SledgemapperDbContext.cs | 6 +- .../Messages/CampaignSelectedMessage.cs | 9 ++ Sledgemapper/UI/CampaignList.Custom.cs | 87 +++---------------- Sledgemapper/UI/MainWidget.Custom.cs | 86 ++++-------------- Sledgemapper/UI/NoteList.Custom.cs | 7 +- Sledgemapper/UI/NoteListItem.Custom.cs | 8 ++ Sledgemapper/UI/PlayerList.Custom.cs | 48 ++++++++++ Sledgemapper/UI/PlayerList.cs | 14 +-- Sledgemapper/UI/PlayerWindow.Custom.cs | 44 ++++++++++ Sledgemapper/UI/PlayerWindow.cs | 11 --- 26 files changed, 183 insertions(+), 209 deletions(-) create mode 100644 Sledgemapper/Messages/CampaignSelectedMessage.cs create mode 100644 Sledgemapper/UI/NoteListItem.Custom.cs create mode 100644 Sledgemapper/UI/PlayerList.Custom.cs create mode 100644 Sledgemapper/UI/PlayerWindow.Custom.cs delete mode 100644 Sledgemapper/UI/PlayerWindow.cs diff --git a/Sledgemapper.Api/Controllers/AuthManagementController.cs b/Sledgemapper.Api/Controllers/AuthManagementController.cs index a6eda75..9543bc5 100644 --- a/Sledgemapper.Api/Controllers/AuthManagementController.cs +++ b/Sledgemapper.Api/Controllers/AuthManagementController.cs @@ -34,7 +34,7 @@ namespace Sledgemapper.Api.Controllers [HttpPost] [Route("Register")] - public async Task Register([FromBody] Sledgemapper.Models.Users.RegisterModel user) + public async Task Register([FromBody] RegisterModel user) { // Check if the incoming request is valid if (ModelState.IsValid) @@ -44,7 +44,7 @@ namespace Sledgemapper.Api.Controllers if (existingUser != null) { - return BadRequest(new Sledgemapper.Models.Users.RegistrationResponse() + return BadRequest(new RegistrationResponse() { Result = false, Errors = new List(){ @@ -60,14 +60,14 @@ namespace Sledgemapper.Api.Controllers { var jwtToken = GenerateJwtToken(newUser); - return Ok(new Sledgemapper.Models.Users.RegistrationResponse() + return Ok(new RegistrationResponse() { Result = true, Token = jwtToken }); } - return new JsonResult(new Sledgemapper.Models.Users.RegistrationResponse() + return new JsonResult(new RegistrationResponse() { Result = false, Errors = isCreated.Errors.Select(x => x.Description).ToList() @@ -76,7 +76,7 @@ namespace Sledgemapper.Api.Controllers { StatusCode = 500 }; } - return BadRequest(new Sledgemapper.Models.Users.RegistrationResponse() + return BadRequest(new RegistrationResponse() { Result = false, Errors = new List(){ diff --git a/Sledgemapper.Api/Core/Entities/User.cs b/Sledgemapper.Api/Core/Entities/User.cs index a4af244..bd4993f 100644 --- a/Sledgemapper.Api/Core/Entities/User.cs +++ b/Sledgemapper.Api/Core/Entities/User.cs @@ -13,6 +13,6 @@ namespace Sledgemapper.Entities public string Initials { get; set; } // public byte[] PasswordHash { get; set; } public byte[] PasswordSalt { get; set; } - public ICollection Campaigns {get;set;} + public ICollection Campaigns {get;set;} } } \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs index 9bb34d1..1445f84 100644 --- a/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs @@ -22,10 +22,10 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteNoteCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Note); + var jsonString = JsonSerializer.Serialize(notification.Note); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "D", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs index 6ec62bf..fae8bd0 100644 --- a/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs @@ -20,10 +20,10 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteOverlayCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Overlay); + var jsonString = JsonSerializer.Serialize(notification.Overlay); var session = _dbcontext.Sessions.First(m=>m.SessionName== notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "D", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs index 8e5cb52..9ae4b2f 100644 --- a/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs @@ -20,10 +20,10 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteTileCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Tile); + var jsonString = JsonSerializer.Serialize(notification.Tile); var session = _dbcontext.Sessions.First(m=>m.SessionName== notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "D", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs index 3daef43..ace1c1c 100644 --- a/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs @@ -22,10 +22,10 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteWallCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Wall); + var jsonString = JsonSerializer.Serialize(notification.Wall); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "D", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs index 9b1e998..12b226f 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -31,7 +31,7 @@ namespace Sledgemapper.Api.Handlers var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Maps).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); return campaigns. - Select(c => new Shared.Entities.Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Shared.Entities.Map { SessionName = m.SessionName }).ToList() }) + Select(c => new Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Map { SessionName = m.SessionName }).ToList() }) .ToList(); } catch (Exception ex) diff --git a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs index d8960cf..50ee2fa 100644 --- a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs @@ -9,17 +9,17 @@ using Sledgemapper.Api.Models; namespace Sledgemapper.Api.Commands { - public class GetMapSnapshotCommandHandler : IRequestHandler + public class GetMapSnapshotCommandHandler : IRequestHandler { private readonly SledgemapperDbContext _dbcontext; public GetMapSnapshotCommandHandler(SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; } - public async Task Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) + public async Task Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) { Snapshot snapshot; double timestamp; - Sledgemapper.Shared.Entities.Session mapSession; + Shared.Entities.Session mapSession; var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId); if (snapshot is null) @@ -30,7 +30,7 @@ namespace Sledgemapper.Api.Commands } else { - mapSession = JsonSerializer.Deserialize(snapshot.Object); + mapSession = JsonSerializer.Deserialize(snapshot.Object); timestamp = snapshot.Timestamp; } @@ -101,7 +101,7 @@ namespace Sledgemapper.Api.Commands { SessionId = session.SessionId, Timestamp = mapUpdates.Max(mapSession => mapSession.Timestamp), - Object = JsonSerializer.Serialize(mapSession) + Object = JsonSerializer.Serialize(mapSession) }; await _dbcontext.Snapshots.AddAsync(newSnapshot); await _dbcontext.SaveChangesAsync(); diff --git a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs index d6e9e56..a6586a3 100644 --- a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs @@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewLineCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Line); + var jsonString = JsonSerializer.Serialize(notification.Line); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs index 8c19a2c..149c869 100644 --- a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs @@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewNoteCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Note); + var jsonString = JsonSerializer.Serialize(notification.Note); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 92fc4f0..54bfd2c 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewOverlayCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Overlay); + var jsonString = JsonSerializer.Serialize(notification.Overlay); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs b/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs index a48e10b..11d59f4 100644 --- a/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs @@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewRoomCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Room); + var jsonString = JsonSerializer.Serialize(notification.Room); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs index 0a811d5..30f53cb 100644 --- a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs @@ -20,10 +20,10 @@ namespace Sledgemapper.Api.Commands var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - var newSnapshot = new Sledgemapper.Api.Models.Snapshot{ + var newSnapshot = new Models.Snapshot{ SessionId=session.SessionId, Timestamp=notification.Timestamp, - Object = JsonSerializer.Serialize(notification.Session) + Object = JsonSerializer.Serialize(notification.Session) }; await _dbcontext.Snapshots.AddAsync(newSnapshot); diff --git a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs index cf3aae1..491d0a2 100644 --- a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs @@ -19,10 +19,10 @@ namespace Sledgemapper.Api.Commands public async Task Handle(NewTileCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Tile); + var jsonString = JsonSerializer.Serialize(notification.Tile); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs index 76e1c3c..b40e4e7 100644 --- a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs @@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewWallCommand notification, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Wall); + var jsonString = JsonSerializer.Serialize(notification.Wall); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog + _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index ffd91d9..3ad9340 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -94,7 +94,7 @@ namespace Sledgemapper.Api.Hubs await Clients.Group(sessionName).Ping(new Ping{X=location.X, Y=location.Y, Player=player}); } - public async Task JoinSession(string sessionName) + public async Task JoinSession(string sessionName) { var session = _dbContext.Sessions.FirstOrDefault(s => s.SessionName == sessionName); var userId = int.Parse(Context.User.Identity.Name); @@ -112,7 +112,7 @@ namespace Sledgemapper.Api.Hubs await Clients.Group(session.SessionName).NewPlayer(player); await Clients.Group(session.SessionName).RefreshPlayers(); - var newSession = new Sledgemapper.Shared.Entities.Session + var newSession = new Shared.Entities.Session { SessionName = session.SessionName, SessionId = session.SessionId diff --git a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs index 15fbf27..75da3f8 100644 --- a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs +++ b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Infrastructure.Data public class SledgemapperDbContext : IdentityDbContext { - public DbSet Campaigns { get; set; } + public DbSet Campaigns { get; set; } public DbSet MapLogs { get; set; } public DbSet Maps { get; set; } public DbSet Sessions { get; set; } @@ -46,9 +46,9 @@ namespace Sledgemapper.Api.Infrastructure.Data protected override void OnModelCreating(ModelBuilder modelBuilder) { - modelBuilder.Entity().HasOne(e=>e.Owner); + modelBuilder.Entity().HasOne(e=>e.Owner); -modelBuilder.Entity().HasMany(e=>e.InvitedUsers).WithMany(e=>e.Campaigns); +modelBuilder.Entity().HasMany(e=>e.InvitedUsers).WithMany(e=>e.Campaigns); modelBuilder.Entity() //Use your application user class here .ToTable( "Users" ); //Set the table name here diff --git a/Sledgemapper/Messages/CampaignSelectedMessage.cs b/Sledgemapper/Messages/CampaignSelectedMessage.cs new file mode 100644 index 0000000..5933491 --- /dev/null +++ b/Sledgemapper/Messages/CampaignSelectedMessage.cs @@ -0,0 +1,9 @@ +namespace Sledgemapper.Messages +{ + public class CampaignSelectedMessage : TinyMessenger.TinyMessageBase + { + public CampaignSelectedMessage(object sender) : base(sender) + { + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 5dc34bf..f2e6b44 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -1,5 +1,6 @@ using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; +using Sledgemapper.Messages; using System; using System.Threading.Tasks; using TinyMessenger; @@ -11,17 +12,15 @@ namespace Sledgemapper.UI private readonly CommunicationManager CommunicationManager; private readonly Window Window; private readonly TinyMessengerHub Messenger; - private readonly Desktop Desktop; - private Settings _settings; + private bool campaignSelected; - public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings, Desktop desktop) + public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger) { BuildUI(); CommunicationManager = communicationManager; Window = window; Messenger = messenger; - Desktop = desktop; - _settings = settings; + BtnNewCampaign.Click += (s, e) => { window.Close(); @@ -33,6 +32,7 @@ namespace Sledgemapper.UI if (campaignSelected) { campaignSelected = false; + Messenger.Publish(new CampaignSelectedMessage(this)); window.Close(); } }; @@ -57,96 +57,31 @@ namespace Sledgemapper.UI }; var content = new CampaignWindow(CommunicationManager, window, Messenger); - //content.BtnNewCampaign.Text = "N"; - //content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; window.Content = content; - - window.ShowModal(Desktop); - //content.TxtCampaign.SetKeyboardFocus(); + window.ShowModal(Window.Desktop); } - - - private bool campaignSelected; - - private void OnCampaignSelected(object sender, EventArgs e) { - var item = sender as UI.ListItem; - var localContent = item.GetParentContentInWindow(); + var item = sender as ListItem; + State.Instance.CampaignName = item.ItemName.Text; - var list = item.Parent as Myra.Graphics2D.UI.Grid; + var list = item.Parent as Grid; for (var i = 0; i < list.ChildrenCount; i++) { var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; currentItem.Background = new SolidBrush("#D9D9D9FF"); } - item.Background = new SolidBrush(_settings.OverlayTintColor); + item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); campaignSelected = true; } - //private async void OnButtonNewCampaignClicked(object sender, EventArgs e) - //{ - // var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - - // var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); - // if (!isValid) - // { - // return; - // } - - // //if (CommunicationManager.Connection.State != HubConnectionState.Connected) - // //{ - // // lblConnectionStatus.Text = "Connecting"; - // // await CommunicationManager.Connection.StartAsync(); - // // UpdateConnectionState(CommunicationManager.Connection); - // //} - - // var successful = false; - // try - // { - // await CommunicationManager.Api.NewCampaign(localContent.Content.TxtCampaign.Text); - - // //if (result) - // //{ - // // CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - // // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - // // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - // // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - // //} - // //successful = result; - // //var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.TxtSession.Text); - // //CommunicationManager.SessionData.SessionId = result2.SessionId; - // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // } - // catch (Exception ex) - // { - // //ExceptionlessClient.Default.SubmitException(ex); - // } - - // //if (successful) - // //{ - // // //CommunicationManager.SessionData.SessionName = localContent.TxtSession.Text; - // // //CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - // // //CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - // // //CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - // // //lblSessionName.Text = CommunicationManager.SessionData.SessionName; - // // //MenuConnectSync.Enabled = true; - // // //MenuConnectUpload.Enabled = true; - // // localWindow.Close(); - // //} - - // localContent.Window.Close(); - - //} - public async Task LoadCampaigns() { var campaigns = await CommunicationManager.Api.GetCampaigns(); foreach (var campaign in campaigns) { - var item = new UI.ListItem(); + var item = new ListItem(); item.ItemName.Text = campaign.Name; item.TouchUp += OnCampaignSelected; diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 6dae826..dd6a92f 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -1,7 +1,6 @@ using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; using Myra.Graphics2D.Brushes; -using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; using Myra.Graphics2D.UI.File; using Myra.Graphics2D.UI.Properties; @@ -11,7 +10,6 @@ using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using System; using System.IO; -using System.Linq; using TinyMessenger; using Session = Sledgemapper.Shared.Entities.Session; @@ -68,12 +66,17 @@ namespace Sledgemapper.UI _messenger.Subscribe(OnSignalrConnectionUpdateMessage); _messenger.Subscribe(OnMapOpenedMessage); _messenger.Subscribe(OnCenterOnTileMessage); + _messenger.Subscribe(OnCampaignSelectedMessage); + } + + private void OnCampaignSelectedMessage(CampaignSelectedMessage obj) + { + } private void OnCenterOnTileMessage(CenterOnTileMessage obj) { CenterOnTile(obj.X, obj.Y); - } private void OnMapOpenedMessage(MapOpenedMessage obj) @@ -318,18 +321,6 @@ namespace Sledgemapper.UI var content = new NoteList(CommunicationManager, _messenger, window); - for (var i = 0; i < CommunicationManager.SessionData.Notes.Values.Count; i++) - { - var note = CommunicationManager.SessionData.Notes.Values.ElementAt(i); - var item = new NoteListItem(); - item.LblNoteText.Text = $"{note.ToString()} - {note.Text}"; - item.BtnNoteCenter.Image = new TextureRegion(CachedContent.Instance.Location); - item.BtnNoteView.Image = new TextureRegion(CachedContent.Instance.Eye); - item.BtnNoteCenter.Click += (s, e) => { CenterOnTile(note.X, note.Y); }; - item.BtnNoteView.Click += (s, e) => { EditNote(note); window.Close(); }; - content.StackNotesList.AddChild(item); - } - window.Content = content; window.ShowModal(Desktop); } @@ -360,8 +351,9 @@ namespace Sledgemapper.UI { Title = "New campaign" }; - - var content = new CampaignWindow(); + var content = new CampaignWindow(CommunicationManager, window, _messenger); + window.Content = content; + window.ShowModal(Desktop); } private async void OnMenuCampaignOpen(object sender, EventArgs e) @@ -376,7 +368,7 @@ namespace Sledgemapper.UI Title = "Campaigns" }; - var content = new CampaignList(CommunicationManager, window, _messenger, Settings.Instance, Desktop); + var content = new CampaignList(CommunicationManager, window, _messenger); await content.LoadCampaigns(); window.Content = content; @@ -386,10 +378,10 @@ namespace Sledgemapper.UI private void OnMapSelected(object sender, EventArgs e) { - var item = sender as UI.ListItem; + var item = sender as ListItem; var localContent = item.GetParentContentInWindow(); - var list = item.Parent as Myra.Graphics2D.UI.Grid; + var list = item.Parent as Grid; for (var i = 0; i < list.ChildrenCount; i++) { var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; @@ -410,22 +402,8 @@ namespace Sledgemapper.UI Title = "Players" }; - var content = new PlayerList(); - var players = await CommunicationManager.Api.GetPlayers(State.Instance.CampaignName); - foreach (var player in players) - { - var item = new UI.ListItem(); - item.ItemName.Text = player.UserName; - - - content.StackCampaignsList.AddChild(item); - } - - content.BtnInvitePlayer.Click += (s, e) => - { - window.Close(); - ShowAddPLayerWindow(); - }; + var content = new PlayerList(CommunicationManager, window); + await content.LoadPlayers(); window.Content = content; @@ -447,7 +425,7 @@ namespace Sledgemapper.UI var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName); foreach (var campaign in campaigns) { - var item = new UI.ListItem(); + var item = new ListItem(); item.ItemName.Text = campaign.SessionName; item.TouchUp += OnMapSelected; content.StackCampaignsList.AddChild(item); @@ -464,21 +442,7 @@ namespace Sledgemapper.UI window.ShowModal(Desktop); } - private void ShowAddPLayerWindow() - { - Window window = new() - { - Title = "Invite player" - }; - var content = new PlayerWindow(); - //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonInvitePlayerClicked; - window.Content = content; - - window.ShowModal(Desktop); - content.TxtCampaign.SetKeyboardFocus(); - } private async void OnButtonJoinSessionClicked(object sender, EventArgs e) { @@ -531,27 +495,7 @@ namespace Sledgemapper.UI } } - private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) - { - var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); - if (!isValid) - { - return; - } - var successful = false; - try - { - await CommunicationManager.Api.InvitePlayer(State.Instance.CampaignName, localContent.Content.TxtCampaign.Text); - } - catch (Exception ex) - { - SentrySdk.CaptureException(ex); - } - localContent.Window.Close(); - - } private void OnBtnToolbarRoomClicked(object sender, EventArgs e) { diff --git a/Sledgemapper/UI/NoteList.Custom.cs b/Sledgemapper/UI/NoteList.Custom.cs index 839410e..f1419b8 100644 --- a/Sledgemapper/UI/NoteList.Custom.cs +++ b/Sledgemapper/UI/NoteList.Custom.cs @@ -46,12 +46,9 @@ namespace Sledgemapper.UI }; var noteWindow = new NoteWindow(CommunicationManager, window, note); - - - window.Content = noteWindow; - window.ShowModal(Desktop); - //noteWindow.NoteText.SetKeyboardFocus(); + window.ShowModal(Window.Desktop); + } } } \ No newline at end of file diff --git a/Sledgemapper/UI/NoteListItem.Custom.cs b/Sledgemapper/UI/NoteListItem.Custom.cs new file mode 100644 index 0000000..39fe8ff --- /dev/null +++ b/Sledgemapper/UI/NoteListItem.Custom.cs @@ -0,0 +1,8 @@ +/* Generated by MyraPad at 01/12/2020 14:29:43 */ +namespace Sledgemapper.UI +{ + public partial class NoteListItem + { + + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerList.Custom.cs b/Sledgemapper/UI/PlayerList.Custom.cs new file mode 100644 index 0000000..ee6c241 --- /dev/null +++ b/Sledgemapper/UI/PlayerList.Custom.cs @@ -0,0 +1,48 @@ +/* Generated by MyraPad at 28/08/2021 19:49:08 */ +using Myra.Graphics2D.UI; +using System.Threading.Tasks; + +namespace Sledgemapper.UI +{ + public partial class PlayerList + { + protected readonly Window Window; + protected readonly CommunicationManager CommunicationManager; + + public PlayerList(CommunicationManager communicationManager, Window window) + { + BuildUI(); + Window = window; + CommunicationManager = communicationManager; + BtnInvitePlayer.Click += (s, e) => + { + Window.Close(); + ShowAddPLayerWindow(); + }; + + } + + public async Task LoadPlayers() + { + var players = await CommunicationManager.Api.GetPlayers(State.Instance.CampaignName); + foreach (var player in players) + { + var item = new ListItem(); + item.ItemName.Text = player.UserName; + StackCampaignsList.AddChild(item); + } + } + + private void ShowAddPLayerWindow() + { + Window window = new() + { + Title = "Invite player", + Content = new PlayerWindow(CommunicationManager, Window) + }; + + window.ShowModal(Window.Desktop); + + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerList.cs b/Sledgemapper/UI/PlayerList.cs index ffdf573..1da74ac 100644 --- a/Sledgemapper/UI/PlayerList.cs +++ b/Sledgemapper/UI/PlayerList.cs @@ -1,11 +1,11 @@ /* Generated by MyraPad at 28/08/2021 19:49:08 */ namespace Sledgemapper.UI { - public partial class PlayerList - { - public PlayerList() - { - BuildUI(); - } - } + public partial class PlayerList + { + public PlayerList() + { + BuildUI(); + } + } } \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerWindow.Custom.cs b/Sledgemapper/UI/PlayerWindow.Custom.cs new file mode 100644 index 0000000..97617e2 --- /dev/null +++ b/Sledgemapper/UI/PlayerWindow.Custom.cs @@ -0,0 +1,44 @@ +/* Generated by MyraPad at 28/08/2021 22:04:11 */ +using Myra.Graphics2D.UI; +using Sentry; +using System; + +namespace Sledgemapper.UI +{ + public partial class PlayerWindow + { + protected readonly Window Window; + protected readonly CommunicationManager CommunicationManager; + + public PlayerWindow(CommunicationManager communicationManager, Window window) + { + Window = window; + CommunicationManager = communicationManager; + + BuildUI(); + BtnNewCampaign.Click += OnButtonInvitePlayerClicked; + } + + private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) + { + var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); + if (!isValid) + { + return; + } + + var successful = false; + try + { + await CommunicationManager.Api.InvitePlayer(State.Instance.CampaignName, localContent.Content.TxtCampaign.Text); + } + catch (Exception ex) + { + SentrySdk.CaptureException(ex); + } + localContent.Window.Close(); + + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerWindow.cs b/Sledgemapper/UI/PlayerWindow.cs deleted file mode 100644 index 76112a7..0000000 --- a/Sledgemapper/UI/PlayerWindow.cs +++ /dev/null @@ -1,11 +0,0 @@ -/* Generated by MyraPad at 28/08/2021 22:04:11 */ -namespace Sledgemapper.UI -{ - public partial class PlayerWindow - { - public PlayerWindow() - { - BuildUI(); - } - } -} \ No newline at end of file From 08626d7a81394c1d8893d15f1dcea0d280a20b25 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 12:18:18 +0100 Subject: [PATCH 48/81] ui file nesting --- Sledgemapper/Sledgemapper.csproj | 13 ++++++------- Sledgemapper/UI/ListItem.cs | 1 + .../{loginwindow.xmmp => LoginRegisterWindow.xmmp} | 0 .../UI/{MainWidget.UI.xmmp => MainWidget.xmmp} | 0 Sledgemapper/UI/{mapsList.xmmp => MapList.xmmp} | 0 .../UI/{playersList.xmmp => PlayerList.xmmp} | 0 Sledgemapper/UI/PlayerWindow.cs | 12 ++++++++++++ .../UI/{newPlayerWindow.xmmp => PlayerWindow.xmmp} | 0 8 files changed, 19 insertions(+), 7 deletions(-) rename Sledgemapper/UI/{loginwindow.xmmp => LoginRegisterWindow.xmmp} (100%) rename Sledgemapper/UI/{MainWidget.UI.xmmp => MainWidget.xmmp} (100%) rename Sledgemapper/UI/{mapsList.xmmp => MapList.xmmp} (100%) rename Sledgemapper/UI/{playersList.xmmp => PlayerList.xmmp} (100%) create mode 100644 Sledgemapper/UI/PlayerWindow.cs rename Sledgemapper/UI/{newPlayerWindow.xmmp => PlayerWindow.xmmp} (100%) diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 3374495..18ad1a2 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -1,4 +1,4 @@ - + Exe net5.0 @@ -71,16 +71,15 @@ - - + + $([System.String]::Concat(%(Filename), ".cs")) + + \ No newline at end of file diff --git a/Sledgemapper/UI/ListItem.cs b/Sledgemapper/UI/ListItem.cs index c1130a2..7a8e401 100644 --- a/Sledgemapper/UI/ListItem.cs +++ b/Sledgemapper/UI/ListItem.cs @@ -6,6 +6,7 @@ namespace Sledgemapper.UI public ListItem() { BuildUI(); + } } } \ No newline at end of file diff --git a/Sledgemapper/UI/loginwindow.xmmp b/Sledgemapper/UI/LoginRegisterWindow.xmmp similarity index 100% rename from Sledgemapper/UI/loginwindow.xmmp rename to Sledgemapper/UI/LoginRegisterWindow.xmmp diff --git a/Sledgemapper/UI/MainWidget.UI.xmmp b/Sledgemapper/UI/MainWidget.xmmp similarity index 100% rename from Sledgemapper/UI/MainWidget.UI.xmmp rename to Sledgemapper/UI/MainWidget.xmmp diff --git a/Sledgemapper/UI/mapsList.xmmp b/Sledgemapper/UI/MapList.xmmp similarity index 100% rename from Sledgemapper/UI/mapsList.xmmp rename to Sledgemapper/UI/MapList.xmmp diff --git a/Sledgemapper/UI/playersList.xmmp b/Sledgemapper/UI/PlayerList.xmmp similarity index 100% rename from Sledgemapper/UI/playersList.xmmp rename to Sledgemapper/UI/PlayerList.xmmp diff --git a/Sledgemapper/UI/PlayerWindow.cs b/Sledgemapper/UI/PlayerWindow.cs new file mode 100644 index 0000000..1d5b6a9 --- /dev/null +++ b/Sledgemapper/UI/PlayerWindow.cs @@ -0,0 +1,12 @@ +/* Generated by MyraPad at 28/08/2021 22:04:11 */ +namespace Sledgemapper.UI +{ + public partial class PlayerWindow + { + + public PlayerWindow() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/newPlayerWindow.xmmp b/Sledgemapper/UI/PlayerWindow.xmmp similarity index 100% rename from Sledgemapper/UI/newPlayerWindow.xmmp rename to Sledgemapper/UI/PlayerWindow.xmmp From 85899e1cdcc4d9ab83201ff8fdedb850e7492e56 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 12:24:53 +0100 Subject: [PATCH 49/81] cleanup --- Sledgemapper/ExtensionMethods.cs | 3 - Sledgemapper/ObjectExtensions.cs | 131 ------------------------------- Sledgemapper/Program.cs | 1 - 3 files changed, 135 deletions(-) delete mode 100644 Sledgemapper/ObjectExtensions.cs diff --git a/Sledgemapper/ExtensionMethods.cs b/Sledgemapper/ExtensionMethods.cs index 4b89989..d47a17f 100644 --- a/Sledgemapper/ExtensionMethods.cs +++ b/Sledgemapper/ExtensionMethods.cs @@ -58,10 +58,7 @@ namespace Sledgemapper textBox.Background = new SolidBrush(new Color(51, 51, 51)); ; } return valid; - } - } - } diff --git a/Sledgemapper/ObjectExtensions.cs b/Sledgemapper/ObjectExtensions.cs deleted file mode 100644 index 5749b10..0000000 --- a/Sledgemapper/ObjectExtensions.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System.Collections.Generic; -using System.Reflection; -using System.ArrayExtensions; - -namespace System -{ - public static class ObjectExtensions - { - private static readonly MethodInfo CloneMethod = typeof(object).GetMethod("MemberwiseClone", BindingFlags.NonPublic | BindingFlags.Instance); - - public static bool IsPrimitive(this Type type) - { - if (type == typeof(string)) return true; - return type.IsValueType && type.IsPrimitive; - } - - public static object Copy(this object originalObject) - { - return InternalCopy(originalObject, new Dictionary(new ReferenceEqualityComparer())); - } - private static object InternalCopy(object originalObject, IDictionary visited) - { - if (originalObject == null) return null; - var typeToReflect = originalObject.GetType(); - if (IsPrimitive(typeToReflect)) return originalObject; - if (visited.ContainsKey(originalObject)) return visited[originalObject]; - if (typeof(Delegate).IsAssignableFrom(typeToReflect)) return null; - var cloneObject = CloneMethod.Invoke(originalObject, null); - if (typeToReflect.IsArray) - { - var arrayType = typeToReflect.GetElementType(); - if (!IsPrimitive(arrayType)) - { - Array clonedArray = (Array)cloneObject; - clonedArray.ForEach((array, indices) => array.SetValue(InternalCopy(clonedArray.GetValue(indices), visited), indices)); - } - - } - visited.Add(originalObject, cloneObject); - CopyFields(originalObject, visited, cloneObject, typeToReflect); - RecursiveCopyBaseTypePrivateFields(originalObject, visited, cloneObject, typeToReflect); - return cloneObject; - } - - private static void RecursiveCopyBaseTypePrivateFields(object originalObject, IDictionary visited, object cloneObject, Type typeToReflect) - { - if (typeToReflect.BaseType != null) - { - RecursiveCopyBaseTypePrivateFields(originalObject, visited, cloneObject, typeToReflect.BaseType); - CopyFields(originalObject, visited, cloneObject, typeToReflect.BaseType, BindingFlags.Instance | BindingFlags.NonPublic, info => info.IsPrivate); - } - } - - private static void CopyFields(object originalObject, IDictionary visited, object cloneObject, Type typeToReflect, BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy, Func filter = null) - { - foreach (FieldInfo fieldInfo in typeToReflect.GetFields(bindingFlags)) - { - if (filter != null && !filter(fieldInfo)) continue; - if (IsPrimitive(fieldInfo.FieldType)) continue; - var originalFieldValue = fieldInfo.GetValue(originalObject); - var clonedFieldValue = InternalCopy(originalFieldValue, visited); - fieldInfo.SetValue(cloneObject, clonedFieldValue); - } - } - public static T Copy(this T original) - { - return (T)Copy((object)original); - } - } - - public class ReferenceEqualityComparer : EqualityComparer - { - public override bool Equals(object x, object y) - { - return ReferenceEquals(x, y); - } - public override int GetHashCode(object obj) - { - if (obj == null) return 0; - return obj.GetHashCode(); - } - } - - namespace ArrayExtensions - { - public static class ArrayExtensions - { - public static void ForEach(this Array array, Action action) - { - if (array.LongLength == 0) return; - ArrayTraverse walker = new(array); - do action(array, walker.Position); - while (walker.Step()); - } - } - - internal class ArrayTraverse - { - public int[] Position; - private readonly int[] maxLengths; - - public ArrayTraverse(Array array) - { - maxLengths = new int[array.Rank]; - for (int i = 0; i < array.Rank; ++i) - { - maxLengths[i] = array.GetLength(i) - 1; - } - Position = new int[array.Rank]; - } - - public bool Step() - { - for (int i = 0; i < Position.Length; ++i) - { - if (Position[i] < maxLengths[i]) - { - Position[i]++; - for (int j = 0; j < i; j++) - { - Position[j] = 0; - } - return true; - } - } - return false; - } - } - } - -} \ No newline at end of file diff --git a/Sledgemapper/Program.cs b/Sledgemapper/Program.cs index 0ab8046..2c90271 100644 --- a/Sledgemapper/Program.cs +++ b/Sledgemapper/Program.cs @@ -7,7 +7,6 @@ namespace Sledgemapper [STAThread] static void Main() { - using(Sentry.SentrySdk.Init("https://973ac1606651454ba7a19f642d0a9bc1@glitchtip.michelescandura.com/1")) using (var game = new Sledgemapper()) game.Run(); From 1e48c041b1869d7ff9ebdbeb9da5563e69b14a83 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 12:38:20 +0100 Subject: [PATCH 50/81] small fixes --- Sledgemapper/UI/MainWidget.Custom.cs | 8 ++++--- Sledgemapper/UI/MainWidget.Generated.cs | 31 ++++++++++++++++++------- Sledgemapper/UI/MainWidget.xmmp | 9 ++++--- Sledgemapper/UI/PlayerList.Generated.cs | 4 ++-- Sledgemapper/UI/PlayerList.xmmp | 4 ++-- 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index dd6a92f..f08d34a 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -71,7 +71,9 @@ namespace Sledgemapper.UI private void OnCampaignSelectedMessage(CampaignSelectedMessage obj) { - + lblCampaign.Text = State.Instance.CampaignName; + MenuMapNew.Enabled = true; + MenuMapOpen.Enabled = true; } private void OnCenterOnTileMessage(CenterOnTileMessage obj) @@ -81,7 +83,7 @@ namespace Sledgemapper.UI private void OnMapOpenedMessage(MapOpenedMessage obj) { - lblSessionName.Text = CommunicationManager.SessionData.SessionName; + lblMap.Text = CommunicationManager.SessionData.SessionName; MenuConnectSync.Enabled = true; MenuConnectUpload.Enabled = true; CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; @@ -488,7 +490,7 @@ namespace Sledgemapper.UI if (successful) { CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - lblSessionName.Text = CommunicationManager.SessionData.SessionName; + lblMap.Text = CommunicationManager.SessionData.SessionName; MenuConnectSync.Enabled = true; MenuConnectUpload.Enabled = true; localContent.Window.Close(); diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index 3be2355..45084e3 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,9 +1,10 @@ -/* Generated by MyraPad at 19/02/2021 14:56:38 */ +/* Generated by MyraPad at 16/09/2021 12:26:31 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; using Myra.Graphics2D.UI; using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; #if MONOGAME || FNA using Microsoft.Xna.Framework; @@ -292,12 +293,22 @@ namespace Sledgemapper.UI var verticalSeparator2 = new VerticalSeparator(); var label3 = new Label(); - label3.Text = "Session name:"; + label3.Text = "Campaign:"; - lblSessionName = new Label(); - lblSessionName.Text = "n/a"; - lblSessionName.MinWidth = 100; - lblSessionName.Id = "lblSessionName"; + lblCampaign = new Label(); + lblCampaign.Text = "n/a"; + lblCampaign.MinWidth = 100; + lblCampaign.Id = "lblCampaign"; + + var verticalSeparator3 = new VerticalSeparator(); + + var label4 = new Label(); + label4.Text = "Map:"; + + lblMap = new Label(); + lblMap.Text = "n/a"; + lblMap.MinWidth = 100; + lblMap.Id = "lblMap"; var horizontalStackPanel1 = new HorizontalStackPanel(); horizontalStackPanel1.Spacing = 10; @@ -314,7 +325,10 @@ namespace Sledgemapper.UI horizontalStackPanel1.Widgets.Add(lblUsername); horizontalStackPanel1.Widgets.Add(verticalSeparator2); horizontalStackPanel1.Widgets.Add(label3); - horizontalStackPanel1.Widgets.Add(lblSessionName); + horizontalStackPanel1.Widgets.Add(lblCampaign); + horizontalStackPanel1.Widgets.Add(verticalSeparator3); + horizontalStackPanel1.Widgets.Add(label4); + horizontalStackPanel1.Widgets.Add(lblMap); Proportions.Add(new Proportion @@ -366,6 +380,7 @@ namespace Sledgemapper.UI public TextBox TxtOverlaySearch; public Label lblConnectionStatus; public Label lblUsername; - public Label lblSessionName; + public Label lblCampaign; + public Label lblMap; } } diff --git a/Sledgemapper/UI/MainWidget.xmmp b/Sledgemapper/UI/MainWidget.xmmp index 0bae61b..1bcc3ab 100644 --- a/Sledgemapper/UI/MainWidget.xmmp +++ b/Sledgemapper/UI/MainWidget.xmmp @@ -1,5 +1,5 @@ - + @@ -85,8 +85,11 @@ \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerList.Generated.cs b/Sledgemapper/UI/PlayerList.Generated.cs index f97d943..af21ecd 100644 --- a/Sledgemapper/UI/PlayerList.Generated.cs +++ b/Sledgemapper/UI/PlayerList.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 28/08/2021 19:49:08 */ +/* Generated by MyraPad at 16/09/2021 12:29:41 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -23,7 +23,7 @@ namespace Sledgemapper.UI private void BuildUI() { var label1 = new Label(); - label1.Text = "Campaigns"; + label1.Text = "Players"; label1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; StackCampaignsList = new VerticalStackPanel(); diff --git a/Sledgemapper/UI/PlayerList.xmmp b/Sledgemapper/UI/PlayerList.xmmp index e2082fb..61d6053 100644 --- a/Sledgemapper/UI/PlayerList.xmmp +++ b/Sledgemapper/UI/PlayerList.xmmp @@ -1,7 +1,7 @@ - + - \ No newline at end of file diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 067790d..577aca1 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -48,14 +48,7 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "New campaign" - }; - - var content = new CampaignWindow(CommunicationManager, Messenger); - window.Content = content; - window.ShowModal(Desktop); + new CampaignWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New campaign"); } private void OnCampaignSelected(object sender, EventArgs e) diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index 85c6741..73dee30 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -54,18 +54,12 @@ namespace Sledgemapper.UI BtnRegister.Click += OnButtonRegisterClick; BtnLogin.Click += OnButtonLoginClick; - //TxtEmail.SetKeyboardFocus(); - } - - private async void OnButtonRegisterClick(object sender, EventArgs e) { var button = ((TextButton)sender); - var localContent = this;// GetParentContentInWindow(button);// localWindow.Content as PlayerWindow; - if (!button.Enabled) { return; diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index cb6302b..caae0be 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -62,6 +62,7 @@ namespace Sledgemapper.UI BtnToolbarLine.Click += OnBtnToolbarLinClicked; BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; + _messenger.Subscribe(OnLoginSuccesfulMessage); _messenger.Subscribe(OnSignalrConnectionUpdateMessage); _messenger.Subscribe(OnMapOpenedMessage); @@ -107,7 +108,7 @@ namespace Sledgemapper.UI MenuCampaignOpen.Enabled = true; MenuCampaingNew.Enabled = true; - lblUsername.Text = $"{obj.UserName} - {obj.Initials}"; + lblUsername.Text = $"{obj.Initials}"; } public void ClearSelection() @@ -292,16 +293,7 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "Join mapping session" - }; - - var content = new SessionWindow(CommunicationManager, _messenger); - - window.Content = content; - - window.ShowModal(Desktop); + new SessionWindow(CommunicationManager, _messenger).ShowInModalWindow(Desktop, "Join mapping session"); } private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) @@ -321,10 +313,7 @@ namespace Sledgemapper.UI Title = "Notes" }; - var content = new NoteList(CommunicationManager, _messenger); - - window.Content = content; - window.ShowModal(Desktop); + new NoteList(CommunicationManager, _messenger).ShowInModalWindow(Desktop, "Notes"); } private void CenterOnSelectedTile() @@ -339,7 +328,6 @@ namespace Sledgemapper.UI var dx = center.X - x * State.Instance.TileSize - State.Instance.ViewportCenter.X; var dy = center.Y - y * State.Instance.TileSize - State.Instance.ViewportCenter.Y; State.Instance.ViewportCenter = new Vector3(State.Instance.ViewportCenter.X + dx, State.Instance.ViewportCenter.Y + dy, State.Instance.ViewportCenter.Z); - } private void OnMenuCampaignNew(object sender, EventArgs e) @@ -349,13 +337,7 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "New campaign" - }; - var content = new CampaignWindow(CommunicationManager, _messenger); - window.Content = content; - window.ShowModal(Desktop); + new CampaignWindow(CommunicationManager, _messenger).ShowInModalWindow(Desktop, "New campaign"); ; } private async void OnMenuCampaignOpen(object sender, EventArgs e) @@ -365,31 +347,9 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "Campaigns" - }; - var content = new CampaignList(CommunicationManager, _messenger); await content.LoadCampaigns(); - - window.Content = content; - - window.ShowModal(Desktop); - } - - private void OnMapSelected(object sender, EventArgs e) - { - var item = sender as ListItem; - var localContent = item.GetParentContentInWindow(); - - var list = item.Parent as Grid; - for (var i = 0; i < list.ChildrenCount; i++) - { - var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; - currentItem.Background = new SolidBrush("#D9D9D9FF"); - } - item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); + content.ShowInModalWindow(Desktop, "Campaigns"); } private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) @@ -399,18 +359,11 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "Players" - }; - var content = new PlayerList(CommunicationManager); await content.LoadPlayers(); - - window.Content = content; - - window.ShowModal(Desktop); + content.ShowInModalWindow(Desktop, "Players"); } + private async void OnMenuMapOpen(object sender, EventArgs e) { if (!((MenuItem)sender).Enabled) @@ -418,34 +371,11 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "Maps" - }; - - var content = new MapList(); - var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName); - foreach (var campaign in campaigns) - { - var item = new ListItem(); - item.ItemName.Text = campaign.SessionName; - item.TouchUp += OnMapSelected; - content.StackCampaignsList.AddChild(item); - } - - content.BtnNewCampaign.Click += (s, e) => - { - window.Close(); - OnMenuMapNew(s, e); - }; - - window.Content = content; - - window.ShowModal(Desktop); + var content = new MapList(CommunicationManager); + await content.LoadMaps(); + content.ShowInModalWindow(Desktop, "Maps"); } - - private async void OnButtonJoinSessionClicked(object sender, EventArgs e) { var localContent = ((TextButton)sender).GetParentContentInWindow(); @@ -496,9 +426,6 @@ namespace Sledgemapper.UI localContent.Window.Close(); } } - - - private void OnBtnToolbarRoomClicked(object sender, EventArgs e) { State.Instance.InsertMode = InsertMode.NewRoom; @@ -532,61 +459,14 @@ namespace Sledgemapper.UI return; } - Window window = new() - { - Title = "New map" - }; - - var content = new MapWindow(); - //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonNewMapClicked; - window.Content = content; - - window.ShowModal(Desktop); - content.TxtCampaign.SetKeyboardFocus(); - } - - private async void OnButtonNewMapClicked(object sender, EventArgs e) - { - Container container = ((TextButton)sender).Parent; - while (!(container is Window)) - { - container = container.Parent; - } - var localWindow = (Window)container; - var localContent = localWindow.Content as MapWindow; - var isValid = localContent.TxtCampaign.ValidateTextbox(); - if (!isValid) - { - return; - } - - var successful = false; - try - { - await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.TxtCampaign.Text); - - } - catch (Exception ex) - { - SentrySdk.CaptureException(ex); - } - - localWindow.Close(); + new MapWindow(CommunicationManager).ShowInModalWindow(Desktop, "New map"); } //TODO Refactor private void EditNote(Note note) { State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; - Window window = new() - { - Title = $" Note on {note.X}:{note.Y}" - }; - var noteWindow = new NoteWindow(CommunicationManager, note); - - window.Content = noteWindow; - window.ShowModal(Desktop); + new NoteWindow(CommunicationManager, note).ShowInModalWindow(Desktop, $" Note on {note.X}:{note.Y}"); } } } \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index 45084e3..054a112 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 16/09/2021 12:26:31 */ +/* Generated by MyraPad at 16/09/2021 14:53:34 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -254,8 +254,9 @@ namespace Sledgemapper.UI ScrOverlay.Content = GridOverlays; TxtOverlaySearch = new TextBox(); - TxtOverlaySearch.Height = 40; - TxtOverlaySearch.Margin = new Thickness(0, 4); + TxtOverlaySearch.Height = 25; + TxtOverlaySearch.BorderThickness = new Thickness(1); + TxtOverlaySearch.Border = new SolidBrush("#000000FF"); TxtOverlaySearch.Id = "TxtOverlaySearch"; var verticalStackPanel2 = new VerticalStackPanel(); @@ -273,21 +274,21 @@ namespace Sledgemapper.UI verticalSplitPane1.Widgets.Add(verticalStackPanel2); var label1 = new Label(); - label1.Text = "Connection status:"; + label1.Text = "Connection:"; lblConnectionStatus = new Label(); lblConnectionStatus.Text = "Disconnected"; - lblConnectionStatus.MinWidth = 100; + lblConnectionStatus.MinWidth = 50; lblConnectionStatus.Id = "lblConnectionStatus"; var verticalSeparator1 = new VerticalSeparator(); var label2 = new Label(); - label2.Text = "Username:"; + label2.Text = "Initials:"; lblUsername = new Label(); lblUsername.Text = "n/a"; - lblUsername.MinWidth = 100; + lblUsername.MinWidth = 50; lblUsername.Id = "lblUsername"; var verticalSeparator2 = new VerticalSeparator(); @@ -297,7 +298,7 @@ namespace Sledgemapper.UI lblCampaign = new Label(); lblCampaign.Text = "n/a"; - lblCampaign.MinWidth = 100; + lblCampaign.MinWidth = 50; lblCampaign.Id = "lblCampaign"; var verticalSeparator3 = new VerticalSeparator(); @@ -307,7 +308,7 @@ namespace Sledgemapper.UI lblMap = new Label(); lblMap.Text = "n/a"; - lblMap.MinWidth = 100; + lblMap.MinWidth = 50; lblMap.Id = "lblMap"; var horizontalStackPanel1 = new HorizontalStackPanel(); diff --git a/Sledgemapper/UI/MainWidget.xmmp b/Sledgemapper/UI/MainWidget.xmmp index 1bcc3ab..aa41526 100644 --- a/Sledgemapper/UI/MainWidget.xmmp +++ b/Sledgemapper/UI/MainWidget.xmmp @@ -72,24 +72,24 @@ - + - \ No newline at end of file diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs new file mode 100644 index 0000000..b594d09 --- /dev/null +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -0,0 +1,55 @@ +/* Generated by MyraPad at 03/09/2021 17:13:57 */ +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI; +using System; +using System.Threading.Tasks; + +namespace Sledgemapper.UI +{ + public partial class MapList + { + public CommunicationManager CommunicationManager { get; } + + public MapList(CommunicationManager communicationManager) + { + CommunicationManager= communicationManager; + BuildUI(); + BtnNewCampaign.Click += (s, e) => + { + OnMenuMapNew(s, e); + this.GetContainingWindow().Close(); + }; + } + + public async Task LoadMaps() + { + var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName); + foreach (var campaign in campaigns) + { + var item = new ListItem(); + item.ItemName.Text = campaign.SessionName; + item.TouchUp += OnMapSelected; + StackCampaignsList.AddChild(item); + } + } + + private void OnMapSelected(object sender, EventArgs e) + { + var item = sender as ListItem; + var localContent = item.GetParentContentInWindow(); + + var list = item.Parent as Grid; + for (var i = 0; i < list.ChildrenCount; i++) + { + var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; + currentItem.Background = new SolidBrush("#D9D9D9FF"); + } + item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); + } + + private void OnMenuMapNew(object sender, EventArgs e) + { + new MapWindow(CommunicationManager).ShowInModalWindow(Desktop, "New map"); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/MapList.Custom.xmmp b/Sledgemapper/UI/MapList.Custom.xmmp new file mode 100644 index 0000000..1e6fef5 --- /dev/null +++ b/Sledgemapper/UI/MapList.Custom.xmmp @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/Sledgemapper/UI/MapWindow.Custom.cs b/Sledgemapper/UI/MapWindow.Custom.cs new file mode 100644 index 0000000..cdeece3 --- /dev/null +++ b/Sledgemapper/UI/MapWindow.Custom.cs @@ -0,0 +1,48 @@ +/* Generated by MyraPad at 02/09/2021 16:26:04 */ +using Myra.Graphics2D.UI; +using Sentry; +using System; + +namespace Sledgemapper.UI +{ + public partial class MapWindow + { + public CommunicationManager CommunicationManager { get; } + + public MapWindow(CommunicationManager communicationManager) + { + CommunicationManager= communicationManager; + BuildUI(); + BtnNewCampaign.Click += OnButtonNewMapClicked; + } + + private async void OnButtonNewMapClicked(object sender, EventArgs e) + { + Container container = ((TextButton)sender).Parent; + while (!(container is Window)) + { + container = container.Parent; + } + var localWindow = (Window)container; + var localContent = localWindow.Content as MapWindow; + var isValid = localContent.TxtCampaign.ValidateTextbox(); + if (!isValid) + { + return; + } + + var successful = false; + try + { + await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.TxtCampaign.Text); + + } + catch (Exception ex) + { + SentrySdk.CaptureException(ex); + } + + localWindow.Close(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/MapWindow.cs b/Sledgemapper/UI/MapWindow.cs index ba6a9c4..a386270 100644 --- a/Sledgemapper/UI/MapWindow.cs +++ b/Sledgemapper/UI/MapWindow.cs @@ -1,4 +1,8 @@ /* Generated by MyraPad at 02/09/2021 16:26:04 */ +using Myra.Graphics2D.UI; +using Sentry; +using System; + namespace Sledgemapper.UI { public partial class MapWindow @@ -6,6 +10,9 @@ namespace Sledgemapper.UI public MapWindow() { BuildUI(); - } - } + + } + + + } } \ No newline at end of file diff --git a/Sledgemapper/UI/NoteList.Custom.cs b/Sledgemapper/UI/NoteList.Custom.cs index bcca2b7..919cc33 100644 --- a/Sledgemapper/UI/NoteList.Custom.cs +++ b/Sledgemapper/UI/NoteList.Custom.cs @@ -38,14 +38,7 @@ namespace Sledgemapper.UI private void EditNote(Note note) { State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; - Window window = new() - { - Title = $" Note on {note.X}:{note.Y}" - }; - var noteWindow = new NoteWindow(CommunicationManager, note); - - window.Content = noteWindow; - window.ShowModal(Desktop); + new NoteWindow(CommunicationManager, note).ShowInModalWindow(Desktop, $" Note on {note.X}:{note.Y}"); } } } \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerList.Custom.cs b/Sledgemapper/UI/PlayerList.Custom.cs index 9a981fa..8389fea 100644 --- a/Sledgemapper/UI/PlayerList.Custom.cs +++ b/Sledgemapper/UI/PlayerList.Custom.cs @@ -32,14 +32,7 @@ namespace Sledgemapper.UI private void ShowAddPLayerWindow() { - Window window = new() - { - Title = "Invite player" - }; - var content = new PlayerWindow(CommunicationManager); - window.Content = content; - window.ShowModal(Desktop); - + new PlayerWindow(CommunicationManager).ShowInModalWindow(Desktop, "Invite player"); } } } \ No newline at end of file From 8c6df57fb197939f25cdecea56cab0e6e3b85a77 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 15:32:16 +0100 Subject: [PATCH 53/81] minor stuff --- Sledgemapper/UI/CampaignList.Custom.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 577aca1..9277aeb 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -9,9 +9,10 @@ namespace Sledgemapper.UI { public partial class CampaignList { - private readonly CommunicationManager CommunicationManager; - private readonly TinyMessengerHub Messenger; - private bool campaignSelected; + private CommunicationManager CommunicationManager { get; } + private TinyMessengerHub Messenger { get; } + + private bool _campaignSelected; public CampaignList(CommunicationManager communicationManager, TinyMessengerHub messenger) { @@ -27,9 +28,9 @@ namespace Sledgemapper.UI BtnLoadCampaign.Click += (s, e) => { - if (campaignSelected) + if (_campaignSelected) { - campaignSelected = false; + _campaignSelected = false; Messenger.Publish(new CampaignSelectedMessage(this)); this.GetContainingWindow().Close(); } @@ -63,7 +64,7 @@ namespace Sledgemapper.UI currentItem.Background = new SolidBrush("#D9D9D9FF"); } item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); - campaignSelected = true; + _campaignSelected = true; } public async Task LoadCampaigns() From e18cbb157c9025dcb0fb2e5b80503994d661d440 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 15:47:10 +0100 Subject: [PATCH 54/81] almost completed map load flow --- Sledgemapper/IMapApi.cs | 4 +++ Sledgemapper/Messages/MapOpenedMessage.cs | 2 ++ Sledgemapper/State.cs | 1 + Sledgemapper/UI/MainWidget.Custom.cs | 34 +++++++++++------------ Sledgemapper/UI/MapList.Custom.cs | 31 ++++++++++++++++----- 5 files changed, 48 insertions(+), 24 deletions(-) diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 0878062..327f2ac 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -76,6 +76,10 @@ namespace Sledgemapper [Get("/campaign/{campaignName}/maps")] Task> GetMaps(string campaignName); + [Get("/map/{campaignName}/{mapName}")] + Task GetMap(string campaignName, string mapName); + + [Post("/campaign/{campaignName}/players/{email}")] Task InvitePlayer(string campaignName, string email); } diff --git a/Sledgemapper/Messages/MapOpenedMessage.cs b/Sledgemapper/Messages/MapOpenedMessage.cs index 2690b10..a52055b 100644 --- a/Sledgemapper/Messages/MapOpenedMessage.cs +++ b/Sledgemapper/Messages/MapOpenedMessage.cs @@ -2,8 +2,10 @@ namespace Sledgemapper.Messages { public class MapOpenedMessage : TinyMessenger.TinyMessageBase { + public string MapName { get; set; } public MapOpenedMessage(object sender) : base(sender) { } + } } \ No newline at end of file diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 1b5cf1f..05bc794 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -59,6 +59,7 @@ namespace Sledgemapper public string CampaignName { get; set; } public bool ShowCellNumbers { get; set; } public Vector3 ViewportCenter { get; set; } + public string MapName { get; internal set; } //public State() //{ diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index caae0be..457693c 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -17,11 +17,11 @@ namespace Sledgemapper.UI { public partial class MainWidget { - private readonly CommunicationManager CommunicationManager; + private CommunicationManager CommunicationManager { get; } - private readonly TinyMessengerHub _messenger; + private TinyMessengerHub Messenger { get; } - private readonly GameWindow Window; + private GameWindow Window { get; } public MainWidget(CommunicationManager communicationManager, TinyMessengerHub messenger, GameWindow window) { @@ -29,7 +29,7 @@ namespace Sledgemapper.UI CommunicationManager = communicationManager; Window = window; - _messenger = messenger; + Messenger = messenger; MenuConnectLogin.Selected += OnMenuConnectLoginSelected; MenuConnectSync.Selected += OnMenuConnectSyncSelected; MenuFileLoad.Selected += OnMenuFileLoadSelected; @@ -63,11 +63,11 @@ namespace Sledgemapper.UI BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; - _messenger.Subscribe(OnLoginSuccesfulMessage); - _messenger.Subscribe(OnSignalrConnectionUpdateMessage); - _messenger.Subscribe(OnMapOpenedMessage); - _messenger.Subscribe(OnCenterOnTileMessage); - _messenger.Subscribe(OnCampaignSelectedMessage); + Messenger.Subscribe(OnLoginSuccesfulMessage); + Messenger.Subscribe(OnSignalrConnectionUpdateMessage); + Messenger.Subscribe(OnMapOpenedMessage); + Messenger.Subscribe(OnCenterOnTileMessage); + Messenger.Subscribe(OnCampaignSelectedMessage); } private void OnCampaignSelectedMessage(CampaignSelectedMessage obj) @@ -85,7 +85,7 @@ namespace Sledgemapper.UI private void OnMapOpenedMessage(MapOpenedMessage obj) { - lblMap.Text = CommunicationManager.SessionData.SessionName; + lblMap.Text = obj.MapName; MenuConnectSync.Enabled = true; MenuConnectUpload.Enabled = true; CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; @@ -141,7 +141,7 @@ namespace Sledgemapper.UI Title = "Login" }; - var content = new LoginRegisterWindow(CommunicationManager, _messenger); + var content = new LoginRegisterWindow(CommunicationManager, Messenger); window.Content = content; window.ShowModal(Desktop); } @@ -159,7 +159,7 @@ namespace Sledgemapper.UI Title = "New mapping session" }; - var content = new SessionWindow(CommunicationManager, _messenger); + var content = new SessionWindow(CommunicationManager, Messenger); window.Content = content; window.ShowModal(Desktop); @@ -293,7 +293,7 @@ namespace Sledgemapper.UI return; } - new SessionWindow(CommunicationManager, _messenger).ShowInModalWindow(Desktop, "Join mapping session"); + new SessionWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Join mapping session"); } private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) @@ -313,7 +313,7 @@ namespace Sledgemapper.UI Title = "Notes" }; - new NoteList(CommunicationManager, _messenger).ShowInModalWindow(Desktop, "Notes"); + new NoteList(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Notes"); } private void CenterOnSelectedTile() @@ -337,7 +337,7 @@ namespace Sledgemapper.UI return; } - new CampaignWindow(CommunicationManager, _messenger).ShowInModalWindow(Desktop, "New campaign"); ; + new CampaignWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New campaign"); ; } private async void OnMenuCampaignOpen(object sender, EventArgs e) @@ -347,7 +347,7 @@ namespace Sledgemapper.UI return; } - var content = new CampaignList(CommunicationManager, _messenger); + var content = new CampaignList(CommunicationManager, Messenger); await content.LoadCampaigns(); content.ShowInModalWindow(Desktop, "Campaigns"); } @@ -371,7 +371,7 @@ namespace Sledgemapper.UI return; } - var content = new MapList(CommunicationManager); + var content = new MapList(CommunicationManager, Messenger); await content.LoadMaps(); content.ShowInModalWindow(Desktop, "Maps"); } diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index b594d09..2b2fdda 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -1,24 +1,40 @@ /* Generated by MyraPad at 03/09/2021 17:13:57 */ using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; +using Sledgemapper.Messages; using System; using System.Threading.Tasks; +using TinyMessenger; namespace Sledgemapper.UI { - public partial class MapList - { - public CommunicationManager CommunicationManager { get; } + public partial class MapList + { + private CommunicationManager CommunicationManager { get; } + private TinyMessengerHub Messenger { get; } - public MapList(CommunicationManager communicationManager) - { - CommunicationManager= communicationManager; - BuildUI(); + private string _selectedMap; + public MapList(CommunicationManager communicationManager, TinyMessengerHub messenger) + { + CommunicationManager = communicationManager; + Messenger = messenger; + + BuildUI(); BtnNewCampaign.Click += (s, e) => { OnMenuMapNew(s, e); this.GetContainingWindow().Close(); }; + + BtnLoadCampaign.Click += BtnLoadCampaign_Click; + } + + private void BtnLoadCampaign_Click(object sender, EventArgs e) + { + State.Instance.MapName = _selectedMap; + var map = CommunicationManager.Api.GetMap(State.Instance.CampaignName, State.Instance.MapName); + Messenger.Publish(new MapOpenedMessage(this) { MapName = State.Instance.MapName }); + this.GetContainingWindow().Close(); } public async Task LoadMaps() @@ -45,6 +61,7 @@ namespace Sledgemapper.UI currentItem.Background = new SolidBrush("#D9D9D9FF"); } item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); + _selectedMap = item.ItemName.Text; } private void OnMenuMapNew(object sender, EventArgs e) From 155cb4ea9a9c8e46a9f629ee94ce704b3828ceac Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 16:34:44 +0100 Subject: [PATCH 55/81] wiring up map updates --- .../Commands/GetCampaignMapsCommand.cs | 21 +++++++++ .../Commands/GetCampaignPlayersCommand.cs | 15 +------ .../Commands/NewOverlayCommand.cs | 2 +- Sledgemapper.Api/Controllers/MapController.cs | 2 +- .../Handlers/GetCampaignMapsCommandHandler.cs | 43 +++++++++++++++++++ .../GetCampaignPlayersCommandHandler.cs | 32 -------------- .../Handlers/NewOverlayCommandHandler.cs | 25 ++++++++--- Sledgemapper/CommunicationManager.cs | 2 +- Sledgemapper/IMapApi.cs | 4 +- Sledgemapper/State.cs | 2 + Sledgemapper/UI/CampaignList.Custom.cs | 3 +- Sledgemapper/UI/MainWidget.Custom.cs | 1 + Sledgemapper/UI/MapList.Custom.cs | 5 +++ 13 files changed, 99 insertions(+), 58 deletions(-) create mode 100644 Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs create mode 100644 Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs diff --git a/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs b/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs new file mode 100644 index 0000000..2a80b76 --- /dev/null +++ b/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using MediatR; +using Sledgemapper.Shared.Entities; + +namespace Sledgemapper.Api.Commands +{ + public class GetCampaignMapsCommand : IRequest> + { + public double Timestamp { get; private set; } + public string CampaignName { get; private set; } + public string UserId { get; private set; } + + public GetCampaignMapsCommand(string campaingName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignName = campaingName; + UserId = userId; + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs index 44d7f30..01fa504 100644 --- a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs +++ b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs @@ -10,6 +10,7 @@ namespace Sledgemapper.Api.Commands public double Timestamp { get; private set; } public string CampaignName { get; private set; } public string UserId { get; private set; } + public GetCampaignPlayersCommand(string campaingName, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); @@ -17,18 +18,4 @@ namespace Sledgemapper.Api.Commands UserId = userId; } } - - public class GetCampaignMapsCommand : IRequest> - { - public double Timestamp { get; private set; } - public string CampaignName { get; private set; } - public string UserId { get; private set; } - public GetCampaignMapsCommand(string campaingName, string userId) - { - Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - CampaignName = campaingName; - UserId = userId; - } - } - } \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/NewOverlayCommand.cs b/Sledgemapper.Api/Commands/NewOverlayCommand.cs index 4fdb8e1..53a3cda 100644 --- a/Sledgemapper.Api/Commands/NewOverlayCommand.cs +++ b/Sledgemapper.Api/Commands/NewOverlayCommand.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Commands { public Overlay Overlay { get; private set; } - public NewOverlayCommand(string sessionName, Overlay overlay, string userId) : base(sessionName, userId) + public NewOverlayCommand(string campaignId, string mapId, Overlay overlay, string userId) : base(campaignId, mapId, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index c25d1ff..e4312f9 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -40,7 +40,7 @@ namespace Sledgemapper.Api.Controllers [HttpPost("overlay")] public async Task Post(string campaign, string mapName, [FromBody] Overlay overlay) { - await _mediator.Send(new NewOverlayCommand(mapName, overlay, UserId)); + await _mediator.Send(new NewOverlayCommand(campaign, mapName, overlay, UserId)); } [HttpPost("wall")] diff --git a/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs new file mode 100644 index 0000000..b0bde06 --- /dev/null +++ b/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs @@ -0,0 +1,43 @@ +using MediatR; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; +using Sledgemapper.Shared.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Sledgemapper.Api.Handlers +{ + public class GetCampaignMapsCommandHandler : IRequestHandler> + { + private readonly IMediator _mediator; + private readonly SledgemapperDbContext _dbcontext; + + public GetCampaignMapsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + _mediator = mediator; + _dbcontext = dbcontext; + } + + public async Task> Handle(GetCampaignMapsCommand command, CancellationToken cancellationToken) + { + try + { + var user = await _dbcontext.Users.FindAsync(command.UserId); + _dbcontext.Attach(user); + + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + + var maps = campaign.Maps.Select(session => new Session { SessionName = session.SessionName, SessionId = session.SessionId }).ToList(); + return maps; + } + catch (Exception ex) + { + } + return null; + } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs index 9446d86..7b606c5 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs @@ -40,36 +40,4 @@ namespace Sledgemapper.Api.Handlers return null; } } - - - - public class GetCampaignMapsCommandHandler : IRequestHandler> - { - private readonly IMediator _mediator; - private readonly SledgemapperDbContext _dbcontext; - - public GetCampaignMapsCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) - { - _mediator = mediator; - _dbcontext = dbcontext; - } - - public async Task> Handle(GetCampaignMapsCommand command, CancellationToken cancellationToken) - { - try - { - var user = await _dbcontext.Users.FindAsync(command.UserId); - _dbcontext.Attach(user); - - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); - - var maps = campaign.Maps.Select(session => new Session { SessionName = session.SessionName, SessionId = session.SessionId }).ToList(); - return maps; - } - catch (Exception ex) - { - } - return null; - } - } } \ No newline at end of file diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 54bfd2c..9bd52de 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -7,6 +7,8 @@ using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; +using System; +using Microsoft.EntityFrameworkCore; namespace Sledgemapper.Api.Handlers { @@ -18,21 +20,32 @@ namespace Sledgemapper.Api.Handlers public NewOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - public async Task Handle(NewOverlayCommand notification, CancellationToken cancellationToken) + public async Task Handle(NewOverlayCommand command, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Overlay); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); + var user = await _dbcontext.Users.FindAsync(command.UserId); + _dbcontext.Attach(user); + + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == new Guid(command.Campaign) && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + + var maps = campaign.Maps.Any(s => s.SessionId == int.Parse(command.SessionName)); + if (!maps) + { + throw new Exception("Unauthorized"); + } + + var jsonString = JsonSerializer.Serialize(command.Overlay); + var session = _dbcontext.Sessions.First(m => m.SessionId == int.Parse(command.SessionName)); _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", SessionId = session.SessionId, Type = "O", - Timestamp = notification.Timestamp, + Timestamp = command.Timestamp, Object = jsonString, - UserId = notification.UserId, + UserId = command.UserId, }); await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewOverlayNotification(session, notification.Overlay, notification.UserId)); + await _mediator.Publish(new NewOverlayNotification(session, command.Overlay, command.UserId)); return true; } } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 515de91..9cdc231 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -199,7 +199,7 @@ namespace Sledgemapper Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, SessionData.SessionName).ConfigureAwait(false))); break; case Overlay overlay: - Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay,State.Instance.CampaignId.ToString(), State.Instance.MapId.ToString()).ConfigureAwait(false))); break; case Wall wall: Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, SessionData.SessionName).ConfigureAwait(false))); diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 327f2ac..424632c 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -20,8 +20,8 @@ namespace Sledgemapper [Post("/session/{sessionName}/tile")] Task NewTile([Body] Tile tile, string sessionName); - [Post("/session/{sessionName}/overlay")] - Task NewOverlay([Body] Overlay overlay, string sessionName); + [Post("/map/{campaignId}/{mapId}/overlay")] + Task NewOverlay([Body] Overlay overlay, string campaignId, string mapId); [Post("/session/{sessionName}/note")] Task NewNote([Body] Note note, string sessionName); diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 05bc794..865626e 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -60,6 +60,8 @@ namespace Sledgemapper public bool ShowCellNumbers { get; set; } public Vector3 ViewportCenter { get; set; } public string MapName { get; internal set; } + public Guid CampaignId { get; internal set; } + public int MapId { get; internal set; } //public State() //{ diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index 9277aeb..a100d54 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -57,6 +57,7 @@ namespace Sledgemapper.UI var item = sender as ListItem; State.Instance.CampaignName = item.ItemName.Text; + State.Instance.CampaignId = (Guid)item.Tag; var list = item.Parent as Grid; for (var i = 0; i < list.ChildrenCount; i++) { @@ -74,7 +75,7 @@ namespace Sledgemapper.UI { var item = new ListItem(); item.ItemName.Text = campaign.Name; - + item.Tag = campaign.Id; item.TouchUp += OnCampaignSelected; StackCampaignsList.AddChild(item); } diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 457693c..295aec4 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -73,6 +73,7 @@ namespace Sledgemapper.UI private void OnCampaignSelectedMessage(CampaignSelectedMessage obj) { lblCampaign.Text = State.Instance.CampaignName; + MenuMapNew.Enabled = true; MenuMapOpen.Enabled = true; MenuCampaignPlayers.Enabled = true; diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index 2b2fdda..5fa4038 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -2,6 +2,7 @@ using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; using Sledgemapper.Messages; +using Sledgemapper.Shared.Entities; using System; using System.Threading.Tasks; using TinyMessenger; @@ -14,6 +15,7 @@ namespace Sledgemapper.UI private TinyMessengerHub Messenger { get; } private string _selectedMap; + private int _selectedMapId; public MapList(CommunicationManager communicationManager, TinyMessengerHub messenger) { CommunicationManager = communicationManager; @@ -32,6 +34,7 @@ namespace Sledgemapper.UI private void BtnLoadCampaign_Click(object sender, EventArgs e) { State.Instance.MapName = _selectedMap; + State.Instance.MapId = _selectedMapId; var map = CommunicationManager.Api.GetMap(State.Instance.CampaignName, State.Instance.MapName); Messenger.Publish(new MapOpenedMessage(this) { MapName = State.Instance.MapName }); this.GetContainingWindow().Close(); @@ -44,6 +47,7 @@ namespace Sledgemapper.UI { var item = new ListItem(); item.ItemName.Text = campaign.SessionName; + item.Tag = campaign.SessionId; item.TouchUp += OnMapSelected; StackCampaignsList.AddChild(item); } @@ -62,6 +66,7 @@ namespace Sledgemapper.UI } item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); _selectedMap = item.ItemName.Text; + _selectedMapId = (int)item.Tag; } private void OnMenuMapNew(object sender, EventArgs e) From 195533bce0981a5d61cb09ee587cd3c071249be7 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 16:51:07 +0100 Subject: [PATCH 56/81] migrating session/map it to guid. --- Sledgemapper.Api/Commands/BaseCommand.cs | 10 +- .../Commands/NewCampaignCommand.cs | 19 + .../Commands/NewOverlayCommand.cs | 3 +- .../Commands/NewSessionCommand.cs | 16 - Sledgemapper.Api/Controllers/MapController.cs | 3 +- Sledgemapper.Api/Core/Entities/MapLog.cs | 3 +- Sledgemapper.Api/Core/Entities/Session.cs | 2 +- Sledgemapper.Api/Core/Entities/SessionUser.cs | 3 +- Sledgemapper.Api/Core/Entities/Snapshot.cs | 4 +- .../Handlers/NewOverlayCommandHandler.cs | 7 +- .../Handlers/StartNewSessionHandler.cs | 2 +- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 11 +- ...20210916154553_SessionIdToGuid.Designer.cs | 508 ++++++++++++++++++ .../20210916154553_SessionIdToGuid.cs | 80 +++ .../SledgemapperDbContextModelSnapshot.cs | 16 +- Sledgemapper.Shared/Entities/Session.cs | 2 +- Sledgemapper/State.cs | 65 +-- 17 files changed, 672 insertions(+), 82 deletions(-) create mode 100644 Sledgemapper.Api/Commands/NewCampaignCommand.cs create mode 100644 Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.cs diff --git a/Sledgemapper.Api/Commands/BaseCommand.cs b/Sledgemapper.Api/Commands/BaseCommand.cs index e4def4f..9038312 100644 --- a/Sledgemapper.Api/Commands/BaseCommand.cs +++ b/Sledgemapper.Api/Commands/BaseCommand.cs @@ -7,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public double Timestamp { get; private set; } public string SessionName { get; private set; } - public string Campaign { get; private set; } + public Guid Campaign { get; private set; } public string UserId { get; private set; } public BaseCommand(string sessionName, string userId) @@ -18,6 +18,14 @@ namespace Sledgemapper.Api.Commands } public BaseCommand(string campaign, string sessionName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + SessionName = sessionName; + Campaign = new Guid(campaign); + UserId = userId; + } + + public BaseCommand(Guid campaign, string sessionName, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); SessionName = sessionName; diff --git a/Sledgemapper.Api/Commands/NewCampaignCommand.cs b/Sledgemapper.Api/Commands/NewCampaignCommand.cs new file mode 100644 index 0000000..26399bf --- /dev/null +++ b/Sledgemapper.Api/Commands/NewCampaignCommand.cs @@ -0,0 +1,19 @@ +using System; +using MediatR; + +namespace Sledgemapper.Api.Commands +{ + public class NewCampaignCommand : IRequest + { + public double Timestamp { get; private set; } + public string CampaignName { get; private set; } + public string UserId { get; private set; } + public NewCampaignCommand(string campaingName, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignName = campaingName; + UserId = userId; + } + } + +} \ No newline at end of file diff --git a/Sledgemapper.Api/Commands/NewOverlayCommand.cs b/Sledgemapper.Api/Commands/NewOverlayCommand.cs index 53a3cda..a342ec0 100644 --- a/Sledgemapper.Api/Commands/NewOverlayCommand.cs +++ b/Sledgemapper.Api/Commands/NewOverlayCommand.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using System; namespace Sledgemapper.Api.Commands { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Overlay Overlay { get; private set; } - public NewOverlayCommand(string campaignId, string mapId, Overlay overlay, string userId) : base(campaignId, mapId, userId) + public NewOverlayCommand(Guid campaignId, string mapId, Overlay overlay, string userId) : base(campaignId, mapId, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Commands/NewSessionCommand.cs b/Sledgemapper.Api/Commands/NewSessionCommand.cs index c314d44..bc73c66 100644 --- a/Sledgemapper.Api/Commands/NewSessionCommand.cs +++ b/Sledgemapper.Api/Commands/NewSessionCommand.cs @@ -1,6 +1,3 @@ -using System; -using MediatR; - namespace Sledgemapper.Api.Commands { public class NewSessionCommand : BaseCommand @@ -10,17 +7,4 @@ namespace Sledgemapper.Api.Commands } } - public class NewCampaignCommand : IRequest - { - public double Timestamp { get; private set; } - public string CampaignName { get; private set; } - public string UserId { get; private set; } - public NewCampaignCommand(string campaingName, string userId) - { - Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - CampaignName = campaingName; - UserId = userId; - } - } - } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index e4312f9..30943d5 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; using Sledgemapper.Shared.Entities; +using System; using System.Linq; using System.Threading.Tasks; @@ -38,7 +39,7 @@ namespace Sledgemapper.Api.Controllers } [HttpPost("overlay")] - public async Task Post(string campaign, string mapName, [FromBody] Overlay overlay) + public async Task Post(Guid campaign, string mapName, [FromBody] Overlay overlay) { await _mediator.Send(new NewOverlayCommand(campaign, mapName, overlay, UserId)); } diff --git a/Sledgemapper.Api/Core/Entities/MapLog.cs b/Sledgemapper.Api/Core/Entities/MapLog.cs index ac1c86b..ea70dc1 100644 --- a/Sledgemapper.Api/Core/Entities/MapLog.cs +++ b/Sledgemapper.Api/Core/Entities/MapLog.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; namespace Sledgemapper.Api.Models @@ -12,7 +13,7 @@ namespace Sledgemapper.Api.Models public string UserId{get;set;} [Required] - public int SessionId { get; set; } + public Guid SessionId { get; set; } [Required] [MaxLength(1)] diff --git a/Sledgemapper.Api/Core/Entities/Session.cs b/Sledgemapper.Api/Core/Entities/Session.cs index ef08106..3b9a5d0 100644 --- a/Sledgemapper.Api/Core/Entities/Session.cs +++ b/Sledgemapper.Api/Core/Entities/Session.cs @@ -8,7 +8,7 @@ namespace Sledgemapper.Api.Models public class Session { [Key] - public int SessionId { get; set; } + public Guid SessionId { get; set; } [Required] public Guid CampaignId { get; set; } diff --git a/Sledgemapper.Api/Core/Entities/SessionUser.cs b/Sledgemapper.Api/Core/Entities/SessionUser.cs index 86ba520..8ed2c70 100644 --- a/Sledgemapper.Api/Core/Entities/SessionUser.cs +++ b/Sledgemapper.Api/Core/Entities/SessionUser.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; namespace Sledgemapper.Api.Models @@ -8,7 +9,7 @@ namespace Sledgemapper.Api.Models public int SessionUserId { get; set; } [Required] - public int SessionId { get; set; } + public Guid SessionId { get; set; } [Required] public int UserId { get; set; } diff --git a/Sledgemapper.Api/Core/Entities/Snapshot.cs b/Sledgemapper.Api/Core/Entities/Snapshot.cs index 31b5e55..2f9b797 100644 --- a/Sledgemapper.Api/Core/Entities/Snapshot.cs +++ b/Sledgemapper.Api/Core/Entities/Snapshot.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; namespace Sledgemapper.Api.Models @@ -9,8 +10,7 @@ namespace Sledgemapper.Api.Models public int SnapshotId { get; set; } [Required] - public int SessionId { get; set; } - + public Guid SessionId { get; set; } [Required] public string Object { get; set; } diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 9bd52de..21cba60 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -25,16 +25,17 @@ namespace Sledgemapper.Api.Handlers var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == new Guid(command.Campaign) && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.Campaign && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + + var maps = campaign.Maps.Any(s => s.SessionId == new Guid(command.SessionName)); - var maps = campaign.Maps.Any(s => s.SessionId == int.Parse(command.SessionName)); if (!maps) { throw new Exception("Unauthorized"); } var jsonString = JsonSerializer.Serialize(command.Overlay); - var session = _dbcontext.Sessions.First(m => m.SessionId == int.Parse(command.SessionName)); + var session = _dbcontext.Sessions.First(m => m.SessionId == new Guid(command.SessionName)); _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index 50134ef..78eb1ee 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -21,7 +21,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewSessionCommand notification, CancellationToken cancellationToken) { - var campaign = _dbcontext.Campaigns.First(c => c.CampaignName == notification.Campaign && c.OwnerId == notification.UserId.ToString()); + var campaign = _dbcontext.Campaigns.First(c => c.CampaignId == notification.Campaign && c.OwnerId == notification.UserId.ToString()); _dbcontext.Sessions.Add(new Session { diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 3ad9340..8d2ac0d 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -126,7 +126,16 @@ namespace Sledgemapper.Api.Hubs } } - public async Task UpdatePosition(string sessionName, int sessionId, Tile tile) + //public async Task UpdatePosition(string sessionName, int sessionId, Tile tile) + //{ + // //var userId = int.Parse(Context.User.Identity.Name); + // //var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); + // //var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); + // //var player = new Player { UserId = userId, Initials = user.Initials, Position = tile, Color = UserColors[userId] }; + // //await Clients.Group(sessionName).PlayerUpdate(player); + //} + + public async Task UpdatePosition(string sessionName, Guid sessionId, Tile tile) { var userId = int.Parse(Context.User.Identity.Name); var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); diff --git a/Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.Designer.cs b/Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.Designer.cs new file mode 100644 index 0000000..1b1ec88 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210916154553_SessionIdToGuid")] + partial class SessionIdToGuid + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.HasIndex("CampaignId", "SessionName") + .IsUnique(); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.cs b/Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.cs new file mode 100644 index 0000000..7d7fcca --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210916154553_SessionIdToGuid.cs @@ -0,0 +1,80 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class SessionIdToGuid : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "SessionId", + table: "Snapshots", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.AlterColumn( + name: "SessionId", + table: "SessionUsers", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.AlterColumn( + name: "SessionId", + table: "Sessions", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER") + .OldAnnotation("Sqlite:Autoincrement", true); + + migrationBuilder.AlterColumn( + name: "SessionId", + table: "MapLogs", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "SessionId", + table: "Snapshots", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + + migrationBuilder.AlterColumn( + name: "SessionId", + table: "SessionUsers", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + + migrationBuilder.AlterColumn( + name: "SessionId", + table: "Sessions", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT") + .Annotation("Sqlite:Autoincrement", true); + + migrationBuilder.AlterColumn( + name: "SessionId", + table: "MapLogs", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + } + } +} diff --git a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs index 322320a..547d72f 100644 --- a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs +++ b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs @@ -283,8 +283,8 @@ namespace Sledgemapper.Api.Migrations .HasMaxLength(1) .HasColumnType("TEXT"); - b.Property("SessionId") - .HasColumnType("INTEGER"); + b.Property("SessionId") + .HasColumnType("TEXT"); b.Property("Timestamp") .HasColumnType("REAL"); @@ -305,9 +305,9 @@ namespace Sledgemapper.Api.Migrations modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => { - b.Property("SessionId") + b.Property("SessionId") .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); + .HasColumnType("TEXT"); b.Property("CampaignId") .HasColumnType("TEXT"); @@ -334,8 +334,8 @@ namespace Sledgemapper.Api.Migrations .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); - b.Property("SessionId") - .HasColumnType("INTEGER"); + b.Property("SessionId") + .HasColumnType("TEXT"); b.Property("UserId") .HasColumnType("INTEGER"); @@ -355,8 +355,8 @@ namespace Sledgemapper.Api.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("SessionId") - .HasColumnType("INTEGER"); + b.Property("SessionId") + .HasColumnType("TEXT"); b.Property("Timestamp") .HasColumnType("REAL"); diff --git a/Sledgemapper.Shared/Entities/Session.cs b/Sledgemapper.Shared/Entities/Session.cs index f7ab3ea..a66e0f8 100644 --- a/Sledgemapper.Shared/Entities/Session.cs +++ b/Sledgemapper.Shared/Entities/Session.cs @@ -48,7 +48,7 @@ public class Map:Session public ConcurrentDictionary Pings { get; set; } public List Colors { get; set; } public string SessionName { get; set; } - public int SessionId { get; set; } + public Guid SessionId { get; set; } public ConcurrentDictionary Lines { get; set; } public ConcurrentDictionary Rooms { get; set; } diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 865626e..951af58 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -8,6 +8,26 @@ namespace Sledgemapper { private static readonly State instance = new State(); + public Tile SelectedTile { get; set; } + public Tile HoveredTile { get; set; } + public Wall SelectedWall { get; set; } + public Overlay SelectedOverlay { get; set; } + public SnapPoint SelectedSnapPoint { get; set; } + public Note SelectedNote { get; set; } + public int TileSize { get; set; } + public string CurrentTileId { get; set; } + public string CurrentWallId { get; set; } + public string CurrentOverlayId { get; set; } + public SnapPoint LineStart { get; internal set; } + public float LineWidth { get; internal set; } + public Vector3 ViewportCenter { get; set; } + public InsertMode InsertMode { get; set; } + public bool ShowCellNumbers { get; set; } + public string CampaignName { get; set; } + public Guid CampaignId { get; internal set; } + public string MapName { get; internal set; } + public int MapId { get; internal set; } + // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static State() @@ -37,47 +57,6 @@ namespace Sledgemapper } } - - - - - - public Tile SelectedTile { get; set; } - public Tile HoveredTile { get; set; } - public Wall SelectedWall { get; set; } - public Overlay SelectedOverlay { get; set; } - public SnapPoint SelectedSnapPoint { get; set; } - public Note SelectedNote { get; set; } - public int TileSize { get; set; } - public string CurrentTileId { get; set; } - public string CurrentWallId { get; set; } - public string CurrentOverlayId { get; set; } - public SnapPoint LineStart { get; internal set; } - public float LineWidth { get; internal set; } - - public InsertMode InsertMode; - public string CampaignName { get; set; } - public bool ShowCellNumbers { get; set; } - public Vector3 ViewportCenter { get; set; } - public string MapName { get; internal set; } - public Guid CampaignId { get; internal set; } - public int MapId { get; internal set; } - - //public State() - //{ - // CurrentTileId = ""; - // CurrentWallId = ""; - // CurrentOverlayId = ""; - // SelectedTile = new() { X = 1, Y = 1 }; - // HoveredTile = new() { X = 1, Y = 1 }; - // SelectedWall = new() { X = 1, Y = 1 }; - // SelectedOverlay = new() { X = 1, Y = 1 }; - // SelectedNote = new() { X = 1, Y = 1 }; - // TileSize = 30; - // LineWidth=1; - // ViewportCenter = new(0, 0, 0); - //} - public void SelectClosestWall(Point mousePosition) { var topLeft = new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize); @@ -117,7 +96,6 @@ namespace Sledgemapper return ((p1.X - p2.X) * (p1.X - p2.X) + (p1.Y - p2.Y) * (p1.Y - p2.Y)) < d * d; } - public void SelectClosestSnapPoint(Point mousePosition) { var distance = TileSize / 4; @@ -158,9 +136,8 @@ namespace Sledgemapper { SelectedSnapPoint = new SnapPoint { X = HoveredTile.X, Y = HoveredTile.Y+1, Index = 2 }; } - - } + public void SelectOverlay(Point mousePosition) { SelectedOverlay.X = HoveredTile.X; From d0663e1471db92473c91e9ab5028af6b14afdd7f Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 16 Sep 2021 16:53:10 +0100 Subject: [PATCH 57/81] moving to guids --- Sledgemapper/IMapApi.cs | 3 ++- Sledgemapper/UI/MapWindow.Custom.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 424632c..6376396 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -1,5 +1,6 @@ using Refit; using Sledgemapper.Shared.Entities; +using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -12,7 +13,7 @@ namespace Sledgemapper Task Session(string sessionName); [Post("/map/{campaignName}/{sessionName}")] - Task NewSession(string campaignName, string sessionName); + Task NewSession(Guid campaignid, string sessionName); [Post("/session/{sessionName}/snapshot")] Task SaveSnapshot([Body] Session session, string sessionName); diff --git a/Sledgemapper/UI/MapWindow.Custom.cs b/Sledgemapper/UI/MapWindow.Custom.cs index cdeece3..678e575 100644 --- a/Sledgemapper/UI/MapWindow.Custom.cs +++ b/Sledgemapper/UI/MapWindow.Custom.cs @@ -34,7 +34,7 @@ namespace Sledgemapper.UI var successful = false; try { - await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.TxtCampaign.Text); + await CommunicationManager.Api.NewSession(State.Instance.CampaignId, localContent.TxtCampaign.Text); } catch (Exception ex) From 9abe30904f24ac0b550a5bd02863edda85595c75 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 17 Sep 2021 10:53:03 +0100 Subject: [PATCH 58/81] full flow with overlays --- Sledgemapper.Api/Commands/BaseCommand.cs | 5 +- .../Commands/NewOverlayCommand.cs | 2 +- .../Commands/NewSessionCommand.cs | 4 +- Sledgemapper.Api/Controllers/MapController.cs | 4 +- Sledgemapper.Api/Core/Entities/Campaign.cs | 5 +- Sledgemapper.Api/Core/Entities/Session.cs | 2 + .../Handlers/NewOverlayCommandHandler.cs | 4 +- .../Handlers/StartNewSessionHandler.cs | 12 +- ...0917091001_SessionIdToGuidAuto.Designer.cs | 508 ++++++++++++++++++ .../20210917091001_SessionIdToGuidAuto.cs | 17 + .../Clients/ISledgemapperClient.cs | 4 +- Sledgemapper/CommunicationManager.cs | 2 +- Sledgemapper/IMapApi.cs | 6 +- Sledgemapper/State.cs | 4 +- Sledgemapper/UI/MapList.Custom.cs | 4 +- Sledgemapper/UI/SessionWindow.Custom.cs | 7 +- 16 files changed, 564 insertions(+), 26 deletions(-) create mode 100644 Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.cs diff --git a/Sledgemapper.Api/Commands/BaseCommand.cs b/Sledgemapper.Api/Commands/BaseCommand.cs index 9038312..08d526b 100644 --- a/Sledgemapper.Api/Commands/BaseCommand.cs +++ b/Sledgemapper.Api/Commands/BaseCommand.cs @@ -7,6 +7,7 @@ namespace Sledgemapper.Api.Commands { public double Timestamp { get; private set; } public string SessionName { get; private set; } + public Guid SessionId { get; private set; } public Guid Campaign { get; private set; } public string UserId { get; private set; } @@ -25,10 +26,10 @@ namespace Sledgemapper.Api.Commands UserId = userId; } - public BaseCommand(Guid campaign, string sessionName, string userId) + public BaseCommand(Guid campaign, Guid sessionId, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - SessionName = sessionName; + SessionId = sessionId; Campaign = campaign; UserId = userId; } diff --git a/Sledgemapper.Api/Commands/NewOverlayCommand.cs b/Sledgemapper.Api/Commands/NewOverlayCommand.cs index a342ec0..8d2d659 100644 --- a/Sledgemapper.Api/Commands/NewOverlayCommand.cs +++ b/Sledgemapper.Api/Commands/NewOverlayCommand.cs @@ -7,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Overlay Overlay { get; private set; } - public NewOverlayCommand(Guid campaignId, string mapId, Overlay overlay, string userId) : base(campaignId, mapId, userId) + public NewOverlayCommand(Guid campaignId, Guid mapId, Overlay overlay, string userId) : base(campaignId, mapId, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Commands/NewSessionCommand.cs b/Sledgemapper.Api/Commands/NewSessionCommand.cs index bc73c66..ab42380 100644 --- a/Sledgemapper.Api/Commands/NewSessionCommand.cs +++ b/Sledgemapper.Api/Commands/NewSessionCommand.cs @@ -1,6 +1,8 @@ +using System; + namespace Sledgemapper.Api.Commands { - public class NewSessionCommand : BaseCommand + public class NewSessionCommand : BaseCommand { public NewSessionCommand(string campaign, string sessionName, string userId) : base(campaign, sessionName, userId) { diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index 30943d5..04f3f04 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -19,7 +19,7 @@ namespace Sledgemapper.Api.Controllers public MapController(IMediator mediator) => _mediator = mediator; [HttpPost] - public async Task Post(string campaign, string mapName) + public async Task Post(string campaign, string mapName) { var result = await _mediator.Send(new NewSessionCommand(campaign, mapName, UserId)); return result; @@ -39,7 +39,7 @@ namespace Sledgemapper.Api.Controllers } [HttpPost("overlay")] - public async Task Post(Guid campaign, string mapName, [FromBody] Overlay overlay) + public async Task Post(Guid campaign, Guid mapName, [FromBody] Overlay overlay) { await _mediator.Send(new NewOverlayCommand(campaign, mapName, overlay, UserId)); } diff --git a/Sledgemapper.Api/Core/Entities/Campaign.cs b/Sledgemapper.Api/Core/Entities/Campaign.cs index 7cbadd2..7c9b049 100644 --- a/Sledgemapper.Api/Core/Entities/Campaign.cs +++ b/Sledgemapper.Api/Core/Entities/Campaign.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Models; using Sledgemapper.Entities; @@ -8,8 +9,10 @@ namespace Sledgemapper.Api.Core.Entities { [Index(nameof(CampaignName), nameof(OwnerId), IsUnique = true)] public class Campaign - { + { + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid CampaignId { get; set; } + public string CampaignName { get; set; } public string OwnerId { get; set; } diff --git a/Sledgemapper.Api/Core/Entities/Session.cs b/Sledgemapper.Api/Core/Entities/Session.cs index 3b9a5d0..98daf68 100644 --- a/Sledgemapper.Api/Core/Entities/Session.cs +++ b/Sledgemapper.Api/Core/Entities/Session.cs @@ -1,12 +1,14 @@ using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; namespace Sledgemapper.Api.Models { [Index(nameof(CampaignId), nameof(SessionName), IsUnique = true)] public class Session { + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Key] public Guid SessionId { get; set; } diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 21cba60..3bc0898 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -27,7 +27,7 @@ namespace Sledgemapper.Api.Handlers var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.Campaign && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); - var maps = campaign.Maps.Any(s => s.SessionId == new Guid(command.SessionName)); + var maps = campaign.Maps.Any(s => s.SessionId == command.SessionId); if (!maps) { @@ -35,7 +35,7 @@ namespace Sledgemapper.Api.Handlers } var jsonString = JsonSerializer.Serialize(command.Overlay); - var session = _dbcontext.Sessions.First(m => m.SessionId == new Guid(command.SessionName)); + var session = _dbcontext.Sessions.First(m => m.SessionId == command.SessionId); _dbcontext.MapLogs.Add(new Models.MapLog { Operation = "N", diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index 78eb1ee..f7aab52 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -2,13 +2,14 @@ using MediatR; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Models; +using System; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class StartNewSessionHandler : IRequestHandler + public class StartNewSessionHandler : IRequestHandler { private readonly IMediator _mediator; private readonly SledgemapperDbContext _dbcontext; @@ -19,19 +20,20 @@ namespace Sledgemapper.Api.Handlers _dbcontext = dbcontext; } - public async Task Handle(NewSessionCommand notification, CancellationToken cancellationToken) + public async Task Handle(NewSessionCommand notification, CancellationToken cancellationToken) { var campaign = _dbcontext.Campaigns.First(c => c.CampaignId == notification.Campaign && c.OwnerId == notification.UserId.ToString()); - _dbcontext.Sessions.Add(new Session + var session = new Session { SessionName = notification.SessionName, OwnerUserId = notification.UserId, CampaignId = campaign.CampaignId - }); + }; + _dbcontext.Sessions.Add(session); await _dbcontext.SaveChangesAsync(); - return true; + return session.SessionId; } } } diff --git a/Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.Designer.cs b/Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.Designer.cs new file mode 100644 index 0000000..78a2012 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210917091001_SessionIdToGuidAuto")] + partial class SessionIdToGuidAuto + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.HasIndex("CampaignId", "SessionName") + .IsUnique(); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.cs b/Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.cs new file mode 100644 index 0000000..25382c0 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210917091001_SessionIdToGuidAuto.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class SessionIdToGuidAuto : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs index ee771b6..1158824 100644 --- a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs +++ b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs @@ -22,7 +22,7 @@ namespace Sledgemapper.Clients Task RefreshPlayers(); Task NewLine(Line line); Task Ping(Ping ping); - Task NewCampaign(string campaignName); - Task> GetCampaigns(); + //Task NewCampaign(string campaignName); + //Task> GetCampaigns(); } } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 9cdc231..a6c2692 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -199,7 +199,7 @@ namespace Sledgemapper Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, SessionData.SessionName).ConfigureAwait(false))); break; case Overlay overlay: - Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay,State.Instance.CampaignId.ToString(), State.Instance.MapId.ToString()).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay,State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Wall wall: Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, SessionData.SessionName).ConfigureAwait(false))); diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 6376396..6451682 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -12,8 +12,8 @@ namespace Sledgemapper [Get("/session/{sessionName}")] Task Session(string sessionName); - [Post("/map/{campaignName}/{sessionName}")] - Task NewSession(Guid campaignid, string sessionName); + [Post("/map/{campaignid}/{sessionName}")] + Task NewSession(Guid campaignid, string sessionName); [Post("/session/{sessionName}/snapshot")] Task SaveSnapshot([Body] Session session, string sessionName); @@ -22,7 +22,7 @@ namespace Sledgemapper Task NewTile([Body] Tile tile, string sessionName); [Post("/map/{campaignId}/{mapId}/overlay")] - Task NewOverlay([Body] Overlay overlay, string campaignId, string mapId); + Task NewOverlay([Body] Overlay overlay, Guid campaignId, Guid mapId); [Post("/session/{sessionName}/note")] Task NewNote([Body] Note note, string sessionName); diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 951af58..91a9f40 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -26,7 +26,7 @@ namespace Sledgemapper public string CampaignName { get; set; } public Guid CampaignId { get; internal set; } public string MapName { get; internal set; } - public int MapId { get; internal set; } + public Guid MapId { get; internal set; } // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit @@ -57,6 +57,8 @@ namespace Sledgemapper } } + public Guid SessionId { get; internal set; } + public void SelectClosestWall(Point mousePosition) { var topLeft = new Point(HoveredTile.X * TileSize, HoveredTile.Y * TileSize); diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index 5fa4038..291df28 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -15,7 +15,7 @@ namespace Sledgemapper.UI private TinyMessengerHub Messenger { get; } private string _selectedMap; - private int _selectedMapId; + private Guid _selectedMapId; public MapList(CommunicationManager communicationManager, TinyMessengerHub messenger) { CommunicationManager = communicationManager; @@ -66,7 +66,7 @@ namespace Sledgemapper.UI } item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); _selectedMap = item.ItemName.Text; - _selectedMapId = (int)item.Tag; + _selectedMapId = (Guid)item.Tag; } private void OnMenuMapNew(object sender, EventArgs e) diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs index 2d35c75..538adc6 100644 --- a/Sledgemapper/UI/SessionWindow.Custom.cs +++ b/Sledgemapper/UI/SessionWindow.Custom.cs @@ -42,14 +42,15 @@ namespace Sledgemapper.UI var successful = false; try { - var result = await CommunicationManager.Api.NewSession(State.Instance.CampaignName, localContent.Content.TxtSession.Text); + var sessionGuid = await CommunicationManager.Api.NewSession(State.Instance.CampaignId, localContent.Content.TxtSession.Text); - if (result) + if (sessionGuid != Guid.Empty) { CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + State.Instance.SessionId = sessionGuid; } - successful = result; + successful = true; var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); CommunicationManager.SessionData.SessionId = result2.SessionId; CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; From db41143312d940d995c132da65668920607d5518 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 17 Sep 2021 11:42:36 +0100 Subject: [PATCH 59/81] fixed load and overlay flow, missing sync --- .../Commands/GetCampaignMapsCommand.cs | 6 +++--- .../Commands/GetMapSnapshotCommand.cs | 10 +++++++--- .../Controllers/CampaignController.cs | 3 ++- Sledgemapper.Api/Controllers/MapController.cs | 4 ++-- .../Handlers/GetCampaignMapsCommandHandler.cs | 17 +++++++++++++++-- .../Handlers/GetMapSnapshotCommandHandler.cs | 2 +- .../Handlers/NewOverlayCommandHandler.cs | 9 ++++++++- Sledgemapper/IMapApi.cs | 4 ++-- Sledgemapper/UI/MainWidget.Custom.cs | 11 +++++++++-- Sledgemapper/UI/MapList.Custom.cs | 4 ++-- 10 files changed, 51 insertions(+), 19 deletions(-) diff --git a/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs b/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs index 2a80b76..ac420d1 100644 --- a/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs +++ b/Sledgemapper.Api/Commands/GetCampaignMapsCommand.cs @@ -8,13 +8,13 @@ namespace Sledgemapper.Api.Commands public class GetCampaignMapsCommand : IRequest> { public double Timestamp { get; private set; } - public string CampaignName { get; private set; } + public Guid CampaignId { get; private set; } public string UserId { get; private set; } - public GetCampaignMapsCommand(string campaingName, string userId) + public GetCampaignMapsCommand(Guid campaignId, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - CampaignName = campaingName; + CampaignId = campaignId; UserId = userId; } } diff --git a/Sledgemapper.Api/Commands/GetMapSnapshotCommand.cs b/Sledgemapper.Api/Commands/GetMapSnapshotCommand.cs index 74047a8..228d855 100644 --- a/Sledgemapper.Api/Commands/GetMapSnapshotCommand.cs +++ b/Sledgemapper.Api/Commands/GetMapSnapshotCommand.cs @@ -1,14 +1,18 @@ using MediatR; using Sledgemapper.Shared.Entities; +using System; namespace Sledgemapper.Api.Commands { public class GetMapSnapshotCommand : IRequest { - public string SessionName { get; private set; } - public GetMapSnapshotCommand(string sessionName) + public Guid MapId { get; private set; } + public Guid CampaignId { get; private set; + } + public GetMapSnapshotCommand(Guid campaignId, Guid mapId) { - SessionName = sessionName; + MapId = mapId; + CampaignId = campaignId; } } } diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 013e6a8..44811fd 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; using Sledgemapper.Shared.Entities; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -65,7 +66,7 @@ namespace Sledgemapper.Api.Controllers [HttpGet] [Route("{campaignName}/maps")] - public async Task> GetMaps(string campaignName) + public async Task> GetMaps(Guid campaignName) { var result = await _mediator.Send(new GetCampaignMapsCommand(campaignName, UserId.ToString())); return result; diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index 04f3f04..93eedc6 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -26,9 +26,9 @@ namespace Sledgemapper.Api.Controllers } [HttpGet] - public async Task Get(string campaign, string mapName) + public async Task Get(Guid campaign, Guid mapName) { - var result = await _mediator.Send(new GetMapSnapshotCommand(mapName)); + var result = await _mediator.Send(new GetMapSnapshotCommand(campaign, mapName)); return result; } diff --git a/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs index b0bde06..289b8e1 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignMapsCommandHandler.cs @@ -1,4 +1,4 @@ -using MediatR; +using MediatR; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; @@ -29,7 +29,20 @@ namespace Sledgemapper.Api.Handlers var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + + + var campaign = await _dbcontext + .Campaigns + .Where(campaign => campaign.CampaignId == command.CampaignId) + .Include(c => c.InvitedUsers) + .Include(c => c.Maps) + .Include(c => c.Owner) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); + + + + + //var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.CampaignId && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); var maps = campaign.Maps.Select(session => new Session { SessionName = session.SessionName, SessionId = session.SessionId }).ToList(); return maps; diff --git a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs index 50ee2fa..56973c1 100644 --- a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs @@ -20,7 +20,7 @@ namespace Sledgemapper.Api.Commands Snapshot snapshot; double timestamp; Shared.Entities.Session mapSession; - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); + var session = _dbcontext.Sessions.First(m => m.SessionId == notification.MapId); snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId); if (snapshot is null) { diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 3bc0898..3fa3506 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -25,7 +25,14 @@ namespace Sledgemapper.Api.Handlers var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.Campaign && campaign.OwnerId == command.UserId).Include(campaign => campaign.Maps).FirstAsync(); + + var campaign = await _dbcontext + .Campaigns + .Where(campaign => campaign.CampaignId == command.Campaign) + .Include(c => c.InvitedUsers) + .Include(c => c.Maps) + .Include(c => c.Owner) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); var maps = campaign.Maps.Any(s => s.SessionId == command.SessionId); diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 6451682..c20a402 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -75,10 +75,10 @@ namespace Sledgemapper [Get("/campaign/{campaignName}/maps")] - Task> GetMaps(string campaignName); + Task> GetMaps(Guid campaignName); [Get("/map/{campaignName}/{mapName}")] - Task GetMap(string campaignName, string mapName); + Task GetMap(Guid campaignName, Guid mapName); [Post("/campaign/{campaignName}/players/{email}")] diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 295aec4..76a6486 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -84,7 +84,7 @@ namespace Sledgemapper.UI CenterOnTile(obj.X, obj.Y); } - private void OnMapOpenedMessage(MapOpenedMessage obj) + private async void OnMapOpenedMessage(MapOpenedMessage obj) { lblMap.Text = obj.MapName; MenuConnectSync.Enabled = true; @@ -93,6 +93,13 @@ namespace Sledgemapper.UI CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); + CommunicationManager.SessionData.Overlays = serverMap.Overlays; + CommunicationManager.SessionData.Map = serverMap.Map; + CommunicationManager.SessionData.Walls = serverMap.Walls; + CommunicationManager.SessionData.Notes = serverMap.Notes; + CommunicationManager.SessionData.Lines = serverMap.Lines; + CommunicationManager.SessionData.Rooms = serverMap.Rooms; } private async void OnSignalrConnectionUpdateMessage(SignalrConnectionUpdateMessage obj) @@ -204,7 +211,7 @@ namespace Sledgemapper.UI return; } - var serverMap = await CommunicationManager.Api.Session(CommunicationManager.SessionData.SessionName); + var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); CommunicationManager.SessionData.Overlays = serverMap.Overlays; CommunicationManager.SessionData.Map = serverMap.Map; CommunicationManager.SessionData.Walls = serverMap.Walls; diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index 291df28..61045e6 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -35,14 +35,14 @@ namespace Sledgemapper.UI { State.Instance.MapName = _selectedMap; State.Instance.MapId = _selectedMapId; - var map = CommunicationManager.Api.GetMap(State.Instance.CampaignName, State.Instance.MapName); + // var map = CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); Messenger.Publish(new MapOpenedMessage(this) { MapName = State.Instance.MapName }); this.GetContainingWindow().Close(); } public async Task LoadMaps() { - var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName); + var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignId); foreach (var campaign in campaigns) { var item = new ListItem(); From f12132009f24d5fc436b29c6013af8fdac88d17f Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 17 Sep 2021 12:37:02 +0100 Subject: [PATCH 60/81] Send position and overlay --- Sledgemapper.Api/Core/Entities/SessionUser.cs | 2 +- .../Core/Entities/UserConnection.cs | 3 +- .../Handlers/SendNewOverlayMessage.cs | 2 +- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 44 +- .../20210917112525_UserIdGuid.Designer.cs | 508 ++++++++++++++++++ .../Migrations/20210917112525_UserIdGuid.cs | 46 ++ .../SledgemapperDbContextModelSnapshot.cs | 8 +- Sledgemapper.Shared/Entities/Player.cs | 4 +- Sledgemapper/CommunicationManager.cs | 6 +- Sledgemapper/Sledgemapper.cs | 2 +- Sledgemapper/UI/MainWidget.Custom.cs | 8 + 11 files changed, 599 insertions(+), 34 deletions(-) create mode 100644 Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.Designer.cs create mode 100644 Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.cs diff --git a/Sledgemapper.Api/Core/Entities/SessionUser.cs b/Sledgemapper.Api/Core/Entities/SessionUser.cs index 8ed2c70..98860ed 100644 --- a/Sledgemapper.Api/Core/Entities/SessionUser.cs +++ b/Sledgemapper.Api/Core/Entities/SessionUser.cs @@ -12,6 +12,6 @@ namespace Sledgemapper.Api.Models public Guid SessionId { get; set; } [Required] - public int UserId { get; set; } + public Guid UserId { get; set; } } } diff --git a/Sledgemapper.Api/Core/Entities/UserConnection.cs b/Sledgemapper.Api/Core/Entities/UserConnection.cs index ea32a9c..74c0ce8 100644 --- a/Sledgemapper.Api/Core/Entities/UserConnection.cs +++ b/Sledgemapper.Api/Core/Entities/UserConnection.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; namespace Sledgemapper.Api.Models @@ -7,7 +8,7 @@ namespace Sledgemapper.Api.Models [Key] public int UserConnectionId { get; set; } [Required] - public int UserId { get; set; } + public Guid UserId { get; set; } [Required] public string ConnectionId{get;set;} diff --git a/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs b/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs index 6cfe0ef..79c7523 100644 --- a/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewOverlayNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).NewOverlay(notification.Overlay); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).NewOverlay(notification.Overlay); } } } diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 8d2ac0d..8141746 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -15,7 +15,7 @@ namespace Sledgemapper.Api.Hubs [Authorize] public class SledgemapperHub : Hub { - private static readonly ConcurrentDictionary UserColors = new(); + private static readonly ConcurrentDictionary UserColors = new(); private readonly SledgemapperDbContext _dbContext; // private readonly DataContext _datacontext; @@ -60,9 +60,9 @@ namespace Sledgemapper.Api.Hubs await Clients.Group(sessionName).NewWall(tile); } - public async Task NewOverlay(string sessionName, Overlay tile) + public async Task NewOverlay(Guid mapId, Overlay tile) { - await Clients.Group(sessionName).NewOverlay(tile); + await Clients.Group(mapId.ToString()).NewOverlay(tile); } public async Task NewNote(string sessionName, Note note) @@ -87,42 +87,40 @@ namespace Sledgemapper.Api.Hubs public async Task Ping(string sessionName, Tile location) { - var userId = int.Parse(Context.User.Identity.Name); - var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); + var userId = new Guid( Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); + + var user = _dbContext.Users.First(u => u.Id == userId.ToString()); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; await Clients.Group(sessionName).Ping(new Ping{X=location.X, Y=location.Y, Player=player}); } - public async Task JoinSession(string sessionName) + public async Task JoinSession(Guid mapId) { - var session = _dbContext.Sessions.FirstOrDefault(s => s.SessionName == sessionName); - var userId = int.Parse(Context.User.Identity.Name); + var session = _dbContext.Sessions.FirstOrDefault(s => s.SessionId == mapId); + + var userId = new Guid(Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); if (session != null) { var userSession = new SessionUser { SessionId = session.SessionId, UserId = userId }; _dbContext.SessionUsers.Add(userSession); await _dbContext.SaveChangesAsync(); - await Groups.AddToGroupAsync(Context.ConnectionId, session.SessionName); - var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); + await Groups.AddToGroupAsync(Context.ConnectionId, session.SessionId.ToString()); + var user = _dbContext.Users.First(u => u.Id == userId.ToString()); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; - await Clients.Group(session.SessionName).NewPlayer(player); - await Clients.Group(session.SessionName).RefreshPlayers(); + await Clients.Group(session.SessionId.ToString()).NewPlayer(player); + await Clients.Group(session.SessionId.ToString()).RefreshPlayers(); - var newSession = new Shared.Entities.Session - { - SessionName = session.SessionName, - SessionId = session.SessionId - }; + - return newSession; + return true; } else { - return null; + return false; } } @@ -137,16 +135,16 @@ namespace Sledgemapper.Api.Hubs public async Task UpdatePosition(string sessionName, Guid sessionId, Tile tile) { - var userId = int.Parse(Context.User.Identity.Name); + var userId = new Guid(Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); - var user = _dbContext.Users.First(u => u.Id == Context.User.Identity.Name); + var user = _dbContext.Users.First(u => u.Id == userId.ToString()); var player = new Player { UserId = userId, Initials = user.Initials, Position = tile, Color = UserColors[userId] }; - await Clients.Group(sessionName).PlayerUpdate(player); + await Clients.Group(sessionId.ToString()).PlayerUpdate(player); } public override async Task OnConnectedAsync() { - var userId = int.Parse(Context.User.Identity.Name); + var userId = new Guid(Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); var userConnection = new UserConnection { ConnectionId = Context.ConnectionId, UserId = userId }; _dbContext.UserConnections.Add(userConnection); await _dbContext.SaveChangesAsync(); diff --git a/Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.Designer.cs b/Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.Designer.cs new file mode 100644 index 0000000..6f3ecc9 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.Designer.cs @@ -0,0 +1,508 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Sledgemapper.Api.Infrastructure.Data; + +namespace Sledgemapper.Api.Migrations +{ + [DbContext(typeof(SledgemapperDbContext))] + [Migration("20210917112525_UserIdGuid")] + partial class UserIdGuid + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.6"); + + modelBuilder.Entity("CampaignUser", b => + { + b.Property("CampaignsCampaignId") + .HasColumnType("TEXT"); + + b.Property("InvitedUsersId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignsCampaignId", "InvitedUsersId"); + + b.HasIndex("InvitedUsersId"); + + b.ToTable("CampaignUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Property("CampaignId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignName") + .HasColumnType("TEXT"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasKey("CampaignId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("CampaignName", "OwnerId") + .IsUnique(); + + b.ToTable("Campaigns"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Map", b => + { + b.Property("MapId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CampaignId") + .HasColumnType("INTEGER"); + + b.Property("MapName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapId"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.MapLog", b => + { + b.Property("MapLogId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Operation") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("MapLogId"); + + b.ToTable("MapLogs"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.Property("SessionId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CampaignId") + .HasColumnType("TEXT"); + + b.Property("OwnerUserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("SessionId"); + + b.HasIndex("CampaignId", "SessionName") + .IsUnique(); + + b.ToTable("Sessions"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.SessionUser", b => + { + b.Property("SessionUserId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("TEXT"); + + b.HasKey("SessionUserId"); + + b.ToTable("SessionUsers"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Snapshot", b => + { + b.Property("SnapshotId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Object") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SessionId") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("REAL"); + + b.HasKey("SnapshotId"); + + b.ToTable("Snapshots"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.UserConnection", b => + { + b.Property("UserConnectionId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ConnectionId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("TEXT"); + + b.HasKey("UserConnectionId"); + + b.ToTable("UserConnections"); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasBaseType("Microsoft.AspNetCore.Identity.IdentityUser"); + + b.Property("FirstName") + .HasColumnType("TEXT"); + + b.Property("Initials") + .HasColumnType("TEXT"); + + b.Property("LastName") + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .HasColumnType("BLOB"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("CampaignUser", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany() + .HasForeignKey("CampaignsCampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Sledgemapper.Entities.User", null) + .WithMany() + .HasForeignKey("InvitedUsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.HasOne("Sledgemapper.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Sledgemapper.Api.Models.Session", b => + { + b.HasOne("Sledgemapper.Api.Core.Entities.Campaign", null) + .WithMany("Maps") + .HasForeignKey("CampaignId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Entities.User", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithOne() + .HasForeignKey("Sledgemapper.Entities.User", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Sledgemapper.Api.Core.Entities.Campaign", b => + { + b.Navigation("Maps"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.cs b/Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.cs new file mode 100644 index 0000000..4a28622 --- /dev/null +++ b/Sledgemapper.Api/Migrations/20210917112525_UserIdGuid.cs @@ -0,0 +1,46 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Sledgemapper.Api.Migrations +{ + public partial class UserIdGuid : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "UserId", + table: "UserConnections", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "SessionUsers", + type: "TEXT", + nullable: false, + oldClrType: typeof(int), + oldType: "INTEGER"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "UserId", + table: "UserConnections", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "SessionUsers", + type: "INTEGER", + nullable: false, + oldClrType: typeof(Guid), + oldType: "TEXT"); + } + } +} diff --git a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs index 547d72f..a477060 100644 --- a/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs +++ b/Sledgemapper.Api/Migrations/SledgemapperDbContextModelSnapshot.cs @@ -337,8 +337,8 @@ namespace Sledgemapper.Api.Migrations b.Property("SessionId") .HasColumnType("TEXT"); - b.Property("UserId") - .HasColumnType("INTEGER"); + b.Property("UserId") + .HasColumnType("TEXT"); b.HasKey("SessionUserId"); @@ -376,8 +376,8 @@ namespace Sledgemapper.Api.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("UserId") - .HasColumnType("INTEGER"); + b.Property("UserId") + .HasColumnType("TEXT"); b.HasKey("UserConnectionId"); diff --git a/Sledgemapper.Shared/Entities/Player.cs b/Sledgemapper.Shared/Entities/Player.cs index 3a86110..d750c70 100644 --- a/Sledgemapper.Shared/Entities/Player.cs +++ b/Sledgemapper.Shared/Entities/Player.cs @@ -1,8 +1,10 @@ +using System; + namespace Sledgemapper.Shared.Entities { public class Player { - public int UserId { get; set; } + public Guid UserId { get; set; } public string Color { get; set; } public string UserName { get; set; } public string Initials { get; set; } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index a6c2692..16e2fcd 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -33,7 +33,7 @@ namespace Sledgemapper SessionData = sessionData; Connection = new HubConnectionBuilder() .WithAutomaticReconnect() - + .WithUrl($"{baseAddress}/SledgemapperHub", options => { options.AccessTokenProvider = () => Task.FromResult(_authenticateResponse.Token); @@ -109,7 +109,7 @@ namespace Sledgemapper { if (!string.IsNullOrWhiteSpace(SessionData.SessionName)) { - Connection?.SendAsync("UpdatePosition", SessionData.SessionName, SessionData.SessionId, SessionData.Players.First(p => p.UserId == int.Parse(_authenticateResponse.Id))); + Connection?.SendAsync("UpdatePosition", SessionData.SessionName, State.Instance.MapId, SessionData.Players.First(p => p.UserId == new Guid(_authenticateResponse.Id))); } }); @@ -160,6 +160,8 @@ namespace Sledgemapper }); } + + private Task GetToken() { return Task.FromResult(_authenticateResponse.Token); diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index d8d3658..ac6524d 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -308,7 +308,7 @@ namespace Sledgemapper { _state.SelectedTile.X = _state.HoveredTile.X; _state.SelectedTile.Y = _state.HoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, State.Instance.MapId, _state.SelectedTile); } } diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 76a6486..9086cea 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -94,6 +94,14 @@ namespace Sledgemapper.UI CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); + if (CommunicationManager.Connection.State != HubConnectionState.Connected) + { + + await CommunicationManager.Connection.StartAsync(); + UpdateConnectionState(CommunicationManager.Connection); + } + var result = await CommunicationManager.Connection?.InvokeAsync("JoinSession", State.Instance.MapId); + CommunicationManager.SessionData.Overlays = serverMap.Overlays; CommunicationManager.SessionData.Map = serverMap.Map; CommunicationManager.SessionData.Walls = serverMap.Walls; From 6a751260689cb9342cebe5ebd162947dc7a7c721 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 17 Sep 2021 13:15:32 +0100 Subject: [PATCH 61/81] broken build, removing some session shit --- Sledgemapper.Shared/Entities/Session.cs | 4 +- Sledgemapper/CommunicationManager.cs | 22 +++--- Sledgemapper/IMapApi.cs | 20 +++--- Sledgemapper/Sledgemapper.cs | 12 ++-- Sledgemapper/UI/MainWidget.Custom.cs | 94 ++++++++++++------------- Sledgemapper/UI/SessionWindow.Custom.cs | 6 +- 6 files changed, 79 insertions(+), 79 deletions(-) diff --git a/Sledgemapper.Shared/Entities/Session.cs b/Sledgemapper.Shared/Entities/Session.cs index a66e0f8..69e1fc9 100644 --- a/Sledgemapper.Shared/Entities/Session.cs +++ b/Sledgemapper.Shared/Entities/Session.cs @@ -47,8 +47,8 @@ public class Map:Session public List Players { get; set; } public ConcurrentDictionary Pings { get; set; } public List Colors { get; set; } - public string SessionName { get; set; } - public Guid SessionId { get; set; } + //public string SessionName { get; set; } + //public Guid SessionId { get; set; } public ConcurrentDictionary Lines { get; set; } public ConcurrentDictionary Rooms { get; set; } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 16e2fcd..28639c0 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -107,9 +107,9 @@ namespace Sledgemapper Connection.On("RefreshPlayers", () => { - if (!string.IsNullOrWhiteSpace(SessionData.SessionName)) + if (!string.IsNullOrWhiteSpace(State.Instance.MapName)) { - Connection?.SendAsync("UpdatePosition", SessionData.SessionName, State.Instance.MapId, SessionData.Players.First(p => p.UserId == new Guid(_authenticateResponse.Id))); + Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, SessionData.Players.First(p => p.UserId == new Guid(_authenticateResponse.Id))); } }); @@ -198,22 +198,22 @@ namespace Sledgemapper switch (entity) { case Tile tile: - Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, State.Instance.MapId).ConfigureAwait(false))); break; case Overlay overlay: Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay,State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Wall wall: - Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, State.Instance.MapId).ConfigureAwait(false))); break; case Note note: - Queue.Enqueue(async () => await Execute(async () => await Api.NewNote(note, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewNote(note, State.Instance.MapId).ConfigureAwait(false))); break; case Room room: - Queue.Enqueue(async () => await Execute(async () => await Api.NewRoom(room, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewRoom(room, State.Instance.MapId).ConfigureAwait(false))); break; case Line line: - Queue.Enqueue(async () => await Execute(async () => await Api.NewLine(line, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewLine(line, State.Instance.MapId).ConfigureAwait(false))); break; } break; @@ -222,16 +222,16 @@ namespace Sledgemapper switch (entity) { case Tile tile: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteTile(tile, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.DeleteTile(tile, State.Instance.MapId).ConfigureAwait(false))); break; case Overlay overlay: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteOverlay(overlay, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.DeleteOverlay(overlay, State.Instance.MapId).ConfigureAwait(false))); break; case Wall wall: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteWall(wall, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.DeleteWall(wall, State.Instance.MapId).ConfigureAwait(false))); break; case Note note: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteNote(note, SessionData.SessionName).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.DeleteNote(note, State.Instance.MapId).ConfigureAwait(false))); break; } break; diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index c20a402..3af6a48 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -16,31 +16,31 @@ namespace Sledgemapper Task NewSession(Guid campaignid, string sessionName); [Post("/session/{sessionName}/snapshot")] - Task SaveSnapshot([Body] Session session, string sessionName); + Task SaveSnapshot([Body] Session session, Guid sessionName); [Post("/session/{sessionName}/tile")] - Task NewTile([Body] Tile tile, string sessionName); + Task NewTile([Body] Tile tile, Guid sessionName); [Post("/map/{campaignId}/{mapId}/overlay")] Task NewOverlay([Body] Overlay overlay, Guid campaignId, Guid mapId); [Post("/session/{sessionName}/note")] - Task NewNote([Body] Note note, string sessionName); + Task NewNote([Body] Note note, Guid sessionName); [Post("/session/{sessionName}/wall")] - Task NewWall([Body] Wall overlay, string sessionName); + Task NewWall([Body] Wall overlay, Guid sessionName); [Delete("/session/{sessionName}/wall")] - Task DeleteWall([Body] Wall wall, string sessionName); + Task DeleteWall([Body] Wall wall, Guid sessionName); [Delete("/session/{sessionName}/tile")] - Task DeleteTile([Body] Tile tile, string sessionName); + Task DeleteTile([Body] Tile tile, Guid sessionName); [Delete("/session/{sessionName}/overlay")] - Task DeleteOverlay([Body] Overlay overlay, string sessionName); + Task DeleteOverlay([Body] Overlay overlay, Guid sessionName); [Delete("/session/{sessionName}/note")] - Task DeleteNote([Body] Note overlay, string sessionName); + Task DeleteNote([Body] Note overlay, Guid sessionName); public class AuthResult @@ -59,10 +59,10 @@ namespace Sledgemapper Task Authenticate([Body] AuthenticateModel registerModel); [Post("/session/{sessionName}/room")] - Task NewRoom(Room room, string sessionName); + Task NewRoom(Room room, Guid sessionName); [Post("/session/{sessionName}/line")] - Task NewLine(Line line, string sessionName); + Task NewLine(Line line, Guid sessionName); [Post("/campaign/{campaignName}")] Task NewCampaign(string campaignName); diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index ac6524d..25772f3 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -308,7 +308,7 @@ namespace Sledgemapper { _state.SelectedTile.X = _state.HoveredTile.X; _state.SelectedTile.Y = _state.HoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, State.Instance.MapId, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, _state.SelectedTile); } } @@ -358,7 +358,7 @@ namespace Sledgemapper case InsertMode.Tile: _state.SelectedTile.X = _state.HoveredTile.X; _state.SelectedTile.Y = _state.HoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _sessionData.SessionId, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, _state.SelectedTile); _sessionData.NewTile(_state.SelectedTile, _state.CurrentTileId); break; @@ -515,28 +515,28 @@ namespace Sledgemapper if (oldState.IsKeyUp(Keys.Left) && newState.IsKeyDown(Keys.Left)) { _state.SelectedTile.X--; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); } break; case Keys.Right: if (oldState.IsKeyUp(Keys.Right) && newState.IsKeyDown(Keys.Right)) { _state.SelectedTile.X++; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); } break; case Keys.Up: if (oldState.IsKeyUp(Keys.Up) && newState.IsKeyDown(Keys.Up)) { _state.SelectedTile.Y--; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); } break; case Keys.Down: if (oldState.IsKeyUp(Keys.Down) && newState.IsKeyDown(Keys.Down)) { _state.SelectedTile.Y++; - _communicationManager.Connection?.SendAsync("UpdatePosition", _sessionData.SessionName, _state.SelectedTile); + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); } break; } diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 9086cea..f2749ca 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -37,7 +37,7 @@ namespace Sledgemapper.UI MenuFileSettings.Selected += OneMenuFileSettingsSelected; //MenuConnectLogin.Selected += OnMenuConnectLoginSelected; //MenuConnectNew.Selected += OnMenuConnectNewSelected; - MenuConnectJoin.Selected += OnMenuConnectJoinSelected; + //MenuConnectJoin.Selected += OnMenuConnectJoinSelected; MenuConnectUpload.Selected += OnMenuConnectUploadSelected; MenuViewCenterOnSelection.Selected += OnMenuViewCenterOnSelectionSelected; MenuViewShowCellNUmbers.Selected += OnMenuViewShowCellNUmbersSelected; @@ -235,7 +235,7 @@ namespace Sledgemapper.UI return; } - await CommunicationManager.Api.SaveSnapshot(CommunicationManager.SessionData, CommunicationManager.SessionData.SessionName); + await CommunicationManager.Api.SaveSnapshot(CommunicationManager.SessionData, State.Instance.MapId); } private void OnMenuFileSaveSelected(object sender, EventArgs e) @@ -392,56 +392,56 @@ namespace Sledgemapper.UI content.ShowInModalWindow(Desktop, "Maps"); } - private async void OnButtonJoinSessionClicked(object sender, EventArgs e) - { - var localContent = ((TextButton)sender).GetParentContentInWindow(); + //private async void OnButtonJoinSessionClicked(object sender, EventArgs e) + //{ + // var localContent = ((TextButton)sender).GetParentContentInWindow(); - var isValid = localContent.Content.TxtSession.ValidateTextbox(); - if (!isValid) - { - return; - } + // var isValid = localContent.Content.TxtSession.ValidateTextbox(); + // if (!isValid) + // { + // return; + // } - if (CommunicationManager.Connection.State != HubConnectionState.Connected) - { - lblConnectionStatus.Text = "Connecting"; - await CommunicationManager.Connection.StartAsync(); - UpdateConnectionState(CommunicationManager.Connection); - } + // if (CommunicationManager.Connection.State != HubConnectionState.Connected) + // { + // lblConnectionStatus.Text = "Connecting"; + // await CommunicationManager.Connection.StartAsync(); + // UpdateConnectionState(CommunicationManager.Connection); + // } - var successful = false; - try - { - var result = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); - if (result != null) - { - CommunicationManager.SessionData.Map = result.Map; - CommunicationManager.SessionData.Walls = result.Walls; - CommunicationManager.SessionData.Overlays = result.Overlays; + // var successful = false; + // try + // { + // var result = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); + // if (result != null) + // { + // CommunicationManager.SessionData.Map = result.Map; + // CommunicationManager.SessionData.Walls = result.Walls; + // CommunicationManager.SessionData.Overlays = result.Overlays; - CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - CommunicationManager.SessionData.SessionId = result.SessionId; - CommunicationManager.SessionData.SessionName = result.SessionName; - } - successful = result != null; - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - } + // CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + // CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + // CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + // CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + // //CommunicationManager.SessionData.SessionId = result.SessionId; + // //CommunicationManager.SessionData.SessionName = result.SessionName; + // } + // successful = result != null; + // } + // catch (Exception ex) + // { + // Console.WriteLine(ex.Message); + // } - if (successful) - { - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - lblMap.Text = CommunicationManager.SessionData.SessionName; - MenuConnectSync.Enabled = true; - MenuConnectUpload.Enabled = true; - localContent.Window.Close(); - } - } + // if (successful) + // { + // CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + // lblMap.Text = CommunicationManager.SessionData.SessionName; + // MenuConnectSync.Enabled = true; + // MenuConnectUpload.Enabled = true; + // localContent.Window.Close(); + // } + //} private void OnBtnToolbarRoomClicked(object sender, EventArgs e) { State.Instance.InsertMode = InsertMode.NewRoom; diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs index 538adc6..e21fee8 100644 --- a/Sledgemapper/UI/SessionWindow.Custom.cs +++ b/Sledgemapper/UI/SessionWindow.Custom.cs @@ -46,14 +46,14 @@ namespace Sledgemapper.UI if (sessionGuid != Guid.Empty) { - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + //CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; State.Instance.SessionId = sessionGuid; } successful = true; var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); - CommunicationManager.SessionData.SessionId = result2.SessionId; - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + //CommunicationManager.SessionData.SessionId = result2.SessionId; + //CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; } catch (Exception ex) { From 454c507b2f4ce28ac640293e3c8a1bc0c602797e Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 17 Sep 2021 15:37:08 +0100 Subject: [PATCH 62/81] adding back session name to session, will need some work --- Sledgemapper.Shared/Entities/Session.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sledgemapper.Shared/Entities/Session.cs b/Sledgemapper.Shared/Entities/Session.cs index 69e1fc9..0339f27 100644 --- a/Sledgemapper.Shared/Entities/Session.cs +++ b/Sledgemapper.Shared/Entities/Session.cs @@ -47,9 +47,9 @@ public class Map:Session public List Players { get; set; } public ConcurrentDictionary Pings { get; set; } public List Colors { get; set; } - //public string SessionName { get; set; } - //public Guid SessionId { get; set; } - public ConcurrentDictionary Lines { get; set; } + public string SessionName { get; set; } + public Guid SessionId { get; set; } + public ConcurrentDictionary Lines { get; set; } public ConcurrentDictionary Rooms { get; set; } public void NewTile(Tile selectedTile, string tileId) From 4fd77a1f1733f3ee87149212cab02e934cb07df5 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Mon, 20 Sep 2021 15:16:43 +0100 Subject: [PATCH 63/81] working base entities creation --- Sledgemapper.Api/Commands/NewLineCommand.cs | 3 +- Sledgemapper.Api/Commands/NewNoteCommand.cs | 3 +- Sledgemapper.Api/Commands/NewRoomCommand.cs | 3 +- Sledgemapper.Api/Commands/NewWallCommand.cs | 3 +- Sledgemapper.Api/Controllers/MapController.cs | 16 ++-- .../Handlers/BaseCommandHandler.cs | 68 ++++++++++++++ .../Handlers/DeleteNoteCommandHandler.cs | 35 ++----- .../Handlers/DeleteOverlayCommandHandler.cs | 33 ++----- .../Handlers/DeleteTileCommandHandler.cs | 32 ++----- .../Handlers/DeleteWallCommandHandler.cs | 35 ++----- .../Handlers/NewLineCommandHandler.cs | 33 ++----- .../Handlers/NewNoteCommandHandler.cs | 33 ++----- .../Handlers/NewOverlayCommandHandler.cs | 53 ++--------- .../Handlers/NewRoomCommandHandler.cs | 30 ++---- .../Handlers/NewTileCommandHandler.cs | 33 ++----- .../Handlers/NewWallCommandHandler.cs | 33 ++----- Sledgemapper/CommunicationManager.cs | 10 +- Sledgemapper/IMapApi.cs | 91 +++++++++++-------- Sledgemapper/Program.cs | 3 + Sledgemapper/UI/MainWidget.Custom.cs | 8 +- Sledgemapper/UI/MainWidget.Generated.cs | 51 ++++------- Sledgemapper/UI/MainWidget.xmmp | 7 +- 22 files changed, 260 insertions(+), 356 deletions(-) create mode 100644 Sledgemapper.Api/Handlers/BaseCommandHandler.cs diff --git a/Sledgemapper.Api/Commands/NewLineCommand.cs b/Sledgemapper.Api/Commands/NewLineCommand.cs index ff97585..ce98c1a 100644 --- a/Sledgemapper.Api/Commands/NewLineCommand.cs +++ b/Sledgemapper.Api/Commands/NewLineCommand.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using System; namespace Sledgemapper.Api.Commands { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Line Line { get; private set; } - public NewLineCommand(string sessionName, Line line, string userId) : base(sessionName, userId) + public NewLineCommand(Guid campaign, Guid mapName, Line line, string userId) : base(campaign, mapName, userId) { Line = line; } diff --git a/Sledgemapper.Api/Commands/NewNoteCommand.cs b/Sledgemapper.Api/Commands/NewNoteCommand.cs index 69c41ad..97a9b31 100644 --- a/Sledgemapper.Api/Commands/NewNoteCommand.cs +++ b/Sledgemapper.Api/Commands/NewNoteCommand.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using System; namespace Sledgemapper.Api.Commands { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Note Note { get; private set; } - public NewNoteCommand(string sessionName, Note note, string userId) : base(sessionName, userId) + public NewNoteCommand(Guid campaignId, Guid mapId, Note note, string userId) : base(campaignId, mapId, userId) { Note = note; } diff --git a/Sledgemapper.Api/Commands/NewRoomCommand.cs b/Sledgemapper.Api/Commands/NewRoomCommand.cs index fccb7e3..a44c836 100644 --- a/Sledgemapper.Api/Commands/NewRoomCommand.cs +++ b/Sledgemapper.Api/Commands/NewRoomCommand.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using System; namespace Sledgemapper.Api.Commands { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Room Room { get; private set; } - public NewRoomCommand(string sessionName, Room room, string userId) : base(sessionName, userId) + public NewRoomCommand(Guid campaignId, Guid mapId, Room room, string userId) : base(campaignId, mapId, userId) { Room = room; } diff --git a/Sledgemapper.Api/Commands/NewWallCommand.cs b/Sledgemapper.Api/Commands/NewWallCommand.cs index d903b08..f9682fb 100644 --- a/Sledgemapper.Api/Commands/NewWallCommand.cs +++ b/Sledgemapper.Api/Commands/NewWallCommand.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using System; namespace Sledgemapper.Api.Commands { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Wall Wall { get; private set; } - public NewWallCommand(string sessionName, Wall wall, string userId) : base(sessionName, userId) + public NewWallCommand(Guid campaignId, Guid mapId, Wall wall, string userId) : base(campaignId, mapId, userId) { Wall = wall; } diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index 93eedc6..e1ab9d3 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -45,27 +45,27 @@ namespace Sledgemapper.Api.Controllers } [HttpPost("wall")] - public async Task Post(string campaign, string mapName, [FromBody] Wall wall) + public async Task Post(Guid campaign, Guid mapName, [FromBody] Wall wall) { - await _mediator.Send(new NewWallCommand(mapName, wall, UserId)); + await _mediator.Send(new NewWallCommand(campaign, mapName, wall, UserId)); } [HttpPost("note")] - public async Task Post(string campaign, string mapName, [FromBody] Note note) + public async Task Post(Guid campaign, Guid mapName, [FromBody] Note note) { - await _mediator.Send(new NewNoteCommand(mapName, note, UserId)); + await _mediator.Send(new NewNoteCommand(campaign, mapName, note, UserId)); } [HttpPost("room")] - public async Task Post(string campaign, string mapName, [FromBody] Room room) + public async Task Post(Guid campaign, Guid mapName, [FromBody] Room room) { - await _mediator.Send(new NewRoomCommand(mapName, room, UserId)); + await _mediator.Send(new NewRoomCommand(campaign, mapName, room, UserId)); } [HttpPost("line")] - public async Task Post(string campaign, string mapName, [FromBody] Line line) + public async Task Post(Guid campaign, Guid mapName, [FromBody] Line line) { - await _mediator.Send(new NewLineCommand(mapName, line, UserId)); + await _mediator.Send(new NewLineCommand(campaign, mapName, line, UserId)); } [HttpDelete("overlay")] diff --git a/Sledgemapper.Api/Handlers/BaseCommandHandler.cs b/Sledgemapper.Api/Handlers/BaseCommandHandler.cs new file mode 100644 index 0000000..313ad73 --- /dev/null +++ b/Sledgemapper.Api/Handlers/BaseCommandHandler.cs @@ -0,0 +1,68 @@ +using MediatR; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Models; + +namespace Sledgemapper.Api.Handlers +{ + public abstract class BaseCommandHandler : IRequestHandler where TRequest : BaseCommand + { + protected SledgemapperDbContext Dbcontext { get; } + + protected IMediator Mediator { get; } + + + + public abstract Task Handle(TRequest request, CancellationToken cancellationToken); + + public BaseCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + { + Dbcontext = dbcontext; + Mediator = mediator; + } + + protected async Task CheckAuthorization(TRequest command) + { + var user = await Dbcontext.Users.FindAsync(command.UserId); + Dbcontext.Attach(user); + + + var campaign = await Dbcontext + .Campaigns + .Where(campaign => campaign.CampaignId == command.Campaign) + .Include(c => c.InvitedUsers) + .Include(c => c.Maps) + .Include(c => c.Owner) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); + + var maps = campaign.Maps.Any(s => s.SessionId == command.SessionId); + + if (!maps) + { + throw new Exception("Unauthorized"); + } + } + + protected async Task SaveLog(TRequest command, string operation, string type, string data, CancellationToken cancellationToken) + { + var session = Dbcontext.Sessions.First(m => m.SessionId == command.SessionId); + Dbcontext.MapLogs.Add(new Models.MapLog + { + Operation = operation, + SessionId = session.SessionId, + Type = type, + Timestamp = command.Timestamp, + Object = data, + UserId = command.UserId, + }); + await Dbcontext.SaveChangesAsync(cancellationToken); + return session; + } + + } +} diff --git a/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs index 1445f84..e2d55c3 100644 --- a/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteNoteCommandHandler.cs @@ -2,41 +2,24 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; -using Sledgemapper.Shared.Entities; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - - public class DeleteNoteCommandHandler : IRequestHandler + public class DeleteNoteCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public DeleteNoteCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - - public async Task Handle(DeleteNoteCommand notification, CancellationToken cancellationToken) + public DeleteNoteCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Note); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "D", - SessionId = session.SessionId, - Type = "N", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new DeleteNoteNotification(session, notification.Note, notification.UserId)); + } + public override async Task Handle(DeleteNoteCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Note); + var session = await SaveLog(command, "D", "N", jsonString, cancellationToken); + await Mediator.Publish(new DeleteNoteNotification(session, command.Note, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs index fae8bd0..a6b2956 100644 --- a/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteOverlayCommandHandler.cs @@ -1,40 +1,25 @@ using MediatR; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Notifications; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class DeleteOverlayCommandHandler : IRequestHandler + public class DeleteOverlayCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public DeleteOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(DeleteOverlayCommand notification, CancellationToken cancellationToken) + public DeleteOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Overlay); - var session = _dbcontext.Sessions.First(m=>m.SessionName== notification.SessionName); + } - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "D", - SessionId = session.SessionId, - Type = "O", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId=notification.UserId - }); - - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new DeleteOverlayNotification(session, notification.Overlay, notification.UserId)); + public override async Task Handle(DeleteOverlayCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Overlay); + var session = await SaveLog(command, "D", "O", jsonString, cancellationToken); + await Mediator.Publish(new DeleteOverlayNotification(session, command.Overlay, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs index 9ae4b2f..5c1cd1d 100644 --- a/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteTileCommandHandler.cs @@ -2,38 +2,24 @@ using MediatR; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class DeleteTileCommandHandler : IRequestHandler + public class DeleteTileCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public DeleteTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(DeleteTileCommand notification, CancellationToken cancellationToken) + public DeleteTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Tile); - var session = _dbcontext.Sessions.First(m=>m.SessionName== notification.SessionName); + } - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "D", - SessionId = session.SessionId, - Type = "T", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new DeleteTileNotification(session, notification.Tile, notification.UserId)); + public override async Task Handle(DeleteTileCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Tile); + var session = await SaveLog(command, "D", "T", jsonString, cancellationToken); + await Mediator.Publish(new DeleteTileNotification(session, command.Tile, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs b/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs index ace1c1c..aeb0f30 100644 --- a/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/DeleteWallCommandHandler.cs @@ -2,41 +2,24 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; -using Sledgemapper.Shared.Entities; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - - public class DeleteWallCommandHandler : IRequestHandler + public class DeleteWallCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public DeleteWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - - public async Task Handle(DeleteWallCommand notification, CancellationToken cancellationToken) + public DeleteWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Wall); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "D", - SessionId = session.SessionId, - Type = "W", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new DeleteWallNotification(session, notification.Wall, notification.UserId)); + } + public override async Task Handle(DeleteWallCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Wall); + var session = await SaveLog(command, "D", "W", jsonString, cancellationToken); + await Mediator.Publish(new DeleteWallNotification(session, command.Wall, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs index a6586a3..58140dc 100644 --- a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs @@ -1,8 +1,6 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; @@ -10,29 +8,18 @@ using Sledgemapper.Api.Notifications; namespace Sledgemapper.Api.Handlers { - public class NewLineCommandHandler : IRequestHandler + public class NewLineCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public NewLineCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(NewLineCommand notification, CancellationToken cancellationToken) + public NewLineCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Line); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "N", - SessionId = session.SessionId, - Type = "L", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId, - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewLineNotification(session, notification.Line, notification.UserId)); + } + + public override async Task Handle(NewLineCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Line); + var session = await SaveLog(command, "N", "L", jsonString, cancellationToken); + await Mediator.Publish(new NewLineNotification(session, command.Line, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs index 149c869..6390422 100644 --- a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs @@ -1,38 +1,25 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class NewNoteCommandHandler : IRequestHandler + public class NewNoteCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public NewNoteCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(NewNoteCommand notification, CancellationToken cancellationToken) + public NewNoteCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Note); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "N", - SessionId = session.SessionId, - Type = "N", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId, - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewNoteNotification(session, notification.Note, notification.UserId)); + } + + public override async Task Handle(NewNoteCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Note); + var session = await SaveLog(command, "N", "W", jsonString, cancellationToken); + await Mediator.Publish(new NewNoteNotification(session, command.Note, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs index 3fa3506..68a6793 100644 --- a/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewOverlayCommandHandler.cs @@ -1,59 +1,26 @@ using MediatR; using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Notifications; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; -using System.Linq; +using Sledgemapper.Api.Notifications; using System.Text.Json; using System.Threading; using System.Threading.Tasks; -using System; -using Microsoft.EntityFrameworkCore; namespace Sledgemapper.Api.Handlers { - public class NewOverlayCommandHandler : IRequestHandler + + public class NewOverlayCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public NewOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(NewOverlayCommand command, CancellationToken cancellationToken) + public NewOverlayCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var user = await _dbcontext.Users.FindAsync(command.UserId); - _dbcontext.Attach(user); - - - var campaign = await _dbcontext - .Campaigns - .Where(campaign => campaign.CampaignId == command.Campaign) - .Include(c => c.InvitedUsers) - .Include(c => c.Maps) - .Include(c => c.Owner) - .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); - - var maps = campaign.Maps.Any(s => s.SessionId == command.SessionId); - - if (!maps) - { - throw new Exception("Unauthorized"); - } + } + public override async Task Handle(NewOverlayCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); var jsonString = JsonSerializer.Serialize(command.Overlay); - var session = _dbcontext.Sessions.First(m => m.SessionId == command.SessionId); - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "N", - SessionId = session.SessionId, - Type = "O", - Timestamp = command.Timestamp, - Object = jsonString, - UserId = command.UserId, - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewOverlayNotification(session, command.Overlay, command.UserId)); + var session = await SaveLog(command, "N", "O", jsonString, cancellationToken); + await Mediator.Publish(new NewOverlayNotification(session, command.Overlay, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs b/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs index 11d59f4..f5093ba 100644 --- a/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewRoomCommandHandler.cs @@ -1,8 +1,6 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; @@ -10,29 +8,17 @@ using Sledgemapper.Api.Notifications; namespace Sledgemapper.Api.Handlers { - public class NewRoomCommandHandler : IRequestHandler + public class NewRoomCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; + public NewRoomCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) + { } - private readonly IMediator _mediator; - - public NewRoomCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(NewRoomCommand notification, CancellationToken cancellationToken) + public override async Task Handle(NewRoomCommand command, CancellationToken cancellationToken) { - var jsonString = JsonSerializer.Serialize(notification.Room); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "N", - SessionId = session.SessionId, - Type = "R", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId, - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewRoomNotification(session, notification.Room, notification.UserId)); + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Room); + var session = await SaveLog(command, "N", "R", jsonString, cancellationToken); + await Mediator.Publish(new NewRoomNotification(session, command.Room, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs index 491d0a2..6ab63b8 100644 --- a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs @@ -1,38 +1,25 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; - using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Notifications; -using System.Linq; -using Sledgemapper.Shared.Entities; +using Sledgemapper.Api.Handlers; namespace Sledgemapper.Api.Commands { - public class NewTileCommandHandler : IRequestHandler + public class NewTileCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - private readonly IMediator _mediator; - - public NewTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(NewTileCommand notification, CancellationToken cancellationToken) + public NewTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Tile); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); + } - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "N", - SessionId = session.SessionId, - Type = "T", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewTileNotification(session, notification.Tile, notification.UserId)); + public override async Task Handle(NewTileCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Tile); + var session = await SaveLog(command, "N", "T", jsonString, cancellationToken); + await Mediator.Publish(new NewTileNotification(session, command.Tile, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs index b40e4e7..6e306de 100644 --- a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs @@ -1,38 +1,25 @@ using MediatR; using Sledgemapper.Api.Infrastructure.Data; -using Sledgemapper.Shared.Entities; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Notifications; -using System.Linq; using System.Text.Json; using System.Threading; using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class NewWallCommandHandler : IRequestHandler + public class NewWallCommandHandler : BaseCommandHandler { - private readonly SledgemapperDbContext _dbcontext; - - private readonly IMediator _mediator; - - public NewWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - - public async Task Handle(NewWallCommand notification, CancellationToken cancellationToken) + public NewWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) { - var jsonString = JsonSerializer.Serialize(notification.Wall); - var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - _dbcontext.MapLogs.Add(new Models.MapLog - { - Operation = "N", - SessionId = session.SessionId, - Type = "W", - Timestamp = notification.Timestamp, - Object = jsonString, - UserId = notification.UserId, - }); - await _dbcontext.SaveChangesAsync(); - await _mediator.Publish(new NewWallNotification(session, notification.Wall, notification.UserId)); + } + + public override async Task Handle(NewWallCommand command, CancellationToken cancellationToken) + { + await CheckAuthorization(command); + var jsonString = JsonSerializer.Serialize(command.Wall); + var session = await SaveLog(command, "N", "W", jsonString, cancellationToken); + await Mediator.Publish(new NewWallNotification(session, command.Wall, command.UserId), cancellationToken); return true; } } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 28639c0..e5874b0 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -198,22 +198,22 @@ namespace Sledgemapper switch (entity) { case Tile tile: - Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, State.Instance.MapId).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Overlay overlay: Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay,State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Wall wall: - Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, State.Instance.MapId).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Note note: - Queue.Enqueue(async () => await Execute(async () => await Api.NewNote(note, State.Instance.MapId).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewNote(note, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Room room: - Queue.Enqueue(async () => await Execute(async () => await Api.NewRoom(room, State.Instance.MapId).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewRoom(room, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; case Line line: - Queue.Enqueue(async () => await Execute(async () => await Api.NewLine(line, State.Instance.MapId).ConfigureAwait(false))); + Queue.Enqueue(async () => await Execute(async () => await Api.NewLine(line, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); break; } break; diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 3af6a48..f5b6bca 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -9,6 +9,51 @@ namespace Sledgemapper [Headers("Authorization: Bearer")] public interface IMapApi { + [Headers("Authorization")] + [Post("/authmanagement/register")] + Task Register([Body] RegisterModel registerModel); + + [Headers("Authorization")] + [Post("/authmanagement/login")] + Task Authenticate([Body] AuthenticateModel registerModel); + + [Post("/map/{campaignId}/{mapId}/overlay")] + Task NewOverlay([Body] Overlay overlay, Guid campaignId, Guid mapId); + + [Post("/map/{campaignId}/{mapId}/note")] + Task NewNote([Body] Note note, Guid campaignId, Guid mapId); + + [Post("/map/{campaignId}/{mapId}/wall")] + Task NewWall([Body] Wall overlay, Guid campaignId, Guid mapId); + + [Post("/map/{campaignId}/{mapId}/room")] + Task NewRoom(Room room, Guid campaignId, Guid mapId); + + [Post("/map/{campaignId}/{mapId}/line")] + Task NewLine(Line line, Guid campaignId, Guid mapId); + + [Post("/campaign/{campaignName}")] + Task NewCampaign(string campaignName); + + [Get("/campaign/")] + Task> GetCampaigns(); + + [Get("/campaign/{campaignName}/players")] + Task> GetPlayers(string campaignName); + + + [Get("/campaign/{campaignName}/maps")] + Task> GetMaps(Guid campaignName); + + [Get("/map/{campaignName}/{mapName}")] + Task GetMap(Guid campaignName, Guid mapName); + + + [Post("/campaign/{campaignName}/players/{email}")] + Task InvitePlayer(string campaignName, string email); + + + [Get("/session/{sessionName}")] Task Session(string sessionName); @@ -18,17 +63,12 @@ namespace Sledgemapper [Post("/session/{sessionName}/snapshot")] Task SaveSnapshot([Body] Session session, Guid sessionName); - [Post("/session/{sessionName}/tile")] - Task NewTile([Body] Tile tile, Guid sessionName); + [Post("/map/{campaignId}/{mapId}/tile")] + Task NewTile([Body] Tile tile, Guid campaignId, Guid mapId); - [Post("/map/{campaignId}/{mapId}/overlay")] - Task NewOverlay([Body] Overlay overlay, Guid campaignId, Guid mapId); + - [Post("/session/{sessionName}/note")] - Task NewNote([Body] Note note, Guid sessionName); - - [Post("/session/{sessionName}/wall")] - Task NewWall([Body] Wall overlay, Guid sessionName); + [Delete("/session/{sessionName}/wall")] Task DeleteWall([Body] Wall wall, Guid sessionName); @@ -50,38 +90,9 @@ namespace Sledgemapper public List Errors { get; set; } } - [Headers("Authorization")] - [Post("/authmanagement/register")] - Task Register([Body] RegisterModel registerModel); - - [Headers("Authorization")] - [Post("/authmanagement/login")] - Task Authenticate([Body] AuthenticateModel registerModel); - - [Post("/session/{sessionName}/room")] - Task NewRoom(Room room, Guid sessionName); - - [Post("/session/{sessionName}/line")] - Task NewLine(Line line, Guid sessionName); - - [Post("/campaign/{campaignName}")] - Task NewCampaign(string campaignName); - - [Get("/campaign/")] - Task> GetCampaigns(); - - [Get("/campaign/{campaignName}/players")] - Task> GetPlayers(string campaignName); - - - [Get("/campaign/{campaignName}/maps")] - Task> GetMaps(Guid campaignName); - - [Get("/map/{campaignName}/{mapName}")] - Task GetMap(Guid campaignName, Guid mapName); - [Post("/campaign/{campaignName}/players/{email}")] - Task InvitePlayer(string campaignName, string email); + + } } \ No newline at end of file diff --git a/Sledgemapper/Program.cs b/Sledgemapper/Program.cs index 2c90271..7eb1839 100644 --- a/Sledgemapper/Program.cs +++ b/Sledgemapper/Program.cs @@ -9,7 +9,10 @@ namespace Sledgemapper { using(Sentry.SentrySdk.Init("https://973ac1606651454ba7a19f642d0a9bc1@glitchtip.michelescandura.com/1")) using (var game = new Sledgemapper()) + { + Sentry.SentrySdk.CaptureEvent(new Sentry.SentryEvent() { Message = "App starting" }); game.Run(); + } } } } diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index f2749ca..3233cf1 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -50,8 +50,8 @@ namespace Sledgemapper.UI MenuMapOpen.Selected += OnMenuMapOpen; MenuMapNew.Selected += OnMenuMapNew; - MenuConnectNew.Enabled = false; - MenuConnectJoin.Enabled = false; + //MenuConnectNew.Enabled = false; + //MenuConnectJoin.Enabled = false; MenuConnectSync.Enabled = false; MenuConnectUpload.Enabled = false; MenuCampaignOpen.Enabled = false; @@ -119,8 +119,8 @@ namespace Sledgemapper.UI private void OnLoginSuccesfulMessage(LoginSuccesfulMessage obj) { - MenuConnectNew.Enabled = true; - MenuConnectJoin.Enabled = true; + //MenuConnectNew.Enabled = true; + //MenuConnectJoin.Enabled = true; MenuCampaignOpen.Enabled = true; MenuCampaingNew.Enabled = true; diff --git a/Sledgemapper/UI/MainWidget.Generated.cs b/Sledgemapper/UI/MainWidget.Generated.cs index 054a112..50223dd 100644 --- a/Sledgemapper/UI/MainWidget.Generated.cs +++ b/Sledgemapper/UI/MainWidget.Generated.cs @@ -1,4 +1,4 @@ -/* Generated by MyraPad at 16/09/2021 14:53:34 */ +/* Generated by MyraPad at 20/09/2021 14:15:54 */ using Myra; using Myra.Graphics2D; using Myra.Graphics2D.TextureAtlases; @@ -61,36 +61,9 @@ namespace Sledgemapper.UI MenuConnectLogin.ShortcutText = "Ctrl+O"; MenuConnectLogin.Id = "MenuConnectLogin"; - var menuSeparator3 = new MenuSeparator(); - - MenuConnectNew = new MenuItem(); - MenuConnectNew.Text = "&New"; - MenuConnectNew.ShortcutText = "Ctrl+N"; - MenuConnectNew.Id = "MenuConnectNew"; - - MenuConnectJoin = new MenuItem(); - MenuConnectJoin.Text = "&Join"; - MenuConnectJoin.ShortcutText = "Ctrl+J"; - MenuConnectJoin.Id = "MenuConnectJoin"; - - MenuConnectSync = new MenuItem(); - MenuConnectSync.Text = "S&ync"; - 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); - menuItem1.Items.Add(menuSeparator3); - menuItem1.Items.Add(MenuConnectNew); - menuItem1.Items.Add(MenuConnectJoin); - menuItem1.Items.Add(MenuConnectSync); - menuItem1.Items.Add(MenuConnectUpload); MenuCampaingNew = new MenuItem(); MenuCampaingNew.Text = "&New"; @@ -102,7 +75,7 @@ namespace Sledgemapper.UI MenuCampaignOpen.ShortcutText = "Ctrl+O"; MenuCampaignOpen.Id = "MenuCampaignOpen"; - var menuSeparator4 = new MenuSeparator(); + var menuSeparator3 = new MenuSeparator(); MenuCampaignPlayers = new MenuItem(); MenuCampaignPlayers.Text = "&Players"; @@ -113,7 +86,7 @@ namespace Sledgemapper.UI menuItem2.Text = "C&aign"; menuItem2.Items.Add(MenuCampaingNew); menuItem2.Items.Add(MenuCampaignOpen); - menuItem2.Items.Add(menuSeparator4); + menuItem2.Items.Add(menuSeparator3); menuItem2.Items.Add(MenuCampaignPlayers); MenuMapNew = new MenuItem(); @@ -126,11 +99,23 @@ namespace Sledgemapper.UI MenuMapOpen.ShortcutText = "Ctrl+O"; MenuMapOpen.Id = "MenuMapOpen"; + MenuConnectSync = new MenuItem(); + MenuConnectSync.Text = "S&ync"; + MenuConnectSync.ShortcutText = "Ctrl+Y"; + MenuConnectSync.Id = "MenuConnectSync"; + + MenuConnectUpload = new MenuItem(); + MenuConnectUpload.Text = "&Upload"; + MenuConnectUpload.ShortcutText = "Ctrl+U"; + MenuConnectUpload.Id = "MenuConnectUpload"; + var menuItem3 = new MenuItem(); menuItem3.Text = "&Map"; menuItem3.ShortcutText = "Ctrl+M"; menuItem3.Items.Add(MenuMapNew); menuItem3.Items.Add(MenuMapOpen); + menuItem3.Items.Add(MenuConnectSync); + menuItem3.Items.Add(MenuConnectUpload); MenuViewShowNotes = new MenuItem(); MenuViewShowNotes.Text = "N&otes"; @@ -357,15 +342,13 @@ namespace Sledgemapper.UI public MenuItem MenuFileQuit; public MenuItem MenuFile; public MenuItem MenuConnectLogin; - public MenuItem MenuConnectNew; - public MenuItem MenuConnectJoin; - public MenuItem MenuConnectSync; - public MenuItem MenuConnectUpload; public MenuItem MenuCampaingNew; public MenuItem MenuCampaignOpen; public MenuItem MenuCampaignPlayers; public MenuItem MenuMapNew; public MenuItem MenuMapOpen; + public MenuItem MenuConnectSync; + public MenuItem MenuConnectUpload; public MenuItem MenuViewShowNotes; public MenuItem MenuViewShowCellNUmbers; public MenuItem MenuViewCenterOnSelection; diff --git a/Sledgemapper/UI/MainWidget.xmmp b/Sledgemapper/UI/MainWidget.xmmp index aa41526..cc322cc 100644 --- a/Sledgemapper/UI/MainWidget.xmmp +++ b/Sledgemapper/UI/MainWidget.xmmp @@ -17,11 +17,6 @@ - - - - - @@ -32,6 +27,8 @@ + + From 77befef8e08719e81b89accbb10757f45b515aa4 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Mon, 20 Sep 2021 16:30:42 +0100 Subject: [PATCH 64/81] cleanup and fixes --- .../Handlers/BaseCommandHandler.cs | 24 ++++-- .../Handlers/SendNewLineMessage.cs | 2 +- .../Handlers/SendNewNoteMessage.cs | 2 +- .../Handlers/SendNewRoomMessage.cs | 2 +- .../Handlers/SendNewTileMessage.cs | 2 +- .../Handlers/SendNewWallMessage.cs | 2 +- .../Handlers/StartNewSessionHandler.cs | 22 +++--- Sledgemapper/Messages/MapOpenedMessage.cs | 13 +++- Sledgemapper/Sledgemapper.cs | 4 +- Sledgemapper/UI/MainWidget.Custom.cs | 35 ++------- Sledgemapper/UI/MapList.Custom.cs | 6 +- Sledgemapper/UI/MapWindow.Custom.cs | 30 ++++++-- Sledgemapper/UI/SessionWindow.Custom.cs | 74 ------------------- Sledgemapper/UI/SessionWindow.Generated.cs | 62 ---------------- Sledgemapper/UI/SessionWindow.cs | 11 --- Sledgemapper/UI/sessionwindow.xmmp | 17 ----- 16 files changed, 78 insertions(+), 230 deletions(-) delete mode 100644 Sledgemapper/UI/SessionWindow.Custom.cs delete mode 100644 Sledgemapper/UI/SessionWindow.Generated.cs delete mode 100644 Sledgemapper/UI/SessionWindow.cs delete mode 100644 Sledgemapper/UI/sessionwindow.xmmp diff --git a/Sledgemapper.Api/Handlers/BaseCommandHandler.cs b/Sledgemapper.Api/Handlers/BaseCommandHandler.cs index 313ad73..4723308 100644 --- a/Sledgemapper.Api/Handlers/BaseCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/BaseCommandHandler.cs @@ -7,6 +7,8 @@ using System.Threading.Tasks; using System; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Models; +using System.Collections.Generic; +using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api.Handlers { @@ -32,13 +34,7 @@ namespace Sledgemapper.Api.Handlers Dbcontext.Attach(user); - var campaign = await Dbcontext - .Campaigns - .Where(campaign => campaign.CampaignId == command.Campaign) - .Include(c => c.InvitedUsers) - .Include(c => c.Maps) - .Include(c => c.Owner) - .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); + var campaign = await GetCampaignForUser(command); var maps = campaign.Maps.Any(s => s.SessionId == command.SessionId); @@ -48,6 +44,20 @@ namespace Sledgemapper.Api.Handlers } } + protected async Task GetCampaignForUser(TRequest command) + { + var user = await Dbcontext.Users.FindAsync(command.UserId); + Dbcontext.Attach(user); + var campaign = await Dbcontext + .Campaigns + .Where(campaign => campaign.CampaignId == command.Campaign) + .Include(c => c.InvitedUsers) + .Include(c => c.Maps) + .Include(c => c.Owner) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); + return campaign; + } + protected async Task SaveLog(TRequest command, string operation, string type, string data, CancellationToken cancellationToken) { var session = Dbcontext.Sessions.First(m => m.SessionId == command.SessionId); diff --git a/Sledgemapper.Api/Handlers/SendNewLineMessage.cs b/Sledgemapper.Api/Handlers/SendNewLineMessage.cs index e0e9c86..6af54b6 100644 --- a/Sledgemapper.Api/Handlers/SendNewLineMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewLineMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewLineNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).NewLine(notification.Line); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).NewLine(notification.Line); } } } diff --git a/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs b/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs index 37e9f5a..ef95487 100644 --- a/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewNoteNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).NewNote(notification.Note); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).NewNote(notification.Note); } } } diff --git a/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs b/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs index adbf4ec..d3f441f 100644 --- a/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewRoomNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).NewRoom(notification.Room); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).NewRoom(notification.Room); } } } diff --git a/Sledgemapper.Api/Handlers/SendNewTileMessage.cs b/Sledgemapper.Api/Handlers/SendNewTileMessage.cs index 7fa2541..0e3511b 100644 --- a/Sledgemapper.Api/Handlers/SendNewTileMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewTileMessage.cs @@ -17,7 +17,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewTileNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).NewTile(notification.Tile); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).NewTile(notification.Tile); } } } diff --git a/Sledgemapper.Api/Handlers/SendNewWallMessage.cs b/Sledgemapper.Api/Handlers/SendNewWallMessage.cs index 34d5567..915b420 100644 --- a/Sledgemapper.Api/Handlers/SendNewWallMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewWallMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(NewWallNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).NewWall(notification.Wall); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).NewWall(notification.Wall); } } } diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index f7aab52..6281275 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -9,30 +9,28 @@ using System.Threading.Tasks; namespace Sledgemapper.Api.Handlers { - public class StartNewSessionHandler : IRequestHandler + public class StartNewSessionHandler : BaseCommandHandler { - private readonly IMediator _mediator; - private readonly SledgemapperDbContext _dbcontext; + - public StartNewSessionHandler(IMediator mediator, SledgemapperDbContext dbcontext) + public StartNewSessionHandler(IMediator mediator, SledgemapperDbContext dbcontext):base(mediator, dbcontext) { - _mediator = mediator; - _dbcontext = dbcontext; + } - public async Task Handle(NewSessionCommand notification, CancellationToken cancellationToken) + public override async Task Handle(NewSessionCommand command, CancellationToken cancellationToken) { - var campaign = _dbcontext.Campaigns.First(c => c.CampaignId == notification.Campaign && c.OwnerId == notification.UserId.ToString()); + var campaign = await GetCampaignForUser(command); var session = new Session { - SessionName = notification.SessionName, - OwnerUserId = notification.UserId, + SessionName = command.SessionName, + OwnerUserId = command.UserId, CampaignId = campaign.CampaignId }; - _dbcontext.Sessions.Add(session); - await _dbcontext.SaveChangesAsync(); + Dbcontext.Sessions.Add(session); + await Dbcontext.SaveChangesAsync(); return session.SessionId; } } diff --git a/Sledgemapper/Messages/MapOpenedMessage.cs b/Sledgemapper/Messages/MapOpenedMessage.cs index a52055b..baa6ab6 100644 --- a/Sledgemapper/Messages/MapOpenedMessage.cs +++ b/Sledgemapper/Messages/MapOpenedMessage.cs @@ -1,11 +1,16 @@ +using System; + namespace Sledgemapper.Messages { public class MapOpenedMessage : TinyMessenger.TinyMessageBase { - public string MapName { get; set; } - public MapOpenedMessage(object sender) : base(sender) - { - } + public string MapName { get; } + public Guid MapId { get; } + public MapOpenedMessage(object sender, string mapName, Guid mapId) : base(sender) + { + MapName = mapName; + MapId = mapId; + } } } \ No newline at end of file diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 25772f3..ce775aa 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -223,6 +223,8 @@ namespace Sledgemapper _whiteRectangle = new Texture2D(GraphicsDevice, 1, 1); _whiteRectangle.SetData(new[] { Color.White }); + + CenterOnTile(0, 0); } @@ -581,7 +583,7 @@ namespace Sledgemapper DrawTiles(); - //DrawWalls(); + DrawWalls(); DrawOverlays(); diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 3233cf1..258770f 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -87,6 +87,11 @@ namespace Sledgemapper.UI private async void OnMapOpenedMessage(MapOpenedMessage obj) { lblMap.Text = obj.MapName; + State.Instance.MapId = obj.MapId; + State.Instance.MapName = obj.MapName; + CommunicationManager.SessionData.SessionName = obj.MapName; + CommunicationManager.SessionData.SessionId = obj.MapId; + MenuConnectSync.Enabled = true; MenuConnectUpload.Enabled = true; CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; @@ -163,23 +168,7 @@ namespace Sledgemapper.UI } - private void OnMenuConnectNewSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - Window window = new() - { - Title = "New mapping session" - }; - - var content = new SessionWindow(CommunicationManager, Messenger); - window.Content = content; - - window.ShowModal(Desktop); - } + private void UpdateConnectionState(HubConnection connection) { @@ -302,16 +291,6 @@ namespace Sledgemapper.UI _windowEditor.ShowModal(Desktop); } - private void OnMenuConnectJoinSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - new SessionWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Join mapping session"); - } - private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) { State.Instance.ShowCellNumbers = !State.Instance.ShowCellNumbers; @@ -475,7 +454,7 @@ namespace Sledgemapper.UI return; } - new MapWindow(CommunicationManager).ShowInModalWindow(Desktop, "New map"); + new MapWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New map"); } //TODO Refactor diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index 61045e6..aee9fd5 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -35,8 +35,8 @@ namespace Sledgemapper.UI { State.Instance.MapName = _selectedMap; State.Instance.MapId = _selectedMapId; - // var map = CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); - Messenger.Publish(new MapOpenedMessage(this) { MapName = State.Instance.MapName }); + // var map = CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); + Messenger.Publish(new MapOpenedMessage(this, _selectedMap, _selectedMapId)); this.GetContainingWindow().Close(); } @@ -71,7 +71,7 @@ namespace Sledgemapper.UI private void OnMenuMapNew(object sender, EventArgs e) { - new MapWindow(CommunicationManager).ShowInModalWindow(Desktop, "New map"); + new MapWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New map"); } } } \ No newline at end of file diff --git a/Sledgemapper/UI/MapWindow.Custom.cs b/Sledgemapper/UI/MapWindow.Custom.cs index 678e575..dbfe340 100644 --- a/Sledgemapper/UI/MapWindow.Custom.cs +++ b/Sledgemapper/UI/MapWindow.Custom.cs @@ -1,17 +1,22 @@ /* Generated by MyraPad at 02/09/2021 16:26:04 */ +using Microsoft.AspNetCore.SignalR.Client; using Myra.Graphics2D.UI; using Sentry; +using Sledgemapper.Messages; using System; +using TinyMessenger; namespace Sledgemapper.UI { public partial class MapWindow { public CommunicationManager CommunicationManager { get; } + public TinyMessengerHub Messenger { get; } - public MapWindow(CommunicationManager communicationManager) + public MapWindow(CommunicationManager communicationManager, TinyMessengerHub messenger) { CommunicationManager= communicationManager; + Messenger = messenger; BuildUI(); BtnNewCampaign.Click += OnButtonNewMapClicked; } @@ -23,18 +28,27 @@ namespace Sledgemapper.UI { container = container.Parent; } - var localWindow = (Window)container; - var localContent = localWindow.Content as MapWindow; - var isValid = localContent.TxtCampaign.ValidateTextbox(); + + var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; + + var isValid = localContent.Content.TxtCampaign.ValidateTextbox(); if (!isValid) { return; } + if (CommunicationManager.Connection.State != HubConnectionState.Connected) + { + Messenger.Publish(new SignalrConnectionUpdateMessage(this)); + } + var successful = false; + Guid sessionGuid = Guid.Empty; try { - await CommunicationManager.Api.NewSession(State.Instance.CampaignId, localContent.TxtCampaign.Text); + sessionGuid = await CommunicationManager.Api.NewSession(State.Instance.CampaignId, localContent.Content.TxtCampaign.Text); + + successful = sessionGuid != Guid.Empty; } catch (Exception ex) @@ -42,7 +56,11 @@ namespace Sledgemapper.UI SentrySdk.CaptureException(ex); } - localWindow.Close(); + if (successful) + { + Messenger.Publish(new MapOpenedMessage(this, localContent.Content.TxtCampaign.Text, sessionGuid)); + localContent.Window.Close(); + } } } } \ No newline at end of file diff --git a/Sledgemapper/UI/SessionWindow.Custom.cs b/Sledgemapper/UI/SessionWindow.Custom.cs deleted file mode 100644 index e21fee8..0000000 --- a/Sledgemapper/UI/SessionWindow.Custom.cs +++ /dev/null @@ -1,74 +0,0 @@ -/* Generated by MyraPad at 10/11/2020 10:59:36 */ -using System; -using Microsoft.AspNetCore.SignalR.Client; -using Myra.Graphics2D.UI; -using Sentry; -using Sledgemapper.Messages; -using Sledgemapper.Shared.Entities; -using TinyMessenger; -using Session = Sledgemapper.Shared.Entities.Session; - -namespace Sledgemapper.UI -{ - public partial class SessionWindow - { - private readonly CommunicationManager CommunicationManager; - private readonly TinyMessengerHub Messenger; - - public SessionWindow(CommunicationManager communicationManager, TinyMessengerHub messenger) - { - BuildUI(); - CommunicationManager = communicationManager; - Messenger = messenger; - BtnLogin.Text = "Join"; - BtnLogin.Click += OnButtonNewSessionClicked; - } - - private async void OnButtonNewSessionClicked(object sender, EventArgs e) - { - var localContent = ((TextButton)sender).GetParentContentInWindow();// localWindow.Content as PlayerWindow; - - var isValid = localContent.Content.TxtSession.ValidateTextbox(); - if (!isValid) - { - return; - } - - if (CommunicationManager.Connection.State != HubConnectionState.Connected) - { - Messenger.Publish(new SignalrConnectionUpdateMessage(this)); - } - - var successful = false; - try - { - var sessionGuid = await CommunicationManager.Api.NewSession(State.Instance.CampaignId, localContent.Content.TxtSession.Text); - - if (sessionGuid != Guid.Empty) - { - //CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - State.Instance.SessionId = sessionGuid; - - } - successful = true; - var result2 = await CommunicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); - //CommunicationManager.SessionData.SessionId = result2.SessionId; - //CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - } - catch (Exception ex) - { - SentrySdk.CaptureException(ex); - } - - if (successful) - { - CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; - CommunicationManager.SessionData.Map = CommunicationManager.SessionData.Map; - CommunicationManager.SessionData.Overlays = CommunicationManager.SessionData.Overlays; - CommunicationManager.SessionData.Walls = CommunicationManager.SessionData.Walls; - - localContent.Window.Close(); - } - } - } -} \ No newline at end of file diff --git a/Sledgemapper/UI/SessionWindow.Generated.cs b/Sledgemapper/UI/SessionWindow.Generated.cs deleted file mode 100644 index a0c4cef..0000000 --- a/Sledgemapper/UI/SessionWindow.Generated.cs +++ /dev/null @@ -1,62 +0,0 @@ -/* Generated by MyraPad at 10/11/2020 10:59:36 */ -using Myra.Graphics2D; -using Myra.Graphics2D.TextureAtlases; -using Myra.Graphics2D.UI; -using Myra.Graphics2D.Brushes; - -#if !STRIDE -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -#else -using Stride.Core.Mathematics; -#endif - -namespace Sledgemapper.UI -{ - partial class SessionWindow: VerticalStackPanel - { - private void BuildUI() - { - var label1 = new Label(); - label1.Text = "Session"; - - TxtSession = new TextBox(); - TxtSession.GridColumn = 1; - TxtSession.Id = "TxtSession"; - - var grid1 = new Grid(); - grid1.ColumnSpacing = 25; - grid1.RowSpacing = 10; - grid1.ColumnsProportions.Add(new Proportion - { - Type = Myra.Graphics2D.UI.ProportionType.Pixels, - Value = 60, - }); - grid1.ColumnsProportions.Add(new Proportion - { - Type = Myra.Graphics2D.UI.ProportionType.Fill, - }); - grid1.Widgets.Add(label1); - grid1.Widgets.Add(TxtSession); - - BtnLogin = new TextButton(); - BtnLogin.Text = "Join"; - BtnLogin.Padding = new Thickness(10, 5); - BtnLogin.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; - BtnLogin.Id = "BtnLogin"; - - - Spacing = 16; - HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; - VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; - Width = 300; - Padding = new Thickness(10); - Widgets.Add(grid1); - Widgets.Add(BtnLogin); - } - - - public TextBox TxtSession; - public TextButton BtnLogin; - } -} \ No newline at end of file diff --git a/Sledgemapper/UI/SessionWindow.cs b/Sledgemapper/UI/SessionWindow.cs deleted file mode 100644 index 3c7a99a..0000000 --- a/Sledgemapper/UI/SessionWindow.cs +++ /dev/null @@ -1,11 +0,0 @@ -/* Generated by MyraPad at 10/11/2020 10:59:36 */ -namespace Sledgemapper.UI -{ - public partial class SessionWindow - { - public SessionWindow() - { - BuildUI(); - } - } -} \ No newline at end of file diff --git a/Sledgemapper/UI/sessionwindow.xmmp b/Sledgemapper/UI/sessionwindow.xmmp deleted file mode 100644 index bbfd98a..0000000 --- a/Sledgemapper/UI/sessionwindow.xmmp +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file From 17d6cd28d6c7250f02f57037d46d0f50d99697fa Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Mon, 20 Sep 2021 16:49:49 +0100 Subject: [PATCH 65/81] fixing notes --- Sledgemapper.Shared/Entities/Session.cs | 2 +- Sledgemapper/Sledgemapper.cs | 102 ++++++------------------ 2 files changed, 27 insertions(+), 77 deletions(-) diff --git a/Sledgemapper.Shared/Entities/Session.cs b/Sledgemapper.Shared/Entities/Session.cs index 0339f27..84d8454 100644 --- a/Sledgemapper.Shared/Entities/Session.cs +++ b/Sledgemapper.Shared/Entities/Session.cs @@ -122,7 +122,7 @@ public class Map:Session var newNote = new Note { X = selectedNote.X, Y = selectedNote.Y, Text = selectedNote.Text }; if (noteExists) { - Walls.TryRemove(note.ToString(), out var _); + Notes.TryRemove(note.ToString(), out var _); } Notes.TryAdd(newNote.ToString(), newNote); diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index ce775aa..42c5bd1 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -24,6 +24,7 @@ namespace Sledgemapper { private readonly CommunicationManager _communicationManager; private readonly State _state; + private readonly ArrayPool _vector2Pool; private readonly GraphicsDeviceManager _graphics; private SpriteBatch _spriteBatch; private CachedContent _cachedContent; @@ -37,6 +38,13 @@ namespace Sledgemapper private RenderTarget2D rendertarget; private MainWidget _mainWidget; private readonly TinyMessengerHub _messenger; + Effect outlineShader; + private Texture2D _transparentRedRectangle; + private Texture2D _whiteRectangle; + private Dictionary _wallsContent; + private SpriteSheet _spriteSheet; + private SpriteSheet _rippleSpriteSheet; + Label _lblOverlayName; public Sledgemapper() { @@ -58,7 +66,7 @@ namespace Sledgemapper _communicationManager.Connection.Reconnecting += OnHubReconnecting; _communicationManager.Connection.Closed += OnHubDisconnected; _state = State.Instance; - + _vector2Pool = ArrayPool.Create(); _messenger = new TinyMessengerHub(); } @@ -76,6 +84,7 @@ namespace Sledgemapper _mainWidget.lblConnectionStatus.Text = "Reconnecting"; await Task.Yield(); } + private async Task OnHubReconnected(string arg) { // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); @@ -118,7 +127,6 @@ namespace Sledgemapper } - private void AddItemToToolGrid(Grid grid, EventHandler eventAction, Dictionary tilesFolderContent) { var indexX = 0; @@ -165,9 +173,6 @@ namespace Sledgemapper _lblOverlayName.Visible = false; } - private SpriteSheet _rippleSpriteSheet; - Label _lblOverlayName; - private void OnTileButtonTouchEntered(object sender, EventArgs e) { var mouseState = Mouse.GetState().Position; @@ -188,7 +193,7 @@ namespace Sledgemapper ResetRenderTarget(); - _mainWidget = new MainWidget(_communicationManager, _messenger, Window); + _mainWidget = new MainWidget(_communicationManager, _messenger, Window); @@ -227,29 +232,15 @@ namespace Sledgemapper CenterOnTile(0, 0); } - private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) { AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); } - private void EditNote(Note note) { _state.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; - var noteWindow = new NoteWindow(); - - Window window = new() - { - Title = $" Note on {note.X}:{note.Y}" - }; - noteWindow.NoteText.Text = note.Text; - noteWindow.BtnOk.Click += OnButtonNoteOkClick; - noteWindow.BtnCancel.Click += OnButtonNoteCancelClick; - - window.Content = noteWindow; - window.ShowModal(_desktop); - noteWindow.NoteText.SetKeyboardFocus(); + new NoteWindow(_communicationManager, note).ShowInModalWindow(_desktop, $" Note on {note.X}:{note.Y}"); } protected override void Update(GameTime gameTime) @@ -262,16 +253,21 @@ namespace Sledgemapper var screenPosition = new Point(mouseState.Position.X - (int)_state.ViewportCenter.X, mouseState.Position.Y - (int)_state.ViewportCenter.Y); - _state.HoveredTile.X = screenPosition.X / _state.TileSize; - _state.HoveredTile.Y = screenPosition.Y / _state.TileSize; - if (screenPosition.X < 0) + if (!_desktop.ContextMenu?.Visible??true) { - _state.HoveredTile.X--; - } + _state.HoveredTile.X = screenPosition.X / _state.TileSize; + _state.HoveredTile.Y = screenPosition.Y / _state.TileSize; - if (screenPosition.Y < 0) - { - _state.HoveredTile.Y--; + + if (screenPosition.X < 0) + { + _state.HoveredTile.X--; + } + + if (screenPosition.Y < 0) + { + _state.HoveredTile.Y--; + } } if (_state.InsertMode == InsertMode.Wall) @@ -1462,8 +1458,6 @@ namespace Sledgemapper } } - ArrayPool _vector2Pool; - private bool IsOffscreen(Tile position) { var boxTL = new Point(200 - _state.TileSize / 2, 75 - _state.TileSize / 2); @@ -1480,8 +1474,6 @@ namespace Sledgemapper return false; } - private int _borderWidth => (_state.TileSize / 6) % 2 == 0 ? (_state.TileSize / 6) : (_state.TileSize / 6) + 1; - private void DrawTiles() { for (var i = 0; i < _sessionData.Map.Values.Count; i++) @@ -1549,7 +1541,6 @@ namespace Sledgemapper } } - private void DrawRoom(Room tile) { var posX = tile.Start.X * _state.TileSize; @@ -1620,12 +1611,6 @@ namespace Sledgemapper } } } - Effect outlineShader; - private Texture2D _transparentRedRectangle; - private Texture2D _whiteRectangle; - private Dictionary _wallsContent; - - private SpriteSheet _spriteSheet; private void DrawDelete(Room tile) { @@ -1725,47 +1710,12 @@ namespace Sledgemapper } } - private void OnButtonNoteOkClick(object sender, EventArgs e) - { - var button = ((TextButton)sender); - var localContent = button.GetParentContentInWindow(); - var note = new Note - { - X = _state.SelectedNote.X, - Y = _state.SelectedNote.Y, - Text = localContent.Content.NoteText.Text - }; - _sessionData.NewNote(note); - localContent.Window.Close(); - } - - private void OnButtonNoteCancelClick(object sender, EventArgs e) - { - var button = ((TextButton)sender); - var content = button.GetParentContentInWindow(); - content.Window.Close(); - } - - private void OnContextMenuNewNoteClick(object sender, EventArgs e) { _desktop.HideContextMenu(); - var noteWindow = new NoteWindow(); - - Window window = new() - { - Title = $" Note on {_state.SelectedTile.X}:{_state.SelectedTile.Y}" - }; - - noteWindow.BtnOk.Click += OnButtonNoteOkClick; - noteWindow.BtnCancel.Click += OnButtonNoteCancelClick; - window.Content = noteWindow; - window.ShowModal(_desktop); - noteWindow.NoteText.SetKeyboardFocus(); + new NoteWindow(_communicationManager, new Note()).ShowInModalWindow(_desktop, $" Note on {_state.HoveredTile.X}:{_state.HoveredTile.Y}"); } - - private void OnContextMenuDeleteNoteClick(object sender, EventArgs e) { _desktop.HideContextMenu(); From 7e3e645fc9fcc940cd818814f5aba6e334b6f8b1 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Tue, 21 Sep 2021 11:09:26 +0100 Subject: [PATCH 66/81] fixes and cleanup --- .../Commands/DeleteNoteCommand.cs | 3 +- .../Commands/DeleteOverlayCommand.cs | 5 +- .../Commands/DeleteWallCommand.cs | 3 +- .../Controllers/AuthManagementController.cs | 2 +- .../Controllers/CampaignController.cs | 8 +- Sledgemapper.Api/Controllers/MapController.cs | 58 +- Sledgemapper.Api/Core/Entities/MapLog.cs | 4 +- Sledgemapper.Api/Core/Entities/Session.cs | 4 +- Sledgemapper.Api/Core/Entities/SessionUser.cs | 2 +- Sledgemapper.Api/Core/Entities/Snapshot.cs | 2 +- Sledgemapper.Api/Core/Entities/User.cs | 6 +- .../Core/Entities/UserConnection.cs | 4 +- .../Handlers/BaseCommandHandler.cs | 24 +- .../Handlers/GetMapSnapshotCommandHandler.cs | 21 +- .../Handlers/NewLineCommandHandler.cs | 2 +- .../Handlers/NewSnapshotCommandHandler.cs | 20 +- .../Handlers/NewTileCommandHandler.cs | 6 +- .../Handlers/NewWallCommandHandler.cs | 2 +- .../Handlers/PingCommandHandler.cs | 28 - .../Handlers/SendDeleteNoteMessage.cs | 2 +- .../Handlers/SendDeleteOverlayMessage.cs | 2 +- .../Handlers/SendDeleteTileMessage.cs | 2 +- .../Handlers/SendDeleteWallMessage.cs | 2 +- Sledgemapper.Api/Handlers/SendPingMessage.cs | 23 - .../Handlers/StartNewSessionHandler.cs | 5 +- Sledgemapper.Api/Helpers/AppException.cs | 6 +- Sledgemapper.Api/Helpers/AutoMapperProfile.cs | 2 +- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 36 +- Sledgemapper.Api/Models/AuthResult.cs | 2 +- Sledgemapper.Api/Models/AuthenticateModel.cs | 2 +- Sledgemapper.Api/Models/RegisterModel.cs | 2 +- .../Models/RegistrationResponse.cs | 4 +- Sledgemapper.Api/Models/UserLoginRequest.cs | 2 +- .../Clients/ISledgemapperClient.cs | 3 +- Sledgemapper.Shared/ExtensionMethods.cs | 4 +- .../ObservableConcurrentDictionary.cs | 4 +- Sledgemapper.sln.DotSettings | 2 + Sledgemapper/CommunicationManager.cs | 260 +- Sledgemapper/IMapApi.cs | 16 +- Sledgemapper/Settings.cs | 2 +- Sledgemapper/Sledgemapper.cs | 2468 +++++++++-------- Sledgemapper/State.cs | 2 +- Sledgemapper/UI/CampaignWindow.Custom.cs | 1 - Sledgemapper/UI/MainWidget.Custom.cs | 1 - Sledgemapper/UI/MapList.Custom.cs | 1 - Sledgemapper/UI/MapWindow.cs | 3 - Sledgemapper/UI/NoteList.Custom.cs | 3 +- Sledgemapper/UI/PlayerList.Custom.cs | 2 +- 48 files changed, 1530 insertions(+), 1538 deletions(-) delete mode 100644 Sledgemapper.Api/Handlers/PingCommandHandler.cs delete mode 100644 Sledgemapper.Api/Handlers/SendPingMessage.cs create mode 100644 Sledgemapper.sln.DotSettings diff --git a/Sledgemapper.Api/Commands/DeleteNoteCommand.cs b/Sledgemapper.Api/Commands/DeleteNoteCommand.cs index fe8000d..c60bfb0 100644 --- a/Sledgemapper.Api/Commands/DeleteNoteCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteNoteCommand.cs @@ -1,3 +1,4 @@ +using System; using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Commands @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Note Note { get; private set; } - public DeleteNoteCommand(string sessionName, Note note, string userId) : base(sessionName, userId) + public DeleteNoteCommand(Guid campaign, Guid mapName, Note note, string userId) : base(campaign, mapName, userId) { Note = note; } diff --git a/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs b/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs index e3cde01..abd504d 100644 --- a/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteOverlayCommand.cs @@ -1,12 +1,13 @@ +using System; using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Commands { - public class DeleteOverlayCommand : BaseCommand + public class DeleteOverlayCommand : BaseCommand { public Overlay Overlay { get; private set; } - public DeleteOverlayCommand(string sessionName, Overlay overlay, string userId) : base(sessionName, userId) + public DeleteOverlayCommand(Guid campaign, Guid mapName, Overlay overlay, string userId) : base(campaign, mapName, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Commands/DeleteWallCommand.cs b/Sledgemapper.Api/Commands/DeleteWallCommand.cs index 454af3e..4b38b77 100644 --- a/Sledgemapper.Api/Commands/DeleteWallCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteWallCommand.cs @@ -1,3 +1,4 @@ +using System; using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Commands @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Wall Wall { get; private set; } - public DeleteWallCommand(string sessionName, Wall wall, string userId) : base(sessionName, userId) + public DeleteWallCommand(Guid campaign, Guid mapName, Wall wall, string userId) : base(campaign, mapName, userId) { Wall = wall; } diff --git a/Sledgemapper.Api/Controllers/AuthManagementController.cs b/Sledgemapper.Api/Controllers/AuthManagementController.cs index d92a69c..584319a 100644 --- a/Sledgemapper.Api/Controllers/AuthManagementController.cs +++ b/Sledgemapper.Api/Controllers/AuthManagementController.cs @@ -162,7 +162,7 @@ namespace Sledgemapper.Api.Controllers Subject = new ClaimsIdentity(new[] { - new Claim("Id", user.Id.ToString()), + new Claim("Id", user.Id), new Claim(JwtRegisteredClaimNames.Sub, user.Email), new Claim(JwtRegisteredClaimNames.Email, user.Email), // the JTI is used for our refresh token which we will be convering in the next video diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 44811fd..6c0313f 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -24,7 +24,7 @@ namespace Sledgemapper.Api.Controllers [Route("{campaignName}")] public async Task> Post(string campaignName) { - var result = await _mediator.Send(new NewCampaignCommand(campaignName, UserId.ToString())); + var result = await _mediator.Send(new NewCampaignCommand(campaignName, UserId)); if (!result) { return BadRequest(); @@ -51,7 +51,7 @@ namespace Sledgemapper.Api.Controllers [Route("{campaignName}/players/{email}")] public async Task Invite(string campaignName, string email) { - var result = await _mediator.Send(new InvitePlayerToCampaignCommand(campaignName, email, UserId.ToString())); + var result = await _mediator.Send(new InvitePlayerToCampaignCommand(campaignName, email, UserId)); return result; } @@ -59,7 +59,7 @@ namespace Sledgemapper.Api.Controllers [Route("{campaignName}/players")] public async Task> GetPlayers(string campaignName) { - var result = await _mediator.Send(new GetCampaignPlayersCommand(campaignName, UserId.ToString())); + var result = await _mediator.Send(new GetCampaignPlayersCommand(campaignName, UserId)); return result; } @@ -68,7 +68,7 @@ namespace Sledgemapper.Api.Controllers [Route("{campaignName}/maps")] public async Task> GetMaps(Guid campaignName) { - var result = await _mediator.Send(new GetCampaignMapsCommand(campaignName, UserId.ToString())); + var result = await _mediator.Send(new GetCampaignMapsCommand(campaignName, UserId)); return result; } diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index e1ab9d3..683f84a 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -1,11 +1,11 @@ +using System; +using System.Linq; +using System.Threading.Tasks; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Sledgemapper.Api.Commands; using Sledgemapper.Shared.Entities; -using System; -using System.Linq; -using System.Threading.Tasks; namespace Sledgemapper.Api.Controllers { @@ -14,15 +14,30 @@ namespace Sledgemapper.Api.Controllers public class MapController : ControllerBase { private readonly IMediator _mediator; + + public MapController(IMediator mediator) + { + _mediator = mediator; + } + private string UserId => HttpContext.User.Claims.FirstOrDefault(m => m.Type == "Id").Value; - public MapController(IMediator mediator) => _mediator = mediator; - - [HttpPost] - public async Task Post(string campaign, string mapName) + [HttpDelete("overlay")] + public async Task Delete(Guid campaign, Guid mapName, [FromBody] Overlay overlay) { - var result = await _mediator.Send(new NewSessionCommand(campaign, mapName, UserId)); - return result; + await _mediator.Send(new DeleteOverlayCommand(campaign, mapName, overlay, UserId)); + } + + [HttpDelete("wall")] + public async Task Delete(Guid campaign, Guid mapName, [FromBody] Wall wall) + { + await _mediator.Send(new DeleteWallCommand(campaign, mapName, wall, UserId)); + } + + [HttpDelete("note")] + public async Task Delete(Guid campaign, Guid mapName, [FromBody] Note note) + { + await _mediator.Send(new DeleteNoteCommand(campaign, mapName, note, UserId)); } [HttpGet] @@ -32,6 +47,13 @@ namespace Sledgemapper.Api.Controllers return result; } + [HttpPost] + public async Task Post(string campaign, string mapName) + { + var result = await _mediator.Send(new NewSessionCommand(campaign, mapName, UserId)); + return result; + } + [HttpPost("snapshot")] public async Task Post(string campaign, string mapName, [FromBody] Session session) { @@ -67,23 +89,5 @@ namespace Sledgemapper.Api.Controllers { await _mediator.Send(new NewLineCommand(campaign, mapName, line, UserId)); } - - [HttpDelete("overlay")] - public async Task Delete(string campaign, string mapName, [FromBody] Overlay overlay) - { - await _mediator.Send(new DeleteOverlayCommand(mapName, overlay, UserId)); - } - - [HttpDelete("wall")] - public async Task Delete(string campaign, string mapName, [FromBody] Wall wall) - { - await _mediator.Send(new DeleteWallCommand(mapName, wall, UserId)); - } - - [HttpDelete("note")] - public async Task Delete(string campaign, string mapName, [FromBody] Note note) - { - await _mediator.Send(new DeleteNoteCommand(mapName, note, UserId)); - } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Core/Entities/MapLog.cs b/Sledgemapper.Api/Core/Entities/MapLog.cs index ea70dc1..4d004f6 100644 --- a/Sledgemapper.Api/Core/Entities/MapLog.cs +++ b/Sledgemapper.Api/Core/Entities/MapLog.cs @@ -1,7 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities { public class MapLog @@ -10,7 +10,7 @@ namespace Sledgemapper.Api.Models public int MapLogId { get; set; } [Required] - public string UserId{get;set;} + public string UserId { get; set; } [Required] public Guid SessionId { get; set; } diff --git a/Sledgemapper.Api/Core/Entities/Session.cs b/Sledgemapper.Api/Core/Entities/Session.cs index 98daf68..52029db 100644 --- a/Sledgemapper.Api/Core/Entities/Session.cs +++ b/Sledgemapper.Api/Core/Entities/Session.cs @@ -3,7 +3,7 @@ using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities { [Index(nameof(CampaignId), nameof(SessionName), IsUnique = true)] public class Session @@ -13,7 +13,7 @@ namespace Sledgemapper.Api.Models public Guid SessionId { get; set; } [Required] - public Guid CampaignId { get; set; } + public Guid CampaignId { get; set; } [Required] public string SessionName { get; set; } diff --git a/Sledgemapper.Api/Core/Entities/SessionUser.cs b/Sledgemapper.Api/Core/Entities/SessionUser.cs index 98860ed..b2136c0 100644 --- a/Sledgemapper.Api/Core/Entities/SessionUser.cs +++ b/Sledgemapper.Api/Core/Entities/SessionUser.cs @@ -1,7 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities { public class SessionUser { diff --git a/Sledgemapper.Api/Core/Entities/Snapshot.cs b/Sledgemapper.Api/Core/Entities/Snapshot.cs index 2f9b797..2a577e2 100644 --- a/Sledgemapper.Api/Core/Entities/Snapshot.cs +++ b/Sledgemapper.Api/Core/Entities/Snapshot.cs @@ -1,7 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities { public class Snapshot diff --git a/Sledgemapper.Api/Core/Entities/User.cs b/Sledgemapper.Api/Core/Entities/User.cs index bd4993f..bc29784 100644 --- a/Sledgemapper.Api/Core/Entities/User.cs +++ b/Sledgemapper.Api/Core/Entities/User.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Identity; -namespace Sledgemapper.Entities +namespace Sledgemapper.Api.Core.Entities { - public class User:IdentityUser + public class User : IdentityUser { // public int Id { get; set; } public string FirstName { get; set; } @@ -13,6 +13,6 @@ namespace Sledgemapper.Entities public string Initials { get; set; } // public byte[] PasswordHash { get; set; } public byte[] PasswordSalt { get; set; } - public ICollection Campaigns {get;set;} + public ICollection Campaigns { get; set; } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Core/Entities/UserConnection.cs b/Sledgemapper.Api/Core/Entities/UserConnection.cs index 74c0ce8..17e34a3 100644 --- a/Sledgemapper.Api/Core/Entities/UserConnection.cs +++ b/Sledgemapper.Api/Core/Entities/UserConnection.cs @@ -1,7 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Api.Models +namespace Sledgemapper.Api.Core.Entities { public class UserConnection { @@ -11,6 +11,6 @@ namespace Sledgemapper.Api.Models public Guid UserId { get; set; } [Required] - public string ConnectionId{get;set;} + public string ConnectionId { get; set; } } } diff --git a/Sledgemapper.Api/Handlers/BaseCommandHandler.cs b/Sledgemapper.Api/Handlers/BaseCommandHandler.cs index 4723308..f9a8dea 100644 --- a/Sledgemapper.Api/Handlers/BaseCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/BaseCommandHandler.cs @@ -7,31 +7,29 @@ using System.Threading.Tasks; using System; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Models; -using System.Collections.Generic; using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api.Handlers { public abstract class BaseCommandHandler : IRequestHandler where TRequest : BaseCommand { - protected SledgemapperDbContext Dbcontext { get; } + protected SledgemapperDbContext DbContext { get; } protected IMediator Mediator { get; } - public abstract Task Handle(TRequest request, CancellationToken cancellationToken); - public BaseCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + protected BaseCommandHandler(IMediator mediator, SledgemapperDbContext dbContext) { - Dbcontext = dbcontext; + DbContext = dbContext; Mediator = mediator; } protected async Task CheckAuthorization(TRequest command) { - var user = await Dbcontext.Users.FindAsync(command.UserId); - Dbcontext.Attach(user); + var user = await DbContext.Users.FindAsync(command.UserId); + DbContext.Attach(user); var campaign = await GetCampaignForUser(command); @@ -46,9 +44,9 @@ namespace Sledgemapper.Api.Handlers protected async Task GetCampaignForUser(TRequest command) { - var user = await Dbcontext.Users.FindAsync(command.UserId); - Dbcontext.Attach(user); - var campaign = await Dbcontext + var user = await DbContext.Users.FindAsync(command.UserId); + DbContext.Attach(user); + var campaign = await DbContext .Campaigns .Where(campaign => campaign.CampaignId == command.Campaign) .Include(c => c.InvitedUsers) @@ -60,8 +58,8 @@ namespace Sledgemapper.Api.Handlers protected async Task SaveLog(TRequest command, string operation, string type, string data, CancellationToken cancellationToken) { - var session = Dbcontext.Sessions.First(m => m.SessionId == command.SessionId); - Dbcontext.MapLogs.Add(new Models.MapLog + var session = DbContext.Sessions.First(m => m.SessionId == command.SessionId); + DbContext.MapLogs.Add(new MapLog { Operation = operation, SessionId = session.SessionId, @@ -70,7 +68,7 @@ namespace Sledgemapper.Api.Handlers Object = data, UserId = command.UserId, }); - await Dbcontext.SaveChangesAsync(cancellationToken); + await DbContext.SaveChangesAsync(cancellationToken); return session; } diff --git a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs index 56973c1..887635d 100644 --- a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs @@ -6,31 +6,32 @@ using System.Threading; using System.Threading.Tasks; using System.Linq; using Sledgemapper.Api.Models; +using Sledgemapper.Api.Commands; -namespace Sledgemapper.Api.Commands +namespace Sledgemapper.Api.Handlers { - public class GetMapSnapshotCommandHandler : IRequestHandler + public class GetMapSnapshotCommandHandler : IRequestHandler { private readonly SledgemapperDbContext _dbcontext; public GetMapSnapshotCommandHandler(SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; } - public async Task Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) + public async Task Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) { Snapshot snapshot; double timestamp; - Shared.Entities.Session mapSession; + Session mapSession; var session = _dbcontext.Sessions.First(m => m.SessionId == notification.MapId); snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId); if (snapshot is null) { timestamp = 0; - mapSession = new Shared.Entities.Session(); + mapSession = new Session(); } else { - mapSession = JsonSerializer.Deserialize(snapshot.Object); + mapSession = JsonSerializer.Deserialize(snapshot.Object); timestamp = snapshot.Timestamp; } @@ -57,7 +58,7 @@ namespace Sledgemapper.Api.Commands var note = JsonSerializer.Deserialize(mapUpdate.Object); mapSession.NewNote(note); break; - case "L": + case "L": var line = JsonSerializer.Deserialize(mapUpdate.Object); mapSession.NewLine(line); break; @@ -65,9 +66,9 @@ namespace Sledgemapper.Api.Commands var room = JsonSerializer.Deserialize(mapUpdate.Object); mapSession.NewRoom(room); break; - - - + + + } diff --git a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs index 58140dc..c499145 100644 --- a/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewLineCommandHandler.cs @@ -10,7 +10,7 @@ namespace Sledgemapper.Api.Handlers { public class NewLineCommandHandler : BaseCommandHandler { - public NewLineCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) + public NewLineCommandHandler(IMediator mediator, SledgemapperDbContext dbContext) : base(mediator, dbContext) { } diff --git a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs index 30f53cb..a264f00 100644 --- a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs @@ -5,8 +5,9 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using System.Linq; +using Sledgemapper.Api.Commands; -namespace Sledgemapper.Api.Commands +namespace Sledgemapper.Api.Handlers { public class NewSnapshotCommandHandler : IRequestHandler { @@ -17,18 +18,19 @@ namespace Sledgemapper.Api.Commands public async Task Handle(NewSnapshotCommand notification, CancellationToken cancellationToken) { - + var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - var newSnapshot = new Models.Snapshot{ - SessionId=session.SessionId, - Timestamp=notification.Timestamp, - Object = JsonSerializer.Serialize(notification.Session) + var newSnapshot = new Models.Snapshot + { + SessionId = session.SessionId, + Timestamp = notification.Timestamp, + Object = JsonSerializer.Serialize(notification.Session) -}; -await _dbcontext.Snapshots.AddAsync(newSnapshot); + }; + await _dbcontext.Snapshots.AddAsync(newSnapshot); await _dbcontext.SaveChangesAsync(); - + return true; } diff --git a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs index 6ab63b8..5db3d32 100644 --- a/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewTileCommandHandler.cs @@ -4,13 +4,13 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Notifications; -using Sledgemapper.Api.Handlers; +using Sledgemapper.Api.Commands; -namespace Sledgemapper.Api.Commands +namespace Sledgemapper.Api.Handlers { public class NewTileCommandHandler : BaseCommandHandler { - public NewTileCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) + public NewTileCommandHandler(IMediator mediator, SledgemapperDbContext dbContext) : base(mediator, dbContext) { } diff --git a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs index 6e306de..c2c480d 100644 --- a/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewWallCommandHandler.cs @@ -10,7 +10,7 @@ namespace Sledgemapper.Api.Handlers { public class NewWallCommandHandler : BaseCommandHandler { - public NewWallCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) : base(mediator, dbcontext) + public NewWallCommandHandler(IMediator mediator, SledgemapperDbContext dbContext) : base(mediator, dbContext) { } diff --git a/Sledgemapper.Api/Handlers/PingCommandHandler.cs b/Sledgemapper.Api/Handlers/PingCommandHandler.cs deleted file mode 100644 index 9d3c53a..0000000 --- a/Sledgemapper.Api/Handlers/PingCommandHandler.cs +++ /dev/null @@ -1,28 +0,0 @@ -// using MediatR; -// using Sledgemapper.Api.Infrastructure.Data; -// using System.Threading; -// using System.Threading.Tasks; -// using Sledgemapper.Api.Notifications; -// using System.Linq; - -// namespace Sledgemapper.Api.Commands -// { -// public class PingCommandHandler : IRequestHandler -// { -// private readonly SledgemapperDbContext _dbcontext; -// private readonly IMediator _mediator; - -// public PingCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; } - -// public async Task Handle(PingCommand notification, CancellationToken cancellationToken) -// { -// var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - - -// await _mediator.Publish(new PingNotification(session, notification.Location, notification.UserId)); -// return true; -// } - - -// } -// } diff --git a/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs index 1f6a112..b55e7a0 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteNoteNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).DeleteNote(notification.Note); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).DeleteNote(notification.Note); } } } diff --git a/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs index cb0b922..ab492c4 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteOverlayNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).DeleteOverlay(notification.Overlay); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).DeleteOverlay(notification.Overlay); } } } diff --git a/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs index 75c0c03..215f830 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteTileNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).DeleteTile(notification.Tile); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).DeleteTile(notification.Tile); } } } diff --git a/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs index e853012..853a0bc 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs @@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(DeleteWallNotification notification, CancellationToken cancellationToken) { - await _hub.Clients.Groups(notification.Session.SessionName).DeleteWall(notification.Wall); + await _hub.Clients.Groups(notification.Session.SessionId.ToString()).DeleteWall(notification.Wall); } } } diff --git a/Sledgemapper.Api/Handlers/SendPingMessage.cs b/Sledgemapper.Api/Handlers/SendPingMessage.cs deleted file mode 100644 index 9b7f0d9..0000000 --- a/Sledgemapper.Api/Handlers/SendPingMessage.cs +++ /dev/null @@ -1,23 +0,0 @@ -// using MediatR; -// using Microsoft.AspNetCore.SignalR; -// using Sledgemapper.Api.Notifications; -// using Sledgemapper.Clients; -// using System.Threading; -// using System.Threading.Tasks; -// using Sledgemapper.Api.Hubs; - -// namespace Sledgemapper.Api.Handlers -// { -// public class SendPingMessage : INotificationHandler -// { -// private readonly IHubContext _hub; - -// public SendPingMessage(IHubContext hub) => _hub = hub; - -// public async Task Handle(PingNotification notification, CancellationToken cancellationToken) -// { - -// await _hub.Clients.Groups(notification.Session.SessionName).Ping(notification.Location, notification.UserId); -// } -// } -// } diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index 6281275..e84ba3e 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -3,7 +3,6 @@ using Sledgemapper.Api.Commands; using Sledgemapper.Api.Infrastructure.Data; using Sledgemapper.Api.Models; using System; -using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -29,8 +28,8 @@ namespace Sledgemapper.Api.Handlers CampaignId = campaign.CampaignId }; - Dbcontext.Sessions.Add(session); - await Dbcontext.SaveChangesAsync(); + DbContext.Sessions.Add(session); + await DbContext.SaveChangesAsync(cancellationToken); return session.SessionId; } } diff --git a/Sledgemapper.Api/Helpers/AppException.cs b/Sledgemapper.Api/Helpers/AppException.cs index c9601e5..957826f 100644 --- a/Sledgemapper.Api/Helpers/AppException.cs +++ b/Sledgemapper.Api/Helpers/AppException.cs @@ -1,17 +1,17 @@ using System; using System.Globalization; -namespace Sledgemapper.Helpers +namespace Sledgemapper.Api.Helpers { // Custom exception class for throwing application specific exceptions (e.g. for validation) // that can be caught and handled within the application public class AppException : Exception { - public AppException() : base() {} + public AppException() : base() { } public AppException(string message) : base(message) { } - public AppException(string message, params object[] args) + public AppException(string message, params object[] args) : base(string.Format(CultureInfo.CurrentCulture, message, args)) { } diff --git a/Sledgemapper.Api/Helpers/AutoMapperProfile.cs b/Sledgemapper.Api/Helpers/AutoMapperProfile.cs index e9fd4aa..e6fd486 100644 --- a/Sledgemapper.Api/Helpers/AutoMapperProfile.cs +++ b/Sledgemapper.Api/Helpers/AutoMapperProfile.cs @@ -2,7 +2,7 @@ using AutoMapper; using Sledgemapper.Entities; using Sledgemapper.Models.Users; -namespace Sledgemapper.Helpers +namespace Sledgemapper.Api.Helpers { public class AutoMapperProfile : Profile { diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 8141746..b41343f 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -17,12 +17,10 @@ namespace Sledgemapper.Api.Hubs { private static readonly ConcurrentDictionary UserColors = new(); private readonly SledgemapperDbContext _dbContext; - // private readonly DataContext _datacontext; public SledgemapperHub(SledgemapperDbContext dbContext/*, DataContext datacontext*/) { _dbContext = dbContext; - // _datacontext = datacontext; } // other colors @@ -87,12 +85,12 @@ namespace Sledgemapper.Api.Hubs public async Task Ping(string sessionName, Tile location) { - var userId = new Guid( Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); + var userId = new Guid(Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); var user = _dbContext.Users.First(u => u.Id == userId.ToString()); var player = new Player { UserId = userId, Initials = user.Initials, Position = new Tile { X = 0, Y = 0 }, Color = UserColors[userId] }; - await Clients.Group(sessionName).Ping(new Ping{X=location.X, Y=location.Y, Player=player}); + await Clients.Group(sessionName).Ping(new Ping { X = location.X, Y = location.Y, Player = player }); } public async Task JoinSession(Guid mapId) @@ -114,7 +112,7 @@ namespace Sledgemapper.Api.Hubs await Clients.Group(session.SessionId.ToString()).NewPlayer(player); await Clients.Group(session.SessionId.ToString()).RefreshPlayers(); - + return true; } @@ -136,7 +134,7 @@ namespace Sledgemapper.Api.Hubs public async Task UpdatePosition(string sessionName, Guid sessionId, Tile tile) { var userId = new Guid(Context.User.Claims.FirstOrDefault(m => m.Type == "Id").Value); - var SessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); + var sessionUsers = _dbContext.SessionUsers.Where(m => m.SessionId == sessionId).OrderBy(m => m.UserId).ToList(); var user = _dbContext.Users.First(u => u.Id == userId.ToString()); var player = new Player { UserId = userId, Initials = user.Initials, Position = tile, Color = UserColors[userId] }; await Clients.Group(sessionId.ToString()).PlayerUpdate(player); @@ -148,7 +146,7 @@ namespace Sledgemapper.Api.Hubs var userConnection = new UserConnection { ConnectionId = Context.ConnectionId, UserId = userId }; _dbContext.UserConnections.Add(userConnection); await _dbContext.SaveChangesAsync(); - var availableColor = Colors.Where(m => !UserColors.Values.Contains(m)).First(); + var availableColor = Colors.First(m => !UserColors.Values.Contains(m)); UserColors.AddOrUpdate(userId, availableColor, (key, oldValue) => availableColor); await base.OnConnectedAsync(); } @@ -156,26 +154,26 @@ namespace Sledgemapper.Api.Hubs public override async Task OnDisconnectedAsync(Exception exception) { var userConnection = _dbContext.UserConnections.FirstOrDefault(m => m.ConnectionId == Context.ConnectionId); - var userId = userConnection.UserId; if (userConnection != null) { + var userId = userConnection.UserId; + _dbContext.UserConnections.Remove(userConnection); - } - var userSessions = _dbContext.SessionUsers.Where(m => m.UserId == userId).ToList(); - { - foreach (var userSession in userSessions) + var userSessions = _dbContext.SessionUsers.Where(m => m.UserId == userId).ToList(); { - var session = _dbContext.Sessions.FirstOrDefault(m => m.SessionId == userSession.SessionId); + foreach (var userSession in userSessions) + { + var session = _dbContext.Sessions.FirstOrDefault(m => m.SessionId == userSession.SessionId); - await Clients.Group(session.SessionName).RemovePlayer(new Player { UserId = userId }); //send remove player - _dbContext.SessionUsers.Remove(userSession); + await Clients.Group(session.SessionName).RemovePlayer(new Player { UserId = userId }); //send remove player + _dbContext.SessionUsers.Remove(userSession); + } } + await _dbContext.SaveChangesAsync(); + + await base.OnDisconnectedAsync(exception); } - await _dbContext.SaveChangesAsync(); - - await base.OnDisconnectedAsync(exception); - } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Models/AuthResult.cs b/Sledgemapper.Api/Models/AuthResult.cs index ec22a2c..cf42c6a 100644 --- a/Sledgemapper.Api/Models/AuthResult.cs +++ b/Sledgemapper.Api/Models/AuthResult.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Sledgemapper.Models.Users +namespace Sledgemapper.Api.Models { public class AuthResult { diff --git a/Sledgemapper.Api/Models/AuthenticateModel.cs b/Sledgemapper.Api/Models/AuthenticateModel.cs index f164138..48e743f 100644 --- a/Sledgemapper.Api/Models/AuthenticateModel.cs +++ b/Sledgemapper.Api/Models/AuthenticateModel.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Models.Users +namespace Sledgemapper.Api.Models { public class AuthenticateModel { diff --git a/Sledgemapper.Api/Models/RegisterModel.cs b/Sledgemapper.Api/Models/RegisterModel.cs index de274f0..646a3f3 100644 --- a/Sledgemapper.Api/Models/RegisterModel.cs +++ b/Sledgemapper.Api/Models/RegisterModel.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Models.Users +namespace Sledgemapper.Api.Models { public class RegisterModel { diff --git a/Sledgemapper.Api/Models/RegistrationResponse.cs b/Sledgemapper.Api/Models/RegistrationResponse.cs index f3dae6e..88b6b69 100644 --- a/Sledgemapper.Api/Models/RegistrationResponse.cs +++ b/Sledgemapper.Api/Models/RegistrationResponse.cs @@ -1,4 +1,6 @@ -namespace Sledgemapper.Models.Users +using Sledgemapper.Models.Users; + +namespace Sledgemapper.Api.Models { public class RegistrationResponse : AuthResult { diff --git a/Sledgemapper.Api/Models/UserLoginRequest.cs b/Sledgemapper.Api/Models/UserLoginRequest.cs index 4e5fa99..3a2a152 100644 --- a/Sledgemapper.Api/Models/UserLoginRequest.cs +++ b/Sledgemapper.Api/Models/UserLoginRequest.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Sledgemapper.Models.Users +namespace Sledgemapper.Api.Models { public class UserLoginRequest { diff --git a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs index 1158824..7a4ab09 100644 --- a/Sledgemapper.Shared/Clients/ISledgemapperClient.cs +++ b/Sledgemapper.Shared/Clients/ISledgemapperClient.cs @@ -1,8 +1,7 @@ using Sledgemapper.Shared.Entities; -using System.Collections.Generic; using System.Threading.Tasks; -namespace Sledgemapper.Clients +namespace Sledgemapper.Shared.Clients { public interface ISledgemapperClient { diff --git a/Sledgemapper.Shared/ExtensionMethods.cs b/Sledgemapper.Shared/ExtensionMethods.cs index f96159c..e0448d5 100644 --- a/Sledgemapper.Shared/ExtensionMethods.cs +++ b/Sledgemapper.Shared/ExtensionMethods.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace Sledgemapper.Api.Hubs +namespace Sledgemapper.Shared { public static class ExtensionMethods { @@ -20,6 +20,6 @@ namespace Sledgemapper.Api.Hubs } } - + } } \ No newline at end of file diff --git a/Sledgemapper.Shared/ObservableConcurrentDictionary.cs b/Sledgemapper.Shared/ObservableConcurrentDictionary.cs index 7173e08..6bf7b4b 100644 --- a/Sledgemapper.Shared/ObservableConcurrentDictionary.cs +++ b/Sledgemapper.Shared/ObservableConcurrentDictionary.cs @@ -8,8 +8,10 @@ using System.Collections.Specialized; using System.ComponentModel; using System.Threading; using System.Diagnostics; +using System.Collections; +using System.Collections.Concurrent; -namespace System.Collections.Concurrent +namespace Sledgemapper.Shared { /// /// Provides a thread-safe dictionary for use with data binding. diff --git a/Sledgemapper.sln.DotSettings b/Sledgemapper.sln.DotSettings new file mode 100644 index 0000000..b22b302 --- /dev/null +++ b/Sledgemapper.sln.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index e5874b0..e139545 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -1,7 +1,3 @@ -using Microsoft.AspNetCore.SignalR.Client; -using Polly; -using Refit; -using Sledgemapper.Shared.Entities; using System; using System.Collections.Generic; using System.Linq; @@ -10,20 +6,21 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.SignalR.Client; +using Polly; +using Refit; +using Sledgemapper.Shared.Entities; namespace Sledgemapper { public class CommunicationManager { - public IMapApi Api { get; private set; } - public HubConnection Connection { get; private set; } + private readonly ChannelsQueue _queue = new(); public readonly Session SessionData; - private readonly ChannelsQueue Queue = new(); private AuthenticateResponse _authenticateResponse; public CommunicationManager(Session sessionData) { - #if DEBUG var baseAddress = "http://localhost:5000"; #else @@ -32,115 +29,93 @@ namespace Sledgemapper SessionData = sessionData; Connection = new HubConnectionBuilder() - .WithAutomaticReconnect() - - .WithUrl($"{baseAddress}/SledgemapperHub", options => - { - options.AccessTokenProvider = () => Task.FromResult(_authenticateResponse.Token); - }) - .Build(); + .WithAutomaticReconnect() + .WithUrl($"{baseAddress}/SledgemapperHub", + options => { options.AccessTokenProvider = () => Task.FromResult(_authenticateResponse.Token); }) + .Build(); Api = RestService.For( - new HttpClient(new AuthenticatedHttpClientHandler(GetToken)) - { - BaseAddress = new Uri(baseAddress) - } - ); + new HttpClient(new AuthenticatedHttpClientHandler(GetToken)) + { + BaseAddress = new Uri(baseAddress) + } + ); - Connection.On("UpdateMap", (map) => + Connection.On("UpdateMap", map => { SessionData.Map = map.Map; SessionData.Walls = map.Walls; SessionData.Overlays = map.Overlays; }); - Connection.On("PlayerUpdate", (player) => + Connection.On("PlayerUpdate", player => { var p = SessionData.Players.FirstOrDefault(m => m.UserId == player.UserId); if (p != null) - { p.Position = player.Position; - } else - { SessionData.Players.Add(player); - } }); - Connection.On("DeleteTile", (tile) => + Connection.On("DeleteTile", tile => { SessionData.Map.Remove(tile.ToString(), out var _); }); + + Connection.On("DeleteWall", tile => { SessionData.Walls.Remove(tile.ToString(), out var _); }); + + Connection.On("DeleteNote", tile => { SessionData.Notes.Remove(tile.ToString(), out var _); }); + + Connection.On("DeleteOverlay", + tile => { SessionData.Overlays.Remove(tile.ToString(), out var _); }); + + Connection.On("NewTile", tile => { SessionData.Map.Remove(tile.ToString(), out var _); + SessionData.Map.TryAdd(tile.ToString(), tile); }); - Connection.On("DeleteWall", (tile) => - { - SessionData.Walls.Remove(tile.ToString(), out var _); - }); + Connection.On("NewRoom", room => + { + SessionData.Rooms.Remove(room.ToString(), out var _); + SessionData.Rooms.TryAdd(room.ToString(), room); + }); - Connection.On("DeleteNote", (tile) => - { - SessionData.Notes.Remove(tile.ToString(), out var _); - }); - - Connection.On("DeleteOverlay", (tile) => - { - SessionData.Overlays.Remove(tile.ToString(), out var _); - }); - - Connection.On("NewTile", (tile) => - { - SessionData.Map.Remove(tile.ToString(), out var _); - SessionData.Map.TryAdd(tile.ToString(), tile); - }); - - Connection.On("NewRoom", (room) => - { - SessionData.Rooms.Remove(room.ToString(), out var _); - SessionData.Rooms.TryAdd(room.ToString(), room); - }); - - Connection.On("NewLine", (line) => - { - SessionData.Lines.Remove(line.ToString(), out var _); - SessionData.Lines.TryAdd(line.ToString(), line); - }); + Connection.On("NewLine", line => + { + SessionData.Lines.Remove(line.ToString(), out var _); + SessionData.Lines.TryAdd(line.ToString(), line); + }); Connection.On("RefreshPlayers", () => - { - if (!string.IsNullOrWhiteSpace(State.Instance.MapName)) - { - Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, SessionData.Players.First(p => p.UserId == new Guid(_authenticateResponse.Id))); - } - }); + { + if (!string.IsNullOrWhiteSpace(State.Instance.MapName)) + Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, + SessionData.Players.First(p => p.UserId == new Guid(_authenticateResponse.Id))); + }); - Connection.On("RemovePlayer", (player) => - { - var p = SessionData.Players.FirstOrDefault(m => m.UserId == player.UserId); - if (p != null) - { - SessionData.Players.Remove(p); - } - }); + Connection.On("RemovePlayer", player => + { + var p = SessionData.Players.FirstOrDefault(m => m.UserId == player.UserId); + if (p != null) SessionData.Players.Remove(p); + }); - Connection.On("NewWall", (tile) => - { - SessionData.Walls.Remove(tile.ToString(), out var _); - SessionData.Walls.TryAdd(tile.ToString(), tile); - }); + Connection.On("NewWall", tile => + { + SessionData.Walls.Remove(tile.ToString(), out var _); + SessionData.Walls.TryAdd(tile.ToString(), tile); + }); - Connection.On("NewOverlay", (tile) => + Connection.On("NewOverlay", tile => { SessionData.Overlays.Remove(tile.ToString(), out var _); SessionData.Overlays.TryAdd(tile.ToString(), tile); }); - Connection.On("NewNote", (note) => + Connection.On("NewNote", note => { //SessionData.Notes.Remove(note.ToString(), out var _); SessionData.Notes.AddOrUpdate(note.ToString(), note, (key, oldnote) => note); }); - Connection.On("NewPlayer", (player) => + Connection.On("NewPlayer", player => { var p = SessionData.Players.FirstOrDefault(m => m.UserId == player.UserId); if (p is null) @@ -154,41 +129,11 @@ namespace Sledgemapper } }); - Connection.On("Ping", (ping) => - { - SessionData.Pings.TryAdd(Guid.NewGuid(), ping); - }); + Connection.On("Ping", ping => { SessionData.Pings.TryAdd(Guid.NewGuid(), ping); }); } - - - private Task GetToken() - { - return Task.FromResult(_authenticateResponse.Token); - } - - public async Task Register(RegisterModel registerModel) - { - var result = await Api.Register(registerModel).ConfigureAwait(false); - return result; - } - - public async Task Login(AuthenticateModel authenticateModel) - { - _authenticateResponse = await Api.Authenticate(authenticateModel).ConfigureAwait(false); - return _authenticateResponse; - } - - private async Task Execute(Func call) - { - await Policy - .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) - - .RetryForeverAsync() - //.RetryAsync(Polly.RetrySyntax., async (exception, retryCount) => await Task.Delay(500)) - .ExecuteAsync(async () => await call().ConfigureAwait(false)) - .ConfigureAwait(false); - } + public IMapApi Api { get; } + public HubConnection Connection { get; } public void Enqueue(BaseMapEntity entity, TileAction action) { @@ -198,64 +143,112 @@ namespace Sledgemapper switch (entity) { case Tile tile: - Queue.Enqueue(async () => await Execute(async () => await Api.NewTile(tile, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.NewTile(tile, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Overlay overlay: - Queue.Enqueue(async () => await Execute(async () => await Api.NewOverlay(overlay,State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.NewOverlay(overlay, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Wall wall: - Queue.Enqueue(async () => await Execute(async () => await Api.NewWall(wall, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.NewWall(wall, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Note note: - Queue.Enqueue(async () => await Execute(async () => await Api.NewNote(note, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.NewNote(note, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Room room: - Queue.Enqueue(async () => await Execute(async () => await Api.NewRoom(room, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.NewRoom(room, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Line line: - Queue.Enqueue(async () => await Execute(async () => await Api.NewLine(line, State.Instance.CampaignId, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.NewLine(line, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; } + break; case TileAction.Delete: switch (entity) { case Tile tile: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteTile(tile, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.DeleteTile(tile, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Overlay overlay: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteOverlay(overlay, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.DeleteOverlay(overlay, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Wall wall: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteWall(wall, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.DeleteWall(wall, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; case Note note: - Queue.Enqueue(async () => await Execute(async () => await Api.DeleteNote(note, State.Instance.MapId).ConfigureAwait(false))); + _queue.Enqueue(async () => await Execute(async () => + await Api.DeleteNote(note, State.Instance.CampaignId, State.Instance.MapId) + .ConfigureAwait(false))); break; } + break; } + } + private async Task Execute(Func call) + { + await Policy + .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) + .RetryForeverAsync() + //.RetryAsync(Polly.RetrySyntax., async (exception, retryCount) => await Task.Delay(500)) + .ExecuteAsync(async () => await call().ConfigureAwait(false)) + .ConfigureAwait(false); + } + + + private Task GetToken() + { + return Task.FromResult(_authenticateResponse.Token); + } + + public async Task Login(AuthenticateModel authenticateModel) + { + _authenticateResponse = await Api.Authenticate(authenticateModel).ConfigureAwait(false); + return _authenticateResponse; } internal async Task Ping(Tile location) { - if (Connection!=null && Connection.State == HubConnectionState.Connected) + if (Connection is { State: HubConnectionState.Connected }) { - await Connection.InvokeAsync("Ping",SessionData.SessionName, location); + await Connection.InvokeAsync("Ping", SessionData.SessionName, location); } } + + public async Task Register(RegisterModel registerModel) + { + var result = await Api.Register(registerModel).ConfigureAwait(false); + return result; + } } - class AuthenticatedHttpClientHandler : HttpClientHandler + internal class AuthenticatedHttpClientHandler : HttpClientHandler { - private readonly Func> getToken; + private readonly Func> _getToken; public AuthenticatedHttpClientHandler(Func> getToken) { - if (getToken == null) throw new ArgumentNullException(nameof(getToken)); - this.getToken = getToken; + _getToken = getToken ?? throw new ArgumentNullException(nameof(getToken)); //if (myConfigurationService.VerifySslCertificate == false) //{ @@ -264,19 +257,18 @@ namespace Sledgemapper //} } - protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected override async Task SendAsync(HttpRequestMessage request, + CancellationToken cancellationToken) { // See if the request has an authorize header var auth = request.Headers.Authorization; if (auth != null) { - var token = await getToken().ConfigureAwait(false); + var token = await _getToken().ConfigureAwait(false); request.Headers.Authorization = new AuthenticationHeaderValue(auth.Scheme, token); } return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); } - - } -} +} \ No newline at end of file diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index f5b6bca..3af30f6 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -70,17 +70,17 @@ namespace Sledgemapper - [Delete("/session/{sessionName}/wall")] - Task DeleteWall([Body] Wall wall, Guid sessionName); + [Delete("/map/{campaignId}/{mapId}/wall")] + Task DeleteWall([Body] Wall wall, Guid campaignId, Guid mapId); - [Delete("/session/{sessionName}/tile")] - Task DeleteTile([Body] Tile tile, Guid sessionName); + [Delete("/map/{campaignId}/{mapId}/tile")] + Task DeleteTile([Body] Tile tile, Guid campaignId, Guid mapId); - [Delete("/session/{sessionName}/overlay")] - Task DeleteOverlay([Body] Overlay overlay, Guid sessionName); + [Delete("/map/{campaignId}/{mapId}/overlay")] + Task DeleteOverlay([Body] Overlay overlay, Guid campaignId, Guid mapId); - [Delete("/session/{sessionName}/note")] - Task DeleteNote([Body] Note overlay, Guid sessionName); + [Delete("/map/{campaignId}/{mapId}/note")] + Task DeleteNote([Body] Note overlay, Guid campaignId, Guid mapId); public class AuthResult diff --git a/Sledgemapper/Settings.cs b/Sledgemapper/Settings.cs index 4c22f57..f3aa679 100644 --- a/Sledgemapper/Settings.cs +++ b/Sledgemapper/Settings.cs @@ -14,7 +14,7 @@ namespace Sledgemapper public int TileDeleteDivider { get; set; } public int PingDuration {get;set;} - private static readonly Settings instance = new Settings(); + private static readonly Settings instance = new (); // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 42c5bd1..c91d8f6 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -1,3 +1,8 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using AsyncAwaitBestPractices; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; @@ -10,49 +15,43 @@ using Myra.Graphics2D.UI; using Myra.Utility; using Sledgemapper.Shared.Entities; using Sledgemapper.UI; -using System; -using System.Buffers; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using AsyncAwaitBestPractices; using TinyMessenger; +using Thickness = Myra.Graphics2D.Thickness; namespace Sledgemapper { public class Sledgemapper : Game { private readonly CommunicationManager _communicationManager; - private readonly State _state; - private readonly ArrayPool _vector2Pool; - private readonly GraphicsDeviceManager _graphics; - private SpriteBatch _spriteBatch; - private CachedContent _cachedContent; private readonly Desktop _desktop; - private KeyboardState oldState; - private MouseState oldMouseState; - private bool _isDraggin; - private Dictionary _fonts; - private Texture2D _comment; - private readonly Session _sessionData; - private RenderTarget2D rendertarget; - private MainWidget _mainWidget; + private readonly GraphicsDeviceManager _graphics; private readonly TinyMessengerHub _messenger; - Effect outlineShader; - private Texture2D _transparentRedRectangle; - private Texture2D _whiteRectangle; - private Dictionary _wallsContent; - private SpriteSheet _spriteSheet; + private readonly Session _sessionData; + private readonly State _state; + private CachedContent _cachedContent; + private Texture2D _comment; + private Dictionary _fonts; + private bool _isDragging; + private Label _lblOverlayName; + private MainWidget _mainWidget; + private MouseState _oldMouseState; + private KeyboardState _oldState; + private Effect _outlineShader; + private RenderTarget2D _renderTarget; private SpriteSheet _rippleSpriteSheet; - Label _lblOverlayName; + private SpriteBatch _spriteBatch; + private SpriteSheet _spriteSheet; + private Texture2D _transparentRedRectangle; + private Dictionary _wallsContent; + private Texture2D _whiteRectangle; public Sledgemapper() { _graphics = new GraphicsDeviceManager(this); _graphics.GraphicsProfile = GraphicsProfile.Reach; - _graphics.PreferMultiSampling = false; - + _graphics.PreferMultiSampling = true; + Content.RootDirectory = "Content"; _desktop = new Desktop(); @@ -67,506 +66,12 @@ namespace Sledgemapper _communicationManager.Connection.Closed += OnHubDisconnected; _state = State.Instance; - _vector2Pool = ArrayPool.Create(); _messenger = new TinyMessengerHub(); } - private async Task OnHubDisconnected(Exception arg) - { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub disconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); - _mainWidget.lblConnectionStatus.Text = "Disconnected"; - await Task.Yield(); - } - - private async Task OnHubReconnecting(Exception arg) - { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Reconnecting Hub", Type = "SignalR Client Events", Source = _settings.MachineName }); - _mainWidget.lblConnectionStatus.Text = "Reconnecting"; - await Task.Yield(); - } - - private async Task OnHubReconnected(string arg) - { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); - _mainWidget.lblConnectionStatus.Text = "Connected"; - await Task.Yield(); - } - - protected override void Initialize() - { - // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Initialize", Type = "AppLifecycle", Source = _settings.MachineName }); - IsMouseVisible = true; - Window.AllowUserResizing = true; - Window.ClientSizeChanged += OnClientSizeChanged; - base.Initialize(); - } - - private void ResetRenderTarget() - { - rendertarget = new RenderTarget2D(GraphicsDevice, - GraphicsDevice.Viewport.Width, - GraphicsDevice.Viewport.Height, - false, - SurfaceFormat.Color, - DepthFormat.None, - 0, - RenderTargetUsage.DiscardContents); - } - - private void OnClientSizeChanged(object sender, EventArgs e) - { - rendertarget?.Dispose(); - try - { - ResetRenderTarget(); - } - catch - { - System.Console.WriteLine("rendertarget dispose exception"); - } - - } - - private void AddItemToToolGrid(Grid grid, EventHandler eventAction, Dictionary tilesFolderContent) - { - var indexX = 0; - var indexY = 0; - foreach (var item in tilesFolderContent) - { - var tileButton = new ImageButton { Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 }; - tileButton.Click += eventAction; - grid.Widgets.Add(tileButton); - indexY++; - if (indexY == 4) - { - indexY = 0; - indexX++; - } - } - } - - private void AddItemToToolGrid(Grid grid, EventHandler eventAction, SpriteSheet spriteSheet, string e = "") - { - var indexX = 0; - var indexY = 0; - grid.Widgets.Clear(); - _mainWidget.ScrOverlay.ResetScroll(); - foreach (var item in spriteSheet.index.Where(t => String.IsNullOrWhiteSpace(e) || t.Key.ToLower().Contains(e.ToLower()))) - { - var tileButton = new ImageButton { Image = new TextureRegion(spriteSheet.Texture, item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 }; - tileButton.Click += eventAction; - tileButton.MouseMoved += OnTileButtonTouchEntered; - tileButton.MouseLeft += OnTileButtonTouchLeft; - grid.Widgets.Add(tileButton); - indexY++; - if (indexY == 4) - { - indexY = 0; - indexX++; - } - } - } - - private void OnTileButtonTouchLeft(object sender, EventArgs e) - { - _desktop.HideContextMenu(); - _lblOverlayName.Visible = false; - } - - private void OnTileButtonTouchEntered(object sender, EventArgs e) - { - var mouseState = Mouse.GetState().Position; - mouseState.X += 10; - mouseState.Y += 10; - _lblOverlayName.Visible = true; - _lblOverlayName.Text = ((ImageButton)sender).Id; - _desktop.ShowContextMenu(_lblOverlayName, mouseState); - } - - protected override void LoadContent() - { - _spriteBatch = new SpriteBatch(GraphicsDevice); - _cachedContent = CachedContent.Instance; - - outlineShader = Content.Load("shaders/OutlineShader"); - MyraEnvironment.Game = this; - ResetRenderTarget(); - - - _mainWidget = new MainWidget(_communicationManager, _messenger, Window); - - - - - _wallsContent = Content.LoadContentFolder("walls"); - - _spriteSheet = new SpriteSheet(); - _spriteSheet.LoadContent(Content, "spriteIndex", "sprites"); - _rippleSpriteSheet = new SpriteSheet(); - _rippleSpriteSheet.LoadContent(Content, "handcursorsIndex", "handcursors"); - - _lblOverlayName = new Label(); - _lblOverlayName.Background = new SolidBrush(Color.SlateGray); - _lblOverlayName.Padding = new Myra.Graphics2D.Thickness(4); - - AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, _wallsContent); - AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet); - - _fonts = Content.LoadContentFolder("fonts"); - _cachedContent.Eye = Content.Load("eye"); - _cachedContent.Location = Content.Load("location"); - _comment = Content.Load("comment"); - _mainWidget.BtnToolbarLine.Image = new TextureRegion(Content.Load("icon_line")); - _mainWidget.BtnToolbarRoom.Image = new TextureRegion(Content.Load("icon_room")); - _mainWidget.BtnToolbarDelete.Image = new TextureRegion(Content.Load("icon_delete")); - _mainWidget.TxtOverlaySearch.TextChangedByUser += OnTxtOverlaySearchChange; - - _desktop.Root = _mainWidget; - - _transparentRedRectangle = new Texture2D(GraphicsDevice, 1, 1); - _transparentRedRectangle.SetData(new[] { new Color(Color.Red, 80) }); - - _whiteRectangle = new Texture2D(GraphicsDevice, 1, 1); - _whiteRectangle.SetData(new[] { Color.White }); - - CenterOnTile(0, 0); - } - - private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) - { - AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); - } - - private void EditNote(Note note) - { - _state.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; - new NoteWindow(_communicationManager, note).ShowInModalWindow(_desktop, $" Note on {note.X}:{note.Y}"); - } - - protected override void Update(GameTime gameTime) - { - KeyboardState newState = Keyboard.GetState(); - - if (IsActive && GraphicsDevice.Viewport.Bounds.Contains(Mouse.GetState().Position) && !_desktop.IsMouseOverGUI && !_desktop.HasModalWidget) - { - var mouseState = Mouse.GetState(); - - var screenPosition = new Point(mouseState.Position.X - (int)_state.ViewportCenter.X, mouseState.Position.Y - (int)_state.ViewportCenter.Y); - - if (!_desktop.ContextMenu?.Visible??true) - { - _state.HoveredTile.X = screenPosition.X / _state.TileSize; - _state.HoveredTile.Y = screenPosition.Y / _state.TileSize; - - - if (screenPosition.X < 0) - { - _state.HoveredTile.X--; - } - - if (screenPosition.Y < 0) - { - _state.HoveredTile.Y--; - } - } - - if (_state.InsertMode == InsertMode.Wall) - { - _state.SelectClosestWall(screenPosition); - } - - if (_state.InsertMode == InsertMode.Overlay) - { - _state.SelectOverlay(screenPosition); - } - - if (_state.InsertMode == InsertMode.NewLine || _state.InsertMode == InsertMode.NewRoom || _state.InsertMode == InsertMode.NewDelete) - { - _state.SelectClosestSnapPoint(screenPosition); - } - - if (!newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed && mouseState.LeftButton == oldMouseState.LeftButton && - !_desktop.IsMouseOverGUI - ) - { - _state.ViewportCenter = new Vector3(_state.ViewportCenter.X + mouseState.Position.X - oldMouseState.Position.X, _state.ViewportCenter.Y + mouseState.Position.Y - oldMouseState.Position.Y, 0); - if (mouseState.Position != oldMouseState.Position) - { - _isDraggin = true; - } - } - - if (mouseState.LeftButton == ButtonState.Released && mouseState.LeftButton != oldMouseState.LeftButton) - { - if (_isDraggin) - { - _isDraggin = false; - } - else - { - _state.SelectedTile.X = _state.HoveredTile.X; - _state.SelectedTile.Y = _state.HoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, _state.SelectedTile); - - } - } - - if (mouseState.RightButton == ButtonState.Released && mouseState.RightButton != oldMouseState.RightButton) - { - _state.SelectedNote.X = _state.HoveredTile.X; - _state.SelectedNote.Y = _state.HoveredTile.Y; - - var popup = new VerticalStackPanel { Padding = new Myra.Graphics2D.Thickness(1), Spacing = 2, Background = new SolidBrush(Color.DarkGray) }; - - if (!_sessionData.Notes.ContainsKey(_state.SelectedNote.ToString())) - { - var newNoteButton = new TextButton { Text = "New Note", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; - newNoteButton.Click += OnContextMenuNewNoteClick; - popup.AddChild(newNoteButton); - - - } - else - { - _sessionData.Notes.TryGetValue(_state.SelectedNote.ToString(), out var n); - _state.SelectedNote = n; - var viewNoteButton = new TextButton { Text = "View Note", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; - var deleteNoteButton = new TextButton { Text = "Delete Note", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; - viewNoteButton.Click += OnContextMenuViewNoteClick; - deleteNoteButton.Click += OnContextMenuDeleteNoteClick; - - popup.AddChild(viewNoteButton); - popup.AddChild(deleteNoteButton); - } - - var pingButton = new TextButton { Text = "Ping", Width = 80, Height = 20, Padding = new Myra.Graphics2D.Thickness(2), HorizontalAlignment = HorizontalAlignment.Left }; - var location = new Tile { X = _state.HoveredTile.X, Y = _state.HoveredTile.Y }; - pingButton.Click += (s, e) => OnContextMenuPingClick(s, e, location); - popup.AddChild(pingButton); - - _desktop.ShowContextMenu(popup, mouseState.Position); - } - - if (newState.IsKeyDown(Keys.LeftControl) - && mouseState.LeftButton == ButtonState.Released - && mouseState.LeftButton != oldMouseState.LeftButton) - { - switch (_state.InsertMode) - { - case InsertMode.Tile: - _state.SelectedTile.X = _state.HoveredTile.X; - _state.SelectedTile.Y = _state.HoveredTile.Y; - _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapName, State.Instance.MapId, _state.SelectedTile); - - _sessionData.NewTile(_state.SelectedTile, _state.CurrentTileId); - break; - case InsertMode.Wall: - _sessionData.NewWall(_state.SelectedWall, _state.CurrentWallId); - - break; - case InsertMode.Overlay: - _sessionData.NewOverlay(_state.SelectedOverlay, _state.CurrentOverlayId); - break; - } - } - - - if (_state.InsertMode == InsertMode.NewLine && newState.IsKeyDown(Keys.LeftControl) - && mouseState.LeftButton == ButtonState.Released - && mouseState.LeftButton != oldMouseState.LeftButton) - { - if (_state.LineStart is null) - { - _state.LineStart = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index }; - } - else - { - - var line = new Line - { - Start = new SnapPoint { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index }, - End = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index }, - Width = _state.LineWidth - }; - _state.LineStart = null; - _state.LineWidth = 1; - _sessionData.NewLine(line); - } - } - - if (_state.InsertMode == InsertMode.NewRoom && newState.IsKeyDown(Keys.LeftControl) - && mouseState.LeftButton == ButtonState.Released - && mouseState.LeftButton != oldMouseState.LeftButton) - { - if (_state.LineStart is null) - { - _state.LineStart = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index }; - } - else - { - - var line = new Room - { - Start = new SnapPoint { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index }, - End = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index } - }; - _state.LineStart = null; - _state.LineWidth = 1; - _sessionData.NewRoom(line); - } - - } - - - if (_state.InsertMode == InsertMode.NewDelete && newState.IsKeyDown(Keys.LeftControl) - && mouseState.LeftButton == ButtonState.Released - && mouseState.LeftButton != oldMouseState.LeftButton) - { - if (_state.LineStart is null) - { - _state.LineStart = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index }; - } - else - { - - var line = new Room - { - Start = new SnapPoint { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index }, - End = new SnapPoint { X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, Index = _state.SelectedSnapPoint.Index }, - Delete = true - }; - _state.LineStart = null; - _state.LineWidth = 1; - _sessionData.NewRoom(line); - } - - } - - if (_state.InsertMode == InsertMode.NewLine && _state.LineStart != null) - { - if (mouseState.ScrollWheelValue > oldMouseState.ScrollWheelValue) - { - _state.LineWidth += .01f; - } - else if (mouseState.ScrollWheelValue < oldMouseState.ScrollWheelValue) - { - _state.LineWidth -= .01f; - } - } - - if (newState.IsKeyDown(Keys.LeftControl) && mouseState.ScrollWheelValue != oldMouseState.ScrollWheelValue) - { - var maxTileSize = 500; - var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); - - var tx = (center.X - (int)_state.ViewportCenter.X) / _state.TileSize; - var ty = (center.Y - (int)_state.ViewportCenter.Y) / _state.TileSize; - - if (mouseState.ScrollWheelValue > oldMouseState.ScrollWheelValue) - { - _state.TileSize = Math.Min(maxTileSize, _state.TileSize + 10); - - } - else if (mouseState.ScrollWheelValue < oldMouseState.ScrollWheelValue) - { - _state.TileSize = Math.Max(10, _state.TileSize - 10); - } - - CenterOnTile(tx, ty); - } - - oldMouseState = mouseState; - } - - - if (newState.IsKeyDown(Keys.Delete)) - { - switch (_state.InsertMode) - { - case InsertMode.Tile: - case InsertMode.NewRoom: - case InsertMode.NewLine: - case InsertMode.NewDelete: - _state.SelectedTile.X = _state.HoveredTile.X; - _state.SelectedTile.Y = _state.HoveredTile.Y; - _sessionData.DeleteTile(_state.SelectedTile); - break; - case InsertMode.Wall: - _sessionData.DeleteWall(_state.SelectedWall); - break; - case InsertMode.Overlay: - _sessionData.DeleteOverlay(_state.SelectedOverlay); - break; - } - } - - if (oldState.IsKeyDown(Keys.P) && newState.IsKeyUp(Keys.P)) - { - _communicationManager.Ping(_state.HoveredTile).SafeFireAndForget(); - } - - foreach (var key in newState.GetPressedKeys()) - { - switch (key) - { - case Keys.Left: - if (oldState.IsKeyUp(Keys.Left) && newState.IsKeyDown(Keys.Left)) - { - _state.SelectedTile.X--; - _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); - } - break; - case Keys.Right: - if (oldState.IsKeyUp(Keys.Right) && newState.IsKeyDown(Keys.Right)) - { - _state.SelectedTile.X++; - _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); - } - break; - case Keys.Up: - if (oldState.IsKeyUp(Keys.Up) && newState.IsKeyDown(Keys.Up)) - { - _state.SelectedTile.Y--; - _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); - } - break; - case Keys.Down: - if (oldState.IsKeyUp(Keys.Down) && newState.IsKeyDown(Keys.Down)) - { - _state.SelectedTile.Y++; - _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, _state.SelectedTile); - } - break; - } - - } - - oldState = newState; - - base.Update(gameTime); - } - - private void CenterOnTile(int x, int y) - { - - var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, Window.ClientBounds.Height / 2 - _state.TileSize / 2); - var dx = center.X - x * _state.TileSize - _state.ViewportCenter.X; - var dy = center.Y - y * _state.TileSize - _state.ViewportCenter.Y; - _state.ViewportCenter = new Vector3(_state.ViewportCenter.X + dx, _state.ViewportCenter.Y + dy, _state.ViewportCenter.Z); - } - - private void OnContextMenuPingClick(object sender, EventArgs e, Tile location) - { - _desktop.HideContextMenu(); - _communicationManager.Ping(location).SafeFireAndForget(); - } - protected override void Draw(GameTime gameTime) { - if (_spriteBatch is null) - { - return; - } + if (_spriteBatch is null) return; var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1; var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; @@ -574,8 +79,8 @@ namespace Sledgemapper ApplyShaderToMap(); _spriteBatch.Begin( - transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter), - sortMode: SpriteSortMode.Texture, samplerState: SamplerState.PointClamp); + transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter), + sortMode: SpriteSortMode.Texture, samplerState: SamplerState.PointClamp); DrawTiles(); @@ -609,255 +114,676 @@ namespace Sledgemapper } catch { - System.Console.WriteLine("Desktop render error"); + Console.WriteLine("Desktop render error"); } + base.Draw(gameTime); } - private void DrawRipple(GameTime gameTime) + protected override void Initialize() { - _spriteBatch.Begin( - blendState: BlendState.NonPremultiplied, - transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter)); + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Initialize", Type = "AppLifecycle", Source = _settings.MachineName }); + IsMouseVisible = true; + Window.AllowUserResizing = true; + Window.ClientSizeChanged += OnClientSizeChanged; + base.Initialize(); + } - var durationMs = 2000; - var baseRadius = _state.TileSize / 4f; - var baseOuterRadius = (float)_state.TileSize; - var iterations = 3f; - var guids = _sessionData.Pings.Keys.ToArray(); + protected override void LoadContent() + { + _spriteBatch = new SpriteBatch(GraphicsDevice); + _cachedContent = CachedContent.Instance; - foreach (var guid in guids) + _outlineShader = Content.Load("shaders/OutlineShader"); + MyraEnvironment.Game = this; + ResetRenderTarget(); + + + _mainWidget = new MainWidget(_communicationManager, _messenger, Window); + + + _wallsContent = Content.LoadContentFolder("walls"); + + _spriteSheet = new SpriteSheet(); + _spriteSheet.LoadContent(Content, "spriteIndex", "sprites"); + _rippleSpriteSheet = new SpriteSheet(); + _rippleSpriteSheet.LoadContent(Content, "handcursorsIndex", "handcursors"); + + _lblOverlayName = new Label { - var pingFound = _sessionData.Pings.TryGetValue(guid, out var ping); - if (!pingFound) + Background = new SolidBrush(Color.SlateGray), + Padding = new Thickness(4) + }; + + AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, _wallsContent); + AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet); + + _fonts = Content.LoadContentFolder("fonts"); + _cachedContent.Eye = Content.Load("eye"); + _cachedContent.Location = Content.Load("location"); + _comment = Content.Load("comment"); + _mainWidget.BtnToolbarLine.Image = new TextureRegion(Content.Load("icon_line")); + _mainWidget.BtnToolbarRoom.Image = new TextureRegion(Content.Load("icon_room")); + _mainWidget.BtnToolbarDelete.Image = new TextureRegion(Content.Load("icon_delete")); + _mainWidget.TxtOverlaySearch.TextChangedByUser += OnTxtOverlaySearchChange; + + _desktop.Root = _mainWidget; + + _transparentRedRectangle = new Texture2D(GraphicsDevice, 1, 1); + _transparentRedRectangle.SetData(new[] { new Color(Color.Red, 80) }); + + _whiteRectangle = new Texture2D(GraphicsDevice, 1, 1); + _whiteRectangle.SetData(new[] { Color.White }); + + CenterOnTile(0, 0); + } + + protected override void Update(GameTime gameTime) + { + var newState = Keyboard.GetState(); + + if (IsActive && GraphicsDevice.Viewport.Bounds.Contains(Mouse.GetState().Position) && + !_desktop.IsMouseOverGUI && !_desktop.HasModalWidget) + { + var mouseState = Mouse.GetState(); + + var screenPosition = new Point(mouseState.Position.X - (int)_state.ViewportCenter.X, + mouseState.Position.Y - (int)_state.ViewportCenter.Y); + + if (!_desktop.ContextMenu?.Visible ?? true) { - continue; + _state.HoveredTile.X = screenPosition.X / _state.TileSize; + _state.HoveredTile.Y = screenPosition.Y / _state.TileSize; + + + if (screenPosition.X < 0) _state.HoveredTile.X--; + + if (screenPosition.Y < 0) _state.HoveredTile.Y--; } - if (ping.StartTime == 0) + if (_state.InsertMode == InsertMode.Wall) _state.SelectClosestWall(screenPosition); + + if (_state.InsertMode == InsertMode.Overlay) _state.SelectOverlay(screenPosition); + + if (_state.InsertMode == InsertMode.NewLine || _state.InsertMode == InsertMode.NewRoom || + _state.InsertMode == InsertMode.NewDelete) _state.SelectClosestSnapPoint(screenPosition); + + if (!newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed && + mouseState.LeftButton == _oldMouseState.LeftButton && + !_desktop.IsMouseOverGUI + ) { - ping.StartTime = gameTime.TotalGameTime.TotalMilliseconds; + _state.ViewportCenter = + new Vector3(_state.ViewportCenter.X + mouseState.Position.X - _oldMouseState.Position.X, + _state.ViewportCenter.Y + mouseState.Position.Y - _oldMouseState.Position.Y, 0); + if (mouseState.Position != _oldMouseState.Position) _isDragging = true; } - var x = ping.X * _state.TileSize + _state.TileSize / 2f; - var y = ping.Y * _state.TileSize + _state.TileSize / 2f; - - if (IsOffscreen(new Tile { X = ping.X, Y = ping.Y })) + if (mouseState.LeftButton == ButtonState.Released && mouseState.LeftButton != _oldMouseState.LeftButton) { - DrawPingPointer(ping, gameTime); - } - else - { - - _spriteBatch.DrawCircle( - center: new Vector2(x, y), - radius: baseRadius, - sides: 20, - color: ping.Player.Color.ToColor(), - thickness: baseRadius); - - for (var i = 0; i < iterations; i++) + if (_isDragging) { - var cycleTime = (((float)gameTime.TotalGameTime.TotalMilliseconds + (float)i * durationMs / iterations) % durationMs) / durationMs; - var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); - _spriteBatch.DrawCircle( - center: new Vector2(x, y), - radius: baseRadius + baseOuterRadius * easing, - sides: 20, - color: new Color(ping.Player.Color.ToColor(), (1 - easing)), - thickness: 2 + 5 * (1 - easing)); - - + _isDragging = false; + } + else + { + _state.SelectedTile.X = _state.HoveredTile.X; + _state.SelectedTile.Y = _state.HoveredTile.Y; + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapName, + State.Instance.MapId, _state.SelectedTile); } } + + if (mouseState.RightButton == ButtonState.Released && + mouseState.RightButton != _oldMouseState.RightButton) + { + _state.SelectedNote.X = _state.HoveredTile.X; + _state.SelectedNote.Y = _state.HoveredTile.Y; + + var popup = new VerticalStackPanel + { Padding = new Thickness(1), Spacing = 2, Background = new SolidBrush(Color.DarkGray) }; + + if (!_sessionData.Notes.ContainsKey(_state.SelectedNote.ToString())) + { + var newNoteButton = new TextButton + { + Text = "New Note", Width = 80, Height = 20, Padding = new Thickness(2), + HorizontalAlignment = HorizontalAlignment.Left + }; + newNoteButton.Click += OnContextMenuNewNoteClick; + popup.AddChild(newNoteButton); + } + else + { + _sessionData.Notes.TryGetValue(_state.SelectedNote.ToString(), out var n); + _state.SelectedNote = n; + var viewNoteButton = new TextButton + { + Text = "View Note", Width = 80, Height = 20, Padding = new Thickness(2), + HorizontalAlignment = HorizontalAlignment.Left + }; + var deleteNoteButton = new TextButton + { + Text = "Delete Note", Width = 80, Height = 20, Padding = new Thickness(2), + HorizontalAlignment = HorizontalAlignment.Left + }; + viewNoteButton.Click += OnContextMenuViewNoteClick; + deleteNoteButton.Click += OnContextMenuDeleteNoteClick; + + popup.AddChild(viewNoteButton); + popup.AddChild(deleteNoteButton); + } + + var pingButton = new TextButton + { + Text = "Ping", Width = 80, Height = 20, Padding = new Thickness(2), + HorizontalAlignment = HorizontalAlignment.Left + }; + var location = new Tile { X = _state.HoveredTile.X, Y = _state.HoveredTile.Y }; + pingButton.Click += (s, e) => OnContextMenuPingClick(s, e, location); + popup.AddChild(pingButton); + + _desktop.ShowContextMenu(popup, mouseState.Position); + } + + if (newState.IsKeyDown(Keys.LeftControl) + && mouseState.LeftButton == ButtonState.Released + && mouseState.LeftButton != _oldMouseState.LeftButton) + switch (_state.InsertMode) + { + case InsertMode.Tile: + _state.SelectedTile.X = _state.HoveredTile.X; + _state.SelectedTile.Y = _state.HoveredTile.Y; + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapName, + State.Instance.MapId, _state.SelectedTile); + + _sessionData.NewTile(_state.SelectedTile, _state.CurrentTileId); + break; + case InsertMode.Wall: + _sessionData.NewWall(_state.SelectedWall, _state.CurrentWallId); + + break; + case InsertMode.Overlay: + _sessionData.NewOverlay(_state.SelectedOverlay, _state.CurrentOverlayId); + break; + } + + + if (_state.InsertMode == InsertMode.NewLine && newState.IsKeyDown(Keys.LeftControl) + && mouseState.LeftButton == ButtonState.Released + && mouseState.LeftButton != _oldMouseState.LeftButton) + { + if (_state.LineStart is null) + { + _state.LineStart = new SnapPoint + { + X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, + Index = _state.SelectedSnapPoint.Index + }; + } + else + { + var line = new Line + { + Start = new SnapPoint + { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index }, + End = new SnapPoint + { + X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, + Index = _state.SelectedSnapPoint.Index + }, + Width = _state.LineWidth + }; + _state.LineStart = null; + _state.LineWidth = 1; + _sessionData.NewLine(line); + } + } + + if (_state.InsertMode == InsertMode.NewRoom && newState.IsKeyDown(Keys.LeftControl) + && mouseState.LeftButton == ButtonState.Released + && mouseState.LeftButton != _oldMouseState.LeftButton) + { + if (_state.LineStart is null) + { + _state.LineStart = new SnapPoint + { + X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, + Index = _state.SelectedSnapPoint.Index + }; + } + else + { + var line = new Room + { + Start = new SnapPoint + { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index }, + End = new SnapPoint + { + X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, + Index = _state.SelectedSnapPoint.Index + } + }; + _state.LineStart = null; + _state.LineWidth = 1; + _sessionData.NewRoom(line); + } + } + + + if (_state.InsertMode == InsertMode.NewDelete && newState.IsKeyDown(Keys.LeftControl) + && mouseState.LeftButton == ButtonState.Released + && mouseState.LeftButton != _oldMouseState.LeftButton) + { + if (_state.LineStart is null) + { + _state.LineStart = new SnapPoint + { + X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, + Index = _state.SelectedSnapPoint.Index + }; + } + else + { + var line = new Room + { + Start = new SnapPoint + { X = _state.LineStart.X, Y = _state.LineStart.Y, Index = _state.LineStart.Index }, + End = new SnapPoint + { + X = _state.SelectedSnapPoint.X, Y = _state.SelectedSnapPoint.Y, + Index = _state.SelectedSnapPoint.Index + }, + Delete = true + }; + _state.LineStart = null; + _state.LineWidth = 1; + _sessionData.NewRoom(line); + } + } + + if (_state.InsertMode == InsertMode.NewLine && _state.LineStart != null) + { + if (mouseState.ScrollWheelValue > _oldMouseState.ScrollWheelValue) + _state.LineWidth += .01f; + else if (mouseState.ScrollWheelValue < _oldMouseState.ScrollWheelValue) _state.LineWidth -= .01f; + } + + if (newState.IsKeyDown(Keys.LeftControl) && + mouseState.ScrollWheelValue != _oldMouseState.ScrollWheelValue) + { + var maxTileSize = 500; + var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, + Window.ClientBounds.Height / 2 - _state.TileSize / 2); + + var tx = (center.X - (int)_state.ViewportCenter.X) / _state.TileSize; + var ty = (center.Y - (int)_state.ViewportCenter.Y) / _state.TileSize; + + if (mouseState.ScrollWheelValue > _oldMouseState.ScrollWheelValue) + _state.TileSize = Math.Min(maxTileSize, _state.TileSize + 10); + else if (mouseState.ScrollWheelValue < _oldMouseState.ScrollWheelValue) + _state.TileSize = Math.Max(10, _state.TileSize - 10); + + CenterOnTile(tx, ty); + } + + _oldMouseState = mouseState; } - foreach (var guid in guids) + + + if (newState.IsKeyDown(Keys.Delete)) + switch (_state.InsertMode) + { + case InsertMode.Tile: + case InsertMode.NewRoom: + case InsertMode.NewLine: + case InsertMode.NewDelete: + _state.SelectedTile.X = _state.HoveredTile.X; + _state.SelectedTile.Y = _state.HoveredTile.Y; + _sessionData.DeleteTile(_state.SelectedTile); + break; + case InsertMode.Wall: + _sessionData.DeleteWall(_state.SelectedWall); + break; + case InsertMode.Overlay: + _sessionData.DeleteOverlay(_state.SelectedOverlay); + break; + } + + if (_oldState.IsKeyDown(Keys.P) && newState.IsKeyUp(Keys.P)) + _communicationManager.Ping(_state.HoveredTile).SafeFireAndForget(); + + foreach (var key in newState.GetPressedKeys()) + switch (key) + { + case Keys.Left: + if (_oldState.IsKeyUp(Keys.Left) && newState.IsKeyDown(Keys.Left)) + { + _state.SelectedTile.X--; + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, + _state.SelectedTile); + } + + break; + case Keys.Right: + if (_oldState.IsKeyUp(Keys.Right) && newState.IsKeyDown(Keys.Right)) + { + _state.SelectedTile.X++; + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, + _state.SelectedTile); + } + + break; + case Keys.Up: + if (_oldState.IsKeyUp(Keys.Up) && newState.IsKeyDown(Keys.Up)) + { + _state.SelectedTile.Y--; + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, + _state.SelectedTile); + } + + break; + case Keys.Down: + if (_oldState.IsKeyUp(Keys.Down) && newState.IsKeyDown(Keys.Down)) + { + _state.SelectedTile.Y++; + _communicationManager.Connection?.SendAsync("UpdatePosition", State.Instance.MapId, + _state.SelectedTile); + } + + break; + } + + _oldState = newState; + + base.Update(gameTime); + } + + private void AddItemToToolGrid(Grid grid, EventHandler eventAction, Dictionary tilesFolderContent) + { + var indexX = 0; + var indexY = 0; + foreach (var item in tilesFolderContent) { - var pingFound = _sessionData.Pings.TryGetValue(guid, out var ping); - if (!pingFound) + var tileButton = new ImageButton { - continue; - } - - if ((gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime) > Settings.Instance.PingDuration) + Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, + Width = 40, Height = 40 + }; + tileButton.Click += eventAction; + grid.Widgets.Add(tileButton); + indexY++; + if (indexY == 4) { - _sessionData.Pings.TryRemove(guid, out var _); + indexY = 0; + indexX++; } } + } + private void AddItemToToolGrid(Grid grid, EventHandler eventAction, SpriteSheet spriteSheet, string e = "") + { + var indexX = 0; + var indexY = 0; + grid.Widgets.Clear(); + _mainWidget.ScrOverlay.ResetScroll(); + foreach (var item in spriteSheet.index.Where(t => + string.IsNullOrWhiteSpace(e) || t.Key.ToLower().Contains(e.ToLower()))) + { + var tileButton = new ImageButton + { + Image = new TextureRegion(spriteSheet.Texture, item.Value), GridColumn = indexY, GridRow = indexX, + Id = item.Key, Width = 40, Height = 40 + }; + tileButton.Click += eventAction; + tileButton.MouseMoved += OnTileButtonTouchEntered; + tileButton.MouseLeft += OnTileButtonTouchLeft; + grid.Widgets.Add(tileButton); + indexY++; + if (indexY == 4) + { + indexY = 0; + indexX++; + } + } + } + private void ApplyShaderToMap() + { + var texelSize = new Vector2(_renderTarget.Width, _renderTarget.Height); + _outlineShader.Parameters["ImageSize"].SetValue(texelSize); + _outlineShader.Parameters["BorderSize"].SetValue((int)(_state.TileSize / 100f * 10f)); + + _outlineShader.Parameters["R"].SetValue(Settings.Instance.OverlayTintColor.R / 255.0f); + _outlineShader.Parameters["G"].SetValue(Settings.Instance.OverlayTintColor.G / 255.0f); + _outlineShader.Parameters["B"].SetValue(Settings.Instance.OverlayTintColor.B / 255.0f); + + GraphicsDevice.Clear(Settings.Instance.BackgroundColor); + + _spriteBatch.Begin( + effect: _outlineShader, + sortMode: SpriteSortMode.Immediate); + _spriteBatch.Draw(_renderTarget, Vector2.Zero, null, Color.White); _spriteBatch.End(); } - private void DrawRoomPreview() + private void CenterOnTile(int x, int y) { - if ((_state.InsertMode == InsertMode.NewRoom || _state.InsertMode == InsertMode.NewDelete) && _state.SelectedSnapPoint != null) + var center = new Point((Window.ClientBounds.Width + 200) / 2 - _state.TileSize / 2, + Window.ClientBounds.Height / 2 - _state.TileSize / 2); + var dx = center.X - x * _state.TileSize - _state.ViewportCenter.X; + var dy = center.Y - y * _state.TileSize - _state.ViewportCenter.Y; + _state.ViewportCenter = new Vector3(_state.ViewportCenter.X + dx, _state.ViewportCenter.Y + dy, + _state.ViewportCenter.Z); + } + + private void DrawDelete(Room tile) + { + var posX = tile.Start.X * _state.TileSize; + var posY = tile.Start.Y * _state.TileSize; + + var endposX = tile.End.X * _state.TileSize; + var endposY = tile.End.Y * _state.TileSize; + + + var ww = _state.TileSize / Settings.Instance.TileDeleteDivider; + if (posX == endposX) { - var snapPoint = new Vector2(_state.SelectedSnapPoint.X * _state.TileSize, _state.SelectedSnapPoint.Y * _state.TileSize); + endposX += ww; + posX -= ww; + } - switch (_state.SelectedSnapPoint.Index) + if (posY == endposY) + { + endposY += ww; + posY -= ww; + } + + switch (tile.Start.Index) + { + case 1: + break; + case 2: + posX += _state.TileSize / 2; + break; + case 3: + posY += _state.TileSize / 2; + + break; + case 4: + posX += _state.TileSize / 2; + posY += _state.TileSize / 2; + break; + } + + switch (tile.End.Index) + { + case 1: + break; + case 2: + endposX += _state.TileSize / 2; + break; + case 3: + endposY += _state.TileSize / 2; + + break; + case 4: + endposX += _state.TileSize / 2; + endposY += _state.TileSize / 2; + break; + } + + if (posX != endposX && posY != endposY) + { + var r = new Rectangle(); + + if (posX < endposX && posY < endposY) { - case 1: - break; - case 2: - snapPoint.X += _state.TileSize / 2; - break; - case 3: - snapPoint.Y += _state.TileSize / 2; - break; - case 4: - snapPoint.Y += _state.TileSize / 2; - snapPoint.X += _state.TileSize / 2; - break; + r = new Rectangle(posX, posY, endposX - posX, endposY - posY); + } + else if (posX > endposX && posY > endposY) + { + r = new Rectangle(posX, posY, endposX - posX, endposY - posY); + } + else + { + if (endposY < posY) r = new Rectangle(posX, endposY, endposX - posX, posY - endposY); + if (endposX < posX) r = new Rectangle(endposX, posY, posX - endposX, endposY - posY); } - _spriteBatch.DrawCircle(snapPoint, _state.TileSize / 6f, 50, Color.Red, 2); + _spriteBatch.Draw(_whiteRectangle, r, null, Color.Black, 0, Vector2.Zero, SpriteEffects.None, 1); + } + } - if (_state.LineStart != null) + private void DrawGrid(int visibleTilesX, int visibleTilesY) + { + for (var i = -1; i < visibleTilesX + 3; i++) + { + var posX1 = i * _state.TileSize - _state.ViewportCenter.X; + var posY1 = -_state.ViewportCenter.Y; + posX1 -= posX1 % _state.TileSize; + posY1 -= posY1 % _state.TileSize; + var posX2 = i * _state.TileSize - _state.ViewportCenter.X; + var posY2 = GraphicsDevice.Viewport.Height - _state.ViewportCenter.Y; + posX2 -= posX2 % _state.TileSize; + posY2 -= posY2 % _state.TileSize; + + _spriteBatch.DrawLine( + posX1, posY1, + posX2, + posY2+ _state.TileSize, + Settings.Instance.GridColor); + } + + for (var i = -1; i < visibleTilesY + 2; i++) + { + var posX1 = -_state.ViewportCenter.X; + var posY1 = i * _state.TileSize - _state.ViewportCenter.Y; + posX1 -= posX1 % _state.TileSize; + posY1 -= posY1 % _state.TileSize; + var posX2 = GraphicsDevice.Viewport.Width - _state.ViewportCenter.X; + var posY2 = i * _state.TileSize - _state.ViewportCenter.Y; + posX2 -= posX2 % _state.TileSize; + posY2 -= posY2 % _state.TileSize; + + _spriteBatch.DrawLine(posX1, posY1, + posX2 + _state.TileSize, + posY2, + Settings.Instance.GridColor); + } + + + if (_state.ShowCellNumbers && _state.TileSize >= 30) + { + var ffont = + _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize / 8).Value ?? + _fonts.Last().Value; + var fscale = 1f; + + for (var i = -1; i < visibleTilesX + 2; i++) + for (var j = -1; j < visibleTilesY + 2; j++) { - var posX = _state.LineStart.X * _state.TileSize; - var posY = _state.LineStart.Y * _state.TileSize; + var screenPosition = new Point(i * _state.TileSize - (int)_state.ViewportCenter.X, + j * _state.TileSize - (int)_state.ViewportCenter.Y); - var endposX = _state.SelectedSnapPoint.X * _state.TileSize; - var endposY = _state.SelectedSnapPoint.Y * _state.TileSize; - if (_state.InsertMode == InsertMode.NewDelete) - { - var ww = _state.TileSize / Settings.Instance.TileDeleteDivider; - if (posX == endposX) { endposX += ww; posX -= ww; } - if (posY == endposY) { endposY += ww; posY -= ww; } - } - switch (_state.LineStart.Index) - { - case 1: - break; - case 2: - posX += _state.TileSize / 2; - break; - case 3: - posY += _state.TileSize / 2; + var x = screenPosition.X / _state.TileSize; + var y = screenPosition.Y / _state.TileSize; - break; - case 4: - posX += _state.TileSize / 2; - posY += _state.TileSize / 2; - break; - } - - switch (_state.SelectedSnapPoint.Index) - { - case 1: - break; - case 2: - endposX += _state.TileSize / 2; - break; - case 3: - endposY += _state.TileSize / 2; - - break; - case 4: - endposX += _state.TileSize / 2; - endposY += _state.TileSize / 2; - break; - } - - var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize / 3).Value ?? _fonts.Last().Value; - var fscale = 1.2f; - var width = Math.Abs((endposX - posX)); - var height = Math.Abs((posY - endposY)); - var tilesWidth = width / (double)_state.TileSize; - var tilesHeight = height / (double)_state.TileSize; - tilesWidth = Math.Round(tilesWidth * 2, MidpointRounding.AwayFromZero) / 2; - tilesHeight = Math.Round(tilesHeight * 2, MidpointRounding.AwayFromZero) / 2; - var xmeasure = ffont.MeasureString($"{tilesWidth}"); - var ymeasure = ffont.MeasureString($"{tilesHeight}"); - float widthX = 0, widthY = 0, heightX = 0, heightY = 0; - - Rectangle area = new Rectangle(); - if (posX != endposX && posY != endposY) - { - if ((posX > endposX && posY > endposY) || (posX < endposX && posY < endposY)) - { - area = new Rectangle(posX, posY, endposX - posX, endposY - posY); - - if (posX > endposX && posY > endposY) - { - widthX = endposX + (width / 2) - xmeasure.X / 2; - widthY = endposY - ymeasure.Y * 1.2f; - - heightX = posX + xmeasure.X / 2; - heightY = endposY + (height / 2) - ymeasure.Y / 2; - } - else if (posX < endposX && posY < endposY) - { - widthX = posX + (width / 2) - xmeasure.X / 2; - widthY = posY - ymeasure.Y * 1.2f; - - heightX = endposX + xmeasure.X / 2; - heightY = posY + (height / 2) - ymeasure.Y / 2; - } - } - else - { - if (endposY < posY) - { - area = new Rectangle(posX, endposY, endposX - posX, posY - endposY); - - widthX = posX + (width / 2) - xmeasure.X / 2; - widthY = endposY - ymeasure.Y * 1.2f; - - heightX = endposX + xmeasure.X / 2; - heightY = endposY + (height / 2) - ymeasure.Y / 2; - } - - if (endposX < posX) - { - area = new Rectangle(endposX, posY, posX - endposX, endposY - posY); - - widthX = endposX + (width / 2) - xmeasure.X / 2; - widthY = posY - ymeasure.Y * 1.2f; - - heightX = posX + xmeasure.X / 2; - heightY = posY + (height / 2) - ymeasure.Y / 2; - } - } - - _spriteBatch.Draw(_transparentRedRectangle, area, null, Color.White, 0, new Vector2(0, 0), SpriteEffects.None, 1); - - _spriteBatch.DrawString(ffont, - $"{tilesWidth}", - new Vector2( - widthX, - widthY - ), - Color.Red, - 0, - Vector2.Zero, - fscale, - SpriteEffects.None, - 0); - - _spriteBatch.DrawString(ffont, - $"{tilesHeight}", - new Vector2( - heightX, heightY - ), - Color.Red, - 0, - Vector2.Zero, - fscale, - SpriteEffects.None, - 0); - - } + _spriteBatch.DrawString(ffont, + $"{x}:{y}", + new Vector2( + x * _state.TileSize + 2, + y * _state.TileSize + 2 + ), + Color.Black, + 0, + Vector2.Zero, + fscale, + SpriteEffects.None, + 0); } } } + private void DrawLine(Line tile) + { + var posX = tile.Start.X * _state.TileSize; + var posY = tile.Start.Y * _state.TileSize; + + var endposX = tile.End.X * _state.TileSize; + var endposY = tile.End.Y * _state.TileSize; + + switch (tile.Start.Index) + { + case 1: + break; + case 2: + posX += _state.TileSize / 2; + break; + case 3: + posY += _state.TileSize / 2; + + break; + case 4: + posX += _state.TileSize / 2; + posY += _state.TileSize / 2; + break; + } + + switch (tile.End.Index) + { + case 1: + break; + case 2: + endposX += _state.TileSize / 2; + break; + case 3: + endposY += _state.TileSize / 2; + + break; + case 4: + endposX += _state.TileSize / 2; + endposY += _state.TileSize / 2; + break; + } + + var length = (int)Math.Sqrt(Math.Pow(posX - endposX, 2) + Math.Pow(posY - endposY, 2)); + var height = (int)(_state.TileSize * tile.Width); + if (length > 0) + { + var angle = Math.Atan2(posY - endposY, endposX - posX); + var angleRad = -(float)angle; + _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, posY, length, height), null, Color.White, + angleRad, new Vector2(0, 0), SpriteEffects.None, 1); + } + } + private void DrawLinePreview() { if (_state.InsertMode == InsertMode.NewLine && _state.SelectedSnapPoint != null) { - var snapPoint = new Vector2(_state.SelectedSnapPoint.X * _state.TileSize, _state.SelectedSnapPoint.Y * _state.TileSize); + var snapPoint = new Vector2(_state.SelectedSnapPoint.X * _state.TileSize, + _state.SelectedSnapPoint.Y * _state.TileSize); switch (_state.SelectedSnapPoint.Index) { @@ -924,89 +850,30 @@ namespace Sledgemapper var angle = Math.Atan2(posY - endposY, endposX - posX); var angleRad = -(float)angle; if (l > 0) - { - _spriteBatch.Draw(_transparentRedRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * _state.LineWidth)), null, Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1); - } + _spriteBatch.Draw(_transparentRedRectangle, + new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * _state.LineWidth)), null, + Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1); } } } - private void DrawSelectedIntersection() - { - if (_state.InsertMode == InsertMode.Overlay && _state.SelectedOverlay.Intersection) - { - var overlay = new Vector2(_state.SelectedOverlay.X * _state.TileSize, _state.SelectedOverlay.Y * _state.TileSize); - _spriteBatch.DrawCircle(overlay, _state.TileSize / 3f, 100, Color.Red, 2); - } - } - - private void DrawSelectedWall() - { - if (_state.InsertMode == InsertMode.Wall) - { - var startWall = new Vector2(_state.SelectedWall.X * _state.TileSize, _state.SelectedWall.Y * _state.TileSize); - _spriteBatch.DrawLine(startWall, _state.TileSize, MathHelper.ToRadians(90 * _state.SelectedWall.Rotation), Color.Red, 2); - } - } - - private void DrawPlayerOffline() - { - if (string.IsNullOrWhiteSpace(_sessionData.SessionName)) - { - var isoffscreen = IsOffscreen(_state.SelectedTile); - if (isoffscreen) - { - var validPointer = GetPointerVector(new Point(_state.SelectedTile.X, _state.SelectedTile.Y), out var points); - if (validPointer) - { - _spriteBatch.DrawPolygon(Vector2.Zero, points, Color.Red, 2); - } - } - else - { - _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); - } - } - } - - private void ApplyShaderToMap() - { - Vector2 texelSize = new Vector2((float)rendertarget.Width, (float)rendertarget.Height); - outlineShader.Parameters["ImageSize"].SetValue(texelSize); - outlineShader.Parameters["BorderSize"].SetValue((int)(_state.TileSize / 100f * 10f)); - - outlineShader.Parameters["R"].SetValue(Settings.Instance.OverlayTintColor.R / 255.0f); - outlineShader.Parameters["G"].SetValue(Settings.Instance.OverlayTintColor.G / 255.0f); - outlineShader.Parameters["B"].SetValue(Settings.Instance.OverlayTintColor.B / 255.0f); - - GraphicsDevice.Clear(Settings.Instance.BackgroundColor); - - _spriteBatch.Begin( - effect: outlineShader, - sortMode: SpriteSortMode.Immediate); - _spriteBatch.Draw(rendertarget, Vector2.Zero, null, Color.White); - _spriteBatch.End(); - } - private void DrawMap() { - GraphicsDevice.SetRenderTarget(rendertarget); + GraphicsDevice.SetRenderTarget(_renderTarget); GraphicsDevice.Clear(Color.Transparent); _spriteBatch.Begin( - transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter), - samplerState: SamplerState.PointClamp - ); + transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter), + samplerState: SamplerState.PointClamp + ); - var items = _sessionData.Lines.Values.Union(_sessionData.Rooms.Values).OrderBy(t => t.Timestamp).ToArray(); + var items = _sessionData.Lines.Values.Union(_sessionData.Rooms.Values) + .OrderBy(t => t.Timestamp).ToArray(); for (var i = 0; i < items.Count(); i++) { var item = items.ElementAt(i); - if (IsMapElementOffscreen(item)) - { - continue; - } + if (IsMapElementOffscreen(item)) continue; switch (item) { case Line l: @@ -1015,153 +882,42 @@ namespace Sledgemapper case Room room: if (room.Delete) - { DrawDelete(room); - } else - { DrawRoom(room); - } break; } } + _spriteBatch.End(); GraphicsDevice.SetRenderTarget(null); } - private bool IsMapElementOffscreen(BaseMapEntity item) - { - SnapPoint start, end; - - switch (item) - { - case Line l: - start = l.Start; - end = l.End; - break; - - case Room room: - start = room.Start; - end = room.End; - break; - default: - return true; - } - - var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1; - var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; - - var screenPositionTopLeft = new Point(200 - _state.TileSize + 0 * _state.TileSize - (int)_state.ViewportCenter.X, 0 * _state.TileSize + _state.TileSize - (int)_state.ViewportCenter.Y); - var screenPositionBottomRight = new Point(visibleTilesX * _state.TileSize - (int)_state.ViewportCenter.X, visibleTilesY * _state.TileSize - 20 - (int)_state.ViewportCenter.Y); - var tileTopLeft = new Point(screenPositionTopLeft.X / _state.TileSize, screenPositionTopLeft.Y / _state.TileSize); - var tileBottomRight = new Point(screenPositionBottomRight.X / _state.TileSize, screenPositionBottomRight.Y / _state.TileSize); - - if (start.X < tileTopLeft.X && start.Y < tileTopLeft.Y && start.X > tileBottomRight.X && start.Y > tileBottomRight.Y && - end.X < tileTopLeft.X && end.Y < tileTopLeft.Y && end.X > tileBottomRight.X && end.Y > tileBottomRight.Y - ) - { - return true; - } - return false; - } - - private void DrawGrid(int visibleTilesX, int visibleTilesY) - { - for (var i = -1; i < visibleTilesX + 2; i++) - { - var posX1 = i * _state.TileSize - _state.ViewportCenter.X; - var posY1 = -_state.ViewportCenter.Y; - posX1 -= posX1 % _state.TileSize; - posY1 -= posY1 % _state.TileSize; - var posX2 = i * _state.TileSize - _state.ViewportCenter.X; - var posY2 = GraphicsDevice.Viewport.Height - _state.ViewportCenter.Y; - posX2 -= posX2 % _state.TileSize; - posY2 -= posY2 % _state.TileSize; - - _spriteBatch.DrawLine( - posX1, posY1, - posX2, - posY2, - Settings.Instance.GridColor); - } - - for (var i = -1; i < visibleTilesY + 2; i++) - { - var posX1 = -_state.ViewportCenter.X; - var posY1 = i * _state.TileSize - _state.ViewportCenter.Y; - posX1 -= posX1 % _state.TileSize; - posY1 -= posY1 % _state.TileSize; - var posX2 = GraphicsDevice.Viewport.Width - _state.ViewportCenter.X; - var posY2 = i * _state.TileSize - _state.ViewportCenter.Y; - posX2 -= posX2 % _state.TileSize; - posY2 -= posY2 % _state.TileSize; - - _spriteBatch.DrawLine(posX1, posY1, - posX2, - posY2, - Settings.Instance.GridColor); - } - - - if (_state.ShowCellNumbers && _state.TileSize >= 30) - { - var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize / 8).Value ?? _fonts.Last().Value; - var fscale = 1f; - - for (var i = -1; i < visibleTilesX + 2; i++) - { - for (var j = -1; j < visibleTilesY + 2; j++) - { - var screenPosition = new Point(i * _state.TileSize - (int)_state.ViewportCenter.X, j * _state.TileSize - (int)_state.ViewportCenter.Y); - - var x = screenPosition.X / _state.TileSize; - var y = screenPosition.Y / _state.TileSize; - - _spriteBatch.DrawString(ffont, - $"{x}:{y}", - new Vector2( - x * _state.TileSize + 2, - y * _state.TileSize + 2 - ), - Color.Black, - 0, - Vector2.Zero, - fscale, - SpriteEffects.None, - 0); - } - } - } - } - private void DrawNotes() { - if (_state.TileSize < 30) - { - return; - } + if (_state.TileSize < 30) return; for (var i = 0; i < _sessionData.Notes.Values.Count; i++) { var note = _sessionData.Notes.Values.ElementAt(i); _spriteBatch.Draw( - _comment, - new Rectangle( - note.X * _state.TileSize + _state.TileSize - (int)(_state.TileSize / 2) + _state.TileSize / 25, - note.Y * _state.TileSize + _state.TileSize / 8 + _state.TileSize / 25, - (int)(_state.TileSize / 2.5), (int)(_state.TileSize / 2.5 / 1.136) - ), Color.Black * .2f - ); + _comment, + new Rectangle( + note.X * _state.TileSize + _state.TileSize - _state.TileSize / 2 + _state.TileSize / 25, + note.Y * _state.TileSize + _state.TileSize / 8 + _state.TileSize / 25, + (int)(_state.TileSize / 2.5), (int)(_state.TileSize / 2.5 / 1.136) + ), Color.Black * .2f + ); _spriteBatch.Draw( _comment, new Rectangle( - note.X * _state.TileSize + _state.TileSize - (int)(_state.TileSize / 2), - note.Y * _state.TileSize + _state.TileSize / 8, - (int)(_state.TileSize / 2.5), (int)(_state.TileSize / 2.5 / 1.136) + note.X * _state.TileSize + _state.TileSize - _state.TileSize / 2, + note.Y * _state.TileSize + _state.TileSize / 8, + (int)(_state.TileSize / 2.5), (int)(_state.TileSize / 2.5 / 1.136) ), Settings.Instance.NoteColor - ); + ); } } @@ -1180,8 +936,15 @@ namespace Sledgemapper posX = tile.X * _state.TileSize; posY = tile.Y * _state.TileSize; - _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX + _state.TileSize / 25, posY + _state.TileSize / 25), spriteRec, Color.Black * .2f, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); - _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, Settings.Instance.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); + _spriteBatch.Draw(_spriteSheet.Texture, + new Vector2(posX + _state.TileSize / 25, posY + _state.TileSize / 25), spriteRec, + Color.Black * .2f, MathHelper.ToRadians(90 * tile.Rotation), + new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), + ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); + _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, + Settings.Instance.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), + new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), + ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); } else { @@ -1189,15 +952,91 @@ namespace Sledgemapper posY = tile.Y * _state.TileSize + _state.TileSize / 2f; } - _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX + _state.TileSize / 25, posY + _state.TileSize / 25), spriteRec, Color.Black * .2f, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); - _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, Settings.Instance.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); + _spriteBatch.Draw(_spriteSheet.Texture, + new Vector2(posX + _state.TileSize / 25, posY + _state.TileSize / 25), spriteRec, Color.Black * .2f, + MathHelper.ToRadians(90 * tile.Rotation), + new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), + ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); + _spriteBatch.Draw(_spriteSheet.Texture, new Vector2(posX, posY), spriteRec, + Settings.Instance.OverlayTintColor, MathHelper.ToRadians(90 * tile.Rotation), + new Vector2(spriteRec.Value.Width / 2, spriteRec.Value.Height / 2), + ((float)_state.TileSize - 10) / spriteRec.Value.Width, SpriteEffects.None, 0); } } + private void DrawPingPointer(Ping ping, GameTime gameTime) + { + var durationMs = 2000f; + var baseRadius = _state.TileSize / 4f; + var baseOuterRadius = (float)_state.TileSize; + var iterations = 3f; + var validPointer = GetPointerVector(new Point(ping.X, ping.Y), out var points); + + if (validPointer) + { + _spriteBatch.DrawPolygon(Vector2.Zero, points, ping.Player.Color.ToColor(), 4); + + + for (var j = 0; j < iterations; j++) + { + var cycleTime = ((float)gameTime.TotalGameTime.TotalMilliseconds + j * durationMs / iterations) % + durationMs / durationMs; + var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); + var v2 = new Vector2[points.Length]; + + + var tCenter = new Vector2((points[0].X + points[1].X + points[2].X) / 3f, + (points[0].Y + points[1].Y + points[2].Y) / 3f); + + + for (var i1 = 0; i1 < v2.Length; i1++) + { + var svx = (points[i1].X - tCenter.X) * (1 + 2 * easing) + tCenter.X; + var svy = (points[i1].Y - tCenter.Y) * (1 + 2 * easing) + tCenter.Y; + v2[i1] = new Vector2(svx, svy); + } + + _spriteBatch.DrawPolygon( + Vector2.Zero, + v2, + new Color(ping.Player.Color.ToColor(), 1f - easing), + 2 + 2 * (1 - easing)); + } + } + } + + private void DrawPlayerOffline() + { + if (string.IsNullOrWhiteSpace(_sessionData.SessionName)) + { + var isoffscreen = IsOffscreen(_state.SelectedTile); + if (isoffscreen) + { + var validPointer = GetPointerVector(new Point(_state.SelectedTile.X, _state.SelectedTile.Y), + out var points); + if (validPointer) _spriteBatch.DrawPolygon(Vector2.Zero, points, Color.Red, 2); + } + else + { + _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); + } + } + } + + private void DrawPlayerPointer(Player player) + { + var validPointer = GetPointerVector(new Point(player.Position.X, player.Position.Y), out var points); + if (validPointer) _spriteBatch.DrawPolygon(Vector2.Zero, points, player.Color.ToColor(), 2); + } + private void DrawPlayers() { - var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize).Value ?? _fonts.Last().Value; - var fscale = _state.TileSize / ((float)ffont.LineSpacing * 3f); + var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize).Value ?? + _fonts.Last().Value; + var fscale = _state.TileSize / (ffont.LineSpacing * 3f); var playerCells = _sessionData.Players.Select(m => m.Position).Distinct().ToList(); @@ -1253,6 +1092,7 @@ namespace Sledgemapper player.Position.X * _state.TileSize + _state.TileSize / 2 + 1, player.Position.Y * _state.TileSize + _state.TileSize - measure.Y * fscale); } + i++; } else if (playersInCell.Count >= 3) @@ -1306,239 +1146,92 @@ namespace Sledgemapper break; } + i++; } _spriteBatch.DrawRectangle(rectangle, color, 2); _spriteBatch.DrawString(ffont, - player.Initials, - stringPosition, - color, - 0, - Vector2.Zero, - fscale, - SpriteEffects.None, - 0); + player.Initials, + stringPosition, + color, + 0, + Vector2.Zero, + fscale, + SpriteEffects.None, + 0); } - } foreach (var player in _sessionData.Players) { var isOffscreen = IsOffscreen(player.Position); - if (isOffscreen) - { - DrawPlayerPointer(player); - } + if (isOffscreen) DrawPlayerPointer(player); } } - private void DrawPingPointer(Ping ping, GameTime gameTime) + private void DrawRipple(GameTime gameTime) { - var durationMs = 2000f; + _spriteBatch.Begin( + blendState: BlendState.NonPremultiplied, + transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter)); + + var durationMs = 2000; var baseRadius = _state.TileSize / 4f; var baseOuterRadius = (float)_state.TileSize; var iterations = 3f; - var validPointer = GetPointerVector(new Point(ping.X, ping.Y), out var points); + var guids = _sessionData.Pings.Keys.ToArray(); - if (validPointer) + foreach (var guid in guids) { - _spriteBatch.DrawPolygon(Vector2.Zero, points, ping.Player.Color.ToColor(), 4); + var pingFound = _sessionData.Pings.TryGetValue(guid, out var ping); + if (!pingFound) continue; + if (ping.StartTime == 0) ping.StartTime = gameTime.TotalGameTime.TotalMilliseconds; - for (var j = 0; j < iterations; j++) + var x = ping.X * _state.TileSize + _state.TileSize / 2f; + var y = ping.Y * _state.TileSize + _state.TileSize / 2f; + + if (IsOffscreen(new Tile { X = ping.X, Y = ping.Y })) { - var cycleTime = (((float)gameTime.TotalGameTime.TotalMilliseconds + (float)j * durationMs / iterations) % durationMs) / durationMs; - var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); - var v2 = new Vector2[points.Length]; + DrawPingPointer(ping, gameTime); + } + else + { + _spriteBatch.DrawCircle( + new Vector2(x, y), + baseRadius, + 20, + ping.Player.Color.ToColor(), + baseRadius); - - var tCenter = new Vector2((points[0].X + points[1].X + points[2].X) / 3f, (points[0].Y + points[1].Y + points[2].Y) / 3f); - - - for (int i1 = 0; i1 < v2.Length; i1++) + for (var i = 0; i < iterations; i++) { - - var svx = ((points[i1].X - tCenter.X) * (1 + (2 * easing))) + tCenter.X; - var svy = ((points[i1].Y - tCenter.Y) * (1 + (2 * easing))) + tCenter.Y; - v2[i1] = new Vector2(svx, svy); + var cycleTime = + ((float)gameTime.TotalGameTime.TotalMilliseconds + (float)i * durationMs / iterations) % + durationMs / durationMs; + var easing = Easings.Interpolate(cycleTime, Easings.Functions.SineEaseInOut); + _spriteBatch.DrawCircle( + new Vector2(x, y), + baseRadius + baseOuterRadius * easing, + 20, + new Color(ping.Player.Color.ToColor(), 1 - easing), + 2 + 5 * (1 - easing)); } - - _spriteBatch.DrawPolygon( - offset: Vector2.Zero, - points: v2, - color: new Color(ping.Player.Color.ToColor(), 1f - easing), - thickness: 2 + 2 * (1 - easing)); - } - } - } - private bool GetPointerVector(Point target, out Vector2[] points) - { - var offset = _state.TileSize / 2; - var leftBound = 200 + offset; - var topBound = 75 + offset; - var bottomBound = 25 + offset; - var rightBound = offset; - points = new Vector2[0]; - var center = new Point((Window.ClientBounds.Width + leftBound) / 2 - (int)_state.ViewportCenter.X, Window.ClientBounds.Height / 2 - (int)_state.ViewportCenter.Y); - - // center - var p1 = new Vector2(center.X, center.Y); - - // point - var p2 = new Vector2( - target.X * _state.TileSize + offset, - target.Y * _state.TileSize + offset); - - // top right - var p3 = new Vector2( - Window.ClientBounds.Width - _state.ViewportCenter.X - rightBound, - topBound - _state.ViewportCenter.Y); - - //bottom right - var p4 = new Vector2( - Window.ClientBounds.Width - _state.ViewportCenter.X - rightBound, - Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); - - var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(leftBound - _state.ViewportCenter.X, topBound - _state.ViewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _state.ViewportCenter.X, topBound - _state.ViewportCenter.Y); - var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(leftBound - _state.ViewportCenter.X, topBound - _state.ViewportCenter.Y); - p4 = new Vector2(leftBound - _state.ViewportCenter.X, Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); - var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - p3 = new Vector2(leftBound - _state.ViewportCenter.X, Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); - p4 = new Vector2(Window.ClientBounds.Width - _state.ViewportCenter.X, Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); - var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); - - var uas = new List { ua1, ua2, ua3, ua4 }; - if (uas.Any(u => u > 0 && u < 1)) + foreach (var guid in guids) { - var ua = uas.Where(u => u > 0 && u < 1).Min(); - var i = uas.IndexOf(ua); - var x = (p1.X + ua * (p2.X - p1.X)); - var y = (p1.Y + ua * (p2.Y - p1.Y)); + var pingFound = _sessionData.Pings.TryGetValue(guid, out var ping); + if (!pingFound) continue; - switch (i) - { - case 0: - x += offset; - points = new Vector2[] { new Vector2(x, y), new Vector2(x - 20, y - 10), new Vector2(x - 20, y + 10), new Vector2(x, y) }; - break; - case 1: - y -= offset; - points = new Vector2[] { new Vector2(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; - break; - case 2: - x -= offset; - points = new Vector2[] { new Vector2(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; - break; - case 3: - y += offset; - points = new Vector2[] { new Vector2(x, y), new Vector2(x + 10, y - 20), new Vector2(x - 10, y - 20), new Vector2(x, y) }; - break; - } - return true; - } - return false; - } - - private void DrawPlayerPointer(Player player) - { - var validPointer = GetPointerVector(new Point(player.Position.X, player.Position.Y), out var points); - if (validPointer) - { - _spriteBatch.DrawPolygon(Vector2.Zero, points, player.Color.ToColor(), 2); - } - } - - private bool IsOffscreen(Tile position) - { - var boxTL = new Point(200 - _state.TileSize / 2, 75 - _state.TileSize / 2); - var boxBR = new Point(GraphicsDevice.Viewport.Width + _state.TileSize / 2, GraphicsDevice.Viewport.Height - 25 + _state.TileSize / 2); - - var tileTL = new Point(position.X * _state.TileSize + (int)_state.ViewportCenter.X, position.Y * _state.TileSize + (int)_state.ViewportCenter.Y); - var tileBR = new Point(position.X * _state.TileSize + (int)_state.ViewportCenter.X + _state.TileSize, position.Y * _state.TileSize + (int)_state.ViewportCenter.Y + _state.TileSize); - - if (tileTL.X <= boxTL.X || tileTL.Y <= boxTL.Y || tileBR.X >= boxBR.X || tileBR.Y >= boxBR.Y) - { - return true; + if (gameTime.TotalGameTime.TotalMilliseconds - ping.StartTime > Settings.Instance.PingDuration) + _sessionData.Pings.TryRemove(guid, out var _); } - return false; - } - private void DrawTiles() - { - for (var i = 0; i < _sessionData.Map.Values.Count; i++) - { - var tile = _sessionData.Map.Values.ElementAt(i); - var content = Content.Load($"tiles/{tile.ID}"); - - var posX = tile.X * _state.TileSize + _state.TileSize / 2f; - var posY = tile.Y * _state.TileSize + _state.TileSize / 2f; - - _spriteBatch.Draw(content, new Vector2(posX, posY), - null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_state.TileSize) / content.Width, SpriteEffects.None, 0); - } - } - - private void DrawLine(Line tile) - { - var posX = tile.Start.X * _state.TileSize; - var posY = tile.Start.Y * _state.TileSize; - - var endposX = tile.End.X * _state.TileSize; - var endposY = tile.End.Y * _state.TileSize; - - switch (tile.Start.Index) - { - case 1: - break; - case 2: - posX += _state.TileSize / 2; - break; - case 3: - posY += _state.TileSize / 2; - - break; - case 4: - posX += _state.TileSize / 2; - posY += _state.TileSize / 2; - break; - } - - switch (tile.End.Index) - { - case 1: - break; - case 2: - endposX += _state.TileSize / 2; - break; - case 3: - endposY += _state.TileSize / 2; - - break; - case 4: - endposX += _state.TileSize / 2; - endposY += _state.TileSize / 2; - break; - } - - var length = (int)Math.Sqrt(Math.Pow(posX - endposX, 2) + Math.Pow(posY - endposY, 2)); - var height = (int)(_state.TileSize * tile.Width); - if (length > 0) - { - var angle = Math.Atan2(posY - endposY, endposX - posX); - var angleRad = -(float)angle; - _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, posY, length, height), null, Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1); - } + _spriteBatch.End(); } private void DrawRoom(Room tile) @@ -1585,106 +1278,243 @@ namespace Sledgemapper if (posX != endposX && posY != endposY) { - - - if ((posX < endposX && posY < endposY)) + if (posX < endposX && posY < endposY) { - _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); + _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, + Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); } - else if ((posX > endposX && posY > endposY)) + else if (posX > endposX && posY > endposY) { - _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); + _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, + Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); } else { if (endposY < posY) - { - _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, endposY, endposX - posX, posY - endposY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); - } + _spriteBatch.Draw(_whiteRectangle, new Rectangle(posX, endposY, endposX - posX, posY - endposY), + null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); if (endposX < posX) + _spriteBatch.Draw(_whiteRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), + null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); + } + } + } + + private void DrawRoomPreview() + { + if ((_state.InsertMode == InsertMode.NewRoom || _state.InsertMode == InsertMode.NewDelete) && + _state.SelectedSnapPoint != null) + { + var snapPoint = new Vector2(_state.SelectedSnapPoint.X * _state.TileSize, + _state.SelectedSnapPoint.Y * _state.TileSize); + + switch (_state.SelectedSnapPoint.Index) + { + case 1: + break; + case 2: + snapPoint.X += _state.TileSize / 2; + break; + case 3: + snapPoint.Y += _state.TileSize / 2; + break; + case 4: + snapPoint.Y += _state.TileSize / 2; + snapPoint.X += _state.TileSize / 2; + break; + } + + _spriteBatch.DrawCircle(snapPoint, _state.TileSize / 6f, 50, Color.Red, 2); + + if (_state.LineStart != null) + { + var posX = _state.LineStart.X * _state.TileSize; + var posY = _state.LineStart.Y * _state.TileSize; + + var endposX = _state.SelectedSnapPoint.X * _state.TileSize; + var endposY = _state.SelectedSnapPoint.Y * _state.TileSize; + if (_state.InsertMode == InsertMode.NewDelete) { - _spriteBatch.Draw(_whiteRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1); + var ww = _state.TileSize / Settings.Instance.TileDeleteDivider; + if (posX == endposX) + { + endposX += ww; + posX -= ww; + } + + if (posY == endposY) + { + endposY += ww; + posY -= ww; + } + } + + switch (_state.LineStart.Index) + { + case 1: + break; + case 2: + posX += _state.TileSize / 2; + break; + case 3: + posY += _state.TileSize / 2; + + break; + case 4: + posX += _state.TileSize / 2; + posY += _state.TileSize / 2; + break; + } + + switch (_state.SelectedSnapPoint.Index) + { + case 1: + break; + case 2: + endposX += _state.TileSize / 2; + break; + case 3: + endposY += _state.TileSize / 2; + + break; + case 4: + endposX += _state.TileSize / 2; + endposY += _state.TileSize / 2; + break; + } + + var ffont = _fonts.FirstOrDefault(m => int.Parse(m.Key.Replace("font", "")) > _state.TileSize / 3) + .Value ?? _fonts.Last().Value; + var fscale = 1.2f; + var width = Math.Abs(endposX - posX); + var height = Math.Abs(posY - endposY); + var tilesWidth = width / (double)_state.TileSize; + var tilesHeight = height / (double)_state.TileSize; + tilesWidth = Math.Round(tilesWidth * 2, MidpointRounding.AwayFromZero) / 2; + tilesHeight = Math.Round(tilesHeight * 2, MidpointRounding.AwayFromZero) / 2; + var xmeasure = ffont.MeasureString($"{tilesWidth}"); + var ymeasure = ffont.MeasureString($"{tilesHeight}"); + float widthX = 0, widthY = 0, heightX = 0, heightY = 0; + + var area = new Rectangle(); + if (posX != endposX && posY != endposY) + { + if (posX > endposX && posY > endposY || posX < endposX && posY < endposY) + { + area = new Rectangle(posX, posY, endposX - posX, endposY - posY); + + if (posX > endposX && posY > endposY) + { + widthX = endposX + width / 2 - xmeasure.X / 2; + widthY = endposY - ymeasure.Y * 1.2f; + + heightX = posX + xmeasure.X / 2; + heightY = endposY + height / 2 - ymeasure.Y / 2; + } + else if (posX < endposX && posY < endposY) + { + widthX = posX + width / 2 - xmeasure.X / 2; + widthY = posY - ymeasure.Y * 1.2f; + + heightX = endposX + xmeasure.X / 2; + heightY = posY + height / 2 - ymeasure.Y / 2; + } + } + else + { + if (endposY < posY) + { + area = new Rectangle(posX, endposY, endposX - posX, posY - endposY); + + widthX = posX + width / 2 - xmeasure.X / 2; + widthY = endposY - ymeasure.Y * 1.2f; + + heightX = endposX + xmeasure.X / 2; + heightY = endposY + height / 2 - ymeasure.Y / 2; + } + + if (endposX < posX) + { + area = new Rectangle(endposX, posY, posX - endposX, endposY - posY); + + widthX = endposX + width / 2 - xmeasure.X / 2; + widthY = posY - ymeasure.Y * 1.2f; + + heightX = posX + xmeasure.X / 2; + heightY = posY + height / 2 - ymeasure.Y / 2; + } + } + + _spriteBatch.Draw(_transparentRedRectangle, area, null, Color.White, 0, new Vector2(0, 0), + SpriteEffects.None, 1); + + _spriteBatch.DrawString(ffont, + $"{tilesWidth}", + new Vector2( + widthX, + widthY + ), + Color.Red, + 0, + Vector2.Zero, + fscale, + SpriteEffects.None, + 0); + + _spriteBatch.DrawString(ffont, + $"{tilesHeight}", + new Vector2( + heightX, heightY + ), + Color.Red, + 0, + Vector2.Zero, + fscale, + SpriteEffects.None, + 0); } } } } - private void DrawDelete(Room tile) + private void DrawSelectedIntersection() { - var posX = tile.Start.X * _state.TileSize; - var posY = tile.Start.Y * _state.TileSize; - - var endposX = tile.End.X * _state.TileSize; - var endposY = tile.End.Y * _state.TileSize; - - - var ww = _state.TileSize / Settings.Instance.TileDeleteDivider; - if (posX == endposX) { endposX += ww; posX -= ww; } - if (posY == endposY) { endposY += ww; posY -= ww; } - switch (tile.Start.Index) + if (_state.InsertMode == InsertMode.Overlay && _state.SelectedOverlay.Intersection) { - case 1: - break; - case 2: - posX += _state.TileSize / 2; - break; - case 3: - posY += _state.TileSize / 2; - - break; - case 4: - posX += _state.TileSize / 2; - posY += _state.TileSize / 2; - break; + var overlay = new Vector2(_state.SelectedOverlay.X * _state.TileSize, + _state.SelectedOverlay.Y * _state.TileSize); + _spriteBatch.DrawCircle(overlay, _state.TileSize / 3f, 100, Color.Red, 2); } + } - switch (tile.End.Index) + private void DrawSelectedWall() + { + if (_state.InsertMode == InsertMode.Wall) { - case 1: - break; - case 2: - endposX += _state.TileSize / 2; - break; - case 3: - endposY += _state.TileSize / 2; - - break; - case 4: - endposX += _state.TileSize / 2; - endposY += _state.TileSize / 2; - break; + var startWall = new Vector2(_state.SelectedWall.X * _state.TileSize, + _state.SelectedWall.Y * _state.TileSize); + _spriteBatch.DrawLine(startWall, _state.TileSize, + MathHelper.ToRadians(90 * _state.SelectedWall.Rotation), Color.Red, 2); } + } - if (posX != endposX && posY != endposY) + private void DrawTiles() + { + for (var i = 0; i < _sessionData.Map.Values.Count; i++) { - Rectangle r = new Rectangle(); + var tile = _sessionData.Map.Values.ElementAt(i); + var content = Content.Load($"tiles/{tile.ID}"); - if ((posX < endposX && posY < endposY)) - { - - r = new Rectangle(posX, posY, endposX - posX, endposY - posY); - } - else if ((posX > endposX && posY > endposY)) - { - r = new Rectangle(posX, posY, endposX - posX, endposY - posY); - } - else - { - if (endposY < posY) - { - r = new Rectangle(posX, endposY, endposX - posX, posY - endposY); - } - if (endposX < posX) - { - r = new Rectangle(endposX, posY, posX - endposX, endposY - posY); - } - } - - _spriteBatch.Draw(_whiteRectangle, r, null, Color.Black, 0, Vector2.Zero, SpriteEffects.None, 1); + var posX = tile.X * _state.TileSize + _state.TileSize / 2f; + var posY = tile.Y * _state.TileSize + _state.TileSize / 2f; + _spriteBatch.Draw(content, new Vector2(posX, posY), + null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), + new Vector2(content.Width / 2, content.Height / 2), (float)_state.TileSize / content.Width, + SpriteEffects.None, 0); } } @@ -1699,21 +1529,172 @@ namespace Sledgemapper var posX = wall.X * _state.TileSize; var posY = wall.Y * _state.TileSize; if (wall.Rotation == 1) - { posX -= (int)offset; - } - else if (wall.Rotation == 0) - { - posY += (int)offset; - } - _spriteBatch.Draw(content, new Vector2(posX, posY), null, Color.White, MathHelper.ToRadians(90 * (wall.Rotation - 1)), new Vector2(0, 0), scale, SpriteEffects.None, 0); + else if (wall.Rotation == 0) posY += (int)offset; + _spriteBatch.Draw(content, new Vector2(posX, posY), null, Color.White, + MathHelper.ToRadians(90 * (wall.Rotation - 1)), new Vector2(0, 0), scale, SpriteEffects.None, 0); } } - private void OnContextMenuNewNoteClick(object sender, EventArgs e) + private void EditNote(Note note) { - _desktop.HideContextMenu(); - new NoteWindow(_communicationManager, new Note()).ShowInModalWindow(_desktop, $" Note on {_state.HoveredTile.X}:{_state.HoveredTile.Y}"); + _state.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; + new NoteWindow(_communicationManager, note).ShowInModalWindow(_desktop, $" Note on {note.X}:{note.Y}"); + } + + private bool GetPointerVector(Point target, out Vector2[] points) + { + var offset = _state.TileSize / 2; + var leftBound = 200 + offset; + var topBound = 75 + offset; + var bottomBound = 25 + offset; + var rightBound = offset; + points = Array.Empty(); + var center = new Point((Window.ClientBounds.Width + leftBound) / 2 - (int)_state.ViewportCenter.X, + Window.ClientBounds.Height / 2 - (int)_state.ViewportCenter.Y); + + // center + var p1 = new Vector2(center.X, center.Y); + + // point + var p2 = new Vector2( + target.X * _state.TileSize + offset, + target.Y * _state.TileSize + offset); + + // top right + var p3 = new Vector2( + Window.ClientBounds.Width - _state.ViewportCenter.X - rightBound, + topBound - _state.ViewportCenter.Y); + + //bottom right + var p4 = new Vector2( + Window.ClientBounds.Width - _state.ViewportCenter.X - rightBound, + Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); + + var ua1 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / + ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + p3 = new Vector2(leftBound - _state.ViewportCenter.X, topBound - _state.ViewportCenter.Y); + p4 = new Vector2(Window.ClientBounds.Width - _state.ViewportCenter.X, topBound - _state.ViewportCenter.Y); + var ua2 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / + ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + p3 = new Vector2(leftBound - _state.ViewportCenter.X, topBound - _state.ViewportCenter.Y); + p4 = new Vector2(leftBound - _state.ViewportCenter.X, + Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); + var ua3 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / + ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + p3 = new Vector2(leftBound - _state.ViewportCenter.X, + Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); + p4 = new Vector2(Window.ClientBounds.Width - _state.ViewportCenter.X, + Window.ClientBounds.Height - _state.ViewportCenter.Y - bottomBound); + var ua4 = ((p4.X - p3.X) * (p1.Y - p3.Y) - (p4.Y - p3.Y) * (p1.X - p3.X)) / + ((p4.Y - p3.Y) * (p2.X - p1.X) - (p4.X - p3.X) * (p2.Y - p1.Y)); + + var uas = new List { ua1, ua2, ua3, ua4 }; + if (uas.Any(u => u > 0 && u < 1)) + { + var ua = uas.Where(u => u > 0 && u < 1).Min(); + var i = uas.IndexOf(ua); + var x = p1.X + ua * (p2.X - p1.X); + var y = p1.Y + ua * (p2.Y - p1.Y); + + switch (i) + { + case 0: + x += offset; + points = new[] + { new(x, y), new Vector2(x - 20, y - 10), new Vector2(x - 20, y + 10), new Vector2(x, y) }; + break; + case 1: + y -= offset; + points = new[] + { new(x, y), new Vector2(x - 10, y + 20), new Vector2(x + 10, y + 20), new Vector2(x, y) }; + break; + case 2: + x -= offset; + points = new[] + { new(x, y), new Vector2(x + 20, y + 10), new Vector2(x + 20, y - 10), new Vector2(x, y) }; + break; + case 3: + y += offset; + points = new[] + { new(x, y), new Vector2(x + 10, y - 20), new Vector2(x - 10, y - 20), new Vector2(x, y) }; + break; + } + + return true; + } + + return false; + } + + private bool IsMapElementOffscreen(BaseMapEntity item) + { + SnapPoint start, end; + + switch (item) + { + case Line l: + start = l.Start; + end = l.End; + break; + + case Room room: + start = room.Start; + end = room.End; + break; + default: + return true; + } + + var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1; + var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1; + + var screenPositionTopLeft = + new Point(200 - _state.TileSize + 0 * _state.TileSize - (int)_state.ViewportCenter.X, + 0 * _state.TileSize + _state.TileSize - (int)_state.ViewportCenter.Y); + var screenPositionBottomRight = new Point(visibleTilesX * _state.TileSize - (int)_state.ViewportCenter.X, + visibleTilesY * _state.TileSize - 20 - (int)_state.ViewportCenter.Y); + var tileTopLeft = new Point(screenPositionTopLeft.X / _state.TileSize, + screenPositionTopLeft.Y / _state.TileSize); + var tileBottomRight = new Point(screenPositionBottomRight.X / _state.TileSize, + screenPositionBottomRight.Y / _state.TileSize); + + if (start.X < tileTopLeft.X && start.Y < tileTopLeft.Y && start.X > tileBottomRight.X && + start.Y > tileBottomRight.Y && + end.X < tileTopLeft.X && end.Y < tileTopLeft.Y && end.X > tileBottomRight.X && end.Y > tileBottomRight.Y + ) + return true; + return false; + } + + private bool IsOffscreen(Tile position) + { + var boxTL = new Point(200 - _state.TileSize / 2, 75 - _state.TileSize / 2); + var boxBR = new Point(GraphicsDevice.Viewport.Width + _state.TileSize / 2, + GraphicsDevice.Viewport.Height - 25 + _state.TileSize / 2); + + var tileTL = new Point(position.X * _state.TileSize + (int)_state.ViewportCenter.X, + position.Y * _state.TileSize + (int)_state.ViewportCenter.Y); + var tileBR = new Point(position.X * _state.TileSize + (int)_state.ViewportCenter.X + _state.TileSize, + position.Y * _state.TileSize + (int)_state.ViewportCenter.Y + _state.TileSize); + + return tileTL.X <= boxTL.X || tileTL.Y <= boxTL.Y || tileBR.X >= boxBR.X || tileBR.Y >= boxBR.Y; + } + + private void OnClientSizeChanged(object sender, EventArgs e) + { + _renderTarget?.Dispose(); + try + { + ResetRenderTarget(); + } + catch + { + Console.WriteLine("rendertarget dispose exception"); + } } private void OnContextMenuDeleteNoteClick(object sender, EventArgs e) @@ -1722,28 +1703,95 @@ namespace Sledgemapper _sessionData.DeleteNote(_state.SelectedNote); } + private void OnContextMenuNewNoteClick(object sender, EventArgs e) + { + _desktop.HideContextMenu(); + new NoteWindow(_communicationManager, new Note()).ShowInModalWindow(_desktop, + $" Note on {_state.HoveredTile.X}:{_state.HoveredTile.Y}"); + } + + private void OnContextMenuPingClick(object sender, EventArgs e, Tile location) + { + _desktop.HideContextMenu(); + _communicationManager.Ping(location).SafeFireAndForget(); + } + private void OnContextMenuViewNoteClick(object sender, EventArgs e) { _desktop.HideContextMenu(); EditNote(_state.SelectedNote); } + private async Task OnHubDisconnected(Exception arg) + { + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub disconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); + _mainWidget.lblConnectionStatus.Text = "Disconnected"; + await Task.Yield(); + } + + private async Task OnHubReconnected(string arg) + { + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName }); + _mainWidget.lblConnectionStatus.Text = "Connected"; + await Task.Yield(); + } + + private async Task OnHubReconnecting(Exception arg) + { + // ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Reconnecting Hub", Type = "SignalR Client Events", Source = _settings.MachineName }); + _mainWidget.lblConnectionStatus.Text = "Reconnecting"; + await Task.Yield(); + } + private void OnOverlayButtonClicked(object sender, EventArgs e) { _state.CurrentOverlayId = ((ImageButton)sender).Id; _mainWidget.ClearSelection(); ((ImageButton)sender).Border = new SolidBrush(Color.Red); - ((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + ((ImageButton)sender).BorderThickness = new Thickness(2); _state.InsertMode = InsertMode.Overlay; } + private void OnTileButtonTouchEntered(object sender, EventArgs e) + { + var mouseState = Mouse.GetState().Position; + mouseState.X += 10; + mouseState.Y += 10; + _lblOverlayName.Visible = true; + _lblOverlayName.Text = ((ImageButton)sender).Id; + _desktop.ShowContextMenu(_lblOverlayName, mouseState); + } + + private void OnTileButtonTouchLeft(object sender, EventArgs e) + { + _desktop.HideContextMenu(); + _lblOverlayName.Visible = false; + } + + private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) + { + AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); + } + private void OnWallButtonClicked(object sender, EventArgs e) { _state.CurrentWallId = ((ImageButton)sender).Id; _mainWidget.ClearSelection(); ((ImageButton)sender).Border = new SolidBrush(Color.Red); - ((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + ((ImageButton)sender).BorderThickness = new Thickness(2); _state.InsertMode = InsertMode.Wall; } + + private void ResetRenderTarget() + { + _renderTarget = new RenderTarget2D(GraphicsDevice, + GraphicsDevice.Viewport.Width, + GraphicsDevice.Viewport.Height, + false, + SurfaceFormat.Color, + DepthFormat.None, + 0, + RenderTargetUsage.DiscardContents); + } } -} +} \ No newline at end of file diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 91a9f40..c5aa3ac 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -6,7 +6,7 @@ namespace Sledgemapper { public sealed class State { - private static readonly State instance = new State(); + private static readonly State instance = new (); public Tile SelectedTile { get; set; } public Tile HoveredTile { get; set; } diff --git a/Sledgemapper/UI/CampaignWindow.Custom.cs b/Sledgemapper/UI/CampaignWindow.Custom.cs index 6b4b313..0689349 100644 --- a/Sledgemapper/UI/CampaignWindow.Custom.cs +++ b/Sledgemapper/UI/CampaignWindow.Custom.cs @@ -1,4 +1,3 @@ -using Myra.Graphics2D.UI; using Sentry; using System; using TinyMessenger; diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 258770f..2ab6d0d 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -5,7 +5,6 @@ using Myra.Graphics2D.UI; using Myra.Graphics2D.UI.File; using Myra.Graphics2D.UI.Properties; using Newtonsoft.Json; -using Sentry; using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using System; diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index aee9fd5..5bda61e 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -2,7 +2,6 @@ using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; using Sledgemapper.Messages; -using Sledgemapper.Shared.Entities; using System; using System.Threading.Tasks; using TinyMessenger; diff --git a/Sledgemapper/UI/MapWindow.cs b/Sledgemapper/UI/MapWindow.cs index a386270..e94fa07 100644 --- a/Sledgemapper/UI/MapWindow.cs +++ b/Sledgemapper/UI/MapWindow.cs @@ -1,7 +1,4 @@ /* Generated by MyraPad at 02/09/2021 16:26:04 */ -using Myra.Graphics2D.UI; -using Sentry; -using System; namespace Sledgemapper.UI { diff --git a/Sledgemapper/UI/NoteList.Custom.cs b/Sledgemapper/UI/NoteList.Custom.cs index 919cc33..2905ea3 100644 --- a/Sledgemapper/UI/NoteList.Custom.cs +++ b/Sledgemapper/UI/NoteList.Custom.cs @@ -1,7 +1,6 @@ /* Generated by MyraPad at 01/12/2020 11:46:54 */ using System.Linq; using Myra.Graphics2D.TextureAtlases; -using Myra.Graphics2D.UI; using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; using TinyMessenger; @@ -22,7 +21,7 @@ namespace Sledgemapper.UI { var note = CommunicationManager.SessionData.Notes.Values.ElementAt(i); var item = new NoteListItem(); - item.LblNoteText.Text = $"{note.ToString()} - {note.Text}"; + item.LblNoteText.Text = $"{note} - {note.Text}"; item.BtnNoteCenter.Image = new TextureRegion(CachedContent.Instance.Location); item.BtnNoteView.Image = new TextureRegion(CachedContent.Instance.Eye); item.BtnNoteCenter.Click += (s, e) => diff --git a/Sledgemapper/UI/PlayerList.Custom.cs b/Sledgemapper/UI/PlayerList.Custom.cs index 8389fea..2c6e72e 100644 --- a/Sledgemapper/UI/PlayerList.Custom.cs +++ b/Sledgemapper/UI/PlayerList.Custom.cs @@ -1,5 +1,5 @@ /* Generated by MyraPad at 28/08/2021 19:49:08 */ -using Myra.Graphics2D.UI; + using System.Threading.Tasks; namespace Sledgemapper.UI From 79edfcc4d3daa4bc1ddd2cf9d2d0412e0681a77e Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Tue, 21 Sep 2021 16:53:04 +0100 Subject: [PATCH 67/81] error message, broken build --- .../Controllers/AuthManagementController.cs | 4 +- .../Handlers/SendDeleteNoteMessage.cs | 2 +- .../Handlers/SendNewOverlayMessage.cs | 2 +- .../Handlers/SendNewWallMessage.cs | 2 +- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 3 +- Sledgemapper.Api/Models/LoginResponse.cs | 9 + .../Models/RegistrationResponse.cs | 9 - .../Notifications/BaseNotification.cs | 5 +- .../Notifications/NewNoteNotification.cs | 2 +- .../Notifications/NewWallNotification.cs | 2 +- Sledgemapper/ExtensionMethods.cs | 15 + ...e.cs => CampaignSelectedMessage - Copy.cs} | 0 Sledgemapper/Messages/ErrorMessage.cs | 12 + Sledgemapper/Sledgemapper.csproj | 5 + Sledgemapper/UI/ErrorWindow.Custom.cs | 17 + Sledgemapper/UI/ErrorWindow.Generated.cs | 42 ++ Sledgemapper/UI/ErrorWindow.cs | 11 + Sledgemapper/UI/ErrorWindow.xmmp | 7 + Sledgemapper/UI/MainWidget.Custom.cs | 559 +++++++++--------- 19 files changed, 396 insertions(+), 312 deletions(-) create mode 100644 Sledgemapper.Api/Models/LoginResponse.cs rename Sledgemapper/Messages/{CampaignSelectedMessage.cs => CampaignSelectedMessage - Copy.cs} (100%) create mode 100644 Sledgemapper/Messages/ErrorMessage.cs create mode 100644 Sledgemapper/UI/ErrorWindow.Custom.cs create mode 100644 Sledgemapper/UI/ErrorWindow.Generated.cs create mode 100644 Sledgemapper/UI/ErrorWindow.cs create mode 100644 Sledgemapper/UI/ErrorWindow.xmmp diff --git a/Sledgemapper.Api/Controllers/AuthManagementController.cs b/Sledgemapper.Api/Controllers/AuthManagementController.cs index 584319a..33b088c 100644 --- a/Sledgemapper.Api/Controllers/AuthManagementController.cs +++ b/Sledgemapper.Api/Controllers/AuthManagementController.cs @@ -3,8 +3,6 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; -using Sledgemapper.Entities; -using Sledgemapper.Models.Users; using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; @@ -12,6 +10,8 @@ using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; +using Sledgemapper.Api.Core.Entities; +using Sledgemapper.Api.Models; namespace Sledgemapper.Api.Controllers { diff --git a/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs index b55e7a0..1c66299 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteNoteMessage.cs @@ -1,6 +1,6 @@ using MediatR; using Microsoft.AspNetCore.SignalR; -using Sledgemapper.Clients; +using Sledgemapper.Shared.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; diff --git a/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs b/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs index 79c7523..782742e 100644 --- a/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewOverlayMessage.cs @@ -2,9 +2,9 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Hubs; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendNewWallMessage.cs b/Sledgemapper.Api/Handlers/SendNewWallMessage.cs index 915b420..0ed117a 100644 --- a/Sledgemapper.Api/Handlers/SendNewWallMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewWallMessage.cs @@ -1,10 +1,10 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index b41343f..847e221 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -4,11 +4,12 @@ using System.Linq; using System.Threading.Tasks; using System.Collections.Concurrent; using Sledgemapper.Shared.Entities; -using Sledgemapper.Clients; using System; using Sledgemapper.Api.Infrastructure.Data; using Microsoft.AspNetCore.Authorization; +using Sledgemapper.Api.Core.Entities; using Sledgemapper.Api.Models; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Hubs { diff --git a/Sledgemapper.Api/Models/LoginResponse.cs b/Sledgemapper.Api/Models/LoginResponse.cs new file mode 100644 index 0000000..03d7fd5 --- /dev/null +++ b/Sledgemapper.Api/Models/LoginResponse.cs @@ -0,0 +1,9 @@ +namespace Sledgemapper.Api.Models +{ + public class LoginResponse : AuthResult + { + public string Username { get; set; } + public string Initials { get; set; } + public string Id { get; internal set; } + } +} \ No newline at end of file diff --git a/Sledgemapper.Api/Models/RegistrationResponse.cs b/Sledgemapper.Api/Models/RegistrationResponse.cs index 88b6b69..6f9a61f 100644 --- a/Sledgemapper.Api/Models/RegistrationResponse.cs +++ b/Sledgemapper.Api/Models/RegistrationResponse.cs @@ -1,16 +1,7 @@ -using Sledgemapper.Models.Users; - namespace Sledgemapper.Api.Models { public class RegistrationResponse : AuthResult { } - - public class LoginResponse : AuthResult - { - public string Username { get; set; } - public string Initials { get; set; } - public string Id { get; internal set; } - } } \ No newline at end of file diff --git a/Sledgemapper.Api/Notifications/BaseNotification.cs b/Sledgemapper.Api/Notifications/BaseNotification.cs index a3e440c..c475fae 100644 --- a/Sledgemapper.Api/Notifications/BaseNotification.cs +++ b/Sledgemapper.Api/Notifications/BaseNotification.cs @@ -1,5 +1,6 @@ using MediatR; using System; +using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Notifications { @@ -8,9 +9,9 @@ namespace Sledgemapper.Api.Notifications public double Timestamp { get; private set; } public string UserId { get; private set; } public int SessionId { get; set; } - public Models.Session Session { get; set; } + public Session Session { get; set; } - public BaseNotification(Models.Session session, string userId) + public BaseNotification(Session session, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); Session = session; ; diff --git a/Sledgemapper.Api/Notifications/NewNoteNotification.cs b/Sledgemapper.Api/Notifications/NewNoteNotification.cs index e4dc718..54f17d5 100644 --- a/Sledgemapper.Api/Notifications/NewNoteNotification.cs +++ b/Sledgemapper.Api/Notifications/NewNoteNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Note Note { get; private set; } - public NewNoteNotification(Models.Session session, Note note, string userId) : base(session, userId) + public NewNoteNotification(Session session, Note note, string userId) : base(session, userId) { Note = note; } diff --git a/Sledgemapper.Api/Notifications/NewWallNotification.cs b/Sledgemapper.Api/Notifications/NewWallNotification.cs index 24c0bcc..6a18c4e 100644 --- a/Sledgemapper.Api/Notifications/NewWallNotification.cs +++ b/Sledgemapper.Api/Notifications/NewWallNotification.cs @@ -6,7 +6,7 @@ namespace Sledgemapper.Api.Notifications { public Wall Wall { get; private set; } - public NewWallNotification(Models.Session session, Wall wall, string userId) : base(session, userId) + public NewWallNotification(Session session, Wall wall, string userId) : base(session, userId) { Wall = wall; } diff --git a/Sledgemapper/ExtensionMethods.cs b/Sledgemapper/ExtensionMethods.cs index 85d1e81..770120d 100644 --- a/Sledgemapper/ExtensionMethods.cs +++ b/Sledgemapper/ExtensionMethods.cs @@ -3,6 +3,9 @@ using System.IO; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework; using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using AsyncAwaitBestPractices; using Myra.Graphics2D.UI; using Myra.Graphics2D.Brushes; @@ -81,6 +84,18 @@ namespace Sledgemapper window.ShowModal(desktop); } + + public static void Toast(this Widget widget, Desktop desktop, string title) + { + + + Window window = new() + { + Content = widget + }; + window.Show(desktop, new Point(desktop.BoundsFetcher().X-200, desktop.BoundsFetcher().Y - 200)); + Task.Delay(500).ContinueWith(_=>window.Close()).SafeFireAndForget(); + } } //public interface IExtendedWidget diff --git a/Sledgemapper/Messages/CampaignSelectedMessage.cs b/Sledgemapper/Messages/CampaignSelectedMessage - Copy.cs similarity index 100% rename from Sledgemapper/Messages/CampaignSelectedMessage.cs rename to Sledgemapper/Messages/CampaignSelectedMessage - Copy.cs diff --git a/Sledgemapper/Messages/ErrorMessage.cs b/Sledgemapper/Messages/ErrorMessage.cs new file mode 100644 index 0000000..81fe030 --- /dev/null +++ b/Sledgemapper/Messages/ErrorMessage.cs @@ -0,0 +1,12 @@ +namespace Sledgemapper.Messages +{ + public class ErrorMessage : TinyMessenger.TinyMessageBase + { + public string Message { get; } + + public ErrorMessage(object sender, string message) : base(sender) + { + Message = message; + } + } +} \ No newline at end of file diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index be8398e..cfb4b66 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -82,6 +82,11 @@ $([System.String]::Concat(%(Filename), ".cs")) + + + $([System.String]::Copy(%(Filename)).Replace(".Generated",".cs")) + + \ No newline at end of file diff --git a/Sledgemapper/UI/ErrorWindow.Custom.cs b/Sledgemapper/UI/ErrorWindow.Custom.cs new file mode 100644 index 0000000..93036d9 --- /dev/null +++ b/Sledgemapper/UI/ErrorWindow.Custom.cs @@ -0,0 +1,17 @@ + + +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI; + +namespace Sledgemapper.UI +{ + partial class ErrorWindow : VerticalStackPanel + { + + public ErrorWindow(string message) + { + BuildUI(); + TxtError.Text = message; + } + } +} diff --git a/Sledgemapper/UI/ErrorWindow.Generated.cs b/Sledgemapper/UI/ErrorWindow.Generated.cs new file mode 100644 index 0000000..f90037d --- /dev/null +++ b/Sledgemapper/UI/ErrorWindow.Generated.cs @@ -0,0 +1,42 @@ +/* Generated by MyraPad at 21/09/2021 16:37:58 */ +using Myra; +using Myra.Graphics2D; +using Myra.Graphics2D.TextureAtlases; +using Myra.Graphics2D.UI; +using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI.Properties; + +#if MONOGAME || FNA +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +#elif STRIDE +using Stride.Core.Mathematics; +#else +using System.Drawing; +using System.Numerics; +#endif + +namespace Sledgemapper.UI +{ + partial class ErrorWindow: VerticalStackPanel + { + private void BuildUI() + { + TxtError = new Label(); + TxtError.Text = "Error Message"; + TxtError.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; + TxtError.VerticalAlignment = Myra.Graphics2D.UI.VerticalAlignment.Center; + TxtError.Id = "TxtError"; + + + Width = 400; + Height = 40; + Padding = new Thickness(10); + Background = new SolidBrush("#FE3930FF"); + Widgets.Add(TxtError); + } + + + public Label TxtError; + } +} diff --git a/Sledgemapper/UI/ErrorWindow.cs b/Sledgemapper/UI/ErrorWindow.cs new file mode 100644 index 0000000..2fdcb86 --- /dev/null +++ b/Sledgemapper/UI/ErrorWindow.cs @@ -0,0 +1,11 @@ +/* Generated by MyraPad at 21/09/2021 16:37:58 */ +namespace Sledgemapper.UI +{ + public partial class ErrorWindow + { + public ErrorWindow() + { + BuildUI(); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/UI/ErrorWindow.xmmp b/Sledgemapper/UI/ErrorWindow.xmmp new file mode 100644 index 0000000..3ea8486 --- /dev/null +++ b/Sledgemapper/UI/ErrorWindow.xmmp @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 2ab6d0d..1bb33c2 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -1,5 +1,8 @@ +using System; +using System.IO; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Xna.Framework; +using Myra.Graphics2D; using Myra.Graphics2D.Brushes; using Myra.Graphics2D.UI; using Myra.Graphics2D.UI.File; @@ -7,10 +10,7 @@ using Myra.Graphics2D.UI.Properties; using Newtonsoft.Json; using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; -using System; -using System.IO; using TinyMessenger; -using Session = Sledgemapper.Shared.Entities.Session; namespace Sledgemapper.UI { @@ -67,68 +67,22 @@ namespace Sledgemapper.UI Messenger.Subscribe(OnMapOpenedMessage); Messenger.Subscribe(OnCenterOnTileMessage); Messenger.Subscribe(OnCampaignSelectedMessage); + Messenger.Subscribe(OnErrorMessage); } - private void OnCampaignSelectedMessage(CampaignSelectedMessage obj) + private void CenterOnSelectedTile() { - lblCampaign.Text = State.Instance.CampaignName; - - MenuMapNew.Enabled = true; - MenuMapOpen.Enabled = true; - MenuCampaignPlayers.Enabled = true; + CenterOnTile(State.Instance.SelectedTile.X, State.Instance.SelectedTile.Y); } - private void OnCenterOnTileMessage(CenterOnTileMessage obj) + private void CenterOnTile(int x, int y) { - CenterOnTile(obj.X, obj.Y); - } - - private async void OnMapOpenedMessage(MapOpenedMessage obj) - { - lblMap.Text = obj.MapName; - State.Instance.MapId = obj.MapId; - State.Instance.MapName = obj.MapName; - CommunicationManager.SessionData.SessionName = obj.MapName; - CommunicationManager.SessionData.SessionId = obj.MapId; - - MenuConnectSync.Enabled = true; - MenuConnectUpload.Enabled = true; - CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; - CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; - CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; - var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); - if (CommunicationManager.Connection.State != HubConnectionState.Connected) - { - - await CommunicationManager.Connection.StartAsync(); - UpdateConnectionState(CommunicationManager.Connection); - } - var result = await CommunicationManager.Connection?.InvokeAsync("JoinSession", State.Instance.MapId); - - CommunicationManager.SessionData.Overlays = serverMap.Overlays; - CommunicationManager.SessionData.Map = serverMap.Map; - CommunicationManager.SessionData.Walls = serverMap.Walls; - CommunicationManager.SessionData.Notes = serverMap.Notes; - CommunicationManager.SessionData.Lines = serverMap.Lines; - CommunicationManager.SessionData.Rooms = serverMap.Rooms; - } - - private async void OnSignalrConnectionUpdateMessage(SignalrConnectionUpdateMessage obj) - { - lblConnectionStatus.Text = "Connecting"; - await CommunicationManager.Connection.StartAsync(); - UpdateConnectionState(CommunicationManager.Connection); - } - - private void OnLoginSuccesfulMessage(LoginSuccesfulMessage obj) - { - //MenuConnectNew.Enabled = true; - //MenuConnectJoin.Enabled = true; - MenuCampaignOpen.Enabled = true; - MenuCampaingNew.Enabled = true; - - lblUsername.Text = $"{obj.Initials}"; + var center = new Point((Window.ClientBounds.Width + 200) / 2 - State.Instance.TileSize / 2, + Window.ClientBounds.Height / 2 - State.Instance.TileSize / 2); + var dx = center.X - x * State.Instance.TileSize - State.Instance.ViewportCenter.X; + var dy = center.Y - y * State.Instance.TileSize - State.Instance.ViewportCenter.Y; + State.Instance.ViewportCenter = new Vector3(State.Instance.ViewportCenter.X + dx, + State.Instance.ViewportCenter.Y + dy, State.Instance.ViewportCenter.Z); } public void ClearSelection() @@ -140,234 +94,37 @@ namespace Sledgemapper.UI private void ClearSelection(Grid grid) { - foreach (var widget in grid.Widgets) - { - widget.Border = null; - } + foreach (var widget in grid.Widgets) widget.Border = null; } private void ClearSelection(HorizontalStackPanel grid) { - foreach (var widget in grid.Widgets) - { - widget.Border = null; - } + foreach (var widget in grid.Widgets) widget.Border = null; } - private void OnMenuConnectLoginSelected(object sender, EventArgs e) + //TODO Refactor + private void EditNote(Note note) { - Window window = new() - { - Title = "Login" - }; - - var content = new LoginRegisterWindow(CommunicationManager, Messenger); - window.Content = content; - window.ShowModal(Desktop); + State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; + new NoteWindow(CommunicationManager, note).ShowInModalWindow(Desktop, $" Note on {note.X}:{note.Y}"); } - - - - private void UpdateConnectionState(HubConnection connection) + private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) { - switch (connection.State) - { - case HubConnectionState.Connected: - lblConnectionStatus.Text = "Connected"; - break; - case HubConnectionState.Connecting: - lblConnectionStatus.Text = "Connecting"; - break; - case HubConnectionState.Disconnected: - lblConnectionStatus.Text = "Disconnected"; + Messenger.Publish(new ErrorMessage(this,"test")); + State.Instance.InsertMode = InsertMode.NewDelete; - break; - case HubConnectionState.Reconnecting: - lblConnectionStatus.Text = "Reconnecting"; - - break; - } + ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + ((ImageTextButton)sender).BorderThickness = new Thickness(2); } - private void OnMapEntityAdded(object sender, MapEntityAddedEventArgs e) + private void OnBtnToolbarLinClicked(object sender, EventArgs e) { - CommunicationManager.Enqueue(e.MapEntity, TileAction.Add); - } - - private void OnMapEntityDeleted(object sender, MapEntityDeletedEventArgs e) - { - CommunicationManager.Enqueue(e.MapEntity, TileAction.Delete); - } - - private async void OnMenuConnectSyncSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); - CommunicationManager.SessionData.Overlays = serverMap.Overlays; - CommunicationManager.SessionData.Map = serverMap.Map; - CommunicationManager.SessionData.Walls = serverMap.Walls; - CommunicationManager.SessionData.Notes = serverMap.Notes; - CommunicationManager.SessionData.Lines = serverMap.Lines; - CommunicationManager.SessionData.Rooms = serverMap.Rooms; - } - - private async void OnMenuConnectUploadSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - await CommunicationManager.Api.SaveSnapshot(CommunicationManager.SessionData, State.Instance.MapId); - } - - private void OnMenuFileSaveSelected(object sender, EventArgs e) - { - FileDialog dialog = new(FileDialogMode.SaveFile) - { - Filter = "*.map" - }; - - dialog.Closed += (s, a) => - { - if (!dialog.Result) - { - return; - } - - using StreamWriter file = File.CreateText(dialog.FilePath); - JsonSerializer serializer = new(); - serializer.Serialize(file, CommunicationManager.SessionData); - }; - - dialog.ShowModal(Desktop); - } - - private void OnMenuFileLoadSelected(object sender, EventArgs e) - { - var dialog = new FileDialog(FileDialogMode.OpenFile) - { - Filter = "*.map" - }; - - dialog.Closed += (s, a) => - { - if (!dialog.Result) - { - return; - } - using StreamReader file = File.OpenText(dialog.FilePath); - JsonSerializer serializer = new(); - var loadData = (Session)serializer.Deserialize(file, typeof(Session)); - CommunicationManager.SessionData.Map = loadData.Map; - CommunicationManager.SessionData.Overlays = loadData.Overlays; - CommunicationManager.SessionData.Walls = loadData.Walls; - CommunicationManager.SessionData.Rooms = loadData.Rooms; - CommunicationManager.SessionData.Lines = loadData.Lines; - }; - - dialog.ShowModal(Desktop); - } - - private void OneMenuFileSettingsSelected(object sender, EventArgs e) - { - var propertyGrid = new PropertyGrid - { - Object = Settings.Instance, - Width = 350 - }; - - var _windowEditor = new Window - { - Title = "Object Editor", - Content = propertyGrid - }; - _windowEditor.ShowModal(Desktop); - } - - private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) - { - State.Instance.ShowCellNumbers = !State.Instance.ShowCellNumbers; - } - - private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) - { - CenterOnSelectedTile(); - } - - private void OnMenuViewNotesSelected(object sender, EventArgs e) - { - Window window = new() - { - Title = "Notes" - }; - - new NoteList(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Notes"); - } - - private void CenterOnSelectedTile() - { - CenterOnTile(State.Instance.SelectedTile.X, State.Instance.SelectedTile.Y); - } - - private void CenterOnTile(int x, int y) - { - - var center = new Point((Window.ClientBounds.Width + 200) / 2 - State.Instance.TileSize / 2, Window.ClientBounds.Height / 2 - State.Instance.TileSize / 2); - var dx = center.X - x * State.Instance.TileSize - State.Instance.ViewportCenter.X; - var dy = center.Y - y * State.Instance.TileSize - State.Instance.ViewportCenter.Y; - State.Instance.ViewportCenter = new Vector3(State.Instance.ViewportCenter.X + dx, State.Instance.ViewportCenter.Y + dy, State.Instance.ViewportCenter.Z); - } - - private void OnMenuCampaignNew(object sender, EventArgs e) - { - if (sender is MenuItem && !((MenuItem)sender).Enabled) - { - return; - } - - new CampaignWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New campaign"); ; - } - - private async void OnMenuCampaignOpen(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - var content = new CampaignList(CommunicationManager, Messenger); - await content.LoadCampaigns(); - content.ShowInModalWindow(Desktop, "Campaigns"); - } - - private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - var content = new PlayerList(CommunicationManager); - await content.LoadPlayers(); - content.ShowInModalWindow(Desktop, "Players"); - } - - private async void OnMenuMapOpen(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } - - var content = new MapList(CommunicationManager, Messenger); - await content.LoadMaps(); - content.ShowInModalWindow(Desktop, "Maps"); + State.Instance.InsertMode = InsertMode.NewLine; + ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + ((ImageTextButton)sender).BorderThickness = new Thickness(2); } //private async void OnButtonJoinSessionClicked(object sender, EventArgs e) @@ -425,42 +182,258 @@ namespace Sledgemapper.UI State.Instance.InsertMode = InsertMode.NewRoom; ClearSelection(); ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); - + ((ImageTextButton)sender).BorderThickness = new Thickness(2); } - private void OnBtnToolbarLinClicked(object sender, EventArgs e) + private void OnCampaignSelectedMessage(CampaignSelectedMessage obj) { - State.Instance.InsertMode = InsertMode.NewLine; - ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + lblCampaign.Text = State.Instance.CampaignName; + + MenuMapNew.Enabled = true; + MenuMapOpen.Enabled = true; + MenuCampaignPlayers.Enabled = true; } - private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) + private void OnCenterOnTileMessage(CenterOnTileMessage obj) { - State.Instance.InsertMode = InsertMode.NewDelete; + CenterOnTile(obj.X, obj.Y); + } - ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + private void OnErrorMessage(ErrorMessage obj) + { + new ErrorWindow(obj.Message).Toast(Desktop,null); + } + + private void OneMenuFileSettingsSelected(object sender, EventArgs e) + { + var propertyGrid = new PropertyGrid + { + Object = Settings.Instance, + Width = 350 + }; + + var _windowEditor = new Window + { + Title = "Object Editor", + Content = propertyGrid + }; + _windowEditor.ShowModal(Desktop); + } + + private void OnLoginSuccesfulMessage(LoginSuccesfulMessage obj) + { + //MenuConnectNew.Enabled = true; + //MenuConnectJoin.Enabled = true; + MenuCampaignOpen.Enabled = true; + MenuCampaingNew.Enabled = true; + + lblUsername.Text = $"{obj.Initials}"; + } + + private void OnMapEntityAdded(object sender, MapEntityAddedEventArgs e) + { + CommunicationManager.Enqueue(e.MapEntity, TileAction.Add); + } + + private void OnMapEntityDeleted(object sender, MapEntityDeletedEventArgs e) + { + CommunicationManager.Enqueue(e.MapEntity, TileAction.Delete); + } + + private async void OnMapOpenedMessage(MapOpenedMessage obj) + { + lblMap.Text = obj.MapName; + State.Instance.MapId = obj.MapId; + State.Instance.MapName = obj.MapName; + CommunicationManager.SessionData.SessionName = obj.MapName; + CommunicationManager.SessionData.SessionId = obj.MapId; + + MenuConnectSync.Enabled = true; + MenuConnectUpload.Enabled = true; + CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; + CommunicationManager.SessionData.MapEntityAdded += OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted += OnMapEntityDeleted; + var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); + if (CommunicationManager.Connection.State != HubConnectionState.Connected) + { + await CommunicationManager.Connection.StartAsync(); + UpdateConnectionState(CommunicationManager.Connection); + } + + var result = await CommunicationManager.Connection?.InvokeAsync("JoinSession", State.Instance.MapId); + + CommunicationManager.SessionData.Overlays = serverMap.Overlays; + CommunicationManager.SessionData.Map = serverMap.Map; + CommunicationManager.SessionData.Walls = serverMap.Walls; + CommunicationManager.SessionData.Notes = serverMap.Notes; + CommunicationManager.SessionData.Lines = serverMap.Lines; + CommunicationManager.SessionData.Rooms = serverMap.Rooms; + } + + private void OnMenuCampaignNew(object sender, EventArgs e) + { + if (sender is MenuItem && !((MenuItem)sender).Enabled) return; + + new CampaignWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New campaign"); + ; + } + + private async void OnMenuCampaignOpen(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) return; + + var content = new CampaignList(CommunicationManager, Messenger); + await content.LoadCampaigns(); + content.ShowInModalWindow(Desktop, "Campaigns"); + } + + private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) return; + + var content = new PlayerList(CommunicationManager); + await content.LoadPlayers(); + content.ShowInModalWindow(Desktop, "Players"); + } + + private void OnMenuConnectLoginSelected(object sender, EventArgs e) + { + Window window = new() + { + Title = "Login" + }; + + var content = new LoginRegisterWindow(CommunicationManager, Messenger); + window.Content = content; + window.ShowModal(Desktop); + } + + private async void OnMenuConnectSyncSelected(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) return; + + var serverMap = await CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); + CommunicationManager.SessionData.Overlays = serverMap.Overlays; + CommunicationManager.SessionData.Map = serverMap.Map; + CommunicationManager.SessionData.Walls = serverMap.Walls; + CommunicationManager.SessionData.Notes = serverMap.Notes; + CommunicationManager.SessionData.Lines = serverMap.Lines; + CommunicationManager.SessionData.Rooms = serverMap.Rooms; + } + + private async void OnMenuConnectUploadSelected(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) return; + + await CommunicationManager.Api.SaveSnapshot(CommunicationManager.SessionData, State.Instance.MapId); + } + + private void OnMenuFileLoadSelected(object sender, EventArgs e) + { + var dialog = new FileDialog(FileDialogMode.OpenFile) + { + Filter = "*.map" + }; + + dialog.Closed += (s, a) => + { + if (!dialog.Result) return; + using var file = File.OpenText(dialog.FilePath); + JsonSerializer serializer = new(); + var loadData = (Session)serializer.Deserialize(file, typeof(Session)); + CommunicationManager.SessionData.Map = loadData.Map; + CommunicationManager.SessionData.Overlays = loadData.Overlays; + CommunicationManager.SessionData.Walls = loadData.Walls; + CommunicationManager.SessionData.Rooms = loadData.Rooms; + CommunicationManager.SessionData.Lines = loadData.Lines; + }; + + dialog.ShowModal(Desktop); + } + + private void OnMenuFileSaveSelected(object sender, EventArgs e) + { + FileDialog dialog = new(FileDialogMode.SaveFile) + { + Filter = "*.map" + }; + + dialog.Closed += (s, a) => + { + if (!dialog.Result) return; + + using var file = File.CreateText(dialog.FilePath); + JsonSerializer serializer = new(); + serializer.Serialize(file, CommunicationManager.SessionData); + }; + + dialog.ShowModal(Desktop); } private void OnMenuMapNew(object sender, EventArgs e) { - if (sender is MenuItem && !((MenuItem)sender).Enabled) - { - return; - } + if (sender is MenuItem && !((MenuItem)sender).Enabled) return; new MapWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New map"); } - //TODO Refactor - private void EditNote(Note note) + private async void OnMenuMapOpen(object sender, EventArgs e) { - State.Instance.SelectedNote = new Note { X = note.X, Y = note.Y, Text = note.Text }; - new NoteWindow(CommunicationManager, note).ShowInModalWindow(Desktop, $" Note on {note.X}:{note.Y}"); + if (!((MenuItem)sender).Enabled) return; + + var content = new MapList(CommunicationManager, Messenger); + await content.LoadMaps(); + content.ShowInModalWindow(Desktop, "Maps"); + } + + private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) + { + CenterOnSelectedTile(); + } + + private void OnMenuViewNotesSelected(object sender, EventArgs e) + { + Window window = new() + { + Title = "Notes" + }; + + new NoteList(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Notes"); + } + + private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) + { + State.Instance.ShowCellNumbers = !State.Instance.ShowCellNumbers; + } + + private async void OnSignalrConnectionUpdateMessage(SignalrConnectionUpdateMessage obj) + { + lblConnectionStatus.Text = "Connecting"; + await CommunicationManager.Connection.StartAsync(); + UpdateConnectionState(CommunicationManager.Connection); + } + + + private void UpdateConnectionState(HubConnection connection) + { + switch (connection.State) + { + case HubConnectionState.Connected: + lblConnectionStatus.Text = "Connected"; + break; + case HubConnectionState.Connecting: + lblConnectionStatus.Text = "Connecting"; + break; + case HubConnectionState.Disconnected: + lblConnectionStatus.Text = "Disconnected"; + + break; + case HubConnectionState.Reconnecting: + lblConnectionStatus.Text = "Reconnecting"; + + break; + } } } } \ No newline at end of file From 333c6c40467a655b9c22cf9f38f8cc6775afd450 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Wed, 22 Sep 2021 16:16:46 +0100 Subject: [PATCH 68/81] stability improvements --- Sledgemapper.Api/Core/Entities/Campaign.cs | 1 - .../Handlers/GetMapSnapshotCommandHandler.cs | 6 +- .../Handlers/NewCampaignCommandHandler.cs | 7 +- .../Handlers/NewSnapshotCommandHandler.cs | 7 +- .../Handlers/SendDeleteOverlayMessage.cs | 2 +- .../Handlers/SendDeleteTileMessage.cs | 2 +- .../Handlers/SendDeleteWallMessage.cs | 2 +- .../Handlers/SendNewLineMessage.cs | 2 +- .../Handlers/SendNewNoteMessage.cs | 2 +- .../Handlers/SendNewRoomMessage.cs | 2 +- .../Handlers/SendNewTileMessage.cs | 2 +- .../Handlers/StartNewSessionHandler.cs | 1 + Sledgemapper.Api/Helpers/AutoMapperProfile.cs | 4 +- .../Data/SledgemapperDbContext.cs | 2 - .../Notifications/BaseNotification.cs | 2 +- .../Notifications/DeleteNoteNotification.cs | 3 +- .../DeleteOverlayNotification.cs | 4 +- .../Notifications/DeleteTileNotification.cs | 4 +- .../Notifications/DeleteWallNotification.cs | 3 +- .../Notifications/NewLineNotification.cs | 4 +- .../Notifications/NewNoteNotification.cs | 1 + .../Notifications/NewOverlayNotification.cs | 3 +- .../Notifications/NewRoomNotification.cs | 3 +- .../Notifications/NewSessionNotification.cs | 4 +- .../Notifications/NewTileNotification.cs | 4 +- .../Notifications/NewWallNotification.cs | 1 + Sledgemapper.Api/Startup.cs | 5 +- .../AuthenticatedHttpClientHandler.cs | 38 ++++++ Sledgemapper/ChannelsQueue.cs | 12 +- Sledgemapper/CommunicationManager.cs | 120 ++++++++++++------ Sledgemapper/ExtensionMethods.cs | 119 ++++++++--------- Sledgemapper/IMapApi.cs | 2 +- Sledgemapper/Sledgemapper.cs | 5 +- Sledgemapper/UI/CampaignList.Custom.cs | 29 +++-- Sledgemapper/UI/MainWidget.Custom.cs | 31 ++--- Sledgemapper/UI/MapList.Custom.cs | 11 +- Sledgemapper/UI/PlayerList.Custom.cs | 10 +- 37 files changed, 286 insertions(+), 174 deletions(-) create mode 100644 Sledgemapper/AuthenticatedHttpClientHandler.cs diff --git a/Sledgemapper.Api/Core/Entities/Campaign.cs b/Sledgemapper.Api/Core/Entities/Campaign.cs index 7c9b049..04a18de 100644 --- a/Sledgemapper.Api/Core/Entities/Campaign.cs +++ b/Sledgemapper.Api/Core/Entities/Campaign.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Models; -using Sledgemapper.Entities; namespace Sledgemapper.Api.Core.Entities { diff --git a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs index 887635d..e304fa0 100644 --- a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs @@ -7,6 +7,8 @@ using System.Threading.Tasks; using System.Linq; using Sledgemapper.Api.Models; using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Core.Entities; +using Session = Sledgemapper.Shared.Entities.Session; namespace Sledgemapper.Api.Handlers { @@ -104,8 +106,8 @@ namespace Sledgemapper.Api.Handlers Timestamp = mapUpdates.Max(mapSession => mapSession.Timestamp), Object = JsonSerializer.Serialize(mapSession) }; - await _dbcontext.Snapshots.AddAsync(newSnapshot); - await _dbcontext.SaveChangesAsync(); + await _dbcontext.Snapshots.AddAsync(newSnapshot, cancellationToken); + await _dbcontext.SaveChangesAsync(cancellationToken); } return mapSession; } diff --git a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs index f0bbddb..0c61334 100644 --- a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs @@ -4,6 +4,7 @@ using Sledgemapper.Api.Infrastructure.Data; using System; using System.Threading; using System.Threading.Tasks; +using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api.Handlers { @@ -22,18 +23,18 @@ namespace Sledgemapper.Api.Handlers { try { - var user = await _dbcontext.Users.FindAsync(notification.UserId); + var user = await _dbcontext.Users.FindAsync(notification.UserId, cancellationToken); _dbcontext.Attach(user); var campaign = new Core.Entities.Campaign { CampaignName = notification.CampaignName, OwnerId = user.Id, - InvitedUsers = new System.Collections.Generic.List { user } + InvitedUsers = new System.Collections.Generic.List { user } }; _dbcontext.Campaigns.Add(campaign); - await _dbcontext.SaveChangesAsync(); + await _dbcontext.SaveChangesAsync(cancellationToken); return true; } catch (Exception ex) diff --git a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs index a264f00..941fbb6 100644 --- a/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewSnapshotCommandHandler.cs @@ -6,6 +6,7 @@ using System.Threading; using System.Threading.Tasks; using System.Linq; using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api.Handlers { @@ -21,15 +22,15 @@ namespace Sledgemapper.Api.Handlers var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); - var newSnapshot = new Models.Snapshot + var newSnapshot = new Snapshot { SessionId = session.SessionId, Timestamp = notification.Timestamp, Object = JsonSerializer.Serialize(notification.Session) }; - await _dbcontext.Snapshots.AddAsync(newSnapshot); - await _dbcontext.SaveChangesAsync(); + await _dbcontext.Snapshots.AddAsync(newSnapshot, cancellationToken); + await _dbcontext.SaveChangesAsync(cancellationToken); return true; } diff --git a/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs index ab492c4..35b07aa 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteOverlayMessage.cs @@ -2,9 +2,9 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Hubs; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs index 215f830..78f07ee 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteTileMessage.cs @@ -2,9 +2,9 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Hubs; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs b/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs index 853a0bc..99f4e2a 100644 --- a/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs +++ b/Sledgemapper.Api/Handlers/SendDeleteWallMessage.cs @@ -1,10 +1,10 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendNewLineMessage.cs b/Sledgemapper.Api/Handlers/SendNewLineMessage.cs index 6af54b6..1447351 100644 --- a/Sledgemapper.Api/Handlers/SendNewLineMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewLineMessage.cs @@ -1,10 +1,10 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs b/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs index ef95487..88eafe6 100644 --- a/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewNoteMessage.cs @@ -1,10 +1,10 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs b/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs index d3f441f..e8dcd7e 100644 --- a/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewRoomMessage.cs @@ -1,10 +1,10 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/SendNewTileMessage.cs b/Sledgemapper.Api/Handlers/SendNewTileMessage.cs index 0e3511b..268bc99 100644 --- a/Sledgemapper.Api/Handlers/SendNewTileMessage.cs +++ b/Sledgemapper.Api/Handlers/SendNewTileMessage.cs @@ -1,10 +1,10 @@ using MediatR; using Microsoft.AspNetCore.SignalR; using Sledgemapper.Api.Notifications; -using Sledgemapper.Clients; using System.Threading; using System.Threading.Tasks; using Sledgemapper.Api.Hubs; +using Sledgemapper.Shared.Clients; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs index e84ba3e..a9d687e 100644 --- a/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs +++ b/Sledgemapper.Api/Handlers/StartNewSessionHandler.cs @@ -5,6 +5,7 @@ using Sledgemapper.Api.Models; using System; using System.Threading; using System.Threading.Tasks; +using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api.Handlers { diff --git a/Sledgemapper.Api/Helpers/AutoMapperProfile.cs b/Sledgemapper.Api/Helpers/AutoMapperProfile.cs index e6fd486..1fc8edb 100644 --- a/Sledgemapper.Api/Helpers/AutoMapperProfile.cs +++ b/Sledgemapper.Api/Helpers/AutoMapperProfile.cs @@ -1,6 +1,6 @@ using AutoMapper; -using Sledgemapper.Entities; -using Sledgemapper.Models.Users; +using Sledgemapper.Api.Core.Entities; +using Sledgemapper.Api.Models; namespace Sledgemapper.Api.Helpers { diff --git a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs index 75da3f8..265d446 100644 --- a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs +++ b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs @@ -1,8 +1,6 @@ using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Sledgemapper.Api.Core.Entities; -using Sledgemapper.Api.Models; -using Sledgemapper.Entities; namespace Sledgemapper.Api.Infrastructure.Data { diff --git a/Sledgemapper.Api/Notifications/BaseNotification.cs b/Sledgemapper.Api/Notifications/BaseNotification.cs index c475fae..7786bdf 100644 --- a/Sledgemapper.Api/Notifications/BaseNotification.cs +++ b/Sledgemapper.Api/Notifications/BaseNotification.cs @@ -1,6 +1,6 @@ using MediatR; using System; -using Sledgemapper.Shared.Entities; +using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api.Notifications { diff --git a/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs b/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs index f245e51..3b5fb5f 100644 --- a/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteNoteNotification.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; namespace Sledgemapper.Api.Notifications { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Notifications { public Note Note { get; private set; } - public DeleteNoteNotification(Models.Session session, Note note, string userId) : base(session, userId) + public DeleteNoteNotification(Session session, Note note, string userId) : base(session, userId) { Note = note; } diff --git a/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs b/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs index cf62af4..d246d94 100644 --- a/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteOverlayNotification.cs @@ -1,4 +1,6 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; + namespace Sledgemapper.Api.Notifications { @@ -6,7 +8,7 @@ namespace Sledgemapper.Api.Notifications { public Overlay Overlay { get; private set; } - public DeleteOverlayNotification(Models.Session session, Overlay overlay, string userId) : base(session, userId) + public DeleteOverlayNotification(Session session, Overlay overlay, string userId) : base(session, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Notifications/DeleteTileNotification.cs b/Sledgemapper.Api/Notifications/DeleteTileNotification.cs index c4bcbe3..7533f9c 100644 --- a/Sledgemapper.Api/Notifications/DeleteTileNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteTileNotification.cs @@ -1,4 +1,6 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; + namespace Sledgemapper.Api.Notifications { @@ -6,7 +8,7 @@ namespace Sledgemapper.Api.Notifications { public Tile Tile { get; private set; } - public DeleteTileNotification(Models.Session session, Tile tile, string userId) : base(session, userId) + public DeleteTileNotification(Session session, Tile tile, string userId) : base(session, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Notifications/DeleteWallNotification.cs b/Sledgemapper.Api/Notifications/DeleteWallNotification.cs index 3159fef..ff87cef 100644 --- a/Sledgemapper.Api/Notifications/DeleteWallNotification.cs +++ b/Sledgemapper.Api/Notifications/DeleteWallNotification.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; namespace Sledgemapper.Api.Notifications { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Notifications { public Wall Wall { get; private set; } - public DeleteWallNotification(Models.Session session, Wall wall, string userId) : base(session, userId) + public DeleteWallNotification(Session session, Wall wall, string userId) : base(session, userId) { Wall = wall; } diff --git a/Sledgemapper.Api/Notifications/NewLineNotification.cs b/Sledgemapper.Api/Notifications/NewLineNotification.cs index b49f610..881d866 100644 --- a/Sledgemapper.Api/Notifications/NewLineNotification.cs +++ b/Sledgemapper.Api/Notifications/NewLineNotification.cs @@ -1,4 +1,6 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; + namespace Sledgemapper.Api.Notifications { @@ -6,7 +8,7 @@ namespace Sledgemapper.Api.Notifications { public Line Line { get; private set; } - public NewLineNotification(Models.Session session, Line line, string userId) : base(session, userId) + public NewLineNotification(Session session, Line line, string userId) : base(session, userId) { Line = line; } diff --git a/Sledgemapper.Api/Notifications/NewNoteNotification.cs b/Sledgemapper.Api/Notifications/NewNoteNotification.cs index 54f17d5..301d2f4 100644 --- a/Sledgemapper.Api/Notifications/NewNoteNotification.cs +++ b/Sledgemapper.Api/Notifications/NewNoteNotification.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; namespace Sledgemapper.Api.Notifications { diff --git a/Sledgemapper.Api/Notifications/NewOverlayNotification.cs b/Sledgemapper.Api/Notifications/NewOverlayNotification.cs index 8111687..34faef4 100644 --- a/Sledgemapper.Api/Notifications/NewOverlayNotification.cs +++ b/Sledgemapper.Api/Notifications/NewOverlayNotification.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; namespace Sledgemapper.Api.Notifications { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Notifications { public Overlay Overlay { get; private set; } - public NewOverlayNotification(Models.Session session, Overlay overlay, string userId) : base(session, userId) + public NewOverlayNotification(Session session, Overlay overlay, string userId) : base(session, userId) { Overlay = overlay; } diff --git a/Sledgemapper.Api/Notifications/NewRoomNotification.cs b/Sledgemapper.Api/Notifications/NewRoomNotification.cs index 97f26bf..36fb484 100644 --- a/Sledgemapper.Api/Notifications/NewRoomNotification.cs +++ b/Sledgemapper.Api/Notifications/NewRoomNotification.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; namespace Sledgemapper.Api.Notifications { @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Notifications { public Room Room { get; private set; } - public NewRoomNotification(Models.Session session, Room room, string userId) : base(session, userId) + public NewRoomNotification(Session session, Room room, string userId) : base(session, userId) { Room = room; } diff --git a/Sledgemapper.Api/Notifications/NewSessionNotification.cs b/Sledgemapper.Api/Notifications/NewSessionNotification.cs index 9f3598b..864c923 100644 --- a/Sledgemapper.Api/Notifications/NewSessionNotification.cs +++ b/Sledgemapper.Api/Notifications/NewSessionNotification.cs @@ -1,8 +1,10 @@ +using Sledgemapper.Api.Core.Entities; + namespace Sledgemapper.Api.Notifications { public class NewSessionNotification : BaseNotification { - public NewSessionNotification(string sessionName, string userId) : base(new Models.Session { SessionName = sessionName }, userId) + public NewSessionNotification(string sessionName, string userId) : base(new Session { SessionName = sessionName }, userId) { } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Notifications/NewTileNotification.cs b/Sledgemapper.Api/Notifications/NewTileNotification.cs index b8d3cd1..909d677 100644 --- a/Sledgemapper.Api/Notifications/NewTileNotification.cs +++ b/Sledgemapper.Api/Notifications/NewTileNotification.cs @@ -1,4 +1,6 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; + namespace Sledgemapper.Api.Notifications { @@ -6,7 +8,7 @@ namespace Sledgemapper.Api.Notifications { public Tile Tile { get; private set; } - public NewTileNotification(Models.Session session, Tile tile, string userId) : base(session, userId) + public NewTileNotification(Session session, Tile tile, string userId) : base(session, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Notifications/NewWallNotification.cs b/Sledgemapper.Api/Notifications/NewWallNotification.cs index 6a18c4e..be092cb 100644 --- a/Sledgemapper.Api/Notifications/NewWallNotification.cs +++ b/Sledgemapper.Api/Notifications/NewWallNotification.cs @@ -1,4 +1,5 @@ using Sledgemapper.Shared.Entities; +using Session = Sledgemapper.Api.Core.Entities.Session; namespace Sledgemapper.Api.Notifications { diff --git a/Sledgemapper.Api/Startup.cs b/Sledgemapper.Api/Startup.cs index eda24ad..84bf827 100644 --- a/Sledgemapper.Api/Startup.cs +++ b/Sledgemapper.Api/Startup.cs @@ -12,6 +12,7 @@ using System.Text; using Sledgemapper.Api.Hubs; using Microsoft.OpenApi.Models; using Newtonsoft.Json; +using Sledgemapper.Api.Core.Entities; namespace Sledgemapper.Api { @@ -69,7 +70,7 @@ namespace Sledgemapper.Api }; }); - services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false) + services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false) .AddEntityFrameworkStores(); services.AddSwaggerGen(c => @@ -95,7 +96,7 @@ namespace Sledgemapper.Api Id = "Bearer" } }, - new string[] { } + Array.Empty() } }); }); diff --git a/Sledgemapper/AuthenticatedHttpClientHandler.cs b/Sledgemapper/AuthenticatedHttpClientHandler.cs new file mode 100644 index 0000000..4f691bf --- /dev/null +++ b/Sledgemapper/AuthenticatedHttpClientHandler.cs @@ -0,0 +1,38 @@ +using System; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; + +namespace Sledgemapper +{ + internal class AuthenticatedHttpClientHandler : HttpClientHandler + { + private readonly Func> _getToken; + + public AuthenticatedHttpClientHandler(Func> getToken) + { + _getToken = getToken ?? throw new ArgumentNullException(nameof(getToken)); + + //if (myConfigurationService.VerifySslCertificate == false) + //{ + ServerCertificateCustomValidationCallback = + (message, certificate, chain, sslPolicyErrors) => true; + //} + } + + protected override async Task SendAsync(HttpRequestMessage request, + CancellationToken cancellationToken) + { + // See if the request has an authorize header + var auth = request.Headers.Authorization; + if (auth != null) + { + var token = await _getToken().ConfigureAwait(false); + request.Headers.Authorization = new AuthenticationHeaderValue(auth.Scheme, token); + } + + return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); + } + } +} \ No newline at end of file diff --git a/Sledgemapper/ChannelsQueue.cs b/Sledgemapper/ChannelsQueue.cs index f072d7b..c5fbb25 100644 --- a/Sledgemapper/ChannelsQueue.cs +++ b/Sledgemapper/ChannelsQueue.cs @@ -2,15 +2,19 @@ using System; using System.Threading.Tasks; using System.Threading.Channels; using Sentry; +using Sledgemapper.Messages; +using TinyMessenger; namespace Sledgemapper { public class ChannelsQueue { + public TinyMessengerHub Messenger { get; } private readonly ChannelWriter _writer; - public ChannelsQueue() + public ChannelsQueue(TinyMessenger.TinyMessengerHub messenger) { + Messenger = messenger; var channel = Channel.CreateUnbounded(new UnboundedChannelOptions() { SingleReader = true }); var reader = channel.Reader; _writer = channel.Writer; @@ -19,8 +23,8 @@ namespace Sledgemapper { while (await reader.WaitToReadAsync()) { - // Fast loop around available jobs - while (reader.TryRead(out var job)) + // Fast loop around available jobs + while (reader.TryRead(out var job)) { try { @@ -29,7 +33,7 @@ namespace Sledgemapper catch (Exception ex) { SentrySdk.CaptureException(ex); - throw; + messenger.Publish(new ErrorMessage(this, ex.Message)); } } } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index e139545..5ad52d6 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -1,32 +1,50 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; -using System.Net.Http.Headers; -using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.SignalR.Client; using Polly; +using Polly.Retry; using Refit; +using SharpFontInternal; +using Sledgemapper.Messages; using Sledgemapper.Shared.Entities; +using TinyMessenger; namespace Sledgemapper { public class CommunicationManager { - private readonly ChannelsQueue _queue = new(); + public TinyMessengerHub Messenger { get; } + public IMapApi Api { get; } + public HubConnection Connection { get; } + + private readonly ChannelsQueue _queue; + private readonly AsyncRetryPolicy _retryPolicy; public readonly Session SessionData; private AuthenticateResponse _authenticateResponse; - public CommunicationManager(Session sessionData) + public CommunicationManager(Session sessionData, TinyMessengerHub messenger) { + Messenger = messenger; + _queue = new ChannelsQueue(Messenger); #if DEBUG var baseAddress = "http://localhost:5000"; #else var baseAddress = "http://hub.michelescandura.com:5000"; #endif + _retryPolicy = Policy + .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) + .Or() + .RetryAsync(3); + + //.RetryAsync(Polly.RetrySyntax., async (exception, retryCount) => await Task.Delay(500)) + + SessionData = sessionData; Connection = new HubConnectionBuilder() .WithAutomaticReconnect() @@ -132,9 +150,6 @@ namespace Sledgemapper Connection.On("Ping", ping => { SessionData.Pings.TryAdd(Guid.NewGuid(), ping); }); } - public IMapApi Api { get; } - public HubConnection Connection { get; } - public void Enqueue(BaseMapEntity entity, TileAction action) { switch (action) @@ -209,30 +224,81 @@ namespace Sledgemapper { await Policy .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) + .Or() .RetryForeverAsync() //.RetryAsync(Polly.RetrySyntax., async (exception, retryCount) => await Task.Delay(500)) .ExecuteAsync(async () => await call().ConfigureAwait(false)) .ConfigureAwait(false); } - private Task GetToken() { - return Task.FromResult(_authenticateResponse.Token); + return Task.FromResult(_authenticateResponse?.Token ?? ""); + } + + public async Task> GetCampaigns() + { + try + { + return await _retryPolicy.ExecuteAsync(Api.GetCampaigns); + } + catch (Exception e) + { + Sentry.SentrySdk.CaptureException(e); + Messenger.Publish(new ErrorMessage(this, "Error loading campaigns")); + } + + return null; + } + + public async Task> GetMaps(Guid campaignId) + { + try + { + return await _retryPolicy.ExecuteAsync(() => Api.GetMaps(campaignId)); + } + catch (Exception e) + { + Sentry.SentrySdk.CaptureException(e); + Messenger.Publish(new ErrorMessage(this, "Error loading maps")); + } + + return null; + } + + public async Task> GetPlayers(Guid campaignId) + { + try + { + return await _retryPolicy.ExecuteAsync(() => Api.GetPlayers(campaignId)); + } + catch (Exception e) + { + Sentry.SentrySdk.CaptureException(e); + Messenger.Publish(new ErrorMessage(this, "Error loading players")); + } + + return null; } public async Task Login(AuthenticateModel authenticateModel) { - _authenticateResponse = await Api.Authenticate(authenticateModel).ConfigureAwait(false); + _authenticateResponse = await Policy + .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) + .Or() + .RetryAsync(3) + //.RetryAsync(Polly.RetrySyntax., async (exception, retryCount) => await Task.Delay(500)) + .ExecuteAsync(async () => await Api.Authenticate(authenticateModel)) + .ConfigureAwait(false); + + //_authenticateResponse = await Api.Authenticate(authenticateModel).ConfigureAwait(false); return _authenticateResponse; } internal async Task Ping(Tile location) { if (Connection is { State: HubConnectionState.Connected }) - { await Connection.InvokeAsync("Ping", SessionData.SessionName, location); - } } public async Task Register(RegisterModel registerModel) @@ -241,34 +307,4 @@ namespace Sledgemapper return result; } } - - internal class AuthenticatedHttpClientHandler : HttpClientHandler - { - private readonly Func> _getToken; - - public AuthenticatedHttpClientHandler(Func> getToken) - { - _getToken = getToken ?? throw new ArgumentNullException(nameof(getToken)); - - //if (myConfigurationService.VerifySslCertificate == false) - //{ - ServerCertificateCustomValidationCallback = - (message, certificate, chain, sslPolicyErrors) => true; - //} - } - - protected override async Task SendAsync(HttpRequestMessage request, - CancellationToken cancellationToken) - { - // See if the request has an authorize header - var auth = request.Headers.Authorization; - if (auth != null) - { - var token = await _getToken().ConfigureAwait(false); - request.Headers.Authorization = new AuthenticationHeaderValue(auth.Scheme, token); - } - - return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); - } - } } \ No newline at end of file diff --git a/Sledgemapper/ExtensionMethods.cs b/Sledgemapper/ExtensionMethods.cs index 770120d..1effa91 100644 --- a/Sledgemapper/ExtensionMethods.cs +++ b/Sledgemapper/ExtensionMethods.cs @@ -1,77 +1,60 @@ +using System; using System.Collections.Generic; using System.IO; -using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework; using System.Linq; -using System.Threading; using System.Threading.Tasks; using AsyncAwaitBestPractices; -using Myra.Graphics2D.UI; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; using Myra.Graphics2D.Brushes; +using Myra.Graphics2D.UI; namespace Sledgemapper { public static class ExtensionMethods { - public static Dictionary LoadContentFolder(this ContentManager contentManager, string contentFolder) - { - DirectoryInfo dir = new(contentManager.RootDirectory + "/" + contentFolder); - if (!dir.Exists) - throw new DirectoryNotFoundException(); - Dictionary result = new(); - - FileInfo[] files = dir.GetFiles("*.*"); - foreach (FileInfo file in files.Where(f => f.Extension != ".ttf" && f.Extension != ".otf")) - { - result.Add(file.Name.Split('.')[0], contentManager.Load(contentFolder + "/" + file.Name.Split('.')[0])); - } - return result; - } - - public static IEnumerable Split(this string str, int chunkSize) => Enumerable.Range(0, str.Length / chunkSize) - .Select(i => str.Substring(i * chunkSize, chunkSize)); - public static Point AbsPoint(this Point point) { - return new Point(System.Math.Abs(point.X), System.Math.Abs(point.Y)); - } - - public static (Window Window, C Content) GetParentContentInWindow(this Widget widget) where C : Widget - { - Container container = widget.Parent; - while (!(container is Window)) - { - container = container.Parent; - } - - var localWindow = (Window)container; - var localContent = localWindow.Content as C; - return (localWindow, localContent); + return new Point(Math.Abs(point.X), Math.Abs(point.Y)); } public static Window GetContainingWindow(this Widget widget) { var container = widget.Parent; - while (!(container is Window) || container is null) - { - container = container.Parent; - } + while (container is not Window or null) container = container.Parent; return container as Window; } - public static bool ValidateTextbox(this TextBox textBox) + public static (Window Window, TC Content) GetParentContentInWindow(this Widget widget) where TC : Widget { - var valid = !string.IsNullOrWhiteSpace(textBox.Text); - if (!valid) + var container = widget.Parent; + while (container is not Window) container = container.Parent; + + var localWindow = (Window)container; + var localContent = localWindow.Content as TC; + return (localWindow, localContent); + } + + public static Dictionary LoadContentFolder(this ContentManager contentManager, string contentFolder) + { + DirectoryInfo dir = new(contentManager.RootDirectory + "/" + contentFolder); + if (!dir.Exists) { - textBox.Background = new SolidBrush(Color.Red); + throw new DirectoryNotFoundException(); } - else + + Dictionary result = new(); + + var files = dir.GetFiles("*.*"); + + foreach (var file in files.Where(f => f.Extension != ".ttf" && f.Extension != ".otf")) { - textBox.Background = new SolidBrush(new Color(51, 51, 51)); ; + result.Add(file.Name.Split('.')[0], contentManager.Load(contentFolder + "/" + file.Name.Split('.')[0])); + } - return valid; + + return result; } public static void ShowInModalWindow(this Widget widget, Desktop desktop, string title) @@ -79,29 +62,35 @@ namespace Sledgemapper Window window = new() { Title = title, - Content=widget + Content = widget }; window.ShowModal(desktop); } - public static void Toast(this Widget widget, Desktop desktop, string title) + public static IEnumerable Split(this string str, int chunkSize) { - - - Window window = new() - { - Content = widget - }; - window.Show(desktop, new Point(desktop.BoundsFetcher().X-200, desktop.BoundsFetcher().Y - 200)); - Task.Delay(500).ContinueWith(_=>window.Close()).SafeFireAndForget(); + return Enumerable.Range(0, str.Length / chunkSize) + .Select(i => str.Substring(i * chunkSize, chunkSize)); + } + + public static void Toast(this Widget widget, Desktop desktop) + { + widget.Left = desktop.BoundsFetcher().Center.X - widget.Width.Value / 2; + widget.Top = desktop.BoundsFetcher().Height - 90; + widget.ZIndex = 1000; + desktop.Widgets.Add(widget); + + Task.Delay(2000).ContinueWith(_ => { desktop.Widgets.Remove(widget); } + ).SafeFireAndForget(); + } + + public static bool ValidateTextbox(this TextBox textBox) + { + var valid = !string.IsNullOrWhiteSpace(textBox.Text); + textBox.Background = valid ? new SolidBrush(new Color(51, 51, 51)) : new SolidBrush(Color.Red); + + return valid; } } - - //public interface IExtendedWidget - //{ - // void ShowInModalWindow(this Widget widget, string title) - - //} -} - +} \ No newline at end of file diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 3af30f6..2c66283 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -39,7 +39,7 @@ namespace Sledgemapper Task> GetCampaigns(); [Get("/campaign/{campaignName}/players")] - Task> GetPlayers(string campaignName); + Task> GetPlayers(Guid campaignName); [Get("/campaign/{campaignName}/maps")] diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index c91d8f6..1d960db 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -60,13 +60,12 @@ namespace Sledgemapper _sessionData = new Session(); IsFixedTimeStep = true; TargetElapsedTime = TimeSpan.FromSeconds(1d / 30d); - _communicationManager = new CommunicationManager(_sessionData); + _messenger = new TinyMessengerHub(); + _communicationManager = new CommunicationManager(_sessionData,_messenger); _communicationManager.Connection.Reconnected += OnHubReconnected; _communicationManager.Connection.Reconnecting += OnHubReconnecting; _communicationManager.Connection.Closed += OnHubDisconnected; _state = State.Instance; - - _messenger = new TinyMessengerHub(); } protected override void Draw(GameTime gameTime) diff --git a/Sledgemapper/UI/CampaignList.Custom.cs b/Sledgemapper/UI/CampaignList.Custom.cs index a100d54..ed6e1dd 100644 --- a/Sledgemapper/UI/CampaignList.Custom.cs +++ b/Sledgemapper/UI/CampaignList.Custom.cs @@ -44,7 +44,7 @@ namespace Sledgemapper.UI private void OnMenuCampaignNew(object sender, EventArgs e) { - if (sender is MenuItem && !((MenuItem)sender).Enabled) + if (sender is MenuItem { Enabled: false }) { return; } @@ -61,24 +61,37 @@ namespace Sledgemapper.UI var list = item.Parent as Grid; for (var i = 0; i < list.ChildrenCount; i++) { - var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; - currentItem.Background = new SolidBrush("#D9D9D9FF"); + if (list.GetChild(i) is HorizontalStackPanel currentItem) currentItem.Background = new SolidBrush("#D9D9D9FF"); } item.Background = new SolidBrush(Settings.Instance.OverlayTintColor); _campaignSelected = true; } - public async Task LoadCampaigns() + public async Task LoadCampaigns() { - var campaigns = await CommunicationManager.Api.GetCampaigns(); + var campaigns = await CommunicationManager.GetCampaigns(); + + if (campaigns is null) + { + + return false; + } + foreach (var campaign in campaigns) { - var item = new ListItem(); - item.ItemName.Text = campaign.Name; - item.Tag = campaign.Id; + var item = new ListItem + { + ItemName = + { + Text = campaign.Name + }, + Tag = campaign.Id + }; item.TouchUp += OnCampaignSelected; StackCampaignsList.AddChild(item); } + + return true; } } } \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 1bb33c2..361e63b 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -111,7 +111,7 @@ namespace Sledgemapper.UI private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) { - Messenger.Publish(new ErrorMessage(this,"test")); + Messenger.Publish(new ErrorMessage(this, "test")); State.Instance.InsertMode = InsertMode.NewDelete; ClearSelection(); @@ -201,7 +201,7 @@ namespace Sledgemapper.UI private void OnErrorMessage(ErrorMessage obj) { - new ErrorWindow(obj.Message).Toast(Desktop,null); + new ErrorWindow(obj.Message).Toast(Desktop); } private void OneMenuFileSettingsSelected(object sender, EventArgs e) @@ -273,7 +273,7 @@ namespace Sledgemapper.UI private void OnMenuCampaignNew(object sender, EventArgs e) { - if (sender is MenuItem && !((MenuItem)sender).Enabled) return; + if (sender is MenuItem { Enabled: false }) return; new CampaignWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New campaign"); ; @@ -284,8 +284,10 @@ namespace Sledgemapper.UI if (!((MenuItem)sender).Enabled) return; var content = new CampaignList(CommunicationManager, Messenger); - await content.LoadCampaigns(); - content.ShowInModalWindow(Desktop, "Campaigns"); + if (await content.LoadCampaigns()) + { + content.ShowInModalWindow(Desktop, "Campaigns"); + } } private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) @@ -293,8 +295,10 @@ namespace Sledgemapper.UI if (!((MenuItem)sender).Enabled) return; var content = new PlayerList(CommunicationManager); - await content.LoadPlayers(); - content.ShowInModalWindow(Desktop, "Players"); + if (await content.LoadPlayers()) + { + content.ShowInModalWindow(Desktop, "Players"); + } } private void OnMenuConnectLoginSelected(object sender, EventArgs e) @@ -373,7 +377,7 @@ namespace Sledgemapper.UI private void OnMenuMapNew(object sender, EventArgs e) { - if (sender is MenuItem && !((MenuItem)sender).Enabled) return; + if (sender is MenuItem { Enabled: false }) return; new MapWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "New map"); } @@ -383,8 +387,10 @@ namespace Sledgemapper.UI if (!((MenuItem)sender).Enabled) return; var content = new MapList(CommunicationManager, Messenger); - await content.LoadMaps(); - content.ShowInModalWindow(Desktop, "Maps"); + if (await content.LoadMaps()) + { + content.ShowInModalWindow(Desktop, "Maps"); + } } private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) @@ -394,11 +400,6 @@ namespace Sledgemapper.UI private void OnMenuViewNotesSelected(object sender, EventArgs e) { - Window window = new() - { - Title = "Notes" - }; - new NoteList(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Notes"); } diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index 5bda61e..58cd13c 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -39,9 +39,14 @@ namespace Sledgemapper.UI this.GetContainingWindow().Close(); } - public async Task LoadMaps() + public async Task LoadMaps() { - var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignId); + var campaigns = await CommunicationManager.GetMaps(State.Instance.CampaignId); + if (campaigns is null) + { + return false; + } + foreach (var campaign in campaigns) { var item = new ListItem(); @@ -50,6 +55,8 @@ namespace Sledgemapper.UI item.TouchUp += OnMapSelected; StackCampaignsList.AddChild(item); } + + return true; } private void OnMapSelected(object sender, EventArgs e) diff --git a/Sledgemapper/UI/PlayerList.Custom.cs b/Sledgemapper/UI/PlayerList.Custom.cs index 2c6e72e..84c238b 100644 --- a/Sledgemapper/UI/PlayerList.Custom.cs +++ b/Sledgemapper/UI/PlayerList.Custom.cs @@ -19,15 +19,21 @@ namespace Sledgemapper.UI }; } - public async Task LoadPlayers() + public async Task LoadPlayers() { - var players = await CommunicationManager.Api.GetPlayers(State.Instance.CampaignName); + var players = await CommunicationManager.GetPlayers(State.Instance.CampaignId); + if (players is null) + { + return false; + } foreach (var player in players) { var item = new ListItem(); item.ItemName.Text = player.UserName; StackCampaignsList.AddChild(item); } + + return true; } private void ShowAddPLayerWindow() From 3d0450efff55e26a38e397f836678440af1b3819 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 12:29:40 +0100 Subject: [PATCH 69/81] credentials storage, bug fixing --- .../Commands/GetCampaignPlayersCommand.cs | 8 +++++ .../Controllers/CampaignController.cs | 2 +- .../GetCampaignPlayersCommandHandler.cs | 4 +-- .../Handlers/GetMapSnapshotCommandHandler.cs | 8 +---- Sledgemapper/CacheSettings.cs | 30 ++++++++++++++++ Sledgemapper/CommunicationManager.cs | 27 +++++++++++++- Sledgemapper/Program.cs | 36 ++++++++++++++++++- Sledgemapper/Sledgemapper.cs | 2 +- Sledgemapper/Sledgemapper.csproj | 11 +++++- Sledgemapper/UI/MainWidget.Custom.cs | 17 +++++---- Sledgemapper/UI/MapList.Custom.cs | 12 ++++--- Sledgemapper/appsettings.json | 3 ++ 12 files changed, 134 insertions(+), 26 deletions(-) create mode 100644 Sledgemapper/CacheSettings.cs create mode 100644 Sledgemapper/appsettings.json diff --git a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs index 01fa504..0b733f7 100644 --- a/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs +++ b/Sledgemapper.Api/Commands/GetCampaignPlayersCommand.cs @@ -10,6 +10,7 @@ namespace Sledgemapper.Api.Commands public double Timestamp { get; private set; } public string CampaignName { get; private set; } public string UserId { get; private set; } + public Guid CampaignId { get; private set; } public GetCampaignPlayersCommand(string campaingName, string userId) { @@ -17,5 +18,12 @@ namespace Sledgemapper.Api.Commands CampaignName = campaingName; UserId = userId; } + + public GetCampaignPlayersCommand(Guid campaignId, string userId) + { + Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + CampaignId = campaignId; + UserId = userId; + } } } \ No newline at end of file diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index 6c0313f..a09e5af 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -57,7 +57,7 @@ namespace Sledgemapper.Api.Controllers [HttpGet] [Route("{campaignName}/players")] - public async Task> GetPlayers(string campaignName) + public async Task> GetPlayers(Guid campaignName) { var result = await _mediator.Send(new GetCampaignPlayersCommand(campaignName, UserId)); return result; diff --git a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs index 7b606c5..23c801d 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs @@ -29,9 +29,9 @@ namespace Sledgemapper.Api.Handlers var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignName == command.CampaignName && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.CampaignId && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); - var players = campaign.InvitedUsers.Select(user => new Player { Initials = user.Initials, UserName = user.UserName }).ToList(); + var players = campaign.InvitedUsers.Select(user => new Player { Initials = user.Initials, UserName = user.UserName , UserId = new Guid(user.Id)}).ToList(); return players; } catch (Exception ex) diff --git a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs index e304fa0..14ad035 100644 --- a/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetMapSnapshotCommandHandler.cs @@ -5,7 +5,6 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using System.Linq; -using Sledgemapper.Api.Models; using Sledgemapper.Api.Commands; using Sledgemapper.Api.Core.Entities; using Session = Sledgemapper.Shared.Entities.Session; @@ -20,11 +19,10 @@ namespace Sledgemapper.Api.Handlers public async Task Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) { - Snapshot snapshot; double timestamp; Session mapSession; var session = _dbcontext.Sessions.First(m => m.SessionId == notification.MapId); - snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId); + var snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId); if (snapshot is null) { @@ -68,10 +66,6 @@ namespace Sledgemapper.Api.Handlers var room = JsonSerializer.Deserialize(mapUpdate.Object); mapSession.NewRoom(room); break; - - - - } } diff --git a/Sledgemapper/CacheSettings.cs b/Sledgemapper/CacheSettings.cs new file mode 100644 index 0000000..3dd06a5 --- /dev/null +++ b/Sledgemapper/CacheSettings.cs @@ -0,0 +1,30 @@ +using Microsoft.Identity.Client.Extensions.Msal; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sledgemapper +{ + public static class CacheSettings + { + // computing the root directory is not very simple on Linux and Mac, so a helper is provided + private static readonly string s_cacheFilePath = + Path.Combine(MsalCacheHelper.UserRootDirectory, "sledgemapper.scandysoft.cache"); + + public static readonly string CacheFileName = Path.GetFileName(s_cacheFilePath); + public static readonly string CacheDir = Path.GetDirectoryName(s_cacheFilePath); + + + public static readonly string KeyChainServiceName = "Scandysoft.Sledgemapper"; + public static readonly string KeyChainAccountName = "MSALCache"; + + public static readonly string LinuxKeyRingSchema = "com.scandysoft.sledgemappertokencache"; + public static readonly string LinuxKeyRingCollection = MsalCacheHelper.LinuxKeyRingDefaultCollection; + public static readonly string LinuxKeyRingLabel = "Sledgemapper API token."; + public static readonly KeyValuePair LinuxKeyRingAttr1 = new KeyValuePair("Version", "1"); + public static readonly KeyValuePair LinuxKeyRingAttr2 = new KeyValuePair("ProductGroup", "MyApps"); + } +} diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 5ad52d6..ec61b0e 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; +using System.Text; +using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.SignalR.Client; using Polly; @@ -37,6 +39,8 @@ namespace Sledgemapper var baseAddress = "http://hub.michelescandura.com:5000"; #endif + CheckLogin(); + _retryPolicy = Policy .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) .Or() @@ -292,13 +296,19 @@ namespace Sledgemapper .ConfigureAwait(false); //_authenticateResponse = await Api.Authenticate(authenticateModel).ConfigureAwait(false); + var data = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(_authenticateResponse)); + + Program.helper.SaveUnencryptedTokenCache(JsonSerializer.SerializeToUtf8Bytes(_authenticateResponse)); + + + return _authenticateResponse; } internal async Task Ping(Tile location) { if (Connection is { State: HubConnectionState.Connected }) - await Connection.InvokeAsync("Ping", SessionData.SessionName, location); + await Connection.InvokeAsync("Ping", SessionData.SessionId, location); } public async Task Register(RegisterModel registerModel) @@ -306,5 +316,20 @@ namespace Sledgemapper var result = await Api.Register(registerModel).ConfigureAwait(false); return result; } + + public void CheckLogin() + { + var data = Program.helper.LoadUnencryptedTokenCache(); + if (data != null && data.Any()) + { + try + { + _authenticateResponse = JsonSerializer.Deserialize(Encoding.UTF8.GetString(data)); + Messenger.Publish(new LoginSuccesfulMessage(this) { UserName = _authenticateResponse.Username, Initials = _authenticateResponse.Initials }); + } + catch + { } + } + } } } \ No newline at end of file diff --git a/Sledgemapper/Program.cs b/Sledgemapper/Program.cs index 7eb1839..58eada1 100644 --- a/Sledgemapper/Program.cs +++ b/Sledgemapper/Program.cs @@ -1,13 +1,47 @@ using System; +using System.Text; +using Microsoft.Extensions.Configuration; +using Microsoft.Identity.Client; +using Microsoft.Identity.Client.Extensions.Msal; namespace Sledgemapper { public static class Program { + private static IConfiguration configuration; + public static MsalCacheHelper helper; + [STAThread] static void Main() { - using(Sentry.SentrySdk.Init("https://973ac1606651454ba7a19f642d0a9bc1@glitchtip.michelescandura.com/1")) + var builder = new ConfigurationBuilder() + .SetBasePath(System.IO.Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json"); + + configuration = builder.Build(); + + // Loading PublicClientApplicationOptions from the values set on appsettings.json + + + + // Building StorageCreationProperties + var storageProperties = + new StorageCreationPropertiesBuilder(CacheSettings.CacheFileName, CacheSettings.CacheDir) + .WithLinuxKeyring( + CacheSettings.LinuxKeyRingSchema, + CacheSettings.LinuxKeyRingCollection, + CacheSettings.LinuxKeyRingLabel, + CacheSettings.LinuxKeyRingAttr1, + CacheSettings.LinuxKeyRingAttr2) + .WithMacKeyChain( + CacheSettings.KeyChainServiceName, + CacheSettings.KeyChainAccountName) + .Build(); + // storage = Storage.Create(storageProperties); + + helper = MsalCacheHelper.CreateAsync(storageProperties).Result; + + using (Sentry.SentrySdk.Init("https://973ac1606651454ba7a19f642d0a9bc1@glitchtip.michelescandura.com/1")) using (var game = new Sledgemapper()) { Sentry.SentrySdk.CaptureEvent(new Sentry.SentryEvent() { Message = "App starting" }); diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 1d960db..efec31b 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -139,7 +139,7 @@ namespace Sledgemapper _mainWidget = new MainWidget(_communicationManager, _messenger, Window); - + _communicationManager.CheckLogin(); _wallsContent = Content.LoadContentFolder("walls"); diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index cfb4b66..7cbb026 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -42,7 +42,11 @@ --> - + + + + + @@ -87,6 +91,11 @@ $([System.String]::Copy(%(Filename)).Replace(".Generated",".cs")) + + + PreserveNewest + + \ No newline at end of file diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 361e63b..d8d1ebb 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -25,10 +25,18 @@ namespace Sledgemapper.UI public MainWidget(CommunicationManager communicationManager, TinyMessengerHub messenger, GameWindow window) { BuildUI(); - CommunicationManager = communicationManager; Window = window; Messenger = messenger; + + Messenger.Subscribe(OnLoginSuccesfulMessage); + Messenger.Subscribe(OnSignalrConnectionUpdateMessage); + Messenger.Subscribe(OnMapOpenedMessage); + Messenger.Subscribe(OnCenterOnTileMessage); + Messenger.Subscribe(OnCampaignSelectedMessage); + Messenger.Subscribe(OnErrorMessage); + + MenuConnectLogin.Selected += OnMenuConnectLoginSelected; MenuConnectSync.Selected += OnMenuConnectSyncSelected; MenuFileLoad.Selected += OnMenuFileLoadSelected; @@ -62,12 +70,7 @@ namespace Sledgemapper.UI BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; - Messenger.Subscribe(OnLoginSuccesfulMessage); - Messenger.Subscribe(OnSignalrConnectionUpdateMessage); - Messenger.Subscribe(OnMapOpenedMessage); - Messenger.Subscribe(OnCenterOnTileMessage); - Messenger.Subscribe(OnCampaignSelectedMessage); - Messenger.Subscribe(OnErrorMessage); + } private void CenterOnSelectedTile() diff --git a/Sledgemapper/UI/MapList.Custom.cs b/Sledgemapper/UI/MapList.Custom.cs index 58cd13c..e779da8 100644 --- a/Sledgemapper/UI/MapList.Custom.cs +++ b/Sledgemapper/UI/MapList.Custom.cs @@ -32,11 +32,13 @@ namespace Sledgemapper.UI private void BtnLoadCampaign_Click(object sender, EventArgs e) { - State.Instance.MapName = _selectedMap; - State.Instance.MapId = _selectedMapId; - // var map = CommunicationManager.Api.GetMap(State.Instance.CampaignId, State.Instance.MapId); - Messenger.Publish(new MapOpenedMessage(this, _selectedMap, _selectedMapId)); - this.GetContainingWindow().Close(); + if (!string.IsNullOrWhiteSpace(_selectedMap) && _selectedMapId!=Guid.Empty) + { + State.Instance.MapName = _selectedMap; + State.Instance.MapId = _selectedMapId; + Messenger.Publish(new MapOpenedMessage(this, _selectedMap, _selectedMapId)); + this.GetContainingWindow().Close(); + } } public async Task LoadMaps() diff --git a/Sledgemapper/appsettings.json b/Sledgemapper/appsettings.json new file mode 100644 index 0000000..544b7b4 --- /dev/null +++ b/Sledgemapper/appsettings.json @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file From 5b7ad4f2ff29efae303cae9fe8ea4ad296467a17 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 12:47:48 +0100 Subject: [PATCH 70/81] fix note bugs --- Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs | 2 +- Sledgemapper.Shared/Entities/Note.cs | 14 +++++++++++++- Sledgemapper/Sledgemapper.cs | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs index 6390422..8be5287 100644 --- a/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewNoteCommandHandler.cs @@ -18,7 +18,7 @@ namespace Sledgemapper.Api.Handlers { await CheckAuthorization(command); var jsonString = JsonSerializer.Serialize(command.Note); - var session = await SaveLog(command, "N", "W", jsonString, cancellationToken); + var session = await SaveLog(command, "N", "N", jsonString, cancellationToken); await Mediator.Publish(new NewNoteNotification(session, command.Note, command.UserId), cancellationToken); return true; } diff --git a/Sledgemapper.Shared/Entities/Note.cs b/Sledgemapper.Shared/Entities/Note.cs index 6dac5bb..a89257f 100644 --- a/Sledgemapper.Shared/Entities/Note.cs +++ b/Sledgemapper.Shared/Entities/Note.cs @@ -1,9 +1,21 @@ -namespace Sledgemapper.Shared.Entities +namespace Sledgemapper.Shared.Entities { public class Note :BaseMapEntity { + public Note(){} + public Note(Note n) + { + X=n.X; + Y=n.Y; + Text=n.Text; + ID = n.ID; + Rotation = n.Rotation; + Timestamp = n.Timestamp; + + } + public string Text { get; set; } } diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index efec31b..fe3864d 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -255,7 +255,7 @@ namespace Sledgemapper else { _sessionData.Notes.TryGetValue(_state.SelectedNote.ToString(), out var n); - _state.SelectedNote = n; + _state.SelectedNote = new Note(n); var viewNoteButton = new TextButton { Text = "View Note", Width = 80, Height = 20, Padding = new Thickness(2), From 6c167ed4de3855b424b3e03d3ec94f904e90fc88 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 14:34:33 +0100 Subject: [PATCH 71/81] db issues for prod --- .../Data/SledgemapperDbContext.cs | 12 +- Sledgemapper.Api/Startup.cs | 156 +++++++++--------- Sledgemapper.Api/appsettings.Development.json | 20 +-- Sledgemapper.Api/appsettings.Production.json | 20 +-- Sledgemapper/CommunicationManager.cs | 5 +- Sledgemapper/UI/LoginRegisterWindow.Custom.cs | 2 +- 6 files changed, 105 insertions(+), 110 deletions(-) diff --git a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs index 265d446..195b192 100644 --- a/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs +++ b/Sledgemapper.Api/Infrastructure/Data/SledgemapperDbContext.cs @@ -37,19 +37,19 @@ namespace Sledgemapper.Api.Infrastructure.Data // options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName); // }); - optionsBuilder.UseSqlite("Filename=Sledgemapper.db").UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); + optionsBuilder.UseSqlite("Filename=db/sledgemapper.db").UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); base.OnConfiguring(optionsBuilder); } protected override void OnModelCreating(ModelBuilder modelBuilder) { - modelBuilder.Entity().HasOne(e=>e.Owner); - -modelBuilder.Entity().HasMany(e=>e.InvitedUsers).WithMany(e=>e.Campaigns); + modelBuilder.Entity().HasOne(e => e.Owner); - modelBuilder.Entity() //Use your application user class here - .ToTable( "Users" ); //Set the table name here + modelBuilder.Entity().HasMany(e => e.InvitedUsers).WithMany(e => e.Campaigns); + + modelBuilder.Entity() //Use your application user class here + .ToTable("Users"); //Set the table name here // // Map table names // modelBuilder.Entity().ToTable("MapLog", "dbo"); diff --git a/Sledgemapper.Api/Startup.cs b/Sledgemapper.Api/Startup.cs index 84bf827..0928fd3 100644 --- a/Sledgemapper.Api/Startup.cs +++ b/Sledgemapper.Api/Startup.cs @@ -1,30 +1,57 @@ using System; +using System.Text; +using MediatR; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Sledgemapper.Api.Infrastructure.Data; -using Microsoft.EntityFrameworkCore; -using MediatR; using Microsoft.IdentityModel.Tokens; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using System.Text; -using Sledgemapper.Api.Hubs; using Microsoft.OpenApi.Models; using Newtonsoft.Json; using Sledgemapper.Api.Core.Entities; +using Sledgemapper.Api.Hubs; +using Sledgemapper.Api.Infrastructure.Data; namespace Sledgemapper.Api { public class Startup { private readonly IWebHostEnvironment _env; - public IConfiguration Configuration { get; } + public Startup(IWebHostEnvironment env, IConfiguration configuration) { Configuration = configuration; _env = env; + } + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, SledgemapperDbContext dataContext) + { + // Enable middleware to serve generated Swagger as a JSON endpoint. + app.UseSwagger(); + + // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), + // specifying the Swagger JSON endpoint. + app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); + + dataContext.Database.Migrate(); + + app.UseRouting(); + + app.UseCors(x => x + .AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader()); + app.UseAuthentication(); + app.UseAuthorization(); + + app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); + + app.UseEndpoints(endpoints => { endpoints.MapHub("/sledgemapperhub"); }); } // This method gets called by the runtime. Use this method to add services to the container. @@ -34,14 +61,16 @@ namespace Sledgemapper.Api services.AddControllers().AddNewtonsoftJson(o => { o.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; - }); ; - - + }); services.AddSignalR(); services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddMediatR(typeof(Startup)); - services.AddDbContext(options => { options.UseSqlite("Data Source=db/sledgemapper.db"); options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); }); + services.AddDbContext(options => + { + options.UseSqlite("Data Source=db/sledgemapper.db"); + options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); + }); services.Configure(Configuration.GetSection("JwtConfig")); @@ -49,29 +78,30 @@ namespace Sledgemapper.Api // within this section we are configuring the authentication and setting the default scheme services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(jwt => - { - var key = Encoding.ASCII.GetBytes(Configuration["JwtConfig:Secret"]); - - jwt.SaveToken = true; - jwt.TokenValidationParameters = new TokenValidationParameters { - ValidateIssuerSigningKey = true, // this will validate the 3rd part of the jwt token using the secret that we added in the appsettings and verify we have generated the jwt token - IssuerSigningKey = new SymmetricSecurityKey(key), // Add the secret key to our Jwt encryption - ValidateIssuer = false, - ValidateAudience = false, - RequireExpirationTime = false, - ValidateLifetime = true - }; - }); + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(jwt => + { + var key = Encoding.ASCII.GetBytes(Configuration["JwtConfig:Secret"]); + + jwt.SaveToken = true; + jwt.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuerSigningKey = + true, // this will validate the 3rd part of the jwt token using the secret that we added in the appsettings and verify we have generated the jwt token + IssuerSigningKey = new SymmetricSecurityKey(key), // Add the secret key to our Jwt encryption + ValidateIssuer = false, + ValidateAudience = false, + RequireExpirationTime = false, + ValidateLifetime = true + }; + }); services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false) - .AddEntityFrameworkStores(); + .AddEntityFrameworkStores(); services.AddSwaggerGen(c => { @@ -87,57 +117,21 @@ namespace Sledgemapper.Api Name = "Authorization", Type = SecuritySchemeType.ApiKey }); - c.AddSecurityRequirement(new OpenApiSecurityRequirement { - { new OpenApiSecurityScheme - { - Reference = new OpenApiReference - { - Type = ReferenceType.SecurityScheme, - Id = "Bearer" - } - }, - Array.Empty() + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + Array.Empty() } - }); - }); - - - - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env, SledgemapperDbContext dataContext) - { - // Enable middleware to serve generated Swagger as a JSON endpoint. - app.UseSwagger(); - - // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), - // specifying the Swagger JSON endpoint. - app.UseSwaggerUI(c => - { - c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); - }); - - dataContext.Database.Migrate(); - - app.UseRouting(); - - app.UseCors(x => x - .AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader()); - app.UseAuthentication(); - app.UseAuthorization(); - - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - - app.UseEndpoints(endpoints => - { - endpoints.MapHub("/sledgemapperhub"); + }); }); } } -} +} \ No newline at end of file diff --git a/Sledgemapper.Api/appsettings.Development.json b/Sledgemapper.Api/appsettings.Development.json index 996eb73..f66b5e3 100644 --- a/Sledgemapper.Api/appsettings.Development.json +++ b/Sledgemapper.Api/appsettings.Development.json @@ -1,12 +1,12 @@ -{ - "ConnectionStrings": { - "WebApiDatabase": "Data Source=db/LocalDatabase.db" - }, - "Logging": { - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" +{ + "ConnectionStrings": { + "WebApiDatabase": "Data Source=db/sledgemapper.db" + }, + "Logging": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } } - } } diff --git a/Sledgemapper.Api/appsettings.Production.json b/Sledgemapper.Api/appsettings.Production.json index 996eb73..f66b5e3 100644 --- a/Sledgemapper.Api/appsettings.Production.json +++ b/Sledgemapper.Api/appsettings.Production.json @@ -1,12 +1,12 @@ -{ - "ConnectionStrings": { - "WebApiDatabase": "Data Source=db/LocalDatabase.db" - }, - "Logging": { - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" +{ + "ConnectionStrings": { + "WebApiDatabase": "Data Source=db/sledgemapper.db" + }, + "Logging": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } } - } } diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index ec61b0e..36adb4b 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -35,11 +35,12 @@ namespace Sledgemapper _queue = new ChannelsQueue(Messenger); #if DEBUG var baseAddress = "http://localhost:5000"; + baseAddress = "http://hub.michelescandura.com:5001"; #else - var baseAddress = "http://hub.michelescandura.com:5000"; + var baseAddress = "http://hub.michelescandura.com:5001"; #endif - CheckLogin(); + CheckLogin(); _retryPolicy = Policy .Handle(ex => ex.StatusCode == HttpStatusCode.RequestTimeout) diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index 73dee30..de7d04e 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -21,7 +21,7 @@ namespace Sledgemapper.UI _messenger = messenger; #if DEBUG - TxtEmail.Text = "michele.scandura@outlook.com"; + TxtEmail.Text = "michele.scandura@sloutlook.com"; TxtPassword.Text = "slePharland!79"; #endif From a4eb4d2b8843a805653533550c377d83106256d9 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 15:43:27 +0100 Subject: [PATCH 72/81] smal fixes --- Sledgemapper.Api/Commands/DeleteTileCommand.cs | 3 ++- Sledgemapper.Api/Controllers/MapController.cs | 7 +++++++ Sledgemapper.Api/Hubs/SledgemapperHub.cs | 16 ++++++++++++++-- Sledgemapper/CommunicationManager.cs | 2 +- Sledgemapper/UI/LoginRegisterWindow.Custom.cs | 2 +- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Sledgemapper.Api/Commands/DeleteTileCommand.cs b/Sledgemapper.Api/Commands/DeleteTileCommand.cs index e55f1dc..bfc2d31 100644 --- a/Sledgemapper.Api/Commands/DeleteTileCommand.cs +++ b/Sledgemapper.Api/Commands/DeleteTileCommand.cs @@ -1,3 +1,4 @@ +using System; using Sledgemapper.Shared.Entities; namespace Sledgemapper.Api.Commands @@ -6,7 +7,7 @@ namespace Sledgemapper.Api.Commands { public Tile Tile { get; private set; } - public DeleteTileCommand(string sessionName, Tile tile, string userId) : base(sessionName, userId) + public DeleteTileCommand(Guid campaign, Guid mapName, Tile tile, string userId) : base(campaign, mapName, userId) { Tile = tile; } diff --git a/Sledgemapper.Api/Controllers/MapController.cs b/Sledgemapper.Api/Controllers/MapController.cs index 683f84a..361a9a8 100644 --- a/Sledgemapper.Api/Controllers/MapController.cs +++ b/Sledgemapper.Api/Controllers/MapController.cs @@ -40,6 +40,13 @@ namespace Sledgemapper.Api.Controllers await _mediator.Send(new DeleteNoteCommand(campaign, mapName, note, UserId)); } + + [HttpDelete("tile")] + public async Task Delete(Guid campaign, Guid mapName, [FromBody] Tile tile) + { + await _mediator.Send(new DeleteTileCommand(campaign, mapName, tile, UserId)); + } + [HttpGet] public async Task Get(Guid campaign, Guid mapName) { diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index 847e221..d2668ce 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -166,9 +166,21 @@ namespace Sledgemapper.Api.Hubs foreach (var userSession in userSessions) { var session = _dbContext.Sessions.FirstOrDefault(m => m.SessionId == userSession.SessionId); + if (session != null) + { + + try + { + await Clients.Group(session.SessionId.ToString()).RemovePlayer(new Player { UserId = userId }); //send remove player + } + catch (Exception e) + { + Console.WriteLine(e); + + } + _dbContext.SessionUsers.Remove(userSession); + } - await Clients.Group(session.SessionName).RemovePlayer(new Player { UserId = userId }); //send remove player - _dbContext.SessionUsers.Remove(userSession); } } await _dbContext.SaveChangesAsync(); diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 36adb4b..52bdd5d 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -35,7 +35,7 @@ namespace Sledgemapper _queue = new ChannelsQueue(Messenger); #if DEBUG var baseAddress = "http://localhost:5000"; - baseAddress = "http://hub.michelescandura.com:5001"; + //baseAddress = "http://hub.michelescandura.com:5001"; #else var baseAddress = "http://hub.michelescandura.com:5001"; #endif diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index de7d04e..73dee30 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -21,7 +21,7 @@ namespace Sledgemapper.UI _messenger = messenger; #if DEBUG - TxtEmail.Text = "michele.scandura@sloutlook.com"; + TxtEmail.Text = "michele.scandura@outlook.com"; TxtPassword.Text = "slePharland!79"; #endif From 4d591319054c361533c042e14b0bfb485e8931e1 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 15:44:56 +0100 Subject: [PATCH 73/81] another small fix --- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index d2668ce..9484d99 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -171,12 +171,11 @@ namespace Sledgemapper.Api.Hubs try { - await Clients.Group(session.SessionId.ToString()).RemovePlayer(new Player { UserId = userId }); //send remove player + await Clients.GroupExcept(session.SessionId.ToString(), new List { Context.ConnectionId }).RemovePlayer(new Player { UserId = userId }); //send remove player } catch (Exception e) { Console.WriteLine(e); - } _dbContext.SessionUsers.Remove(userSession); } From d7e718b032d71ec091bb918db6d245c169688bc8 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 16:07:33 +0100 Subject: [PATCH 74/81] migration scripts --- Assets/migration scripts.txt | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Assets/migration scripts.txt diff --git a/Assets/migration scripts.txt b/Assets/migration scripts.txt new file mode 100644 index 0000000..771a499 --- /dev/null +++ b/Assets/migration scripts.txt @@ -0,0 +1,52 @@ + + +select * from MapLog where SessionId=2 --Ruined Maze D0823E78-15E4-45EE-A396-0A2E891961DC + +select * from MapLog where SessionId=4 --test 6351309A-EFA5-4721-A4BE-AC63995ADB7F + +select * from MapLog where SessionId=5 --daniele 7EB1D6F5-12E2-4A8F-98CD-3351D40F1D26 + +select * from MapLog where SessionId=6 --Psyruque BED7EF13-5823-427A-8C40-8BE94A563638 + + +select * from Sessions +select * from Snapshots +select * from Snapshot where SessionId=2 +select * from Sessions +select * from MapLogs +select * from MapLog +INSERT INTO Snapshots (Object, SessionId, Timestamp) +SELECT Object, "BED7EF13-5823-427A-8C40-8BE94A563638",Timestamp +FROM Snapshot +WHERE SessionId=6 +order by SnapshotId + +INSERT INTO MapLogs (Object, Operation, SessionId, Timestamp, Type, UserId) +SELECT Object, Operation, "6351309A-EFA5-4721-A4BE-AC63995ADB7F", Timestamp, Type, "cd85a137-a5e8-4e4a-81d2-3e1c94ac9470" +FROM MapLog +WHERE SessionId =2 +ORDER BY MapLogId + +INSERT INTO MapLogs (Object, Operation, SessionId, Timestamp, Type, UserId) +SELECT Object, Operation, "D0823E78-15E4-45EE-A396-0A2E891961DC", Timestamp, Type, "cd85a137-a5e8-4e4a-81d2-3e1c94ac9470" +FROM MapLog +WHERE SessionId =4 +ORDER BY MapLogId + +INSERT INTO MapLogs (Object, Operation, SessionId, Timestamp, Type, UserId) +SELECT Object, Operation, "7EB1D6F5-12E2-4A8F-98CD-3351D40F1D26", Timestamp, Type, "cd85a137-a5e8-4e4a-81d2-3e1c94ac9470" +FROM MapLog +WHERE SessionId =5 +ORDER BY MapLogId + +INSERT INTO MapLogs (Object, Operation, SessionId, Timestamp, Type, UserId) +SELECT Object, Operation, "BED7EF13-5823-427A-8C40-8BE94A563638", Timestamp, Type, "cd85a137-a5e8-4e4a-81d2-3e1c94ac9470" +FROM MapLog +WHERE SessionId =6 +ORDER BY MapLogId + +--delete from Snapshots where SessionId="A306DFEE-82A9-4964-942A-1B923B970951" + + +insert into Snapshots ( +select * from Snapshot where SessionId=2 From 4b56986a4808511baf97ab3ae49bf1fc2985688b Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Thu, 23 Sep 2021 16:50:34 +0100 Subject: [PATCH 75/81] removing monogame feed --- nuget.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nuget.config b/nuget.config index 7749f28..cd4f26c 100644 --- a/nuget.config +++ b/nuget.config @@ -2,6 +2,6 @@ - + \ No newline at end of file From 3e1acd26f28042b762b3f4b4a7e67910f9e78ef0 Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 23 Sep 2021 22:15:15 +0100 Subject: [PATCH 76/81] invite player fixes --- .../Commands/InvitePlayerToCampaignCommand.cs | 6 +++--- Sledgemapper.Api/Controllers/CampaignController.cs | 6 +++--- .../InvitePlayerToCampaignCommandHandler.cs | 4 ++-- Sledgemapper/IMapApi.cs | 12 ++++++------ Sledgemapper/UI/LoginRegisterWindow.Custom.cs | 1 + Sledgemapper/UI/MainWidget.Custom.cs | 2 +- Sledgemapper/UI/PlayerList.Custom.cs | 11 ++++++++--- Sledgemapper/UI/PlayerWindow.Custom.cs | 14 ++++++++++---- 8 files changed, 34 insertions(+), 22 deletions(-) diff --git a/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs b/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs index 8ecc338..de5aa7c 100644 --- a/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs +++ b/Sledgemapper.Api/Commands/InvitePlayerToCampaignCommand.cs @@ -6,13 +6,13 @@ namespace Sledgemapper.Api.Commands public class InvitePlayerToCampaignCommand : IRequest { public double Timestamp { get; private set; } - public string CampaignName { get; private set; } + public Guid CampaignId { get; private set; } public string Email { get; private set; } public string UserId { get; private set; } - public InvitePlayerToCampaignCommand(string campaingName, string email, string userId) + public InvitePlayerToCampaignCommand(Guid campaignId, string email, string userId) { Timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); - CampaignName = campaingName; + CampaignId = campaignId; UserId = userId; Email = email; } diff --git a/Sledgemapper.Api/Controllers/CampaignController.cs b/Sledgemapper.Api/Controllers/CampaignController.cs index a09e5af..77a6dc5 100644 --- a/Sledgemapper.Api/Controllers/CampaignController.cs +++ b/Sledgemapper.Api/Controllers/CampaignController.cs @@ -48,10 +48,10 @@ namespace Sledgemapper.Api.Controllers } [HttpPost] - [Route("{campaignName}/players/{email}")] - public async Task Invite(string campaignName, string email) + [Route("{campaignId}/players/{email}")] + public async Task Invite(Guid campaignId, string email) { - var result = await _mediator.Send(new InvitePlayerToCampaignCommand(campaignName, email, UserId)); + var result = await _mediator.Send(new InvitePlayerToCampaignCommand(campaignId, email, UserId)); return result; } diff --git a/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs index c6c6a28..b600ea9 100644 --- a/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs @@ -26,8 +26,8 @@ namespace Sledgemapper.Api.Handlers { var user = await _dbcontext.Users.FindAsync(command.UserId); - var campaign = await _dbcontext.Campaigns.Where(campaign=>campaign.CampaignName==command.CampaignName && campaign.OwnerId==command.UserId).Include(campaign=>campaign.InvitedUsers).FirstAsync(); - var invitedUser = await _dbcontext.Users.FirstOrDefaultAsync(user=>user.Email==command.Email); + var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.CampaignId && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); + var invitedUser = await _dbcontext.Users.FirstOrDefaultAsync(user => user.Email == command.Email); _dbcontext.Attach(invitedUser); _dbcontext.Attach(campaign); campaign.InvitedUsers.Add(invitedUser); diff --git a/Sledgemapper/IMapApi.cs b/Sledgemapper/IMapApi.cs index 2c66283..b831739 100644 --- a/Sledgemapper/IMapApi.cs +++ b/Sledgemapper/IMapApi.cs @@ -42,15 +42,15 @@ namespace Sledgemapper Task> GetPlayers(Guid campaignName); - [Get("/campaign/{campaignName}/maps")] - Task> GetMaps(Guid campaignName); + [Get("/campaign/{campaignId}/maps")] + Task> GetMaps(Guid campaignId); - [Get("/map/{campaignName}/{mapName}")] - Task GetMap(Guid campaignName, Guid mapName); + [Get("/map/{campaignId}/{mapId}")] + Task GetMap(Guid campaignId, Guid mapId); - [Post("/campaign/{campaignName}/players/{email}")] - Task InvitePlayer(string campaignName, string email); + [Post("/campaign/{campaignId}/players/{email}")] + Task InvitePlayer(Guid campaignId, string email); diff --git a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs index 73dee30..f565e68 100644 --- a/Sledgemapper/UI/LoginRegisterWindow.Custom.cs +++ b/Sledgemapper/UI/LoginRegisterWindow.Custom.cs @@ -100,6 +100,7 @@ namespace Sledgemapper.UI _authResponse = await CommunicationManager.Login(new AuthenticateModel { Username = TxtEmail.Text, + Email = TxtEmail.Text, Password = TxtPassword.Text }); successful = true; diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index d8d1ebb..f8379c6 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -297,7 +297,7 @@ namespace Sledgemapper.UI { if (!((MenuItem)sender).Enabled) return; - var content = new PlayerList(CommunicationManager); + var content = new PlayerList(CommunicationManager, Messenger); if (await content.LoadPlayers()) { content.ShowInModalWindow(Desktop, "Players"); diff --git a/Sledgemapper/UI/PlayerList.Custom.cs b/Sledgemapper/UI/PlayerList.Custom.cs index 84c238b..8fcdfd5 100644 --- a/Sledgemapper/UI/PlayerList.Custom.cs +++ b/Sledgemapper/UI/PlayerList.Custom.cs @@ -1,15 +1,20 @@ /* Generated by MyraPad at 28/08/2021 19:49:08 */ using System.Threading.Tasks; +using TinyMessenger; namespace Sledgemapper.UI { public partial class PlayerList { - protected readonly CommunicationManager CommunicationManager; + protected CommunicationManager CommunicationManager { get; } + protected TinyMessengerHub Messenger { get; } - public PlayerList(CommunicationManager communicationManager) + public PlayerList(CommunicationManager communicationManager, TinyMessenger.TinyMessengerHub messenger) { + CommunicationManager = communicationManager; + Messenger = messenger; + BuildUI(); CommunicationManager = communicationManager; BtnInvitePlayer.Click += (s, e) => @@ -38,7 +43,7 @@ namespace Sledgemapper.UI private void ShowAddPLayerWindow() { - new PlayerWindow(CommunicationManager).ShowInModalWindow(Desktop, "Invite player"); + new PlayerWindow(CommunicationManager, Messenger).ShowInModalWindow(Desktop, "Invite player"); } } } \ No newline at end of file diff --git a/Sledgemapper/UI/PlayerWindow.Custom.cs b/Sledgemapper/UI/PlayerWindow.Custom.cs index f314696..a81a12d 100644 --- a/Sledgemapper/UI/PlayerWindow.Custom.cs +++ b/Sledgemapper/UI/PlayerWindow.Custom.cs @@ -1,17 +1,21 @@ /* Generated by MyraPad at 28/08/2021 22:04:11 */ using Myra.Graphics2D.UI; using Sentry; +using Sledgemapper.Messages; using System; +using TinyMessenger; namespace Sledgemapper.UI { public partial class PlayerWindow { - protected readonly CommunicationManager CommunicationManager; + protected CommunicationManager CommunicationManager { get; } + protected TinyMessengerHub Messenger { get; } - public PlayerWindow(CommunicationManager communicationManager) + public PlayerWindow(CommunicationManager communicationManager, TinyMessenger.TinyMessengerHub messenger) { - CommunicationManager = communicationManager; + CommunicationManager = communicationManager; + Messenger = messenger; BuildUI(); BtnNewCampaign.Click += OnButtonInvitePlayerClicked; @@ -29,11 +33,13 @@ namespace Sledgemapper.UI var successful = false; try { - await CommunicationManager.Api.InvitePlayer(State.Instance.CampaignName, localContent.Content.TxtCampaign.Text); + await CommunicationManager.Api.InvitePlayer(State.Instance.CampaignId, localContent.Content.TxtCampaign.Text); } catch (Exception ex) { + Messenger.Publish(new ErrorMessage(this, "Error inviting player")); SentrySdk.CaptureException(ex); + } this.GetContainingWindow().Close(); } From 85e2f699bf31afedb9ac82cc2a389005a805ea4c Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 24 Sep 2021 10:21:44 +0100 Subject: [PATCH 77/81] general fixes --- .../Handlers/NewCampaignCommandHandler.cs | 4 ++-- Sledgemapper.Api/Sledgemapper.Api.csproj | 18 +++++++++--------- Sledgemapper/CommunicationManager.cs | 11 ++++++++++- Sledgemapper/Sledgemapper.cs | 1 + Sledgemapper/Sledgemapper.csproj | 2 +- Sledgemapper/UI/MainWidget.Custom.cs | 7 ++++++- 6 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs index 0c61334..f6b505e 100644 --- a/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/NewCampaignCommandHandler.cs @@ -23,7 +23,7 @@ namespace Sledgemapper.Api.Handlers { try { - var user = await _dbcontext.Users.FindAsync(notification.UserId, cancellationToken); + var user = await _dbcontext.Users.FindAsync(new object[] { notification.UserId }, cancellationToken); _dbcontext.Attach(user); var campaign = new Core.Entities.Campaign { @@ -39,7 +39,7 @@ namespace Sledgemapper.Api.Handlers } catch (Exception ex) { - + } return false; diff --git a/Sledgemapper.Api/Sledgemapper.Api.csproj b/Sledgemapper.Api/Sledgemapper.Api.csproj index 30d003d..a5dbc63 100644 --- a/Sledgemapper.Api/Sledgemapper.Api.csproj +++ b/Sledgemapper.Api/Sledgemapper.Api.csproj @@ -9,19 +9,19 @@ - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + - - - + + + diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 52bdd5d..c584097 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -301,7 +301,16 @@ namespace Sledgemapper Program.helper.SaveUnencryptedTokenCache(JsonSerializer.SerializeToUtf8Bytes(_authenticateResponse)); - + await Connection.StopAsync(); + + State.Instance.CampaignId=Guid.Empty; + State.Instance.CampaignName = string.Empty; + State.Instance.SessionId = Guid.Empty; + State.Instance.MapId = Guid.Empty; + State.Instance.MapName = string.Empty; + SessionData.SessionId = Guid.Empty; + SessionData.SessionName = string.Empty; + SessionData.Players.Clear(); return _authenticateResponse; } diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index fe3864d..00d7cf8 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -57,6 +57,7 @@ namespace Sledgemapper MyraEnvironment.Game = this; + _sessionData = new Session(); IsFixedTimeStep = true; TargetElapsedTime = TimeSpan.FromSeconds(1d / 30d); diff --git a/Sledgemapper/Sledgemapper.csproj b/Sledgemapper/Sledgemapper.csproj index 7cbb026..4789d7e 100644 --- a/Sledgemapper/Sledgemapper.csproj +++ b/Sledgemapper/Sledgemapper.csproj @@ -58,7 +58,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index f8379c6..1bb9990 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -229,7 +229,12 @@ namespace Sledgemapper.UI //MenuConnectJoin.Enabled = true; MenuCampaignOpen.Enabled = true; MenuCampaingNew.Enabled = true; - + MenuMapNew.Enabled = false; + MenuMapOpen.Enabled = false; + lblCampaign.Text = "n/a"; + lblMap.Text = "n/a"; + CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; + CommunicationManager.SessionData.MapEntityDeleted -= OnMapEntityDeleted; lblUsername.Text = $"{obj.Initials}"; } From 5276055c4d43779aea48332a63739b4aefd686e9 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 24 Sep 2021 11:00:24 +0100 Subject: [PATCH 78/81] fix player invitation --- .../GetCampaignPlayersCommandHandler.cs | 13 ++++++- .../InvitePlayerToCampaignCommandHandler.cs | 38 ++++++++++++------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs index 23c801d..e915643 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignPlayersCommandHandler.cs @@ -29,7 +29,18 @@ namespace Sledgemapper.Api.Handlers var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.CampaignId && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); + + var campaign = await _dbcontext + .Campaigns + .Where(campaign => campaign.CampaignId == command.CampaignId) + .Include(c => c.InvitedUsers) + + .Include(c => c.Owner) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).FirstAsync(); + + + + //var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.CampaignId && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); var players = campaign.InvitedUsers.Select(user => new Player { Initials = user.Initials, UserName = user.UserName , UserId = new Guid(user.Id)}).ToList(); return players; diff --git a/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs b/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs index b600ea9..aefdac0 100644 --- a/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/InvitePlayerToCampaignCommandHandler.cs @@ -1,43 +1,53 @@ -using MediatR; -using Microsoft.EntityFrameworkCore; -using Sledgemapper.Api.Commands; -using Sledgemapper.Api.Infrastructure.Data; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediatR; +using Microsoft.EntityFrameworkCore; +using Sledgemapper.Api.Commands; +using Sledgemapper.Api.Infrastructure.Data; namespace Sledgemapper.Api.Handlers { public class InvitePlayerToCampaignCommandHandler : IRequestHandler { + private readonly SledgemapperDbContext _dbContext; private readonly IMediator _mediator; - private readonly SledgemapperDbContext _dbcontext; - public InvitePlayerToCampaignCommandHandler(IMediator mediator, SledgemapperDbContext dbcontext) + public InvitePlayerToCampaignCommandHandler(IMediator mediator, SledgemapperDbContext dbContext) { _mediator = mediator; - _dbcontext = dbcontext; + _dbContext = dbContext; } public async Task Handle(InvitePlayerToCampaignCommand command, CancellationToken cancellationToken) { try { - var user = await _dbcontext.Users.FindAsync(command.UserId); + var user = await _dbContext.Users.FindAsync(command.UserId); - var campaign = await _dbcontext.Campaigns.Where(campaign => campaign.CampaignId == command.CampaignId && campaign.OwnerId == command.UserId).Include(campaign => campaign.InvitedUsers).FirstAsync(); - var invitedUser = await _dbcontext.Users.FirstOrDefaultAsync(user => user.Email == command.Email); - _dbcontext.Attach(invitedUser); - _dbcontext.Attach(campaign); + var campaign = await _dbContext + .Campaigns + .Where(campaign => campaign.CampaignId == command.CampaignId) + .Include(c => c.InvitedUsers) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)) + .FirstAsync(cancellationToken); + + + var invitedUser = + await _dbContext.Users.FirstOrDefaultAsync(iUser => iUser.Email == command.Email, + cancellationToken); + _dbContext.Attach(invitedUser); + _dbContext.Attach(campaign); campaign.InvitedUsers.Add(invitedUser); - _dbcontext.Campaigns.Update(campaign); - await _dbcontext.SaveChangesAsync(); + + await _dbContext.SaveChangesAsync(cancellationToken); return true; } catch (Exception ex) { } + return false; } } From 099fca8ceb8a01eb6682c0778beeadd8c767f05d Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 24 Sep 2021 11:02:22 +0100 Subject: [PATCH 79/81] small fixes --- Sledgemapper/UI/MainWidget.Custom.cs | 1 + Sledgemapper/UI/PlayerWindow.Generated.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index 1bb9990..c565054 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -231,6 +231,7 @@ namespace Sledgemapper.UI MenuCampaingNew.Enabled = true; MenuMapNew.Enabled = false; MenuMapOpen.Enabled = false; + MenuCampaignPlayers.Enabled = false; lblCampaign.Text = "n/a"; lblMap.Text = "n/a"; CommunicationManager.SessionData.MapEntityAdded -= OnMapEntityAdded; diff --git a/Sledgemapper/UI/PlayerWindow.Generated.cs b/Sledgemapper/UI/PlayerWindow.Generated.cs index 62d81ea..509d0b8 100644 --- a/Sledgemapper/UI/PlayerWindow.Generated.cs +++ b/Sledgemapper/UI/PlayerWindow.Generated.cs @@ -45,7 +45,7 @@ namespace Sledgemapper.UI grid1.Widgets.Add(TxtCampaign); BtnNewCampaign = new TextButton(); - BtnNewCampaign.Text = "New"; + BtnNewCampaign.Text = "Invite"; BtnNewCampaign.Padding = new Thickness(10, 5); BtnNewCampaign.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center; BtnNewCampaign.Id = "BtnNewCampaign"; From 9cd001919a22816094b6f000064d3816bec28820 Mon Sep 17 00:00:00 2001 From: Michele Scandura Date: Fri, 24 Sep 2021 16:54:44 +0100 Subject: [PATCH 80/81] fixing keyboard input --- Sledgemapper/Sledgemapper.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index 00d7cf8..57e8de1 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -137,7 +137,16 @@ namespace Sledgemapper _outlineShader = Content.Load("shaders/OutlineShader"); MyraEnvironment.Game = this; ResetRenderTarget(); + // Inform Myra that external text input is available + // So it stops translating Keys to chars + _desktop.HasExternalTextInput = true; + // Provide that text input + Window.TextInput += (s, a) => + { + _desktop.OnChar(a.Character); + + }; _mainWidget = new MainWidget(_communicationManager, _messenger, Window); _communicationManager.CheckLogin(); From 633c97e0dac032770fa3dadcc7b8665a59df3a3c Mon Sep 17 00:00:00 2001 From: Michele Date: Fri, 24 Sep 2021 21:53:00 +0100 Subject: [PATCH 81/81] small fixes --- .../Handlers/GetCampaignsCommandHandler.cs | 10 ++++++---- Sledgemapper/UI/MainWidget.Custom.cs | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs index 12b226f..666f17f 100644 --- a/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs +++ b/Sledgemapper.Api/Handlers/GetCampaignsCommandHandler.cs @@ -28,11 +28,13 @@ namespace Sledgemapper.Api.Handlers { var user = await _dbcontext.Users.FindAsync(command.UserId); _dbcontext.Attach(user); - var campaigns = _dbcontext.Campaigns.Include(c => c.InvitedUsers).Include(c => c.Maps).Include(c => c.Owner).Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)); + var campaigns = await _dbcontext.Campaigns + .Include(c => c.InvitedUsers) + .Include(c => c.Owner) + .Where(campaign => campaign.OwnerId == command.UserId || campaign.InvitedUsers.Contains(user)).ToListAsync(); - return campaigns. - Select(c => new Campaign { Id = c.CampaignId, Name = c.CampaignName, Maps = c.Maps.Select(m => new Map { SessionName = m.SessionName }).ToList() }) - .ToList(); + return campaigns.Select(c => new Campaign { Id = c.CampaignId, Name = c.CampaignName }).ToList(); + } catch (Exception ex) { diff --git a/Sledgemapper/UI/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index c565054..c2b6686 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -114,7 +114,6 @@ namespace Sledgemapper.UI private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) { - Messenger.Publish(new ErrorMessage(this, "test")); State.Instance.InsertMode = InsertMode.NewDelete; ClearSelection(); @@ -231,6 +230,8 @@ namespace Sledgemapper.UI MenuCampaingNew.Enabled = true; MenuMapNew.Enabled = false; MenuMapOpen.Enabled = false; + MenuConnectSync.Enabled = false; + MenuConnectUpload.Enabled = false; MenuCampaignPlayers.Enabled = false; lblCampaign.Text = "n/a"; lblMap.Text = "n/a";

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