Description:
Add randomly generated areas.
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
|
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. |
|
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 = |
|
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 |
|
|
278 | Func<string, string> toUpper = delegate (string i) |
|
264 | { |
|
279 | { |
|
265 |
|
|
280 | return i.ToUpper(); |
|
266 | }; |
|
281 | }; |
|
267 |
|
282 | ||
|
268 |
|
|
283 | grammar.AddModifier("toUpper", toUpper); |
|
269 |
|
284 | ||
|
270 |
|
|
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 |
|
|
288 | this.newsItems = newItems.ToList(); |
|
274 |
|
289 | ||
|
275 |
|
|
290 | using (var sr = new StreamReader(@"Content/news_items.yaml")) |
|
276 | { |
|
291 | { |
|
277 |
|
|
292 | this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd())); |
|
278 | } |
|
293 | } |
|
279 |
|
|
294 | using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml")) |
|
280 | { |
|
295 | { |
|
281 |
|
|
296 | this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd())); |
|
282 | } |
|
297 | } |
|
283 |
|
|
298 | this.simulation.LoadContent(this.newsItems, this.grammar); |
|
284 |
|
|
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