158 lines
No EOL
5.6 KiB
C#
158 lines
No EOL
5.6 KiB
C#
using Exceptionless;
|
|
using Myra.Graphics2D.Brushes;
|
|
using Myra.Graphics2D.UI;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using TinyMessenger;
|
|
|
|
namespace Sledgemapper.UI
|
|
{
|
|
public partial class CampaignList
|
|
{
|
|
private readonly CommunicationManager CommunicationManager;
|
|
private readonly Window Window;
|
|
private readonly TinyMessengerHub Messenger;
|
|
|
|
private Settings _settings;
|
|
|
|
public CampaignList(CommunicationManager communicationManager, Window window, TinyMessengerHub messenger, Settings settings)
|
|
{
|
|
BuildUI();
|
|
CommunicationManager = communicationManager;
|
|
Window = window;
|
|
Messenger = messenger;
|
|
|
|
_settings = settings;
|
|
BtnNewCampaign.Click += (s, e) =>
|
|
{
|
|
window.Close();
|
|
OnMenuCampaignNew(s, e);
|
|
};
|
|
|
|
BtnLoadCampaign.Click += (s, e) =>
|
|
{
|
|
if (campaignSelected)
|
|
{
|
|
campaignSelected = false;
|
|
window.Close();
|
|
}
|
|
};
|
|
|
|
BtnCancelCampaign.Click += (s, e) =>
|
|
{
|
|
|
|
Window.Close();
|
|
};
|
|
}
|
|
|
|
private void OnMenuCampaignNew(object sender, EventArgs e)
|
|
{
|
|
if (sender is MenuItem && !((MenuItem)sender).Enabled)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Window window = new()
|
|
{
|
|
Title = "New campaign"
|
|
};
|
|
|
|
var content = new CampaignWindow();
|
|
//content.BtnNewCampaign.Text = "N";
|
|
content.BtnNewCampaign.Click += OnButtonNewCampaignClicked;
|
|
window.Content = content;
|
|
|
|
window.ShowModal(Desktop);
|
|
content.TxtCampaign.SetKeyboardFocus();
|
|
}
|
|
|
|
|
|
|
|
private bool campaignSelected;
|
|
|
|
|
|
private void OnCampaignSelected(object sender, EventArgs e)
|
|
{
|
|
var item = sender as UI.ListItem;
|
|
var localContent = item.GetParentContentInWindow<Widget>();
|
|
State.Instance.CampaignName = item.ItemName.Text;
|
|
var list = item.Parent as Myra.Graphics2D.UI.Grid;
|
|
for (var i = 0; i < list.ChildrenCount; i++)
|
|
{
|
|
var currentItem = list.GetChild(i) as HorizontalStackPanel;// UI.ListItem;
|
|
currentItem.Background = new SolidBrush("#D9D9D9FF");
|
|
}
|
|
item.Background = new SolidBrush(_settings.OverlayTintColor);
|
|
campaignSelected = true;
|
|
}
|
|
|
|
private async void OnButtonNewCampaignClicked(object sender, EventArgs e)
|
|
{
|
|
var localContent = ((TextButton)sender).GetParentContentInWindow<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()
|
|
{
|
|
var campaigns = await CommunicationManager.Api.GetCampaigns();
|
|
foreach (var campaign in campaigns)
|
|
{
|
|
var item = new UI.ListItem();
|
|
item.ItemName.Text = campaign.Name;
|
|
|
|
item.TouchUp += OnCampaignSelected;
|
|
StackCampaignsList.AddChild(item);
|
|
}
|
|
}
|
|
}
|
|
} |