Description:
Refactor starting code to Spawner.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r360:00bca76de124 -

@@ -0,0 +1,109
1
2 using System;
3 using System.Collections.Generic;
4
5 using Microsoft.Xna.Framework;
6
7
8 using Encompass;
9
10 using isometricparkfna.Messages;
11 using static isometricparkfna.CellMap;
12 // using isometricparkfna.Components;
13
14 namespace isometricparkfna.Spawners {
15
16 [Receives(typeof(SpawnGameMessage))]
17 [Sends(typeof(SpawnContractMessage),
18 typeof(SpawnOrganizationtMessage))]
19 class GameSpawner : Spawner<SpawnGameMessage>
20
21 {
22 private Simulation simulation;
23 Random random_generator;
24
25
26 public GameSpawner(Simulation simulation)
27 {
28 this.simulation = simulation;
29 this.random_generator = new Random();
30 }
31
32
33 protected override void Spawn(in SpawnGameMessage message)
34 {
35
36 #region generate_trees
37
38 foreach (List<Cell> row in this.simulation.map.cells)
39 {
40 foreach (Cell cell in row)
41 {
42 if (this.random_generator.NextDouble() > 0.75)
43 {
44 int random_year = (int)MathHelper.Clamp((float)MathUtils.NextNormal(random_generator, 2010.0f, 40.0f), 1800, Simulation.START_YEAR);
45 int random_month = random_generator.Next(1, 12);
46 DateTime random_date = new DateTime(random_year, random_month, 1);
47
48 cell.addTree(random_date);
49 }
50 }
51 }
52 #endregion
53
54 #region create_contracts
55
56 var area = CreateEntity();
57 var size = 5;
58 var squares = new Vector2[size * size];
59 var start_x = 10;
60
61 for (int i = 0; i < size; i++)
62 {
63 for (int j = 0; j < size; j++)
64 {
65 squares[i * size + j] = new Vector2(i + start_x, j);
66 }
67
68 }
69 SendMessage(new SpawnContractMessage
70 {
71 squares = squares,
72 name = "Northshore Logging"
73 });
74 SendMessage(new SpawnContractMessage
75 {
76 name = "Aeres Maximalis Ltd."
77 });
78 #endregion
79
80 #region create_organizations
81 for (int i = 0; i < 3; i++)
82 {
83
84 SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
85 name = "#family_company.capitalizeAll#",
86 description = "#family_company_description#",
87 type = OrganizationType.Family });
88 SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
89 name = "#large_company.capitalizeAll#",
90 description = "#large_company_description#",
91 type = OrganizationType.LargeCorporation });
92 }
93 SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
94 name = "#logging_company.capitalizeAll#",
95 description = "#company_description#" });
96 SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
97 name = "#coop_company.capitalizeAll#",
98 description = "#coop_company_description#",
99 type = OrganizationType.Cooperative });
100 SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
101 name = "#coop_company.capitalizeAll#",
102 description = "#coop_company_description#",
103 type = OrganizationType.Cooperative });
104 #endregion
105 Logging.Success("Spawned new game.");
106
107 }
108 }
109 }
@@ -0,0 +1,6
1 using Encompass;
2
3 namespace isometricparkfna.Messages {
4
5 public struct SpawnGameMessage : IMessage { }
6 }
@@ -19,7 +19,8
19 typeof(GameStateMessage),
19 typeof(GameStateMessage),
20 typeof(SetResolutionMessage),
20 typeof(SetResolutionMessage),
21 typeof(SetFontMessage),
21 typeof(SetFontMessage),
22 typeof(SetTrespassingPolicyMessage))]
22 typeof(SetTrespassingPolicyMessage),
23 typeof(SpawnGameMessage))]
23 [Reads(typeof(VisibilityComponent),
24 [Reads(typeof(VisibilityComponent),
24 typeof(WindowTypeComponent),
25 typeof(WindowTypeComponent),
25 typeof(TrespassingPolicyComponent)
26 typeof(TrespassingPolicyComponent)
@@ -38,6 +39,7
38 public List<SetResolutionMessage> resolutionMessages;
39 public List<SetResolutionMessage> resolutionMessages;
39 public List<SetFontMessage> fontMessages;
40 public List<SetFontMessage> fontMessages;
40 public List<SetTrespassingPolicyMessage> trespassingPolicyMessages;
41 public List<SetTrespassingPolicyMessage> trespassingPolicyMessages;
42 public List<SpawnGameMessage> spawnGameMessages;
41
43
42 bool showBudget {get;}
44 bool showBudget {get;}
43 bool showForest {get;}
45 bool showForest {get;}
@@ -64,6 +66,7
64 this.resolutionMessages = new List<SetResolutionMessage>();
66 this.resolutionMessages = new List<SetResolutionMessage>();
65 this.fontMessages = new List<SetFontMessage>();
67 this.fontMessages = new List<SetFontMessage>();
66 this.trespassingPolicyMessages = new List<SetTrespassingPolicyMessage>();
68 this.trespassingPolicyMessages = new List<SetTrespassingPolicyMessage>();
69 this.spawnGameMessages = new List<SpawnGameMessage>();
67 this.windowStatuses = new Dictionary<Window, bool>();
70 this.windowStatuses = new Dictionary<Window, bool>();
68
71
69
72
@@ -132,6 +135,11
132 {
135 {
133 SendMessage(message);
136 SendMessage(message);
134 }
137 }
138
139 foreach (var message in this.spawnGameMessages)
140 {
141 SendMessage(message);
142 }
135
143
136
144
137
145
@@ -152,6 +160,7
152 this.resolutionMessages.Clear();
160 this.resolutionMessages.Clear();
153 this.fontMessages.Clear();
161 this.fontMessages.Clear();
154 this.trespassingPolicyMessages.Clear();
162 this.trespassingPolicyMessages.Clear();
163 this.spawnGameMessages.Clear();
155 }
164 }
156 }
165 }
157 }
166 }
@@ -147,20 +147,6
147
147
148 this.simulation = new Simulation(this.squaresAcross, this.squaresDown, new float[] {16.66667f*240, 16.66667f*120, 16.66667f*60, 16.66667f*30f, 16.66667f*1 });
148 this.simulation = new Simulation(this.squaresAcross, this.squaresDown, new float[] {16.66667f*240, 16.66667f*120, 16.66667f*60, 16.66667f*30f, 16.66667f*1 });
149
149
150 foreach (List<Cell> row in this.simulation.map.cells)
151 {
152 foreach (Cell cell in row)
153 {
154 if (this.random_generator.NextDouble() > 0.75)
155 {
156 int random_year = (int)MathHelper.Clamp((float)MathUtils.NextNormal(random_generator, 2010.0f, 40.0f), 1800, Simulation.START_YEAR);
157 int random_month = random_generator.Next(1, 12);
158 DateTime random_date = new DateTime(random_year, random_month, 1);
159
160 cell.addTree(random_date);
161 }
162 }
163 }
164
150
165 showInitial = true;
151 showInitial = true;
166 messageIndex = 0;
152 messageIndex = 0;
@@ -265,6 +251,7
265 WorldBuilder.AddEngine(new ContractStatusEngine(this.simulation));
251 WorldBuilder.AddEngine(new ContractStatusEngine(this.simulation));
266
252
267 WorldBuilder.AddEngine(new ContractSpawner(simulation.map.MapWidth, simulation.map.MapHeight, this.simulation, this.grammar));
253 WorldBuilder.AddEngine(new ContractSpawner(simulation.map.MapWidth, simulation.map.MapHeight, this.simulation, this.grammar));
254 WorldBuilder.AddEngine(new GameSpawner(this.simulation));
268 WorldBuilder.AddEngine(new OrganizationSpawner(this.simulation, this.grammar));
255 WorldBuilder.AddEngine(new OrganizationSpawner(this.simulation, this.grammar));
269 WorldBuilder.AddEngine(new PolicyEngine());
256 WorldBuilder.AddEngine(new PolicyEngine());
270
257
@@ -307,62 +294,13
307 WorldBuilder.SetComponent(policyEntity,
294 WorldBuilder.SetComponent(policyEntity,
308 new BudgetLineComponent { });
295 new BudgetLineComponent { });
309
296
310
311
312
313 var area = WorldBuilder.CreateEntity();
314 var size = 5;
315 var squares = new Vector2[size * size];
316 var start_x = 10;
317
318 for (int i = 0; i < size; i++)
319 {
320 for (int j = 0; j < size; j++)
321 {
322 squares[i * size + j] = new Vector2(i + start_x, j);
323 }
324
325 }
326 for (int i = 0; i < 3; i++)
327 {
328
329 WorldBuilder.SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
330 name = "#family_company.capitalizeAll#",
331 description = "#family_company_description#",
332 type = OrganizationType.Family });
333 WorldBuilder.SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
334 name = "#large_company.capitalizeAll#",
335 description = "#large_company_description#",
336 type = OrganizationType.LargeCorporation });
337 }
338 WorldBuilder.SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
339 name = "#logging_company.capitalizeAll#",
340 description = "#company_description#" });
341 WorldBuilder.SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
342 name = "#coop_company.capitalizeAll#",
343 description = "#coop_company_description#",
344 type = OrganizationType.Cooperative });
345 WorldBuilder.SendMessage(new SpawnOrganizationtMessage { offersContracts = true,
346 name = "#coop_company.capitalizeAll#",
347 description = "#coop_company_description#",
348 type = OrganizationType.Cooperative });
349 WorldBuilder.SendMessage(new SpawnContractMessage
350 {
351 squares = squares,
352 name = "Northshore Logging"
353 });
354 WorldBuilder.SendMessage(new SpawnContractMessage
355 {
356 name = "Aeres Maximalis Ltd."
357 });
358
359
360 try {
297 try {
361 var options = Options.readOptions();
298 var options = Options.readOptions();
362
299
363 this.imGuiWindowBridgeEngine.fontMessages.Add(new SetFontMessage{
300 this.imGuiWindowBridgeEngine.fontMessages.Add(new SetFontMessage{
364 fontSize = options.fontSize,
301 fontSize = options.fontSize,
365 fontName = options.fontName});
302 fontName = options.fontName});
303 Logging.Success("Loaded options.");
366 }
304 }
367 catch (FileNotFoundException e)
305 catch (FileNotFoundException e)
368 {
306 {
@@ -33,6 +33,7
33 if (ImGui.Button("New Game", button_size))
33 if (ImGui.Button("New Game", button_size))
34 {
34 {
35 bridgeEngine.gameStateMessages.Add(new GameStateMessage { isPlaying = true});
35 bridgeEngine.gameStateMessages.Add(new GameStateMessage { isPlaying = true});
36 bridgeEngine.spawnGameMessages.Add(new SpawnGameMessage());
36 }
37 }
37
38
38 if (ImGui.Button("Quit", button_size))
39 if (ImGui.Button("Quit", button_size))
You need to be logged in to leave comments. Login now