From 9c688d363f0894b91be211ff468c4bf7cab8a7d8 Mon Sep 17 00:00:00 2001 From: Michele Date: Mon, 6 Sep 2021 23:49:30 +0100 Subject: [PATCH] refactoring code out of main class --- Sledgemapper/CommunicationManager.cs | 2 + Sledgemapper/Sledgemapper.cs | 1145 +++++++++++++------------- Sledgemapper/State.cs | 3 + Sledgemapper/UI/MainWidget.Custom.cs | 766 ++++++++++++++++- 4 files changed, 1321 insertions(+), 595 deletions(-) diff --git a/Sledgemapper/CommunicationManager.cs b/Sledgemapper/CommunicationManager.cs index 12668c5..f528271 100644 --- a/Sledgemapper/CommunicationManager.cs +++ b/Sledgemapper/CommunicationManager.cs @@ -276,5 +276,7 @@ namespace Sledgemapper return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); } + + } } diff --git a/Sledgemapper/Sledgemapper.cs b/Sledgemapper/Sledgemapper.cs index ba93b79..6357b28 100644 --- a/Sledgemapper/Sledgemapper.cs +++ b/Sledgemapper/Sledgemapper.cs @@ -38,16 +38,16 @@ namespace Sledgemapper private readonly Desktop _desktop; private KeyboardState oldState; private MouseState oldMouseState; - private Vector3 _viewportCenter = new(0, 0, 0); + //private Vector3 _state.ViewportCenter = new(0, 0, 0); private bool _isDraggin; private Dictionary _fonts; - private Texture2D _eye; - private Texture2D _location; + //private Texture2D _eye; + //private Texture2D _location; private Texture2D _comment; private readonly Session _sessionData; private RenderTarget2D rendertarget; private MainWidget _mainWidget; - private bool _showCellNumbers; + //private bool _state.ShowCellNumbers; private readonly Settings _settings; public Sledgemapper() @@ -197,36 +197,36 @@ namespace Sledgemapper MyraEnvironment.Game = this; ResetRenderTarget(); - _mainWidget = new MainWidget(_communicationManager); + _mainWidget = new MainWidget(_communicationManager, _state, _settings); //_mainWidget = new MainWidget(); - _mainWidget.MenuConnectSync.Selected += OnMenuConnectSyncSelected; - _mainWidget.MenuFileLoad.Selected += OnMenuFileLoadSelected; - _mainWidget.MenuFileSave.Selected += OnMenuFileSaveSelected; - _mainWidget.MenuFileSettings.Selected += OneMenuFileSettingsSelected; - //_mainWidget.MenuConnectLogin.Selected += OnMenuConnectLoginSelected; - _mainWidget.MenuConnectNew.Selected += OnMenuConnectNewSelected; - _mainWidget.MenuConnectJoin.Selected += OnMenuConnectJoinSelected; - _mainWidget.MenuConnectUpload.Selected += OnMenuConnectUploadSelected; - _mainWidget.MenuViewCenterOnSelection.Selected += OnMenuViewCenterOnSelectionSelected; - _mainWidget.MenuViewShowCellNUmbers.Selected += OnMenuViewShowCellNUmbersSelected; - _mainWidget.MenuViewShowNotes.Selected += OnMenuViewNotesSelected; + //_mainWidget.MenuConnectSync.Selected += OnMenuConnectSyncSelected; + //_mainWidget.MenuFileLoad.Selected += OnMenuFileLoadSelected; + //_mainWidget.MenuFileSave.Selected += OnMenuFileSaveSelected; + //_mainWidget.MenuFileSettings.Selected += OneMenuFileSettingsSelected; + ////_mainWidget.MenuConnectLogin.Selected += OnMenuConnectLoginSelected; + ////_mainWidget.MenuConnectNew.Selected += OnMenuConnectNewSelected; + //_mainWidget.MenuConnectJoin.Selected += OnMenuConnectJoinSelected; + //_mainWidget.MenuConnectUpload.Selected += OnMenuConnectUploadSelected; + //_mainWidget.MenuViewCenterOnSelection.Selected += OnMenuViewCenterOnSelectionSelected; + //_mainWidget.MenuViewShowCellNUmbers.Selected += OnMenuViewShowCellNUmbersSelected; + //_mainWidget.MenuViewShowNotes.Selected += OnMenuViewNotesSelected; - _mainWidget.MenuCampaingNew.Selected += OnMenuCampaignNew; - _mainWidget.MenuCampaignOpen.Selected += OnMenuCampaignOpen; - _mainWidget.MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; + //_mainWidget.MenuCampaingNew.Selected += OnMenuCampaignNew; + //_mainWidget.MenuCampaignOpen.Selected += OnMenuCampaignOpen; + //_mainWidget.MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; - _mainWidget.MenuMapOpen.Selected += OnMenuMapOpen; - _mainWidget.MenuMapNew.Selected += OnMenuMapNew; + //_mainWidget.MenuMapOpen.Selected += OnMenuMapOpen; + //_mainWidget.MenuMapNew.Selected += OnMenuMapNew; - _mainWidget.MenuConnectNew.Enabled = false; - _mainWidget.MenuConnectJoin.Enabled = false; - _mainWidget.MenuConnectSync.Enabled = false; - _mainWidget.MenuConnectUpload.Enabled = false; - _mainWidget.BtnToolbarLine.Click += OnBtnToolbarLinClicked; - _mainWidget.BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; - _mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; + //_mainWidget.MenuConnectNew.Enabled = false; + //_mainWidget.MenuConnectJoin.Enabled = false; + //_mainWidget.MenuConnectSync.Enabled = false; + //_mainWidget.MenuConnectUpload.Enabled = false; + //_mainWidget.BtnToolbarLine.Click += OnBtnToolbarLinClicked; + //_mainWidget.BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; + //_mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; _wallsContent = Content.LoadContentFolder("walls"); @@ -244,8 +244,8 @@ namespace Sledgemapper AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet); _fonts = Content.LoadContentFolder("fonts"); - _eye = Content.Load("eye"); - _location = Content.Load("location"); + //_eye = Content.Load("eye"); + //_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")); @@ -261,379 +261,379 @@ namespace Sledgemapper _whiteRectangle.SetData(new[] { Color.White }); } - private void OnMenuMapNew(object sender, EventArgs e) - { - if (sender is MenuItem && !((MenuItem)sender).Enabled) - { - return; - } + //private void OnMenuMapNew(object sender, EventArgs e) + //{ + // if (sender is MenuItem && !((MenuItem)sender).Enabled) + // { + // return; + // } - Window window = new() - { - Title = "New map" - }; + // Window window = new() + // { + // Title = "New map" + // }; - var content = new MapWindow(); - //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonNewMapClicked; - window.Content = content; + // var content = new MapWindow(); + // //content.BtnNewCampaign.Text = "N"; + // content.BtnNewCampaign.Click += OnButtonNewMapClicked; + // window.Content = content; - window.ShowModal(_desktop); - content.TxtCampaign.SetKeyboardFocus(); - } + // 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; - } + //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); - //} + // //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); + // 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 (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(); - //} + // //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(); - } + // localWindow.Close(); + //} - private async void OnMenuMapOpen(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } + //private async void OnMenuMapOpen(object sender, EventArgs e) + //{ + // if (!((MenuItem)sender).Enabled) + // { + // return; + // } - Window window = new() - { - Title = "Maps" - }; + // Window window = new() + // { + // Title = "Maps" + // }; - var content = new MapList(); - var campaigns = await _communicationManager.Api.GetMaps(_state.CampaignName); - foreach (var campaign in campaigns) - { - var item = new UI.ListItem(); - item.ItemName.Text = campaign.SessionName; - item.TouchUp += OnMapSelected; - content.StackCampaignsList.AddChild(item); - } - //content.BtnNewCampaign.Text = "N"; + // var content = new MapList(); + // var campaigns = await _communicationManager.Api.GetMaps(_state.CampaignName); + // foreach (var campaign in campaigns) + // { + // var item = new UI.ListItem(); + // item.ItemName.Text = campaign.SessionName; + // item.TouchUp += OnMapSelected; + // content.StackCampaignsList.AddChild(item); + // } + // //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += (s, e) => - { - window.Close(); - OnMenuMapNew(s, e); - }; + // content.BtnNewCampaign.Click += (s, e) => + // { + // window.Close(); + // OnMenuMapNew(s, e); + // }; - window.Content = content; + // window.Content = content; - window.ShowModal(_desktop); - // content.TxtCampaign.SetKeyboardFocus(); - } + // window.ShowModal(_desktop); + // // content.TxtCampaign.SetKeyboardFocus(); + //} - private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } + //private async void OnMenuCampaignPlayersSelected(object sender, EventArgs e) + //{ + // if (!((MenuItem)sender).Enabled) + // { + // return; + // } - Window window = new() - { - Title = "Players" - }; + // 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 UI.ListItem(); - item.ItemName.Text = player.UserName; + // var content = new PlayerList(); + // var players = await _communicationManager.Api.GetPlayers(_state.CampaignName); + // foreach (var player in players) + // { + // var item = new UI.ListItem(); + // item.ItemName.Text = player.UserName; - content.StackCampaignsList.AddChild(item); - } - //content.BtnNewCampaign.Text = "N"; + // content.StackCampaignsList.AddChild(item); + // } + // //content.BtnNewCampaign.Text = "N"; - content.BtnInvitePlayer.Click += (s, e) => - { - window.Close(); - ShowAddPLayerWindow(); - }; + // content.BtnInvitePlayer.Click += (s, e) => + // { + // window.Close(); + // ShowAddPLayerWindow(); + // }; - window.Content = content; + // window.Content = content; - window.ShowModal(_desktop); - // content.TxtCampaign.SetKeyboardFocus(); - } + // window.ShowModal(_desktop); + // // content.TxtCampaign.SetKeyboardFocus(); + //} - private void ShowAddPLayerWindow() - { - Window window = new() - { - Title = "Invite player" - }; + //private void ShowAddPLayerWindow() + //{ + // Window window = new() + // { + // Title = "Invite player" + // }; - var content = new PlayerWindow(); - //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonInvitePlayerClicked; - window.Content = content; + // var content = new PlayerWindow(); + // //content.BtnNewCampaign.Text = "N"; + // content.BtnNewCampaign.Click += OnButtonInvitePlayerClicked; + // window.Content = content; - window.ShowModal(_desktop); - content.TxtCampaign.SetKeyboardFocus(); - } + // window.ShowModal(_desktop); + // content.TxtCampaign.SetKeyboardFocus(); + //} private void OnTxtOverlaySearchChange(object sender, ValueChangedEventArgs e) { AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, _spriteSheet, e.NewValue); } - private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) - { - _state.InsertMode = InsertMode.NewDelete; + //private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) + //{ + // _state.InsertMode = InsertMode.NewDelete; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); - } + // _mainWidget.ClearSelection(); + // ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + // ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + //} - private void OnBtnToolbarWallClicked(object sender, EventArgs e) - { - _state.InsertMode = InsertMode.NewWall; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); - } + //private void OnBtnToolbarWallClicked(object sender, EventArgs e) + //{ + // _state.InsertMode = InsertMode.NewWall; + // _mainWidget.ClearSelection(); + // ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + // ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + //} - private void OnBtnToolbarTileClicked(object sender, EventArgs e) - { - _state.InsertMode = InsertMode.NewTile; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); - } + //private void OnBtnToolbarTileClicked(object sender, EventArgs e) + //{ + // _state.InsertMode = InsertMode.NewTile; + // _mainWidget.ClearSelection(); + // ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + // ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + //} - private void OnBtnToolbarRoomClicked(object sender, EventArgs e) - { - _state.InsertMode = InsertMode.NewRoom; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + //private void OnBtnToolbarRoomClicked(object sender, EventArgs e) + //{ + // _state.InsertMode = InsertMode.NewRoom; + // _mainWidget.ClearSelection(); + // ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + // ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); - } + //} - private void OnBtnToolbarLinClicked(object sender, EventArgs e) - { - _state.InsertMode = InsertMode.NewLine; - _mainWidget.ClearSelection(); - ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); - ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); - } + //private void OnBtnToolbarLinClicked(object sender, EventArgs e) + //{ + // _state.InsertMode = InsertMode.NewLine; + // _mainWidget.ClearSelection(); + // ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + // ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + //} - private void OnMenuCampaignNew(object sender, EventArgs e) - { - if (sender is MenuItem && !((MenuItem)sender).Enabled) - { - return; - } + //private void OnMenuCampaignNew(object sender, EventArgs e) + //{ + // if (sender is MenuItem && !((MenuItem)sender).Enabled) + // { + // return; + // } - Window window = new() - { - Title = "New campaign" - }; + // Window window = new() + // { + // Title = "New campaign" + // }; - var content = new CampaignWindow(); - //content.BtnNewCampaign.Text = "N"; - content.BtnNewCampaign.Click += OnButtonNewCampaignClicked; - window.Content = content; + // var content = new CampaignWindow(); + // //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) - { - if (!((MenuItem)sender).Enabled) - { - return; - } + //private async void OnMenuCampaignOpen(object sender, EventArgs e) + //{ + // if (!((MenuItem)sender).Enabled) + // { + // return; + // } - Window window = new() - { - Title = "Campaigns" - }; + // Window window = new() + // { + // 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(); + // 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"; + // 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; + // window.Content = content; - window.ShowModal(_desktop); - // content.TxtCampaign.SetKeyboardFocus(); - } + // window.ShowModal(_desktop); + // // content.TxtCampaign.SetKeyboardFocus(); + //} - private bool campaignSelected; - private void OnCampaignSelected(object sender, EventArgs e) - { - var item = sender as UI.ListItem; - var localContent = GetParentContentInWindow(item); - _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 bool campaignSelected; + //private void OnCampaignSelected(object sender, EventArgs e) + //{ + // var item = sender as UI.ListItem; + // var localContent = GetParentContentInWindow(item); + // _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; - var localContent = GetParentContentInWindow(item); + //private void OnMapSelected(object sender, EventArgs e) + //{ + // var item = sender as UI.ListItem; + // var localContent = GetParentContentInWindow(item); - 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); - } + // 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); + //} - private void OneMenuFileSettingsSelected(object sender, EventArgs e) - { - var propertyGrid = new PropertyGrid - { - Object = _settings, - Width = 350 - }; + //private void OneMenuFileSettingsSelected(object sender, EventArgs e) + //{ + // var propertyGrid = new PropertyGrid + // { + // Object = _settings, + // Width = 350 + // }; - var _windowEditor = new Window - { - Title = "Object Editor", - Content = propertyGrid - }; - _windowEditor.ShowModal(_desktop); - } + // var _windowEditor = new Window + // { + // Title = "Object Editor", + // Content = propertyGrid + // }; + // _windowEditor.ShowModal(_desktop); + //} - private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) - { - _showCellNumbers = !_showCellNumbers; - } + //private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) + //{ + // _state.ShowCellNumbers = !_state.ShowCellNumbers; + //} - private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) - { - CenterOnSelectedTile(); - } + //private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) + //{ + // CenterOnSelectedTile(); + //} - private void OnMenuViewNotesSelected(object sender, EventArgs e) - { - Window window = new() - { - Title = "Notes" - }; + //private void OnMenuViewNotesSelected(object sender, EventArgs e) + //{ + // Window window = new() + // { + // Title = "Notes" + // }; - var content = new NoteList(); + // var content = new NoteList(); - for (var i = 0; i < _sessionData.Notes.Values.Count; i++) - { - var note = _sessionData.Notes.Values.ElementAt(i); - var item = new NoteListItem(); - item.LblNoteText.Text = $"{note.ToString()} - {note.Text}"; - item.BtnNoteCenter.Image = new TextureRegion(_location); - item.BtnNoteView.Image = new TextureRegion(_eye); - item.BtnNoteCenter.Click += (s, e) => { CenterOnTile(note.X, note.Y); }; - item.BtnNoteView.Click += (s, e) => { EditNote(note); window.Close(); }; - content.StackNotesList.AddChild(item); - } + // for (var i = 0; i < _sessionData.Notes.Values.Count; i++) + // { + // var note = _sessionData.Notes.Values.ElementAt(i); + // var item = new NoteListItem(); + // item.LblNoteText.Text = $"{note.ToString()} - {note.Text}"; + // item.BtnNoteCenter.Image = new TextureRegion(_location); + // item.BtnNoteView.Image = new TextureRegion(_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); - } + // window.Content = content; + // window.ShowModal(_desktop); + //} private void EditNote(Note note) { @@ -661,7 +661,7 @@ namespace Sledgemapper { var mouseState = Mouse.GetState(); - var screenPosition = new Point(mouseState.Position.X - (int)_viewportCenter.X, mouseState.Position.Y - (int)_viewportCenter.Y); + 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; @@ -694,7 +694,7 @@ namespace Sledgemapper !_desktop.IsMouseOverGUI ) { - _viewportCenter = new Vector3(_viewportCenter.X + mouseState.Position.X - oldMouseState.Position.X, _viewportCenter.Y + mouseState.Position.Y - oldMouseState.Position.Y, 0); + _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; @@ -864,8 +864,8 @@ namespace Sledgemapper 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)_viewportCenter.X) / _state.TileSize; - var ty = (center.Y - (int)_viewportCenter.Y) / _state.TileSize; + 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) { @@ -951,21 +951,8 @@ namespace Sledgemapper base.Update(gameTime); } - private void CenterOnSelectedTile() - { - CenterOnTile(_state.SelectedTile.X, _state.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 - _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(); @@ -985,7 +972,7 @@ namespace Sledgemapper ApplyShaderToMap(); _spriteBatch.Begin( - transformMatrix: Matrix.CreateTranslation(_viewportCenter), + transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter), sortMode: SpriteSortMode.Texture, samplerState: SamplerState.PointClamp); DrawTiles(); @@ -1029,7 +1016,7 @@ namespace Sledgemapper { _spriteBatch.Begin( blendState: BlendState.NonPremultiplied, - transformMatrix: Matrix.CreateTranslation(_viewportCenter)); + transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter)); var durationMs = 2000; var baseRadius = _state.TileSize / 4f; @@ -1405,7 +1392,7 @@ namespace Sledgemapper GraphicsDevice.Clear(Color.Transparent); _spriteBatch.Begin( - transformMatrix: Matrix.CreateTranslation(_viewportCenter), + transformMatrix: Matrix.CreateTranslation(_state.ViewportCenter), samplerState: SamplerState.PointClamp ); @@ -1463,8 +1450,8 @@ namespace Sledgemapper 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)_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 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); @@ -1481,12 +1468,12 @@ namespace Sledgemapper { for (var i = -1; i < visibleTilesX + 2; i++) { - var posX1 = i * _state.TileSize - _viewportCenter.X; - var posY1 = -_viewportCenter.Y; + 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 - _viewportCenter.X; - var posY2 = GraphicsDevice.Viewport.Height - _viewportCenter.Y; + var posX2 = i * _state.TileSize - _state.ViewportCenter.X; + var posY2 = GraphicsDevice.Viewport.Height - _state.ViewportCenter.Y; posX2 -= posX2 % _state.TileSize; posY2 -= posY2 % _state.TileSize; @@ -1499,12 +1486,12 @@ namespace Sledgemapper for (var i = -1; i < visibleTilesY + 2; i++) { - var posX1 = -_viewportCenter.X; - var posY1 = i * _state.TileSize - _viewportCenter.Y; + 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 - _viewportCenter.X; - var posY2 = i * _state.TileSize - _viewportCenter.Y; + var posX2 = GraphicsDevice.Viewport.Width - _state.ViewportCenter.X; + var posY2 = i * _state.TileSize - _state.ViewportCenter.Y; posX2 -= posX2 % _state.TileSize; posY2 -= posY2 % _state.TileSize; @@ -1515,7 +1502,7 @@ namespace Sledgemapper } - if (_showCellNumbers && _state.TileSize >= 30) + 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; @@ -1524,7 +1511,7 @@ namespace Sledgemapper { for (var j = -1; j < visibleTilesY + 2; j++) { - var screenPosition = new Point(i * _state.TileSize - (int)_viewportCenter.X, j * _state.TileSize - (int)_viewportCenter.Y); + 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; @@ -1794,7 +1781,7 @@ namespace Sledgemapper 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); + 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); @@ -1806,26 +1793,26 @@ namespace Sledgemapper // top right var p3 = new Vector2( - Window.ClientBounds.Width - _viewportCenter.X - rightBound, - topBound - _viewportCenter.Y); + Window.ClientBounds.Width - _state.ViewportCenter.X - rightBound, + topBound - _state.ViewportCenter.Y); //bottom right var p4 = new Vector2( - Window.ClientBounds.Width - _viewportCenter.X - rightBound, - Window.ClientBounds.Height - _viewportCenter.Y - bottomBound); + 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 - _viewportCenter.X, topBound - _viewportCenter.Y); - p4 = new Vector2(Window.ClientBounds.Width - _viewportCenter.X, topBound - _viewportCenter.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 - _viewportCenter.X, topBound - _viewportCenter.Y); - p4 = new Vector2(leftBound - _viewportCenter.X, Window.ClientBounds.Height - _viewportCenter.Y - bottomBound); + 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 - _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 - _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 }; @@ -1876,8 +1863,8 @@ namespace Sledgemapper 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)_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); + 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) { @@ -2132,167 +2119,167 @@ namespace Sledgemapper } } - private async void OnButtonJoinSessionClicked(object sender, EventArgs e) - { - var localContent = GetParentContentInWindow(((TextButton)sender)); + //private async void OnButtonJoinSessionClicked(object sender, EventArgs e) + //{ + // var localContent = GetParentContentInWindow(((TextButton)sender)); - var isValid = ValidateTextbox(localContent.Content.TxtSession); - if (!isValid) - { - return; - } + // var isValid = ValidateTextbox(localContent.Content.TxtSession); + // 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 - { - var result = await _communicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); - if (result != null) - { - _sessionData.Map = result.Map; - _sessionData.Walls = result.Walls; - _sessionData.Overlays = result.Overlays; + // var successful = false; + // try + // { + // var result = await _communicationManager.Connection?.InvokeAsync("JoinSession", localContent.Content.TxtSession.Text); + // if (result != null) + // { + // _sessionData.Map = result.Map; + // _sessionData.Walls = result.Walls; + // _sessionData.Overlays = result.Overlays; - _sessionData.MapEntityAdded -= OnMapEntityAdded; - _sessionData.MapEntityDeleted -= OnMapEntityDeleted; - _sessionData.MapEntityAdded += OnMapEntityAdded; - _sessionData.MapEntityDeleted += OnMapEntityDeleted; - _sessionData.SessionId = result.SessionId; - _sessionData.SessionName = result.SessionName; - } - successful = result != null; - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - } + // _sessionData.MapEntityAdded -= OnMapEntityAdded; + // _sessionData.MapEntityDeleted -= OnMapEntityDeleted; + // _sessionData.MapEntityAdded += OnMapEntityAdded; + // _sessionData.MapEntityDeleted += OnMapEntityDeleted; + // _sessionData.SessionId = result.SessionId; + // _sessionData.SessionName = result.SessionName; + // } + // successful = result != null; + // } + // catch (Exception ex) + // { + // Console.WriteLine(ex.Message); + // } - if (successful) - { - _sessionData.SessionName = localContent.Content.TxtSession.Text; - _mainWidget.lblSessionName.Text = _sessionData.SessionName; - _mainWidget.MenuConnectSync.Enabled = true; - _mainWidget.MenuConnectUpload.Enabled = true; - localContent.Window.Close(); - } - } + // if (successful) + // { + // _sessionData.SessionName = localContent.Content.TxtSession.Text; + // _mainWidget.lblSessionName.Text = _sessionData.SessionName; + // _mainWidget.MenuConnectSync.Enabled = true; + // _mainWidget.MenuConnectUpload.Enabled = true; + // localContent.Window.Close(); + // } + //} - private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) - { - var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; - var isValid = ValidateTextbox(localContent.Content.TxtCampaign); - if (!isValid) - { - return; - } + //private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) + //{ + // var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; + // var isValid = ValidateTextbox(localContent.Content.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.InvitePlayer(_state.CampaignName, localContent.Content.TxtCampaign.Text); + // var successful = false; + // try + // { + // await _communicationManager.Api.InvitePlayer(_state.CampaignName, localContent.Content.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 (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(); - //} + // //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(); + // //} - localContent.Window.Close(); + // localContent.Window.Close(); - } + //} - private async void OnButtonNewCampaignClicked(object sender, EventArgs e) - { - var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; + //private async void OnButtonNewCampaignClicked(object sender, EventArgs e) + //{ + // var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; - var isValid = ValidateTextbox(localContent.Content.TxtCampaign); - if (!isValid) - { - return; - } + // var isValid = ValidateTextbox(localContent.Content.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.Content.TxtCampaign.Text); + // var successful = false; + // try + // { + // await _communicationManager.Api.NewCampaign(localContent.Content.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 (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(); - //} + // //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(); + // //} - localContent.Window.Close(); + // localContent.Window.Close(); - } + //} //private async void OnButtonNewSessionClicked(object sender, EventArgs e) //{ @@ -2606,27 +2593,27 @@ namespace Sledgemapper _state.InsertMode = InsertMode.Wall; } - private void OnMenuConnectJoinSelected(object sender, EventArgs e) - { - if (!((MenuItem)sender).Enabled) - { - return; - } + //private void OnMenuConnectJoinSelected(object sender, EventArgs e) + //{ + // if (!((MenuItem)sender).Enabled) + // { + // return; + // } - Window window = new() - { - Title = "Join mapping session" - }; + // Window window = new() + // { + // Title = "Join mapping session" + // }; - var content = new SessionWindow(); - content.BtnLogin.Text = "Join"; - content.BtnLogin.Click += OnButtonJoinSessionClicked; + // var content = new SessionWindow(); + // content.BtnLogin.Text = "Join"; + // content.BtnLogin.Click += OnButtonJoinSessionClicked; - window.Content = content; + // window.Content = content; - window.ShowModal(_desktop); - content.TxtSession.SetKeyboardFocus(); - } + // window.ShowModal(_desktop); + // content.TxtSession.SetKeyboardFocus(); + //} // private void OnMenuConnectLoginSelected(object sender, EventArgs e) // { @@ -2724,53 +2711,53 @@ namespace Sledgemapper // content.TxtSession.SetKeyboardFocus(); //} - private void OnMenuFileSaveSelected(object sender, EventArgs e) - { - FileDialog dialog = new(FileDialogMode.SaveFile) - { - Filter = "*.map" - }; + //private void OnMenuFileSaveSelected(object sender, EventArgs e) + //{ + // FileDialog dialog = new(FileDialogMode.SaveFile) + // { + // Filter = "*.map" + // }; - dialog.Closed += (s, a) => - { - if (!dialog.Result) - { - return; - } + // dialog.Closed += (s, a) => + // { + // if (!dialog.Result) + // { + // return; + // } - using StreamWriter file = File.CreateText(dialog.FilePath); - JsonSerializer serializer = new(); - serializer.Serialize(file, _sessionData); - }; + // using StreamWriter file = File.CreateText(dialog.FilePath); + // JsonSerializer serializer = new(); + // serializer.Serialize(file, _sessionData); + // }; - dialog.ShowModal(_desktop); - } + // dialog.ShowModal(_desktop); + //} - private void OnMenuFileLoadSelected(object sender, EventArgs e) - { - var dialog = new FileDialog(FileDialogMode.OpenFile) - { - Filter = "*.map" - }; + //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)); - _sessionData.Map = loadData.Map; - _sessionData.Overlays = loadData.Overlays; - _sessionData.Walls = loadData.Walls; - _sessionData.Rooms = loadData.Rooms; - _sessionData.Lines = loadData.Lines; - }; + // 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)); + // _sessionData.Map = loadData.Map; + // _sessionData.Overlays = loadData.Overlays; + // _sessionData.Walls = loadData.Walls; + // _sessionData.Rooms = loadData.Rooms; + // _sessionData.Lines = loadData.Lines; + // }; - dialog.ShowModal(_desktop); - } + // dialog.ShowModal(_desktop); + //} private void OnMapEntityAdded(object sender, MapEntityAddedEventArgs e) { diff --git a/Sledgemapper/State.cs b/Sledgemapper/State.cs index 02d0ec7..3acefc1 100644 --- a/Sledgemapper/State.cs +++ b/Sledgemapper/State.cs @@ -22,6 +22,8 @@ namespace Sledgemapper public InsertMode InsertMode; public string CampaignName { get; set; } + public bool ShowCellNumbers { get; set; } + public Vector3 ViewportCenter { get; set; } public State() { @@ -35,6 +37,7 @@ namespace Sledgemapper 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/MainWidget.Custom.cs b/Sledgemapper/UI/MainWidget.Custom.cs index f92af94..2fe3056 100644 --- a/Sledgemapper/UI/MainWidget.Custom.cs +++ b/Sledgemapper/UI/MainWidget.Custom.cs @@ -1,11 +1,18 @@ using Exceptionless; 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 Sledgemapper.Shared.Entities; using System; using System.Diagnostics; +using System.IO; using System.Linq; namespace Sledgemapper.UI @@ -14,14 +21,45 @@ namespace Sledgemapper.UI { private AuthenticateResponse _authResponse; private readonly CommunicationManager CommunicationManager; - - public MainWidget(CommunicationManager communicationManager) + private readonly State _state; + private readonly Settings _settings; + private Texture2D _eye; + private Texture2D _location; + public MainWidget(CommunicationManager communicationManager, State state, Settings settings) { BuildUI(); - + _eye = Content.Load("eye"); + _location = Content.Load("location"); CommunicationManager = communicationManager; + _state = state; + _settings = settings; MenuConnectLogin.Selected += OnMenuConnectLoginSelected; + MenuConnectSync.Selected += OnMenuConnectSyncSelected; + MenuFileLoad.Selected += OnMenuFileLoadSelected; + MenuFileSave.Selected += OnMenuFileSaveSelected; + MenuFileSettings.Selected += OneMenuFileSettingsSelected; + //MenuConnectLogin.Selected += OnMenuConnectLoginSelected; + //MenuConnectNew.Selected += OnMenuConnectNewSelected; + MenuConnectJoin.Selected += OnMenuConnectJoinSelected; + MenuConnectUpload.Selected += OnMenuConnectUploadSelected; + MenuViewCenterOnSelection.Selected += OnMenuViewCenterOnSelectionSelected; + MenuViewShowCellNUmbers.Selected += OnMenuViewShowCellNUmbersSelected; + MenuViewShowNotes.Selected += OnMenuViewNotesSelected; + MenuCampaingNew.Selected += OnMenuCampaignNew; + MenuCampaignOpen.Selected += OnMenuCampaignOpen; + MenuCampaignPlayers.Selected += OnMenuCampaignPlayersSelected; + + MenuMapOpen.Selected += OnMenuMapOpen; + MenuMapNew.Selected += OnMenuMapNew; + + MenuConnectNew.Enabled = false; + MenuConnectJoin.Enabled = false; + MenuConnectSync.Enabled = false; + MenuConnectUpload.Enabled = false; + BtnToolbarLine.Click += OnBtnToolbarLinClicked; + BtnToolbarRoom.Click += OnBtnToolbarRoomClicked; + BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked; } @@ -288,7 +326,7 @@ namespace Sledgemapper.UI if (CommunicationManager.Connection.State != HubConnectionState.Connected) { - _mainWidget.lblConnectionStatus.Text = "Connecting"; + lblConnectionStatus.Text = "Connecting"; await CommunicationManager.Connection.StartAsync(); UpdateConnectionState(CommunicationManager.Connection); } @@ -300,16 +338,16 @@ namespace Sledgemapper.UI if (result) { - _sessionData.SessionName = localContent.Content.TxtSession.Text; - _sessionData.MapEntityAdded -= OnMapEntityAdded; - _sessionData.MapEntityDeleted -= OnMapEntityDeleted; - _sessionData.MapEntityAdded += OnMapEntityAdded; - _sessionData.MapEntityDeleted += OnMapEntityDeleted; + 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); - _sessionData.SessionId = result2.SessionId; - _sessionData.SessionName = localContent.Content.TxtSession.Text; + CommunicationManager.SessionData.SessionId = result2.SessionId; + CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; } catch (Exception ex) { @@ -318,11 +356,11 @@ namespace Sledgemapper.UI if (successful) { - _sessionData.SessionName = localContent.Content.TxtSession.Text; - CommunicationManager.SessionData.Map = _sessionData.Map; - CommunicationManager.SessionData.Overlays = _sessionData.Overlays; - CommunicationManager.SessionData.Walls = _sessionData.Walls; - lblSessionName.Text = _sessionData.SessionName; + 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(); @@ -359,6 +397,702 @@ namespace Sledgemapper.UI return (localWindow, localContent); } + 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; + } + } + + 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 OnMenuConnectSyncSelected(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + var serverMap = await CommunicationManager.Api.Session(CommunicationManager.SessionData.SessionName); + 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, CommunicationManager.SessionData.SessionName); + } + + 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, + Width = 350 + }; + + var _windowEditor = new Window + { + Title = "Object Editor", + Content = propertyGrid + }; + _windowEditor.ShowModal(Desktop); + } + + private void OnMenuConnectJoinSelected(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "Join mapping session" + }; + + var content = new SessionWindow(); + content.BtnLogin.Text = "Join"; + content.BtnLogin.Click += OnButtonJoinSessionClicked; + + window.Content = content; + + window.ShowModal(Desktop); + content.TxtSession.SetKeyboardFocus(); + } + + private void OnMenuViewShowCellNUmbersSelected(object sender, EventArgs e) + { + _state.ShowCellNumbers = !_state.ShowCellNumbers; + } + + private void OnMenuViewCenterOnSelectionSelected(object sender, EventArgs e) + { + CenterOnSelectedTile(); + } + + private void OnMenuViewNotesSelected(object sender, EventArgs e) + { + Window window = new() + { + Title = "Notes" + }; + + var content = new NoteList(); + + 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(_location); + item.BtnNoteView.Image = new TextureRegion(_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); + } + + private void CenterOnSelectedTile() + { + CenterOnTile(_state.SelectedTile.X, _state.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.X += dx; + _state.ViewportCenter.Y += dy; + } + + 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 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(); + 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 bool campaignSelected; + + + private void OnCampaignSelected(object sender, EventArgs e) + { + var item = sender as UI.ListItem; + var localContent = GetParentContentInWindow(item); + _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; + var localContent = GetParentContentInWindow(item); + + 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); + } + + 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 UI.ListItem(); + item.ItemName.Text = player.UserName; + + + 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 async void OnMenuMapOpen(object sender, EventArgs e) + { + if (!((MenuItem)sender).Enabled) + { + return; + } + + Window window = new() + { + Title = "Maps" + }; + + var content = new MapList(); + var campaigns = await CommunicationManager.Api.GetMaps(_state.CampaignName); + foreach (var campaign in campaigns) + { + var item = new UI.ListItem(); + item.ItemName.Text = campaign.SessionName; + item.TouchUp += OnMapSelected; + content.StackCampaignsList.AddChild(item); + } + //content.BtnNewCampaign.Text = "N"; + + + + content.BtnNewCampaign.Click += (s, e) => + { + window.Close(); + OnMenuMapNew(s, e); + }; + + 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 async void OnButtonJoinSessionClicked(object sender, EventArgs e) + { + var localContent = GetParentContentInWindow(((TextButton)sender)); + + 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.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); + } + + if (successful) + { + CommunicationManager.SessionData.SessionName = localContent.Content.TxtSession.Text; + lblSessionName.Text = CommunicationManager.SessionData.SessionName; + MenuConnectSync.Enabled = true; + MenuConnectUpload.Enabled = true; + localContent.Window.Close(); + } + } + + private async void OnButtonInvitePlayerClicked(object sender, EventArgs e) + { + var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; + var isValid = ValidateTextbox(localContent.Content.TxtCampaign); + 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.InvitePlayer(_state.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) + { + 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 async void OnButtonNewCampaignClicked(object sender, EventArgs e) + { + var localContent = GetParentContentInWindow(((TextButton)sender));// localWindow.Content as PlayerWindow; + + var isValid = ValidateTextbox(localContent.Content.TxtCampaign); + 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.InsertMode = InsertMode.NewRoom; + ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + + } + + private void OnBtnToolbarLinClicked(object sender, EventArgs e) + { + _state.InsertMode = InsertMode.NewLine; + ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + } + + private void OnBtnToolbarDeleteClicked(object sender, EventArgs e) + { + _state.InsertMode = InsertMode.NewDelete; + + ClearSelection(); + ((ImageTextButton)sender).Border = new SolidBrush(Color.Red); + ((ImageTextButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2); + } + + 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) + //{ + // 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) + //{ + // 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(); + } + + //TODO Refactor + 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(); + } + + private void OnButtonNoteOkClick(object sender, EventArgs e) + { + var button = ((TextButton)sender); + var localContent = GetParentContentInWindow(button); + var note = new Note + { + X = _state.SelectedNote.X, + Y = _state.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 = GetParentContentInWindow(button); + content.Window.Close(); + } } } \ No newline at end of file