Description:
Add main menu.
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
@@ -0,0 +1,12 | |||
|
1 | ||
|
2 | ||
|
3 | using Microsoft.Xna.Framework; | |
|
4 | using Encompass; | |
|
5 | ||
|
6 | namespace isometricparkfna.Messages { | |
|
7 | public struct GameStateMessage : IMessage | |
|
8 | { | |
|
9 | public bool isPlaying; | |
|
10 | ||
|
11 | } | |
|
12 | } |
@@ -0,0 +1,55 | |||
|
1 | using System; | |
|
2 | using ImGuiNET; | |
|
3 | ||
|
4 | using Num = System.Numerics; | |
|
5 | ||
|
6 | using isometricparkfna.Engines; | |
|
7 | using isometricparkfna.Messages; | |
|
8 | using isometricparkfna.UI; | |
|
9 | ||
|
10 | namespace isometricparkfna.UI | |
|
11 | { | |
|
12 | ||
|
13 | public static class MainMenu | |
|
14 | { | |
|
15 | ||
|
16 | ||
|
17 | public static void Render(ImFontPtr font, ImGuiWindowBridgeEngine bridgeEngine | |
|
18 | /*ImFontPtr smallFont, GameBridgeEngine bridgeEngine */ //, ref bool quit, ref bool paused, ref int rate, ref bool showBudget, string header | |
|
19 | ) | |
|
20 | { | |
|
21 | ||
|
22 | ImGui.GetStyle().WindowMenuButtonPosition = ImGuiDir.None; | |
|
23 | bool newShow = true; | |
|
24 | StyleSet.pushStyleVarSet(StyleSet.defaultWindowVars); | |
|
25 | StyleSet.pushColorSet(StyleSet.defaultWindowColors); | |
|
26 | ||
|
27 | ImGui.PushFont(font); | |
|
28 | // ImGui.PushFont(smallFont); | |
|
29 | ImGui.Begin("##Toolbar", ref newShow, ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoSavedSettings | ImGuiWindowFlags.NoTitleBar); | |
|
30 | // ImGui.PopFont(); | |
|
31 | // | |
|
32 | if (ImGui.Button("New Game")) | |
|
33 | { | |
|
34 | bridgeEngine.gameStateMessages.Add(new GameStateMessage { isPlaying = true}); | |
|
35 | ||
|
36 | ||
|
37 | } | |
|
38 | if (ImGui.Button("Quit")) | |
|
39 | { | |
|
40 | ||
|
41 | System.Console.WriteLine("Quitting"); | |
|
42 | Environment.Exit(0); | |
|
43 | } | |
|
44 | ||
|
45 | ||
|
46 | ImGui.End(); | |
|
47 | ||
|
48 | ||
|
49 | ImGui.GetStyle().WindowMenuButtonPosition = ImGuiDir.Left; | |
|
50 | StyleSet.popStyleVarSet(StyleSet.defaultWindowVars); | |
|
51 | StyleSet.popColorSet(StyleSet.defaultWindowColors); | |
|
52 | ImGui.PopFont(); | |
|
53 | } | |
|
54 | } | |
|
55 | } |
@@ -9,6 +9,7 | |||
|
9 | 9 | namespace isometricparkfna.Engines { |
|
10 | 10 | |
|
11 | 11 | [Receives(typeof(ToggleWindowTypeMessage), typeof(ToggleWindowMessage), |
|
12 | typeof(GameStateMessage), | |
|
12 | 13 | typeof(ToggleVisibilityMessage))] |
|
13 | 14 | [Reads(typeof(AreaComponent), |
|
14 | 15 | typeof(ContractStatusComponent))] |
@@ -54,6 +55,10 | |||
|
54 | 55 | break; |
|
55 | 56 | } |
|
56 | 57 | } |
|
58 | foreach (ref readonly var stateMessage in ReadMessages<GameStateMessage>()) | |
|
59 | { | |
|
60 | game.isPlaying = stateMessage.isPlaying; | |
|
61 | } | |
|
57 | 62 | |
|
58 | 63 | game.in_zone = false; |
|
59 | 64 | foreach (ref readonly var entity in ReadEntities<AreaComponent>()) |
@@ -11,7 +11,8 | |||
|
11 | 11 | typeof(ToggleWindowTypeMessage), |
|
12 | 12 | typeof(ChangeContractStatusMessage), |
|
13 | 13 | typeof(SelectMessage), |
|
14 |
typeof(JumpCameraMessage) |
|
|
14 | typeof(JumpCameraMessage), | |
|
15 | typeof(GameStateMessage))] | |
|
15 | 16 | [Reads(typeof(VisibilityComponent), |
|
16 | 17 | typeof(WindowTypeComponent) |
|
17 | 18 | //, typeof(SelectedComponent) |
@@ -25,6 +26,7 | |||
|
25 | 26 | public List<ChangeContractStatusMessage> contractStatusMessages; |
|
26 | 27 | public List<SelectMessage> selectedMessages; |
|
27 | 28 | public List<JumpCameraMessage> jumpCameraMessages; |
|
29 | public List<GameStateMessage> gameStateMessages; | |
|
28 | 30 | |
|
29 | 31 | bool showBudget {get;} |
|
30 | 32 | bool showForest {get;} |
@@ -42,6 +44,7 | |||
|
42 | 44 | this.contractStatusMessages = new List<ChangeContractStatusMessage>(); |
|
43 | 45 | this.selectedMessages = new List<SelectMessage>(); |
|
44 | 46 | this.jumpCameraMessages = new List<JumpCameraMessage>(); |
|
47 | this.gameStateMessages = new List<GameStateMessage>(); | |
|
45 | 48 | this.windowStatuses = new Dictionary<Window, bool>(); |
|
46 | 49 | //Prepopulate: |
|
47 | 50 | foreach(var type in System.Enum.GetValues(typeof(Window))) |
@@ -74,6 +77,10 | |||
|
74 | 77 | SendMessage(message); |
|
75 | 78 | } |
|
76 | 79 | |
|
80 | foreach(var message in this.gameStateMessages) | |
|
81 | { | |
|
82 | SendMessage(message); | |
|
83 | } | |
|
77 | 84 | |
|
78 | 85 | foreach(var entity in ReadEntities<WindowTypeComponent>()) |
|
79 | 86 | { |
@@ -87,6 +94,7 | |||
|
87 | 94 | this.contractStatusMessages.Clear(); |
|
88 | 95 | this.selectedMessages.Clear(); |
|
89 | 96 | this.jumpCameraMessages.Clear(); |
|
97 | this.gameStateMessages.Clear(); | |
|
90 | 98 | } |
|
91 | 99 | } |
|
92 | 100 | } |
@@ -21,6 +21,7 | |||
|
21 | 21 | using isometricparkfna.Renderers; |
|
22 | 22 | using isometricparkfna.Messages; |
|
23 | 23 | using isometricparkfna.Spawners; |
|
24 | using Num = System.Numerics; | |
|
24 | 25 | |
|
25 | 26 | using ImGuiNET.SampleProgram.XNA; |
|
26 | 27 | using ImGuiNET; |
@@ -259,7 +260,6 | |||
|
259 | 260 | } |
|
260 | 261 | |
|
261 | 262 | } |
|
262 | ||
|
263 | 263 | for (int i = 0; i < 3; i++) |
|
264 | 264 | { |
|
265 | 265 | |
@@ -292,6 +292,7 | |||
|
292 | 292 | { |
|
293 | 293 | name = "Aeres Maximalis Ltd." |
|
294 | 294 | }); |
|
295 | ||
|
295 | 296 | World = WorldBuilder.Build(); |
|
296 | 297 | |
|
297 | 298 | var bakedMono = TtfFontBaker.Bake(File.OpenRead(@"Content/iosevka-term-extendedmedium.ttf"), |
@@ -855,6 +856,8 | |||
|
855 | 856 | |
|
856 | 857 | Vector2 middle_dimensions = monoFont.MeasureString("Isometric Park"); |
|
857 | 858 | float middle_start = (int)((FNAGame.width / 2) - (middle_dimensions.X / 2)); |
|
859 | ImGui.SetNextWindowPos(new Num.Vector2(FNAGame.width/2, 200)); | |
|
860 | MainMenu.Render(debugWindow.monoFont, imGuiWindowBridgeEngine); | |
|
858 | 861 | |
|
859 | 862 | batch.DrawString(largeMonoFont, "Isometric Park", |
|
860 | 863 | new Vector2(middle_start, 50), |
You need to be logged in to leave comments.
Login now