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 |
@@ -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. |
|
|
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 = |
|
|
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 |
|
|
|
264 | { | |
|
265 |
|
|
|
266 | }; | |
|
278 | Func<string, string> toUpper = delegate (string i) | |
|
279 | { | |
|
280 | return i.ToUpper(); | |
|
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 |
|
|
|
276 | { | |
|
277 |
|
|
|
278 | } | |
|
279 |
|
|
|
280 | { | |
|
281 |
|
|
|
282 | } | |
|
283 |
|
|
|
284 |
|
|
|
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