这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
253 commits
Select commit Hold shift + click to select a range
ff3e4ad
nyan-convert: More sanity checks and fqon setting.
heinezen Sep 2, 2019
0f5253f
convert: Load nyan API.
heinezen Sep 4, 2019
2b1de57
convert: CMakeLists adaption.
heinezen Sep 21, 2019
ccced44
convert: Converter pre-processor sceleton.
heinezen Sep 26, 2019
a5c6a42
convert: Genie conversion formats.
heinezen Oct 8, 2019
a2e7274
convert: Lookup dicts for nyan object names.
heinezen Oct 9, 2019
5f5cf4e
convert: Handle special unit lines.
heinezen Oct 11, 2019
631f656
convert: Processor storage objects.
heinezen Oct 13, 2019
ace8b77
convert: Fix older data reading bug.
heinezen Oct 14, 2019
95f853a
convert: Auxiliary support functions.
heinezen Oct 16, 2019
a79b54e
convert: Rename Exportable class to GenieStructure.
heinezen Oct 17, 2019
33f2fdd
convert: define storage types for GenieStructure data format.
heinezen Oct 18, 2019
6fde505
convert: ArrayMember for storing values.
heinezen Oct 20, 2019
314fd77
convert: New Reader structure.
heinezen Oct 21, 2019
deeff5a
convert: Data pre-processor.
heinezen Oct 23, 2019
575c541
convert: Process unit lines.
heinezen Oct 25, 2019
24416a0
convert: Fill converter groups.
heinezen Oct 28, 2019
c1b16fd
convert: Link creatables.
heinezen Nov 3, 2019
b85336c
nyan: implement nyan's "inf" value.
heinezen Nov 7, 2019
b73a8e0
convert: Remove self-updating logic from conversion objects.
heinezen Nov 7, 2019
b664d3d
convert: API pre-loading.
heinezen Nov 11, 2019
347c78e
convert: Load engine.aux members.
heinezen Dec 20, 2019
79ebd48
convert: Load engine.effect members.
heinezen Dec 22, 2019
7244519
convert: Load engine.resistance members.
heinezen Dec 22, 2019
586322d
convert: Load engine.modifier members.
heinezen Dec 22, 2019
8b79f04
nyan: Implement ordered set for converter.
heinezen Dec 22, 2019
431adde
convert: Expected pointers for resolving object dependencies.
heinezen Dec 25, 2019
f4f21cb
convert: Bitfield value members.
heinezen Dec 31, 2019
6af42eb
convert: Assignment for inherited nyan members.
heinezen Jan 2, 2020
0893c69
convert: nyan subprocessor preparation.
heinezen Jan 2, 2020
14d8f67
convert: 'Faith' attribute added to AoC.
heinezen Jan 7, 2020
24ab18e
convert: Built-in game entity types.
heinezen Jan 9, 2020
833e535
convert: Conversion for selected abilities.
heinezen Jan 12, 2020
f8a56ac
convert: Move CombinedSprite definition and add mmber creation method…
heinezen Jan 14, 2020
eb04f56
convert: Resolve object and media dependencies.
heinezen Jan 14, 2020
1afe432
convert: Bunch of codestyle fixes.
heinezen Jan 15, 2020
266b6d4
convert: Move data definition to dedicated 'export' module.
heinezen Jan 18, 2020
615ff82
convert: Set fqon ob nyan objects in nyan file.
heinezen Jan 21, 2020
9b01ba5
convert: Modpack definition file.
heinezen Jan 22, 2020
d0d5171
convert: Modpack container.
heinezen Jan 22, 2020
27d4f1e
convert: Organize nyan objects in nyan files.
heinezen Jan 22, 2020
6860f5d
convert: Modpack export.
heinezen Jan 23, 2020
3123322
convert: Find desired file location of sprite pointer.
heinezen Jan 23, 2020
8e4f4d7
convert: Round floats to 6 decimal places.
heinezen Jan 24, 2020
a95e317
convert: Media export requests.
heinezen Jan 27, 2020
438451c
convert: New version detection.
heinezen Jan 27, 2020
2682d56
export: dotsprite and dotterrain
brisvag Nov 20, 2019
0da77fe
convert: Every ability noe has its own method in a common sub-processor.
heinezen Feb 7, 2020
eeecd1c
convert: Replace set() with OrderedSet in nyan_structs.
heinezen Feb 7, 2020
8a3b909
convert: Special string creation for nyan structs.
heinezen Feb 7, 2020
5f9d76c
convert: Change file extension of modpack definition to .nfo.
heinezen Feb 8, 2020
943c089
convert: API v0.3.0 changes.
heinezen Feb 8, 2020
3e3feeb
convert: Diffing for ConverterObject.
heinezen Feb 9, 2020
05fdf00
convert: Quick id reference for units in unit lines.
heinezen Feb 9, 2020
df163b5
convert: Create export requests for sprites.
heinezen Feb 12, 2020
fa23f1b
convert: Graphics export logic.
heinezen Feb 14, 2020
7bc88e4
convert: New version detection.
heinezen Feb 15, 2020
244b033
convert: Graphics (game entity) conversion.
heinezen Feb 16, 2020
22d7f2d
util: Observer pattern.
heinezen Feb 19, 2020
c3eb67d
convert: Use libpng for image output.
heinezen Mar 4, 2020
f41399e
convert: Sound media export requests.
heinezen Mar 10, 2020
861a476
convert: Condition literals for death.
heinezen Mar 11, 2020
b7e64a9
convert: More consistent naming for some .dat values.
heinezen Mar 11, 2020
5a13c6e
convert: Fix up GenieVillagersGroups.
heinezen Mar 11, 2020
925a7a0
convert: CombinedSound for referencing sound files.
heinezen Mar 11, 2020
f5e706d
util: Inherited member's get_name() behaves identical to normal membe…
heinezen Mar 11, 2020
daf4025
convert: Pregenerate resource types food, wood, stone and gold.
heinezen Mar 11, 2020
6295fcf
convert: Let subprocessor handle building lines and add Named and Cre…
heinezen Mar 11, 2020
326b2ac
convert: Create the CreatableGameEntity object for creatable units an…
heinezen Mar 11, 2020
3672688
convert: Convert building lines.
heinezen Mar 11, 2020
d0d95df
convert: Raw API object member creation now handles paths for sounds.
heinezen Mar 11, 2020
1c769d3
convert: Export sounds.
heinezen Mar 12, 2020
8c81f96
convert: UseContingent and ProvideContingent abilities.
heinezen Mar 14, 2020
e5c8d57
convert: Use __slots__ for ValueMember instances.
heinezen Mar 14, 2020
30050b1
convert: Tech objects creation.
heinezen Mar 16, 2020
3ecea92
convert: Research ability.
heinezen Mar 16, 2020
8ba735c
convert: Hitbox ability.
heinezen Mar 17, 2020
bc85fe0
convert: ProductionQueue ability.
heinezen Mar 17, 2020
87db7e4
convert: ShootProjectile ability.
heinezen Mar 19, 2020
c532b6c
convert: Projectile ability.
heinezen Mar 19, 2020
1b300cd
convert: Projectile creation.
heinezen Mar 19, 2020
0d6b224
convert: Move Projectile creation from auxiliary to main processor fo…
heinezen Mar 20, 2020
4613001
convert: Give unit and building groups common super class.
heinezen Mar 20, 2020
7810e70
convert: Move API object pregeneration to subprocessor.
heinezen Mar 20, 2020
ac1d6cc
convert: Harvestable and DropSite ability.
heinezen Mar 22, 2020
c73ce58
convert: DropResources ability.
heinezen Mar 22, 2020
7123818
convert: Ambient and resource units.
heinezen Mar 22, 2020
d7bac41
convert: Gather ability.
heinezen Mar 24, 2020
c0bc120
convert: Restock ability.
heinezen Mar 25, 2020
727f51c
convert: Herd and Herdable abilities.
heinezen Mar 26, 2020
8b73395
convert: RallyPoint ability.
heinezen Mar 27, 2020
3741bbd
convert: Storage (partly), RemoveStorage and CollectStorage abilities.
heinezen Mar 27, 2020
3ac06c1
convert: TransferStorage, EnterContainer, ExitContainer abilities.
heinezen Mar 27, 2020
0e4c172
convert: OwnStorage placement mode.
heinezen Mar 28, 2020
ae2587d
convert: Passable and Selectable.
heinezen Mar 29, 2020
4f272d3
convert: Resistance ability.
heinezen Mar 29, 2020
26e5181
convert: Add some info messages.
heinezen Mar 29, 2020
2150061
convert: Terrain objects.
heinezen Mar 29, 2020
55267a8
convert: Terrain types and Terrain abilities.
heinezen Mar 29, 2020
0b23292
convert: Constructable and AttributeChangeTracker abilities.
heinezen Mar 29, 2020
77ab5c6
convert: Attack ability.
heinezen Mar 30, 2020
674451d
convert: Animations of Gather and Restock.
heinezen Apr 3, 2020
462fdf0
convert: Allow --no-media option in new exporter.
heinezen Apr 3, 2020
fe792fe
convert: Move effect and resistance creation to own subprocessor.
heinezen Apr 3, 2020
0705fa6
convert: Convert and Heal effects.
heinezen Apr 3, 2020
eb366b2
convert: Despawn and Death abilities.
heinezen Apr 5, 2020
22b8f1e
convert: Move for projectiles.
heinezen Apr 6, 2020
0772d11
convert: Add animation and sound conversion to a bunch of abilities.
heinezen Apr 6, 2020
0736b75
convert: NyanPatchMember class.
heinezen Apr 8, 2020
fb9d975
convert: Idle ability upgrades.
heinezen Apr 8, 2020
5b95d32
convert: Generate containers from arrays.
heinezen Apr 10, 2020
0cac123
convert: Generate patches for unit upgrades.
heinezen Apr 10, 2020
a64ea36
convert: Attribute upgrade effects.
heinezen Apr 10, 2020
019ffe3
convert: New skeleton methods for missing abilities and resource modi…
heinezen Apr 13, 2020
4cb0550
convert: RegenerateAttribute avility and Faith attribute.
heinezen Apr 13, 2020
31e8179
convert: Add repairing effects.
heinezen Apr 13, 2020
5f7c1f7
convert: Add construction effects.
heinezen Apr 13, 2020
50520df
convert: Fix a wrong import reference.
heinezen Apr 13, 2020
076dfbe
convert: Attack ability for primary projectiles and upgrade effects f…
heinezen Apr 14, 2020
240c5e5
convert: Many new resource tech effects.
heinezen Apr 14, 2020
e2adc2c
convert: Detect building upgrades from age ups.
heinezen Apr 14, 2020
62a337c
convert: Store building upgrades with game entityfiles.
heinezen Apr 14, 2020
eb0b956
convert: Remove some TODOs and add modifier subprocessor.
heinezen Apr 16, 2020
2624c82
convert: Integrate some of the API v0.3.0 changes.
heinezen Apr 16, 2020
3783ebe
convert: Create Civilization objects.
heinezen Apr 16, 2020
ad681e2
convert: Store unique creatables and researchables with Civ object.
heinezen Apr 16, 2020
e08fa39
convert: Starting resources for civs.
heinezen Apr 17, 2020
69f881d
convert: Setup unique civs and techs.
heinezen Apr 17, 2020
daa6cb0
convert: Setup civ tech tree.
heinezen Apr 17, 2020
6eed492
convert: Civ team bonus and graphics set (partly).
heinezen Apr 18, 2020
add356d
convert: Clean up some TODOs.
heinezen Apr 18, 2020
896313a
convert: Delete ability and DeadState.
heinezen Apr 18, 2020
531e77a
convert: Replace and Place modes for buildings.
heinezen Apr 18, 2020
f3a9d8c
convert: Trade and TradePost abilities.
heinezen Apr 18, 2020
4d3150b
convert: Damage graphics.
heinezen Apr 18, 2020
06f3d75
convert: Resistances for Heal, Construct, Convert, Repair effects.
heinezen Apr 18, 2020
f1fa2e3
convert: Second projectile attack.
heinezen Apr 18, 2020
8a9257a
convert: SWGB parser.
heinezen Apr 19, 2020
f1ee055
convert: DE2 parser.
heinezen Apr 20, 2020
035db60
convert: DE1 parser.
heinezen Apr 20, 2020
b9238a7
buildsystem: Fix buildsystem for Python.
heinezen Apr 20, 2020
77d6258
convert: Small fixes and Progress objects added to Restock and Storage.
heinezen Apr 22, 2020
42fdac4
convert: Effect/Resistance upgrades when the left or right member is …
heinezen Apr 22, 2020
4ead449
convert: TerrainAmbient, elevation attack modifiers, gather rate modi…
heinezen Apr 23, 2020
9c9864f
convert: Use ConverterObjectGroup for encapsuling civ team bonus and …
heinezen Apr 23, 2020
0de403e
convert: Patch civ boni into techs.
heinezen Apr 23, 2020
28b9cf7
convert: Add several tech upgrade effects.
heinezen Apr 23, 2020
286f4f9
convert: Even more tech upgrade effects.
heinezen Apr 24, 2020
7d6dcb5
convert: Upgrade damage graphics.
heinezen Apr 24, 2020
da429a3
convert: Variant groups.
heinezen Apr 24, 2020
f3d02dc
convert: Conditions for techs ad creatables.
heinezen Apr 26, 2020
e86f394
convert: Construction animation overrides.
heinezen Apr 26, 2020
042f49d
convert: Separate farm construction from normal building construction.
heinezen Apr 26, 2020
181a99b
convert: Integrate new resource storage ability.
heinezen Apr 26, 2020
296a228
convert: Construction state change.
heinezen Apr 27, 2020
4456995
convert: Use cmake standard PNG library search.
heinezen Apr 27, 2020
da4c4e0
convert: Fix building upgrades.
heinezen Apr 27, 2020
3f0292e
convert: More Progress objects.
heinezen Apr 27, 2020
62a04ec
convert: Formation ability.
heinezen Apr 27, 2020
7198bf3
convert: GameEntityStance ability.
heinezen Apr 27, 2020
9341534
convert: ExchangeResources ability.
heinezen Apr 29, 2020
bb8dc9b
convert: Find more TODOs.
heinezen Apr 29, 2020
17ba12f
convert: Repair costs.
heinezen Apr 29, 2020
d9dd607
convert: Move language file readers to subfolder.
heinezen Apr 29, 2020
61bfeeb
convert: Read strings from DLL.
heinezen Apr 30, 2020
06f62f9
datfile: Newest DE2 attributes.
heinezen Apr 30, 2020
0025cf2
convert: Upgrade names of units.
heinezen May 1, 2020
0b1d2db
convert: Importing nyan objects.
heinezen May 2, 2020
0a12cd8
convert: Write PNG to buffer and use our Python fslike interface for …
heinezen May 4, 2020
fecdf2e
convert: Use __slots__ for basic objects and faster execution time.
heinezen May 4, 2020
dee1725
read: Introduce SKIP read mode for obsolete attributes.
heinezen May 5, 2020
ac39e64
buildsystem: *Breaks* engine but let build run through with new reader.
heinezen May 6, 2020
e772535
export: .sprite files.
heinezen May 7, 2020
fd18868
doc: Document converter code architecture.
heinezen May 8, 2020
ed75f65
convert: New condition system using logic elements.
heinezen May 17, 2020
e3f8841
convert: Push logic for complex raw members.
heinezen May 20, 2020
5481418
convert: Find civ graphics set during ability assignment.
heinezen May 20, 2020
693a0ba
convert: Let internal nyan names depend on game version.
heinezen May 24, 2020
5749987
convert: Detect Rise of Rome.
heinezen May 24, 2020
d17e024
convert: RoR pre-processor.
heinezen May 24, 2020
fc8fbfd
convert: ConverterObjectGroup for game entities in RoR.
heinezen May 24, 2020
c95745f
convert: Rise of Rome converter group creation.
heinezen May 25, 2020
7980bff
convert: Rise of Rome linking.
heinezen May 25, 2020
35a80c5
convert: Rise of Rome pregenerated API objects (without terrain types).
heinezen May 25, 2020
035673b
convert: Rise of Rome nyan object creation tests.
heinezen May 25, 2020
16637fe
convert: Reimplementation of some ability assignments for Rise of Rome.
heinezen May 25, 2020
5b0f25b
convert: Rise of Rome modpack export.
heinezen May 25, 2020
c090617
convert: Rise of Rome tech objects.
heinezen May 26, 2020
62475bd
convert: Rise of Rome tech fixes for unit upgrades.
heinezen May 26, 2020
fafcffa
convert: Rise of Rome civs.
heinezen May 26, 2020
3250e8e
convert: Rose of Rome terrain ambience.
heinezen May 26, 2020
00301d0
refactor: Rename "expected pointer" to "forward reference".
heinezen May 29, 2020
bd779ee
convert: Prepare converter for SWGB.
heinezen May 31, 2020
d938de8
concert: SWGB nyan name lookups.
heinezen May 31, 2020
4ba5b3f
convert: SWGB unit lines.
heinezen Jun 1, 2020
dd7eef1
convert: SWGB tech groups.
heinezen Jun 2, 2020
af0eb94
convert: SWGB unit upgrades.
heinezen Jun 2, 2020
191f7db
convert: Rewrite garrison linker to be more precise.
heinezen Jun 2, 2020
c1647d6
convert: SWGB garrisons.
heinezen Jun 2, 2020
19327d5
convert: Link repairables with processor instead of checking their cl…
heinezen Jun 2, 2020
c43387b
convert: SWGB pregenerated objects.
heinezen Jun 2, 2020
c36b191
export: SWGB minimal export.
heinezen Jun 2, 2020
3413c32
convert: SWGB terrains.
heinezen Jun 3, 2020
a60a6d4
convert: SWGB line abilities.
heinezen Jun 4, 2020
e8b1480
convert: SWGB techs.
heinezen Jun 4, 2020
9fdf0a7
convert: SWGB civ setups.
heinezen Jun 4, 2020
ec6a81a
png: Optimize compression.
heinezen Jun 13, 2020
ca5e762
png: Document compression optimization methods.
heinezen Jun 15, 2020
ad2e47b
read: Read drop site IDs as array.
heinezen Jun 15, 2020
6bb495f
convert: DE2 pre-processor.
heinezen Jun 15, 2020
8f94686
convert: DE2 API-like object creation.
heinezen Jun 15, 2020
d63a965
convert: DE2 unit line abilities.
heinezen Jun 16, 2020
6f477df
convert: DE2 building lines and ambient/variant groups.
heinezen Jun 16, 2020
268970f
convert: DE2 tech groups.
heinezen Jun 16, 2020
cb516c2
convert: Allow checking for civ-specific unit line properties.
heinezen Jun 16, 2020
b01d6ec
convert: Replace deprecated get_member() calls with __getattr__().
heinezen Jun 16, 2020
ccce522
convert: DE2 civ groups and terrain data.
heinezen Jun 17, 2020
ed6309e
convert: Enable conversion with multiple palettes.
heinezen Jun 18, 2020
c755526
refactor: Set pylint configurations.
heinezen Jun 24, 2020
62dd114
refactor: Switch to relative imports.
heinezen Jun 26, 2020
3a9bc4f
media: Encode player color palette index in G channel.
heinezen Jun 27, 2020
62c1f4a
media: Terrain tiles merge.
heinezen Jun 29, 2020
b279020
media: Terrain tiles transform
heinezen Jun 30, 2020
8664303
doc: Converter workflow description.
heinezen Jul 27, 2020
0459010
convert: Reduce memory usage by hardcoding ValueMember type.
heinezen Jul 31, 2020
789e113
convert: Remove leftover doc strings for alternative upgrade function.
heinezen Aug 7, 2020
66c85c1
refactor: Move media value objects.
heinezen Aug 20, 2020
1b4985a
refactor: Move singlefile converter.
heinezen Aug 20, 2020
7a8560a
refactor: Cleanup unused functions in main.py.
heinezen Aug 20, 2020
f310415
refactor: Move subtexture metadata dict creation inline.
heinezen Aug 20, 2020
fa58148
refactor: Move nyan, opus and png services to 'service' subfolder.
heinezen Aug 20, 2020
d9c8517
refactor: Move langfile read/store implementation.
heinezen Aug 20, 2020
72918bb
refactor: Move gamedata definitions to 'datfile' subfolder.
heinezen Aug 20, 2020
a27d39a
refactor: Move reader dataformat objects to 'value_object' subfolder.
heinezen Aug 20, 2020
cbdcaaa
refactor: Move deprecated modules to dedicated folder.
heinezen Aug 20, 2020
f7126f1
refactor: Move export formats to 'entity_object' subfolder.
heinezen Aug 20, 2020
6652a59
refactor: Move internal nyan names to 'value_object' subfolder.
heinezen Aug 20, 2020
3b736ac
refactor: Move ForwardRef implementation to 'value_object' subfolder.
heinezen Aug 20, 2020
874e35a
refactor: Rename SWGB converter object modules.
heinezen Aug 20, 2020
a631553
refactor: Move converter object (groups) to 'entity_object' subfolder.
heinezen Aug 20, 2020
8156323
refactor: Move sourcedir acquisitions and game version detection to '…
heinezen Aug 21, 2020
aa6f51a
refactor: Move mounting services to 'sevice' subfolder.
heinezen Aug 21, 2020
816b4b4
refactor: Move services out of main.py and driver.py.
heinezen Aug 21, 2020
5a3424b
refactor: Move texture packing into 'service' and 'entity_object' sub…
heinezen Aug 21, 2020
7bdc9f8
refactor: Rename 'sourcedir' folder to 'subtool'.
heinezen Aug 21, 2020
147b473
refactor: Organize all modules into subcategories 'init', 'read', 'co…
heinezen Aug 21, 2020
607117b
refactor: Fix copyright years and missing docstrings.
heinezen Aug 21, 2020
708eac4
doc: Fix convert typos and add missing diagram.
heinezen Aug 21, 2020
63a86b4
convert: Remove slp_converter_pool.py. Replaced by Cython implementat…
heinezen Aug 21, 2020
1e593f3
gamestate: Correct formatting in game_spec.cpp
heinezen Aug 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/build_instructions/arch_linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

