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
@@ -8,12 +8,7
8 8 "restore": {
9 9 "projectUniqueName": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj",
10 10 "projectName": "FNA",
11 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj",
12 "frameworks": {
13 "net48": {
14 "projectReferences": {}
15 }
16 }
11 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj"
17 12 },
18 13 "frameworks": {
19 14 "net48": {}
@@ -39,6 +34,7
39 34 },
40 35 "frameworks": {
41 36 "net45": {
37 "targetAlias": "net45",
42 38 "projectReferences": {
43 39 "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj": {
44 40 "projectPath": "/Users/alys/repos/isometric-park-fna/FNA/FNA.csproj"
@@ -54,7 +50,8
54 50 },
55 51 "frameworks": {
56 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 7 <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/alys/.nuget/packages/</NuGetPackageRoot>
8 8 <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/alys/.nuget/packages/</NuGetPackageFolders>
9 9 <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
10 <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.6.0</NuGetToolVersion>
10 <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.0</NuGetToolVersion>
11 11 </PropertyGroup>
12 <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
13 <SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
14 </ItemGroup>
12 15 <PropertyGroup>
13 16 <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
14 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 7 using isometricparkfna.Messages;
5 8 using isometricparkfna.Components;
@@ -9,14 +12,59
9 12 [Receives(typeof(SpawnContractMessage))]
10 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 58 protected override void Spawn(in SpawnContractMessage message)
14 59 {
15 60 var contract = CreateEntity();
61
62 var squares = (message.squares == null) ? CreateArea(25, 25, 30) : message.squares;
63
16 64 // AddComponent
17 AddComponent(contract, new AreaComponent{squares = message.squares});
18 AddComponent(contract, new NameComponent{DisplayName = message.name});
19 AddComponent(contract, new ContractStatusComponent {status = ContractStatus.Proposed});
65 AddComponent(contract, new AreaComponent { squares = squares });
66 AddComponent(contract, new NameComponent { DisplayName = message.name });
67 AddComponent(contract, new ContractStatusComponent { status = ContractStatus.Proposed });
20 68
21 69 }
22 70 }
@@ -209,34 +209,49
209 209 WorldBuilder.AddGeneralRenderer(new AreaRenderer(this.batch, this.monoFont), 1);
210 210 WorldBuilder.AddGeneralRenderer(new ImGuiWindowRenderer(debugWindow.monoFont, this.imGuiWindowBridgeEngine), 2);
211 211 var contractWindow = WorldBuilder.CreateEntity();
212 WorldBuilder.SetComponent(contractWindow, new VisibilityComponent{visible = false});
213 WorldBuilder.SetComponent(contractWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.Contracts});
212 WorldBuilder.SetComponent(contractWindow, new VisibilityComponent { visible = false });
213 WorldBuilder.SetComponent(contractWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Contracts });
214 214
215 215
216 216 var forestWindow = WorldBuilder.CreateEntity();
217 WorldBuilder.SetComponent(forestWindow, new VisibilityComponent{visible = false});
218 WorldBuilder.SetComponent(forestWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.Forest});
217 WorldBuilder.SetComponent(forestWindow, new VisibilityComponent { visible = false });
218 WorldBuilder.SetComponent(forestWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Forest });
219 219
220 220 var newsWindow = WorldBuilder.CreateEntity();
221 WorldBuilder.SetComponent(newsWindow, new VisibilityComponent{visible = false});
222 WorldBuilder.SetComponent(newsWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.News});
221 WorldBuilder.SetComponent(newsWindow, new VisibilityComponent { visible = false });
222 WorldBuilder.SetComponent(newsWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.News });
223 223
224 224 // var budgetWindow = WorldBuilder.CreateEntity();
225 225 // WorldBuilder.SetComponent(budgetWindow, new VisibilityComponent{visible = true});
226 226 // WorldBuilder.SetComponent(budgetWindow, new BudgetComponent());
227
227
228 228 var area = WorldBuilder.CreateEntity();
229 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)},
231 name = "Northshore Logging"});
230 var size = 5;
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 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 251 name = "Aeres Maximalis Ltd."
237 252 });
238 253 World = WorldBuilder.Build();
239
254
240 255 var bakedMono = TtfFontBaker.Bake(File.OpenRead(@"Content/iosevka-term-extendedmedium.ttf"),
241 256 15,
242 257 1024,
@@ -260,31 +275,31
260 275 this.output = grammar.Flatten("#greeting#");
261 276 var result = grammar.Flatten("#[assistantName:#assistantNames#][whatever:whatever]vars#");
262 277
263 Func<string, string> toUpper = delegate (string i)
264 {
265 return i.ToUpper();
266 };
278 Func<string, string> toUpper = delegate (string i)
279 {
280 return i.ToUpper();
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"))
276 {
277 this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd()));
278 }
279 using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml"))
280 {
281 this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd()));
282 }
283 this.simulation.LoadContent(this.newsItems, this.grammar);
284 // this.newsItems = this.newsItems.Select(s => s.Flatten(this.grammar)).ToList().Shuffle();
290 using (var sr = new StreamReader(@"Content/news_items.yaml"))
291 {
292 this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd()));
293 }
294 using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml"))
295 {
296 this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd()));
297 }
298 this.simulation.LoadContent(this.newsItems, this.grammar);
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 304 #if DEBUG
290 305 this.remainingDialog.Enqueue(DialogTrees.flatten(DialogTrees.testTree, this.grammar));
@@ -298,6 +313,8
298 313
299 314 }
300 315
316
317
301 318 protected override void UnloadContent()
302 319 {
303 320 batch.Dispose();
You need to be logged in to leave comments. Login now