├── .clang-format ├── .gitattributes ├── .github └── workflows │ ├── cmake.yml │ └── docs.yml ├── .gitignore ├── .gitmodules ├── 3rdparty ├── CMakeLists.txt ├── NoesisApp │ ├── CMakeLists.txt │ ├── README.md │ ├── pch.h │ └── register.cpp ├── exprtk │ ├── CMakeLists.txt │ ├── exprtk.cpp │ ├── exprtk.hpp │ └── license │ │ └── license.json └── fastnoise │ ├── CMakeLists.txt │ ├── FastNoise.cpp │ ├── FastNoise.h │ ├── LICENSE │ └── README.md ├── CMakeLists.txt ├── Changelog.md ├── Ingnomia.ico ├── LICENSE ├── README.md ├── cmake └── modules │ ├── FindBugSplat.cmake │ ├── FindNoesis.cmake │ ├── FindOpenAL.cmake │ ├── FindSteam.cmake │ └── windeployqt.cmake ├── content ├── CMakeLists.txt ├── JSON │ ├── config.json │ ├── embarkpresets.json │ ├── menusettings.json │ ├── newgame.json │ └── profs.json ├── ai │ ├── animal_big.xml │ ├── animal_guard_dog.xml │ ├── animal_hunter.xml │ ├── animal_nighthunter.xml │ ├── animal_small_pasture.xml │ ├── animal_standard.xml │ ├── automaton_mark1.xml │ ├── automaton_mark2.xml │ ├── egg.xml │ ├── gnome_standard.xml │ ├── gnome_trader.xml │ ├── monster_mant_queen.xml │ ├── monster_mant_soldier.xml │ ├── monster_mant_worker.xml │ └── monster_standard.xml ├── db │ └── ingnomia.db.sql ├── icon.png ├── shaders │ ├── axle_f.glsl │ ├── axle_v.glsl │ ├── selection_f.glsl │ ├── selection_v.glsl │ ├── thoughtbubble_f.glsl │ ├── thoughtbubble_v.glsl │ ├── world_f.glsl │ ├── world_v.glsl │ └── worldupdate_c.glsl └── xaml │ ├── Agriculture.xaml │ ├── CreatureInfo.xaml │ ├── DebugGui.xaml │ ├── Fonts │ ├── 8bitOperatorPlus-Bold.ttf │ ├── 8bitOperatorPlus-Regular.ttf │ ├── 8bitOperatorPlus8-Bold.ttf │ ├── 8bitOperatorPlus8-Regular.ttf │ ├── 8bitOperatorPlusSC-Bold.ttf │ ├── 8bitOperatorPlusSC-Regular.ttf │ ├── HermeneusOne-Regular.ttf │ ├── SIL Open Font License.txt │ ├── weblysleekuisb.ttf │ └── weblysleekuisl.ttf │ ├── GameGui.xaml │ ├── Images │ ├── BackClouds.png │ ├── FrontClouds.png │ ├── FrontTrees.png │ ├── LakeAndMountains.png │ ├── SkyAndSun.jpg │ ├── clock │ │ ├── s00.png │ │ ├── s01.png │ │ ├── s02.png │ │ ├── s03.png │ │ ├── s04.png │ │ ├── s05.png │ │ ├── s06.png │ │ ├── s07.png │ │ ├── s08.png │ │ ├── s09.png │ │ ├── s10.png │ │ ├── s11.png │ │ ├── u00.png │ │ ├── u01.png │ │ ├── u02.png │ │ ├── u03.png │ │ ├── u04.png │ │ ├── u05.png │ │ ├── u06.png │ │ ├── u07.png │ │ ├── u08.png │ │ ├── u09.png │ │ ├── u10.png │ │ ├── u11.png │ │ ├── v00.png │ │ ├── v01.png │ │ ├── v02.png │ │ ├── v03.png │ │ ├── v04.png │ │ ├── v05.png │ │ ├── v06.png │ │ ├── v07.png │ │ ├── v08.png │ │ ├── v09.png │ │ ├── v10.png │ │ ├── v11.png │ │ ├── w00.png │ │ ├── w01.png │ │ ├── w02.png │ │ ├── w03.png │ │ ├── w04.png │ │ ├── w05.png │ │ ├── w06.png │ │ ├── w07.png │ │ ├── w08.png │ │ ├── w09.png │ │ ├── w10.png │ │ └── w11.png │ └── summer.png │ ├── IngamePage.xaml │ ├── InventoryGui.xaml │ ├── LoadGamePage.xaml │ ├── Main.xaml │ ├── MainMenu.xaml │ ├── MainPage.xaml │ ├── MilitaryGui.xaml │ ├── Neighbors.xaml │ ├── NewGamePage.xaml │ ├── PopulationWindow.xaml │ ├── SelectionGui.xaml │ ├── SettingsPage.xaml │ ├── StockpileGui.xaml │ ├── Theme │ ├── Fonts │ │ ├── PT Root UI_Bold.otf │ │ └── PT Root UI_Regular.otf │ ├── NoesisTheme.Brushes.DarkAqua.xaml │ ├── NoesisTheme.Brushes.DarkBlue.xaml │ ├── NoesisTheme.Brushes.DarkCrimson.xaml │ ├── NoesisTheme.Brushes.DarkEmerald.xaml │ ├── NoesisTheme.Brushes.DarkGreen.xaml │ ├── NoesisTheme.Brushes.DarkLime.xaml │ ├── NoesisTheme.Brushes.DarkOrange.xaml │ ├── NoesisTheme.Brushes.DarkPurple.xaml │ ├── NoesisTheme.Brushes.DarkRed.xaml │ ├── NoesisTheme.Brushes.LightAqua.xaml │ ├── NoesisTheme.Brushes.LightBlue.xaml │ ├── NoesisTheme.Brushes.LightCrimson.xaml │ ├── NoesisTheme.Brushes.LightEmerald.xaml │ ├── NoesisTheme.Brushes.LightGreen.xaml │ ├── NoesisTheme.Brushes.LightLime.xaml │ ├── NoesisTheme.Brushes.LightOrange.xaml │ ├── NoesisTheme.Brushes.LightPurple.xaml │ ├── NoesisTheme.Brushes.LightRed.xaml │ ├── NoesisTheme.Colors.Dark.xaml │ ├── NoesisTheme.Colors.Light.xaml │ ├── NoesisTheme.DarkAqua.xaml │ ├── NoesisTheme.DarkBlue.xaml │ ├── NoesisTheme.DarkCrimson.xaml │ ├── NoesisTheme.DarkEmerald.xaml │ ├── NoesisTheme.DarkGreen.xaml │ ├── NoesisTheme.DarkLime.xaml │ ├── NoesisTheme.DarkOrange.xaml │ ├── NoesisTheme.DarkPurple.xaml │ ├── NoesisTheme.DarkRed.xaml │ ├── NoesisTheme.Fonts.xaml │ ├── NoesisTheme.LightAqua.xaml │ ├── NoesisTheme.LightBlue.xaml │ ├── NoesisTheme.LightCrimson.xaml │ ├── NoesisTheme.LightEmerald.xaml │ ├── NoesisTheme.LightGreen.xaml │ ├── NoesisTheme.LightLime.xaml │ ├── NoesisTheme.LightOrange.xaml │ ├── NoesisTheme.LightPurple.xaml │ ├── NoesisTheme.LightRed.xaml │ └── NoesisTheme.Styles.xaml │ ├── TileInfo.xaml │ ├── WaitPage.xaml │ ├── WorkshopGui.xaml │ ├── buttons │ ├── agriculture.png │ ├── arrow_down.png │ ├── arrow_left.png │ ├── arrow_right.png │ ├── arrow_up.png │ ├── bed.png │ ├── bed2.png │ ├── build-all.png │ ├── cabinet.png │ ├── cabinet2.png │ ├── chair.png │ ├── chair2.png │ ├── crafts.png │ ├── creature.png │ ├── cross.png │ ├── day.png │ ├── designation.png │ ├── door.png │ ├── farm.png │ ├── fast.png │ ├── food.png │ ├── hydro.png │ ├── item.png │ ├── jobs.png │ ├── kingdom.png │ ├── light.png │ ├── magic.png │ ├── mechanics.png │ ├── mechanism.png │ ├── metal.png │ ├── metalwork.png │ ├── military.png │ ├── millitary.png │ ├── mine.png │ ├── mission.png │ ├── night.png │ ├── pause.png │ ├── population.png │ ├── professions.png │ ├── roles.png │ ├── schedule.png │ ├── scout.png │ ├── skills.png │ ├── slow.png │ ├── soil.png │ ├── spring.png │ ├── squads.png │ ├── stockpile.png │ ├── stone.png │ ├── stonework.png │ ├── summer.png │ ├── table.png │ ├── table2.png │ ├── terrain.png │ ├── windmill.png │ ├── winter.png │ ├── wood.png │ └── woodwork.png │ ├── localization │ ├── _.xaml │ ├── en_US.xaml │ ├── fr_FR.xaml │ └── pt_BR.xaml │ └── styles │ ├── colors.xaml │ └── mainmenu │ ├── pageswap.xaml │ └── styles.xaml ├── devmessages.txt ├── docs ├── Pipfile ├── Pipfile.lock ├── generate.py └── lib │ ├── __init__.py │ ├── db.py │ ├── material.py │ ├── render.py │ ├── sprites │ ├── __init__.py │ ├── layout.py │ ├── render.py │ └── sprite.py │ ├── store.py │ ├── themes │ ├── __init__.py │ └── default │ │ ├── __init__.py │ │ ├── assets │ │ ├── doc.js │ │ └── style.css │ │ ├── sprites.py │ │ ├── templates │ │ ├── base.html.j2 │ │ ├── constructions.html.j2 │ │ ├── food.html.j2 │ │ ├── index.html.j2 │ │ ├── item.html.j2 │ │ ├── items.html.j2 │ │ ├── macros.html.j2 │ │ ├── navtable.html.j2 │ │ ├── plants.html.j2 │ │ ├── sprites.css.j2 │ │ ├── tints.svg.j2 │ │ ├── workshop.html.j2 │ │ └── workshops.html.j2 │ │ └── theme.py │ └── util.py ├── gui ├── SampleData │ ├── GameModelSampleData.xaml │ ├── StockpileModelSampleData.xaml │ └── ViewModelSampleData.xaml ├── Src │ ├── App.config │ ├── Properties │ │ └── AssemblyInfo.cs │ └── stubs.cs ├── app.config └── gui.csproj ├── keybindings.json ├── resources ├── Plants.docx ├── gfx │ └── tmp_logo.png ├── icons │ ├── agriculture.png │ ├── arrow_down.png │ ├── arrow_left.png │ ├── arrow_right.png │ ├── arrow_up.png │ ├── back.png │ ├── build.png │ ├── buttondown.png │ ├── buttonup.png │ ├── cancel.png │ ├── chest.png │ ├── cut_clipping.png │ ├── deconstruct.png │ ├── designate_area.png │ ├── dig.png │ ├── dig_hole.png │ ├── dig_ramp.png │ ├── dig_stairs.png │ ├── dining.png │ ├── dining_off.png │ ├── door.png │ ├── empty.png │ ├── engineering.png │ ├── fell_trees.png │ ├── forage.png │ ├── furniture.png │ ├── gear.png │ ├── grove.png │ ├── guard.png │ ├── hospital.png │ ├── hospital_off.png │ ├── hydraulics.png │ ├── job.png │ ├── mine.png │ ├── mine_ramp.png │ ├── mine_stairs.png │ ├── mine_wall.png │ ├── pasture.png │ ├── patrol.png │ ├── remove_designation.png │ ├── remove_floor.png │ ├── remove_ramp.png │ ├── replace_floor.png │ ├── replace_wall.png │ ├── room.png │ ├── room2.png │ ├── room2_off.png │ ├── room_off.png │ ├── scaffolding.png │ ├── stair.png │ ├── terrain.png │ └── workshop.png └── ui │ ├── checkbox_checked.png │ └── checkbox_unchecked.png ├── src ├── CMakeLists.txt ├── base │ ├── PathFinderThread.cpp │ ├── PathFinderThread.h │ ├── behaviortree │ │ ├── bt_factory.cpp │ │ ├── bt_factory.h │ │ ├── bt_node.cpp │ │ ├── bt_node.h │ │ ├── bt_nodeaction.cpp │ │ ├── bt_nodeaction.h │ │ ├── bt_nodebbprecondition.cpp │ │ ├── bt_nodebbprecondition.h │ │ ├── bt_nodeconditional.cpp │ │ ├── bt_nodeconditional.h │ │ ├── bt_nodefallback.cpp │ │ ├── bt_nodefallback.h │ │ ├── bt_nodefallbackstar.cpp │ │ ├── bt_nodefallbackstar.h │ │ ├── bt_nodeforcefailure.cpp │ │ ├── bt_nodeforcefailure.h │ │ ├── bt_nodeforcesuccess.cpp │ │ ├── bt_nodeforcesuccess.h │ │ ├── bt_nodeinverter.cpp │ │ ├── bt_nodeinverter.h │ │ ├── bt_noderepeat.cpp │ │ ├── bt_noderepeat.h │ │ ├── bt_noderepeatuntilsuccess.cpp │ │ ├── bt_noderepeatuntilsuccess.h │ │ ├── bt_nodesequence.cpp │ │ ├── bt_nodesequence.h │ │ ├── bt_nodesequencestar.cpp │ │ ├── bt_nodesequencestar.h │ │ └── bt_tree.h │ ├── config.cpp │ ├── config.h │ ├── counter.h │ ├── crashhandler.cpp │ ├── crashhandler.h │ ├── db.cpp │ ├── db.h │ ├── dbhelper.cpp │ ├── dbhelper.h │ ├── dbstructs.h │ ├── enums.h │ ├── filter.cpp │ ├── filter.h │ ├── gamestate.cpp │ ├── gamestate.h │ ├── global.cpp │ ├── global.h │ ├── io.cpp │ ├── io.h │ ├── lightmap.cpp │ ├── lightmap.h │ ├── logger.cpp │ ├── logger.h │ ├── octree.cpp │ ├── octree.h │ ├── pathfinder.cpp │ ├── pathfinder.h │ ├── position.h │ ├── priorityqueue.h │ ├── region.cpp │ ├── region.h │ ├── regionmap.cpp │ ├── regionmap.h │ ├── selection.cpp │ ├── selection.h │ ├── tile.h │ ├── util.cpp │ ├── util.h │ └── vptr.h ├── game │ ├── anatomy.cpp │ ├── anatomy.h │ ├── animal.cpp │ ├── animal.h │ ├── automaton.cpp │ ├── automaton.h │ ├── canwork.cpp │ ├── canwork.h │ ├── creature.cpp │ ├── creature.h │ ├── creatureEquipment.cpp │ ├── creaturefactory.cpp │ ├── creaturefactory.h │ ├── creaturemanager.cpp │ ├── creaturemanager.h │ ├── eventmanager.cpp │ ├── eventmanager.h │ ├── farm.cpp │ ├── farm.h │ ├── farmingmanager.cpp │ ├── farmingmanager.h │ ├── fluidmanager.cpp │ ├── fluidmanager.h │ ├── game.cpp │ ├── game.h │ ├── gamemanager.cpp │ ├── gamemanager.h │ ├── gnome.cpp │ ├── gnome.h │ ├── gnomeactions.cpp │ ├── gnomeconditions.cpp │ ├── gnomefactory.cpp │ ├── gnomefactory.h │ ├── gnomemanager.cpp │ ├── gnomemanager.h │ ├── gnometrader.cpp │ ├── gnometrader.h │ ├── grove.cpp │ ├── grove.h │ ├── inventory.cpp │ ├── inventory.h │ ├── item.cpp │ ├── item.h │ ├── itemhistory.cpp │ ├── itemhistory.h │ ├── job.cpp │ ├── job.h │ ├── jobmanager.cpp │ ├── jobmanager.h │ ├── mechanismmanager.cpp │ ├── mechanismmanager.h │ ├── militarymanager.cpp │ ├── militarymanager.h │ ├── monster.cpp │ ├── monster.h │ ├── neighbormanager.cpp │ ├── neighbormanager.h │ ├── newgamesettings.cpp │ ├── newgamesettings.h │ ├── object.cpp │ ├── object.h │ ├── pasture.cpp │ ├── pasture.h │ ├── plant.cpp │ ├── plant.h │ ├── room.cpp │ ├── room.h │ ├── roommanager.cpp │ ├── roommanager.h │ ├── soundmanager.cpp │ ├── soundmanager.h │ ├── stockpile.cpp │ ├── stockpile.h │ ├── stockpilemanager.cpp │ ├── stockpilemanager.h │ ├── techtree.cpp │ ├── techtree.h │ ├── workshop.cpp │ ├── workshop.h │ ├── workshopmanager.cpp │ ├── workshopmanager.h │ ├── world.cpp │ ├── world.h │ ├── worldconstructions.cpp │ ├── worldgenerator.cpp │ ├── worldgenerator.h │ ├── worldgetters.cpp │ ├── worldobject.cpp │ └── worldobject.h ├── gfx │ ├── sprite.cpp │ ├── sprite.h │ ├── spritefactory.cpp │ └── spritefactory.h ├── gui │ ├── aggregatoragri.cpp │ ├── aggregatoragri.h │ ├── aggregatorcreatureinfo.cpp │ ├── aggregatorcreatureinfo.h │ ├── aggregatordebug.cpp │ ├── aggregatordebug.h │ ├── aggregatorinventory.cpp │ ├── aggregatorinventory.h │ ├── aggregatorloadgame.cpp │ ├── aggregatorloadgame.h │ ├── aggregatormilitary.cpp │ ├── aggregatormilitary.h │ ├── aggregatorneighbors.cpp │ ├── aggregatorneighbors.h │ ├── aggregatorpopulation.cpp │ ├── aggregatorpopulation.h │ ├── aggregatorrenderer.cpp │ ├── aggregatorrenderer.h │ ├── aggregatorselection.cpp │ ├── aggregatorselection.h │ ├── aggregatorsettings.cpp │ ├── aggregatorsettings.h │ ├── aggregatorsound.cpp │ ├── aggregatorsound.h │ ├── aggregatorstockpile.cpp │ ├── aggregatorstockpile.h │ ├── aggregatortileinfo.cpp │ ├── aggregatortileinfo.h │ ├── aggregatorworkshop.cpp │ ├── aggregatorworkshop.h │ ├── eventconnector.cpp │ ├── eventconnector.h │ ├── keybindings.cpp │ ├── keybindings.h │ ├── license.h.in │ ├── mainwindow.cpp │ ├── mainwindow.h │ ├── mainwindowrenderer.cpp │ ├── mainwindowrenderer.h │ ├── openalwrapper.cpp │ ├── openalwrapper.h │ ├── strings.cpp │ ├── strings.h │ └── xaml │ │ ├── GameGui.xaml.cpp │ │ ├── GameGui.xaml.h │ │ ├── GameModel.cpp │ │ ├── GameModel.h │ │ ├── IngamePage.xaml.cpp │ │ ├── IngamePage.xaml.h │ │ ├── LoadGameModel.cpp │ │ ├── LoadGameModel.h │ │ ├── LoadGamePage.xaml.cpp │ │ ├── LoadGamePage.xaml.h │ │ ├── Main.xaml.cpp │ │ ├── Main.xaml.h │ │ ├── MainMenu.xaml.cpp │ │ ├── MainMenu.xaml.h │ │ ├── MainPage.xaml.cpp │ │ ├── MainPage.xaml.h │ │ ├── NewGameModel.cpp │ │ ├── NewGameModel.h │ │ ├── NewGamePage.xaml.cpp │ │ ├── NewGamePage.xaml.h │ │ ├── Population.xaml.cpp │ │ ├── Population.xaml.h │ │ ├── PopulationModel.cpp │ │ ├── PopulationModel.h │ │ ├── ProxyGameView.cpp │ │ ├── ProxyGameView.h │ │ ├── ProxyMainView.cpp │ │ ├── ProxyMainView.h │ │ ├── ProxyTileInfo.cpp │ │ ├── ProxyTileInfo.h │ │ ├── SettingsModel.cpp │ │ ├── SettingsModel.h │ │ ├── SettingsPage.xaml.cpp │ │ ├── SettingsPage.xaml.h │ │ ├── StockpileModel.cpp │ │ ├── StockpileModel.h │ │ ├── StockpileProxy.cpp │ │ ├── StockpileProxy.h │ │ ├── TileInfo.xaml.cpp │ │ ├── TileInfo.xaml.h │ │ ├── TileInfoModel.cpp │ │ ├── TileInfoModel.h │ │ ├── ViewModel.cpp │ │ ├── ViewModel.h │ │ ├── WaitPage.xaml.cpp │ │ ├── WaitPage.xaml.h │ │ ├── agriculture.xaml.cpp │ │ ├── agriculture.xaml.h │ │ ├── agriculturemodel.cpp │ │ ├── agriculturemodel.h │ │ ├── agricultureproxy.cpp │ │ ├── agricultureproxy.h │ │ ├── converters.cpp │ │ ├── converters.h │ │ ├── creatureinfo.xaml.cpp │ │ ├── creatureinfo.xaml.h │ │ ├── creatureinfomodel.cpp │ │ ├── creatureinfomodel.h │ │ ├── creatureinfoproxy.cpp │ │ ├── creatureinfoproxy.h │ │ ├── debug.xaml.cpp │ │ ├── debug.xaml.h │ │ ├── debugmodel.cpp │ │ ├── debugmodel.h │ │ ├── debugproxy.cpp │ │ ├── debugproxy.h │ │ ├── inventory.xaml.cpp │ │ ├── inventory.xaml.h │ │ ├── inventorymodel.cpp │ │ ├── inventorymodel.h │ │ ├── inventoryproxy.cpp │ │ ├── inventoryproxy.h │ │ ├── loadgameproxy.cpp │ │ ├── loadgameproxy.h │ │ ├── military.xaml.cpp │ │ ├── military.xaml.h │ │ ├── militarymodel.cpp │ │ ├── militarymodel.h │ │ ├── militaryproxy.cpp │ │ ├── militaryproxy.h │ │ ├── neighbors.xaml.cpp │ │ ├── neighbors.xaml.h │ │ ├── neighborsmodel.cpp │ │ ├── neighborsmodel.h │ │ ├── neighborsproxy.cpp │ │ ├── neighborsproxy.h │ │ ├── populationproxy.cpp │ │ ├── populationproxy.h │ │ ├── selection.xaml.cpp │ │ ├── selection.xaml.h │ │ ├── selectionmodel.cpp │ │ ├── selectionmodel.h │ │ ├── selectionproxy.cpp │ │ ├── selectionproxy.h │ │ ├── settingsproxy.cpp │ │ ├── settingsproxy.h │ │ ├── stockpilegui.xaml.cpp │ │ ├── stockpilegui.xaml.h │ │ ├── workshopgui.xaml.cpp │ │ ├── workshopgui.xaml.h │ │ ├── workshopmodel.cpp │ │ ├── workshopmodel.h │ │ ├── workshopproxy.cpp │ │ └── workshopproxy.h ├── main.cpp ├── pch.h └── version.h.in └── windows ├── Ingnomia.manifest ├── Ingnomia.rc └── resource.h /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: Microsoft 3 | AccessModifierOffset: '-4' 4 | AlignAfterOpenBracket: AlwaysBreak 5 | AlignConsecutiveAssignments: 'true' 6 | AlignConsecutiveMacros: 'true' 7 | BinPackArguments: 'true' 8 | BinPackParameters: 'true' 9 | BreakBeforeBraces: Allman 10 | BreakConstructorInitializers: AfterColon 11 | BreakInheritanceList: AfterColon 12 | ColumnLimit: '0' 13 | Cpp11BracedListStyle: 'false' 14 | IncludeBlocks: 'Regroup' 15 | IncludeCategories: 16 | - Regex: '".*"' 17 | Priority: 1 18 | - Regex: '' 19 | Priority: 2 20 | - Regex: '' 21 | Priority: 3 22 | - Regex: '<[[:alnum:_]]+>' 23 | Priority: 4 24 | - Regex: '<[[:alnum:]._]+\>' 25 | Priority: 5 26 | IndentCaseLabels: 'true' 27 | IndentWidth: '4' 28 | SortIncludes: 'true' 29 | SpaceBeforeCpp11BracedList: 'true' 30 | SpaceBeforeRangeBasedForLoopColon: 'true' 31 | SpaceInEmptyParentheses: 'false' 32 | SpacesInParentheses: 'true' 33 | TabWidth: '4' 34 | UseTab: ForContinuationAndIndentation 35 | PointerAlignment: Left 36 | 37 | ... 38 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | /src/gui/license.h 2 | 3 | *.h diff=cpp 4 | *.c diff=cpp 5 | *.cpp diff=cpp 6 | *.rc text=auto diff=cpp 7 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Docs 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | workflow_dispatch: 8 | 9 | jobs: 10 | docs: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/setup-python@v2 15 | with: 16 | python-version: '3.9' 17 | - uses: dschep/install-pipenv-action@v1 18 | - uses: actions/checkout@v2 19 | 20 | - name: Download Tilesheets 21 | uses: carlosperate/download-file-action@v1.0.3 22 | id: download-tilesheet 23 | with: 24 | file-url: 'https://github.com/rschurade/IngnomiaBuildDeps/raw/master/tilesheet.zip' 25 | 26 | - name: Unpack Tilesheets 27 | uses: DuckSoft/extract-7z-action@v1.0 28 | with: 29 | pathSource: ${{ steps.download-tilesheet.outputs.file-path }} 30 | pathTarget: content 31 | 32 | - name: Setup venv 33 | working-directory: docs 34 | run: | 35 | pipenv install 36 | 37 | - name: Generate docs 38 | working-directory: docs 39 | run: | 40 | pipenv run ./generate.py --build ${GITHUB_REF#refs/*/} 41 | 42 | - name: Deploy docs to gh-pages 43 | uses: crazy-max/ghaction-github-pages@v2 44 | with: 45 | keep_history: true 46 | build_dir: docs/html 47 | fqdn: ${{ secrets.DOCS_DOMAIN }} 48 | jekyll: false 49 | env: 50 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 51 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/base/beehive"] 2 | path = src/base/beehive 3 | url = https://github.com/crust/beehive.git 4 | -------------------------------------------------------------------------------- /3rdparty/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(exprtk) 2 | add_subdirectory(fastnoise) 3 | add_subdirectory(NoesisApp) 4 | set_target_properties(exprtk PROPERTIES FOLDER 3rdParty) 5 | set_target_properties(fastnoise PROPERTIES FOLDER 3rdParty) 6 | set_target_properties(NoesisApp PROPERTIES FOLDER 3rdParty) 7 | -------------------------------------------------------------------------------- /3rdparty/NoesisApp/README.md: -------------------------------------------------------------------------------- 1 | Do NOT add the source code here. Noesis is not under a license which would allow redistribution in source code form. 2 | 3 | Provide NOESIS_ROOT to CMake and let the source be pulled in from there. -------------------------------------------------------------------------------- /3rdparty/NoesisApp/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | -------------------------------------------------------------------------------- /3rdparty/exprtk/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(exprtk) 2 | 3 | target_include_directories(exprtk 4 | PUBLIC 5 | ${CMAKE_CURRENT_SOURCE_DIR} 6 | ) 7 | 8 | target_sources(exprtk 9 | PRIVATE 10 | exprtk.hpp 11 | exprtk.cpp 12 | ) -------------------------------------------------------------------------------- /3rdparty/exprtk/exprtk.cpp: -------------------------------------------------------------------------------- 1 | #include "exprtk.hpp" -------------------------------------------------------------------------------- /3rdparty/exprtk/license/license.json: -------------------------------------------------------------------------------- 1 | {"Name":"The MIT License (MIT)","Text":"Copyright (c) 1999 Arash Partow\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","Id":622575,"ShortName":"MIT","StartDate":"\/Date(1487713546373-0800)\/"} -------------------------------------------------------------------------------- /3rdparty/fastnoise/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(fastnoise) 2 | 3 | target_include_directories(fastnoise 4 | PUBLIC 5 | ${CMAKE_CURRENT_SOURCE_DIR} 6 | ) 7 | 8 | target_sources(fastnoise 9 | PRIVATE 10 | FastNoise.h 11 | FastNoise.cpp 12 | ) 13 | -------------------------------------------------------------------------------- /3rdparty/fastnoise/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Jordan Peck 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Ingnomia.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/Ingnomia.ico -------------------------------------------------------------------------------- /cmake/modules/FindNoesis.cmake: -------------------------------------------------------------------------------- 1 | set(NOESIS_ROOT "" CACHE PATH "Root to the NoesisGui sdk") 2 | 3 | find_path(NOESIS_INCLUDE_DIR 4 | NAMES 5 | NoesisPCH.h 6 | HINTS 7 | ${NOESIS_ROOT}/Include 8 | ) 9 | 10 | find_library(NOESIS_LIBRARY 11 | NAMES 12 | libNoesis Noesis 13 | HINTS 14 | ${NOESIS_ROOT}/Bin/linux_x86_64 15 | ${NOESIS_ROOT}/Lib/windows_x86_64 16 | ) 17 | 18 | if(WIN32) 19 | find_file(NOESIS_DLL 20 | NAMES 21 | Noesis.dll 22 | HINTS 23 | ${NOESIS_ROOT}/Bin/windows_x86_64 24 | ) 25 | else() 26 | set(NOESIS_DLL ${NOESIS_LIBRARY}) 27 | endif() 28 | 29 | include(FindPackageHandleStandardArgs) 30 | # handle the QUIETLY and REQUIRED arguments and set NOESIS_FOUND to TRUE 31 | # if all listed variables are TRUE 32 | find_package_handle_standard_args(Noesis 33 | DEFAULT_MSG 34 | NOESIS_LIBRARY NOESIS_INCLUDE_DIR NOESIS_DLL) 35 | 36 | mark_as_advanced(NOESIS_INCLUDE_DIR NOESIS_LIBRARY NOESIS_DLL) 37 | 38 | if(NOESIS_FOUND AND NOT TARGET Noesis) 39 | add_library(Noesis SHARED IMPORTED) 40 | set_target_properties(Noesis 41 | PROPERTIES 42 | INTERFACE_INCLUDE_DIRECTORIES "${NOESIS_INCLUDE_DIR}" 43 | IMPORTED_LOCATION "${NOESIS_DLL}" 44 | IMPORTED_IMPLIB "${NOESIS_LIBRARY}" 45 | ) 46 | endif() -------------------------------------------------------------------------------- /cmake/modules/FindSteam.cmake: -------------------------------------------------------------------------------- 1 | set(STEAM_SDK_ROOT "" CACHE PATH "Root to the steam sdk") 2 | 3 | find_path(STEAM_INCLUDE_DIR 4 | NAMES 5 | steam/steam_api.h 6 | HINTS 7 | ${STEAM_SDK_ROOT}/public 8 | ) 9 | 10 | if(UNIX) 11 | find_library(STEAM_LIBRARY 12 | NAMES 13 | steam_api 14 | HINTS 15 | ${STEAM_SDK_ROOT}/redistributable_bin/linux64 16 | ) 17 | set(STEAM_DLL ${STEAM_LIBRARY}) 18 | else() 19 | find_library(STEAM_LIBRARY 20 | NAMES 21 | steam_api64 22 | HINTS 23 | ${STEAM_SDK_ROOT}/redistributable_bin/win64 24 | ) 25 | find_file(STEAM_DLL 26 | NAMES 27 | steam_api64.dll 28 | HINTS 29 | ${STEAM_SDK_ROOT}/redistributable_bin/win64 30 | ) 31 | endif() 32 | 33 | include(FindPackageHandleStandardArgs) 34 | # handle the QUIETLY and REQUIRED arguments and set STEAM_FOUND to TRUE 35 | # if all listed variables are TRUE 36 | find_package_handle_standard_args(Steam 37 | DEFAULT_MSG 38 | STEAM_LIBRARY STEAM_INCLUDE_DIR STEAM_DLL) 39 | 40 | mark_as_advanced(STEAM_INCLUDE_DIR STEAM_LIBRARY STEAM_DLL) 41 | 42 | if(STEAM_FOUND AND NOT TARGET Steam) 43 | add_library(Steam SHARED IMPORTED) 44 | set_target_properties(Steam 45 | PROPERTIES 46 | INTERFACE_INCLUDE_DIRECTORIES "${STEAM_INCLUDE_DIR}" 47 | IMPORTED_LOCATION "${STEAM_DLL}" 48 | IMPORTED_IMPLIB "${STEAM_LIBRARY}") 49 | endif() -------------------------------------------------------------------------------- /cmake/modules/windeployqt.cmake: -------------------------------------------------------------------------------- 1 | find_package(Qt5 REQUIRED QUIET COMPONENTS Core) 2 | if(TARGET Qt5::qmake AND NOT TARGET Qt5::windeployqt) 3 | get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION) 4 | 5 | execute_process( 6 | COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX 7 | RESULT_VARIABLE return_code 8 | OUTPUT_VARIABLE qt5_install_prefix 9 | OUTPUT_STRIP_TRAILING_WHITESPACE 10 | ) 11 | 12 | set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe") 13 | 14 | if(EXISTS ${imported_location}) 15 | add_executable(Qt5::windeployqt IMPORTED) 16 | 17 | set_target_properties(Qt5::windeployqt PROPERTIES 18 | IMPORTED_LOCATION ${imported_location} 19 | ) 20 | endif() 21 | endif() 22 | 23 | function(windeployqt foo) 24 | if(TARGET Qt5::windeployqt) 25 | # execute windeployqt in a tmp directory after build 26 | add_custom_command(TARGET ${foo} 27 | POST_BUILD 28 | COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$" 29 | COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin 30 | # for deployment 31 | COMMAND Qt5::windeployqt --pdb --no-translations --no-webkit2 --no-system-d3d-compiler --no-opengl-sw --dir "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$" "$/$" 32 | COMMAND 33 | ${CMAKE_COMMAND} -E copy_directory 34 | "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$/" 35 | $ 36 | ) 37 | 38 | # copy deployment directory during installation 39 | install( 40 | DIRECTORY 41 | "${CMAKE_CURRENT_BINARY_DIR}/windeployqt_$/" 42 | DESTINATION ${CMAKE_INSTALL_BINDIR} 43 | ) 44 | endif() 45 | endfunction() -------------------------------------------------------------------------------- /content/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file( 2 | GLOB_RECURSE SOURCE_LIST 3 | RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} 4 | "*.xml" 5 | "*.json" 6 | "*.glsl" 7 | "*.xaml" 8 | "*.ttf" 9 | "*.otf" 10 | "*.png" 11 | "*.sql" 12 | "*.wav" 13 | "*License*" 14 | ) 15 | 16 | target_sources(${PROJECT_NAME} 17 | PRIVATE 18 | ${SOURCE_LIST} 19 | ${CMAKE_CURRENT_LIST_FILE} 20 | ) 21 | 22 | foreach ( FILE ${SOURCE_LIST} ) 23 | get_filename_component( DIR ${FILE} DIRECTORY ) 24 | install( 25 | FILES ${FILE} 26 | DESTINATION "${CMAKE_INSTALL_BINDIR}/content/${DIR}" 27 | ) 28 | endforeach() 29 | -------------------------------------------------------------------------------- /content/JSON/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AutoSaveInterval": 3, 3 | "CurrentVersion": "0.7.5.0", 4 | "DaysToNextAutoSave": 1, 5 | "GUIScale": 1.0, 6 | "LastRunVersion": "0.7.5.0", 7 | "MaxArrayTextures": "2048", 8 | "Pause": true, 9 | "WindowHeight": 1631, 10 | "WindowPosX": 604, 11 | "WindowPosY": 53, 12 | "WindowWidth": 3231, 13 | "XpMod": 250, 14 | "clearLogOnStart": "true", 15 | "crosshair": "false", 16 | "dataPath": "content/", 17 | "enableLog": "true", 18 | "enableScaling": "true", 19 | "fontSize": "12", 20 | "fow": "true", 21 | "framelessWindow": "false", 22 | "gfxPath": "content/tilesheet", 23 | "keyboardMoveSpeed": "100", 24 | "language": "english", 25 | "lightDecay": "3", 26 | "maxThreads": "20", 27 | "modDev": "true", 28 | "moveX": 0, 29 | "moveY": -800, 30 | "oldMoveX": 0, 31 | "oldMoveY": -800, 32 | "overlay": true, 33 | "playerName": "Player", 34 | "port": "55555", 35 | "random": 133, 36 | "renderCreatures": true, 37 | "renderDepth": "20", 38 | "renderMode": "up", 39 | "rotation": 0, 40 | "scale": 1, 41 | "server": "127.0.0.1", 42 | "viewLevel": 108, 43 | "waterQuality": 1, 44 | "windowSizeX": 1600, 45 | "windowSizeY": 900 46 | } -------------------------------------------------------------------------------- /content/JSON/profs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Name": "Gnomad", 4 | "Skills": [ 5 | "Mining", 6 | "Masonry", 7 | "Stonecarving", 8 | "Woodcutting", 9 | "Carpentry", 10 | "Woodcarving", 11 | "Smelting", 12 | "Blacksmithing", 13 | "Metalworking", 14 | "WeaponCrafting", 15 | "ArmorCrafting", 16 | "Gemcutting", 17 | "JewelryMaking", 18 | "Weaving", 19 | "Tailoring", 20 | "Dying", 21 | "Pottery", 22 | "Leatherworking", 23 | "Bonecarving", 24 | "Prospecting", 25 | "Tinkering", 26 | "Machining", 27 | "Engineering", 28 | "Mechanic", 29 | "AnimalHusbandry", 30 | "Butchery", 31 | "Fishing", 32 | "Horticulture", 33 | "Farming", 34 | "Cooking", 35 | "Brewing", 36 | "Construction", 37 | "Hauling" 38 | ] 39 | }, 40 | { 41 | "Name": "Miner", 42 | "Skills": [ 43 | "Mining", 44 | "Construction", 45 | "Hauling" 46 | ] 47 | }, 48 | { 49 | "Name": "Farmer", 50 | "Skills": [ 51 | "Horticulture", 52 | "Farming", 53 | "Hauling" 54 | ] 55 | }, 56 | { 57 | "Name": "Woodcutter", 58 | "Skills": [ 59 | "Woodcutting", 60 | "Carpentry", 61 | "Woodcarving", 62 | "Hauling" 63 | ] 64 | }, 65 | { 66 | "Name": "Mason", 67 | "Skills": [ 68 | "Masonry", 69 | "Construction", 70 | "Hauling" 71 | ] 72 | } 73 | ] 74 | -------------------------------------------------------------------------------- /content/ai/monster_mant_queen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /content/ai/monster_mant_soldier.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /content/ai/monster_mant_worker.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /content/ai/monster_standard.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /content/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/icon.png -------------------------------------------------------------------------------- /content/shaders/axle_f.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | layout(location = 0) noperspective in vec2 vTexCoords; 4 | 5 | layout(location = 0) out vec4 fColor; 6 | 7 | uniform int uWorldRotation; 8 | uniform int uTickNumber; 9 | 10 | uniform int uSpriteID; 11 | uniform int uRotation; 12 | uniform bool uAnim; 13 | 14 | uniform sampler2DArray uTexture[32]; 15 | 16 | vec4 getTexel( uint spriteID, uint rot, uint animFrame ) 17 | { 18 | uint absoluteId = ( spriteID + animFrame ) * 4; 19 | uint tex = absoluteId / 2048; 20 | uint localBaseId = absoluteId % 2048; 21 | uint localID = localBaseId + rot; 22 | 23 | ivec3 samplePos = ivec3( vTexCoords.x * 32, vTexCoords.y * 64, localID); 24 | 25 | // Need to unroll each access to texelFetch with a different element from uTexture into a distinct instruction 26 | // Otherwise we are triggering a bug on AMD GPUs, where threads start sampling from the wrong texture 27 | #define B(X) case X: return texelFetch( uTexture[X], samplePos, 0); 28 | #define C(X) B(X) B(X+1) B(X+2) B(X+3) 29 | #define D(X) C(X) C(X+4) C(X+8) C(X+12) 30 | switch(tex) 31 | { 32 | D(0) 33 | D(16) 34 | } 35 | #undef D 36 | #undef C 37 | #undef B 38 | } 39 | 40 | void main() 41 | { 42 | uint animFrame = 0; 43 | if( uAnim ) 44 | { 45 | animFrame = ( uTickNumber / 10 ) % 4; 46 | } 47 | 48 | int rot = ( uRotation + uWorldRotation ) % 4; 49 | vec4 texel = vec4(0.0); 50 | 51 | texel = getTexel( uSpriteID, rot, animFrame ); // TODO add anim 52 | 53 | if( length( texel.rgba ) < 0.1 || texel.a < 0.1 ) 54 | { 55 | discard; 56 | } 57 | 58 | 59 | 60 | fColor = texel; 61 | } -------------------------------------------------------------------------------- /content/shaders/axle_v.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | layout(location = 0) in vec3 aPos; 4 | 5 | layout(location = 0) noperspective out vec2 vTexCoords; 6 | 7 | uniform uvec3 uWorldSize; 8 | uniform mat4 uTransform; 9 | uniform int uWorldRotation; 10 | uniform uvec3 uRenderMin; 11 | uniform uvec3 uRenderMax; 12 | 13 | uniform uvec3 tile; 14 | 15 | uvec3 rotate(uvec3 pos) 16 | { 17 | uvec3 ret = uvec3(0, 0, pos.z); 18 | switch ( uWorldRotation ) 19 | { 20 | default: 21 | ret.xy = pos.xy; 22 | break; 23 | case 1: 24 | ret.x = uWorldSize.y - pos.y - 1; 25 | ret.y = pos.x; 26 | break; 27 | case 2: 28 | ret.x = uWorldSize.x - pos.x - 1; 29 | ret.y = uWorldSize.y - pos.y - 1; 30 | break; 31 | case 3: 32 | ret.x = pos.y; 33 | ret.y = uWorldSize.x - pos.x - 1; 34 | break; 35 | } 36 | return ret; 37 | } 38 | 39 | uvec3 rotateOffset(uvec3 offset) 40 | { 41 | switch ( uWorldRotation ) 42 | { 43 | default: 44 | return offset; 45 | case 1: 46 | return uvec3( -offset.y, offset.x, offset.z ); 47 | case 2: 48 | return uvec3( -offset.x, -offset.y, offset.z ); 49 | case 3: 50 | return uvec3( offset.y, -offset.y, offset.z ); 51 | } 52 | } 53 | 54 | vec3 project(uvec3 pos, vec2 offset, bool isWall) 55 | { 56 | float z = pos.z + pos.x + pos.y; 57 | return vec3( 58 | offset.x * 32 + 16 * pos.x - 16 * pos.y, 59 | offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, 60 | isWall ? z + 0.5 : z 61 | ); 62 | } 63 | 64 | void main() 65 | { 66 | vTexCoords = vec2( aPos.x, 1.0 - aPos.y ); 67 | 68 | vec3 worldPos = project( rotate( tile ), aPos.xy, true); 69 | 70 | gl_Position = uTransform * vec4( worldPos, 1.0 ); 71 | } 72 | -------------------------------------------------------------------------------- /content/shaders/selection_f.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | layout(location = 0) noperspective in vec2 vTexCoords; 4 | 5 | layout(location = 0) out vec4 fColor; 6 | 7 | uniform int uWorldRotation; 8 | 9 | uniform int uSpriteID; 10 | uniform int uRotation; 11 | uniform bool uValid; 12 | 13 | uniform sampler2DArray uTexture[32]; 14 | 15 | 16 | vec4 getTexel( uint spriteID, uint rot, uint animFrame ) 17 | { 18 | uint absoluteId = ( spriteID + animFrame ) * 4; 19 | uint tex = absoluteId / 2048; 20 | uint localBaseId = absoluteId % 2048; 21 | uint localID = localBaseId + rot; 22 | 23 | ivec3 samplePos = ivec3( vTexCoords.x * 32, vTexCoords.y * 64, localID); 24 | 25 | // Need to unroll each access to texelFetch with a different element from uTexture into a distinct instruction 26 | // Otherwise we are triggering a bug on AMD GPUs, where threads start sampling from the wrong texture 27 | #define B(X) case X: return texelFetch( uTexture[X], samplePos, 0); 28 | #define C(X) B(X) B(X+1) B(X+2) B(X+3) 29 | #define D(X) C(X) C(X+4) C(X+8) C(X+12) 30 | switch(tex) 31 | { 32 | D(0) 33 | D(16) 34 | } 35 | #undef D 36 | #undef C 37 | #undef B 38 | } 39 | 40 | void main() 41 | { 42 | int rot = ( uRotation + uWorldRotation ) % 4; 43 | 44 | vec4 texel = vec4(0.0); 45 | 46 | texel = getTexel( uSpriteID, rot, 0 ); 47 | 48 | 49 | 50 | if( uValid ) 51 | { 52 | texel.r -= 0.6; 53 | //sTexel.g += 0.1; 54 | texel.b -= 0.6; 55 | } 56 | else 57 | { 58 | //sTexel.r += 0.1; 59 | texel.g -= 0.6; 60 | texel.b -= 0.6; 61 | } 62 | texel.a = max( 0.0, texel.a - 0.2 ); 63 | if( length( texel.rgba ) < 0.1 || texel.a < 0.1 ) 64 | { 65 | discard; 66 | } 67 | 68 | 69 | 70 | fColor = texel; 71 | } -------------------------------------------------------------------------------- /content/shaders/selection_v.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | layout(location = 0) in vec3 aPos; 4 | 5 | layout(location = 0) noperspective out vec2 vTexCoords; 6 | 7 | uniform uvec3 uWorldSize; 8 | uniform mat4 uTransform; 9 | uniform int uWorldRotation; 10 | uniform uvec3 uRenderMin; 11 | uniform uvec3 uRenderMax; 12 | 13 | uniform uvec3 tile; 14 | 15 | uvec3 rotate(uvec3 pos) 16 | { 17 | uvec3 ret = uvec3(0, 0, pos.z); 18 | switch ( uWorldRotation ) 19 | { 20 | default: 21 | ret.xy = pos.xy; 22 | break; 23 | case 1: 24 | ret.x = uWorldSize.y - pos.y - 1; 25 | ret.y = pos.x; 26 | break; 27 | case 2: 28 | ret.x = uWorldSize.x - pos.x - 1; 29 | ret.y = uWorldSize.y - pos.y - 1; 30 | break; 31 | case 3: 32 | ret.x = pos.y; 33 | ret.y = uWorldSize.x - pos.x - 1; 34 | break; 35 | } 36 | return ret; 37 | } 38 | 39 | uvec3 rotateOffset(uvec3 offset) 40 | { 41 | switch ( uWorldRotation ) 42 | { 43 | default: 44 | return offset; 45 | case 1: 46 | return uvec3( -offset.y, offset.x, offset.z ); 47 | case 2: 48 | return uvec3( -offset.x, -offset.y, offset.z ); 49 | case 3: 50 | return uvec3( offset.y, -offset.y, offset.z ); 51 | } 52 | } 53 | 54 | vec3 project(uvec3 pos, vec2 offset, bool isWall) 55 | { 56 | float z = pos.z + pos.x + pos.y; 57 | return vec3( 58 | offset.x * 32 + 16 * pos.x - 16 * pos.y, 59 | offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, 60 | isWall ? z + 0.5 : z 61 | ); 62 | } 63 | 64 | void main() 65 | { 66 | vTexCoords = vec2( aPos.x, 1.0 - aPos.y ); 67 | 68 | vec3 worldPos = project( rotate( tile ), aPos.xy, true); 69 | 70 | gl_Position = uTransform * vec4( worldPos, 1.0 ); 71 | } 72 | -------------------------------------------------------------------------------- /content/shaders/thoughtbubble_f.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | layout(location = 0) noperspective in vec2 vTexCoords; 4 | 5 | layout(location = 0) out vec4 fColor; 6 | 7 | uniform sampler2DArray uTexture0; 8 | 9 | uniform int uType; 10 | 11 | void main() 12 | { 13 | vec4 texel = texture( uTexture0, vec3( vTexCoords, uType * 4 ) ); 14 | 15 | if( length( texel.rgba ) < 0.1 || texel.a < 0.1 ) 16 | { 17 | discard; 18 | } 19 | fColor = texel; 20 | } -------------------------------------------------------------------------------- /content/shaders/thoughtbubble_v.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | layout(location = 0) in vec3 aPos; 4 | 5 | layout(location = 0) noperspective out vec2 vTexCoords; 6 | 7 | uniform uvec3 uWorldSize; 8 | uniform mat4 uTransform; 9 | uniform int uWorldRotation; 10 | uniform uvec3 uRenderMin; 11 | uniform uvec3 uRenderMax; 12 | 13 | uniform uvec3 tile; 14 | 15 | uvec3 rotate(uvec3 pos) 16 | { 17 | uvec3 ret = uvec3(0, 0, pos.z); 18 | switch ( uWorldRotation ) 19 | { 20 | default: 21 | ret.xy = pos.xy; 22 | break; 23 | case 1: 24 | ret.x = uWorldSize.y - pos.y - 1; 25 | ret.y = pos.x; 26 | break; 27 | case 2: 28 | ret.x = uWorldSize.x - pos.x - 1; 29 | ret.y = uWorldSize.y - pos.y - 1; 30 | break; 31 | case 3: 32 | ret.x = pos.y; 33 | ret.y = uWorldSize.x - pos.x - 1; 34 | break; 35 | } 36 | return ret; 37 | } 38 | 39 | uvec3 rotateOffset(uvec3 offset) 40 | { 41 | switch ( uWorldRotation ) 42 | { 43 | default: 44 | return offset; 45 | case 1: 46 | return uvec3( -offset.y, offset.x, offset.z ); 47 | case 2: 48 | return uvec3( -offset.x, -offset.y, offset.z ); 49 | case 3: 50 | return uvec3( offset.y, -offset.y, offset.z ); 51 | } 52 | } 53 | 54 | vec3 project(uvec3 pos, vec2 offset, bool isWall) 55 | { 56 | float z = pos.z + pos.x + pos.y; 57 | return vec3( 58 | offset.x * 32 + 16 * pos.x - 16 * pos.y, 59 | offset.y * 64 - ( 8 * pos.y + 8 * pos.x ) - ( uRenderMax.z - pos.z ) * 20 - 12, 60 | isWall ? z + 0.5 : z 61 | ); 62 | } 63 | 64 | void main() 65 | { 66 | vTexCoords = vec2( aPos.x, 1.0 - aPos.y ); 67 | 68 | vec3 worldPos = project( rotate( tile ), aPos.xy, true); 69 | 70 | // Offset relative to owning creature 71 | worldPos.x += 8; 72 | worldPos.y += 16; 73 | 74 | gl_Position = uTransform * vec4( worldPos, 1.0 ); 75 | } 76 | -------------------------------------------------------------------------------- /content/shaders/worldupdate_c.glsl: -------------------------------------------------------------------------------- 1 | #version 430 core 2 | 3 | // DO NOT CHANGE, must match game internal layout 4 | struct TileData { 5 | // TF_ flags 0:32 6 | uint flags; 7 | // TF_ flags 32:64 8 | uint flags2; 9 | 10 | // Sprites are all: 11 | // spriteID=0:16, spriteFlags=16:32 12 | uint floorSpriteUID ; 13 | uint wallSpriteUID; 14 | 15 | uint itemSpriteUID; 16 | uint creatureSpriteUID; 17 | 18 | uint jobSpriteFloorUID; 19 | uint jobSpriteWallUID; 20 | 21 | // fluidLevel=0:8, lightLevel=0:8, vegetationLevel=8:16 22 | uint packedLevels; 23 | }; 24 | 25 | struct TileDataUpdate { 26 | uint id; 27 | TileData tile; 28 | }; 29 | 30 | layout(std430, binding = 0) writeonly restrict buffer tileData1 31 | { 32 | TileData data[]; 33 | } tileData; 34 | 35 | layout(std430, binding = 1) readonly restrict buffer tileDataUpdate1 36 | { 37 | TileDataUpdate data[]; 38 | } tileDataUpdate; 39 | 40 | uniform int uUpdateSize; 41 | 42 | layout(local_size_x = 64) in; 43 | 44 | void main() 45 | { 46 | uint id = gl_GlobalInvocationID.x; 47 | if(id < uUpdateSize) 48 | { 49 | TileDataUpdate data = tileDataUpdate.data[id]; 50 | tileData.data[data.id] = data.tile; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /content/xaml/Fonts/8bitOperatorPlus-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/8bitOperatorPlus-Bold.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/8bitOperatorPlus-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/8bitOperatorPlus-Regular.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/8bitOperatorPlus8-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/8bitOperatorPlus8-Bold.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/8bitOperatorPlus8-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/8bitOperatorPlus8-Regular.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/8bitOperatorPlusSC-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/8bitOperatorPlusSC-Bold.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/8bitOperatorPlusSC-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/8bitOperatorPlusSC-Regular.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/HermeneusOne-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/HermeneusOne-Regular.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/weblysleekuisb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/weblysleekuisb.ttf -------------------------------------------------------------------------------- /content/xaml/Fonts/weblysleekuisl.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Fonts/weblysleekuisl.ttf -------------------------------------------------------------------------------- /content/xaml/Images/BackClouds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/BackClouds.png -------------------------------------------------------------------------------- /content/xaml/Images/FrontClouds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/FrontClouds.png -------------------------------------------------------------------------------- /content/xaml/Images/FrontTrees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/FrontTrees.png -------------------------------------------------------------------------------- /content/xaml/Images/LakeAndMountains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/LakeAndMountains.png -------------------------------------------------------------------------------- /content/xaml/Images/SkyAndSun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/SkyAndSun.jpg -------------------------------------------------------------------------------- /content/xaml/Images/clock/s00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s00.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s01.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s02.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s03.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s04.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s05.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s06.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s07.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s08.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s09.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s10.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/s11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/s11.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u00.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u01.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u02.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u03.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u04.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u05.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u06.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u07.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u08.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u09.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u10.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/u11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/u11.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v00.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v01.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v02.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v03.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v04.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v05.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v06.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v07.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v08.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v09.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v10.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/v11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/v11.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w00.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w01.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w02.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w03.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w04.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w05.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w06.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w07.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w08.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w09.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w10.png -------------------------------------------------------------------------------- /content/xaml/Images/clock/w11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/clock/w11.png -------------------------------------------------------------------------------- /content/xaml/Images/summer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Images/summer.png -------------------------------------------------------------------------------- /content/xaml/Main.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /content/xaml/SelectionGui.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /content/xaml/Theme/Fonts/PT Root UI_Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Theme/Fonts/PT Root UI_Bold.otf -------------------------------------------------------------------------------- /content/xaml/Theme/Fonts/PT Root UI_Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/Theme/Fonts/PT Root UI_Regular.otf -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.Colors.Dark.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | #e4e6e8 5 | 6 | #bdc0c4 7 | #9fa3a7 8 | #82878c 9 | #6d7378 10 | #595f65 11 | #4b5258 12 | #3e464c 13 | #323940 14 | #2c343a 15 | #262e35 16 | 17 | #20282f 18 | 19 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.Colors.Light.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | #20282f 5 | 6 | #41484e 7 | #5d6469 8 | #7b8085 9 | #93979b 10 | #abaeb2 11 | #bbbec1 12 | #cbced0 13 | #dcdee0 14 | #e5e6e8 15 | #edeff0 16 | 17 | #f6f7f8 18 | 19 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkAqua.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkBlue.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkCrimson.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkEmerald.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkGreen.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkLime.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkOrange.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkPurple.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.DarkRed.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.Fonts.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | Fonts/#PT Root UI 7 | 17 8 | 15 9 | 12 10 | 11 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightAqua.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightBlue.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightCrimson.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightEmerald.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightGreen.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightLime.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightOrange.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightPurple.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/Theme/NoesisTheme.LightRed.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /content/xaml/buttons/agriculture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/agriculture.png -------------------------------------------------------------------------------- /content/xaml/buttons/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/arrow_down.png -------------------------------------------------------------------------------- /content/xaml/buttons/arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/arrow_left.png -------------------------------------------------------------------------------- /content/xaml/buttons/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/arrow_right.png -------------------------------------------------------------------------------- /content/xaml/buttons/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/arrow_up.png -------------------------------------------------------------------------------- /content/xaml/buttons/bed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/bed.png -------------------------------------------------------------------------------- /content/xaml/buttons/bed2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/bed2.png -------------------------------------------------------------------------------- /content/xaml/buttons/build-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/build-all.png -------------------------------------------------------------------------------- /content/xaml/buttons/cabinet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/cabinet.png -------------------------------------------------------------------------------- /content/xaml/buttons/cabinet2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/cabinet2.png -------------------------------------------------------------------------------- /content/xaml/buttons/chair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/chair.png -------------------------------------------------------------------------------- /content/xaml/buttons/chair2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/chair2.png -------------------------------------------------------------------------------- /content/xaml/buttons/crafts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/crafts.png -------------------------------------------------------------------------------- /content/xaml/buttons/creature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/creature.png -------------------------------------------------------------------------------- /content/xaml/buttons/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/cross.png -------------------------------------------------------------------------------- /content/xaml/buttons/day.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/day.png -------------------------------------------------------------------------------- /content/xaml/buttons/designation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/designation.png -------------------------------------------------------------------------------- /content/xaml/buttons/door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/door.png -------------------------------------------------------------------------------- /content/xaml/buttons/farm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/farm.png -------------------------------------------------------------------------------- /content/xaml/buttons/fast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/fast.png -------------------------------------------------------------------------------- /content/xaml/buttons/food.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/food.png -------------------------------------------------------------------------------- /content/xaml/buttons/hydro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/hydro.png -------------------------------------------------------------------------------- /content/xaml/buttons/item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/item.png -------------------------------------------------------------------------------- /content/xaml/buttons/jobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/jobs.png -------------------------------------------------------------------------------- /content/xaml/buttons/kingdom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/kingdom.png -------------------------------------------------------------------------------- /content/xaml/buttons/light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/light.png -------------------------------------------------------------------------------- /content/xaml/buttons/magic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/magic.png -------------------------------------------------------------------------------- /content/xaml/buttons/mechanics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/mechanics.png -------------------------------------------------------------------------------- /content/xaml/buttons/mechanism.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/mechanism.png -------------------------------------------------------------------------------- /content/xaml/buttons/metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/metal.png -------------------------------------------------------------------------------- /content/xaml/buttons/metalwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/metalwork.png -------------------------------------------------------------------------------- /content/xaml/buttons/military.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/military.png -------------------------------------------------------------------------------- /content/xaml/buttons/millitary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/millitary.png -------------------------------------------------------------------------------- /content/xaml/buttons/mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/mine.png -------------------------------------------------------------------------------- /content/xaml/buttons/mission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/mission.png -------------------------------------------------------------------------------- /content/xaml/buttons/night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/night.png -------------------------------------------------------------------------------- /content/xaml/buttons/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/pause.png -------------------------------------------------------------------------------- /content/xaml/buttons/population.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/population.png -------------------------------------------------------------------------------- /content/xaml/buttons/professions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/professions.png -------------------------------------------------------------------------------- /content/xaml/buttons/roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/roles.png -------------------------------------------------------------------------------- /content/xaml/buttons/schedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/schedule.png -------------------------------------------------------------------------------- /content/xaml/buttons/scout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/scout.png -------------------------------------------------------------------------------- /content/xaml/buttons/skills.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/skills.png -------------------------------------------------------------------------------- /content/xaml/buttons/slow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/slow.png -------------------------------------------------------------------------------- /content/xaml/buttons/soil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/soil.png -------------------------------------------------------------------------------- /content/xaml/buttons/spring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/spring.png -------------------------------------------------------------------------------- /content/xaml/buttons/squads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/squads.png -------------------------------------------------------------------------------- /content/xaml/buttons/stockpile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/stockpile.png -------------------------------------------------------------------------------- /content/xaml/buttons/stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/stone.png -------------------------------------------------------------------------------- /content/xaml/buttons/stonework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/stonework.png -------------------------------------------------------------------------------- /content/xaml/buttons/summer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/summer.png -------------------------------------------------------------------------------- /content/xaml/buttons/table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/table.png -------------------------------------------------------------------------------- /content/xaml/buttons/table2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/table2.png -------------------------------------------------------------------------------- /content/xaml/buttons/terrain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/terrain.png -------------------------------------------------------------------------------- /content/xaml/buttons/windmill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/windmill.png -------------------------------------------------------------------------------- /content/xaml/buttons/winter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/winter.png -------------------------------------------------------------------------------- /content/xaml/buttons/wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/wood.png -------------------------------------------------------------------------------- /content/xaml/buttons/woodwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/content/xaml/buttons/woodwork.png -------------------------------------------------------------------------------- /devmessages.txt: -------------------------------------------------------------------------------- 1 | Welcome to Ingnomia. 2 | 3 | This game is still under heavy development. 4 | 5 | Please report any bugs you find using the in game bug reporting tool (F11). That will also send a zipped save game to me along with the bug description. 6 | 7 | You can also report bugs, make suggestions or ask gameplay questions on Discord, Reddit or the Steam forum. 8 | 9 | Have fun. -------------------------------------------------------------------------------- /docs/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | jinja2 = "*" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3.9" 13 | -------------------------------------------------------------------------------- /docs/generate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import argparse 4 | import os 5 | import sys 6 | 7 | from lib.util import DOCDIR 8 | from lib.render import render 9 | 10 | if __name__ == "__main__": 11 | parser = argparse.ArgumentParser() 12 | parser.add_argument("-t", "--theme", help="theme name, defaults to 'default'", default="default") 13 | parser.add_argument( 14 | "-o", 15 | "--output", 16 | help="output directory, defaults to 'docs/html' in the repository", 17 | default=os.path.join(DOCDIR, "html"), 18 | ) 19 | parser.add_argument( 20 | "-f", "--overwrite", help="allow overwriting output directory when it exists", action="store_true" 21 | ) 22 | parser.add_argument("-b", "--build", help="set build ID information", default=None) 23 | 24 | ns = parser.parse_args() 25 | 26 | if os.path.exists(ns.output) and not ns.overwrite: 27 | print(f"Error: output path {ns.output} exists, pass --overwrite to overwrite") 28 | sys.exit(1) 29 | 30 | render(ns.theme, ns.output, ns.build) 31 | -------------------------------------------------------------------------------- /docs/lib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/docs/lib/__init__.py -------------------------------------------------------------------------------- /docs/lib/render.py: -------------------------------------------------------------------------------- 1 | from .themes import themes 2 | 3 | 4 | def render(theme, output, build_id): 5 | try: 6 | ThemeCtor = themes[theme] 7 | except KeyError: 8 | raise KeyError(f"Theme '{theme}' was not found") 9 | 10 | t = ThemeCtor() 11 | t.render(output, build_id) 12 | -------------------------------------------------------------------------------- /docs/lib/sprites/__init__.py: -------------------------------------------------------------------------------- 1 | from .sprite import SpriteManager, MissingMaterials 2 | from .layout import Layout 3 | -------------------------------------------------------------------------------- /docs/lib/themes/__init__.py: -------------------------------------------------------------------------------- 1 | from .default.theme import DefaultTheme 2 | 3 | themes = {"default": DefaultTheme} 4 | -------------------------------------------------------------------------------- /docs/lib/themes/default/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/docs/lib/themes/default/__init__.py -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/base.html.j2: -------------------------------------------------------------------------------- 1 | 2 | {% import "macros.html.j2" as macros with context %} 3 | 4 | {% block title %}Ingnomia docs{% endblock %} 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 28 | 29 |
30 | {% block content %}{% endblock %} 31 |
32 | 33 |
34 |

Search results for ""

35 | 36 | No results :( 37 | 38 | 43 |
44 |
45 | 46 | {{ navtable_rendered }} 47 | 48 |
49 |
50 | Generated on {{ build.date }} UTC 51 | {% if build.id %}from version {{ build.id }}{% endif %} 52 |
53 |
54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/constructions.html.j2: -------------------------------------------------------------------------------- 1 | {% extends "base.html.j2" %} 2 | {% import "macros.html.j2" as macros with context %} 3 | 4 | {% block title %} 5 | All Constructions - {{ super() }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |

All Constructions

10 | 11 | {{ macros.constrlist(constructions) }} 12 | {% endblock %} -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/food.html.j2: -------------------------------------------------------------------------------- 1 | {% extends "base.html.j2" %} 2 | {% import "macros.html.j2" as macros with context %} 3 | 4 | 5 | {% macro food_table(data, value_label, value_attr) %} 6 | 7 | 8 | 9 | 10 | 11 | {% for category in data %} 12 | {% for group in category.groups %} 13 | {% for item in group["items"] %} 14 | 15 | {% if loop.index == 1 %} 16 | 19 | {% endif %} 20 | 21 | 27 | 28 | 31 | 32 | {% endfor %} 33 | {% endfor %} 34 | {% endfor %} 35 |
Items{{ value_label }}
17 | {{ group.translation|title }} 18 | 22 | {% if item.spriteid %} 23 | {{ macros.itemsprite(item.id) }} 24 | {% endif %} 25 | {{ item.translation|title }} 26 | 29 | {{ item[value_attr] }} 30 |
36 | {% endmacro %} 37 | 38 | {% block title %} 39 | All Food & Drinks - {{ super() }} 40 | {% endblock %} 41 | 42 | {% block content %} 43 |

All Food & Drinks

44 | 45 |

Food

46 | 47 | {{ food_table(data=food, value_label="Eat value", value_attr="eatvalue") }} 48 | 49 |

Drinks

50 | 51 | {{ food_table(data=drinks, value_label="Drink value", value_attr="drinkvalue") }} 52 | {% endblock %} -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/index.html.j2: -------------------------------------------------------------------------------- 1 | {% extends "base.html.j2" %} 2 | 3 | {% block content %} 4 |

Auto-generated documentation for Ingnomia

5 | 6 | Use the menu, the table below or the search box to navigate. 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/items.html.j2: -------------------------------------------------------------------------------- 1 | {% extends "base.html.j2" %} 2 | {% import "macros.html.j2" as macros with context %} 3 | 4 | {% block title %} 5 | All Items - {{ super() }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |

All Items

10 | 11 | {{ macros.nav_table(only_section="Items", class="") }} 12 | {% endblock %} -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/navtable.html.j2: -------------------------------------------------------------------------------- 1 | {% import "macros.html.j2" as macros with context %} 2 | {{ macros.nav_table() }} 3 | -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/sprites.css.j2: -------------------------------------------------------------------------------- 1 | .zoomed .cells { 2 | position: absolute; 3 | transform: translate(-50%, -50%) scale(2, 2) translate(50%, 50%); 4 | } 5 | 6 | .layout { 7 | display: inline-block; 8 | position: relative; 9 | image-rendering: crisp-edges; 10 | image-rendering: pixelated; 11 | vertical-align: text-bottom; 12 | } 13 | 14 | .cell, .layer { 15 | display: block; 16 | position: absolute; 17 | } 18 | 19 | {% for anim in sprite_anims %} 20 | @keyframes {{ anim.id() }} { 21 | {% for frame in anim.frames %} 22 | {{ (100 * loop.index0 / loop.length) | round(2) }}% { 23 | {% for prop, value in frame.items() %} 24 | {{ prop }}: {{ value }}; 25 | {% endfor %} 26 | } 27 | {% endfor %} 28 | } 29 | {% endfor %} 30 | 31 | {% for rule in sprite_rules %} 32 | {% for selector in rule.selectors|sort %} 33 | {{ selector }}{% if not loop.last %},{% endif %} 34 | {% endfor %} 35 | { 36 | {% for prop, value in rule.props.items() %} 37 | {% if prop == "animation" %} 38 | animation: {{ rule.props["animation-name"].id() }} {{ value }}; 39 | {% elif prop != "animation-name" %} 40 | {{ prop }}: {{ value }}; 41 | {% endif %} 42 | {% endfor %} 43 | } 44 | {% endfor %} 45 | -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/tints.svg.j2: -------------------------------------------------------------------------------- 1 | 2 | {% for tint in tints %} 3 | 4 | 9 | 10 | {% endfor %} 11 | 12 | -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/workshop.html.j2: -------------------------------------------------------------------------------- 1 | {% extends "base.html.j2" %} 2 | {% import "macros.html.j2" as macros with context %} 3 | 4 | {% block title %} 5 | {{ workshop.translation|title }} - {{ super() }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 | {{ macros.workshopsprite(workshop.id, zoom=True) }} 10 | 11 |

12 | {{ workshop.tab|title }} workshop 13 | {{ workshop.translation|title }} 14 |

15 | 16 |

Building components

17 | 18 | 19 | 20 | 21 | 22 | 23 | {% for item in workshop.components %} 24 | 25 | 28 | 37 | 38 | {% endfor %} 39 |
ItemRequires workshop
26 | {{ macros.itemamount(item) }} 27 | 29 | {% if item.workshops|length %} 30 | {% for w in item.workshops %} 31 |
{{ macros.workshop(w) }}
32 | {% endfor %} 33 | {% else %} 34 | (raw material) 35 | {% endif %} 36 |
40 | 41 | {% if workshop.crafts|length %} 42 |

Used to craft

43 | 44 | {{ macros.craftlist(workshop.crafts, show_workshop=false) }} 45 | {% endif %} 46 | {% endblock %} -------------------------------------------------------------------------------- /docs/lib/themes/default/templates/workshops.html.j2: -------------------------------------------------------------------------------- 1 | {% extends "base.html.j2" %} 2 | {% import "macros.html.j2" as macros with context %} 3 | 4 | {% block title %} 5 | All Workshops - {{ super() }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |

All Workshops

10 | 11 | {{ macros.nav_table(only_section="Workshops", class="", workshop_sprites=True) }} 12 | {% endblock %} -------------------------------------------------------------------------------- /gui/SampleData/StockpileModelSampleData.xaml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /gui/SampleData/ViewModelSampleData.xaml: -------------------------------------------------------------------------------- 1 |  9 | -------------------------------------------------------------------------------- /gui/Src/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gui/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/Plants.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/Plants.docx -------------------------------------------------------------------------------- /resources/gfx/tmp_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/gfx/tmp_logo.png -------------------------------------------------------------------------------- /resources/icons/agriculture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/agriculture.png -------------------------------------------------------------------------------- /resources/icons/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/arrow_down.png -------------------------------------------------------------------------------- /resources/icons/arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/arrow_left.png -------------------------------------------------------------------------------- /resources/icons/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/arrow_right.png -------------------------------------------------------------------------------- /resources/icons/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/arrow_up.png -------------------------------------------------------------------------------- /resources/icons/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/back.png -------------------------------------------------------------------------------- /resources/icons/build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/build.png -------------------------------------------------------------------------------- /resources/icons/buttondown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/buttondown.png -------------------------------------------------------------------------------- /resources/icons/buttonup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/buttonup.png -------------------------------------------------------------------------------- /resources/icons/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/cancel.png -------------------------------------------------------------------------------- /resources/icons/chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/chest.png -------------------------------------------------------------------------------- /resources/icons/cut_clipping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/cut_clipping.png -------------------------------------------------------------------------------- /resources/icons/deconstruct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/deconstruct.png -------------------------------------------------------------------------------- /resources/icons/designate_area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/designate_area.png -------------------------------------------------------------------------------- /resources/icons/dig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/dig.png -------------------------------------------------------------------------------- /resources/icons/dig_hole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/dig_hole.png -------------------------------------------------------------------------------- /resources/icons/dig_ramp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/dig_ramp.png -------------------------------------------------------------------------------- /resources/icons/dig_stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/dig_stairs.png -------------------------------------------------------------------------------- /resources/icons/dining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/dining.png -------------------------------------------------------------------------------- /resources/icons/dining_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/dining_off.png -------------------------------------------------------------------------------- /resources/icons/door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/door.png -------------------------------------------------------------------------------- /resources/icons/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/empty.png -------------------------------------------------------------------------------- /resources/icons/engineering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/engineering.png -------------------------------------------------------------------------------- /resources/icons/fell_trees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/fell_trees.png -------------------------------------------------------------------------------- /resources/icons/forage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/forage.png -------------------------------------------------------------------------------- /resources/icons/furniture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/furniture.png -------------------------------------------------------------------------------- /resources/icons/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/gear.png -------------------------------------------------------------------------------- /resources/icons/grove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/grove.png -------------------------------------------------------------------------------- /resources/icons/guard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/guard.png -------------------------------------------------------------------------------- /resources/icons/hospital.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/hospital.png -------------------------------------------------------------------------------- /resources/icons/hospital_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/hospital_off.png -------------------------------------------------------------------------------- /resources/icons/hydraulics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/hydraulics.png -------------------------------------------------------------------------------- /resources/icons/job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/job.png -------------------------------------------------------------------------------- /resources/icons/mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/mine.png -------------------------------------------------------------------------------- /resources/icons/mine_ramp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/mine_ramp.png -------------------------------------------------------------------------------- /resources/icons/mine_stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/mine_stairs.png -------------------------------------------------------------------------------- /resources/icons/mine_wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/mine_wall.png -------------------------------------------------------------------------------- /resources/icons/pasture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/pasture.png -------------------------------------------------------------------------------- /resources/icons/patrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/patrol.png -------------------------------------------------------------------------------- /resources/icons/remove_designation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/remove_designation.png -------------------------------------------------------------------------------- /resources/icons/remove_floor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/remove_floor.png -------------------------------------------------------------------------------- /resources/icons/remove_ramp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/remove_ramp.png -------------------------------------------------------------------------------- /resources/icons/replace_floor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/replace_floor.png -------------------------------------------------------------------------------- /resources/icons/replace_wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/replace_wall.png -------------------------------------------------------------------------------- /resources/icons/room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/room.png -------------------------------------------------------------------------------- /resources/icons/room2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/room2.png -------------------------------------------------------------------------------- /resources/icons/room2_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/room2_off.png -------------------------------------------------------------------------------- /resources/icons/room_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/room_off.png -------------------------------------------------------------------------------- /resources/icons/scaffolding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/scaffolding.png -------------------------------------------------------------------------------- /resources/icons/stair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/stair.png -------------------------------------------------------------------------------- /resources/icons/terrain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/terrain.png -------------------------------------------------------------------------------- /resources/icons/workshop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/icons/workshop.png -------------------------------------------------------------------------------- /resources/ui/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/ui/checkbox_checked.png -------------------------------------------------------------------------------- /resources/ui/checkbox_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rschurade/Ingnomia/5676b6ffc1055ed216b78f2a3aa8b0daf0870a83/resources/ui/checkbox_unchecked.png -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB_RECURSE SOURCE_LIST 2 | "*.h" 3 | "*.hpp" 4 | "*.cpp" 5 | ) 6 | 7 | target_sources(${PROJECT_NAME} 8 | PRIVATE 9 | ${SOURCE_LIST} 10 | ${CMAKE_CURRENT_LIST_FILE} 11 | ) 12 | 13 | target_precompile_headers(${PROJECT_NAME} 14 | PRIVATE 15 | pch.h 16 | ) 17 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_factory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_tree.h" 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #include 28 | 29 | class BT_Factory 30 | { 31 | public: 32 | BT_Factory() = delete; 33 | ~BT_Factory() = delete; 34 | 35 | static BT_Node* load( const QString id, QHash>& actions, QVariantMap& blackboard ); 36 | 37 | private: 38 | static BT_Node* createBTNode( QDomElement treeElement, BT_Node* parent, QDomElement& documentRoot, QHash>& actions, QVariantMap& blackboard ); 39 | 40 | static BT_Node* getTree( QString treeID, QDomElement documentRoot, QHash>& actions, QVariantMap& blackboard ); 41 | 42 | static void getNodes( BT_Node* parent, QDomElement root, QDomElement& documentRoot, QHash>& actions, QVariantMap& blackboard ); 43 | }; 44 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeaction.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "bt_nodeaction.h" 19 | 20 | BT_NodeAction::BT_NodeAction( QString name, QVariantMap& blackboard, std::function callback ) : 21 | BT_Node( name, blackboard ), 22 | m_callback( callback ) 23 | { 24 | } 25 | 26 | BT_NodeAction::~BT_NodeAction() 27 | { 28 | } 29 | 30 | BT_RESULT BT_NodeAction::tick() 31 | { 32 | m_status = m_callback( false ); 33 | return m_status; 34 | } 35 | 36 | void BT_NodeAction::halt() 37 | { 38 | if ( m_status == BT_RESULT::RUNNING ) 39 | { 40 | m_status = BT_RESULT::IDLE; //m_callback( true ); 41 | } 42 | } -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodebbprecondition.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "bt_nodebbprecondition.h" 19 | 20 | BT_NodeBBPrecondition::BT_NodeBBPrecondition( QString name, QString key, QString expected, QVariantMap& blackboard ) : 21 | BT_Node( name, blackboard ), 22 | m_key( key ), 23 | m_expected( expected ) 24 | { 25 | } 26 | 27 | BT_NodeBBPrecondition::~BT_NodeBBPrecondition() 28 | { 29 | } 30 | 31 | BT_RESULT BT_NodeBBPrecondition::tick() 32 | { 33 | if ( m_blackboard.value( m_key ).toString() == m_expected || m_expected == "*" ) 34 | { 35 | if ( m_children.size() > 0 ) 36 | { 37 | return m_children[0]->tick(); 38 | } 39 | } 40 | return BT_RESULT::FAILURE; 41 | } 42 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodebbprecondition.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeBBPrecondition final : public BT_Node 23 | { 24 | public: 25 | BT_NodeBBPrecondition( QString name, QString key, QString expected, QVariantMap& blackboard ); 26 | ~BT_NodeBBPrecondition(); 27 | 28 | BT_RESULT tick(); 29 | 30 | private: 31 | QString m_key; 32 | QString m_expected; 33 | }; 34 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeconditional.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "bt_nodeconditional.h" 19 | 20 | BT_NodeConditional::BT_NodeConditional( QString name, QVariantMap& blackboard, std::function callback ) : 21 | BT_Node( name, blackboard ), 22 | m_callback( callback ) 23 | { 24 | } 25 | 26 | BT_NodeConditional::~BT_NodeConditional() 27 | { 28 | } 29 | 30 | BT_RESULT BT_NodeConditional::tick() 31 | { 32 | m_status = m_callback( false ); 33 | return m_status; 34 | } 35 | 36 | void BT_NodeConditional::halt() 37 | { 38 | if ( m_status == BT_RESULT::RUNNING ) 39 | { 40 | m_status = BT_RESULT::IDLE; // m_callback( true ); 41 | } 42 | } -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodefallback.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeFallback final : public BT_Node 23 | { 24 | public: 25 | BT_NodeFallback( QString name, QVariantMap& blackboard ); 26 | ~BT_NodeFallback(); 27 | 28 | BT_RESULT tick(); 29 | }; 30 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodefallbackstar.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeFallbackStar final : public BT_Node 23 | { 24 | public: 25 | BT_NodeFallbackStar( QString name, QVariantMap& blackboard ); 26 | ~BT_NodeFallbackStar(); 27 | 28 | BT_RESULT tick(); 29 | }; 30 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeforcefailure.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "bt_nodeforcefailure.h" 19 | 20 | BT_NodeForceFailure::BT_NodeForceFailure( QVariantMap& blackboard ) : 21 | BT_Node( "ForceFailure", blackboard ) 22 | { 23 | } 24 | 25 | BT_NodeForceFailure::~BT_NodeForceFailure() 26 | { 27 | } 28 | 29 | BT_RESULT BT_NodeForceFailure::tick() 30 | { 31 | if ( m_children.size() > 0 ) 32 | { 33 | BT_RESULT result = m_children[0]->tick(); 34 | if ( result == BT_RESULT::RUNNING ) 35 | { 36 | return BT_RESULT::RUNNING; 37 | } 38 | } 39 | return BT_RESULT::FAILURE; 40 | } -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeforcefailure.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeForceFailure final : public BT_Node 23 | { 24 | public: 25 | BT_NodeForceFailure( QVariantMap& blackboard ); 26 | ~BT_NodeForceFailure(); 27 | 28 | BT_RESULT tick(); 29 | }; 30 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeforcesuccess.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "bt_nodeforcesuccess.h" 19 | 20 | BT_NodeForceSuccess::BT_NodeForceSuccess( QVariantMap& blackboard ) : 21 | BT_Node( "ForceSuccess", blackboard ) 22 | { 23 | } 24 | 25 | BT_NodeForceSuccess::~BT_NodeForceSuccess() 26 | { 27 | } 28 | 29 | BT_RESULT BT_NodeForceSuccess::tick() 30 | { 31 | if ( m_children.size() > 0 ) 32 | { 33 | BT_RESULT result = m_children[0]->tick(); 34 | if ( result == BT_RESULT::RUNNING ) 35 | { 36 | return BT_RESULT::RUNNING; 37 | } 38 | } 39 | return BT_RESULT::SUCCESS; 40 | } -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeforcesuccess.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeForceSuccess final : public BT_Node 23 | { 24 | public: 25 | BT_NodeForceSuccess( QVariantMap& blackboard ); 26 | ~BT_NodeForceSuccess(); 27 | 28 | BT_RESULT tick(); 29 | }; 30 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeinverter.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "bt_nodeinverter.h" 19 | 20 | BT_NodeInverter::BT_NodeInverter( QString name, QVariantMap& blackboard ) : 21 | BT_Node( name, blackboard ) 22 | { 23 | } 24 | 25 | BT_NodeInverter::~BT_NodeInverter() 26 | { 27 | } 28 | 29 | BT_RESULT BT_NodeInverter::tick() 30 | { 31 | if ( m_children.size() > 0 ) 32 | { 33 | BT_RESULT result = m_children[0]->tick(); 34 | if ( result == BT_RESULT::RUNNING ) 35 | { 36 | m_status = BT_RESULT::RUNNING; 37 | return m_status; 38 | } 39 | else if ( result == BT_RESULT::FAILURE ) 40 | { 41 | m_status = BT_RESULT::SUCCESS; 42 | return m_status; 43 | } 44 | } 45 | m_status = BT_RESULT::FAILURE; 46 | return m_status; 47 | } -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodeinverter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeInverter final : public BT_Node 23 | { 24 | public: 25 | BT_NodeInverter( QString name, QVariantMap& blackboard ); 26 | ~BT_NodeInverter(); 27 | 28 | BT_RESULT tick(); 29 | }; 30 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_noderepeat.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeRepeat final : public BT_Node 23 | { 24 | public: 25 | BT_NodeRepeat( QString name, int num, QVariantMap& blackboard ); 26 | ~BT_NodeRepeat(); 27 | 28 | QVariantMap serialize(); 29 | void deserialize( QVariantMap in ); 30 | 31 | BT_RESULT tick(); 32 | 33 | private: 34 | int m_num = 0; 35 | }; 36 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_noderepeatuntilsuccess.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeRepeatUntilSuccess final : public BT_Node 23 | { 24 | public: 25 | BT_NodeRepeatUntilSuccess( QString name, int num, QVariantMap& blackboard ); 26 | ~BT_NodeRepeatUntilSuccess(); 27 | 28 | QVariantMap serialize(); 29 | void deserialize( QVariantMap in ); 30 | 31 | BT_RESULT tick(); 32 | 33 | private: 34 | int m_num = 0; 35 | }; 36 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodesequence.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeSequence final : public BT_Node 23 | { 24 | public: 25 | BT_NodeSequence( QString name, QVariantMap& blackboard ); 26 | ~BT_NodeSequence(); 27 | 28 | BT_RESULT tick(); 29 | }; 30 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_nodesequencestar.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "bt_node.h" 21 | 22 | class BT_NodeSequenceStar final : public BT_Node 23 | { 24 | public: 25 | BT_NodeSequenceStar( QString name, QVariantMap& blackboard, bool resetOnFailure ); 26 | ~BT_NodeSequenceStar(); 27 | 28 | QVariantMap serialize(); 29 | void deserialize( QVariantMap in ); 30 | 31 | BT_RESULT tick(); 32 | 33 | private: 34 | bool m_resetOnFailure = true; 35 | }; 36 | -------------------------------------------------------------------------------- /src/base/behaviortree/bt_tree.h: -------------------------------------------------------------------------------- 1 | #include "bt_factory.h" 2 | #include "bt_nodeaction.h" 3 | #include "bt_nodebbprecondition.h" 4 | #include "bt_nodeconditional.h" 5 | #include "bt_nodefallback.h" 6 | #include "bt_nodefallbackstar.h" 7 | #include "bt_nodeforcefailure.h" 8 | #include "bt_nodeforcesuccess.h" 9 | #include "bt_nodeinverter.h" 10 | #include "bt_noderepeat.h" 11 | #include "bt_noderepeatuntilsuccess.h" 12 | #include "bt_nodesequence.h" 13 | #include "bt_nodesequencestar.h" 14 | -------------------------------------------------------------------------------- /src/base/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef CONFIG_H_ 20 | #define CONFIG_H_ 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | class Config 29 | { 30 | private: 31 | QVariantMap m_settings; 32 | bool m_valid = false; 33 | QMutex m_mutex; 34 | 35 | public: 36 | Config(); 37 | ~Config(); 38 | 39 | QVariant get( QString key ); 40 | void set( QString key, QVariant value ); 41 | 42 | QVariantMap& object() 43 | { 44 | return m_settings; 45 | } 46 | void setObject( QVariantMap obj ) 47 | { 48 | m_settings = obj; 49 | } 50 | 51 | bool valid() 52 | { 53 | return m_valid; 54 | } 55 | }; 56 | 57 | #endif /* CONFIG_H_ */ 58 | -------------------------------------------------------------------------------- /src/base/counter.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | 22 | template 23 | class Counter 24 | { 25 | public: 26 | void add( T id ) 27 | { 28 | unsigned int val = m_counts.value( id ); 29 | ++val; 30 | m_counts.insert( id, val ); 31 | } 32 | 33 | QList keys() 34 | { 35 | return m_counts.keys(); 36 | } 37 | 38 | unsigned int count( T key ) 39 | { 40 | return m_counts.value( key ); 41 | } 42 | 43 | void reset() 44 | { 45 | m_counts.clear(); 46 | } 47 | 48 | private: 49 | QMap m_counts; 50 | }; -------------------------------------------------------------------------------- /src/base/crashhandler.cpp: -------------------------------------------------------------------------------- 1 | #include "crashhandler.h" 2 | 3 | #include "../version.h" 4 | #include "io.h" 5 | 6 | #if defined( PROJECT_VERSION) && defined( BUILD_ID ) 7 | #define BUILD_VERSION PROJECT_VERSION "-" BUILD_ID 8 | #endif 9 | 10 | #if defined( HAVE_BUGSPLAT ) && defined( BUGSPLAT_DB ) && defined( BUILD_VERSION ) 11 | #define USE_BUGSPLAT 1 12 | #endif 13 | 14 | #ifdef USE_BUGSPLAT 15 | #include 16 | 17 | #define WIDEN2( x ) L##x 18 | #define WIDEN( x ) WIDEN2( x ) 19 | 20 | void setupCrashHandler() 21 | { 22 | static MiniDmpSender* mpSender = new MiniDmpSender( WIDEN( BUGSPLAT_DB ), WIDEN( PROJECT_NAME ), WIDEN( BUILD_VERSION ), NULL, MDSF_USEGUARDMEMORY | MDSF_LOGFILE | MDSF_DETECTHANGS | MDSF_SUSPENDALLTHREADS | MDSF_PREVENTHIJACKING ); 23 | // The following calls add support for collecting crashes for abort(), vectored exceptions, out of memory, 24 | // pure virtual function calls, and for invalid parameters for OS functions. 25 | // These calls should be used for each module that links with a separate copy of the CRT. 26 | SetGlobalCRTExceptionBehavior(); 27 | SetPerThreadCRTExceptionBehavior(); // This call needed in each thread of your app 28 | 29 | // A guard buffer of 20mb is needed to catch OutOfMemory crashes 30 | mpSender->setGuardByteBufferSize( 20 * 1024 * 1024 ); 31 | 32 | // Include main log file 33 | QString logFile = IO::getDataFolder() + "/log.txt"; 34 | mpSender->sendAdditionalFile( logFile.replace( '/', '\\' ).toStdWString().c_str() ); 35 | } 36 | #else 37 | void setupCrashHandler() 38 | { 39 | } 40 | #endif // USE_BUGSPLAT -------------------------------------------------------------------------------- /src/base/crashhandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | void setupCrashHandler(); -------------------------------------------------------------------------------- /src/base/logger.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "logger.h" 19 | 20 | #include "../base/gamestate.h" 21 | 22 | Logger::Logger() 23 | { 24 | } 25 | 26 | Logger::~Logger() 27 | { 28 | } 29 | 30 | void Logger::reset() 31 | { 32 | m_messages.clear(); 33 | } 34 | 35 | void Logger::log( LogType lt, QString msg, unsigned int sourceEntity ) 36 | { 37 | LogMessage lm { GameState::tick, "", lt, msg, sourceEntity }; 38 | QMutexLocker lock( &m_mutex ); 39 | m_messages.push_back( lm ); 40 | } 41 | -------------------------------------------------------------------------------- /src/base/logger.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | #include 22 | 23 | #include 24 | 25 | enum class LogType 26 | { 27 | DEBUG, 28 | JOB, 29 | CRAFT, 30 | COMBAT 31 | }; 32 | 33 | struct LogMessage 34 | { 35 | quint64 tick; 36 | QString dateTime; 37 | LogType type; 38 | QString message; 39 | unsigned int source; 40 | }; 41 | 42 | class Logger 43 | { 44 | public: 45 | Logger(); 46 | ~Logger(); 47 | 48 | void reset(); 49 | 50 | void log( LogType lt, QString msg, unsigned int sourceEntity ); 51 | 52 | std::vector& messages() 53 | { 54 | return m_messages; 55 | } 56 | 57 | private: 58 | QMutex m_mutex; 59 | 60 | std::vector m_messages; 61 | }; 62 | -------------------------------------------------------------------------------- /src/base/octree.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | #include 22 | 23 | #include 24 | 25 | class Octree 26 | { 27 | public: 28 | Octree() = delete; 29 | Octree( int x, int y, int z, int dx, int dy, int dz ); 30 | ~Octree(); 31 | 32 | void insertItem( int x, int y, int z, unsigned int item ); 33 | bool removeItem( int x, int y, int z, unsigned int item ); 34 | 35 | QList query( int x, int y, int z, int limit = 999999999 ) const; 36 | bool visit( int x, int y, int z, const std::function& visitor ) const; 37 | 38 | private: 39 | const int m_x; 40 | const int m_y; 41 | const int m_z; 42 | 43 | const int m_dx; 44 | const int m_dy; 45 | const int m_dz; 46 | 47 | const bool m_isLeaf; 48 | 49 | Octree* m_children[8] = { 0 }; 50 | QSet m_items; 51 | }; 52 | -------------------------------------------------------------------------------- /src/base/priorityqueue.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | template > 26 | class PriorityQueue : public std::priority_queue, std::greater> 27 | { 28 | public: 29 | using base_type = std::priority_queue, std::greater>; 30 | inline void put( const T &item, const priority_t &priority ) 31 | { 32 | base_type::emplace( priority, item ); 33 | } 34 | 35 | inline T get() 36 | { 37 | T best_item = base_type::top().second; 38 | base_type::pop(); 39 | return best_item; 40 | } 41 | 42 | inline const std::vector& raw() const 43 | { 44 | return base_type::c; 45 | } 46 | }; 47 | -------------------------------------------------------------------------------- /src/base/vptr.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | 22 | template 23 | class VPtr 24 | { 25 | public: 26 | static T* asPtr( QVariant v ) 27 | { 28 | return (T*)v.value(); 29 | } 30 | 31 | static QVariant asQVariant( T* ptr ) 32 | { 33 | return qVariantFromValue( (void*)ptr ); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /src/game/creaturefactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "animal.h" 21 | #include "monster.h" 22 | 23 | #include 24 | #include 25 | 26 | class Game; 27 | 28 | class CreatureFactory 29 | { 30 | Q_DISABLE_COPY_MOVE( CreatureFactory ) 31 | public: 32 | CreatureFactory( Game* game ); 33 | ~CreatureFactory(); 34 | 35 | Animal* createRandomAnimal( QStringList allowedAnimals ); 36 | Animal* createAnimal( QString type, Position pos, Gender gender, bool adult, bool tame ); 37 | Animal* createAnimal( QVariantMap values ); 38 | 39 | Monster* createRandomMonster( QStringList allowedMonsters ); 40 | Monster* createMonster( QString type, int level, Position pos, Gender gender ); 41 | Monster* createMonster( QVariantMap values ); 42 | 43 | private: 44 | QPointer g; 45 | 46 | int m_numWoodLice = 0; 47 | }; 48 | -------------------------------------------------------------------------------- /src/game/gnomefactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "gnome.h" 21 | #include "gnometrader.h" 22 | 23 | #include 24 | 25 | class Game; 26 | 27 | class GnomeFactory 28 | { 29 | Q_DISABLE_COPY_MOVE( GnomeFactory ) 30 | public: 31 | GnomeFactory( Game* gm ); 32 | ~GnomeFactory(); 33 | 34 | bool init(); 35 | 36 | Gnome* createGnome( Position& pos ); 37 | GnomeTrader* createGnomeTrader( Position& pos ); 38 | Gnome* createGnome( QVariantMap values ); 39 | GnomeTrader* createGnomeTrader( QVariantMap values ); 40 | 41 | private: 42 | QPointer g; 43 | }; 44 | -------------------------------------------------------------------------------- /src/game/object.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "../base/position.h" 21 | 22 | #include 23 | #include 24 | 25 | class Object 26 | { 27 | public: 28 | Object(); 29 | Object( const Position& position ); 30 | Object( QVariantMap in ); 31 | virtual ~Object(); 32 | 33 | bool operator<( const Object& o ) const 34 | { 35 | return m_id < o.m_id; 36 | } 37 | 38 | unsigned int id() const; 39 | 40 | const Position& getPos() const; 41 | void setPos( Position position ); 42 | 43 | virtual unsigned int spriteID() const; 44 | void setSpriteID( unsigned int id ); 45 | 46 | virtual void serialize( QVariantMap& out ) const; 47 | 48 | protected: 49 | unsigned int m_id; 50 | 51 | Position m_position; 52 | 53 | unsigned int m_spriteID; 54 | }; 55 | -------------------------------------------------------------------------------- /src/game/soundmanager.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "soundmanager.h" 19 | 20 | #include "../base/config.h" 21 | #include "../base/db.h" 22 | #include "../base/gamestate.h" 23 | #include "../base/position.h" 24 | #include "../gui/eventconnector.h" 25 | #include "game.h" 26 | 27 | #include 28 | #include 29 | 30 | SoundManager::SoundManager( Game* parent ) : 31 | g( parent ), 32 | QObject( parent ) 33 | { 34 | } 35 | 36 | SoundManager::~SoundManager() 37 | { 38 | } 39 | 40 | void SoundManager::onTick( quint64 tick ) 41 | { 42 | } 43 | 44 | void SoundManager::playEffect( QString type, Position& pos, QString material ) 45 | { 46 | playEffect( type, pos, material, 0 ); 47 | } 48 | 49 | void SoundManager::playEffect( QString type, Position& pos, QString material, int duration ) 50 | { 51 | emit signalPlayEffect( SoundEffect { type, material, pos } ); 52 | } 53 | -------------------------------------------------------------------------------- /src/game/soundmanager.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "../base/position.h" 21 | 22 | struct SoundEffect 23 | { 24 | QString type; 25 | QString material; 26 | Position origin; 27 | }; 28 | Q_DECLARE_METATYPE( SoundEffect ) 29 | 30 | class Job; 31 | class Game; 32 | 33 | class SoundManager : public QObject 34 | { 35 | Q_OBJECT 36 | Q_DISABLE_COPY_MOVE( SoundManager ) 37 | public: 38 | SoundManager( Game* parent = 0 ); 39 | ~SoundManager(); 40 | 41 | void onTick( quint64 tick ); 42 | void playEffect( QString type, Position& pos, QString material ); 43 | void playEffect( QString type, Position& pos, QString material, int duration ); 44 | 45 | private: 46 | QPointer g; 47 | 48 | signals: 49 | void signalPlayEffect( const SoundEffect& effect ); 50 | }; 51 | -------------------------------------------------------------------------------- /src/game/techtree.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | #include 22 | #include 23 | 24 | struct TTNode 25 | { 26 | char level = 0; 27 | QString itemSID; 28 | QString craftID; 29 | 30 | QSet parents; 31 | QSet childs; 32 | }; 33 | 34 | class TechTree : public QObject 35 | { 36 | Q_OBJECT 37 | 38 | public: 39 | TechTree( QObject* parent = 0 ); 40 | ~TechTree(); 41 | 42 | void create(); 43 | 44 | private: 45 | bool compsLowerLevel( QString craftID, QHash& itemLevels ); 46 | int levelPlusOne( QString craftID, QHash& itemLevels ); 47 | 48 | QMap m_items; 49 | }; 50 | -------------------------------------------------------------------------------- /src/game/worldobject.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "worldobject.h" 19 | 20 | #include "../base/gamestate.h" 21 | #include "../game/game.h" 22 | 23 | WorldObject::WorldObject( Game* game ) : 24 | g( game ) 25 | { 26 | m_id = GameState::createID(); 27 | } 28 | 29 | WorldObject::~WorldObject() 30 | { 31 | } 32 | 33 | WorldObject::WorldObject( QVariantMap vals, Game* game ) : 34 | g( game ) 35 | { 36 | m_id = vals.value( "ID" ).toUInt(); 37 | m_lastUpdateTick = vals.value( "LastUpdate" ).value(); 38 | m_name = vals.value( "Name" ).toString(); 39 | m_active = vals.value( "Active" ).toBool(); 40 | 41 | if ( vals.contains( "Suspended" ) ) 42 | { 43 | m_active = !vals.value( "Suspended" ).toBool(); 44 | } 45 | } 46 | 47 | void WorldObject::serialize( QVariantMap& out ) const 48 | { 49 | out.insert( "ID", m_id ); 50 | out.insert( "Name", m_name ); 51 | out.insert( "LastUpdate", m_lastUpdateTick ); 52 | out.insert( "Active", m_active ); 53 | } 54 | -------------------------------------------------------------------------------- /src/gui/aggregatordebug.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "aggregatordebug.h" 19 | 20 | #include 21 | 22 | AggregatorDebug::AggregatorDebug( QObject* parent ) : 23 | QObject(parent) 24 | { 25 | 26 | } 27 | 28 | AggregatorDebug::~AggregatorDebug() 29 | { 30 | } 31 | 32 | void AggregatorDebug::onSpawnCreature( QString type ) 33 | { 34 | qDebug() << "spawn creature:" << type; 35 | if( type == "Gnome" ) 36 | { 37 | emit signalTriggerEvent( EventType::MIGRATION, QVariantMap() ); 38 | } 39 | else if( type == "Trader" ) 40 | { 41 | emit signalTriggerEvent( EventType::TRADER, QVariantMap() ); 42 | } 43 | else if( type == "Goblin" ) 44 | { 45 | QVariantMap args; 46 | args.insert( "Amount", 1 ); 47 | args.insert( "Type", "Goblin" ); 48 | emit signalTriggerEvent( EventType::INVASION, args ); 49 | } 50 | } 51 | 52 | 53 | void AggregatorDebug::onSetWindowSize( int width, int height ) 54 | { 55 | emit signalSetWindowSize( width, height ); 56 | } -------------------------------------------------------------------------------- /src/gui/aggregatordebug.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "../game/creature.h" 21 | #include "../game/eventmanager.h" 22 | 23 | 24 | #include 25 | 26 | class AggregatorDebug : public QObject 27 | { 28 | Q_OBJECT 29 | 30 | public: 31 | AggregatorDebug( QObject* parent = nullptr ); 32 | ~AggregatorDebug(); 33 | 34 | private: 35 | 36 | public slots: 37 | void onSpawnCreature( QString type ); 38 | void onSetWindowSize( int width, int height ); 39 | 40 | signals: 41 | void signalTriggerEvent( EventType type, QVariantMap args ); 42 | void signalSetWindowSize( int width, int height ); 43 | }; 44 | -------------------------------------------------------------------------------- /src/gui/aggregatorloadgame.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | #include 22 | 23 | struct GuiSaveInfo 24 | { 25 | QString name; 26 | QString folder; 27 | QString dir; 28 | QString version; 29 | QDateTime date; 30 | bool compatible = true; 31 | }; 32 | 33 | Q_DECLARE_METATYPE( GuiSaveInfo ) 34 | 35 | class AggregatorLoadGame : public QObject 36 | { 37 | Q_OBJECT 38 | 39 | public: 40 | AggregatorLoadGame( QObject* parent = nullptr ); 41 | ~AggregatorLoadGame(); 42 | 43 | private: 44 | QList m_kingdomList; 45 | QList m_gameList; 46 | 47 | public slots: 48 | void onRequestKingdoms(); 49 | void onRequestSaveGames( const QString path ); 50 | 51 | signals: 52 | void signalKingdoms( const QList& kingdoms ); 53 | void signalSaveGames( const QList& kingdoms ); 54 | }; 55 | -------------------------------------------------------------------------------- /src/gui/license.h.in: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // DO NOT ADD YOUR LICENSE MANUALLY IN THIS FILE 3 | // READ THE DOCUMENTATION ON HOW TO CONFIGURE CMAKE 4 | 5 | // Noesis license information 6 | // A trial license for development purposes can be acquired free of charge at https://www.noesisengine.com/trial/ 7 | static const char licenseName[] = "@NOESIS_LICENSE_NAME@"; 8 | static const char licenseKey[] = "@NOESIS_LICENSE_KEY@"; 9 | 10 | static_assert( sizeof( licenseName ) > 1 && sizeof( licenseKey ) > 1, "Please provide a working Noesis license or Noesis will stop working after a few minutes" ); 11 | -------------------------------------------------------------------------------- /src/gui/xaml/GameGui.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __GAMEGUI_H__ 20 | #define __GAMEGUI_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class GameGui final : public Noesis::UserControl 29 | { 30 | public: 31 | GameGui(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( GameGui, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/IngamePage.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __IngamePage_H__ 20 | #define __IngamePage_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class IngamePage final : public Noesis::UserControl 29 | { 30 | public: 31 | IngamePage(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | NS_DECLARE_REFLECTION( IngamePage, UserControl ) 39 | }; 40 | 41 | } // namespace IngnomiaGUI 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/gui/xaml/LoadGamePage.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __LoadGamePage_H__ 20 | #define __LoadGamePage_H__ 21 | 22 | #include 23 | #include 24 | 25 | namespace IngnomiaGUI 26 | { 27 | 28 | //////////////////////////////////////////////////////////////////////////////////////////////////// 29 | class LoadGamePage final : public Noesis::UserControl 30 | { 31 | public: 32 | LoadGamePage(); 33 | 34 | private: 35 | void InitializeComponent(); 36 | 37 | bool ConnectEvent( Noesis::BaseComponent* source, const char* event, const char* handler ) override; 38 | 39 | void onBack_Click( Noesis::BaseComponent* sender, const Noesis::RoutedEventArgs& args ); 40 | 41 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 42 | 43 | NS_DECLARE_REFLECTION( LoadGamePage, UserControl ) 44 | }; 45 | 46 | } // namespace IngnomiaGUI 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/gui/xaml/Main.xaml.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "Main.xaml.h" 19 | 20 | using namespace IngnomiaGUI; 21 | using namespace Noesis; 22 | 23 | //////////////////////////////////////////////////////////////////////////////////////////////////// 24 | Main::Main() 25 | { 26 | Loaded() += MakeDelegate( this, &Main::OnLoaded ); 27 | InitializeComponent(); 28 | } 29 | 30 | //////////////////////////////////////////////////////////////////////////////////////////////////// 31 | void Main::InitializeComponent() 32 | { 33 | GUI::LoadComponent( this, "Main.xaml" ); 34 | } 35 | 36 | bool Main::ConnectEvent( BaseComponent* source, const char* event, const char* handler ) 37 | { 38 | return false; 39 | } 40 | 41 | void Main::OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ) 42 | { 43 | } 44 | 45 | //////////////////////////////////////////////////////////////////////////////////////////////////// 46 | NS_BEGIN_COLD_REGION 47 | 48 | NS_IMPLEMENT_REFLECTION_( IngnomiaGUI::Main, "IngnomiaGUI.Main" ) 49 | -------------------------------------------------------------------------------- /src/gui/xaml/Main.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #ifndef __MAIN_H__ 19 | #define __MAIN_H__ 20 | 21 | #include 22 | 23 | namespace IngnomiaGUI 24 | { 25 | 26 | //////////////////////////////////////////////////////////////////////////////////////////////////// 27 | class Main final : public Noesis::UserControl 28 | { 29 | public: 30 | Main(); 31 | 32 | private: 33 | void InitializeComponent(); 34 | 35 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 36 | 37 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 38 | 39 | NS_DECLARE_REFLECTION( Main, UserControl ) 40 | }; 41 | 42 | } // namespace IngnomiaGUI 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/gui/xaml/MainMenu.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __MAINMENU_H__ 20 | #define __MAINMENU_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class MainMenu final : public Noesis::UserControl 29 | { 30 | public: 31 | MainMenu(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( MainMenu, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/MainPage.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __MainPage_H__ 20 | #define __MainPage_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class MainPage final : public Noesis::UserControl 29 | { 30 | public: 31 | MainPage(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | NS_DECLARE_REFLECTION( MainPage, UserControl ) 39 | }; 40 | 41 | } // namespace IngnomiaGUI 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/gui/xaml/NewGamePage.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __NewGamePage_H__ 20 | #define __NewGamePage_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class NewGamePage final : public Noesis::UserControl 29 | { 30 | public: 31 | NewGamePage(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( NewGamePage, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/SettingsPage.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __SettingsPage_H__ 20 | #define __SettingsPage_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class SettingsPage final : public Noesis::UserControl 29 | { 30 | public: 31 | SettingsPage(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( SettingsPage, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/TileInfo.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __TileInfo_H__ 20 | #define __TileInfo_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class TileInfo final : public Noesis::UserControl 29 | { 30 | public: 31 | TileInfo(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( TileInfo, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/WaitPage.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #ifndef __WaitPage_H__ 19 | #define __WaitPage_H__ 20 | 21 | #include 22 | 23 | namespace IngnomiaGUI 24 | { 25 | 26 | //////////////////////////////////////////////////////////////////////////////////////////////////// 27 | class WaitPage final : public Noesis::UserControl 28 | { 29 | public: 30 | WaitPage(); 31 | 32 | private: 33 | void InitializeComponent(); 34 | 35 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 36 | 37 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 38 | 39 | NS_DECLARE_REFLECTION( WaitPage, UserControl ) 40 | }; 41 | 42 | } // namespace IngnomiaGUI 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/gui/xaml/agriculture.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __AgricultureGui_H__ 20 | #define __AgricultureGui_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class Agriculture final : public Noesis::UserControl 29 | { 30 | public: 31 | Agriculture(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( Agriculture, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/converters.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #pragma once 20 | 21 | #include 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | class ColorToBrushConverter : public Noesis::BaseValueConverter 28 | { 29 | public: 30 | bool TryConvert( BaseComponent* value, const Noesis::Type* targetType, BaseComponent*, Noesis::Ptr& result ); 31 | 32 | private: 33 | NS_DECLARE_REFLECTION( ColorToBrushConverter, Noesis::BaseValueConverter ) 34 | }; 35 | 36 | class ColorToBrushConverterDark : public Noesis::BaseValueConverter 37 | { 38 | public: 39 | bool TryConvert( BaseComponent* value, const Noesis::Type* targetType, BaseComponent*, Noesis::Ptr& result ); 40 | 41 | private: 42 | NS_DECLARE_REFLECTION( ColorToBrushConverterDark, Noesis::BaseValueConverter ) 43 | }; 44 | 45 | 46 | } -------------------------------------------------------------------------------- /src/gui/xaml/creatureinfo.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #ifndef __CreatureInfo_H__ 19 | #define __CreatureInfo_H__ 20 | 21 | #include 22 | 23 | namespace IngnomiaGUI 24 | { 25 | 26 | //////////////////////////////////////////////////////////////////////////////////////////////////// 27 | class CreatureInfo final : public Noesis::UserControl 28 | { 29 | public: 30 | CreatureInfo(); 31 | 32 | private: 33 | void InitializeComponent(); 34 | 35 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 36 | 37 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 38 | 39 | NS_DECLARE_REFLECTION( CreatureInfo, UserControl ) 40 | }; 41 | 42 | } // namespace IngnomiaGUI 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/gui/xaml/debug.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #ifndef __DebugGui_H__ 19 | #define __DebugGui_H__ 20 | 21 | #include 22 | 23 | namespace IngnomiaGUI 24 | { 25 | 26 | //////////////////////////////////////////////////////////////////////////////////////////////////// 27 | class DebugGui final : public Noesis::UserControl 28 | { 29 | public: 30 | DebugGui(); 31 | 32 | private: 33 | void InitializeComponent(); 34 | 35 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 36 | 37 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 38 | 39 | NS_DECLARE_REFLECTION( DebugGui, UserControl ) 40 | }; 41 | 42 | } // namespace IngnomiaGUI 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/gui/xaml/debugproxy.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #include "debugproxy.h" 19 | 20 | #include "../../base/global.h" 21 | #include "../eventconnector.h" 22 | 23 | #include 24 | 25 | DebugProxy::DebugProxy( QObject* parent ) : 26 | QObject( parent ) 27 | { 28 | connect( this, &DebugProxy::signalSpawnCreature, Global::eventConnector->aggregatorDebug(), &AggregatorDebug::onSpawnCreature, Qt::QueuedConnection ); 29 | connect( this, &DebugProxy::signalSetWindowSize, Global::eventConnector->aggregatorDebug(), &AggregatorDebug::onSetWindowSize, Qt::QueuedConnection ); 30 | } 31 | 32 | void DebugProxy::setParent( IngnomiaGUI::DebugModel* parent ) 33 | { 34 | m_parent = parent; 35 | } 36 | 37 | void DebugProxy::spawnCreature( QString type ) 38 | { 39 | emit signalSpawnCreature( type ); 40 | } 41 | 42 | void DebugProxy::setWindowSize( int width, int height ) 43 | { 44 | emit signalSetWindowSize( width, height ); 45 | } 46 | -------------------------------------------------------------------------------- /src/gui/xaml/debugproxy.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "../aggregatordebug.h" 21 | #include "debugmodel.h" 22 | 23 | #include 24 | 25 | class DebugProxy : public QObject 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | DebugProxy( QObject* parent = nullptr ); 31 | void setParent( IngnomiaGUI::DebugModel* parent ); 32 | 33 | void spawnCreature( QString type ); 34 | 35 | void setWindowSize( int width, int height ); 36 | 37 | private: 38 | IngnomiaGUI::DebugModel* m_parent = nullptr; 39 | 40 | 41 | 42 | private slots: 43 | 44 | signals: 45 | void signalSpawnCreature( QString type ); 46 | void signalSetWindowSize( int width, int height ); 47 | }; 48 | -------------------------------------------------------------------------------- /src/gui/xaml/inventory.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | 22 | namespace IngnomiaGUI 23 | { 24 | 25 | //////////////////////////////////////////////////////////////////////////////////////////////////// 26 | class InventoryGui final : public Noesis::UserControl 27 | { 28 | public: 29 | InventoryGui(); 30 | 31 | private: 32 | void InitializeComponent(); 33 | 34 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 35 | 36 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 37 | 38 | NS_DECLARE_REFLECTION( InventoryGui, UserControl ) 39 | }; 40 | 41 | } // namespace IngnomiaGUI 42 | 43 | -------------------------------------------------------------------------------- /src/gui/xaml/inventoryproxy.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "../aggregatorinventory.h" 21 | #include "inventorymodel.h" 22 | 23 | #include 24 | 25 | class InventoryProxy : public QObject 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | InventoryProxy( QObject* parent = nullptr ); 31 | void setParent( IngnomiaGUI::InventoryModel* parent ); 32 | 33 | void requestCategories(); 34 | 35 | void setActive( bool active, const GuiWatchedItem& gwi ); 36 | 37 | private: 38 | IngnomiaGUI::InventoryModel* m_parent = nullptr; 39 | 40 | 41 | 42 | private slots: 43 | void onCategoryUpdate( const QList& categories ); 44 | 45 | signals: 46 | void signalRequestCategories(); 47 | void signalSetActive( bool active, const GuiWatchedItem& gwi ); 48 | }; 49 | -------------------------------------------------------------------------------- /src/gui/xaml/loadgameproxy.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "../aggregatorloadgame.h" 21 | #include "LoadGameModel.h" 22 | 23 | #include 24 | 25 | class LoadGameProxy : public QObject 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | LoadGameProxy( QObject* parent = nullptr ); 31 | void setParent( IngnomiaGUI::LoadGameModel* parent ); 32 | 33 | void requestKingdoms(); 34 | void requestSaveGames( const QString path ); 35 | 36 | private: 37 | IngnomiaGUI::LoadGameModel* m_parent = nullptr; 38 | 39 | private slots: 40 | void onKingdoms( const QList& kingdoms ); 41 | void onSaveGames( const QList& saveGames ); 42 | 43 | signals: 44 | void signalRequestKingdoms(); 45 | void signalRequestSaveGames( const QString path ); 46 | }; 47 | -------------------------------------------------------------------------------- /src/gui/xaml/military.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include 21 | 22 | namespace IngnomiaGUI 23 | { 24 | 25 | //////////////////////////////////////////////////////////////////////////////////////////////////// 26 | class MilitaryGui final : public Noesis::UserControl 27 | { 28 | public: 29 | MilitaryGui(); 30 | 31 | private: 32 | void InitializeComponent(); 33 | 34 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 35 | 36 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 37 | 38 | NS_DECLARE_REFLECTION( MilitaryGui, UserControl ) 39 | }; 40 | 41 | } // namespace IngnomiaGUI 42 | 43 | -------------------------------------------------------------------------------- /src/gui/xaml/neighbors.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #ifndef __NeighborsGui_H__ 19 | #define __NeighborsGui_H__ 20 | 21 | #include 22 | 23 | namespace IngnomiaGUI 24 | { 25 | 26 | //////////////////////////////////////////////////////////////////////////////////////////////////// 27 | class NeighborsGui final : public Noesis::UserControl 28 | { 29 | public: 30 | NeighborsGui(); 31 | 32 | private: 33 | void InitializeComponent(); 34 | 35 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 36 | 37 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 38 | 39 | NS_DECLARE_REFLECTION( NeighborsGui, UserControl ) 40 | }; 41 | 42 | } // namespace IngnomiaGUI 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/gui/xaml/selection.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #ifndef __SelectionGui_H__ 19 | #define __SelectionGui_H__ 20 | 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class SelectionGui final : public Noesis::UserControl 29 | { 30 | public: 31 | SelectionGui(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( SelectionGui, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif -------------------------------------------------------------------------------- /src/gui/xaml/selectionproxy.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "selectionmodel.h" 21 | 22 | #include 23 | 24 | class SelectionProxy : public QObject 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | SelectionProxy( QObject* parent = nullptr ); 30 | void setParent( IngnomiaGUI::SelectionModel* parent ); 31 | 32 | 33 | private: 34 | IngnomiaGUI::SelectionModel* m_parent = nullptr; 35 | 36 | 37 | 38 | private slots: 39 | void onAction( QString action ); 40 | void onCursor( QString pos ); 41 | void onFirstClick( QString pos ); 42 | void onSize( QString pos ); 43 | 44 | signals: 45 | }; 46 | -------------------------------------------------------------------------------- /src/gui/xaml/stockpilegui.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __StockpileGui_H__ 20 | #define __StockpileGui_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class StockpileGui final : public Noesis::UserControl 29 | { 30 | public: 31 | StockpileGui(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( StockpileGui, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/gui/xaml/workshopgui.xaml.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | 19 | #ifndef __WorkshopGui_H__ 20 | #define __WorkshopGui_H__ 21 | 22 | #include 23 | 24 | namespace IngnomiaGUI 25 | { 26 | 27 | //////////////////////////////////////////////////////////////////////////////////////////////////// 28 | class WorkshopGui final : public Noesis::UserControl 29 | { 30 | public: 31 | WorkshopGui(); 32 | 33 | private: 34 | void InitializeComponent(); 35 | 36 | bool ConnectEvent( BaseComponent* source, const char* event, const char* handler ) override; 37 | 38 | void OnLoaded( Noesis::BaseComponent*, const Noesis::RoutedEventArgs& ); 39 | 40 | NS_DECLARE_REFLECTION( WorkshopGui, UserControl ) 41 | }; 42 | 43 | } // namespace IngnomiaGUI 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/pch.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Ingnomia https://github.com/rschurade/Ingnomia 3 | Copyright (C) 2017-2020 Ralph Schurade, Ingnomia Team 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as 7 | published by the Free Software Foundation, either version 3 of the 8 | License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | */ 18 | #pragma once 19 | 20 | #include "base/global.h" 21 | 22 | #include 23 | 24 | #include 25 | #include 26 | -------------------------------------------------------------------------------- /src/version.h.in: -------------------------------------------------------------------------------- 1 | // DO NOT CHANGE MANUALLY 2 | // READ THE DOCUMENTATION ON HOW TO CONFIGURE CMAKE 3 | 4 | #define PROJECT_NAME "@PROJECT_NAME@" 5 | #define PROJECT_VERSION "@PROJECT_VERSION@" 6 | #define PROJECT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ 7 | #define PROJECT_VERSION_MINOR @PROJECT_VERSION_MINOR@ 8 | #define PROJECT_VERSION_PATCH @PROJECT_VERSION_PATCH@ 9 | #define PROJECT_VERSION_TWEAK @PROJECT_VERSION_TWEAK@ 10 | #define PROJECT_VERSION_COMMA @PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, @PROJECT_VERSION_TWEAK@ 11 | #define PROJECT_DESCRIPTION "@PROJECT_DESCRIPTION@" 12 | #define PROJECT_HOMEPAGE_URL "@PROJECT_HOMEPAGE_URL@" 13 | #cmakedefine GIT_REPO "@GIT_REPO@" 14 | #cmakedefine GIT_REF "@GIT_REF@" 15 | #cmakedefine GIT_SHA "@GIT_SHA@" 16 | #cmakedefine BUILD_ID "@BUILD_ID@" 17 | #cmakedefine BUGSPLAT_DB "@BUGSPLAT_DB@" 18 | -------------------------------------------------------------------------------- /windows/Ingnomia.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | true 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /windows/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Ingnomia.rc 4 | // 5 | #define IDI_ICON1 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | --------------------------------------------------------------------------------