public void Handle(IStateMachine <string, IGameSectorLayerService> machine) { if (machine.SharedContext == null) { machine.SharedContext.Messages.Add("game sector is not available"); return; } var centerFrames = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 1, 6, 5, 5); var horizontalFramesChunkA = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 0, 5, 0, 0); var verticalFramesChunkA = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 0, 6, 1, 1); var verticalFramesChunkB = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 0, 2, 2, 2); var finalVerticalFramesChunk = verticalFramesChunkA .Union(verticalFramesChunkB.Select(kv => kv)) .ToDictionary(kv => kv.Key, kv => kv.Value); var buildingTops = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 3, 6, 2, 2); var buildingDownsA = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 0, 6, 3, 4); var buildingDownsB = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 0, 5, 4, 0); var buildingDownsC = FrameGeneratorService.GenerateGameSheetAtlas("miniCity", 32, 32, 0, 0, 5, 5); var finalBuildingDowns = buildingDownsA .Union(buildingDownsB.Select(kv => kv)) .Union(buildingDownsC.Select(kv => kv)) .ToDictionary(kv => kv.Key, kv => kv.Value); var center = new RandomTilesetPartFactory(ImagePath, centerFrames.Select(kv => kv.Key).ToList()); var horizontal = new RandomTilesetPartFactory(ImagePath, horizontalFramesChunkA.Select(kv => kv.Key).ToList()); var vertical = new RandomTilesetPartFactory(ImagePath, finalVerticalFramesChunk.Select(kv => kv.Key).ToList()); var buildingTop = new RandomTilesetPartFactory(ImagePath, buildingTops.Select(kv => kv.Key).ToList()); var buildingDown = new RandomTilesetPartFactory(ImagePath, finalBuildingDowns.Select(kv => kv.Key).ToList()); machine.SharedContext.Factories.ImageDataFactory.Add(StreetCenterImageDataFactory, center); machine.SharedContext.Factories.ImageDataFactory.Add(HorizontalImageDataFactory, horizontal); machine.SharedContext.Factories.ImageDataFactory.Add(VerticalImageDataFactory, vertical); machine.SharedContext.Factories.ImageDataFactory.Add(BuildingTopDataFactory, buildingTop); machine.SharedContext.Factories.ImageDataFactory.Add(BuildingDataFactory, buildingDown); }
private Dictionary <string, Rectangle> FramesWithCircularLocation() => FrameGeneratorService.GenerateGameSheetAtlas(MiniCityImagePath, 32, 32, 3, 6, 2, 2) .Union(FrameGeneratorService.GenerateGameSheetAtlas(MiniCityImagePath, 32, 32, 0, 6, 3, 4).Select(kv => kv)) .Union(FrameGeneratorService.GenerateGameSheetAtlas(MiniCityImagePath, 32, 32, 0, 5, 4, 0).Select(kv => kv)) .Union(FrameGeneratorService.GenerateGameSheetAtlas(MiniCityImagePath, 32, 32, 0, 0, 5, 5).Select(kv => kv)) .ToDictionary(kv => kv.Key, kv => kv.Value);