This command should provide required packages for Arch Linux installation:

`sudo pacman -S --needed eigen python python-jinja python-pillow python-numpy python-pygments cython libepoxy libogg libpng ttf-dejavu freetype2 fontconfig harfbuzz cmake sdl2 sdl2_image opusfile opus python-pylint qt5-declarative qt5-quickcontrols`
`sudo pacman -S --needed eigen python python-jinja python-pillow python-numpy python-pygments cython libepoxy libogg libpng ttf-dejavu freetype2 fontconfig harfbuzz cmake sdl2 sdl2_image opusfile opus python-pylint python-toml qt5-declarative qt5-quickcontrols`

If you don't have a compiler installed, you can select between these commands to install it:
- `sudo pacman -S --needed gcc`
Expand Down
2 changes: 1 addition & 1 deletion doc/build_instructions/debian.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Prerequisite steps for Debian Sid users

- `sudo apt-get update`
- `sudo apt-get install cmake cython3 libeigen3-dev libepoxy-dev libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsdl2-image-dev python3-dev python3-jinja2 python3-numpy python3-pil python3-pip python3-pygments qml-module-qtquick-controls qtdeclarative5-dev`
- `sudo apt-get install cmake cython3 libeigen3-dev libepoxy-dev libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsdl2-image-dev python3-dev python3-jinja2 python3-numpy python3-pil python3-pip python3-pygments python3-toml qml-module-qtquick-controls qtdeclarative5-dev`

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies.
2 changes: 1 addition & 1 deletion doc/build_instructions/fedora.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

