cleanup, refactoring, usual stuff
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Michele Scandura 2021-09-16 11:11:07 +01:00
parent b671c661a7
commit f15f1c8857
26 changed files with 183 additions and 209 deletions

View file

@ -34,7 +34,7 @@ namespace Sledgemapper.Api.Controllers
[HttpPost] [HttpPost]
[Route("Register")] [Route("Register")]
public async Task<IActionResult> Register([FromBody] Sledgemapper.Models.Users.RegisterModel user) public async Task<IActionResult> Register([FromBody] RegisterModel user)
{ {
// Check if the incoming request is valid // Check if the incoming request is valid
if (ModelState.IsValid) if (ModelState.IsValid)
@ -44,7 +44,7 @@ namespace Sledgemapper.Api.Controllers
if (existingUser != null) if (existingUser != null)
{ {
return BadRequest(new Sledgemapper.Models.Users.RegistrationResponse() return BadRequest(new RegistrationResponse()
{ {
Result = false, Result = false,
Errors = new List<string>(){ Errors = new List<string>(){
@ -60,14 +60,14 @@ namespace Sledgemapper.Api.Controllers
{ {
var jwtToken = GenerateJwtToken(newUser); var jwtToken = GenerateJwtToken(newUser);
return Ok(new Sledgemapper.Models.Users.RegistrationResponse() return Ok(new RegistrationResponse()
{ {
Result = true, Result = true,
Token = jwtToken Token = jwtToken
}); });
} }
return new JsonResult(new Sledgemapper.Models.Users.RegistrationResponse() return new JsonResult(new RegistrationResponse()
{ {
Result = false, Result = false,
Errors = isCreated.Errors.Select(x => x.Description).ToList() Errors = isCreated.Errors.Select(x => x.Description).ToList()
@ -76,7 +76,7 @@ namespace Sledgemapper.Api.Controllers
{ StatusCode = 500 }; { StatusCode = 500 };
} }
return BadRequest(new Sledgemapper.Models.Users.RegistrationResponse() return BadRequest(new RegistrationResponse()
{ {
Result = false, Result = false,
Errors = new List<string>(){ Errors = new List<string>(){

View file

@ -13,6 +13,6 @@ namespace Sledgemapper.Entities
public string Initials { get; set; } public string Initials { get; set; }
// public byte[] PasswordHash { get; set; } // public byte[] PasswordHash { get; set; }
public byte[] PasswordSalt { get; set; } public byte[] PasswordSalt { get; set; }
public ICollection<Sledgemapper.Api.Core.Entities.Campaign> Campaigns {get;set;} public ICollection<Api.Core.Entities.Campaign> Campaigns {get;set;}
} }
} }

View file

@ -22,10 +22,10 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(DeleteNoteCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(DeleteNoteCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Note>(notification.Note); var jsonString = JsonSerializer.Serialize(notification.Note);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "D",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,10 +20,10 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(DeleteOverlayCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(DeleteOverlayCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Overlay>(notification.Overlay); var jsonString = JsonSerializer.Serialize(notification.Overlay);
var session = _dbcontext.Sessions.First(m=>m.SessionName== notification.SessionName); 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", Operation = "D",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,10 +20,10 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(DeleteTileCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(DeleteTileCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Tile>(notification.Tile); var jsonString = JsonSerializer.Serialize(notification.Tile);
var session = _dbcontext.Sessions.First(m=>m.SessionName== notification.SessionName); 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", Operation = "D",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -22,10 +22,10 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(DeleteWallCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(DeleteWallCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Wall>(notification.Wall); var jsonString = JsonSerializer.Serialize(notification.Wall);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "D",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -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)); 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. 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(); .ToList();
} }
catch (Exception ex) catch (Exception ex)

View file

@ -9,17 +9,17 @@ using Sledgemapper.Api.Models;
namespace Sledgemapper.Api.Commands namespace Sledgemapper.Api.Commands
{ {
public class GetMapSnapshotCommandHandler : IRequestHandler<GetMapSnapshotCommand, Sledgemapper.Shared.Entities.Session> public class GetMapSnapshotCommandHandler : IRequestHandler<GetMapSnapshotCommand, Shared.Entities.Session>
{ {
private readonly SledgemapperDbContext _dbcontext; private readonly SledgemapperDbContext _dbcontext;
public GetMapSnapshotCommandHandler(SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; } public GetMapSnapshotCommandHandler(SledgemapperDbContext dbcontext) { _dbcontext = dbcontext; }
public async Task<Sledgemapper.Shared.Entities.Session> Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken) public async Task<Shared.Entities.Session> Handle(GetMapSnapshotCommand notification, CancellationToken cancellationToken)
{ {
Snapshot snapshot; Snapshot snapshot;
double timestamp; double timestamp;
Sledgemapper.Shared.Entities.Session mapSession; Shared.Entities.Session mapSession;
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName);
snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId); snapshot = _dbcontext.Snapshots.OrderByDescending(s => s.Timestamp).FirstOrDefault(m => m.SessionId == session.SessionId);
if (snapshot is null) if (snapshot is null)
@ -30,7 +30,7 @@ namespace Sledgemapper.Api.Commands
} }
else else
{ {
mapSession = JsonSerializer.Deserialize<Sledgemapper.Shared.Entities.Session>(snapshot.Object); mapSession = JsonSerializer.Deserialize<Shared.Entities.Session>(snapshot.Object);
timestamp = snapshot.Timestamp; timestamp = snapshot.Timestamp;
} }
@ -101,7 +101,7 @@ namespace Sledgemapper.Api.Commands
{ {
SessionId = session.SessionId, SessionId = session.SessionId,
Timestamp = mapUpdates.Max(mapSession => mapSession.Timestamp), Timestamp = mapUpdates.Max(mapSession => mapSession.Timestamp),
Object = JsonSerializer.Serialize<Sledgemapper.Shared.Entities.Session>(mapSession) Object = JsonSerializer.Serialize(mapSession)
}; };
await _dbcontext.Snapshots.AddAsync(newSnapshot); await _dbcontext.Snapshots.AddAsync(newSnapshot);
await _dbcontext.SaveChangesAsync(); await _dbcontext.SaveChangesAsync();

View file

@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(NewLineCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(NewLineCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Line>(notification.Line); var jsonString = JsonSerializer.Serialize(notification.Line);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "N",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(NewNoteCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(NewNoteCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Note>(notification.Note); var jsonString = JsonSerializer.Serialize(notification.Note);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "N",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(NewOverlayCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(NewOverlayCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Overlay>(notification.Overlay); var jsonString = JsonSerializer.Serialize(notification.Overlay);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "N",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(NewRoomCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(NewRoomCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Room>(notification.Room); var jsonString = JsonSerializer.Serialize(notification.Room);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "N",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,10 +20,10 @@ namespace Sledgemapper.Api.Commands
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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, SessionId=session.SessionId,
Timestamp=notification.Timestamp, Timestamp=notification.Timestamp,
Object = JsonSerializer.Serialize<Sledgemapper.Shared.Entities.Session>(notification.Session) Object = JsonSerializer.Serialize(notification.Session)
}; };
await _dbcontext.Snapshots.AddAsync(newSnapshot); await _dbcontext.Snapshots.AddAsync(newSnapshot);

View file

@ -19,10 +19,10 @@ namespace Sledgemapper.Api.Commands
public async Task<bool> Handle(NewTileCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(NewTileCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Tile>(notification.Tile); var jsonString = JsonSerializer.Serialize(notification.Tile);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "N",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -20,9 +20,9 @@ namespace Sledgemapper.Api.Handlers
public async Task<bool> Handle(NewWallCommand notification, CancellationToken cancellationToken) public async Task<bool> Handle(NewWallCommand notification, CancellationToken cancellationToken)
{ {
var jsonString = JsonSerializer.Serialize<Wall>(notification.Wall); var jsonString = JsonSerializer.Serialize(notification.Wall);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName); 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", Operation = "N",
SessionId = session.SessionId, SessionId = session.SessionId,

View file

@ -94,7 +94,7 @@ namespace Sledgemapper.Api.Hubs
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<Sledgemapper.Shared.Entities.Session> JoinSession(string sessionName) public async Task<Shared.Entities.Session> JoinSession(string sessionName)
{ {
var session = _dbContext.Sessions.FirstOrDefault(s => s.SessionName == sessionName); var session = _dbContext.Sessions.FirstOrDefault(s => s.SessionName == sessionName);
var userId = int.Parse(Context.User.Identity.Name); 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).NewPlayer(player);
await Clients.Group(session.SessionName).RefreshPlayers(); await Clients.Group(session.SessionName).RefreshPlayers();
var newSession = new Sledgemapper.Shared.Entities.Session var newSession = new Shared.Entities.Session
{ {
SessionName = session.SessionName, SessionName = session.SessionName,
SessionId = session.SessionId SessionId = session.SessionId

View file

@ -16,7 +16,7 @@ namespace Sledgemapper.Api.Infrastructure.Data
public class SledgemapperDbContext : IdentityDbContext public class SledgemapperDbContext : IdentityDbContext
{ {
public DbSet<Sledgemapper.Api.Core.Entities.Campaign> Campaigns { get; set; } public DbSet<Campaign> Campaigns { get; set; }
public DbSet<MapLog> MapLogs { get; set; } public DbSet<MapLog> MapLogs { get; set; }
public DbSet<Map> Maps { get; set; } public DbSet<Map> Maps { get; set; }
public DbSet<Session> Sessions { get; set; } public DbSet<Session> Sessions { get; set; }
@ -46,9 +46,9 @@ namespace Sledgemapper.Api.Infrastructure.Data
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<Core.Entities.Campaign>().HasOne<User>(e=>e.Owner); modelBuilder.Entity<Campaign>().HasOne(e=>e.Owner);
modelBuilder.Entity<Core.Entities.Campaign>().HasMany<User>(e=>e.InvitedUsers).WithMany(e=>e.Campaigns); modelBuilder.Entity<Campaign>().HasMany(e=>e.InvitedUsers).WithMany(e=>e.Campaigns);
modelBuilder.Entity<User>() //Use your application user class here modelBuilder.Entity<User>() //Use your application user class here
.ToTable( "Users" ); //Set the table name here .ToTable( "Users" ); //Set the table name here

View file

@ -0,0 +1,9 @@
namespace Sledgemapper.Messages
{
public class CampaignSelectedMessage : TinyMessenger.TinyMessageBase
{
public CampaignSelectedMessage(object sender) : base(sender)
{
}
}
}

View file

@ -1,5 +1,6 @@
using Myra.Graphics2D.Brushes; using Myra.Graphics2D.Brushes;
using Myra.Graphics2D.UI; using Myra.Graphics2D.UI;
using Sledgemapper.Messages;
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using TinyMessenger; using TinyMessenger;
@ -11,17 +12,15 @@ namespace Sledgemapper.UI
private readonly CommunicationManager CommunicationManager; private readonly CommunicationManager CommunicationManager;
private readonly Window Window; private readonly Window Window;
private readonly TinyMessengerHub Messenger; private readonly TinyMessengerHub Messenger;
private readonly Desktop Desktop; private bool campaignSelected;
private Settings _settings;
public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings, Desktop desktop) public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger)
{ {
BuildUI(); BuildUI();
CommunicationManager = communicationManager; CommunicationManager = communicationManager;
Window = window; Window = window;
Messenger = messenger; Messenger = messenger;
Desktop = desktop;
_settings = settings;
BtnNewCampaign.Click += (s, e) => BtnNewCampaign.Click += (s, e) =>
{ {
window.Close(); window.Close();
@ -33,6 +32,7 @@ namespace Sledgemapper.UI
if (campaignSelected) if (campaignSelected)
{ {
campaignSelected = false; campaignSelected = false;
Messenger.Publish(new CampaignSelectedMessage(this));
window.Close(); window.Close();
} }
}; };
@ -57,96 +57,31 @@ namespace Sledgemapper.UI
}; };
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.Content = content;
window.ShowModal(Window.Desktop);
window.ShowModal(Desktop);
//content.TxtCampaign.SetKeyboardFocus();
} }
private bool campaignSelected;
private void OnCampaignSelected(object sender, EventArgs e) private void OnCampaignSelected(object sender, EventArgs e)
{ {
var item = sender as UI.ListItem; var item = sender as ListItem;
var localContent = item.GetParentContentInWindow<Widget>();
State.Instance.CampaignName = item.ItemName.Text; 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++) for (var i = 0; i < list.ChildrenCount; i++)
{ {
var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem;
currentItem.Background = new SolidBrush("#D9D9D9FF"); currentItem.Background = new SolidBrush("#D9D9D9FF");
} }
item.Background = new SolidBrush(_settings.OverlayTintColor); item.Background = new SolidBrush(Settings.Instance.OverlayTintColor);
campaignSelected = true; campaignSelected = true;
} }
//private async void OnButtonNewCampaignClicked(object sender, EventArgs e)
//{
// var localContent = ((TextButton)sender).GetParentContentInWindow<CampaignWindow>();// 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<Session>("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() public async Task LoadCampaigns()
{ {
var campaigns = await CommunicationManager.Api.GetCampaigns(); var campaigns = await CommunicationManager.Api.GetCampaigns();
foreach (var campaign in campaigns) foreach (var campaign in campaigns)
{ {
var item = new UI.ListItem(); var item = new ListItem();
item.ItemName.Text = campaign.Name; item.ItemName.Text = campaign.Name;
item.TouchUp += OnCampaignSelected; item.TouchUp += OnCampaignSelected;

View file

@ -1,7 +1,6 @@
using Microsoft.AspNetCore.SignalR.Client; using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Myra.Graphics2D.Brushes; using Myra.Graphics2D.Brushes;
using Myra.Graphics2D.TextureAtlases;
using Myra.Graphics2D.UI; using Myra.Graphics2D.UI;
using Myra.Graphics2D.UI.File; using Myra.Graphics2D.UI.File;
using Myra.Graphics2D.UI.Properties; using Myra.Graphics2D.UI.Properties;
@ -11,7 +10,6 @@ using Sledgemapper.Messages;
using Sledgemapper.Shared.Entities; using Sledgemapper.Shared.Entities;
using System; using System;
using System.IO; using System.IO;
using System.Linq;
using TinyMessenger; using TinyMessenger;
using Session = Sledgemapper.Shared.Entities.Session; using Session = Sledgemapper.Shared.Entities.Session;
@ -68,12 +66,17 @@ namespace Sledgemapper.UI
_messenger.Subscribe<SignalrConnectionUpdateMessage>(OnSignalrConnectionUpdateMessage); _messenger.Subscribe<SignalrConnectionUpdateMessage>(OnSignalrConnectionUpdateMessage);
_messenger.Subscribe<MapOpenedMessage>(OnMapOpenedMessage); _messenger.Subscribe<MapOpenedMessage>(OnMapOpenedMessage);
_messenger.Subscribe<CenterOnTileMessage>(OnCenterOnTileMessage); _messenger.Subscribe<CenterOnTileMessage>(OnCenterOnTileMessage);
_messenger.Subscribe<CampaignSelectedMessage>(OnCampaignSelectedMessage);
}
private void OnCampaignSelectedMessage(CampaignSelectedMessage obj)
{
} }
private void OnCenterOnTileMessage(CenterOnTileMessage obj) private void OnCenterOnTileMessage(CenterOnTileMessage obj)
{ {
CenterOnTile(obj.X, obj.Y); CenterOnTile(obj.X, obj.Y);
} }
private void OnMapOpenedMessage(MapOpenedMessage obj) private void OnMapOpenedMessage(MapOpenedMessage obj)
@ -318,18 +321,6 @@ namespace Sledgemapper.UI
var content = new NoteList(CommunicationManager, _messenger, window); 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.Content = content;
window.ShowModal(Desktop); window.ShowModal(Desktop);
} }
@ -360,8 +351,9 @@ namespace Sledgemapper.UI
{ {
Title = "New campaign" Title = "New campaign"
}; };
var content = new CampaignWindow(CommunicationManager, window, _messenger);
var content = new CampaignWindow(); window.Content = content;
window.ShowModal(Desktop);
} }
private async void OnMenuCampaignOpen(object sender, EventArgs e) private async void OnMenuCampaignOpen(object sender, EventArgs e)
@ -376,7 +368,7 @@ namespace Sledgemapper.UI
Title = "Campaigns" Title = "Campaigns"
}; };
var content = new CampaignList(CommunicationManager, window, _messenger, Settings.Instance, Desktop); var content = new CampaignList(CommunicationManager, window, _messenger);
await content.LoadCampaigns(); await content.LoadCampaigns();
window.Content = content; window.Content = content;
@ -386,10 +378,10 @@ namespace Sledgemapper.UI
private void OnMapSelected(object sender, EventArgs e) private void OnMapSelected(object sender, EventArgs e)
{ {
var item = sender as UI.ListItem; var item = sender as ListItem;
var localContent = item.GetParentContentInWindow<Widget>(); var localContent = item.GetParentContentInWindow<Widget>();
var list = item.Parent as Myra.Graphics2D.UI.Grid; var list = item.Parent as Grid;
for (var i = 0; i < list.ChildrenCount; i++) for (var i = 0; i < list.ChildrenCount; i++)
{ {
var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem; var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem;
@ -410,22 +402,8 @@ namespace Sledgemapper.UI
Title = "Players" Title = "Players"
}; };
var content = new PlayerList(); var content = new PlayerList(CommunicationManager, window);
var players = await CommunicationManager.Api.GetPlayers(State.Instance.CampaignName); await content.LoadPlayers();
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();
};
window.Content = content; window.Content = content;
@ -447,7 +425,7 @@ namespace Sledgemapper.UI
var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName); var campaigns = await CommunicationManager.Api.GetMaps(State.Instance.CampaignName);
foreach (var campaign in campaigns) foreach (var campaign in campaigns)
{ {
var item = new UI.ListItem(); var item = new ListItem();
item.ItemName.Text = campaign.SessionName; item.ItemName.Text = campaign.SessionName;
item.TouchUp += OnMapSelected; item.TouchUp += OnMapSelected;
content.StackCampaignsList.AddChild(item); content.StackCampaignsList.AddChild(item);
@ -464,21 +442,7 @@ namespace Sledgemapper.UI
window.ShowModal(Desktop); 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) 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<PlayerWindow>();// 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) private void OnBtnToolbarRoomClicked(object sender, EventArgs e)
{ {

View file

@ -46,12 +46,9 @@ namespace Sledgemapper.UI
}; };
var noteWindow = new NoteWindow(CommunicationManager, window, note); var noteWindow = new NoteWindow(CommunicationManager, window, note);
window.Content = noteWindow; window.Content = noteWindow;
window.ShowModal(Desktop); window.ShowModal(Window.Desktop);
//noteWindow.NoteText.SetKeyboardFocus();
} }
} }
} }

View file

@ -0,0 +1,8 @@
/* Generated by MyraPad at 01/12/2020 14:29:43 */
namespace Sledgemapper.UI
{
public partial class NoteListItem
{
}
}

View file

@ -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);
}
}
}

View file

@ -1,11 +1,11 @@
/* Generated by MyraPad at 28/08/2021 19:49:08 */ /* Generated by MyraPad at 28/08/2021 19:49:08 */
namespace Sledgemapper.UI namespace Sledgemapper.UI
{ {
public partial class PlayerList public partial class PlayerList
{ {
public PlayerList() public PlayerList()
{ {
BuildUI(); BuildUI();
} }
} }
} }

View file

@ -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<PlayerWindow>();// 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();
}
}
}

View file

@ -1,11 +0,0 @@
/* Generated by MyraPad at 28/08/2021 22:04:11 */
namespace Sledgemapper.UI
{
public partial class PlayerWindow
{
public PlayerWindow()
{
BuildUI();
}
}
}