3 Commits

Author SHA1 Message Date
1686114181 fix: error setting new sub patch id
Some checks failed
Release Build / build (push) Has been cancelled
2025-08-17 21:14:07 +08:00
4ca65979c9 workflows 2025-08-15 15:04:03 +08:00
6e493b3fdc update to TU2.5 list file 2025-08-15 14:59:10 +08:00
6 changed files with 19 additions and 10 deletions

View File

@@ -3,6 +3,7 @@ name: Release Build
on:
push:
tags: ["v*"]
workflow_dispatch:
permissions:
contents: write
@@ -30,8 +31,6 @@ jobs:
run: |
mkdir release
copy target/release/${{ env.BINARY_NAME }}.exe release/
copy README.md release/
copy LICENSE release/
- name: Upload artifact
uses: actions/upload-artifact@v4

2
Cargo.lock generated
View File

@@ -713,7 +713,7 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
[[package]]
name = "mhws-tex-decompressor"
version = "0.2.1"
version = "0.2.2"
dependencies = [
"color-eyre",
"colored",

View File

@@ -1,6 +1,6 @@
[package]
name = "mhws-tex-decompressor"
version = "0.2.1"
version = "0.2.2"
edition = "2024"
[dependencies]

Binary file not shown.

View File

@@ -405,7 +405,7 @@ I'm sure I've checked the list, press Enter to continue"#,
let new_patch_id = max_patch_id + 1;
// Create a new chunk name
let output_chunk_name = chunk_name.with_sub_patch(new_patch_id);
let output_chunk_name = chunk_name.set_sub_patch(new_patch_id);
// Add the new patch to the chunk list so it can be found in subsequent processing
all_chunk_names.push(output_chunk_name.clone());

View File

@@ -123,10 +123,20 @@ impl ChunkName {
})
}
/// Add a sub patch component with the given ID
pub fn with_sub_patch(&self, patch_id: u32) -> Self {
/// Add or replace a sub patch component with the given ID
pub fn set_sub_patch(&self, patch_id: u32) -> Self {
let mut new_components = self.components.clone();
new_components.push(ChunkComponent::SubPatch(patch_id));
// Check if SubPatch already exists and replace it
if let Some(pos) = new_components
.iter()
.position(|c| matches!(c, ChunkComponent::SubPatch(_)))
{
new_components[pos] = ChunkComponent::SubPatch(patch_id);
} else {
new_components.push(ChunkComponent::SubPatch(patch_id));
}
Self {
components: new_components,
}
@@ -289,9 +299,9 @@ mod tests {
}
#[test]
fn test_with_sub_patch() {
fn test_set_sub_patch() {
let base = ChunkName::try_from_str("re_chunk_000.pak.sub_001.pak").unwrap();
let with_patch = base.with_sub_patch(99);
let with_patch = base.set_sub_patch(99);
assert_eq!(with_patch.major_id(), Some(0));
assert_eq!(with_patch.sub_id(), Some(1));