Run the following command:

`sudo dnf install clang cmake eigen3-devel fontconfig-devel gcc-c harfbuzz-devel libepoxy-devel libogg-devel libopusenc-devel libpng-devel opusfile-devel python3-Cython python3-devel python3-jinja2 python3-numpy python3-pillow python3-pygments SDL2-devel SDL2_image-devel++ qt5-qtdeclarative-devel qt5-qtquickcontrols`
`sudo dnf install clang cmake eigen3-devel fontconfig-devel gcc-c harfbuzz-devel libepoxy-devel libogg-devel libopusenc-devel libpng-devel opusfile-devel python3-Cython python3-devel python3-jinja2 python3-numpy python3-pillow python3-pygments python3-toml SDL2-devel SDL2_image-devel++ qt5-qtdeclarative-devel qt5-qtquickcontrols`

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies.
2 changes: 1 addition & 1 deletion doc/build_instructions/freebsd.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This command should provide required packages for FreeBSD installation:

`sudo pkg install cmake cython eigen3 harfbuzz opus-tools opusfile png py-numpy py-pillow py-pygments pylint python qt5 sdl2 sdl2_image`
`sudo pkg install cmake cython eigen3 harfbuzz opus-tools opusfile png py-numpy py-pillow py-pygments py-toml pylint python qt5 sdl2 sdl2_image`

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies.

