Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
23a51f6
Add recognized AllMap.ini and Map.ini reference in save-file
dimspell Aug 11, 2026
0a49a6c
Update cargo packages
dimspell Aug 11, 2026
90055a0
Add recognized item mapping from the inventory
dimspell Aug 11, 2026
ae3d2fd
Recognize the starting level of character
dimspell Aug 11, 2026
52d277b
Update dependencies and revision to the iced fork
dimspell Aug 12, 2026
f47eab0
Fix compilation errors after iced upgrade
dimspell Aug 12, 2026
13bd4f7
Add recognised map id references
dimspell Aug 12, 2026
3516dcc
Save the ignored bytes into the struct
dimspell Aug 12, 2026
598390d
Instead of jumping and ignoring the data, save the remainder
dimspell Aug 12, 2026
cd7f24d
Add unrecognized data to the Raw tab of the GUI editor for save files
dimspell Aug 12, 2026
eb9bf01
Add recognized currently selected spell
dimspell Aug 12, 2026
08f2dce
Revert "Instead of jumping and ignoring the data, save the remainder"
dimspell Aug 12, 2026
5935f1c
Hide bytes that have representation in the save game editor
dimspell Aug 12, 2026
9fddd69
Hide some buttons from the hexedit toolbar into context menu
dimspell Aug 12, 2026
931e36f
Redesign the search overlay in the hexedit
dimspell Aug 12, 2026
69dbd83
Add toast notification instead of the status bar message
dimspell Aug 12, 2026
87cacae
Add missing renderer, so the GUI tests will pass for hexedit
dimspell Aug 12, 2026
45d288c
Reformat code
dimspell Aug 12, 2026
bd1a93f
Redesign the changes-only diff mode into collapsible containers
dimspell Aug 12, 2026
3a24996
Improve the performance of the changes-only diff mode
dimspell Aug 12, 2026
f4429bd
Add binary layout support for the Monster.db (hex editor mode)
dimspell Aug 12, 2026
9e38a6d
Redesign the binary layout in the hex editor
dimspell Aug 12, 2026
d1e0801
Add binary layout for the .sav files
dimspell Aug 12, 2026
100961f
Add outline panel for the binary layout
dimspell Aug 12, 2026
0ef3155
Add list widget from the airstrike/sweeten (MIT)
dimspell Aug 12, 2026
107f5a3
Render the outline as a collapsible tree
dimspell Aug 13, 2026
ce8ec5f
Recognise some fields of the MonsterRecord in .sav files
dimspell Aug 13, 2026
c3f7658
Recognise some fields of the NpcRecord
dimspell Aug 13, 2026
6be9aba
Update the NpcRef to name many unknown fields
dimspell Aug 13, 2026
e233181
Add some todos for a proper renames of MonsterRef file parser
dimspell Aug 13, 2026
1563f89
Recognise some data in and after the ExtraObjectRecord
dimspell Aug 13, 2026
2947e70
Linter fix
dimspell Aug 13, 2026
e56305b
Recognise some ExtraRef fields
dimspell Aug 13, 2026
939900a
Fix compilation errors
dimspell Aug 13, 2026
7409b28
Name the last unknown fields in the ExtraObjectRecord (*.sav parser)
dimspell Aug 13, 2026
edab4b5
Name the journal header and the journal items
dimspell Aug 13, 2026
ca4cd0d
Name the MonsterRef fields
dimspell Aug 13, 2026
8cc7375
Name the placement data of the ground items
dimspell Aug 13, 2026
607691b
Fix test errors
dimspell Aug 13, 2026
a307072
Update the PostMapsData struct
dimspell Aug 13, 2026
cd39d08
Fix compilation issue
dimspell Aug 13, 2026
d333b5b
Update the NpcRef fields
dimspell Aug 13, 2026
944e7ca
Fix the WeaponDB loader
dimspell Aug 13, 2026
8abf79f
Update the PrtIni.db parser
dimspell Aug 13, 2026
3ebf6b1
Rewrite the inventory placement grid
dimspell Aug 13, 2026
86822c6
Update the inventory placement data
dimspell Aug 13, 2026
8254cb3
Update the PrtLevel.db parser
dimspell Aug 13, 2026
f5d1591
Update the Magic.db parser and PartyMember records
dimspell Aug 13, 2026
a418f70
Recognize more fields in the Party Member
dimspell Aug 13, 2026
7b8342d
Add conditional snapshot of the combat for PartyMember
dimspell Aug 13, 2026
8899bab
Add unrecognized Extra.ini flag
dimspell Aug 13, 2026
281e6ef
Add more fields to the Party Member
dimspell Aug 13, 2026
b5f0a4f
Update MiscItem.db parser
dimspell Aug 13, 2026
55000f0
Update the PartyMember record in the sav file parser
dimspell Aug 13, 2026
09750d4
Update the healItem.db parser
dimspell Aug 13, 2026
766f274
Fix compilation error
dimspell Aug 13, 2026
e96ade5
Update the Wave.ini parser
dimspell Aug 13, 2026
a79f388
Update docs
dimspell Aug 13, 2026
a03b80a
Update ChData.db parser
dimspell Aug 14, 2026
64a9767
Update Store.db parser
dimspell Aug 14, 2026
6da9f13
Update MiscItem.db parser
dimspell Aug 14, 2026
3f582e3
Parse the 10148 bytes block
dimspell Aug 14, 2026
a7ebddc
Update the map reader
dimspell Aug 14, 2026
56b73f3
Fix clippy error
dimspell Aug 16, 2026
a39ed85
Update PartyRef parser
dimspell Aug 16, 2026
f25e7b4
Update Map documentation
dimspell Aug 16, 2026
c42296f
Rename field
dimspell Aug 17, 2026
c597f88
Introduce conversation preview in the map editor
dimspell Aug 17, 2026
6037266
Revert changes to the Event.ini docs
dimspell Aug 17, 2026
670c883
Update iced framework dep
dimspell Aug 18, 2026
0a0ca85
Update Magic.db parser
dimspell Aug 18, 2026
534943d
Remove unused commented code
dimspell Aug 18, 2026
990bea4
Update EventItem.db parser
dimspell Aug 18, 2026
246dc24
Update ChData.db parser test
dimspell Aug 18, 2026
1ddcede
Update Magic.db parser - magic type enum
dimspell Aug 18, 2026
c162e30
Remove the modal demo example from the gui-widgets
dimspell Aug 18, 2026
ba16df0
Add todo to the prtini.db
dimspell Aug 18, 2026
f888d5c
Fix a compilation error
dimspell Aug 18, 2026
5e9e32a
Reorganize the save_file
dimspell Aug 18, 2026
e4ff49b
Use BinaryRecord for the PartyMember decoder
dimspell Aug 18, 2026
eec5c12
Convert character stats to the BinaryRecord
dimspell Aug 18, 2026
aa8e46c
Move current map viewport state to the main struct
dimspell Aug 18, 2026
021d72e
Move the party members to the main struct
dimspell Aug 18, 2026
85f1612
Move inventory placement data to the inventory.rs
dimspell Aug 18, 2026
9b4fad7
Rewrite the structure of the SaveFile struct
dimspell Aug 18, 2026
4b8d316
Restructure the character data
dimspell Aug 19, 2026
6ac000f
Restructure the character identity
dimspell Aug 19, 2026
2cfbe4c
Refactor the save file parser
dimspell Aug 19, 2026
dd63706
Refactor the save file writer
dimspell Aug 19, 2026
d6f13cc
Add new fields to the character identity
dimspell Aug 20, 2026
7a6a54f
Update the post events data in the save file
dimspell Aug 20, 2026
1b8b65d
Update the save file parser
dimspell Aug 20, 2026
227dd38
Update the save parser - MonsterRecord
dimspell Aug 20, 2026
d1fe7d8
Fill missing unknown fields in the PartyMemberRecord
dimspell Aug 20, 2026
f366af0
Rename the unknown fields in the inventory items structs
dimspell Aug 20, 2026
e032b5f
Rename the unknown fields in the game_tmp / map viewport structs
dimspell Aug 20, 2026
55044b1
Update the save parser - event script
dimspell Aug 20, 2026
772d156
Update the save parser - journal
dimspell Aug 20, 2026
0110ee2
Add pr workflow test
dimspell Aug 20, 2026
0afd68a
Fix clippy error
dimspell Aug 20, 2026
5e3fa5a
Fix the tests
dimspell Aug 20, 2026
429c0a1
Better PR caching
dimspell Aug 20, 2026
5f8d484
Remove round trip tests
dimspell Aug 20, 2026
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
133 changes: 133 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: Pull Request

