Files
RobustToolbox/SS14.Client/UserInterface/Components/DisconnectedScreenBlocker.cs
2017-05-20 22:26:34 +02:00

94 lines
3.3 KiB
C#

using SFML.System;
using SFML.Window;
using SS14.Client.Graphics;
using SS14.Client.Interfaces.Resource;
using SS14.Client.Interfaces.State;
using SS14.Client.Interfaces.UserInterface;
using SS14.Client.State.States;
using SS14.Shared.Maths;
namespace SS14.Client.UserInterface.Components
{
public class DisconnectedScreenBlocker : GuiComponent
{
private readonly Button _mainMenuButton;
private readonly Label _message;
private readonly IResourceManager _resourceManager;
private readonly IStateManager _stateManager;
private readonly IUserInterfaceManager _userInterfaceManager;
public DisconnectedScreenBlocker(IStateManager stateManager, IUserInterfaceManager userInterfaceManager,
IResourceManager resourceManager, string message = "Connection closed.")
{
_stateManager = stateManager;
_resourceManager = resourceManager;
_userInterfaceManager = userInterfaceManager;
_userInterfaceManager.DisposeAllComponents();
_message = new Label(message, "CALIBRI", _resourceManager);
_mainMenuButton = new Button("Main Menu", _resourceManager);
_mainMenuButton.Clicked += MainMenuButtonClicked;
_mainMenuButton.Label.Color = new SFML.Graphics.Color(245, 245, 245);
_message.Text.Color = new SFML.Graphics.Color(245, 245, 245);
}
private void MainMenuButtonClicked(Button sender)
{
_stateManager.RequestStateChange<MainScreen>();
}
public override void Update(float frameTime)
{
_message.Position = new Vector2i((int) (CluwneLib.CurrentRenderTarget.Size.X/2f - _message.ClientArea.Width/2f),
(int) (CluwneLib.CurrentRenderTarget.Size.Y/2f - _message.ClientArea.Height/2f) -
50);
_message.Update(frameTime);
_mainMenuButton.Position =
new Vector2i((int) (CluwneLib.CurrentRenderTarget.Size.X/2f - _message.ClientArea.Width/2f),
_message.ClientArea.Bottom() + 20);
_mainMenuButton.Update(frameTime);
}
public override void Render()
{
CluwneLib.drawRectangle(0, 0, (int)CluwneLib.CurrentRenderTarget.Size.X, (int)CluwneLib.CurrentRenderTarget.Size.Y, SFML.Graphics.Color.Black);
_message.Render();
_mainMenuButton.Render();
}
public override void Dispose()
{
_message.Dispose();
_mainMenuButton.Dispose();
base.Dispose();
}
public override bool MouseDown(MouseButtonEventArgs e)
{
_mainMenuButton.MouseDown(e);
return true;
}
public override bool MouseUp(MouseButtonEventArgs e)
{
_mainMenuButton.MouseUp(e);
return true;
}
public override void MouseMove(MouseMoveEventArgs e)
{
_mainMenuButton.MouseMove(e);
}
public override bool MouseWheelMove(MouseWheelEventArgs e)
{
return true;
}
public override bool KeyDown(KeyEventArgs e)
{
_mainMenuButton.KeyDown(e);
return true;
}
}
}