129 lines
2.4 KiB
C#
129 lines
2.4 KiB
C#
using ImGuiNET;
|
|
using Microsoft.Xna.Framework;
|
|
using skyscraper8.UI.MonoGame.Bridge;
|
|
using skyscraper8.UI.MonoGame.Forms;
|
|
using skyscraper8.UI.MonoGame.Screenhacks;
|
|
|
|
namespace skyscraper8.UI.MonoGame
|
|
{
|
|
internal class SkyscraperGame : BaseGame
|
|
{
|
|
public SkyscraperGame(SkyscraperHandleCollection handles, Queue<string> errors)
|
|
{
|
|
this.Handles = handles;
|
|
|
|
while (errors.Count > 0)
|
|
{
|
|
string dequeue = errors.Dequeue();
|
|
EnqueueUpdateJob(() =>
|
|
{
|
|
_imGuiRenderables.Add(new MessageWindow(dequeue));
|
|
});
|
|
}
|
|
}
|
|
|
|
public SkyscraperHandleCollection Handles { get; set; }
|
|
|
|
|
|
private ScreenhackManager screenhackManager;
|
|
protected override void LoadContent()
|
|
{
|
|
screenhackManager = new ScreenhackManager();
|
|
screenhackManager.WantedScreenhackId = 1;
|
|
_gameObjects.Add(screenhackManager);
|
|
base.LoadContent();
|
|
}
|
|
|
|
protected override void Draw(GameTime gameTime)
|
|
{
|
|
GraphicsDevice.Clear(Color.White);
|
|
|
|
base.Draw(gameTime);
|
|
}
|
|
|
|
private void EnqueueUpdateJob(Action a)
|
|
{
|
|
if (updateJobs == null)
|
|
updateJobs = new Queue<Action>();
|
|
updateJobs.Enqueue(a);
|
|
}
|
|
|
|
private Queue<Action> updateJobs;
|
|
|
|
protected override void Update(GameTime gameTime)
|
|
{
|
|
if (updateJobs != null)
|
|
{
|
|
while (updateJobs.Count > 0)
|
|
{
|
|
Action action = updateJobs.Dequeue();
|
|
action();
|
|
}
|
|
}
|
|
base.Update(gameTime);
|
|
}
|
|
|
|
private const int MENU_TEST_ABOUT = 1;
|
|
private bool MenuTest(int opcode)
|
|
{
|
|
switch (opcode)
|
|
{
|
|
case MENU_TEST_ABOUT:
|
|
if (aboutWindow != null)
|
|
{
|
|
if (!aboutWindow.WasClosed())
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
default:
|
|
Console.WriteLine("MenuTest Opcode {0} not implemented!");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private AboutWindow aboutWindow;
|
|
|
|
|
|
|
|
protected override void ImGuiLayout()
|
|
{
|
|
|
|
ImGui.BeginMainMenuBar();
|
|
if (ImGui.BeginMenu("Jobs"))
|
|
{
|
|
if (ImGui.MenuItem("Quit"))
|
|
{
|
|
Exit();
|
|
}
|
|
ImGui.EndMenu();
|
|
}
|
|
|
|
if (ImGui.BeginMenu("View"))
|
|
{
|
|
if (ImGui.MenuItem("Toggle Full Screen"))
|
|
{
|
|
_graphics.ToggleFullScreen();
|
|
}
|
|
ImGui.EndMenu();
|
|
}
|
|
|
|
if (ImGui.BeginMenu("Help"))
|
|
{
|
|
if (ImGui.MenuItem("About",MenuTest(MENU_TEST_ABOUT)))
|
|
{
|
|
EnqueueUpdateJob(() =>
|
|
{
|
|
aboutWindow = new AboutWindow();
|
|
_imGuiRenderables.Add(aboutWindow);
|
|
});
|
|
}
|
|
ImGui.EndMenu();
|
|
}
|
|
ImGui.EndMainMenuBar();
|
|
|
|
base.ImGuiLayout();
|
|
}
|
|
}
|
|
}
|