Commit graph

456 commits

Author SHA1 Message Date
cd9554fbe3
fix(dtmm): Fix deploying mod bundles
Two different functions were each reading the bundle database
from the backup, so their changes would overwrite each other.
Additionally, mod bundles were missing from the database.

Ref: #28.
2023-02-25 16:09:09 +01:00
0b17e8edf5
fix(sdk): Fix generating bundle name from file path 2023-02-25 16:07:16 +01:00
93c8f4fe9c
fix(sdk): Add missing value in Package binary format
After digging through the VT2 SDK `.exe`, I found that `.package` files
(`stingray::ResourcePackageResource`) actually have more data than I
originally knew about. Most notably, there is a 1 byte `flags` value
that is written at the end of every package file.

Depending on what value those flags have, more data could come after it,
but in most cases, it's just that one byte, which I must have missed in
the binary.

Ref: #28.
Ref: #36.
2023-02-25 13:57:37 +01:00
b9cd9ed5de
chore(sdk): Add debugging for unknown value in bundle database
Ref #28.
2023-02-25 12:58:21 +01:00
09f357d72d
fix(sdk): Prevent duplicates in bundle database bundles
Ref #28.
2023-02-25 11:42:16 +01:00
55a1fc9723
feat(dtmt): Validate path values in dtmt.cfg
Closes #34.
2023-02-25 10:12:23 +01:00
733ade3887
fix(sdk): Fix resolving package wildcards
Directories were ignored as invalid extension type. Now they are
recursed into.
2023-02-24 14:59:28 +01:00
79729cad02
chore: Update serde_sjson 2023-02-24 11:52:47 +01:00
214d481439
chore: Update serde_sjson 2023-02-24 11:45:55 +01:00
b20b3c4e66
WIP: mod_main logging and more DML specialication
DML's package needs to be added to the boot bundle as well. Current
issue: Adding any package file to the bundle breaks the game's loading.

But I don't know where this messes things up.
2023-02-23 21:38:57 +01:00
44a0b9a651
feat: Reduce clutter in release mode logging
Ref #7.
2023-02-23 21:38:56 +01:00
45e0d79fa7
refactor: Add crate for shared functionality
Adds an additional crate for shared functionality between dtmt and dtmm
that doesn't fit in the sdk.
2023-02-23 21:38:35 +01:00
41344f022d
feat(dtmm): Delete mod files
Only files in `data_dir` will be deleted, deployed bundles will stay
for now. See #29 for the rational.

Closes #24.
2023-02-23 21:38:27 +01:00
0c071b5b0a
fix(dtmm): Copy mod bundle
Hard linking doesn't work across devices/mount points, and I'm not keen
on reworking the data directory to be placed accordingly, right now.
2023-02-22 19:04:07 +01:00
f1375ae88d
fix(dtmm): Fix re-deploying the same mod 2023-02-22 18:51:58 +01:00
2a49b4a5b9
fix(dtmm): Fix deploying mod bundles 2023-02-22 18:41:15 +01:00
09c0ca777d
fix(dtmm): Fix generated mod data Lua code 2023-02-22 18:38:53 +01:00
d9e6cc05a0
fix(dtmm): Add additional Lua globals to backup 2023-02-22 16:40:05 +01:00
0705430b95
refactor: Move mod loading to separate base mod 2023-02-22 16:40:04 +01:00
701516aa7c
feat: Make mod resource scripts optional
With splitting DMF and DML, there is now more than one case where this
is needed, so it may well be made proper now.
The template still defines them, and, as with VT2 most creators will
probably stick with it, but they do have the option to make a non-DMF
mod now.
2023-02-22 16:40:02 +01:00
58a3df2d40
fix(dtmt): Fix incorrect field in config template 2023-02-22 16:40:01 +01:00
1decd1ce3a
fix(dtmt): Fix duplicate prompts 2023-02-22 16:40:00 +01:00
c73b8d2cc9
refactor: Only show unknown commands in debug
There are a bunch of optional commands provided by druid that trigger
this, but we only really need it to check for custom ones that weren't
implemented, yet.
2023-02-22 16:39:59 +01:00
6c9d5dabd4
fix(dtmm): Fix creating default config file
Create parent directories if necessary.
2023-02-22 16:39:58 +01:00
659ef1ce71
feat: Handle DMF specially for mod loading
DMF is part of the mod loading process and can therefore not be treated
like a regular mod.
2023-02-22 16:39:57 +01:00
571ae9605a
wip: Add preliminary mod loading injection 2023-02-22 16:39:30 +01:00
0cf2908904
fix(sdk): Fix resolving package wildcards
Directories were ignored as invalid extension type. Now they are
recursed into.
2023-02-22 16:37:07 +01:00
bc4d2fcd8a
feat(dtmt): Add unique mod ID 2023-02-22 16:08:32 +01:00
31d45a1cb4
fix(dtmm): Only deploy mods that are enabled 2023-02-22 16:01:15 +01:00
8ebc948252
refactor: Make function parameters more generic 2023-02-22 16:01:14 +01:00
ebcbdaeec0
feat(dtmm): Rework mod template
Ditch the `.mod` file and move its data into the config file.