on:
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

permissions:
contents: read

env:
RUST_BACKTRACE: 1
RUST_TOOLCHAIN: stable

jobs:
verify:
name: verify
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Linux GUI dependencies
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev libx11-dev libxkbcommon-dev pkg-config

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
components: clippy, rustfmt

- name: Cache Cargo downloads
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: pr-cargo-${{ runner.os }}-${{ env.RUST_TOOLCHAIN }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
pr-cargo-${{ runner.os }}-${{ env.RUST_TOOLCHAIN }}-

- name: Cache compiled dependencies
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
with:
path: target/
key: pr-verify-target-${{ runner.os }}-${{ env.RUST_TOOLCHAIN }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
pr-verify-target-${{ runner.os }}-${{ env.RUST_TOOLCHAIN }}-

- name: Check formatting
run: cargo fmt --all --check

- name: Run Clippy
run: cargo clippy --workspace --all-features --all-targets -- -D warnings

- name: Run full test suite
run: cargo test --workspace --all-features

build-release-binaries:
name: ${{ matrix.build }}
needs: verify
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- build: cli-windows
app: cli
os: windows-latest
target: x86_64-pc-windows-msvc
- build: gui-windows
app: gui
os: windows-latest
target: x86_64-pc-windows-msvc
- build: gui-linux
app: gui
os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- build: cli-linux
app: cli
os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- build: gui-macos-arm
app: gui
os: macos-latest
target: aarch64-apple-darwin

steps:
- name: Checkout repository
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Linux GUI dependencies
if: matrix.os == 'ubuntu-latest' && matrix.app == 'gui'
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev libx11-dev libxkbcommon-dev pkg-config

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: ${{ matrix.target }}

- name: Cache Cargo dependencies
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: pr-build-${{ matrix.build }}-${{ hashFiles('**/Cargo.toml', '**/Cargo.lock') }}
restore-keys: |
pr-build-${{ matrix.build }}-

- name: Build release binary (CLI)
if: matrix.app == 'cli'
run: cargo build --verbose --release --target ${{ matrix.target }} --bin dispel-extractor

- name: Build release binary (GUI)
if: matrix.app == 'gui'
run: cargo build --verbose --release --target ${{ matrix.target }} --package dispel-gui --bin dispel-gui
Loading