From dc1f705daaab43debe463316ce8c7f08ed25a9ce Mon Sep 17 00:00:00 2001 From: Robin Choffardet Date: Sun, 23 Feb 2025 14:13:56 +0100 Subject: [PATCH 1/5] Reorganize files --- .gitignore | 529 ++++++++++++++++-- C7/C7.sln => C7.sln | 31 +- C7GameDataTests/data/output/info.txt | 1 - {Blast => src/Blast}/BitStream.cs | 0 {Blast => src/Blast}/Blast.cs | 0 {Blast => src/Blast}/Blast.csproj | 0 {Blast => src/Blast}/BlastException.cs | 0 {Blast => src/Blast}/HuffmanTable.cs | 0 {Blast => src/Blast}/InputBuffer.cs | 0 {Blast => src/Blast}/readme.md | 0 {Blast => src/Blast}/reference-code/blast.c | 0 {Blast => src/Blast}/reference-code/blast.h | 0 {C7 => src/C7}/AnimationManager.cs | 0 {C7 => src/C7}/AnimationTracker.cs | 0 {C7 => src/C7}/Art/Cities/rMIDEAST.pcx | Bin {C7 => src/C7}/Art/Title_Screen.jpg | Bin {C7 => src/C7}/Art/Title_Screen.jpg.import | 0 {C7 => src/C7}/Art/Units/Settler/Build.flc | Bin {C7 => src/C7}/Art/Units/Settler/Captured.flc | Bin {C7 => src/C7}/Art/Units/Settler/Death.flc | Bin {C7 => src/C7}/Art/Units/Settler/Default.flc | Bin {C7 => src/C7}/Art/Units/Settler/Fidget.flc | Bin .../C7}/Art/Units/Settler/Pedia/Large.pcx | Bin .../C7}/Art/Units/Settler/Pedia/Small.pcx | Bin .../C7}/Art/Units/Settler/Pedia/Unit32.pcx | Bin .../Units/Settler/Pedia/Unit32_TrueColour.pcx | Bin {C7 => src/C7}/Art/Units/Settler/Run.flc | Bin {C7 => src/C7}/Art/Units/Settler/Settler.ini | 0 {C7 => src/C7}/C7.csproj | 0 {C7 => src/C7}/C7Game.tscn | 0 {C7 => src/C7}/C7Theme.tres | 0 {C7 => src/C7}/Civ3Map/Civ3Map.cs | 0 {C7 => src/C7}/Civ3Unit/Civ3Unit.cs | 0 {C7 => src/C7}/ComponentManager.cs | 0 {C7 => src/C7}/Credits.cs | 0 {C7 => src/C7}/Credits.tscn | 0 {C7 => src/C7}/Fonts/LICENSE-NotoSans.txt | 186 +++--- {C7 => src/C7}/Fonts/NSansFont12Pt co.tres | 0 {C7 => src/C7}/Fonts/NSansFont24Pt.tres | 0 {C7 => src/C7}/Fonts/NotoSans-Bold.ttf | Bin {C7 => src/C7}/Fonts/NotoSans-Bold.ttf.import | 0 {C7 => src/C7}/Fonts/NotoSans-BoldItalic.ttf | Bin .../C7}/Fonts/NotoSans-BoldItalic.ttf.import | 0 {C7 => src/C7}/Fonts/NotoSans-Italic.ttf | Bin .../C7}/Fonts/NotoSans-Italic.ttf.import | 0 {C7 => src/C7}/Fonts/NotoSans-Regular.ttf | Bin .../C7}/Fonts/NotoSans-Regular.ttf.import | 0 {C7 => src/C7}/Game.cs | 0 {C7 => src/C7}/GlobalSingleton.cs | 0 {C7 => src/C7}/GodotSink.cs | 0 {C7 => src/C7}/LogManager.cs | 0 {C7 => src/C7}/MainMenu.cs | 0 {C7 => src/C7}/MainMenu.tscn | 0 {C7 => src/C7}/MainMenuMusicPlayer.cs | 0 {C7 => src/C7}/MainMenuTheme.tres | 0 {C7 => src/C7}/Map/BorderLayer.cs | 0 {C7 => src/C7}/Map/CityLabelScene.cs | 0 {C7 => src/C7}/Map/CityLayer.cs | 0 {C7 => src/C7}/Map/CityScene.cs | 0 {C7 => src/C7}/Map/FogOfWarLayer.cs | 0 {C7 => src/C7}/Map/GotoLayer.cs | 0 {C7 => src/C7}/Map/ResourceLayer.cs | 0 {C7 => src/C7}/Map/TileAssignmentLayer.cs | 0 {C7 => src/C7}/Map/TileOverlayLayer.cs | 0 {C7 => src/C7}/Map/TntLayer.cs | 0 {C7 => src/C7}/Map/UnitLayer.cs | 0 {C7 => src/C7}/MapView.cs | 0 {C7 => src/C7}/PCXToGodot.cs | 0 {C7 => src/C7}/ParameterWrapper.cs | 0 {C7 => src/C7}/Text/c7-static-map-save.json | 0 {C7 => src/C7}/Text/credits.txt | 0 {C7 => src/C7}/Title_Screen.kra | Bin .../C7}/UIElements/Advisors/Advisors.cs | 0 .../UIElements/Advisors/DomesticAdvisor.cs | 0 .../C7}/UIElements/Advisors/ScienceAdvisor.cs | 0 {C7 => src/C7}/UIElements/Advisors/TechBox.cs | 0 .../C7}/UIElements/CityScreen/CityScreen.cs | 0 {C7 => src/C7}/UIElements/Civ3FileDialog.cs | 0 .../C7}/UIElements/GameStatus/GameStatus.cs | 0 .../GameStatus/LowerRightInfoBox.cs | 0 .../C7}/UIElements/Popups/BuildCityDialog.cs | 0 .../Popups/CivilizationDestroyed.cs | 0 .../UIElements/Popups/DisbandConfirmation.cs | 0 .../C7}/UIElements/Popups/ErrorMessage.cs | 0 .../C7}/UIElements/Popups/EscapeQuitPopup.cs | 0 {C7 => src/C7}/UIElements/Popups/GameMenu.cs | 0 {C7 => src/C7}/UIElements/Popups/Popup.cs | 0 .../C7}/UIElements/Popups/PopupOverlay.cs | 0 {C7 => src/C7}/UIElements/RightClickMenu.cs | 0 {C7 => src/C7}/UIElements/Theme.cs | 0 .../UIElements/UnitButtons/RenameButton.cs | 0 .../C7}/UIElements/UnitButtons/UnitButtons.cs | 0 .../UnitButtons/UnitControlButton.cs | 0 .../UIElements/UpperLeftNav/AdvisorButton.cs | 0 .../UpperLeftNav/CivilopediaButton.cs | 0 .../C7}/UIElements/UpperLeftNav/MenuButton.cs | 0 .../C7}/UIElements/civ3_file_dialog.tscn | 0 {C7 => src/C7}/UnitTint.gdshader | 0 {C7 => src/C7}/Util.cs | 0 {C7 => src/C7}/default_env.tres | 0 {C7 => src/C7}/export_presets.cfg | 0 {C7 => src/C7}/icon.png | Bin {C7 => src/C7}/icon.png.import | 0 {C7 => src/C7}/project.godot | 0 {C7 => src/C7}/readme.md | 0 {C7 => src/C7}/test.tscn | 0 {C7 => src/C7}/tests/TestUnit.cs | 0 {C7 => src/C7}/tests/Unit.tscn | 0 {C7Engine => src/C7Engine}/AI/BarbarianAI.cs | 0 .../C7Engine}/AI/CityProductionAI.cs | 0 .../C7Engine}/AI/CityTileAssignmentAI.cs | 0 {C7Engine => src/C7Engine}/AI/IAI.cs | 0 .../C7Engine}/AI/Pathing/AStarAlgorithm.cs | 0 .../C7Engine}/AI/Pathing/BinaryMinHeap.cs | 0 {C7Engine => src/C7Engine}/AI/Pathing/Edge.cs | 0 .../C7Engine}/AI/Pathing/EdgeWalker.cs | 0 .../C7Engine}/AI/Pathing/PathingAlgorithm.cs | 0 .../AI/Pathing/PathingAlgorithmChooser.cs | 0 .../C7Engine}/AI/Pathing/PathingNotes.txt | 0 {C7Engine => src/C7Engine}/AI/PlayerAI.cs | 0 .../AI/StrategicAI/ExpansionPriority.cs | 0 .../AI/StrategicAI/ExplorationPriority.cs | 0 .../AI/StrategicAI/PriorityAggregator.cs | 0 .../AI/StrategicAI/UtilityCalculations.cs | 0 .../C7Engine}/AI/StrategicAI/WarPriority.cs | 0 .../AI/StrategicPriorityArbitrator.cs | 0 .../C7Engine}/AI/UnitAI/CombatAI.cs | 0 .../C7Engine}/AI/UnitAI/DefenderAI.cs | 0 .../C7Engine}/AI/UnitAI/ExplorerAI.cs | 0 .../C7Engine}/AI/UnitAI/SettlerAI.cs | 0 .../C7Engine}/AI/UnitAI/SettlerLocationAI.cs | 0 .../C7Engine}/AI/UnitAI/UnitAI.cs | 0 {C7Engine => src/C7Engine}/C7Engine.csproj | 0 {C7Engine => src/C7Engine}/C7Settings.cs | 0 {C7Engine => src/C7Engine}/CityExtensions.cs | 0 {C7Engine => src/C7Engine}/EngineStorage.cs | 0 .../C7Engine}/EntryPoints/CityInteractions.cs | 0 .../C7Engine}/EntryPoints/CreateGame.cs | 0 .../C7Engine}/EntryPoints/MessageToEngine.cs | 0 .../C7Engine}/EntryPoints/MessageToUI.cs | 0 .../C7Engine}/EntryPoints/TurnHandling.cs | 0 .../C7Engine}/EntryPoints/UnitInteractions.cs | 0 .../C7Engine}/MapUnitExtensions.cs | 0 {C7Engine => src/C7Engine}/SaveManager.cs | 0 {C7Engine => src/C7Engine}/TileExtensions.cs | 0 {C7Engine => src/C7Engine}/Weighting.cs | 0 {C7Engine => src/C7Engine}/readme.md | 0 .../C7GameData}/AIData/CombatAIData.cs | 0 .../C7GameData}/AIData/DefenderAIData.cs | 0 .../C7GameData}/AIData/ExplorerAIData.cs | 0 .../C7GameData}/AIData/SettlerAIData.cs | 0 .../C7GameData}/AIData/StrategicPriority.cs | 0 .../C7GameData}/AIData/TileKnowledge.cs | 0 .../C7GameData}/AIData/TilePath.cs | 0 .../C7GameData}/AIData/UnitAIData.cs | 0 {C7GameData => src/C7GameData}/Actions.cs | 0 .../C7GameData}/AnimationParams.cs | 0 .../C7GameData}/BarbarianInfo.cs | 0 {C7GameData => src/C7GameData}/Building.cs | 0 .../C7GameData}/C7GameData.csproj | 0 {C7GameData => src/C7GameData}/CitizenType.cs | 0 {C7GameData => src/C7GameData}/City.cs | 0 .../C7GameData}/CityResident.cs | 0 .../C7GameData}/Civilization.cs | 0 .../C7GameData}/CombatResult.cs | 0 {C7GameData => src/C7GameData}/CombatRole.cs | 0 .../C7GameData}/ExperienceLevel.cs | 0 {C7GameData => src/C7GameData}/GameData.cs | 0 {C7GameData => src/C7GameData}/GameMap.cs | 0 {C7GameData => src/C7GameData}/ID.cs | 0 {C7GameData => src/C7GameData}/IProducible.cs | 0 {C7GameData => src/C7GameData}/ImportCiv3.cs | 0 .../C7GameData}/Json2DArrayConverter.cs | 0 {C7GameData => src/C7GameData}/MapGenNoise.cs | 0 {C7GameData => src/C7GameData}/MapUnit.cs | 0 .../C7GameData}/MovementPoints.cs | 0 {C7GameData => src/C7GameData}/PediaIcons.cs | 0 {C7GameData => src/C7GameData}/Player.cs | 0 {C7GameData => src/C7GameData}/Resource.cs | 0 .../C7GameData}/Save/SaveCity.cs | 0 .../C7GameData}/Save/SaveGame.cs | 0 .../C7GameData}/Save/SaveMap.cs | 0 .../C7GameData}/Save/SavePlayer.cs | 0 .../C7GameData}/Save/SaveTech.cs | 0 .../C7GameData}/Save/SaveTile.cs | 0 .../C7GameData}/Save/SaveUnit.cs | 0 .../C7GameData}/Save/TileLocation.cs | 0 {C7GameData => src/C7GameData}/SaveFormat.cs | 0 .../C7GameData}/StrengthBonus.cs | 0 {C7GameData => src/C7GameData}/Tech.cs | 0 {C7GameData => src/C7GameData}/TerrainType.cs | 0 {C7GameData => src/C7GameData}/Tile.cs | 0 .../C7GameData}/UnitPrototype.cs | 0 {C7GameData => src/C7GameData}/readme.md | 0 .../ConvertCiv3Media}/Civ3UnitSprite.cs | 0 .../ConvertCiv3Media}/ConvertCiv3Media.csproj | 0 .../ConvertCiv3Media}/ReadFlic.cs | 0 .../ConvertCiv3Media}/ReadPcx.cs | 0 .../ConvertCiv3Media}/readme.md | 0 .../ConvertCiv3Media}/test.ps1 | 0 {QueryCiv3 => src/QueryCiv3}/Biq.cs | 0 .../QueryCiv3}/BiqSections/Bldg.cs | 0 .../QueryCiv3}/BiqSections/City.cs | 0 .../QueryCiv3}/BiqSections/Clny.cs | 0 .../QueryCiv3}/BiqSections/Cont.cs | 0 .../QueryCiv3}/BiqSections/Ctzn.cs | 0 .../QueryCiv3}/BiqSections/Cult.cs | 0 .../QueryCiv3}/BiqSections/Diff.cs | 0 .../QueryCiv3}/BiqSections/Eras.cs | 0 .../QueryCiv3}/BiqSections/Espn.cs | 0 .../QueryCiv3}/BiqSections/Expr.cs | 0 .../QueryCiv3}/BiqSections/Flav.cs | 0 .../QueryCiv3}/BiqSections/Game.cs | 0 .../QueryCiv3}/BiqSections/Good.cs | 0 .../QueryCiv3}/BiqSections/Govt.cs | 0 .../QueryCiv3}/BiqSections/Lead.cs | 0 .../QueryCiv3}/BiqSections/Prto.cs | 0 .../QueryCiv3}/BiqSections/Race.cs | 0 .../QueryCiv3}/BiqSections/Rule.cs | 0 .../QueryCiv3}/BiqSections/Sloc.cs | 0 .../QueryCiv3}/BiqSections/Tech.cs | 0 .../QueryCiv3}/BiqSections/Terr.cs | 0 .../QueryCiv3}/BiqSections/Tfrm.cs | 0 .../QueryCiv3}/BiqSections/Tile.cs | 0 .../QueryCiv3}/BiqSections/Unit.cs | 0 .../QueryCiv3}/BiqSections/Wchr.cs | 0 .../QueryCiv3}/BiqSections/Wmap.cs | 0 .../QueryCiv3}/BiqSections/Wsiz.cs | 0 {QueryCiv3 => src/QueryCiv3}/Civ3Location.cs | 0 {QueryCiv3 => src/QueryCiv3}/QueryCiv3.cs | 0 {QueryCiv3 => src/QueryCiv3}/QueryCiv3.csproj | 0 {QueryCiv3 => src/QueryCiv3}/Sav.cs | 0 .../QueryCiv3}/SavSections/Aibs.cs | 0 .../QueryCiv3}/SavSections/Binf.cs | 0 .../QueryCiv3}/SavSections/Bitm.cs | 0 .../QueryCiv3}/SavSections/City.cs | 0 .../QueryCiv3}/SavSections/Clny.cs | 0 .../QueryCiv3}/SavSections/Cnsl.cs | 0 .../QueryCiv3}/SavSections/Cont.cs | 0 .../QueryCiv3}/SavSections/Ctpg.cs | 0 .../QueryCiv3}/SavSections/Ctzn.cs | 0 .../QueryCiv3}/SavSections/Date.cs | 0 .../QueryCiv3}/SavSections/Faxx.cs | 0 .../QueryCiv3}/SavSections/Game.cs | 0 .../QueryCiv3}/SavSections/Hist.cs | 0 .../QueryCiv3}/SavSections/Idls.cs | 0 .../QueryCiv3}/SavSections/Lead.cs | 0 .../QueryCiv3}/SavSections/Outp.cs | 0 .../QueryCiv3}/SavSections/Palv.cs | 0 .../QueryCiv3}/SavSections/Peer.cs | 0 .../QueryCiv3}/SavSections/Plgi.cs | 0 .../QueryCiv3}/SavSections/Popd.cs | 0 .../QueryCiv3}/SavSections/Radt.cs | 0 .../QueryCiv3}/SavSections/Rple.cs | 0 .../QueryCiv3}/SavSections/Rplt.cs | 0 .../QueryCiv3}/SavSections/Tile.cs | 0 .../QueryCiv3}/SavSections/Tutr.cs | 0 .../QueryCiv3}/SavSections/Unit.cs | 0 .../QueryCiv3}/SavSections/Vloc.cs | 0 .../QueryCiv3}/SavSections/Wrld.cs | 0 {QueryCiv3 => src/QueryCiv3}/Util.cs | 0 {QueryCiv3 => src/QueryCiv3}/readme.md | 0 .../C7GameDataTests}/.gitignore | 0 .../C7GameDataTests}/C7GameDataTests.csproj | 2 +- .../C7GameDataTests}/CityTest.cs | 0 .../C7GameDataTests}/GameMapTest.cs | 0 .../C7GameDataTests}/IDFactoryTests.cs | 0 .../C7GameDataTests}/SaveTest.cs | 0 .../AI/Pathing/BinaryMinHeapTest.cs | 0 .../EngineTests}/AI/Pathing/EdgeWalkerTest.cs | 0 .../EngineTests}/EngineTests.csproj | 4 +- .../BuildDevSave/BuildDevSave.csproj | 4 +- .../BuildDevSave/BuildDevSave.sln | 0 {_Console => tools}/BuildDevSave/Program.cs | 0 {_Console => tools}/BuildDevSave/readme.md | 0 275 files changed, 599 insertions(+), 158 deletions(-) rename C7/C7.sln => C7.sln (85%) delete mode 100644 C7GameDataTests/data/output/info.txt rename {Blast => src/Blast}/BitStream.cs (100%) rename {Blast => src/Blast}/Blast.cs (100%) rename {Blast => src/Blast}/Blast.csproj (100%) rename {Blast => src/Blast}/BlastException.cs (100%) rename {Blast => src/Blast}/HuffmanTable.cs (100%) rename {Blast => src/Blast}/InputBuffer.cs (100%) rename {Blast => src/Blast}/readme.md (100%) rename {Blast => src/Blast}/reference-code/blast.c (100%) rename {Blast => src/Blast}/reference-code/blast.h (100%) rename {C7 => src/C7}/AnimationManager.cs (100%) rename {C7 => src/C7}/AnimationTracker.cs (100%) rename {C7 => src/C7}/Art/Cities/rMIDEAST.pcx (100%) rename {C7 => src/C7}/Art/Title_Screen.jpg (100%) rename {C7 => src/C7}/Art/Title_Screen.jpg.import (100%) rename {C7 => src/C7}/Art/Units/Settler/Build.flc (100%) rename {C7 => src/C7}/Art/Units/Settler/Captured.flc (100%) rename {C7 => src/C7}/Art/Units/Settler/Death.flc (100%) rename {C7 => src/C7}/Art/Units/Settler/Default.flc (100%) rename {C7 => src/C7}/Art/Units/Settler/Fidget.flc (100%) rename {C7 => src/C7}/Art/Units/Settler/Pedia/Large.pcx (100%) rename {C7 => src/C7}/Art/Units/Settler/Pedia/Small.pcx (100%) rename {C7 => src/C7}/Art/Units/Settler/Pedia/Unit32.pcx (100%) rename {C7 => src/C7}/Art/Units/Settler/Pedia/Unit32_TrueColour.pcx (100%) rename {C7 => src/C7}/Art/Units/Settler/Run.flc (100%) rename {C7 => src/C7}/Art/Units/Settler/Settler.ini (100%) rename {C7 => src/C7}/C7.csproj (100%) rename {C7 => src/C7}/C7Game.tscn (100%) rename {C7 => src/C7}/C7Theme.tres (100%) rename {C7 => src/C7}/Civ3Map/Civ3Map.cs (100%) rename {C7 => src/C7}/Civ3Unit/Civ3Unit.cs (100%) rename {C7 => src/C7}/ComponentManager.cs (100%) rename {C7 => src/C7}/Credits.cs (100%) rename {C7 => src/C7}/Credits.tscn (100%) rename {C7 => src/C7}/Fonts/LICENSE-NotoSans.txt (97%) rename {C7 => src/C7}/Fonts/NSansFont12Pt co.tres (100%) rename {C7 => src/C7}/Fonts/NSansFont24Pt.tres (100%) rename {C7 => src/C7}/Fonts/NotoSans-Bold.ttf (100%) rename {C7 => src/C7}/Fonts/NotoSans-Bold.ttf.import (100%) rename {C7 => src/C7}/Fonts/NotoSans-BoldItalic.ttf (100%) rename {C7 => src/C7}/Fonts/NotoSans-BoldItalic.ttf.import (100%) rename {C7 => src/C7}/Fonts/NotoSans-Italic.ttf (100%) rename {C7 => src/C7}/Fonts/NotoSans-Italic.ttf.import (100%) rename {C7 => src/C7}/Fonts/NotoSans-Regular.ttf (100%) rename {C7 => src/C7}/Fonts/NotoSans-Regular.ttf.import (100%) rename {C7 => src/C7}/Game.cs (100%) rename {C7 => src/C7}/GlobalSingleton.cs (100%) rename {C7 => src/C7}/GodotSink.cs (100%) rename {C7 => src/C7}/LogManager.cs (100%) rename {C7 => src/C7}/MainMenu.cs (100%) rename {C7 => src/C7}/MainMenu.tscn (100%) rename {C7 => src/C7}/MainMenuMusicPlayer.cs (100%) rename {C7 => src/C7}/MainMenuTheme.tres (100%) rename {C7 => src/C7}/Map/BorderLayer.cs (100%) rename {C7 => src/C7}/Map/CityLabelScene.cs (100%) rename {C7 => src/C7}/Map/CityLayer.cs (100%) rename {C7 => src/C7}/Map/CityScene.cs (100%) rename {C7 => src/C7}/Map/FogOfWarLayer.cs (100%) rename {C7 => src/C7}/Map/GotoLayer.cs (100%) rename {C7 => src/C7}/Map/ResourceLayer.cs (100%) rename {C7 => src/C7}/Map/TileAssignmentLayer.cs (100%) rename {C7 => src/C7}/Map/TileOverlayLayer.cs (100%) rename {C7 => src/C7}/Map/TntLayer.cs (100%) rename {C7 => src/C7}/Map/UnitLayer.cs (100%) rename {C7 => src/C7}/MapView.cs (100%) rename {C7 => src/C7}/PCXToGodot.cs (100%) rename {C7 => src/C7}/ParameterWrapper.cs (100%) rename {C7 => src/C7}/Text/c7-static-map-save.json (100%) rename {C7 => src/C7}/Text/credits.txt (100%) rename {C7 => src/C7}/Title_Screen.kra (100%) rename {C7 => src/C7}/UIElements/Advisors/Advisors.cs (100%) rename {C7 => src/C7}/UIElements/Advisors/DomesticAdvisor.cs (100%) rename {C7 => src/C7}/UIElements/Advisors/ScienceAdvisor.cs (100%) rename {C7 => src/C7}/UIElements/Advisors/TechBox.cs (100%) rename {C7 => src/C7}/UIElements/CityScreen/CityScreen.cs (100%) rename {C7 => src/C7}/UIElements/Civ3FileDialog.cs (100%) rename {C7 => src/C7}/UIElements/GameStatus/GameStatus.cs (100%) rename {C7 => src/C7}/UIElements/GameStatus/LowerRightInfoBox.cs (100%) rename {C7 => src/C7}/UIElements/Popups/BuildCityDialog.cs (100%) rename {C7 => src/C7}/UIElements/Popups/CivilizationDestroyed.cs (100%) rename {C7 => src/C7}/UIElements/Popups/DisbandConfirmation.cs (100%) rename {C7 => src/C7}/UIElements/Popups/ErrorMessage.cs (100%) rename {C7 => src/C7}/UIElements/Popups/EscapeQuitPopup.cs (100%) rename {C7 => src/C7}/UIElements/Popups/GameMenu.cs (100%) rename {C7 => src/C7}/UIElements/Popups/Popup.cs (100%) rename {C7 => src/C7}/UIElements/Popups/PopupOverlay.cs (100%) rename {C7 => src/C7}/UIElements/RightClickMenu.cs (100%) rename {C7 => src/C7}/UIElements/Theme.cs (100%) rename {C7 => src/C7}/UIElements/UnitButtons/RenameButton.cs (100%) rename {C7 => src/C7}/UIElements/UnitButtons/UnitButtons.cs (100%) rename {C7 => src/C7}/UIElements/UnitButtons/UnitControlButton.cs (100%) rename {C7 => src/C7}/UIElements/UpperLeftNav/AdvisorButton.cs (100%) rename {C7 => src/C7}/UIElements/UpperLeftNav/CivilopediaButton.cs (100%) rename {C7 => src/C7}/UIElements/UpperLeftNav/MenuButton.cs (100%) rename {C7 => src/C7}/UIElements/civ3_file_dialog.tscn (100%) rename {C7 => src/C7}/UnitTint.gdshader (100%) rename {C7 => src/C7}/Util.cs (100%) rename {C7 => src/C7}/default_env.tres (100%) rename {C7 => src/C7}/export_presets.cfg (100%) rename {C7 => src/C7}/icon.png (100%) rename {C7 => src/C7}/icon.png.import (100%) rename {C7 => src/C7}/project.godot (100%) rename {C7 => src/C7}/readme.md (100%) rename {C7 => src/C7}/test.tscn (100%) rename {C7 => src/C7}/tests/TestUnit.cs (100%) rename {C7 => src/C7}/tests/Unit.tscn (100%) rename {C7Engine => src/C7Engine}/AI/BarbarianAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/CityProductionAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/CityTileAssignmentAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/IAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/AStarAlgorithm.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/BinaryMinHeap.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/Edge.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/EdgeWalker.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/PathingAlgorithm.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/PathingAlgorithmChooser.cs (100%) rename {C7Engine => src/C7Engine}/AI/Pathing/PathingNotes.txt (100%) rename {C7Engine => src/C7Engine}/AI/PlayerAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/StrategicAI/ExpansionPriority.cs (100%) rename {C7Engine => src/C7Engine}/AI/StrategicAI/ExplorationPriority.cs (100%) rename {C7Engine => src/C7Engine}/AI/StrategicAI/PriorityAggregator.cs (100%) rename {C7Engine => src/C7Engine}/AI/StrategicAI/UtilityCalculations.cs (100%) rename {C7Engine => src/C7Engine}/AI/StrategicAI/WarPriority.cs (100%) rename {C7Engine => src/C7Engine}/AI/StrategicPriorityArbitrator.cs (100%) rename {C7Engine => src/C7Engine}/AI/UnitAI/CombatAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/UnitAI/DefenderAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/UnitAI/ExplorerAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/UnitAI/SettlerAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/UnitAI/SettlerLocationAI.cs (100%) rename {C7Engine => src/C7Engine}/AI/UnitAI/UnitAI.cs (100%) rename {C7Engine => src/C7Engine}/C7Engine.csproj (100%) rename {C7Engine => src/C7Engine}/C7Settings.cs (100%) rename {C7Engine => src/C7Engine}/CityExtensions.cs (100%) rename {C7Engine => src/C7Engine}/EngineStorage.cs (100%) rename {C7Engine => src/C7Engine}/EntryPoints/CityInteractions.cs (100%) rename {C7Engine => src/C7Engine}/EntryPoints/CreateGame.cs (100%) rename {C7Engine => src/C7Engine}/EntryPoints/MessageToEngine.cs (100%) rename {C7Engine => src/C7Engine}/EntryPoints/MessageToUI.cs (100%) rename {C7Engine => src/C7Engine}/EntryPoints/TurnHandling.cs (100%) rename {C7Engine => src/C7Engine}/EntryPoints/UnitInteractions.cs (100%) rename {C7Engine => src/C7Engine}/MapUnitExtensions.cs (100%) rename {C7Engine => src/C7Engine}/SaveManager.cs (100%) rename {C7Engine => src/C7Engine}/TileExtensions.cs (100%) rename {C7Engine => src/C7Engine}/Weighting.cs (100%) rename {C7Engine => src/C7Engine}/readme.md (100%) rename {C7GameData => src/C7GameData}/AIData/CombatAIData.cs (100%) rename {C7GameData => src/C7GameData}/AIData/DefenderAIData.cs (100%) rename {C7GameData => src/C7GameData}/AIData/ExplorerAIData.cs (100%) rename {C7GameData => src/C7GameData}/AIData/SettlerAIData.cs (100%) rename {C7GameData => src/C7GameData}/AIData/StrategicPriority.cs (100%) rename {C7GameData => src/C7GameData}/AIData/TileKnowledge.cs (100%) rename {C7GameData => src/C7GameData}/AIData/TilePath.cs (100%) rename {C7GameData => src/C7GameData}/AIData/UnitAIData.cs (100%) rename {C7GameData => src/C7GameData}/Actions.cs (100%) rename {C7GameData => src/C7GameData}/AnimationParams.cs (100%) rename {C7GameData => src/C7GameData}/BarbarianInfo.cs (100%) rename {C7GameData => src/C7GameData}/Building.cs (100%) rename {C7GameData => src/C7GameData}/C7GameData.csproj (100%) rename {C7GameData => src/C7GameData}/CitizenType.cs (100%) rename {C7GameData => src/C7GameData}/City.cs (100%) rename {C7GameData => src/C7GameData}/CityResident.cs (100%) rename {C7GameData => src/C7GameData}/Civilization.cs (100%) rename {C7GameData => src/C7GameData}/CombatResult.cs (100%) rename {C7GameData => src/C7GameData}/CombatRole.cs (100%) rename {C7GameData => src/C7GameData}/ExperienceLevel.cs (100%) rename {C7GameData => src/C7GameData}/GameData.cs (100%) rename {C7GameData => src/C7GameData}/GameMap.cs (100%) rename {C7GameData => src/C7GameData}/ID.cs (100%) rename {C7GameData => src/C7GameData}/IProducible.cs (100%) rename {C7GameData => src/C7GameData}/ImportCiv3.cs (100%) rename {C7GameData => src/C7GameData}/Json2DArrayConverter.cs (100%) rename {C7GameData => src/C7GameData}/MapGenNoise.cs (100%) rename {C7GameData => src/C7GameData}/MapUnit.cs (100%) rename {C7GameData => src/C7GameData}/MovementPoints.cs (100%) rename {C7GameData => src/C7GameData}/PediaIcons.cs (100%) rename {C7GameData => src/C7GameData}/Player.cs (100%) rename {C7GameData => src/C7GameData}/Resource.cs (100%) rename {C7GameData => src/C7GameData}/Save/SaveCity.cs (100%) rename {C7GameData => src/C7GameData}/Save/SaveGame.cs (100%) rename {C7GameData => src/C7GameData}/Save/SaveMap.cs (100%) rename {C7GameData => src/C7GameData}/Save/SavePlayer.cs (100%) rename {C7GameData => src/C7GameData}/Save/SaveTech.cs (100%) rename {C7GameData => src/C7GameData}/Save/SaveTile.cs (100%) rename {C7GameData => src/C7GameData}/Save/SaveUnit.cs (100%) rename {C7GameData => src/C7GameData}/Save/TileLocation.cs (100%) rename {C7GameData => src/C7GameData}/SaveFormat.cs (100%) rename {C7GameData => src/C7GameData}/StrengthBonus.cs (100%) rename {C7GameData => src/C7GameData}/Tech.cs (100%) rename {C7GameData => src/C7GameData}/TerrainType.cs (100%) rename {C7GameData => src/C7GameData}/Tile.cs (100%) rename {C7GameData => src/C7GameData}/UnitPrototype.cs (100%) rename {C7GameData => src/C7GameData}/readme.md (100%) rename {ConvertCiv3Media => src/ConvertCiv3Media}/Civ3UnitSprite.cs (100%) rename {ConvertCiv3Media => src/ConvertCiv3Media}/ConvertCiv3Media.csproj (100%) rename {ConvertCiv3Media => src/ConvertCiv3Media}/ReadFlic.cs (100%) rename {ConvertCiv3Media => src/ConvertCiv3Media}/ReadPcx.cs (100%) rename {ConvertCiv3Media => src/ConvertCiv3Media}/readme.md (100%) rename {ConvertCiv3Media => src/ConvertCiv3Media}/test.ps1 (100%) rename {QueryCiv3 => src/QueryCiv3}/Biq.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Bldg.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/City.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Clny.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Cont.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Ctzn.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Cult.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Diff.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Eras.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Espn.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Expr.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Flav.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Game.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Good.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Govt.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Lead.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Prto.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Race.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Rule.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Sloc.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Tech.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Terr.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Tfrm.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Tile.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Unit.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Wchr.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Wmap.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/BiqSections/Wsiz.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/Civ3Location.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/QueryCiv3.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/QueryCiv3.csproj (100%) rename {QueryCiv3 => src/QueryCiv3}/Sav.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Aibs.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Binf.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Bitm.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/City.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Clny.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Cnsl.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Cont.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Ctpg.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Ctzn.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Date.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Faxx.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Game.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Hist.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Idls.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Lead.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Outp.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Palv.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Peer.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Plgi.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Popd.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Radt.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Rple.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Rplt.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Tile.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Tutr.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Unit.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Vloc.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/SavSections/Wrld.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/Util.cs (100%) rename {QueryCiv3 => src/QueryCiv3}/readme.md (100%) rename {C7GameDataTests => tests/C7GameDataTests}/.gitignore (100%) rename {C7GameDataTests => tests/C7GameDataTests}/C7GameDataTests.csproj (92%) rename {C7GameDataTests => tests/C7GameDataTests}/CityTest.cs (100%) rename {C7GameDataTests => tests/C7GameDataTests}/GameMapTest.cs (100%) rename {C7GameDataTests => tests/C7GameDataTests}/IDFactoryTests.cs (100%) rename {C7GameDataTests => tests/C7GameDataTests}/SaveTest.cs (100%) rename {EngineTests => tests/EngineTests}/AI/Pathing/BinaryMinHeapTest.cs (100%) rename {EngineTests => tests/EngineTests}/AI/Pathing/EdgeWalkerTest.cs (100%) rename {EngineTests => tests/EngineTests}/EngineTests.csproj (87%) rename {_Console => tools}/BuildDevSave/BuildDevSave.csproj (56%) rename {_Console => tools}/BuildDevSave/BuildDevSave.sln (100%) rename {_Console => tools}/BuildDevSave/Program.cs (100%) rename {_Console => tools}/BuildDevSave/readme.md (100%) diff --git a/.gitignore b/.gitignore index d4e491a8..3eb80ae9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,52 +1,23 @@ -# Godot-specific ignores -.import/ -export.cfg -logs/ -.godot - -### This is excluded because Android builds may have secrets in export_presets.cfg ; see https://github.com/godotengine/godot-demo-projects/issues/329 -# re-ignoring it so manual exports don't mess with the to-be-finely-honed settings; can manually add if needs updating -export_presets.cfg -mono_crash.*.json -mono_crash.*.blob - -# Exports folder ignores -C7/Exports -Exports/ - -# Test runtime files -C7GameDataTests/data/ - -# Mono-specific ignores -.mono/ -data_*/ - -# Below here are ignores imported from Puppeteer's project -sav/ -*.png -*.pcx -*.flc -*.mp4 -*.webp -*.bin - -*.swp -*.*~ -project.lock.json -.DS_Store -*.pyc +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from `dotnet new gitignore` -# Visual Studio Code -.vscode +# dotenv files +.env # User-specific files +*.rsuser *.suo *.user *.userosscache *.sln.docstates -C7.ini -log.txt -*.csproj.old + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* # Build results [Dd]ebug/ @@ -55,14 +26,476 @@ log.txt [Rr]eleases/ x64/ x86/ -build/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ -msbuild.log -msbuild.err -msbuild.wrn -*.exe +[Ll]og/ +[Ll]ogs/ -# Visual Studio 2015 +# Visual Studio 2015/2017 cache/options directory .vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea/ + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp + + +### Godot ### +.import/ +export.cfg +logs/ +.godot + + +### C7 ### +C7.ini +log.txt +*.csproj.old + +# Exports folder ignores +C7/Exports +Exports/ diff --git a/C7/C7.sln b/C7.sln similarity index 85% rename from C7/C7.sln rename to C7.sln index 06766556..cd082c92 100644 --- a/C7/C7.sln +++ b/C7.sln @@ -1,31 +1,35 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29609.76 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "C7", "C7.csproj", "{5DF4328C-C326-46C6-8718-320FF6071871}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "C7", "src\C7\C7.csproj", "{5DF4328C-C326-46C6-8718-320FF6071871}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "C7Engine", "..\C7Engine\C7Engine.csproj", "{FD440E96-DAB8-48DF-85FD-72F75384CA62}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "C7Engine", "src\C7Engine\C7Engine.csproj", "{FD440E96-DAB8-48DF-85FD-72F75384CA62}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "C7GameData", "..\C7GameData\C7GameData.csproj", "{4ECB5932-6D85-4953-B3D8-BD8334D792DE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "C7GameData", "src\C7GameData\C7GameData.csproj", "{4ECB5932-6D85-4953-B3D8-BD8334D792DE}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConvertCiv3Media", "..\ConvertCiv3Media\ConvertCiv3Media.csproj", "{A1DD1E87-6D05-49CA-8B41-5404D3727174}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConvertCiv3Media", "src\ConvertCiv3Media\ConvertCiv3Media.csproj", "{A1DD1E87-6D05-49CA-8B41-5404D3727174}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QueryCiv3", "..\QueryCiv3\QueryCiv3.csproj", "{8A49BFFF-265B-4A0A-BCF1-0E75E9EFC82F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QueryCiv3", "src\QueryCiv3\QueryCiv3.csproj", "{8A49BFFF-265B-4A0A-BCF1-0E75E9EFC82F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blast", "..\Blast\Blast.csproj", "{C758B0EB-9F8F-45CF-9ACB-B04705CD7FEC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blast", "src\Blast\Blast.csproj", "{C758B0EB-9F8F-45CF-9ACB-B04705CD7FEC}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EngineTests", "..\EngineTests\EngineTests.csproj", "{270876A6-0DC8-4150-B374-0BC9E4CC2113}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EngineTests", "tests\EngineTests\EngineTests.csproj", "{270876A6-0DC8-4150-B374-0BC9E4CC2113}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildDevSave", "..\_Console\BuildDevSave\BuildDevSave.csproj", "{E66928C1-157B-42D3-AEC5-88F41C7A7846}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildDevSave", "tools\BuildDevSave\BuildDevSave.csproj", "{E66928C1-157B-42D3-AEC5-88F41C7A7846}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "C7GameDataTests", "..\C7GameDataTests\C7GameDataTests.csproj", "{8053F185-AA52-4876-8CF4-D08907FCA61A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "C7GameDataTests", "tests\C7GameDataTests\C7GameDataTests.csproj", "{8053F185-AA52-4876-8CF4-D08907FCA61A}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8C955B11-CC6A-4BED-BE2A-89DB985A3A18}" ProjectSection(SolutionItems) = preProject - ..\.editorconfig = ..\.editorconfig + .editorconfig = .editorconfig EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{104425F1-31A7-4CF6-BCB4-C1439367EA5B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{3A73670F-497F-4C9E-B567-8B68092ED73D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -121,4 +125,9 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AB9956D5-E3A9-4D2B-87FE-443D688F89AA} EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {8053F185-AA52-4876-8CF4-D08907FCA61A} = {104425F1-31A7-4CF6-BCB4-C1439367EA5B} + {270876A6-0DC8-4150-B374-0BC9E4CC2113} = {104425F1-31A7-4CF6-BCB4-C1439367EA5B} + {E66928C1-157B-42D3-AEC5-88F41C7A7846} = {3A73670F-497F-4C9E-B567-8B68092ED73D} + EndGlobalSection EndGlobal diff --git a/C7GameDataTests/data/output/info.txt b/C7GameDataTests/data/output/info.txt deleted file mode 100644 index 38406efc..00000000 --- a/C7GameDataTests/data/output/info.txt +++ /dev/null @@ -1 +0,0 @@ -Tests may create files in this directory but they are ignored and should not be checked in. diff --git a/Blast/BitStream.cs b/src/Blast/BitStream.cs similarity index 100% rename from Blast/BitStream.cs rename to src/Blast/BitStream.cs diff --git a/Blast/Blast.cs b/src/Blast/Blast.cs similarity index 100% rename from Blast/Blast.cs rename to src/Blast/Blast.cs diff --git a/Blast/Blast.csproj b/src/Blast/Blast.csproj similarity index 100% rename from Blast/Blast.csproj rename to src/Blast/Blast.csproj diff --git a/Blast/BlastException.cs b/src/Blast/BlastException.cs similarity index 100% rename from Blast/BlastException.cs rename to src/Blast/BlastException.cs diff --git a/Blast/HuffmanTable.cs b/src/Blast/HuffmanTable.cs similarity index 100% rename from Blast/HuffmanTable.cs rename to src/Blast/HuffmanTable.cs diff --git a/Blast/InputBuffer.cs b/src/Blast/InputBuffer.cs similarity index 100% rename from Blast/InputBuffer.cs rename to src/Blast/InputBuffer.cs diff --git a/Blast/readme.md b/src/Blast/readme.md similarity index 100% rename from Blast/readme.md rename to src/Blast/readme.md diff --git a/Blast/reference-code/blast.c b/src/Blast/reference-code/blast.c similarity index 100% rename from Blast/reference-code/blast.c rename to src/Blast/reference-code/blast.c diff --git a/Blast/reference-code/blast.h b/src/Blast/reference-code/blast.h similarity index 100% rename from Blast/reference-code/blast.h rename to src/Blast/reference-code/blast.h diff --git a/C7/AnimationManager.cs b/src/C7/AnimationManager.cs similarity index 100% rename from C7/AnimationManager.cs rename to src/C7/AnimationManager.cs diff --git a/C7/AnimationTracker.cs b/src/C7/AnimationTracker.cs similarity index 100% rename from C7/AnimationTracker.cs rename to src/C7/AnimationTracker.cs diff --git a/C7/Art/Cities/rMIDEAST.pcx b/src/C7/Art/Cities/rMIDEAST.pcx similarity index 100% rename from C7/Art/Cities/rMIDEAST.pcx rename to src/C7/Art/Cities/rMIDEAST.pcx diff --git a/C7/Art/Title_Screen.jpg b/src/C7/Art/Title_Screen.jpg similarity index 100% rename from C7/Art/Title_Screen.jpg rename to src/C7/Art/Title_Screen.jpg diff --git a/C7/Art/Title_Screen.jpg.import b/src/C7/Art/Title_Screen.jpg.import similarity index 100% rename from C7/Art/Title_Screen.jpg.import rename to src/C7/Art/Title_Screen.jpg.import diff --git a/C7/Art/Units/Settler/Build.flc b/src/C7/Art/Units/Settler/Build.flc similarity index 100% rename from C7/Art/Units/Settler/Build.flc rename to src/C7/Art/Units/Settler/Build.flc diff --git a/C7/Art/Units/Settler/Captured.flc b/src/C7/Art/Units/Settler/Captured.flc similarity index 100% rename from C7/Art/Units/Settler/Captured.flc rename to src/C7/Art/Units/Settler/Captured.flc diff --git a/C7/Art/Units/Settler/Death.flc b/src/C7/Art/Units/Settler/Death.flc similarity index 100% rename from C7/Art/Units/Settler/Death.flc rename to src/C7/Art/Units/Settler/Death.flc diff --git a/C7/Art/Units/Settler/Default.flc b/src/C7/Art/Units/Settler/Default.flc similarity index 100% rename from C7/Art/Units/Settler/Default.flc rename to src/C7/Art/Units/Settler/Default.flc diff --git a/C7/Art/Units/Settler/Fidget.flc b/src/C7/Art/Units/Settler/Fidget.flc similarity index 100% rename from C7/Art/Units/Settler/Fidget.flc rename to src/C7/Art/Units/Settler/Fidget.flc diff --git a/C7/Art/Units/Settler/Pedia/Large.pcx b/src/C7/Art/Units/Settler/Pedia/Large.pcx similarity index 100% rename from C7/Art/Units/Settler/Pedia/Large.pcx rename to src/C7/Art/Units/Settler/Pedia/Large.pcx diff --git a/C7/Art/Units/Settler/Pedia/Small.pcx b/src/C7/Art/Units/Settler/Pedia/Small.pcx similarity index 100% rename from C7/Art/Units/Settler/Pedia/Small.pcx rename to src/C7/Art/Units/Settler/Pedia/Small.pcx diff --git a/C7/Art/Units/Settler/Pedia/Unit32.pcx b/src/C7/Art/Units/Settler/Pedia/Unit32.pcx similarity index 100% rename from C7/Art/Units/Settler/Pedia/Unit32.pcx rename to src/C7/Art/Units/Settler/Pedia/Unit32.pcx diff --git a/C7/Art/Units/Settler/Pedia/Unit32_TrueColour.pcx b/src/C7/Art/Units/Settler/Pedia/Unit32_TrueColour.pcx similarity index 100% rename from C7/Art/Units/Settler/Pedia/Unit32_TrueColour.pcx rename to src/C7/Art/Units/Settler/Pedia/Unit32_TrueColour.pcx diff --git a/C7/Art/Units/Settler/Run.flc b/src/C7/Art/Units/Settler/Run.flc similarity index 100% rename from C7/Art/Units/Settler/Run.flc rename to src/C7/Art/Units/Settler/Run.flc diff --git a/C7/Art/Units/Settler/Settler.ini b/src/C7/Art/Units/Settler/Settler.ini similarity index 100% rename from C7/Art/Units/Settler/Settler.ini rename to src/C7/Art/Units/Settler/Settler.ini diff --git a/C7/C7.csproj b/src/C7/C7.csproj similarity index 100% rename from C7/C7.csproj rename to src/C7/C7.csproj diff --git a/C7/C7Game.tscn b/src/C7/C7Game.tscn similarity index 100% rename from C7/C7Game.tscn rename to src/C7/C7Game.tscn diff --git a/C7/C7Theme.tres b/src/C7/C7Theme.tres similarity index 100% rename from C7/C7Theme.tres rename to src/C7/C7Theme.tres diff --git a/C7/Civ3Map/Civ3Map.cs b/src/C7/Civ3Map/Civ3Map.cs similarity index 100% rename from C7/Civ3Map/Civ3Map.cs rename to src/C7/Civ3Map/Civ3Map.cs diff --git a/C7/Civ3Unit/Civ3Unit.cs b/src/C7/Civ3Unit/Civ3Unit.cs similarity index 100% rename from C7/Civ3Unit/Civ3Unit.cs rename to src/C7/Civ3Unit/Civ3Unit.cs diff --git a/C7/ComponentManager.cs b/src/C7/ComponentManager.cs similarity index 100% rename from C7/ComponentManager.cs rename to src/C7/ComponentManager.cs diff --git a/C7/Credits.cs b/src/C7/Credits.cs similarity index 100% rename from C7/Credits.cs rename to src/C7/Credits.cs diff --git a/C7/Credits.tscn b/src/C7/Credits.tscn similarity index 100% rename from C7/Credits.tscn rename to src/C7/Credits.tscn diff --git a/C7/Fonts/LICENSE-NotoSans.txt b/src/C7/Fonts/LICENSE-NotoSans.txt similarity index 97% rename from C7/Fonts/LICENSE-NotoSans.txt rename to src/C7/Fonts/LICENSE-NotoSans.txt index d4e7958b..c9857270 100644 --- a/C7/Fonts/LICENSE-NotoSans.txt +++ b/src/C7/Fonts/LICENSE-NotoSans.txt @@ -1,93 +1,93 @@ -Copyright 2012 Google Inc. All Rights Reserved. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright 2012 Google Inc. All Rights Reserved. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/C7/Fonts/NSansFont12Pt co.tres b/src/C7/Fonts/NSansFont12Pt co.tres similarity index 100% rename from C7/Fonts/NSansFont12Pt co.tres rename to src/C7/Fonts/NSansFont12Pt co.tres diff --git a/C7/Fonts/NSansFont24Pt.tres b/src/C7/Fonts/NSansFont24Pt.tres similarity index 100% rename from C7/Fonts/NSansFont24Pt.tres rename to src/C7/Fonts/NSansFont24Pt.tres diff --git a/C7/Fonts/NotoSans-Bold.ttf b/src/C7/Fonts/NotoSans-Bold.ttf similarity index 100% rename from C7/Fonts/NotoSans-Bold.ttf rename to src/C7/Fonts/NotoSans-Bold.ttf diff --git a/C7/Fonts/NotoSans-Bold.ttf.import b/src/C7/Fonts/NotoSans-Bold.ttf.import similarity index 100% rename from C7/Fonts/NotoSans-Bold.ttf.import rename to src/C7/Fonts/NotoSans-Bold.ttf.import diff --git a/C7/Fonts/NotoSans-BoldItalic.ttf b/src/C7/Fonts/NotoSans-BoldItalic.ttf similarity index 100% rename from C7/Fonts/NotoSans-BoldItalic.ttf rename to src/C7/Fonts/NotoSans-BoldItalic.ttf diff --git a/C7/Fonts/NotoSans-BoldItalic.ttf.import b/src/C7/Fonts/NotoSans-BoldItalic.ttf.import similarity index 100% rename from C7/Fonts/NotoSans-BoldItalic.ttf.import rename to src/C7/Fonts/NotoSans-BoldItalic.ttf.import diff --git a/C7/Fonts/NotoSans-Italic.ttf b/src/C7/Fonts/NotoSans-Italic.ttf similarity index 100% rename from C7/Fonts/NotoSans-Italic.ttf rename to src/C7/Fonts/NotoSans-Italic.ttf diff --git a/C7/Fonts/NotoSans-Italic.ttf.import b/src/C7/Fonts/NotoSans-Italic.ttf.import similarity index 100% rename from C7/Fonts/NotoSans-Italic.ttf.import rename to src/C7/Fonts/NotoSans-Italic.ttf.import diff --git a/C7/Fonts/NotoSans-Regular.ttf b/src/C7/Fonts/NotoSans-Regular.ttf similarity index 100% rename from C7/Fonts/NotoSans-Regular.ttf rename to src/C7/Fonts/NotoSans-Regular.ttf diff --git a/C7/Fonts/NotoSans-Regular.ttf.import b/src/C7/Fonts/NotoSans-Regular.ttf.import similarity index 100% rename from C7/Fonts/NotoSans-Regular.ttf.import rename to src/C7/Fonts/NotoSans-Regular.ttf.import diff --git a/C7/Game.cs b/src/C7/Game.cs similarity index 100% rename from C7/Game.cs rename to src/C7/Game.cs diff --git a/C7/GlobalSingleton.cs b/src/C7/GlobalSingleton.cs similarity index 100% rename from C7/GlobalSingleton.cs rename to src/C7/GlobalSingleton.cs diff --git a/C7/GodotSink.cs b/src/C7/GodotSink.cs similarity index 100% rename from C7/GodotSink.cs rename to src/C7/GodotSink.cs diff --git a/C7/LogManager.cs b/src/C7/LogManager.cs similarity index 100% rename from C7/LogManager.cs rename to src/C7/LogManager.cs diff --git a/C7/MainMenu.cs b/src/C7/MainMenu.cs similarity index 100% rename from C7/MainMenu.cs rename to src/C7/MainMenu.cs diff --git a/C7/MainMenu.tscn b/src/C7/MainMenu.tscn similarity index 100% rename from C7/MainMenu.tscn rename to src/C7/MainMenu.tscn diff --git a/C7/MainMenuMusicPlayer.cs b/src/C7/MainMenuMusicPlayer.cs similarity index 100% rename from C7/MainMenuMusicPlayer.cs rename to src/C7/MainMenuMusicPlayer.cs diff --git a/C7/MainMenuTheme.tres b/src/C7/MainMenuTheme.tres similarity index 100% rename from C7/MainMenuTheme.tres rename to src/C7/MainMenuTheme.tres diff --git a/C7/Map/BorderLayer.cs b/src/C7/Map/BorderLayer.cs similarity index 100% rename from C7/Map/BorderLayer.cs rename to src/C7/Map/BorderLayer.cs diff --git a/C7/Map/CityLabelScene.cs b/src/C7/Map/CityLabelScene.cs similarity index 100% rename from C7/Map/CityLabelScene.cs rename to src/C7/Map/CityLabelScene.cs diff --git a/C7/Map/CityLayer.cs b/src/C7/Map/CityLayer.cs similarity index 100% rename from C7/Map/CityLayer.cs rename to src/C7/Map/CityLayer.cs diff --git a/C7/Map/CityScene.cs b/src/C7/Map/CityScene.cs similarity index 100% rename from C7/Map/CityScene.cs rename to src/C7/Map/CityScene.cs diff --git a/C7/Map/FogOfWarLayer.cs b/src/C7/Map/FogOfWarLayer.cs similarity index 100% rename from C7/Map/FogOfWarLayer.cs rename to src/C7/Map/FogOfWarLayer.cs diff --git a/C7/Map/GotoLayer.cs b/src/C7/Map/GotoLayer.cs similarity index 100% rename from C7/Map/GotoLayer.cs rename to src/C7/Map/GotoLayer.cs diff --git a/C7/Map/ResourceLayer.cs b/src/C7/Map/ResourceLayer.cs similarity index 100% rename from C7/Map/ResourceLayer.cs rename to src/C7/Map/ResourceLayer.cs diff --git a/C7/Map/TileAssignmentLayer.cs b/src/C7/Map/TileAssignmentLayer.cs similarity index 100% rename from C7/Map/TileAssignmentLayer.cs rename to src/C7/Map/TileAssignmentLayer.cs diff --git a/C7/Map/TileOverlayLayer.cs b/src/C7/Map/TileOverlayLayer.cs similarity index 100% rename from C7/Map/TileOverlayLayer.cs rename to src/C7/Map/TileOverlayLayer.cs diff --git a/C7/Map/TntLayer.cs b/src/C7/Map/TntLayer.cs similarity index 100% rename from C7/Map/TntLayer.cs rename to src/C7/Map/TntLayer.cs diff --git a/C7/Map/UnitLayer.cs b/src/C7/Map/UnitLayer.cs similarity index 100% rename from C7/Map/UnitLayer.cs rename to src/C7/Map/UnitLayer.cs diff --git a/C7/MapView.cs b/src/C7/MapView.cs similarity index 100% rename from C7/MapView.cs rename to src/C7/MapView.cs diff --git a/C7/PCXToGodot.cs b/src/C7/PCXToGodot.cs similarity index 100% rename from C7/PCXToGodot.cs rename to src/C7/PCXToGodot.cs diff --git a/C7/ParameterWrapper.cs b/src/C7/ParameterWrapper.cs similarity index 100% rename from C7/ParameterWrapper.cs rename to src/C7/ParameterWrapper.cs diff --git a/C7/Text/c7-static-map-save.json b/src/C7/Text/c7-static-map-save.json similarity index 100% rename from C7/Text/c7-static-map-save.json rename to src/C7/Text/c7-static-map-save.json diff --git a/C7/Text/credits.txt b/src/C7/Text/credits.txt similarity index 100% rename from C7/Text/credits.txt rename to src/C7/Text/credits.txt diff --git a/C7/Title_Screen.kra b/src/C7/Title_Screen.kra similarity index 100% rename from C7/Title_Screen.kra rename to src/C7/Title_Screen.kra diff --git a/C7/UIElements/Advisors/Advisors.cs b/src/C7/UIElements/Advisors/Advisors.cs similarity index 100% rename from C7/UIElements/Advisors/Advisors.cs rename to src/C7/UIElements/Advisors/Advisors.cs diff --git a/C7/UIElements/Advisors/DomesticAdvisor.cs b/src/C7/UIElements/Advisors/DomesticAdvisor.cs similarity index 100% rename from C7/UIElements/Advisors/DomesticAdvisor.cs rename to src/C7/UIElements/Advisors/DomesticAdvisor.cs diff --git a/C7/UIElements/Advisors/ScienceAdvisor.cs b/src/C7/UIElements/Advisors/ScienceAdvisor.cs similarity index 100% rename from C7/UIElements/Advisors/ScienceAdvisor.cs rename to src/C7/UIElements/Advisors/ScienceAdvisor.cs diff --git a/C7/UIElements/Advisors/TechBox.cs b/src/C7/UIElements/Advisors/TechBox.cs similarity index 100% rename from C7/UIElements/Advisors/TechBox.cs rename to src/C7/UIElements/Advisors/TechBox.cs diff --git a/C7/UIElements/CityScreen/CityScreen.cs b/src/C7/UIElements/CityScreen/CityScreen.cs similarity index 100% rename from C7/UIElements/CityScreen/CityScreen.cs rename to src/C7/UIElements/CityScreen/CityScreen.cs diff --git a/C7/UIElements/Civ3FileDialog.cs b/src/C7/UIElements/Civ3FileDialog.cs similarity index 100% rename from C7/UIElements/Civ3FileDialog.cs rename to src/C7/UIElements/Civ3FileDialog.cs diff --git a/C7/UIElements/GameStatus/GameStatus.cs b/src/C7/UIElements/GameStatus/GameStatus.cs similarity index 100% rename from C7/UIElements/GameStatus/GameStatus.cs rename to src/C7/UIElements/GameStatus/GameStatus.cs diff --git a/C7/UIElements/GameStatus/LowerRightInfoBox.cs b/src/C7/UIElements/GameStatus/LowerRightInfoBox.cs similarity index 100% rename from C7/UIElements/GameStatus/LowerRightInfoBox.cs rename to src/C7/UIElements/GameStatus/LowerRightInfoBox.cs diff --git a/C7/UIElements/Popups/BuildCityDialog.cs b/src/C7/UIElements/Popups/BuildCityDialog.cs similarity index 100% rename from C7/UIElements/Popups/BuildCityDialog.cs rename to src/C7/UIElements/Popups/BuildCityDialog.cs diff --git a/C7/UIElements/Popups/CivilizationDestroyed.cs b/src/C7/UIElements/Popups/CivilizationDestroyed.cs similarity index 100% rename from C7/UIElements/Popups/CivilizationDestroyed.cs rename to src/C7/UIElements/Popups/CivilizationDestroyed.cs diff --git a/C7/UIElements/Popups/DisbandConfirmation.cs b/src/C7/UIElements/Popups/DisbandConfirmation.cs similarity index 100% rename from C7/UIElements/Popups/DisbandConfirmation.cs rename to src/C7/UIElements/Popups/DisbandConfirmation.cs diff --git a/C7/UIElements/Popups/ErrorMessage.cs b/src/C7/UIElements/Popups/ErrorMessage.cs similarity index 100% rename from C7/UIElements/Popups/ErrorMessage.cs rename to src/C7/UIElements/Popups/ErrorMessage.cs diff --git a/C7/UIElements/Popups/EscapeQuitPopup.cs b/src/C7/UIElements/Popups/EscapeQuitPopup.cs similarity index 100% rename from C7/UIElements/Popups/EscapeQuitPopup.cs rename to src/C7/UIElements/Popups/EscapeQuitPopup.cs diff --git a/C7/UIElements/Popups/GameMenu.cs b/src/C7/UIElements/Popups/GameMenu.cs similarity index 100% rename from C7/UIElements/Popups/GameMenu.cs rename to src/C7/UIElements/Popups/GameMenu.cs diff --git a/C7/UIElements/Popups/Popup.cs b/src/C7/UIElements/Popups/Popup.cs similarity index 100% rename from C7/UIElements/Popups/Popup.cs rename to src/C7/UIElements/Popups/Popup.cs diff --git a/C7/UIElements/Popups/PopupOverlay.cs b/src/C7/UIElements/Popups/PopupOverlay.cs similarity index 100% rename from C7/UIElements/Popups/PopupOverlay.cs rename to src/C7/UIElements/Popups/PopupOverlay.cs diff --git a/C7/UIElements/RightClickMenu.cs b/src/C7/UIElements/RightClickMenu.cs similarity index 100% rename from C7/UIElements/RightClickMenu.cs rename to src/C7/UIElements/RightClickMenu.cs diff --git a/C7/UIElements/Theme.cs b/src/C7/UIElements/Theme.cs similarity index 100% rename from C7/UIElements/Theme.cs rename to src/C7/UIElements/Theme.cs diff --git a/C7/UIElements/UnitButtons/RenameButton.cs b/src/C7/UIElements/UnitButtons/RenameButton.cs similarity index 100% rename from C7/UIElements/UnitButtons/RenameButton.cs rename to src/C7/UIElements/UnitButtons/RenameButton.cs diff --git a/C7/UIElements/UnitButtons/UnitButtons.cs b/src/C7/UIElements/UnitButtons/UnitButtons.cs similarity index 100% rename from C7/UIElements/UnitButtons/UnitButtons.cs rename to src/C7/UIElements/UnitButtons/UnitButtons.cs diff --git a/C7/UIElements/UnitButtons/UnitControlButton.cs b/src/C7/UIElements/UnitButtons/UnitControlButton.cs similarity index 100% rename from C7/UIElements/UnitButtons/UnitControlButton.cs rename to src/C7/UIElements/UnitButtons/UnitControlButton.cs diff --git a/C7/UIElements/UpperLeftNav/AdvisorButton.cs b/src/C7/UIElements/UpperLeftNav/AdvisorButton.cs similarity index 100% rename from C7/UIElements/UpperLeftNav/AdvisorButton.cs rename to src/C7/UIElements/UpperLeftNav/AdvisorButton.cs diff --git a/C7/UIElements/UpperLeftNav/CivilopediaButton.cs b/src/C7/UIElements/UpperLeftNav/CivilopediaButton.cs similarity index 100% rename from C7/UIElements/UpperLeftNav/CivilopediaButton.cs rename to src/C7/UIElements/UpperLeftNav/CivilopediaButton.cs diff --git a/C7/UIElements/UpperLeftNav/MenuButton.cs b/src/C7/UIElements/UpperLeftNav/MenuButton.cs similarity index 100% rename from C7/UIElements/UpperLeftNav/MenuButton.cs rename to src/C7/UIElements/UpperLeftNav/MenuButton.cs diff --git a/C7/UIElements/civ3_file_dialog.tscn b/src/C7/UIElements/civ3_file_dialog.tscn similarity index 100% rename from C7/UIElements/civ3_file_dialog.tscn rename to src/C7/UIElements/civ3_file_dialog.tscn diff --git a/C7/UnitTint.gdshader b/src/C7/UnitTint.gdshader similarity index 100% rename from C7/UnitTint.gdshader rename to src/C7/UnitTint.gdshader diff --git a/C7/Util.cs b/src/C7/Util.cs similarity index 100% rename from C7/Util.cs rename to src/C7/Util.cs diff --git a/C7/default_env.tres b/src/C7/default_env.tres similarity index 100% rename from C7/default_env.tres rename to src/C7/default_env.tres diff --git a/C7/export_presets.cfg b/src/C7/export_presets.cfg similarity index 100% rename from C7/export_presets.cfg rename to src/C7/export_presets.cfg diff --git a/C7/icon.png b/src/C7/icon.png similarity index 100% rename from C7/icon.png rename to src/C7/icon.png diff --git a/C7/icon.png.import b/src/C7/icon.png.import similarity index 100% rename from C7/icon.png.import rename to src/C7/icon.png.import diff --git a/C7/project.godot b/src/C7/project.godot similarity index 100% rename from C7/project.godot rename to src/C7/project.godot diff --git a/C7/readme.md b/src/C7/readme.md similarity index 100% rename from C7/readme.md rename to src/C7/readme.md diff --git a/C7/test.tscn b/src/C7/test.tscn similarity index 100% rename from C7/test.tscn rename to src/C7/test.tscn diff --git a/C7/tests/TestUnit.cs b/src/C7/tests/TestUnit.cs similarity index 100% rename from C7/tests/TestUnit.cs rename to src/C7/tests/TestUnit.cs diff --git a/C7/tests/Unit.tscn b/src/C7/tests/Unit.tscn similarity index 100% rename from C7/tests/Unit.tscn rename to src/C7/tests/Unit.tscn diff --git a/C7Engine/AI/BarbarianAI.cs b/src/C7Engine/AI/BarbarianAI.cs similarity index 100% rename from C7Engine/AI/BarbarianAI.cs rename to src/C7Engine/AI/BarbarianAI.cs diff --git a/C7Engine/AI/CityProductionAI.cs b/src/C7Engine/AI/CityProductionAI.cs similarity index 100% rename from C7Engine/AI/CityProductionAI.cs rename to src/C7Engine/AI/CityProductionAI.cs diff --git a/C7Engine/AI/CityTileAssignmentAI.cs b/src/C7Engine/AI/CityTileAssignmentAI.cs similarity index 100% rename from C7Engine/AI/CityTileAssignmentAI.cs rename to src/C7Engine/AI/CityTileAssignmentAI.cs diff --git a/C7Engine/AI/IAI.cs b/src/C7Engine/AI/IAI.cs similarity index 100% rename from C7Engine/AI/IAI.cs rename to src/C7Engine/AI/IAI.cs diff --git a/C7Engine/AI/Pathing/AStarAlgorithm.cs b/src/C7Engine/AI/Pathing/AStarAlgorithm.cs similarity index 100% rename from C7Engine/AI/Pathing/AStarAlgorithm.cs rename to src/C7Engine/AI/Pathing/AStarAlgorithm.cs diff --git a/C7Engine/AI/Pathing/BinaryMinHeap.cs b/src/C7Engine/AI/Pathing/BinaryMinHeap.cs similarity index 100% rename from C7Engine/AI/Pathing/BinaryMinHeap.cs rename to src/C7Engine/AI/Pathing/BinaryMinHeap.cs diff --git a/C7Engine/AI/Pathing/Edge.cs b/src/C7Engine/AI/Pathing/Edge.cs similarity index 100% rename from C7Engine/AI/Pathing/Edge.cs rename to src/C7Engine/AI/Pathing/Edge.cs diff --git a/C7Engine/AI/Pathing/EdgeWalker.cs b/src/C7Engine/AI/Pathing/EdgeWalker.cs similarity index 100% rename from C7Engine/AI/Pathing/EdgeWalker.cs rename to src/C7Engine/AI/Pathing/EdgeWalker.cs diff --git a/C7Engine/AI/Pathing/PathingAlgorithm.cs b/src/C7Engine/AI/Pathing/PathingAlgorithm.cs similarity index 100% rename from C7Engine/AI/Pathing/PathingAlgorithm.cs rename to src/C7Engine/AI/Pathing/PathingAlgorithm.cs diff --git a/C7Engine/AI/Pathing/PathingAlgorithmChooser.cs b/src/C7Engine/AI/Pathing/PathingAlgorithmChooser.cs similarity index 100% rename from C7Engine/AI/Pathing/PathingAlgorithmChooser.cs rename to src/C7Engine/AI/Pathing/PathingAlgorithmChooser.cs diff --git a/C7Engine/AI/Pathing/PathingNotes.txt b/src/C7Engine/AI/Pathing/PathingNotes.txt similarity index 100% rename from C7Engine/AI/Pathing/PathingNotes.txt rename to src/C7Engine/AI/Pathing/PathingNotes.txt diff --git a/C7Engine/AI/PlayerAI.cs b/src/C7Engine/AI/PlayerAI.cs similarity index 100% rename from C7Engine/AI/PlayerAI.cs rename to src/C7Engine/AI/PlayerAI.cs diff --git a/C7Engine/AI/StrategicAI/ExpansionPriority.cs b/src/C7Engine/AI/StrategicAI/ExpansionPriority.cs similarity index 100% rename from C7Engine/AI/StrategicAI/ExpansionPriority.cs rename to src/C7Engine/AI/StrategicAI/ExpansionPriority.cs diff --git a/C7Engine/AI/StrategicAI/ExplorationPriority.cs b/src/C7Engine/AI/StrategicAI/ExplorationPriority.cs similarity index 100% rename from C7Engine/AI/StrategicAI/ExplorationPriority.cs rename to src/C7Engine/AI/StrategicAI/ExplorationPriority.cs diff --git a/C7Engine/AI/StrategicAI/PriorityAggregator.cs b/src/C7Engine/AI/StrategicAI/PriorityAggregator.cs similarity index 100% rename from C7Engine/AI/StrategicAI/PriorityAggregator.cs rename to src/C7Engine/AI/StrategicAI/PriorityAggregator.cs diff --git a/C7Engine/AI/StrategicAI/UtilityCalculations.cs b/src/C7Engine/AI/StrategicAI/UtilityCalculations.cs similarity index 100% rename from C7Engine/AI/StrategicAI/UtilityCalculations.cs rename to src/C7Engine/AI/StrategicAI/UtilityCalculations.cs diff --git a/C7Engine/AI/StrategicAI/WarPriority.cs b/src/C7Engine/AI/StrategicAI/WarPriority.cs similarity index 100% rename from C7Engine/AI/StrategicAI/WarPriority.cs rename to src/C7Engine/AI/StrategicAI/WarPriority.cs diff --git a/C7Engine/AI/StrategicPriorityArbitrator.cs b/src/C7Engine/AI/StrategicPriorityArbitrator.cs similarity index 100% rename from C7Engine/AI/StrategicPriorityArbitrator.cs rename to src/C7Engine/AI/StrategicPriorityArbitrator.cs diff --git a/C7Engine/AI/UnitAI/CombatAI.cs b/src/C7Engine/AI/UnitAI/CombatAI.cs similarity index 100% rename from C7Engine/AI/UnitAI/CombatAI.cs rename to src/C7Engine/AI/UnitAI/CombatAI.cs diff --git a/C7Engine/AI/UnitAI/DefenderAI.cs b/src/C7Engine/AI/UnitAI/DefenderAI.cs similarity index 100% rename from C7Engine/AI/UnitAI/DefenderAI.cs rename to src/C7Engine/AI/UnitAI/DefenderAI.cs diff --git a/C7Engine/AI/UnitAI/ExplorerAI.cs b/src/C7Engine/AI/UnitAI/ExplorerAI.cs similarity index 100% rename from C7Engine/AI/UnitAI/ExplorerAI.cs rename to src/C7Engine/AI/UnitAI/ExplorerAI.cs diff --git a/C7Engine/AI/UnitAI/SettlerAI.cs b/src/C7Engine/AI/UnitAI/SettlerAI.cs similarity index 100% rename from C7Engine/AI/UnitAI/SettlerAI.cs rename to src/C7Engine/AI/UnitAI/SettlerAI.cs diff --git a/C7Engine/AI/UnitAI/SettlerLocationAI.cs b/src/C7Engine/AI/UnitAI/SettlerLocationAI.cs similarity index 100% rename from C7Engine/AI/UnitAI/SettlerLocationAI.cs rename to src/C7Engine/AI/UnitAI/SettlerLocationAI.cs diff --git a/C7Engine/AI/UnitAI/UnitAI.cs b/src/C7Engine/AI/UnitAI/UnitAI.cs similarity index 100% rename from C7Engine/AI/UnitAI/UnitAI.cs rename to src/C7Engine/AI/UnitAI/UnitAI.cs diff --git a/C7Engine/C7Engine.csproj b/src/C7Engine/C7Engine.csproj similarity index 100% rename from C7Engine/C7Engine.csproj rename to src/C7Engine/C7Engine.csproj diff --git a/C7Engine/C7Settings.cs b/src/C7Engine/C7Settings.cs similarity index 100% rename from C7Engine/C7Settings.cs rename to src/C7Engine/C7Settings.cs diff --git a/C7Engine/CityExtensions.cs b/src/C7Engine/CityExtensions.cs similarity index 100% rename from C7Engine/CityExtensions.cs rename to src/C7Engine/CityExtensions.cs diff --git a/C7Engine/EngineStorage.cs b/src/C7Engine/EngineStorage.cs similarity index 100% rename from C7Engine/EngineStorage.cs rename to src/C7Engine/EngineStorage.cs diff --git a/C7Engine/EntryPoints/CityInteractions.cs b/src/C7Engine/EntryPoints/CityInteractions.cs similarity index 100% rename from C7Engine/EntryPoints/CityInteractions.cs rename to src/C7Engine/EntryPoints/CityInteractions.cs diff --git a/C7Engine/EntryPoints/CreateGame.cs b/src/C7Engine/EntryPoints/CreateGame.cs similarity index 100% rename from C7Engine/EntryPoints/CreateGame.cs rename to src/C7Engine/EntryPoints/CreateGame.cs diff --git a/C7Engine/EntryPoints/MessageToEngine.cs b/src/C7Engine/EntryPoints/MessageToEngine.cs similarity index 100% rename from C7Engine/EntryPoints/MessageToEngine.cs rename to src/C7Engine/EntryPoints/MessageToEngine.cs diff --git a/C7Engine/EntryPoints/MessageToUI.cs b/src/C7Engine/EntryPoints/MessageToUI.cs similarity index 100% rename from C7Engine/EntryPoints/MessageToUI.cs rename to src/C7Engine/EntryPoints/MessageToUI.cs diff --git a/C7Engine/EntryPoints/TurnHandling.cs b/src/C7Engine/EntryPoints/TurnHandling.cs similarity index 100% rename from C7Engine/EntryPoints/TurnHandling.cs rename to src/C7Engine/EntryPoints/TurnHandling.cs diff --git a/C7Engine/EntryPoints/UnitInteractions.cs b/src/C7Engine/EntryPoints/UnitInteractions.cs similarity index 100% rename from C7Engine/EntryPoints/UnitInteractions.cs rename to src/C7Engine/EntryPoints/UnitInteractions.cs diff --git a/C7Engine/MapUnitExtensions.cs b/src/C7Engine/MapUnitExtensions.cs similarity index 100% rename from C7Engine/MapUnitExtensions.cs rename to src/C7Engine/MapUnitExtensions.cs diff --git a/C7Engine/SaveManager.cs b/src/C7Engine/SaveManager.cs similarity index 100% rename from C7Engine/SaveManager.cs rename to src/C7Engine/SaveManager.cs diff --git a/C7Engine/TileExtensions.cs b/src/C7Engine/TileExtensions.cs similarity index 100% rename from C7Engine/TileExtensions.cs rename to src/C7Engine/TileExtensions.cs diff --git a/C7Engine/Weighting.cs b/src/C7Engine/Weighting.cs similarity index 100% rename from C7Engine/Weighting.cs rename to src/C7Engine/Weighting.cs diff --git a/C7Engine/readme.md b/src/C7Engine/readme.md similarity index 100% rename from C7Engine/readme.md rename to src/C7Engine/readme.md diff --git a/C7GameData/AIData/CombatAIData.cs b/src/C7GameData/AIData/CombatAIData.cs similarity index 100% rename from C7GameData/AIData/CombatAIData.cs rename to src/C7GameData/AIData/CombatAIData.cs diff --git a/C7GameData/AIData/DefenderAIData.cs b/src/C7GameData/AIData/DefenderAIData.cs similarity index 100% rename from C7GameData/AIData/DefenderAIData.cs rename to src/C7GameData/AIData/DefenderAIData.cs diff --git a/C7GameData/AIData/ExplorerAIData.cs b/src/C7GameData/AIData/ExplorerAIData.cs similarity index 100% rename from C7GameData/AIData/ExplorerAIData.cs rename to src/C7GameData/AIData/ExplorerAIData.cs diff --git a/C7GameData/AIData/SettlerAIData.cs b/src/C7GameData/AIData/SettlerAIData.cs similarity index 100% rename from C7GameData/AIData/SettlerAIData.cs rename to src/C7GameData/AIData/SettlerAIData.cs diff --git a/C7GameData/AIData/StrategicPriority.cs b/src/C7GameData/AIData/StrategicPriority.cs similarity index 100% rename from C7GameData/AIData/StrategicPriority.cs rename to src/C7GameData/AIData/StrategicPriority.cs diff --git a/C7GameData/AIData/TileKnowledge.cs b/src/C7GameData/AIData/TileKnowledge.cs similarity index 100% rename from C7GameData/AIData/TileKnowledge.cs rename to src/C7GameData/AIData/TileKnowledge.cs diff --git a/C7GameData/AIData/TilePath.cs b/src/C7GameData/AIData/TilePath.cs similarity index 100% rename from C7GameData/AIData/TilePath.cs rename to src/C7GameData/AIData/TilePath.cs diff --git a/C7GameData/AIData/UnitAIData.cs b/src/C7GameData/AIData/UnitAIData.cs similarity index 100% rename from C7GameData/AIData/UnitAIData.cs rename to src/C7GameData/AIData/UnitAIData.cs diff --git a/C7GameData/Actions.cs b/src/C7GameData/Actions.cs similarity index 100% rename from C7GameData/Actions.cs rename to src/C7GameData/Actions.cs diff --git a/C7GameData/AnimationParams.cs b/src/C7GameData/AnimationParams.cs similarity index 100% rename from C7GameData/AnimationParams.cs rename to src/C7GameData/AnimationParams.cs diff --git a/C7GameData/BarbarianInfo.cs b/src/C7GameData/BarbarianInfo.cs similarity index 100% rename from C7GameData/BarbarianInfo.cs rename to src/C7GameData/BarbarianInfo.cs diff --git a/C7GameData/Building.cs b/src/C7GameData/Building.cs similarity index 100% rename from C7GameData/Building.cs rename to src/C7GameData/Building.cs diff --git a/C7GameData/C7GameData.csproj b/src/C7GameData/C7GameData.csproj similarity index 100% rename from C7GameData/C7GameData.csproj rename to src/C7GameData/C7GameData.csproj diff --git a/C7GameData/CitizenType.cs b/src/C7GameData/CitizenType.cs similarity index 100% rename from C7GameData/CitizenType.cs rename to src/C7GameData/CitizenType.cs diff --git a/C7GameData/City.cs b/src/C7GameData/City.cs similarity index 100% rename from C7GameData/City.cs rename to src/C7GameData/City.cs diff --git a/C7GameData/CityResident.cs b/src/C7GameData/CityResident.cs similarity index 100% rename from C7GameData/CityResident.cs rename to src/C7GameData/CityResident.cs diff --git a/C7GameData/Civilization.cs b/src/C7GameData/Civilization.cs similarity index 100% rename from C7GameData/Civilization.cs rename to src/C7GameData/Civilization.cs diff --git a/C7GameData/CombatResult.cs b/src/C7GameData/CombatResult.cs similarity index 100% rename from C7GameData/CombatResult.cs rename to src/C7GameData/CombatResult.cs diff --git a/C7GameData/CombatRole.cs b/src/C7GameData/CombatRole.cs similarity index 100% rename from C7GameData/CombatRole.cs rename to src/C7GameData/CombatRole.cs diff --git a/C7GameData/ExperienceLevel.cs b/src/C7GameData/ExperienceLevel.cs similarity index 100% rename from C7GameData/ExperienceLevel.cs rename to src/C7GameData/ExperienceLevel.cs diff --git a/C7GameData/GameData.cs b/src/C7GameData/GameData.cs similarity index 100% rename from C7GameData/GameData.cs rename to src/C7GameData/GameData.cs diff --git a/C7GameData/GameMap.cs b/src/C7GameData/GameMap.cs similarity index 100% rename from C7GameData/GameMap.cs rename to src/C7GameData/GameMap.cs diff --git a/C7GameData/ID.cs b/src/C7GameData/ID.cs similarity index 100% rename from C7GameData/ID.cs rename to src/C7GameData/ID.cs diff --git a/C7GameData/IProducible.cs b/src/C7GameData/IProducible.cs similarity index 100% rename from C7GameData/IProducible.cs rename to src/C7GameData/IProducible.cs diff --git a/C7GameData/ImportCiv3.cs b/src/C7GameData/ImportCiv3.cs similarity index 100% rename from C7GameData/ImportCiv3.cs rename to src/C7GameData/ImportCiv3.cs diff --git a/C7GameData/Json2DArrayConverter.cs b/src/C7GameData/Json2DArrayConverter.cs similarity index 100% rename from C7GameData/Json2DArrayConverter.cs rename to src/C7GameData/Json2DArrayConverter.cs diff --git a/C7GameData/MapGenNoise.cs b/src/C7GameData/MapGenNoise.cs similarity index 100% rename from C7GameData/MapGenNoise.cs rename to src/C7GameData/MapGenNoise.cs diff --git a/C7GameData/MapUnit.cs b/src/C7GameData/MapUnit.cs similarity index 100% rename from C7GameData/MapUnit.cs rename to src/C7GameData/MapUnit.cs diff --git a/C7GameData/MovementPoints.cs b/src/C7GameData/MovementPoints.cs similarity index 100% rename from C7GameData/MovementPoints.cs rename to src/C7GameData/MovementPoints.cs diff --git a/C7GameData/PediaIcons.cs b/src/C7GameData/PediaIcons.cs similarity index 100% rename from C7GameData/PediaIcons.cs rename to src/C7GameData/PediaIcons.cs diff --git a/C7GameData/Player.cs b/src/C7GameData/Player.cs similarity index 100% rename from C7GameData/Player.cs rename to src/C7GameData/Player.cs diff --git a/C7GameData/Resource.cs b/src/C7GameData/Resource.cs similarity index 100% rename from C7GameData/Resource.cs rename to src/C7GameData/Resource.cs diff --git a/C7GameData/Save/SaveCity.cs b/src/C7GameData/Save/SaveCity.cs similarity index 100% rename from C7GameData/Save/SaveCity.cs rename to src/C7GameData/Save/SaveCity.cs diff --git a/C7GameData/Save/SaveGame.cs b/src/C7GameData/Save/SaveGame.cs similarity index 100% rename from C7GameData/Save/SaveGame.cs rename to src/C7GameData/Save/SaveGame.cs diff --git a/C7GameData/Save/SaveMap.cs b/src/C7GameData/Save/SaveMap.cs similarity index 100% rename from C7GameData/Save/SaveMap.cs rename to src/C7GameData/Save/SaveMap.cs diff --git a/C7GameData/Save/SavePlayer.cs b/src/C7GameData/Save/SavePlayer.cs similarity index 100% rename from C7GameData/Save/SavePlayer.cs rename to src/C7GameData/Save/SavePlayer.cs diff --git a/C7GameData/Save/SaveTech.cs b/src/C7GameData/Save/SaveTech.cs similarity index 100% rename from C7GameData/Save/SaveTech.cs rename to src/C7GameData/Save/SaveTech.cs diff --git a/C7GameData/Save/SaveTile.cs b/src/C7GameData/Save/SaveTile.cs similarity index 100% rename from C7GameData/Save/SaveTile.cs rename to src/C7GameData/Save/SaveTile.cs diff --git a/C7GameData/Save/SaveUnit.cs b/src/C7GameData/Save/SaveUnit.cs similarity index 100% rename from C7GameData/Save/SaveUnit.cs rename to src/C7GameData/Save/SaveUnit.cs diff --git a/C7GameData/Save/TileLocation.cs b/src/C7GameData/Save/TileLocation.cs similarity index 100% rename from C7GameData/Save/TileLocation.cs rename to src/C7GameData/Save/TileLocation.cs diff --git a/C7GameData/SaveFormat.cs b/src/C7GameData/SaveFormat.cs similarity index 100% rename from C7GameData/SaveFormat.cs rename to src/C7GameData/SaveFormat.cs diff --git a/C7GameData/StrengthBonus.cs b/src/C7GameData/StrengthBonus.cs similarity index 100% rename from C7GameData/StrengthBonus.cs rename to src/C7GameData/StrengthBonus.cs diff --git a/C7GameData/Tech.cs b/src/C7GameData/Tech.cs similarity index 100% rename from C7GameData/Tech.cs rename to src/C7GameData/Tech.cs diff --git a/C7GameData/TerrainType.cs b/src/C7GameData/TerrainType.cs similarity index 100% rename from C7GameData/TerrainType.cs rename to src/C7GameData/TerrainType.cs diff --git a/C7GameData/Tile.cs b/src/C7GameData/Tile.cs similarity index 100% rename from C7GameData/Tile.cs rename to src/C7GameData/Tile.cs diff --git a/C7GameData/UnitPrototype.cs b/src/C7GameData/UnitPrototype.cs similarity index 100% rename from C7GameData/UnitPrototype.cs rename to src/C7GameData/UnitPrototype.cs diff --git a/C7GameData/readme.md b/src/C7GameData/readme.md similarity index 100% rename from C7GameData/readme.md rename to src/C7GameData/readme.md diff --git a/ConvertCiv3Media/Civ3UnitSprite.cs b/src/ConvertCiv3Media/Civ3UnitSprite.cs similarity index 100% rename from ConvertCiv3Media/Civ3UnitSprite.cs rename to src/ConvertCiv3Media/Civ3UnitSprite.cs diff --git a/ConvertCiv3Media/ConvertCiv3Media.csproj b/src/ConvertCiv3Media/ConvertCiv3Media.csproj similarity index 100% rename from ConvertCiv3Media/ConvertCiv3Media.csproj rename to src/ConvertCiv3Media/ConvertCiv3Media.csproj diff --git a/ConvertCiv3Media/ReadFlic.cs b/src/ConvertCiv3Media/ReadFlic.cs similarity index 100% rename from ConvertCiv3Media/ReadFlic.cs rename to src/ConvertCiv3Media/ReadFlic.cs diff --git a/ConvertCiv3Media/ReadPcx.cs b/src/ConvertCiv3Media/ReadPcx.cs similarity index 100% rename from ConvertCiv3Media/ReadPcx.cs rename to src/ConvertCiv3Media/ReadPcx.cs diff --git a/ConvertCiv3Media/readme.md b/src/ConvertCiv3Media/readme.md similarity index 100% rename from ConvertCiv3Media/readme.md rename to src/ConvertCiv3Media/readme.md diff --git a/ConvertCiv3Media/test.ps1 b/src/ConvertCiv3Media/test.ps1 similarity index 100% rename from ConvertCiv3Media/test.ps1 rename to src/ConvertCiv3Media/test.ps1 diff --git a/QueryCiv3/Biq.cs b/src/QueryCiv3/Biq.cs similarity index 100% rename from QueryCiv3/Biq.cs rename to src/QueryCiv3/Biq.cs diff --git a/QueryCiv3/BiqSections/Bldg.cs b/src/QueryCiv3/BiqSections/Bldg.cs similarity index 100% rename from QueryCiv3/BiqSections/Bldg.cs rename to src/QueryCiv3/BiqSections/Bldg.cs diff --git a/QueryCiv3/BiqSections/City.cs b/src/QueryCiv3/BiqSections/City.cs similarity index 100% rename from QueryCiv3/BiqSections/City.cs rename to src/QueryCiv3/BiqSections/City.cs diff --git a/QueryCiv3/BiqSections/Clny.cs b/src/QueryCiv3/BiqSections/Clny.cs similarity index 100% rename from QueryCiv3/BiqSections/Clny.cs rename to src/QueryCiv3/BiqSections/Clny.cs diff --git a/QueryCiv3/BiqSections/Cont.cs b/src/QueryCiv3/BiqSections/Cont.cs similarity index 100% rename from QueryCiv3/BiqSections/Cont.cs rename to src/QueryCiv3/BiqSections/Cont.cs diff --git a/QueryCiv3/BiqSections/Ctzn.cs b/src/QueryCiv3/BiqSections/Ctzn.cs similarity index 100% rename from QueryCiv3/BiqSections/Ctzn.cs rename to src/QueryCiv3/BiqSections/Ctzn.cs diff --git a/QueryCiv3/BiqSections/Cult.cs b/src/QueryCiv3/BiqSections/Cult.cs similarity index 100% rename from QueryCiv3/BiqSections/Cult.cs rename to src/QueryCiv3/BiqSections/Cult.cs diff --git a/QueryCiv3/BiqSections/Diff.cs b/src/QueryCiv3/BiqSections/Diff.cs similarity index 100% rename from QueryCiv3/BiqSections/Diff.cs rename to src/QueryCiv3/BiqSections/Diff.cs diff --git a/QueryCiv3/BiqSections/Eras.cs b/src/QueryCiv3/BiqSections/Eras.cs similarity index 100% rename from QueryCiv3/BiqSections/Eras.cs rename to src/QueryCiv3/BiqSections/Eras.cs diff --git a/QueryCiv3/BiqSections/Espn.cs b/src/QueryCiv3/BiqSections/Espn.cs similarity index 100% rename from QueryCiv3/BiqSections/Espn.cs rename to src/QueryCiv3/BiqSections/Espn.cs diff --git a/QueryCiv3/BiqSections/Expr.cs b/src/QueryCiv3/BiqSections/Expr.cs similarity index 100% rename from QueryCiv3/BiqSections/Expr.cs rename to src/QueryCiv3/BiqSections/Expr.cs diff --git a/QueryCiv3/BiqSections/Flav.cs b/src/QueryCiv3/BiqSections/Flav.cs similarity index 100% rename from QueryCiv3/BiqSections/Flav.cs rename to src/QueryCiv3/BiqSections/Flav.cs diff --git a/QueryCiv3/BiqSections/Game.cs b/src/QueryCiv3/BiqSections/Game.cs similarity index 100% rename from QueryCiv3/BiqSections/Game.cs rename to src/QueryCiv3/BiqSections/Game.cs diff --git a/QueryCiv3/BiqSections/Good.cs b/src/QueryCiv3/BiqSections/Good.cs similarity index 100% rename from QueryCiv3/BiqSections/Good.cs rename to src/QueryCiv3/BiqSections/Good.cs diff --git a/QueryCiv3/BiqSections/Govt.cs b/src/QueryCiv3/BiqSections/Govt.cs similarity index 100% rename from QueryCiv3/BiqSections/Govt.cs rename to src/QueryCiv3/BiqSections/Govt.cs diff --git a/QueryCiv3/BiqSections/Lead.cs b/src/QueryCiv3/BiqSections/Lead.cs similarity index 100% rename from QueryCiv3/BiqSections/Lead.cs rename to src/QueryCiv3/BiqSections/Lead.cs diff --git a/QueryCiv3/BiqSections/Prto.cs b/src/QueryCiv3/BiqSections/Prto.cs similarity index 100% rename from QueryCiv3/BiqSections/Prto.cs rename to src/QueryCiv3/BiqSections/Prto.cs diff --git a/QueryCiv3/BiqSections/Race.cs b/src/QueryCiv3/BiqSections/Race.cs similarity index 100% rename from QueryCiv3/BiqSections/Race.cs rename to src/QueryCiv3/BiqSections/Race.cs diff --git a/QueryCiv3/BiqSections/Rule.cs b/src/QueryCiv3/BiqSections/Rule.cs similarity index 100% rename from QueryCiv3/BiqSections/Rule.cs rename to src/QueryCiv3/BiqSections/Rule.cs diff --git a/QueryCiv3/BiqSections/Sloc.cs b/src/QueryCiv3/BiqSections/Sloc.cs similarity index 100% rename from QueryCiv3/BiqSections/Sloc.cs rename to src/QueryCiv3/BiqSections/Sloc.cs diff --git a/QueryCiv3/BiqSections/Tech.cs b/src/QueryCiv3/BiqSections/Tech.cs similarity index 100% rename from QueryCiv3/BiqSections/Tech.cs rename to src/QueryCiv3/BiqSections/Tech.cs diff --git a/QueryCiv3/BiqSections/Terr.cs b/src/QueryCiv3/BiqSections/Terr.cs similarity index 100% rename from QueryCiv3/BiqSections/Terr.cs rename to src/QueryCiv3/BiqSections/Terr.cs diff --git a/QueryCiv3/BiqSections/Tfrm.cs b/src/QueryCiv3/BiqSections/Tfrm.cs similarity index 100% rename from QueryCiv3/BiqSections/Tfrm.cs rename to src/QueryCiv3/BiqSections/Tfrm.cs diff --git a/QueryCiv3/BiqSections/Tile.cs b/src/QueryCiv3/BiqSections/Tile.cs similarity index 100% rename from QueryCiv3/BiqSections/Tile.cs rename to src/QueryCiv3/BiqSections/Tile.cs diff --git a/QueryCiv3/BiqSections/Unit.cs b/src/QueryCiv3/BiqSections/Unit.cs similarity index 100% rename from QueryCiv3/BiqSections/Unit.cs rename to src/QueryCiv3/BiqSections/Unit.cs diff --git a/QueryCiv3/BiqSections/Wchr.cs b/src/QueryCiv3/BiqSections/Wchr.cs similarity index 100% rename from QueryCiv3/BiqSections/Wchr.cs rename to src/QueryCiv3/BiqSections/Wchr.cs diff --git a/QueryCiv3/BiqSections/Wmap.cs b/src/QueryCiv3/BiqSections/Wmap.cs similarity index 100% rename from QueryCiv3/BiqSections/Wmap.cs rename to src/QueryCiv3/BiqSections/Wmap.cs diff --git a/QueryCiv3/BiqSections/Wsiz.cs b/src/QueryCiv3/BiqSections/Wsiz.cs similarity index 100% rename from QueryCiv3/BiqSections/Wsiz.cs rename to src/QueryCiv3/BiqSections/Wsiz.cs diff --git a/QueryCiv3/Civ3Location.cs b/src/QueryCiv3/Civ3Location.cs similarity index 100% rename from QueryCiv3/Civ3Location.cs rename to src/QueryCiv3/Civ3Location.cs diff --git a/QueryCiv3/QueryCiv3.cs b/src/QueryCiv3/QueryCiv3.cs similarity index 100% rename from QueryCiv3/QueryCiv3.cs rename to src/QueryCiv3/QueryCiv3.cs diff --git a/QueryCiv3/QueryCiv3.csproj b/src/QueryCiv3/QueryCiv3.csproj similarity index 100% rename from QueryCiv3/QueryCiv3.csproj rename to src/QueryCiv3/QueryCiv3.csproj diff --git a/QueryCiv3/Sav.cs b/src/QueryCiv3/Sav.cs similarity index 100% rename from QueryCiv3/Sav.cs rename to src/QueryCiv3/Sav.cs diff --git a/QueryCiv3/SavSections/Aibs.cs b/src/QueryCiv3/SavSections/Aibs.cs similarity index 100% rename from QueryCiv3/SavSections/Aibs.cs rename to src/QueryCiv3/SavSections/Aibs.cs diff --git a/QueryCiv3/SavSections/Binf.cs b/src/QueryCiv3/SavSections/Binf.cs similarity index 100% rename from QueryCiv3/SavSections/Binf.cs rename to src/QueryCiv3/SavSections/Binf.cs diff --git a/QueryCiv3/SavSections/Bitm.cs b/src/QueryCiv3/SavSections/Bitm.cs similarity index 100% rename from QueryCiv3/SavSections/Bitm.cs rename to src/QueryCiv3/SavSections/Bitm.cs diff --git a/QueryCiv3/SavSections/City.cs b/src/QueryCiv3/SavSections/City.cs similarity index 100% rename from QueryCiv3/SavSections/City.cs rename to src/QueryCiv3/SavSections/City.cs diff --git a/QueryCiv3/SavSections/Clny.cs b/src/QueryCiv3/SavSections/Clny.cs similarity index 100% rename from QueryCiv3/SavSections/Clny.cs rename to src/QueryCiv3/SavSections/Clny.cs diff --git a/QueryCiv3/SavSections/Cnsl.cs b/src/QueryCiv3/SavSections/Cnsl.cs similarity index 100% rename from QueryCiv3/SavSections/Cnsl.cs rename to src/QueryCiv3/SavSections/Cnsl.cs diff --git a/QueryCiv3/SavSections/Cont.cs b/src/QueryCiv3/SavSections/Cont.cs similarity index 100% rename from QueryCiv3/SavSections/Cont.cs rename to src/QueryCiv3/SavSections/Cont.cs diff --git a/QueryCiv3/SavSections/Ctpg.cs b/src/QueryCiv3/SavSections/Ctpg.cs similarity index 100% rename from QueryCiv3/SavSections/Ctpg.cs rename to src/QueryCiv3/SavSections/Ctpg.cs diff --git a/QueryCiv3/SavSections/Ctzn.cs b/src/QueryCiv3/SavSections/Ctzn.cs similarity index 100% rename from QueryCiv3/SavSections/Ctzn.cs rename to src/QueryCiv3/SavSections/Ctzn.cs diff --git a/QueryCiv3/SavSections/Date.cs b/src/QueryCiv3/SavSections/Date.cs similarity index 100% rename from QueryCiv3/SavSections/Date.cs rename to src/QueryCiv3/SavSections/Date.cs diff --git a/QueryCiv3/SavSections/Faxx.cs b/src/QueryCiv3/SavSections/Faxx.cs similarity index 100% rename from QueryCiv3/SavSections/Faxx.cs rename to src/QueryCiv3/SavSections/Faxx.cs diff --git a/QueryCiv3/SavSections/Game.cs b/src/QueryCiv3/SavSections/Game.cs similarity index 100% rename from QueryCiv3/SavSections/Game.cs rename to src/QueryCiv3/SavSections/Game.cs diff --git a/QueryCiv3/SavSections/Hist.cs b/src/QueryCiv3/SavSections/Hist.cs similarity index 100% rename from QueryCiv3/SavSections/Hist.cs rename to src/QueryCiv3/SavSections/Hist.cs diff --git a/QueryCiv3/SavSections/Idls.cs b/src/QueryCiv3/SavSections/Idls.cs similarity index 100% rename from QueryCiv3/SavSections/Idls.cs rename to src/QueryCiv3/SavSections/Idls.cs diff --git a/QueryCiv3/SavSections/Lead.cs b/src/QueryCiv3/SavSections/Lead.cs similarity index 100% rename from QueryCiv3/SavSections/Lead.cs rename to src/QueryCiv3/SavSections/Lead.cs diff --git a/QueryCiv3/SavSections/Outp.cs b/src/QueryCiv3/SavSections/Outp.cs similarity index 100% rename from QueryCiv3/SavSections/Outp.cs rename to src/QueryCiv3/SavSections/Outp.cs diff --git a/QueryCiv3/SavSections/Palv.cs b/src/QueryCiv3/SavSections/Palv.cs similarity index 100% rename from QueryCiv3/SavSections/Palv.cs rename to src/QueryCiv3/SavSections/Palv.cs diff --git a/QueryCiv3/SavSections/Peer.cs b/src/QueryCiv3/SavSections/Peer.cs similarity index 100% rename from QueryCiv3/SavSections/Peer.cs rename to src/QueryCiv3/SavSections/Peer.cs diff --git a/QueryCiv3/SavSections/Plgi.cs b/src/QueryCiv3/SavSections/Plgi.cs similarity index 100% rename from QueryCiv3/SavSections/Plgi.cs rename to src/QueryCiv3/SavSections/Plgi.cs diff --git a/QueryCiv3/SavSections/Popd.cs b/src/QueryCiv3/SavSections/Popd.cs similarity index 100% rename from QueryCiv3/SavSections/Popd.cs rename to src/QueryCiv3/SavSections/Popd.cs diff --git a/QueryCiv3/SavSections/Radt.cs b/src/QueryCiv3/SavSections/Radt.cs similarity index 100% rename from QueryCiv3/SavSections/Radt.cs rename to src/QueryCiv3/SavSections/Radt.cs diff --git a/QueryCiv3/SavSections/Rple.cs b/src/QueryCiv3/SavSections/Rple.cs similarity index 100% rename from QueryCiv3/SavSections/Rple.cs rename to src/QueryCiv3/SavSections/Rple.cs diff --git a/QueryCiv3/SavSections/Rplt.cs b/src/QueryCiv3/SavSections/Rplt.cs similarity index 100% rename from QueryCiv3/SavSections/Rplt.cs rename to src/QueryCiv3/SavSections/Rplt.cs diff --git a/QueryCiv3/SavSections/Tile.cs b/src/QueryCiv3/SavSections/Tile.cs similarity index 100% rename from QueryCiv3/SavSections/Tile.cs rename to src/QueryCiv3/SavSections/Tile.cs diff --git a/QueryCiv3/SavSections/Tutr.cs b/src/QueryCiv3/SavSections/Tutr.cs similarity index 100% rename from QueryCiv3/SavSections/Tutr.cs rename to src/QueryCiv3/SavSections/Tutr.cs diff --git a/QueryCiv3/SavSections/Unit.cs b/src/QueryCiv3/SavSections/Unit.cs similarity index 100% rename from QueryCiv3/SavSections/Unit.cs rename to src/QueryCiv3/SavSections/Unit.cs diff --git a/QueryCiv3/SavSections/Vloc.cs b/src/QueryCiv3/SavSections/Vloc.cs similarity index 100% rename from QueryCiv3/SavSections/Vloc.cs rename to src/QueryCiv3/SavSections/Vloc.cs diff --git a/QueryCiv3/SavSections/Wrld.cs b/src/QueryCiv3/SavSections/Wrld.cs similarity index 100% rename from QueryCiv3/SavSections/Wrld.cs rename to src/QueryCiv3/SavSections/Wrld.cs diff --git a/QueryCiv3/Util.cs b/src/QueryCiv3/Util.cs similarity index 100% rename from QueryCiv3/Util.cs rename to src/QueryCiv3/Util.cs diff --git a/QueryCiv3/readme.md b/src/QueryCiv3/readme.md similarity index 100% rename from QueryCiv3/readme.md rename to src/QueryCiv3/readme.md diff --git a/C7GameDataTests/.gitignore b/tests/C7GameDataTests/.gitignore similarity index 100% rename from C7GameDataTests/.gitignore rename to tests/C7GameDataTests/.gitignore diff --git a/C7GameDataTests/C7GameDataTests.csproj b/tests/C7GameDataTests/C7GameDataTests.csproj similarity index 92% rename from C7GameDataTests/C7GameDataTests.csproj rename to tests/C7GameDataTests/C7GameDataTests.csproj index a75f0b99..916464c0 100644 --- a/C7GameDataTests/C7GameDataTests.csproj +++ b/tests/C7GameDataTests/C7GameDataTests.csproj @@ -19,7 +19,7 @@ - + diff --git a/C7GameDataTests/CityTest.cs b/tests/C7GameDataTests/CityTest.cs similarity index 100% rename from C7GameDataTests/CityTest.cs rename to tests/C7GameDataTests/CityTest.cs diff --git a/C7GameDataTests/GameMapTest.cs b/tests/C7GameDataTests/GameMapTest.cs similarity index 100% rename from C7GameDataTests/GameMapTest.cs rename to tests/C7GameDataTests/GameMapTest.cs diff --git a/C7GameDataTests/IDFactoryTests.cs b/tests/C7GameDataTests/IDFactoryTests.cs similarity index 100% rename from C7GameDataTests/IDFactoryTests.cs rename to tests/C7GameDataTests/IDFactoryTests.cs diff --git a/C7GameDataTests/SaveTest.cs b/tests/C7GameDataTests/SaveTest.cs similarity index 100% rename from C7GameDataTests/SaveTest.cs rename to tests/C7GameDataTests/SaveTest.cs diff --git a/EngineTests/AI/Pathing/BinaryMinHeapTest.cs b/tests/EngineTests/AI/Pathing/BinaryMinHeapTest.cs similarity index 100% rename from EngineTests/AI/Pathing/BinaryMinHeapTest.cs rename to tests/EngineTests/AI/Pathing/BinaryMinHeapTest.cs diff --git a/EngineTests/AI/Pathing/EdgeWalkerTest.cs b/tests/EngineTests/AI/Pathing/EdgeWalkerTest.cs similarity index 100% rename from EngineTests/AI/Pathing/EdgeWalkerTest.cs rename to tests/EngineTests/AI/Pathing/EdgeWalkerTest.cs diff --git a/EngineTests/EngineTests.csproj b/tests/EngineTests/EngineTests.csproj similarity index 87% rename from EngineTests/EngineTests.csproj rename to tests/EngineTests/EngineTests.csproj index e0059a5d..02c83c70 100644 --- a/EngineTests/EngineTests.csproj +++ b/tests/EngineTests/EngineTests.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/_Console/BuildDevSave/BuildDevSave.csproj b/tools/BuildDevSave/BuildDevSave.csproj similarity index 56% rename from _Console/BuildDevSave/BuildDevSave.csproj rename to tools/BuildDevSave/BuildDevSave.csproj index 5368b12c..5a74137a 100644 --- a/_Console/BuildDevSave/BuildDevSave.csproj +++ b/tools/BuildDevSave/BuildDevSave.csproj @@ -1,8 +1,8 @@ - - + + diff --git a/_Console/BuildDevSave/BuildDevSave.sln b/tools/BuildDevSave/BuildDevSave.sln similarity index 100% rename from _Console/BuildDevSave/BuildDevSave.sln rename to tools/BuildDevSave/BuildDevSave.sln diff --git a/_Console/BuildDevSave/Program.cs b/tools/BuildDevSave/Program.cs similarity index 100% rename from _Console/BuildDevSave/Program.cs rename to tools/BuildDevSave/Program.cs diff --git a/_Console/BuildDevSave/readme.md b/tools/BuildDevSave/readme.md similarity index 100% rename from _Console/BuildDevSave/readme.md rename to tools/BuildDevSave/readme.md From 7973b43783f8c75893a0675fb7e8c7ec77a2406d Mon Sep 17 00:00:00 2001 From: Robin Choffardet Date: Sun, 23 Feb 2025 14:28:09 +0100 Subject: [PATCH 2/5] Fix CI --- .github/workflows/export-c7.yml | 25 ++++++++++----------- tests/C7GameDataTests/data/saves/12345.SAV | Bin 0 -> 42932 bytes 2 files changed, 12 insertions(+), 13 deletions(-) create mode 100644 tests/C7GameDataTests/data/saves/12345.SAV diff --git a/.github/workflows/export-c7.yml b/.github/workflows/export-c7.yml index f7b74628..c20cd9bf 100644 --- a/.github/workflows/export-c7.yml +++ b/.github/workflows/export-c7.yml @@ -45,15 +45,15 @@ jobs: - name: Windows Build run: | mkdir -v -p build/${FOLDER_NAME} - cd ${EXPORT_NAME} + cd src/C7 dotnet build - godot -v --headless --export${BUILD_SUFFIX} "Windows Desktop" ../build/${FOLDER_NAME}/${EXPORT_NAME}.exe + godot -v --headless --export${BUILD_SUFFIX} "Windows Desktop" ../../build/${FOLDER_NAME}/${EXPORT_NAME}.exe - name: Run tests run: | - dotnet test C7 + dotnet test - name: Copy Static Files run: | - if cp -r ${EXPORT_NAME}/Text build/${FOLDER_NAME}/Text && cp -r ${EXPORT_NAME}/Art build/${FOLDER_NAME}/Art + if cp -r src/C7/Text build/${FOLDER_NAME}/Text && cp -r src/C7/Art build/${FOLDER_NAME}/Art then echo "successfully copied static files to build" else @@ -78,15 +78,15 @@ jobs: - name: Linux Build run: | mkdir -v -p build/${FOLDER_NAME} - cd ${EXPORT_NAME} + cd src/C7 dotnet build - godot -v --headless --export${BUILD_SUFFIX} "Linux/X11" ../build/${FOLDER_NAME}/${EXPORT_NAME}.x86_64 + godot -v --headless --export${BUILD_SUFFIX} "Linux/X11" ../../build/${FOLDER_NAME}/${EXPORT_NAME}.x86_64 - name: Run tests run: | - dotnet test C7 + dotnet test - name: Copy Static Files run: | - if cp -r ${EXPORT_NAME}/Text build/${FOLDER_NAME}/Text && cp -r ${EXPORT_NAME}/Art build/${FOLDER_NAME}/Art + if cp -r src/C7/Text build/${FOLDER_NAME}/Text && cp -r src/C7/Art build/${FOLDER_NAME}/Art then echo "successfully copied static files to build" else @@ -114,16 +114,15 @@ jobs: - name: Mac Build run: | mkdir -v -p build/${FOLDER_NAME} - cd ${EXPORT_NAME} + cd src/C7 dotnet build - godot -v --headless --export${BUILD_SUFFIX} "macOS" ../build/${FOLDER_NAME}.zip + godot -v --headless --export${BUILD_SUFFIX} "macOS" ../../build/${FOLDER_NAME}.zip - name: Run tests run: | - dotnet test C7 + dotnet test - name: Copy Static Files run: | - cd ${EXPORT_NAME} - if zip -r ../build/${FOLDER_NAME}.zip Art Text + if zip -r ./build/${FOLDER_NAME}.zip Art Text then echo "successfully copied static files to build" else diff --git a/tests/C7GameDataTests/data/saves/12345.SAV b/tests/C7GameDataTests/data/saves/12345.SAV new file mode 100644 index 0000000000000000000000000000000000000000..b4e92bf01e4d116e3542cd89b3d6dda7b63ce9fc GIT binary patch literal 42932 zcmagGdqC6m{y)Br0UOt`k%DsBxDCp5fEUOK8d^9kKJ&OJt6ZZL9xbd% zNg3aAW~lU4L+n%AGJ^w##&-`-@7gy!;N2E3WDmW%()v?Njd1?9&%WE;|8>1T({lWd zz!~Ut_i5gG-&y+oSJ7^=*E9~#gsrkSON4o+2mGH5D01H_BRk06U6Gu7wrj$Sje|{0$@pT0B6;ZMR{w)lKjq&! zD_gQTD$@{=TfbnQvi?k-kyYZI-u)r_i$vY($LEJ{<~a}V-?eLvH={H)X{1!f(|&Qp znEB3Q3^&F1#c6N-@a}gLI?fqb40-SlVeG&on|Up^kO2RWKlU67VecJc{?9UBp=SA( zsrNM3|N7p6o=scju^TJD$jI+tOp6LWt#NESvZXVoruAiw?nt<1pl$X~p2CKNsvk~r zCSTmol>L(btcLN}-8*NO+gcm{W1DY{awriQ4Z%?#qO~D)b+6{B4ev!kTc+lUuzTXH=Yd zhvR=@hS1hEZwvS3??OKKvoLz=g1;s2tv5EeH}fk0rD4ksH(uU<&W$Ims$W*hTz7ja z^Y8Tm-?7^7a5HPR#Q$libKaZp1WY<~C(Zmu$s=a&P^)`G<7=hvuTHr2l&bYs;jTiD z_d9X}ZvL>oU?Jz^zMG@rwo9$|J+m2$Y)^bBYia(o@|V30mG%!0EWWo!mKPun_^9wD zb@A&wiOrlFUor4 z&X?a`F3sdU`s5K^#ju;(%`5j8kB`mX8TI_ex5jhgvma0TCG_ws=lTmO4RP5W2FEM^ zU?`*K>|e+Xof#p##eU)iM|T=?VP$esmz(m2f9}1Ox24IymcE}lGE!Q1opYiwbJ1Hb zJ?SNgVEHz5aWApV+vlx_J+W%hN!e3R$hS0J;)t%diuxtz7>Vy1pT3y>eL;SS@lHdn zJ}aPhWcNq;Jm+lN(@*Cme;BmMaPps@NuQrtKVEY&?SK56^OUQ}w-n%sc6#D8+!E}yOs8P5_Soz^ zJYgp;AEC=Jxcnq82XK}RaMSSwDW1^E$1QK+79n1u7vdH^Zeh}x=HZrN)*h?i?Uv`0 zLh*#d5x5+I%UZguz-1$zP>YusUdI!5vumWI!=atd0(z4S_Z50!tZBF}0rzdfn+*F} zlqSB_Z~#wa;)(6_RTFV%7Jb!x+_?>RM$oV;@x)@>qL0Qc$+#sM597*lOB8Nl(XjWl zM33mjs^FZtxExPkMN^kfm;dY3iD=j~bsF5#|G%b=oANGqS^1Z_xZHrtm*}f@U<`-< zICU}D5uHvp%|s~Px&)8R%E51T;x}nD?kfC7!}f6QX4E&aC%3H;lx9aEl$c94?m^JN3!kyTxwWc|%$0)=PaDp7SvM z^1lwxum``q^~d3j=$BgXP25=gXg(fOg-ur{!K;?j_w2(DIG6+Wqqyvg(OjhOnTye^ z!!2pF5j40(O0SK?Esxy*-lanW+|3PQ zg>Y_42iwoN`{rGmHH^`DfOgAvJlKc_>&ax&@Lo0Ta$3Quc(9H}zaO{o+?Ta}Fq%@$ zJ${3;?BqJ_gg4ph&?lF40gPn)6{YX8|6{#m894oL|8$AJh8j@q|S* zhvYNjF=G~(bKO2%KKT1#xhz@!e-7)YgtO5k@!aP)Eb3H$JTXG;7~knkkAX#o&OO*M%@1*&DQ_BQ$qqAVfREPb`=Oh;dWx`tV{X3;yPlH?djBUz_3n;xyqZOmUqNmy5|j8SMrOw2 zvKC-uY`P4?5$ux1^iIHk|FFvc+i9y0(ylJWli;+2b1*O|Ci1^JZ5miLw<+<#QtE}Y zloQmBA7>b^Rn6)3*L0{85(TnWlX&YLo!S)3u2F4Ct-JbeYURizmqN1bx{Yh7cDp~Q{5%xm0(V6LO_+X`qUx8d=XG(g&^ zDHs7_*d@Pk?Y!1=;!5F^HhJi;83DtQ!ovr)ZvD|Uw}R>~w@NDR!I^bcVa7z*#MF9bkAc`Cab9E2qV!jI<8Fp(fNNezL3vC^b z);ia0T-XBZ4{E>5sH_ujPGm;?sIE0X27_7Ht5{v}Wq8xEoVH*Dg@KThdf+`v)pIq9 zKyul%mIjRHefH!fpJ-d6Z(R@$X2^B}rHY#V)UZogCk}`Xk8R!4SgpHfcHi9eMw+Cs z=#Dvwf-Y-s$LsU)1|g>ZHvrN~PkazWo$awIZb~o#@Bcf9PSei2{#+(@#o?OgIk+4zxzyj)6Q>P1%+Dd<*6F61R_ zc}*Zv$X0$f=3&?p&Hy&>S#MsCl!8ZlxP{f79VGT0>(tSo#UB1*!(7pARw2U)ipK@gO zeKTAATB?St1~}N1ItBOsK>LIY$PeRPNH$6a)K2!53j2D2JOzRI$#j{J$(t?F4zGgN z4@|5*gFDH9Cg3S@ddmEkMr94%;_0dVLYnWjImt~i&=%_&8(XaUVQ@R1k-+Qd%rka< zzG1c9a;SdH3;f&PvWGAmb6?qf{aW0`rMxadd98n-JW3JP!v0?RwrVY+aZI{HFV5X7 zzA{o;Xv*AOlFNy3{FEAdE$)hei|sTS*8DJ>s5g;EB6qxf44UJs+SWv?EO%L-Vs5ad z!h6)U%vht~*|~+O2Ywp7*8(pT$6fZqp?4(L;)bFYOWh}*2q#!eso(E2tpP3>bqKx( zyNX?pOskDcM*Ul+HP6c5@OR#TYu>LAc-RZu|2v+-jziSh&I*f|MTq`)poBIzmi%oc_tEY%aN3QFuRkZt6g=yOD0VzxKw7h(E7FRZ z-blyW{AG9=UspLg(gs8r6{Cu~vY55!{k{L;y*1>8qA^`kY@G$+I*}h z7)4j)$%?4CDY0z9_4?-|{*Aj^-adr|9>~f9?CN5-c#o^UhuF#5t9!D%RQC3%wXWUP zbA(=sZDwQhf~MB9M*_3iuNR#$OY3<3TNvr*4JY<8`2UgyTLqWwm=G@4__TjrWN z^_eFA-`qW%QIj#K(Q-KXuiNkH|61ZXOhHNQxS4XKv<}`NwYn-8c~!g{<@1@enh*2& zd|-h$m8`qB{ad@YvPu&8doq|c&h$s8ay}%7Socxtfwvm1e#af0&8Chnef806S<2iC zhCPyNRhg^xUwWQ^C3uPj;o#b)sK{Ll7pl`#3jU4hmG^`@8YcUFgf!y ztyvn~BF=@qF6S;=?!h**H~a#}oIYFL>948ws4pQH;}wJGT4D|R z+tGhZo}^9?Oi;bY(3qDUWxoNAA>?Y@ox#a&x!Cago9es2nlq}wWD4EE5fp`Vep-_! zu^4XRQ={;8+v7UbUecNw_`7u;ea0WigPp8Bj-Mi7t07!Y*s;i<+4qIhf?`KizfG(o zN+ZX{@NgGZHxA9d@6bKbJ7G}8=LQUA$$(H^heJ+x*!@c+MMYluZ{Ez+F1_pNRMpbl zKB=A8Bcde1pBy0Ifh)*wV(nF}C5v+zCp^b4&D@sI!ydfoaBX(WTZ)k02|XR>juLX2 zQV7r2TWYqa(wi z+s%!fVcQolU}YCe@Pluw%_m09X9$g_W>yVdic4-GKa#w0y8dSC}+^cS&(&={=_2 zv&1XaI=MT8mKMR#U#UwTNskP41a4{R^CWcPB`0+83rMAqO{x6oaE>lBX_m+HqvwYs z(#$1n{VavY2-}IAFv9UTHt3A-xrJ)4!u4#pDuDW`U{;mmt(()zk`>Itj>pV*Sydg6 z`K|)46Fhq$1$($ypJr;kaF-qRiuXaQVSBCrM01qFOP4(CT_r8MQet;6>Ip!a(6c(l zc#SLL)og@+Ix&4NC&nr`gVDj995L*)hT3K|c`-_O-o#YsD2x-0c9cEY-CIWv#P^0R zisy_JZZdV0c{mcnFFVua$W!1-98uje$>%;fX(HeQMRBR5*K6VIZNW%Jc+7fzE@!}Y znePQ&f@Skr)cU~{OwrO=?vvMeJ`7;&Xl(i4cp1V+Z2p0**xn1_Frx$r&}NQmIP|i! zUF^5P_a|xaz{C<_wAQs><;pTk6|5k(Q^n^*s1q15u*aCWDY-=cF~)bAG5gqb0IBdY zj-M_nj!p{~TBO0;n1MF2ac!g~x5H39bgt+i;bT7B920>yi-SNL=Bb_A`dADjOg;Jw zR>Gbs8|pB;*KqD`g0;`)Q?F$5({xWZlww};KMMcXJHC5W9N*AMmh-%zLVGrnW%E1Jtv73R=i|ACNRPvT(H}EwH3*FQa~{yI_c00{2vl(0MVish|sy(7xk;kqytA^soSZw5sDS zScgpRvX58#($=q@v6VSr?NxAcrcTMvLHJTk?Qhu1Ks=c|wc)HTHAY zQ<*6?P8ryqS554wOB3~NYlM|euc{DRg#4UvD?AUI9WeSYjri+N%fC8US@r>&3{0x>lfz2G@hv5bF<;~;Fc(u z>*QVe5gSD<`$pZrm6|i*I*~R;IMy>Vj{bd)P^1s8Eb|!l9vl#C=(#vJStx1Ww}c(= z)sNw-A>UQ35*9Dr{_Q7Mu$+;YUytYPkIdEYSq3QhoX{}zD_)5FENbJ6LS&^U-R7%x z#AiI@&Z8*S&Veg$$s>-~-8+(HE}gdaU%{PDebmloE`ZTOWUOYu3mkNkFU~eegBR%5wtEkfzR7 zanD`CxiKIhJlGK@1hn<2SCK;jR!dT3HBIwV?J|i24g}=DXxE!~QK0AoTjP*lCeXTZ zi#cmnC_gXZzve`+ii>S#{2q;E7EZ^QeFSa;7c z08jNI^6gE3dP za|%SjN>#eBxariBspjblkF?CwmM*;pV3F5`v1wsmnPuh5pMx)d8Xwj49EbNT8=G1r zpV=Co6I@+-V*1lw5yHkZ4d?fbVgiDFPC7yjVy-;>w7cgsqhUjFrFAj7%IUv)hIIBl zlV)6#QQ35RxU`tEJC#c>{Znyld$L6m(MV&UE zfKH_w&DJ|ftrPnP+)|E2e%SJM$wbZ_%Z$RY_eSrOO5?6#6QH$>3(RswCGi)(-6SnbQYVHZF0<>w5&X{h1OXgvt5h31 z+QJ8tieuhUdzsV`*vkuJK6ZAaLZ2!3vv#uBQe%qJ%%H`9VncdL8pO#OT@O$1Y|Vug+9O zE?(|P|4hc|D8haTZ&Ct4YUg!o$jO72*cmL;e^b(4Rz7O9!S|<&0y~z%x`jv9u4pbeH`O8dc z`)^xjgn%lG!}HI4uiTK5*_u65QsJfcK24055d>qOwoV$|%JoWXNKh+Q13u zbjd4uymZImh$E$nWe*6Y(vzp=5o6;29QHFnY3n~DRaMQ$#`uvRL1V;G`EQPPUdvk< z$h4Es27JfMfJ;@I0+Ga34F_L7@!T>K57|LYw{W8))J5CI3~opvFQA>bekw1UK?%1a ztiLx@mbrhIESwx!>wz7#)7mKZRd*WNf)MiTK0m2Eu1K}>1}u3-XH>-0*0_l4s8OS? zz(&5odfc{MFex8t2q53TfNxH!H{qu{gb`O*9QLA{eOsqN=pldRD1in46t2$=%}fT%99hQ?av^BM zqSQJMgeIG`rpm4U;I*pD*&NQ9l25#8N3vhvdIviK`??`c!Z{w(Hw$a~8{fT}QnA35 zqkht>RaonzUsKg#m(D7mS#TR4q6@@F)E7$53o2{>q?fet>N{)Dhz+ zSPcvhtTC$=<#W%JCodQ(yE%=T2JcO;RBD$7APzCT{;Jjudyb0^Z$RoIvJT2;)X8dX z?fe00z~es^+n5g9n;Q#75sTTd-vqB1UD<4`xDh0 zohS>r75m#2O@=cP{x3>j0a-6B@N)>-JFx%_b;D4Xm4{_ak_&o zfgdmNu}*eH5Oaj+dij^i?Mh0JWJyf-&E|us8}r9wwS6q8L3~mo@DAt+c=1HIwZP<4 zwq&B)4BPg?qHKz_{@2pNJI#&Ch${)YlhYS&JC|2!m@$OUE8(zrNrP_*IxQ2mlKuV~ zgkbe{1kp*@ZZHx@=!Q<&qf>jIN%>wGcD}m$=Fqh))-GfnUV!EfN)eyN%43cF8+SRxd1V9Uw`kcc4iUQ zxo$2{@4UP*_LNPmG4ZZ@LEXC;!E7*s30}*-I1XSr{QV(eakn2VK(QOunLDQde!U86 zk8Av#@z>#VEOVBbK#`KWQO{=j{Ixq37^|V3IY^GY?-^xxm*HrE zNp_Ywc;GFuJCNVeQ{J3UPQC8!TeOGpgD9|5e8(2Z5Pdz6rF8Mw)4e!1Y_|f_J2MzM zFv*e^BCA_+lLS_SF_$+9P&<{f3kI39zFGY*fcJKdthjCO9sgCP_90|)zA|IqEW|U> zk#omuCFf>*L|j1A8%0>fcZ4wLFMT>WZ{~hs*wT*Y)b_8=SbgsJ);9bN0!(v?YDqpo zdz4qUQUVc8$x1#qWS@Uktv_4NP8=DY*xAMv?YvE?WZ_uxQ;ko~FTbw#dZaorwp1}` zZpw1YQllfVl9}8lE1o^GZn^Fi69ZU*HFMB(eWKjh1 z)-5Nyz6S-$4b7`fu!+IHFw(JE8YOF2fKr#``iqaCdP1wLZ>cG%kePI^B+X7cjo6&P zAh-Z4UTv7MRf*aMQYgLTT#+NSPMz?>6hH_D+!AI&-;ncNwLTe{x?AGcNU;%qD?5%C ze~kQA2tA#@_%KkwJzvk4oZQ3?luLSjf48s(k|`C)IEx0T0$vA!jN_+RzeN4?;Y8Z! zS+kd!*!rm}c`ZW3-lU#@SqiPVI?<@lOXqnc3#@|OE;2R0+zOI{yqv1m%lG<~qTGsm zE9B=TCtd}L5phnv8lm8G*#6FVnb25a$N+kHG=1?Ww;Kir&HCFSFU$>4CN`_54BN97 z!%cV%)cy&Mdr!cY(SP};fVC}?M1IIK`>N5DQ}Fi}$*wide5v4Y(t)qn;R zf-3SFGyv5h7M0HHIg>`u8;Od&UM^6rw!iD&UY42U%idfqkcC*o`XRO3?rcA3kL*PP zRWyUQ`_uR5|B+o_M?FNm>4!D0yFZ(aV_n%rutQcIQ{xpS7?TmiMn8D+ek!V1`+s z`r1l#8QGVdq4!8h%Le)>MC~ z%Do^UoJ*YRcplPrJ98Mc8yCTATz|uT3Cc_w;y4N82|w#Y4AJ7UoTI~X1&qENgpeyV za>nscU>V0qK5{J%sk901buJQyg$G273x4&wA#BtLb;0QX0}-@V7-VA$)+(CT3PuJU zAp9oQicdvxWVa=23wcNETV7_lGz!}6uR3Wfh9QS~FH=4wd$#{Iz+&!$1sgY^`wVvF zbOomtDu8rHfuG`N*}XC`gmOrH@`(96-Q~G?h${o?pG6czoh|^s7fBu@;anu)pT-k+ zRP@~SQgzY-+I!Ion6%18T8NgXm}gNr#desN-6=kDtx6Wld2{HR#it1X1z0<$H6$kh zLChVHcNzX(c;LW}d%<|6C2v{M?1_*8R91Y6vhS}MRI-1kCEDuePO0ZQd~zD`uB47c zvGdc5lpG9kBaXE-Q|*gUIHoIbe*zvhu4(pt28X@QPJbj(Hg5vR zRKlE`Dv!ywr#RYq)rQ~eqz$B#hCbx#ejPbP*52M-S<3DbM3qA%$2h!0%BmR5IcP6k zK(#xgy!isQsGHYvDg_HZg5}RI!U_qdJ`x>1ofu>7y|bP#4ORK*c$~)Sq5ZpVH|(V9 zil4X|^IC|oqmjT?R@<`}8f8dMP;@w>-##;2?R939eGS$1Xph$YzzwyHsJW3WlSTV_ z`zg=wrO!L%0bWG3SHVX@$OZfxFagS#%YC6$8ms)fJ5K)rqdad}*zAdkBQwG;w*?33 zmts>Juqr!INZXX=s@(m738%7JJh0si!gg%}&rRji)q)=r$ABD_?`jAhU9XozhiYf7 z5w5x=b>AX8AE-X7RpfiE8tLnkb$8`?G%r2fR@XQ^T$F#oz?EP+lxg!P&Ti?Gvk_c3 zn^-dk42*hR)pRcrxhxqBa4baoG2wE_oR-6!bTe&#he)nR|BuuWARj11AV|{R`-VMP zoaF1!Nj=B4=9e!6UK@6g_(%qbN#yMrx}RHGAnQPI*4p z(pR{Bv|U>#3d<28v8ApQv5a%; zCMfQTrO{`va%ZnTb?U;H>G;F zF)troUBoo|t1OUOq5shV0T1W?I!tKo%d~;*T`nIdhL3QW5PU?jCuW?toI&x&>{0so zN`|3RP@Z%>6}aF11zAprC@^P}cAu1cuM}(TBX94EX7@>hGs^|8wN*yf73%lMpaP&_ zhhCQq#Epi3B^5#E^l`w-(U?aj07998lu*&r=dH?}5$=Tr1qPnfVy;-=P#>xrm?hImYy;%c4XmhkQ}D>;7fxWpjz@5Po!<6dj@cdDdS0dpJ`}o zSpeWTOThx?WRYq|+_u&FGYbd9W+}+kn`bBrZ9Wl>P`fj5K;^N;!9HYIx#ta4wY!wHjn=T7FaXp|h?ra+Ku$Gq#JIrTw&0cP zeI7BhVn+ytGhv=CPA<_M#=NZc$HBvCa1CRzDt>ll^>KoJRU||ME*N?sD{;BJP62uE zpt2>W-4tpT%BpdTr$W?QC5E23mbDl7GV41CFgmT@Y|Qm<)Bw@jv`gJ-rix18Ul5$%v|GI>aDCFfr z?GreE9rTNgQ9N9%hf4_86?eX`ZPMbj_CB}0>RSIK@Q?FBoK9CeH{$QCg%XS5wsP`f zWRo@HffG8iNIR(|X(hSz>0@{Z)TU!TQ4bK;I2Q=eK0#7TAAr>ZX~jesnsdig4V9gG z4Z>*=(&9r&_UA>1+v2`nb+l}0XnWJEAtQma>JG3VOaH5FcRe6Tld8Pfq?>H@i`ff) z{*3gj(Z4(wMe1u7SuUz(VC|Nz?l|ruO>%%)v7@H}?gXO7t&MQn0#2CAS_c>pYK!UIn%)Vz92TC860?g?@TIq=&@S)e&Pl=1Fdpm&gWZY3mgH9 z9Dy&kaVN*rd9YqnZ~K0WYtM?V5UC}VZ}VOSf((?0q7D?2?xa%AZ%Ti54B6hg8Hr_E zgO9L~455}H6+dYAP4)=&ad=4!QxmlF2Cv0J2y_^{!4K3ElY;Owy~pncB=CF0-UlAP zvJMGIB{C(}K|43oD+Sd#Xb`@Y26H^EVQ~tru%$0Q+k`DBTViUt%Y4#OK}(d`5QFlY zt)17nL-a=D9YcqpTDiY5sf84H?1q+QNr#$F9ccLHU_78KC_i#Lb!KvVqs{rK%>F(f{Go!1CbuwZ;+E^0affjmR?})BE?zf=f`imQfw*Hh2)_X;id&j47e_>$g%+u@qYT@`(Mm-V|?Z_p8=L<}lXzb5UU0DaX`&UhNH@^YhSt?yj|7mDr zQqZ+31lk=f(Y7Za0`);Lt>i;xE_FP)@=0_t}l;hf*8)Z1T3!dyng1O!B?$i=XXkl0NA#uHi9zgV{(aU2YyB zN`SqX7x6a~>HL2S2UhCO))C2yvEH=P|O9>Ujy1E<+=B`vGBul zeAfE?Bt2V}m(%Slt_~t-S?Rv7V`4ca@W&Qx==NQeZPH~Wt@n7T^}Q^r)L4=9yutRc zeT5A=rZ2cO$DQc*1j@&#ouL_a_?yZfP#C&+WYq5`XMKmD5hy^ccuXsA-QQs#mS9o! zo-2T+O)jQ{nAA(F;DIzrLvh(ih5seBFvhKe7%F}+N7#&Rw+XgIEsp|Ar^ERC=a|3h z%SUneF`D3}Q$r1FQ;KVCb}jCV7>8ooWKf){?bAI1ipKva`FfvXdr2gHpT7K*Hyf3U zHNw4OF%i$8zf{YK#QxH+P2Sh%wnzUDA_R=AJ>980AxBn3!{(C4aQy&x9_nua?8(fc zX{_a2Lf}{|sJNxvB?^rbW4jz)V%eYR8(i=PzXfo%ug@Kc)#&#K2KLxN@iAvX;*pBH zyt!x^%~=I~KnJNbjZO8LYF0vGJ4qQ=g>)|YMDG&I-mv-jq}?ZUmdHc$)TfOZ z`cE9)fOT$9S><{8ry!XB@SCt!B-uJ-(kX3M;U^3eSN9~u+ZyL z4x?88@iU&^O1arOg>}+Ozcd7|#Tn-U>o-}&oLLep=PDI1wiTXoHP1BC8smLb+tDxUuN6{~{9Qp4@ z)OW;NS>*pn>%}btg(zaGr5i z9o+G>h`o9ADSDJQbOio4Y?lMmTg3PKOJ6}LL~{zV`mCacIE7HiW|6Y6nCi|P@tZK_ z>sU=_umm5OToJz|E9nH=dhxWG{$0_m9r z?C=g%Lle?HmtMc3L^~J{S}zf+$vYiTvpo{Q#_eO}KL=R`OzhZlpJ4LWp(Kqq#Rt^n zmD8p1BTN$= zROn*HfU8XaNtEuaOp@QV1=H|7qsUX_+vGW{dSP3e4-&c|z&?qtW@rcV$7Voh(f$DZ!Nyxrnm##b+REahDH}#>`7`glK~rFgMQJ%= zzhXB$VBq#P?g6{oTqG-Q@K0@_=OHP$w-_Zm{)SP%U8gcE2BtrNFNzdt`={M@1D6pe zGPZnh58u^RC+;NbBP=In%#zJJL*lHGtl@zFar73G3Q~UOp@{JN7g*RD(o-rVIFoSmM_XB zhpc1iCU+#O(-t`LQ8z+=;MCS1Ahd$~n>-z%t^!6jeEv>&w~u(XEgMQtC=2-ms`9y} zJD$W)i6>Ic@gH;00C3_|9+fG+^t(S$`ou_JQ&ck=Q9I_LrR&!ssvZ4X|6jc(1r+AL z0st*`k_7Ob&~ie%RaLhOQA&-PjZ!N79Z8V}!yeVo;6#3S7I3Sh?#YJ$4H!kt2;GTOw`KUubWnxhORY#YE%#Le7Po4cvk;m2Sh?x+g$BP(9s%o* zt(j~*H$x{pxWf_P=}MjEkm7)hcLg2stn^W9!M*hpg*p94VWZC)f@_Zpl z`fHJsV$LU!*S$LPeiX{;czM?K^2CKER;n$Egq_HN@|r%aS+v@2nLYNWvQjUYExBMY z!d|j%K4(hM2XJh5nuMABv*$0W@?-^-y6=@H|5VKuHM=yM0_wX)DD8VI8>dllhq%;< zGzw>2K+c%X0Z8`xWV(mR0hMdq;*hiX<=rvOe}%-dq22reBaLg{UMmjpLBhOTejWig zpy^Kx0{}43#-PIXy}h2BoBo~!hr;v$OkUoKD!0ot9Z^i#(U*#X;-QBrM*quEBsdb1 z1B{guXN0q%5>EzwrHccaS@Ox&3uAR$D>2n8RZui64FE?F^&edvJIUE*D66N5+k(?O z_Ctl%*pOEI4B{~p)#(b@I$0-0P(oBLX%XoNkZd79$PONF@K15?aYTVMo)>G6V|RKM zLqzfZ^rty%)b1(&yLUW(L3s(DmddP=3KLZ?;*i3&p-@<=xL4@0)b1`SZ!SxN z5=-@%k>@3@0l1V{5_4=ZBaoJTrRoPDAB68GJk1Ysl0l5sK ziSiqpe`5>s{8&JH7Su#&XoyjJ-LSpLN6~DHGvKDgXgIE_FeqW3b8;I)%h_yydvy4V zu0`Fo*fFl(3SMP!5Mhz>G?x_u&=Rrh{2A47sK79zTklYBRYI31Uq3XERU{O{MziEF z)hg9K7m_q~i4j84UcUZC@M<5b&!9EyEKC#rXffV=`V@Agk8Aon4AKSWH>b_a##*^P zrv((zczgT!G@B1(Gwq0`1xZL%IB7!H!n$%(c8v3|$W`B6g0c=}2PlGob+KE*nv^@6 zC1>yIlX_o}!ZT-~!$|1`%sUmFN;GjqIM$+EKpfFj_|)GWYe8^cW!a~O?06}3{}V_M zF{a>Jj%eTwZjwwxn*!5F-(AwKQ=r0`kn7g;x!oeel=!s3nbx`(iS=YlJJ}=#^1IPf z83`ng+^#?~A8}rXqPuzVM1eK0>FRzAIBQw%n>R}~Mk2N)2w3RlfpSBFq{)5N;2!>W zq}J$rhDG-4d!S`sTX>FKo?OSF7DT9%db=`wv`5io_2^=-)b~38Q>3mhzcCY%P{?l* z!07E2$3brs!2uG>pd4gsKigYd9n+jLg3X~uMwq5=9(5bvd3AppuW*={Le%|VI21f4 zyw0H`avDH^*4iJ3=bZx<7y>OcI(%AFqp^w>vv0$rYy(LFzeQE+9IA%o!i_{=u2zJU zKE8H3&+RT!wN}MV z1hrVpK9H`K{grU9R#N(*&vzu9&e{3*aUEF6G_0iK0U!I5iVt7}WUlTPAc#-zec|hk zx#H$RPgwsFfl22_47j->cpbdy`j$Q@;0$jx)x-84A+|PBb$AD> z^}`+VZ%UT!E@5yYdSY3sp{_hu3F@cE;*%;8uRJ!!8mz8BM^jP_(#@#Zk&3wt)XA4a zmGAz7edZO2Th+DVID|?AB@1`<`=jjwr6?x4Y(avcx%Sb)LD&}h@+=0|D)IX5`_a8l zfD(P7@C{W&)(^?w8uFNYb?HOA!y~-Y9}v`u@qlb0cJuA&6F4!)+CbN?a-EkEF##Fc zBS7O(J6|Sc0bcN9iyIhCg$t~WdVomDL~S1bE@L2Hdjoq9Ro?A=eE_)NL8_Dx4z+;8 zT?XGmGodLxIo(4rcnwO@tZW!pB_)(3o6jfi^+8j%6}GgNBfrJ2F^kF!Awx zX?;5KQ1K%X18qVKM8>-~N3IPAu`12-If(|gG~L^M&&Wo)JU0$ehmTi`&1bMzku?Hk zf!-12CC4h4ODYTn@EF3Dmh2<}A>0lICMpUoTaYeu#&Tty0sT?5o2=ddt z*dqdc5`ZPr0ru()il1ZNCu_P@Ir+*Ys@fh1g%XIoZ^VG}uF%zLH~6{dSb!WO46?>F zGypQAY*QEa@vB%DYf@wtoUq9A&~~9NQ!3rw4tq5~X1R%F9u1 zzsK@7iU6vB)q^;n*xLFm zs9|q-<8x^44D%tra$xJ=IFy)^Y|NUK%^x$;1D1pJ)?Ns8OxKGd!k zbJi3Mdrk(|xB!zPhZdJyKwJ*1}y_vwQ20}VMdk-tM|kb&McD#0C( zpjnBoqvZQ2uX0qxyL7DWuhg|VQ_e2=cuERnL;FF3j6!~t)CW)FDmR_Ei5s8`2SR_) z{S`%m%6QC&>qNH2tVg*UStZ+|n;EUMi`)EDz5yMyi2wP%Lt`!PVMmnN#eYKC#I+>q zWc1{(AsOAIsl9!vH-WMQ(6FF|;+#DY<*rOKJCWgM&3IN@Xm^hU-Qp_3P`!!H&-z_4 z3P;oNU0xc9*GEicPc*Clxuy2#EC{b9anK4)WWr@ zuR-Gb6rKU_qsD%Dw{K$w8c~c*GwYDz$i_sv3uQQHGAriTt83JAv$3x zou-|NNI0fP`VFD^hxU|!Flxy39ewuU*(#d?liGc7Yzt2Hu|1W6W+UH}U}$k^2{I@& zqatMUL?r?aEdWO8332_X1f(XRM#Qq`8ttP{2FyIYEAP)j8#pB<_% zl#jSp2@x{xSbXVL(00=vBi$I$1jz7jHuxQXT7;7=U7iV@0P}#d& zTgSPVp%h@Vz?qZA%giWEb}ZKmi-GH|;S8bA*Q}^KH)9lJTokjuW8RZ+Pr++8O$QVG;5{(#eN?BqHDq-{cs347p~%8s9pPZKthxS zI)SOL7($cA$*-|uafJ2R_CU1rdB2Go?<(R<&*O8@Dg(;E zDvR!&V7Dv<-Te`*z-%nV9|The32#3`eVKt1 z+CtzfrjHbSw=vhVz8@4C$#T+LDW~Mlhl@?XiFS&N9(XK+o4c(`K#6^Ey*a5aVs45G zW<_y^K zw}6^;$8$XN7$}>tXQxj@GbJ=jXu+e(8#)=0ok{j99I4e2SH`8KPXsCDka%u(yc4&x zxorB%p^Yh!qAGbC=IcnV&||w5y8FOZWZe@8t7oq80O53Ew3-enYvct?I{gjc-vZ7j zqxx;r9sUD7*W2a7+=&LwtIFKd0(HV~Ocx0nlgJa2SE6I~mbfIuN?1C$kk9Tia1`(( zCkc@-i@JBnX&!&M_qipC$<+b`aLID`~+uV|;>5q+8&X_pX?l0necLST5v-)bf|UVA^kE6;TrgIl2^v`5WnPes!Xjt3xUiIbVdHuPxe zs8Rw%n0(~atCIL|ErcE}KN$>p9Gfn91AG|{3!(2o$r@}IfRl?f<*vfMd!JJYI&4gf z;|RHId&(Dmp=1e}NeDh2sAfRTvZZr~AiJ0RYzd(2)G^oS@WnwH35sQ~xK^UA-hOZ@ zBN+#1!J{Lnjcp3d_zwJH%w2N+RgoKs?pV}d>GM5XGlM4zB`BQyQwul(UmObY7j#nm z(!N)*`dZdIAHo-9(qR>^!W{F20!Yj;Yz>u{9vXl&wO7{Qu;i(rs27^jvL;^L51Ia0LS@*W^JnPZ8 zzT^{B&XE#e$;d@Q&Ib++OU5TJikMe5k0I^&;R+>^JCd3nNz07<&oa6v6RpY?MriJ%b8i%N5M- zi@K_@xN?}v1qk=RcNdutsQuqg+l4sL6)KR)1Kr^~vFkWb%z|9Sml=;CCMzPwj&{^4 za*KvtiU_oM%(D6qbaCLi0^^)ydwy&O{xFDwT+a~^Y7$_yp=G8sUXbwyR0$>#{Yxl(tEq$( z_6*<)XfDr7EfsIQGb3p886g}#nBPIa2r8S}0k&?$B&`Y zm)eyDkm#(_FPT_{AU@;^6`d3%M>_Gqd)&A8NuLyiJ6=jqbPRmiqm`S!dxzn0)z0;gjB4z4@ddz>ku@8r~z!O8FMAX ziQ|}>)-_ymhJQFW3FVq4i8}b*S#(;^c7P9(K0G|y4DISN8OM$S)KqqiF>(qU8Zr$U zxD+Hn4aDIc@VhLb_y~5c7?n}en_m$+9Q@r0|<u8Fb$XiVxw)t@ zFuMUnw5#3l*z7zd?^l=!8U>6@s?DfV_rcM}gs9$?U9v!qN8&2)&_Ll{r&2fj49#H5idH$4mNGm`jOs^PwgUip;lVi4`y zItSk7z0rLh-O^&>b2z&fWQelpcw?RKu;A^hHR@w#*$Y3@P*8)78%c6H=Gds}U?z+R zHKtro$yq`|p=pw#h;X?nqa+H;?7so027yfHCnQ`5u94%bXny1mE{Na3Ok|)7AR)Ji6hV zic>(=Yg{1#Ej(OSwDSnYg_kWHEHd=@46g;SEK9$ zn|R*0+O5|^c)jy{_a%mQYmWl_4s;4q33y7t1R!g*jthZv;64XyX8XLSgizNJV2sd_ zN^DFLH+()n$Zf?ke!=#Sus$TUai+g-4=9MBJ(rD!mD9WwiP#Ud6t%*R+IaG6LyBJ~iEvQe7+Fy3xiUllj?l0a?8~ZypyhO$znuWCAE1 z_7$w0sm}7V-b_BK@1xP+;x@4eWKs1z(>HqWt4M6Ye*>ygkY#xBS0~iA0h73c7StmD zU_&Xm{&%e*n3or5Fp}KK@(7Y*x2N|7GcGxbLwT|n{*%DKC!wm6SC0EaMy?K0V`oGK z@et*e53*`Z{I)oH@mq&)JyDO|#Su)Sm16`u>#k{RlDF+6M(6F)*ZrnJ>}WX0@{2YN z4E+1B0t++ilFso;;*QJ@#CG(6EV3NM`EYbFX6owM1qkP%ofC7XdOQz9m|~I))3oJnXIlqs&Xng;w*J`3O*;#Ty_Tjjqztp-8!D?S;M7m zI{3v}QwYUfI${ESmoim={?#)m6#_1}gp~Te?~mx{KjALhrceK3+9_{Gq{L;&5e6e* zH9m&SU{X>X%-vzI865b$YTE(dQ0{O>CFpZcG+26?A#p%-UK>avd&suTQRGU!$5b&U zdZy8F#Jq|4`taV*UIM)IjyrfG@KEf}@B zTjzlp0CYMtqHPMmF1A}!YjDZQ=ABKG3hIuseL$mGVuv%!!X@m7ZWh?ajA7VFI)s8r z;1x8DBbaa`y#wvza_l3Q*gn)yY)AW8+*Lakg|d5S2|wqW&_(FXO0c;0L~KlZ;eiD> zT>DWK`X`Ct(0B`^m%9~`yoYxL&<)sIVra_?;gfCv18R|4a)0Tl?~7z%K#G-$~YF=jLfD|AE7``DXuRBqyJq= zK}CmTYZWzW`=D7dB(2C4x%?>S69N|`1h;$z3{#yuX_qXLQvU_ObW~aFrZfOx2|hn- z%aOihqs~ftT%l7@U>5It*A^LpWdI)#!TSw)`$30@Q-69a3^5es(XuRtU7ldFh$)d< z&t2Oz3EW8NS%B4sEjk4Hpu1jERYox36O|NFnrC`4U%-YPv4y@cE}8?u%BZ&@a%>ly z9ZlZ=LbM@CU7r+=p3T#w?FN{isMAv%O|38+=9F?1lrV}>I7y5Gl1I69<`B(8&BM)d zmIfPmlY#{}jDF#8jJaw-vKQ*7@nb#Q7TUH(mr`ARvbnT#;txbG-tMt#>_O-$-1qHW z226qUsBW0hwwsvZoz?+LK%L;@E&WtbCYCeg{f;67|rHa~u?HZ4~qg0wBGl@XYcB!c< zta3Qf0MYBijB3d%#a6+WbDPT4wc>Uii%e!gQNj69(kqqsmlbiBx( z2O1|_Fw_`f}azWOl2N|~J?ynOI z3Kf;z!SU$ze#K!2%E^I1Pv;h#$ym6eE=hlF^XA-SDejPsz^0lbMewxrfM6%OSXr#< zY0%q&<}Bpk>aSK4?PkT;Ezme3?rN|rdgS&IkgcJ8G0t&W0q?_gVZ55WS{fB}9O^&1 z%_;45i$RL~38V`~Lxjqu$V%5IkybxycWvAS<~xInEveY%e|l>eZ7If&hI#Ylm7_CeC4foVqA?{WHQC6nERt_M4D z*E^P`T_2l8L%k4WYshw2zg!^!kzy=qZQ1}Zq8##y7&QrZdI@sPB!~}md!0Y|XfUZ; z^ArRD&u(vhkxC%rP;en^6v7G4(g}&!ZxV-8hhkmS1<1avz%@scTbfIWV zb%;o-_g%^7^;$tifivujwypJf`+@ zD581*oN;FE0aH*BP(cO3J()1^gy)E^7<)!;mx$bKsLLa9FVc0}z}-eUp8^dAO~|T% zWj7v>5}glP)@gQ-jZAt#>jvwGV~Zwsn<4Ahz|E<+9?GJ20mdf-t}iK-EKZ z5BZ@-NieQeG(f+AKuQ=Qp3pmnfVc%@`i!8r#s%GRF#CXZ(BQHi-3~w3IXu=yFi8QR zRVRUO581*?ltqrQ?fl*kaX0YHf7ZM&ldJ^&1&wqdW{MhE`T z?aYrvlBkaN`G9!PtCr>aCWkX>bAHg0n=j;ah!#0u_l_TeKqf7*UgMRWGTzLtVNa?j zv`FlZ9$l zQRf!I`xEuma;@pA`;69!2GStx`CZ)j<>bj2>1k=2WHmq^ECY^sCWi3To9zU^+BLI) z(L&KJ4-DuLOe)2OKseIjn<098Gv)R1l7h-(L;6QAT54W$`1TBQKq_wI@UmieCQvQv z1S{>(wCqcz2zbMQs2~p)H=W4{#B6{&)D!N`1Mc{!4}vNy6lZ+wRFLRTa3RYJtL2sKyd zd>`x05ptM-vG4+nvGQ+`L9Sd_BpF z*->B;hsNB=!sWdqY@TaUu(GfWZl(xqG(wWQ0V5RJT|tbwLg%xdcaIS!z}zE!7SWv( zaT%k?84x6laQB*n9Cr!;NV!dhy`{!1(b_+`n<>Lk*Ty%f#QT!KUQ$vE9B!zdGHj+< zFAuuMFt>z&AGXz2@1AM)=H=DS+ooFZS6*JN1Zjm@no!C@_XYzU$T&bGY7Cr9(D)4` zCZ_~2jWM4MO1XOhk#-Z?q{OG!YE8GNQ3wU7J=UV z0DnX`yxlAsMuVvUYQ;bCB$MgIsD`2zw02&>X#_Z(E1QJ3`_6XGMksXa#H6j?E!x_R z7K)%C2wUuDky9$+;!NukUw{@EJ8QR$W7Fl#q3EG9-p7S$L$Fr$q>SD} zGeTV37TB!s)=4xC8A}#+iN8(RDx{EcX9KbMi1BPv45N~jWip)ztEZ2eeO>)S3fO`y zzSpV|1diB1J_EWZHq>8z&0!X4H79q;Cmy)CO`^6pcs{1sr=}xWEi)d;EIN|g&`W9% zfjvMHP|XsGCzQewZF+ zArI}`50=53O$S}_MAn=Dy@zA(act}l2&sRCs6J>^h+R@6&qkLDb>T{dDlo^(CIW?i zz2K?2dEoQi0*juMoQq{sx#*W7KrW3SUy$$!g$YFHG=Q8OLIZn7N3gkSBp=iRL^8xH zD2pJ5uOtf51bP_NwqF_IN)a`Jv%@eYgl_w4YAngQz8NCrMQ!gVh*)WBd}caBNsdAK zJC-Tu!P=Gza}!8~#Zo0Wu6AMj?T`z77k(z6jE>KPBopUfG)A516EuOUZ^Kex72HU+ zSqkC~4_R)oQ>OOg>JJ`*JjonPijXnT2}ZPRh~)tlN@yP<#UvR@k2IBD`!R84_V}t_ zcrccfX=xS}G(RI|ICFe4~pU#nuU2A;Y zK3gt!aWrj*s;KWr(?Pds04cwIHkpNw76sHCSAW_|EMrA8lx30fB%WgKqC0YKQlVtn zHlfWh_lw>LFhfy-?vTs`PXD+`HX#Hip+IOnc&688u>H_Ird9w9cszNJu_s}m8sc?G z4d}GoKJn~>D1)Lkh6Oq1cY`002I)v~V=`u<6a)>zVacLU<4%!}P67NB$W0s>=M2=7 z*oMT2<x;P>^aA6=h&!>oHoaD-+8T84TB=dlfF%1HNmt?}Rf+$m8Cwsb z?S+QNZ?|DSW zl1F&TN9*!Ym0^lONh1MIOEIkwk0TXR^O-J`?i}qtBCT- z2%4@0s}t2lvo||OA{-%tib|%vYE8_cN3jVphwhM8HiYpXf^40f{jH^Gjmc4SfUvc^ zH*=ybRfI#gzBow6$(huOwp4+LtgiNtWmp<}BVDdiN$UNV{zkU_{)( zjhGP34U3c|FqH>+Gnf1F8cUZX*~sUP1o^chzyev@4Acmpp7iLl^a&dgLbkmKBtu^x zghJVOgtZxmTg4N$!BpZ&*b_a6n=QGQwdE-ZXn5zBgE<4SXX98K1;}ET(BMW@f~K>; zzX=)c{C+GHd8BB|jev+jro~Puir<01A^qR0GYt(EOIGA~tH3ZoY0N-Y;;>BL=$b8M zoDu0dL*16durVRarR|~%sXLfbI5$SovYZvBoq2AzY&OBiy|kA7Em9B8>nBtLqJm!>2@1fRN5bVdLNS=cp7UVh$jQW` z?L3B@76pDdGOPU1dakzZv3PB3%y}Z{SqxjV9*WNvJ3)D{ItRsyg>;~ouhFyD0H$>CG-*P12WjX9fW&qRr7D{4GK zUhf3(32U$7an43lD-5X^FcTOB(vD?*e2bmVZSS7WQ|s%FQYH>muUKXU1{{s%d0P*A zGS!9;aCyiePJ@}^d_*_?!h(g!r75#O(&2-JLStPKsELmhBVSPaTWLwtl)}a z<=UYQOz<NB+G-sP0OZr4gyMJN?pAyES)=C`*YU3Lm(XvT$@c@fos#uIc#&|1fNoV0``ErQ<@ z#0VR9ysx3CInzM(j;_REt-pBbS}8PAJ4E9kn7X>#*^frfh9$j(7%g6c7$(SLM}j@F zkO_vY?uOc>LE{}<_mg4hhN)+e)EGOyIy8uy5$J~hwvRAQKhK(9@Z~G5?lj%@BYPlY zMbHmzJ0b$=Lj%TR1*keU|s0$QWbxcD|= z42V=rY}t0PS?vKK)K-xfS80y94PXK`uJErMdx#2y+ZZc%tq{fMlt-}eYPyUrSWy}y z#YnEuDQIv5Q=#*1i21|ip{y~I>RXVfyP5=~kC}ey3SP|*ae7`;T68g&#lNe$xa5Ei z?1kt+z}F-qgHqr+Tk}RY=e`aT=!XlI9N2<<-Mq8&6UrQIrJYu;u)a`KLs2~+ipd}+ z&{TyDJ!aGxYwXVtL0$g=QNawQ1w5-0v!Jy!4w=GrJn}k!(h!-B7Ap6g&}I;zKexfK z#$+eT4$xJQUx~T zuu6QnDS?Bk@amdSxp2pA2w8F_T$`~&W@AtWXviahi|@K=FI$AAoN_YiL_ zej?sNZwvTyg82sG2!Ru0V9vV4%*(^BF_83ZXmNHadlP?k&%5cMQhL4%ql9kyW zus;QwgESsC%3-PzD8>AFUr+k4L}*ttPo>2`G*Td6!0FrwPSp$ray~@Zzn*zpG*w|3 zUF>`gQZ%o5AfHkW4Ozt$UwC2x)A`2DOLTq90>@C8CnK!UP`9h!FlzM~vn4dbIJK?F z#LC67%}PezH>DQd*PWdAqR)DP4Fjdu&4UoT7skTYd<-Y{UxrsrGN`g+>SZEEp3~IJ z$%=9KB-kd-)JIu&nuIU=f4V=?(8Ex26CtIW=Eti+JRQ~don1f#mSqW^|3y zybKe?k}>_el9hB50&1Z+*cTF znqL=hpb+4_P8=lSyOAUhl?mHq`=PtrNov^dLOahCUShRtt;WBI*taV{Z(wkPfqQ0e zr>d!aPaBJwid}4sMa}z4V(H9DX{22OB zEYMaE0`zAt7UQ(Xf$D`+V`D(++q!O5x;BHY*m?_roac!Hsm zo7SzQ1Uv-OB(B%{^~6}N%XRB56=Sf=10)x{OGCA?*6%@WD-T!>auHhb>9v6~Q!UXj z#WUG}g&r10+J7HRLndg`vg|EUoedcgfG=E2f zKIeWgRaTm%p;u`Z1@Fdr;kDF&Nv;8UHGh~F&a4|~AU>n1Vut5yx`AApRnmk4W%7km zv}4K9s3Z~mdH-^1omyi zpM!;ZMiH|kGz`?VTSk{*5Q4{J5jY)#?L_LQ+f1Fi4XXXVZI7n4-|>T8Uu~FA9z_cO zZFj*D$-moCp&J@#&vgjjWbu)%J{-5&N83u16QR}ZY`qX%^fE}MFs-z}9?eG}b-mo+ zjMH_Fc9xiom@kX!CF~Zp1z~1n@;bzLjHm<`9|88YOGen&B13Ta%%ERN0HE%Z zaMm@#w_=tDr}7w#KJbqwyxx~3WmpS4{BsT6Dk=Us-KswdKLG8hCY_eVy~MzbAPY*z zo1P?`v#Ze#5AqZWO#B;9bFW)`L$Xlio^70H&w%GTa-UT8z}g%~C4z>zpDU1g!5jRT z&V)r=cW|shnekSHYG)#?z#WI+3Uy)A3ZS^D_#dpmVTy8}dWApJu3%0OL`<7bkqjfC zb5J&0a5UMa${AY`vc*!+x*LnZ#~tR5!(v$C70%O3Qe_Eb+sCThI6KwU%7?K&_?!=r zxmXI$=~xBRPSCM>+;u0326DW}YrDsF!5h%t0#fUZdj-%LXGM=O#~X@u=wbR)0Ogt6 z9tYm|#vqaRPgf;3ym&)9-TJkC(AlD3e?VQJ)g+(@K)VbXlN#Yo?#e zm(fXCYd9V7PqZc3h}LOIR$`NCe)YqW7$lBRWv#Ap0{?3*9x<4H-$xZ*sg`U8HC)celh)Jd@ofBzlnzuTUV9@xqH)1TUcg7> zbf6wrw3wc^b|^8(DAsqwxzdqm8IDidL5I{#*K;e)@XeIF z!pe1jDun+B`a^o_h9T|owAR%0vz9LVljaU7Ev_h@i%Un826DvGA{$4XcTu4Zh()zb zg4E$U9s8#qPmF(H^ZUokqgIF|_|7tVqTh>AVc0O9>I3?-G4T0ayE9f?MlXm}?x-hl zFk;9tAUI6FI2V+uYxvhXdM7Rt`z#_k2VkACdWOeyrdvs?_veqd5Z}No*b|Run{rr) zgp;m5T)g4x|CerTJl<2Wi8a>XDSsEj5qxDl-C{~}J?R!3 z$zxr$l1Q3SXE=I-KpdvuJsyKTuBEppl?-fcavZ(uQ|9##F-RcUP`X2Z=9=+mI+ZDS zurfN8Gw=kVSo178m2UVEDII>A;BuFqoen?gXMIY~ZU9rDZ&8Ze+8>|?m5BdnIiFfS z_{DLQZQDmY8rn>t5@lf*44@J@6>59(F--Tu58B`dd+~#aAAZM83&%4#(*ZM7L2y(E zkQU<0;wTJ)^g$2eH~R>>(obp2{&DG^>6sAKY}C~sv))`iDrGOV;!BH&7J-Q6PdyZ# z!yF%Z!cJm^Y3sxAEONX})-00PA=wpzb^2%nXm!o;=W6;htu9~@pq=;;V(WU~Bf*A@ z$e70BBOH9B9nI<`iFDXp@C`<>)p}Z3DgN9=3;SR7D5-Tqu@oOMv`)0{kbO5s4+8LX zL)GyhsT|Tr;^t5%GHGegeyxSmr>SJ&7n z4yVa*W|H?(^hL3U7(WtE=ExX(2q-Cm!EVh1DbeR2^k>@mr~Hd89`l+0<#|QA@7lnr zi-dZ!Q{1@Jg4)3YnS&n+2gf?4_*=H8ifacYnS)L_eY;G&M#ZJZ-Czq_T1MGr4%!GC z{kf;ol)qSeCiG72s6Gh_owao;>rTdN7RoKT#lOB;<&Y1Jq zl#U#WR=qHwUc%K3<^^c8W}NJciE`%KL=2z$iB-G* zvi7O|{DIgXyYFw-azAK1JopuVV)C%h-sWfCI4Qp_QF|4J__@1T8-7gb_~^&*+ds-9 zH3^&^o7Kuo)vV`FmI}I;Z!7e8BkocKTQb{fl($N9ZzLZ5`(ynNtt)2mYajZnd*0&b z@0La#VhtQ+D9pmo9enHp@8=FaMIRXSFihK!EvG4YCRDw0Qk zar>rYoKCw|#E(j4518nxe)?vRbu2BQYH)1G<-pQQBGVh<{ol}=sQ-W7q)(*scbm-1 z7Ugv1vh2t9&*|HmEND&quD~%oo9k3_Fm98{orG>%(VXFPBD~PfZJ0 znwI%C_n-+Kny2=Gc?ro3zO+KY@((o6oZ(TvZMXNECrjOb9?jR>%i6cSr2K&F*VaHFyX8%VQ76W-z|hIy+p|&Mm9b2sUT-gi2a9Z+>e$ zD?g3ROf7uBVB@PRb8jYZlE-jn3g6K5an&^kN`1L{6AR{ie6ydc@BVzsGK!INw-Q*9ialk?G*fP*sWo95L=C6``ep|2v}_z+V%{>2>E zQ(*T5o&T zeQh7LMKC=4-uF{gZSDB5y!f*}S#U(Z zs0zmFWJ2+5-ktj+wbmbDHEWDb0vD9w0GY+ZYt+GQ%G=<@LHw9p-rV4r`izAYJ8vox;# zy$?eVU%$mu3GN0o*mQ~b=KGifK4It~Y_(^T@DNeBs{bz!k)t0G@~^3^fipSd!Vd)0 z`cLmklSY^Nu-zxcsvV`9ZTUX2FMIkIhy{U~=x^@}+gmzZT$e7|?YyaZsjwixx^|S4 zzpB(@99au(AXzExAxvsckts_i@^Hm$evm00op}17g?si6;6ke-)6p4{)cp{zKo^>svjn`r?u0_CKbS-L+^V+)|m3Nni40l~1X)kf> zlMmTGk7{ei^i_QF*j!i`%*BLx`7;x&`QfEzaociA0wV2(=V!1s#~5tIm3-Fb<07r% zeNLT~ntxNI-JZkgar!87K3Ru54{rNwJ0-%~gZ$jjg>LtP%OX^FkFv6l@B*rg`(W{` zeHat;H|zteb}=jbE0a$X(ig-A@}vWT6OQ6toNomo$pTTI@D5y=;D57wtII-!(xP!+ zToDdVo8)=t)P-PpGNqRLmZXEtcF7_ORg@z5hFIG*LMtv0I9F)!q^TG5X0!GOtmQ;4 zt>O9y_c;p_Yrcxx?BQ;!;g@IMnqK?OnXvGx!&BzpubL_GP>so)9=Mq!k6jQshSQ_k zLe5(GN;IdZH-hE=viW0s-I`GmIIF+ktnS;E-#M5aFYqK^^Gd(<&U|zqte&+G&40^2 z{J5AEyD(61Gz!VjGzt=qyUYL%zxOnFk>F@3@Hf7PF#@hP+Z< z*0a3QcIl8;%7Ry7|3zMjHSj#k^{UYdeETdb@RH5nVFd<9+>x-PYlfa6^chdE-SVBk z;{XgC6((EMUT+z4%bz~;22M2IzzLh0o2~yMx7^dB)-INKZy#EN`e&@cxGyq{yAW^4 zD*hT3#t<~B_Ed$xh& zo}kKn%NQcQ`>e~DFm~uN*5fkvEB~4hQ91a$@IC_OX+zsE?OEF}bKBpu4FMgCg*Q$Q zZA05Lx8a4qX&cTbIQ{nekVjho%ph}_8Pi8lYyo6QMbTk^bF{q@YYg9*E*mcPC7lS%#E?+bl1 zB`JZQy{B!KTW&h_YuL|@Bd@=Z|8c0TGE#H(8>pYm|ge-ZEF~Z)(+Tp!re99`}y}A#LVoU&(azu;p5e z_()&AIG|T7k*u{jX%bcHu`4jrKhnK!kQMm)f&S Date: Sun, 23 Feb 2025 15:15:42 +0100 Subject: [PATCH 3/5] fix test --- .gitignore | 5 +++-- tests/C7GameDataTests/.gitignore | 1 - tests/C7GameDataTests/SaveTest.cs | 2 +- tests/C7GameDataTests/data/output/.gitkeep | 0 tests/C7GameDataTests/data/saves/12345.SAV | Bin 42932 -> 0 bytes 5 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 tests/C7GameDataTests/.gitignore create mode 100644 tests/C7GameDataTests/data/output/.gitkeep delete mode 100644 tests/C7GameDataTests/data/saves/12345.SAV diff --git a/.gitignore b/.gitignore index 3eb80ae9..3ea1e4e8 100644 --- a/.gitignore +++ b/.gitignore @@ -483,14 +483,12 @@ $RECYCLE.BIN/ # Vim temporary swap files *.swp - ### Godot ### .import/ export.cfg logs/ .godot - ### C7 ### C7.ini log.txt @@ -499,3 +497,6 @@ log.txt # Exports folder ignores C7/Exports Exports/ + +# Test runtime files +C7GameDataTests/data/ diff --git a/tests/C7GameDataTests/.gitignore b/tests/C7GameDataTests/.gitignore deleted file mode 100644 index b9b71011..00000000 --- a/tests/C7GameDataTests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -data/output diff --git a/tests/C7GameDataTests/SaveTest.cs b/tests/C7GameDataTests/SaveTest.cs index 4ebd24ca..f11047c5 100644 --- a/tests/C7GameDataTests/SaveTest.cs +++ b/tests/C7GameDataTests/SaveTest.cs @@ -56,7 +56,7 @@ public void SimpleSave() { // load SaveGame but convert to and from GameData before saving to file: string outputWasGameDataPath = getDataPath("output/static-save-was-game-data.json"); - string developerSave = getBasePath("../C7/Text/c7-static-map-save.json"); + string developerSave = getBasePath("../../src/C7/Text/c7-static-map-save.json"); SaveGame saveNeverGameData = SaveGame.Load(developerSave); diff --git a/tests/C7GameDataTests/data/output/.gitkeep b/tests/C7GameDataTests/data/output/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/tests/C7GameDataTests/data/saves/12345.SAV b/tests/C7GameDataTests/data/saves/12345.SAV deleted file mode 100644 index b4e92bf01e4d116e3542cd89b3d6dda7b63ce9fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42932 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 Date: Sun, 23 Feb 2025 17:57:01 +0100 Subject: [PATCH 4/5] ignore tests output --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3ea1e4e8..faedbd30 100644 --- a/.gitignore +++ b/.gitignore @@ -499,4 +499,4 @@ C7/Exports Exports/ # Test runtime files -C7GameDataTests/data/ +tests/C7GameDataTests/data/ From d70bb0bd907db344a2dc8e2ef4a1a3fc0106316e Mon Sep 17 00:00:00 2001 From: Robin Choffardet Date: Sun, 23 Feb 2025 19:49:10 +0100 Subject: [PATCH 5/5] last fix --- .github/workflows/export-c7.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/export-c7.yml b/.github/workflows/export-c7.yml index c20cd9bf..2bb59427 100644 --- a/.github/workflows/export-c7.yml +++ b/.github/workflows/export-c7.yml @@ -122,7 +122,8 @@ jobs: dotnet test - name: Copy Static Files run: | - if zip -r ./build/${FOLDER_NAME}.zip Art Text + cd src/C7 + if zip -r ../../build/${FOLDER_NAME}.zip Art Text then echo "successfully copied static files to build" else