diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache index 99357bfbfcd3e6c10c908ab2546313e5cb0315f8..cc8c15ddf724a119a73eeddea79684ec463ffe55 GIT binary patch literal 11415 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/Users/alys/.nuget/packages/ /Users/alys/.nuget/packages/ PackageReference - 5.6.0 + 5.8.0 + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) diff --git a/isometric-park-fna/Engines/Spawners/ContractSpawner.cs b/isometric-park-fna/Engines/Spawners/ContractSpawner.cs --- a/isometric-park-fna/Engines/Spawners/ContractSpawner.cs +++ b/isometric-park-fna/Engines/Spawners/ContractSpawner.cs @@ -1,5 +1,8 @@ +using System; +using System.Collections.Generic; +using Encompass; -using Encompass; +using Microsoft.Xna.Framework; using isometricparkfna.Messages; using isometricparkfna.Components; @@ -9,14 +12,59 @@ [Receives(typeof(SpawnContractMessage))] class ContractSpawner : Spawner { + private Random random_generator; + + public ContractSpawner() + { + this.random_generator = new Random(); + + } + private Vector2[] CreateArea(int start_x, int start_y, int max_size) + { + var squares = new List(new[] { new Vector2(start_x, start_y) }); + var squares_to_add = new HashSet(); + + while (squares.Count < max_size) + { + foreach (var square in squares) + { + if (random_generator.NextDouble() < 0.5 + && !squares.Contains(new Vector2(square.X + 1, square.Y))) + { + squares_to_add.Add(new Vector2(square.X + 1, square.Y)); + } + if (random_generator.NextDouble() < 0.5 + && !squares.Contains(new Vector2(square.X, square.Y + 1))) + { + squares_to_add.Add(new Vector2(square.X, square.Y + 1)); + } + if (random_generator.NextDouble() < 0.5 + && !squares.Contains(new Vector2(square.X - 1, square.Y))) + { + squares_to_add.Add(new Vector2(square.X - 1, square.Y)); + } + if (random_generator.NextDouble() < 0.5 + && !squares.Contains(new Vector2(square.X, square.Y - 1))) + { + squares_to_add.Add(new Vector2(square.X, square.Y - 1)); + } + } + squares.AddRange(squares_to_add); + squares_to_add.Clear(); + } + return squares.ToArray(); + } protected override void Spawn(in SpawnContractMessage message) { var contract = CreateEntity(); + + var squares = (message.squares == null) ? CreateArea(25, 25, 30) : message.squares; + // AddComponent - AddComponent(contract, new AreaComponent{squares = message.squares}); - AddComponent(contract, new NameComponent{DisplayName = message.name}); - AddComponent(contract, new ContractStatusComponent {status = ContractStatus.Proposed}); + AddComponent(contract, new AreaComponent { squares = squares }); + AddComponent(contract, new NameComponent { DisplayName = message.name }); + AddComponent(contract, new ContractStatusComponent { status = ContractStatus.Proposed }); } } diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -209,34 +209,49 @@ WorldBuilder.AddGeneralRenderer(new AreaRenderer(this.batch, this.monoFont), 1); WorldBuilder.AddGeneralRenderer(new ImGuiWindowRenderer(debugWindow.monoFont, this.imGuiWindowBridgeEngine), 2); var contractWindow = WorldBuilder.CreateEntity(); - WorldBuilder.SetComponent(contractWindow, new VisibilityComponent{visible = false}); - WorldBuilder.SetComponent(contractWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.Contracts}); + WorldBuilder.SetComponent(contractWindow, new VisibilityComponent { visible = false }); + WorldBuilder.SetComponent(contractWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Contracts }); var forestWindow = WorldBuilder.CreateEntity(); - WorldBuilder.SetComponent(forestWindow, new VisibilityComponent{visible = false}); - WorldBuilder.SetComponent(forestWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.Forest}); + WorldBuilder.SetComponent(forestWindow, new VisibilityComponent { visible = false }); + WorldBuilder.SetComponent(forestWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.Forest }); var newsWindow = WorldBuilder.CreateEntity(); - WorldBuilder.SetComponent(newsWindow, new VisibilityComponent{visible = false}); - WorldBuilder.SetComponent(newsWindow, new WindowTypeComponent{type = isometricparkfna.Messages.Window.News}); + WorldBuilder.SetComponent(newsWindow, new VisibilityComponent { visible = false }); + WorldBuilder.SetComponent(newsWindow, new WindowTypeComponent { type = isometricparkfna.Messages.Window.News }); // var budgetWindow = WorldBuilder.CreateEntity(); // WorldBuilder.SetComponent(budgetWindow, new VisibilityComponent{visible = true}); // WorldBuilder.SetComponent(budgetWindow, new BudgetComponent()); - + var area = WorldBuilder.CreateEntity(); // WorldBuilder.SetComponent(area, new AreaComponent{squares = new[] {new Vector2(4,4), new Vector2(5,4)}}); - WorldBuilder.SendMessage(new SpawnContractMessage{squares = new[] {new Vector2(4,4), new Vector2(5,4)}, - name = "Northshore Logging"}); + var size = 5; + var squares = new Vector2[size * size]; + var start_x = 10; + for (int i = 0; i < size; i++) + { + for (int j = 0; j < size; j++) + { + squares[i * size + j] = new Vector2(i + start_x, j); + } + + } WorldBuilder.SendMessage(new SpawnContractMessage { - squares = new[] { new Vector2(6, 6), new Vector2(6, 7), new Vector2(6, 8) }, + squares = squares, + //new[] {new Vector2(4,4), new Vector2(5,4)}, + name = "Northshore Logging" + }); + WorldBuilder.SendMessage(new SpawnContractMessage + { + // squares = squares2, //new[] { new Vector2(6, 6), new Vector2(6, 7), new Vector2(6, 8) }, name = "Aeres Maximalis Ltd." }); World = WorldBuilder.Build(); - + var bakedMono = TtfFontBaker.Bake(File.OpenRead(@"Content/iosevka-term-extendedmedium.ttf"), 15, 1024, @@ -260,31 +275,31 @@ this.output = grammar.Flatten("#greeting#"); var result = grammar.Flatten("#[assistantName:#assistantNames#][whatever:whatever]vars#"); - Func toUpper = delegate (string i) - { - return i.ToUpper(); - }; + Func toUpper = delegate (string i) + { + return i.ToUpper(); + }; - grammar.AddModifier("toUpper", toUpper); + grammar.AddModifier("toUpper", toUpper); - var newItems = new[] {new NewsItem{hed="Test", contents="#city.toUpper# - This is where the lede would go. #whatever#", source="Wire"} + var newItems = new[] {new NewsItem{hed="Test", contents="#city.toUpper# - This is where the lede would go. #whatever#", source="Wire"} }; - this.newsItems = newItems.ToList(); + this.newsItems = newItems.ToList(); - using (var sr = new StreamReader(@"Content/news_items.yaml")) - { - this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd())); - } - using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml")) - { - this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd())); - } - this.simulation.LoadContent(this.newsItems, this.grammar); - // this.newsItems = this.newsItems.Select(s => s.Flatten(this.grammar)).ToList().Shuffle(); + using (var sr = new StreamReader(@"Content/news_items.yaml")) + { + this.newsItems.AddRange(NewsItem.FromYaml(sr.ReadToEnd())); + } + using (var sr_pregenerated = new StreamReader(@"Content/news_items_pregenerated.yaml")) + { + this.newsItems.AddRange(NewsItem.FromYaml(sr_pregenerated.ReadToEnd())); + } + this.simulation.LoadContent(this.newsItems, this.grammar); + // this.newsItems = this.newsItems.Select(s => s.Flatten(this.grammar)).ToList().Shuffle(); - this.remainingDialog = new Queue>(); + this.remainingDialog = new Queue>(); #if DEBUG this.remainingDialog.Enqueue(DialogTrees.flatten(DialogTrees.testTree, this.grammar)); @@ -298,6 +313,8 @@ } + + protected override void UnloadContent() { batch.Dispose();