Description:
Add randomly generated areas.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r200:876fafc42580 -

1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -8,12 +8,7
8 "restore": {
8 "restore": {
9 "projectUniqueName": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj",
9 "projectUniqueName": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj",
10 "projectName": "FNA",
10 "projectName": "FNA",
11 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj",
11 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj"
12 "frameworks": {
13 "net48": {
14 "projectReferences": {}
15 }
16 }
17 },
12 },
18 "frameworks": {
13 "frameworks": {
19 "net48": {}
14 "net48": {}
@@ -39,6 +34,7
39 },
34 },
40 "frameworks": {
35 "frameworks": {
41 "net45": {
36 "net45": {
37 "targetAlias": "net45",
42 "projectReferences": {
38 "projectReferences": {
43 "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj": {
39 "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj": {
44 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj"
40 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj"
@@ -54,7 +50,8
54 },
50 },
55 "frameworks": {
51 "frameworks": {
56 "net45": {
52 "net45": {
57 "runtimeIdentifierGraphPath": "/Library/Frameworks/Mono.framework/Versions/6.12.0/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json"
53 "targetAlias": "net45",
54 "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/5.0.201/RuntimeIdentifierGraph.json"
58 }
55 }
59 }
56 }
60 }
57 }
@@ -7,8 +7,11
7 <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/alys/.nuget/packages/</NuGetPackageRoot>
7 <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/alys/.nuget/packages/</NuGetPackageRoot>
8 <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/alys/.nuget/packages/</NuGetPackageFolders>
8 <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/alys/.nuget/packages/</NuGetPackageFolders>
9 <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
9 <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
10 <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.6.0</NuGetToolVersion>
10 <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.0</NuGetToolVersion>
11 </PropertyGroup>
11 </PropertyGroup>
12 <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
13 <SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
14 </ItemGroup>
12 <PropertyGroup>
15 <PropertyGroup>
13 <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
16 <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
14 </PropertyGroup>
17 </PropertyGroup>
@@ -1,5 +1,8
1 using System;
2 using System.Collections.Generic;
3 using Encompass;
1
4
2 using Encompass;
5 using Microsoft.Xna.Framework;
3
6
4 using isometricparkfna.Messages;
7 using isometricparkfna.Messages;
5 using isometricparkfna.Components;
8 using isometricparkfna.Components;
@@ -9,14 +12,59
9 [Receives(typeof(SpawnContractMessage))]
12 [Receives(typeof(SpawnContractMessage))]
10 class ContractSpawner : Spawner<SpawnContractMessage>
13 class ContractSpawner : Spawner<SpawnContractMessage>
11 {
14 {
15 private Random random_generator;
16
17 public ContractSpawner()
18 {
19 this.random_generator = new Random();
20
21 }
22 private Vector2[] CreateArea(int start_x, int start_y, int max_size)
23 {
24 var squares = new List<Vector2>(new[] { new Vector2(start_x, start_y) });
25 var squares_to_add = new HashSet<Vector2>();
26
27 while (squares.Count < max_size)
28 {
29 foreach (var square in squares)
30 {
31 if (random_generator.NextDouble() < 0.5
32 && !squares.Contains(new Vector2(square.X + 1, square.Y)))
33 {
34 squares_to_add.Add(new Vector2(square.X + 1, square.Y));
35 }
36 if (random_generator.NextDouble() < 0.5
37 && !squares.Contains(new Vector2(square.X, square.Y + 1)))
38 {
39 squares_to_add.Add(new Vector2(square.X, square.Y + 1));
40 }
41 if (random_generator.NextDouble() < 0.5
42 && !squares.Contains(new Vector2(square.X - 1, square.Y)))
43 {
44 squares_to_add.Add(new Vector2(square.X - 1, square.Y));
45 }
46 if (random_generator.NextDouble() < 0.5
47 && !squares.Contains(new Vector2(square.X, square.Y - 1)))
48 {
49 squares_to_add.Add(new Vector2(square.X, square.Y - 1));
50 }
51 }
52 squares.AddRange(squares_to_add);
53 squares_to_add.Clear();
54 }
55 return squares.ToArray();
56 }
12
57
13 protected override void Spawn(in SpawnContractMessage message)
58 protected override void Spawn(in SpawnContractMessage message)
14 {
59 {
15 var contract = CreateEntity();
60 var contract = CreateEntity();
61
62 var squares = (message.squares == null) ? CreateArea(25, 25, 30) : message.squares;
63
16 // AddComponent
64 // AddComponent
17 AddComponent(contract, new AreaComponent{squares = message.squares});
65 AddComponent(contract, new AreaComponent { squares = squares });
18 AddComponent(contract, new NameComponent{DisplayName = message.name});
66 AddComponent(contract, new NameComponent { DisplayName = message.name });
19 AddComponent(contract, new ContractStatusComponent {status = ContractStatus.Proposed});
67 AddComponent(contract, new ContractStatusComponent { status = ContractStatus.Proposed });
20
68
21 }
69 }
22 }
70 }
@@ -209,34 +209,49
209 WorldBuilder.AddGeneralRenderer(new AreaRenderer(this.batch, this.monoFont), 1);
209 WorldBuilder.AddGeneralRenderer(new AreaRenderer(this.batch, this.monoFont), 1);
210 WorldBuilder.AddGeneralRenderer(new ImGuiWindowRenderer(debugWindow.monoFont, this.imGuiWindowBridgeEngine), 2);
210 WorldBuilder.AddGeneralRenderer(new ImGuiWindowRenderer(debugWindow.monoFont, this.imGuiWindowBridgeEngine), 2);
211 var contractWindow = WorldBuilder.CreateEntity();
211 var contractWindow = WorldBuilder.CreateEntity();
212 WorldBuilder.SetComponent(contractWindow, new VisibilityComponent{visible = false});
212 WorldBuilder.SetComponent(contractWindow, new VisibilityComponent { visible = false });
213 WorldBuilder.SetComponent(contractWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.Contracts});
213 WorldBuilder.SetComponent(contractWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Contracts });
214
214
215
215
216 var forestWindow = WorldBuilder.CreateEntity();
216 var forestWindow = WorldBuilder.CreateEntity();
217 WorldBuilder.SetComponent(forestWindow, new VisibilityComponent{visible = false});
217 WorldBuilder.SetComponent(forestWindow, new VisibilityComponent { visible = false });
218 WorldBuilder.SetComponent(forestWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.Forest});
218 WorldBuilder.SetComponent(forestWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Forest });
219
219
220 var newsWindow = WorldBuilder.CreateEntity();
220 var newsWindow = WorldBuilder.CreateEntity();
221 WorldBuilder.SetComponent(newsWindow, new VisibilityComponent{visible = false});
221 WorldBuilder.SetComponent(newsWindow, new VisibilityComponent { visible = false });
222 WorldBuilder.SetComponent(newsWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.News});
222 WorldBuilder.SetComponent(newsWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.News });
223
223
224 // var budgetWindow = WorldBuilder.CreateEntity();
224 // var budgetWindow = WorldBuilder.CreateEntity();
225 // WorldBuilder.SetComponent(budgetWindow, new VisibilityComponent{visible = true});
225 // WorldBuilder.SetComponent(budgetWindow, new VisibilityComponent{visible = true});
226 // WorldBuilder.SetComponent(budgetWindow, new BudgetComponent());
226 // WorldBuilder.SetComponent(budgetWindow, new BudgetComponent());
227
227
228 var area = WorldBuilder.CreateEntity();
228 var area = WorldBuilder.CreateEntity();
229 // WorldBuilder.SetComponent(area, new AreaComponent{squares = new[] {new Vector2(4,4), new Vector2(5,4)}});
229 // WorldBuilder.SetComponent(area, new AreaComponent{squares = new[] {new Vector2(4,4), new Vector2(5,4)}});
230 WorldBuilder.SendMessage(new SpawnContractMessage{squares = new[] {new Vector2(4,4), new Vector2(5,4)},
230 var size = 5;
231 name = "Northshore Logging"});
231 var squares = new Vector2[size * size];
232 var start_x = 10;
232
233
234 for (int i = 0; i < size; i++)
235 {
236 for (int j = 0; j < size; j++)
237 {
238 squares[i * size + j] = new Vector2(i + start_x, j);
239 }
240
241 }
233 WorldBuilder.SendMessage(new SpawnContractMessage
242 WorldBuilder.SendMessage(new SpawnContractMessage
234 {
243 {
235 squares = new[] { new Vector2(6, 6), new Vector2(6, 7), new Vector2(6, 8) },
244 squares = squares,
245 //new[] {new Vector2(4,4), new Vector2(5,4)},
246 name = "Northshore Logging"
247 });
248 WorldBuilder.SendMessage(new SpawnContractMessage
249 {
250 // squares = squares2, //new[] { new Vector2(6, 6), new Vector2(6, 7), new Vector2(6, 8) },
236 name = "Aeres Maximalis Ltd."
251 name = "Aeres Maximalis Ltd."
237 });
252 });
238 World = WorldBuilder.Build();
253 World = WorldBuilder.Build();
239
254
240 var bakedMono = TtfFontBaker.Bake(File.OpenRead(@"Content/iosevka-term-extendedmedium.ttf"),
255 var bakedMono = TtfFontBaker.Bake(File.OpenRead(@"Content/iosevka-term-extendedmedium.ttf"),
241 15,
256 15,
242 1024,
257 1024,
@@ -260,31 +275,31
260 this.output = grammar.Flatten("#greeting#");
275 this.output = grammar.Flatten("#greeting#");
261 var result = grammar.Flatten("#[assistantName:#assistantNames#][whatever:whatever]vars#");
276 var result = grammar.Flatten("#[assistantName:#assistantNames#][whatever:whatever]vars#");
262
277
263 Func<string, string> toUpper = delegate (string i)
278 Func<string, string> toUpper = delegate (string i)
264 {
279 {
265 return i.ToUpper();
280 return i.ToUpper();
266 };
281 };
267
282
268 grammar.AddModifier("toUpper", toUpper);
283 grammar.AddModifier("toUpper", toUpper);
269
284
270 var newItems = new[] {new NewsItem{hed="Test", contents="#city.toUpper# - This is where the lede would go. #whatever#", source="Wire"}
285 var newItems = new[] {new NewsItem{hed="Test", contents="#city.toUpper# - This is where the lede would go. #whatever#", source="Wire"}
271 };
286 };
272
287
273 this.newsItems = newItems.ToList();
288 this.newsItems = newItems.ToList();
274
289
275 using (var sr = new StreamReader(@"Content/news_items.yaml"))
290 using (var sr = new StreamReader(@"Content/news_items.yaml"))
276 {
291 {
277 this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd()));
292 this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd()));
278 }
293 }
279 using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml"))
294 using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml"))
280 {
295 {
281 this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd()));
296 this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd()));
282 }
297 }
283 this.simulation.LoadContent(this.newsItems, this.grammar);
298 this.simulation.LoadContent(this.newsItems, this.grammar);
284 // this.newsItems = this.newsItems.Select(s => s.Flatten(this.grammar)).ToList().Shuffle();
299 // this.newsItems = this.newsItems.Select(s => s.Flatten(this.grammar)).ToList().Shuffle();
285
300
286
301
287 this.remainingDialog = new Queue<Node<DialogOption>>();
302 this.remainingDialog = new Queue<Node<DialogOption>>();
288
303
289 #if DEBUG
304 #if DEBUG
290 this.remainingDialog.Enqueue(DialogTrees.flatten(DialogTrees.testTree, this.grammar));
305 this.remainingDialog.Enqueue(DialogTrees.flatten(DialogTrees.testTree, this.grammar));
@@ -298,6 +313,8
298
313
299 }
314 }
300
315
316
317
301 protected override void UnloadContent()
318 protected override void UnloadContent()
302 {
319 {
303 batch.Dispose();
320 batch.Dispose();
You need to be logged in to leave comments. Login now