modetw (Modifications Manager for Empire: Total War) is a utility tool that helps you manage modifications (mods) in Empire: Total War for GNU/Linux.
Supported features
==================
* All mods will only have latest version
* Mod conflict check
Planned features
================
* Multiple mod versions
Commands
========
* -c --calibrate
calibrate the game files for mod installation
* -i --install [mod]
install a mod
* -u --uninstall [mod]
uninstall a mod
* -q --query [mod (regexpr)]
list mods in GitLab
* -l --list (installed mods)
list ~/.config/etw-lmm/manifest
A mod installation runs through the following steps:
1. The game packs that will be installed will be checked for any conflicts. If there is an existing mod installed that is already overtaking an original game pack, the installation cannot continue.
2. The original game packs will be renamed as "*.backup"
3. The modified game packs will be installed.
4. The mod's manifest will be added to the modetw/manifest directory
A mod uninstallation runs through the following steps:
1. The modified game packs are deleted.
2. The original game packs will have ".backup" removed.
3. The mod's manifest will be deleted.
The list of installed mods are located in the $HOME/.local/modetw/manifest.txt file (text file, listing installed mods with version).
XMLs of available mods will be packaged in a tar.xz in a FTP server in the same dir as the mods. $HOME/.local/modetw/db directory will hold all XMLs (including installed).
Specifications
==============
libcurl
libxml2
GNU automake
sed iconv cp rm
check (only for dev)
doxygen (only for dev)
argp - argparse
Glib conf parsing
tar
Project structure
=================
main.c
Contains main function
calibrate.c/h
Game calibration
install.c/h
Handles uninstall as well
query.c/h
Queries FTP server for mods
list.c/h
Lists installed mods
exception.c/h
Exception handler
file_t.c/h
File type
md5_t.c/h
MD5 hash type
prompt_t.c/h
Prompt type
Mod structure
=============
<mod_name>-<mod_version>.tar.xz
<mod_name>-<mod_version>.xml
<mod_name>-<mod_version>/
manifest.xml
common/
A.pack
B.pack
option/
<option1_name>/
C.pack (different contents)
<option2_name>/
C.pack
Manifest XML structure
==================
<name></name>
<description></description>
<version></version>
<author></author>
<author_contact></author_contact>
<common>
<pack>
<name></name>
<description></description>
<files>
<filename></filename>
</files>
</pack>
</common>
<options>
<option>
<directory></directory>
<name></name>
<description></description>
<files>
<filename></filename>
</files>
</option>
</options>