Expand Down
2 changes: 1 addition & 1 deletion doc/build_instructions/opensuse_13.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ if all packages can be installed.

- `zypper addrepo http://download.opensuse.org/repositories/devel:languages:python3/openSUSE_13.2/devel:languages:python3.repo`
- `zypper refresh`
- `zypper install --no-recommends cmake doxygen eigen3-devel fontconfig-devel gcc49-c graphviz++ harfbuzz-devel libSDL2-devel libSDL2_image-devel libepoxy-devel libfreetype6 libogg-devel libopus-devel libpng-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols opusfile-devel pkgconfig python3-Cython python3-Jinja2 python3-Pillow python3-Pygments python3-devel`
- `zypper install --no-recommends cmake doxygen eigen3-devel fontconfig-devel gcc49-c graphviz++ harfbuzz-devel libSDL2-devel libSDL2_image-devel libepoxy-devel libfreetype6 libogg-devel libopus-devel libpng-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols opusfile-devel pkgconfig python3-Cython python3-Jinja2 python3-Pillow python3-Pygments python3-toml python3-devel`

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies.
2 changes: 1 addition & 1 deletion doc/build_instructions/opensuse_tumbleweed.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Prerequisite steps for openSUSE users (openSUSE Tumbleweed)

- `zypper install --no-recommends cmake doxygen eigen3-devel fontconfig-devel gcc-c graphviz++ harfbuzz-devel libSDL2-devel libSDL2_image-devel libepoxy-devel libfreetype6 libogg-devel libopus-devel libpng-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols opusfile-devel pkgconfig python3-Cython python3-Jinja2 python3-Pillow python3-Pygments python3-devel`
- `zypper install --no-recommends cmake doxygen eigen3-devel fontconfig-devel gcc-c graphviz++ harfbuzz-devel libSDL2-devel libSDL2_image-devel libepoxy-devel libfreetype6 libogg-devel libopus-devel libpng-devel libqt5-qtdeclarative-devel libqt5-qtquickcontrols opusfile-devel pkgconfig python3-Cython python3-Jinja2 python3-Pillow python3-Pygments python3-toml python3-devel`

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies.
2 changes: 1 addition & 1 deletion doc/build_instructions/os_x_10.14_mojave.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ brew install qt5
brew install -cc=clang llvm@8
export PATH="/usr/local/opt/llvm@8/bin:$PATH:/usr/local/lib:/usr/local/opt/llvm/bin"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/lib"
pip3 install pygments cython numpy pillow pyreadline jinja2
pip3 install pygments cython numpy pillow pyreadline toml jinja2
```

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies:
Expand Down
2 changes: 1 addition & 1 deletion doc/build_instructions/ubuntu.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Prerequisite steps for Ubuntu users (Ubuntu 18.04)

- `sudo apt-get update`
- `sudo apt-get install cmake cython3 libeigen3-dev libepoxy-dev libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsdl2-image-dev python3-dev python3-jinja2 python3-numpy python3-pil python3-pip python3-pygments qml-module-qtquick-controls qtdeclarative5-dev`
- `sudo apt-get install cmake cython3 libeigen3-dev libepoxy-dev libfontconfig1-dev libfreetype6-dev libharfbuzz-dev libogg-dev libopus-dev libopusfile-dev libpng-dev libsdl2-dev libsdl2-image-dev python3-dev python3-jinja2 python3-numpy python3-pil python3-pip python3-pygments python3-toml qml-module-qtquick-controls qtdeclarative5-dev`

You will also need [nyan](https://github.com/SFTtech/nyan/blob/master/doc/building.md) and its dependencies.
1 change: 1 addition & 0 deletions doc/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ Dependency list:
C cmake >=3.16
A numpy
A python imaging library (PIL) -> pillow
RA toml
CR opengl >=3.3
CR libepoxy
CR libpng
Expand Down
File renamed without changes.
59 changes: 59 additions & 0 deletions doc/code/converter/architecture_overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Converter Architecture Overview

This document describes the code architecture of the openage converter module.

## Design Principles

Our converter uses hierarchical multi-layered object-oriented code principles similar to those found in
[Domain-Driven Design](https://en.wikipedia.org/wiki/Domain-driven_design) and [WAM](http://wam-ansatz.de/).
The main focus of using these principles was to provide **readability** and **maintainability** as well
as enabling us to quickly integrate extensions that support other games and game versions than the original
Age of Empires 2 release.

A hierarchical structure is achieved by designing objects as part of one of the 5 domains described below.
Every domain defines a category of complexity. The idea is that every object can only access functionality
from domains with the same or lower complexity. For example, an object for data storage should not access
the methods that drive the main conversion process. The resulting code will thus not evolve into a spaghetti
mess.

### Value Object

Value objects are used to store primitive data or as definition of how to read primitive data from files.
In the converter, the parsers utilize these objects to extract attributes from the original Genie Engine
file formats. Extracted attributes are also saved as value objects.

Value objects are treated as *immutable*. Operations on the objects's values will therefore always return
a new object instance with the result and leave the original values as-is.

### Entity Object

Entity objects are used for structures that have a defined identity. An example for such a structure would
be one `Unit` object from AoE2 or a `GameEntity` instance from the openage API. Entity objects are mutable
and can have any number of attributes assigned to them. In the converter, they are used to model the
more complex structures from Genie games such as units, civilizations and techs. The transition to the nyan
API objects is also done utilizing etntity objects.

### Service

Services are interfaces for requesting or passing collections of entity objects and value objects from/to
a processor or tool. It is also used to communicate with external interfaces such as included libraries
or Python packages. A services main job is to translate the data it receives/forwards into a usable format.
Examples for services are internal name lookup service for mapping unit IDs to nyan object names as well as
the nyan file and graphics exporters.

### Processor

Processors operate on a given dataset consisting of multiple entity objects to produce a result. For the
converter, the input dataset is the data read in from Genie file formats, while the result are modpacks
for openage. Processors can be split into several subprocessor modules for which the same hierarchical
structure applies. A subprocessor can never access functions from a parent processor, but use any other
(sub-)processor or entity object/value object.

openage conversion processor are not instanced and implement most of their functions with the `@staticmethod`
decorator. The reason for this is to allow conversion processors for game expansions cross-reference
processor functions of their base game and thus reduce code redundancy.

### Tool

Tools are used to encapsulate processor with a user interface (GUI, TUI or CLI), pass user input to processors
and start the conversion process.
Loading