The `run` function was the only thing that could have been dynamic, but
the vast majority of mods in VT2 never made use of that. Infact, VMF was
probably the only mod that had a different content for that.
2023-02-22 16:01:13 +01:00
aa05c5bd4a
chore: Improve debug logs 2023-02-22 16:01:12 +01:00
f90247710e
fix(dtmm): Use correct directory to extract to 2023-02-22 16:01:11 +01:00
09a6a969a6
feat(dtmm): Add config file 2023-02-22 16:01:09 +01:00
0ac3f84dba
fix(dtmm): Fix deploy button staying disabled 2023-02-20 16:39:20 +01:00
560e5496bc
feat(dtmm): Implement importing mod archives 2023-02-20 16:39:13 +01:00
a81fb7c021
chore: Update lib/serde_sjson 2023-02-20 16:39:10 +01:00
4b7f12e487
refactor(dtmm): Use commands instead of notifications 2023-02-18 10:59:21 +01:00
b8804409a3
chore: Update crates 2023-02-18 10:46:05 +01:00
e65579d8aa
feat(dtmm): Implement rudimentary mod deployment 2023-02-18 10:20:10 +01:00
cb9f154f1e
fix(sdk): Fix lua file compilation
Aussiemon provided the last missing piece of information about the
binary format.
2023-02-18 10:18:53 +01:00
2cda35032c
feat(dtmm): Implement rudimentary mod managing UI 2023-02-17 23:06:10 +01:00
8b2ca0e45a
feat(dtmm): Improve logging output format 2023-02-17 23:00:18 +01:00
16bfe88101
feat(sdk): Link LuaJIT for bytecode compilation
This removes the LuaJIT binary as a runtime dependency and decreases
the complexity of the compilation, by not needing to juggle a bunch of
temp files anymore.

However, it was a bit of a pain to get everything set up in the end.

Closes #4.
2023-02-17 22:56:47 +01:00
df06182ca0
fix(sdk): Fix file header binary format
The file header format is a bit more complex than I first realized,
especially around when a path to `data/` is included, and which size
field determines its file name length.
2023-02-17 22:51:48 +01:00
110108004d
fix(dtmt): Fix dictionary lookup for all groups
Rather than checking all groups, when no cli flag was given, no groups
were checked.
2023-02-17 22:51:47 +01:00
036c20bd8c
feat(lib): Implement IdString type
This type is similar to an `Either` between a `Murmur64` hash and a
`String`. This is necessary to be able to retain hash information where
the hash is not in the dictionary, but at the same time allow string
names where they are available.

Up until now, when reading a bundle, all hashes would be converted to
strings, which made sense for displaying those names. But when writing
the same bundle back, those strings ended up being re-hashed, resulting
in incorrect hashes.
2023-02-17 22:51:46 +01:00
1d08498131
feat(dtmt): Add command to print the dictionary
This is mostly helpful to check/debug whether the internal dictionary
actually contains the expected data. For manually looking through the
entire dictionary, opening the CSV file is still more convenient.
2023-02-17 22:51:46 +01:00
9077d791b2
feat(sdk): Implement file properties 2023-02-17 22:51:45 +01:00
6b01511d22
refactor(main_window): Combine window size into one variable 2023-02-08 14:40:55 +01:00