Description:
Split messages based on types apart from those based on entity.
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
@@ -8,7 +8,8 | |||
|
8 | 8 | |
|
9 | 9 | namespace isometricparkfna.Engines { |
|
10 | 10 | |
|
11 |
[Receives(typeof(ToggleWindowMessage), typeof(Toggle |
|
|
11 | [Receives(typeof(ToggleWindowTypeMessage), typeof(ToggleWindowMessage), | |
|
12 | typeof(ToggleVisibilityMessage))] | |
|
12 | 13 | [Reads(typeof(AreaComponent))] |
|
13 | 14 | class GameBridgeEngine : Engine |
|
14 | 15 | { |
@@ -22,7 +23,7 | |||
|
22 | 23 | public override void Update(double dt) |
|
23 | 24 | { |
|
24 | 25 | |
|
25 | foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowMessage>()) | |
|
26 | foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowTypeMessage>()) | |
|
26 | 27 | { |
|
27 | 28 | switch (windowMessage.Window) { |
|
28 | 29 | case Window.Debug: |
@@ -8,10 +8,11 | |||
|
8 | 8 | namespace isometricparkfna.Engines { |
|
9 | 9 | |
|
10 | 10 | [Sends(typeof(ToggleWindowMessage), |
|
11 | typeof(ChangeContractStatusMessage), | |
|
12 |
typeof( |
|
|
11 | typeof(ToggleWindowTypeMessage), | |
|
12 | typeof(ChangeContractStatusMessage), | |
|
13 | typeof(SelectMessage))] | |
|
13 | 14 | [Reads(typeof(VisibilityComponent), |
|
14 |
|
|
|
15 | typeof(WindowTypeComponent) | |
|
15 | 16 | //, typeof(SelectedComponent) |
|
16 | 17 | )] |
|
17 | 18 | // [Writes(typeof(SelectedComponent))] |
@@ -19,6 +20,7 | |||
|
19 | 20 | { |
|
20 | 21 | |
|
21 | 22 | public List<ToggleWindowMessage> messages; |
|
23 | public List<ToggleWindowTypeMessage> typeMessages; | |
|
22 | 24 | public List<ChangeContractStatusMessage> contractStatusMessages; |
|
23 | 25 | public List<SelectMessage> selectedMessages; |
|
24 | 26 | |
@@ -34,6 +36,7 | |||
|
34 | 36 | public ImGuiWindowBridgeEngine() |
|
35 | 37 | { |
|
36 | 38 | this.messages = new List<ToggleWindowMessage>(); |
|
39 | this.typeMessages = new List<ToggleWindowTypeMessage>(); | |
|
37 | 40 | this.contractStatusMessages = new List<ChangeContractStatusMessage>(); |
|
38 | 41 | this.selectedMessages = new List<SelectMessage>(); |
|
39 | 42 | this.windowStatuses = new Dictionary<Window, bool>(); |
@@ -50,6 +53,10 | |||
|
50 | 53 | { |
|
51 | 54 | SendMessage(message); |
|
52 | 55 | } |
|
56 | foreach(var message in this.typeMessages) | |
|
57 | { | |
|
58 | SendMessage(message); | |
|
59 | } | |
|
53 | 60 | foreach(var message in this.contractStatusMessages) |
|
54 | 61 | { |
|
55 | 62 | SendMessage(message); |
@@ -69,6 +76,7 | |||
|
69 | 76 | } |
|
70 | 77 | |
|
71 | 78 | this.messages.Clear(); |
|
79 | this.typeMessages.Clear(); | |
|
72 | 80 | this.contractStatusMessages.Clear(); |
|
73 | 81 | this.selectedMessages.Clear(); |
|
74 | 82 | } |
@@ -15,7 +15,8 | |||
|
15 | 15 | [Sends( typeof(ZoomCameraMessage), |
|
16 | 16 | typeof(MoveCameraMessage), |
|
17 | 17 | typeof(JumpCameraMessage), |
|
18 | typeof(ToggleWindowMessage), | |
|
18 | typeof(ToggleWindowTypeMessage), | |
|
19 | typeof(ToggleWindowMessage), //??? | |
|
19 | 20 | typeof(ToggleVisibilityMessage), |
|
20 | 21 | typeof(TogglePauseMessage), |
|
21 | 22 | typeof(GameRateMessage))] |
@@ -126,27 +127,28 | |||
|
126 | 127 | #region misc_keys |
|
127 | 128 | if (keyboardCur.IsKeyDown(Keys.OemBackslash) && keyboardPrev.IsKeyUp(Keys.OemBackslash)) |
|
128 | 129 | { |
|
129 | SendMessage(new ToggleWindowMessage{Window = Window.Debug}); | |
|
130 | SendMessage(new ToggleWindowTypeMessage{Window = Window.Debug}); | |
|
130 | 131 | |
|
131 | 132 | } |
|
132 | 133 | if (keyboardCur.IsKeyDown(Keys.B) && keyboardPrev.IsKeyUp(Keys.B)) |
|
133 | 134 | { |
|
134 | SendMessage(new ToggleWindowMessage{Window = Window.Budget}); | |
|
135 | SendMessage(new ToggleWindowTypeMessage{Window = Window.Budget}); | |
|
135 | 136 | |
|
136 | 137 | } |
|
137 | 138 | if (keyboardCur.IsKeyDown(Keys.F) && keyboardPrev.IsKeyUp(Keys.F)) |
|
138 | 139 | { |
|
139 | SendMessage(new ToggleWindowMessage{Window = Window.Forest}); | |
|
140 | SendMessage(new ToggleWindowTypeMessage{Window = Window.Forest}); | |
|
140 | 141 | |
|
141 | 142 | } |
|
142 | 143 | if (keyboardCur.IsKeyDown(Keys.N) && keyboardPrev.IsKeyUp(Keys.N)) |
|
143 | 144 | { |
|
144 | SendMessage(new ToggleWindowMessage{Window = Window.News}); | |
|
145 | SendMessage(new ToggleWindowTypeMessage{Window = Window.News}); | |
|
145 | 146 | |
|
146 | 147 | } |
|
147 | 148 | if (keyboardCur.IsKeyDown(Keys.O) && keyboardPrev.IsKeyUp(Keys.O)) |
|
148 | 149 | { |
|
149 | SendMessage(new ToggleWindowMessage{Window = Window.Contracts}); | |
|
150 | Logging.Trace("Contracts toggled."); | |
|
151 | SendMessage(new ToggleWindowTypeMessage{Window = Window.Contracts}); | |
|
150 | 152 | } |
|
151 | 153 | if (keyboardCur.IsKeyDown(Keys.G) && keyboardPrev.IsKeyUp(Keys.G)) |
|
152 | 154 | { |
@@ -23,7 +23,8 | |||
|
23 | 23 | private Random random_generator; |
|
24 | 24 | |
|
25 | 25 | public const int DEFAULT_MIN_SQUARES = 75; |
|
26 | public const int DEFAULT_SQUARES = 25; | |
|
26 | // public const int DEFAULT_SQUARES = 25; | |
|
27 | public const int DEFAULT_SQUARES = 100; | |
|
27 | 28 | public const int CONTRACT_MINIMUM = 50; |
|
28 | 29 | public const int CONTRACT_MAXIMUM = 400; |
|
29 | 30 | |
@@ -136,8 +137,19 | |||
|
136 | 137 | |
|
137 | 138 | var image_index = random_generator.Next(1, 7); |
|
138 | 139 | |
|
139 | int max_squares = (message.max_squares == 0) ? DEFAULT_SQUARES : message.max_squares; | |
|
140 | int min_squares = (message.min_squares == null) ? DEFAULT_MIN_SQUARES : (int)message.min_squares; | |
|
140 | // int max_squares = (message.max_squares == 0) ? DEFAULT_SQUARES : message.max_squares; | |
|
141 | // int min_squares = (message.min_squares == null) ? DEFAULT_MIN_SQUARES : (int)message.min_squares; | |
|
142 | ||
|
143 | ||
|
144 | int max_squares = (organization_type, message.min_squares) switch { | |
|
145 | (OrganizationType.Family, null) => random_generator.Next(50, 100), | |
|
146 | (OrganizationType.LargeCorporation, null) => random_generator.Next(75, 125), | |
|
147 | (OrganizationType.Cooperative, null) => random_generator.Next(50, 75), | |
|
148 | (_, null) => random_generator.Next(DEFAULT_MIN_SQUARES, DEFAULT_SQUARES), | |
|
149 | _ => (message.max_squares == 0) ? DEFAULT_SQUARES : message.max_squares | |
|
150 | }; | |
|
151 | ||
|
152 | int min_squares = (message.min_squares == null) ? (int)(max_squares*0.75f) : (int)message.min_squares; | |
|
141 | 153 | |
|
142 | 154 | |
|
143 | 155 | var odds_to_try = new[] {0.5f, 0.75f, 1.0f, 0.5f, 0.75f, 1.0f}; |
@@ -10,9 +10,9 | |||
|
10 | 10 | |
|
11 | 11 | namespace isometricparkfna.Engines { |
|
12 | 12 | |
|
13 | [Receives(typeof(ToggleWindowMessage), typeof(ToggleVisibilityMessage), | |
|
13 | [Receives(typeof(ToggleWindowMessage), typeof(ToggleWindowTypeMessage), typeof(ToggleVisibilityMessage), | |
|
14 | 14 | typeof(SelectMessage))] |
|
15 | [Reads(typeof(WindowTypeComponent), typeof(VisibilityComponent), | |
|
15 | [Reads(typeof(WindowTypeComponent), typeof(VisibilityComponent), | |
|
16 | 16 | typeof(SelectedComponent))] |
|
17 | 17 | [Writes(typeof(VisibilityComponent), typeof(SelectedComponent))] |
|
18 | 18 | class UIEngine : Engine |
@@ -20,30 +20,42 | |||
|
20 | 20 | |
|
21 | 21 | public override void Update(double dt) |
|
22 | 22 | { |
|
23 |
|
|
|
23 | foreach (var entity in ReadEntities<SelectedComponent>()) | |
|
24 | 24 | { |
|
25 | 25 | SetComponent(entity, new SelectedComponent { selected = false}); |
|
26 | 26 | } |
|
27 | 27 | |
|
28 | 28 | foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowMessage>()) |
|
29 | 29 | { |
|
30 | foreach (ref readonly var entity in ReadEntities<WindowTypeComponent>()) | |
|
30 | Logging.Spy(windowMessage, "message"); | |
|
31 | Logging.Spy(windowMessage.Window, "message.Window"); | |
|
32 | Logging.Spy(windowMessage.Entity, "message.Entity"); | |
|
33 | foreach (ref readonly var entity in ReadEntities<WindowTypeComponent>()) | |
|
31 | 34 | { |
|
32 | var window_type = GetComponent<WindowTypeComponent>(entity).type; | |
|
33 | if (window_type == windowMessage.Window && !EntityExists(windowMessage.Entity)) | |
|
34 | { | |
|
35 | var visibilityComponent = GetComponent<VisibilityComponent>(entity); | |
|
36 | SetComponent(entity, new VisibilityComponent{visible = !visibilityComponent.visible}); | |
|
37 | } | |
|
38 | //else if (window_type == windowMessage.Window && entity == windowMessage.Entity) { | |
|
39 | // else if (entity == windowMessage.Entity) { | |
|
40 | else if (EntityExists(windowMessage.Entity) && entity.ID == windowMessage.Entity.ID) { | |
|
35 | if (EntityExists(windowMessage.Entity) && entity.ID == windowMessage.Entity.ID) { | |
|
41 | 36 | var visibilityComponent = GetComponent<VisibilityComponent>(entity); |
|
42 | 37 | SetComponent(entity, new VisibilityComponent{visible = !visibilityComponent.visible}); |
|
43 | 38 | |
|
44 | 39 | } |
|
45 | } | |
|
40 | } | |
|
46 | 41 | } |
|
42 | foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowTypeMessage>()) | |
|
43 | { | |
|
44 | Logging.Spy(windowMessage, "message"); | |
|
45 | Logging.Spy(windowMessage.Window, "message.Window"); | |
|
46 | foreach (ref readonly var entity in ReadEntities<WindowTypeComponent>()) | |
|
47 | { | |
|
48 | ||
|
49 | var window_type = GetComponent<WindowTypeComponent>(entity).type; | |
|
50 | if (window_type == windowMessage.Window) | |
|
51 | { | |
|
52 | var visibilityComponent = GetComponent<VisibilityComponent>(entity); | |
|
53 | SetComponent(entity, new VisibilityComponent{visible = !visibilityComponent.visible}); | |
|
54 | } | |
|
55 | //else if (window_type == windowMessage.Window && entity == windowMessage.Entity) { | |
|
56 | // else if (entity == windowMessage.Entity) { | |
|
57 | } | |
|
58 | } | |
|
47 | 59 | |
|
48 | 60 | foreach (ref readonly var selectedMessage in ReadMessages<SelectMessage>()) |
|
49 | 61 | { |
@@ -53,4 +65,4 | |||
|
53 | 65 | |
|
54 | 66 | } |
|
55 | 67 | } |
|
56 | } No newline at end of file | |
|
68 | } |
@@ -2,15 +2,6 | |||
|
2 | 2 | |
|
3 | 3 | namespace isometricparkfna.Messages { |
|
4 | 4 | |
|
5 | public enum Window { | |
|
6 | Debug, | |
|
7 | Budget, | |
|
8 | Forest, | |
|
9 | News, | |
|
10 | Contracts, | |
|
11 | Contract | |
|
12 | } | |
|
13 | ||
|
14 | 5 | //You must specify both or you get 0 for a window, which is the default window :( |
|
15 | 6 | public struct ToggleWindowMessage : IMessage, IHasEntity |
|
16 | 7 | { |
@@ -2,6 +2,7 | |||
|
2 | 2 | using Microsoft.Xna.Framework.Graphics; |
|
3 | 3 | |
|
4 | 4 | using System.Collections.Generic; |
|
5 | using System.Linq; | |
|
5 | 6 | |
|
6 | 7 | using isometricparkfna.UI; |
|
7 | 8 | using isometricparkfna.Engines; |
@@ -79,9 +80,11 | |||
|
79 | 80 | |
|
80 | 81 | var data = getContractDetails(entity); |
|
81 | 82 | |
|
82 | ContractWindow.Render(this.font, this.italicFont, this.BridgeEngine, entity, data.name, data.description, data.status, data.amount, data.delta_trees, data.image_index); | |
|
83 | // var area_size = GetComponent<AreaComponent>(entity).squares.Length; | |
|
84 | var area = GetComponent<AreaComponent>(entity).squares; | |
|
85 | var area_size = GetComponent<AreaComponent>(entity).squares.Length; | |
|
83 | 86 | |
|
84 | //Logging.Trace(string.Format("Rendering Contract Window for {0}", data.name)); | |
|
87 | ContractWindow.Render(this.font, this.italicFont, this.BridgeEngine, entity, data.name, data.description, data.status, data.amount, data.delta_trees, area_size, data.image_index); | |
|
85 | 88 | |
|
86 | 89 | break; |
|
87 | 90 | |
@@ -95,4 +98,4 | |||
|
95 | 98 | } |
|
96 | 99 | |
|
97 | 100 | } |
|
98 | } No newline at end of file | |
|
101 | } |
@@ -144,7 +144,9 | |||
|
144 | 144 | |
|
145 | 145 | if (!newShow) |
|
146 | 146 | { |
|
147 | engine.messages.Add(new ToggleWindowMessage { Window = Window.Contracts }); | |
|
147 | Logging.Spy(newShow, "newShow"); | |
|
148 | Logging.Trace("Contracts toggled."); | |
|
149 | engine.typeMessages.Add(new ToggleWindowTypeMessage { Window = Window.Contracts }); | |
|
148 | 150 | } |
|
149 | 151 | |
|
150 | 152 | engine.selectedMessages.Add(new SelectMessage { Entity = selected.entity }); |
@@ -52,7 +52,7 | |||
|
52 | 52 | } |
|
53 | 53 | if (show != newShow) |
|
54 | 54 | { |
|
55 |
engine. |
|
|
55 | engine.typeMessages.Add(new ToggleWindowTypeMessage {Window = Window.Forest }); | |
|
56 | 56 | } |
|
57 | 57 | } |
|
58 | 58 | } |
@@ -60,22 +60,24 | |||
|
60 | 60 | |
|
61 | 61 | if (Menu.activeButton("\ue0c2 Contracts", bridgeEngine.windowStatuses[Window.Contracts], new Num.Vector4(0.060f, 0.590f, 0.980f, 1f))) |
|
62 | 62 | { |
|
63 | bridgeEngine.messages.Add(new ToggleWindowMessage{Window = Window.Contracts}); | |
|
63 | Logging.Trace("Contracts toggled."); | |
|
64 | Logging.Spy(bridgeEngine.windowStatuses, "statuses"); | |
|
65 | bridgeEngine.typeMessages.Add(new ToggleWindowTypeMessage{Window = Window.Contracts}); | |
|
64 | 66 | } |
|
65 | 67 | //Budget isn't connected to an entity yet: |
|
66 | 68 | if (Menu.activeButton("$ Budget", showBudget, new Num.Vector4(0.060f, 0.590f, 0.980f, 1f))) |
|
67 | 69 | { |
|
68 |
bridgeEngine. |
|
|
70 | bridgeEngine.typeMessages.Add(new ToggleWindowTypeMessage{Window = Window.Budget}); | |
|
69 | 71 | |
|
70 | 72 | } |
|
71 | 73 | if (Menu.activeButton("\ue124 Forest", bridgeEngine.windowStatuses[Window.Forest], new Num.Vector4(0.060f, 0.590f, 0.980f, 1f))) |
|
72 | 74 | { |
|
73 |
bridgeEngine. |
|
|
75 | bridgeEngine.typeMessages.Add(new ToggleWindowTypeMessage{Window = Window.Forest}); | |
|
74 | 76 | |
|
75 | 77 | } |
|
76 | 78 | if (Menu.activeButton("\ue0bf News", bridgeEngine.windowStatuses[Window.News], new Num.Vector4(0.060f, 0.590f, 0.980f, 1f))) |
|
77 | 79 | { |
|
78 |
bridgeEngine. |
|
|
80 | bridgeEngine.typeMessages.Add(new ToggleWindowTypeMessage{Window = Window.News}); | |
|
79 | 81 | } |
|
80 | 82 | |
|
81 | 83 | ImGui.Text("|"); |
@@ -31,8 +31,8 | |||
|
31 | 31 | } |
|
32 | 32 | } |
|
33 | 33 | |
|
34 |
|
|
|
35 |
|
|
|
34 | variableString += "vars# "; | |
|
35 | var result = grammar.Flatten(variableString); | |
|
36 | 36 | // Logging.Trace(String.Format("{0}: {1}", variableString, result)); |
|
37 | 37 | |
|
38 | 38 | return new NewsItem { |
@@ -143,7 +143,7 | |||
|
143 | 143 | |
|
144 | 144 | if (show != newShow) |
|
145 | 145 | { |
|
146 |
engine. |
|
|
146 | engine.typeMessages.Add(new ToggleWindowTypeMessage {Window = Window.News }); | |
|
147 | 147 | } |
|
148 | 148 | } |
|
149 | 149 | } |
You need to be logged in to leave comments.
Login now