diff options
Diffstat (limited to 'extractor')
-rw-r--r-- | extractor/grf.gd | 9 | ||||
-rw-r--r-- | extractor/sprite_format.gd | 17 |
2 files changed, 24 insertions, 2 deletions
diff --git a/extractor/grf.gd b/extractor/grf.gd index fa7021a..e017bc8 100644 --- a/extractor/grf.gd +++ b/extractor/grf.gd @@ -217,11 +217,16 @@ func convert(destination: String = "res://data"): #DirAccess.make_dir_recursive_absolute(base_file_directory_path) - if file_path.ends_with(".spr") and file_path.contains("cursors"): + var player_head_path_part = "¸Ó¸®Åë" + var player_body_path_part = "¸öÅë" + + if file_path.ends_with(".spr") and file_path.contains(player_body_path_part) and file_path.contains("NIGHT_WATCH"): var sprite = SpriteFormat.from_bytes(file_entry.get_contents(file_access)) + print(file_path, (sprite.palette_image_count), sprite.version) sprite.save_to_file(base_file_directory_path) - elif file_path.ends_with(".act") and file_path.contains("cursors"): + elif file_path.ends_with(".act") and file_path.contains(player_body_path_part): + continue if not FileAccess.file_exists("%s/000.png.import" % base_file_directory_path): continue diff --git a/extractor/sprite_format.gd b/extractor/sprite_format.gd index 46b20c1..879a45f 100644 --- a/extractor/sprite_format.gd +++ b/extractor/sprite_format.gd @@ -73,6 +73,8 @@ static func from_bytes(bytes: PackedByteArray) -> SpriteFormat: processed_palette_images += 1 palette_image_offset += data.get_byte_length() + assert(sprite_format.palette_image_data.size() == sprite_format.palette_image_count) + sprite_format.rgba_image_data = [] as Array[RGBAImageData] var rgba_image_offset = palette_image_offset var processed_rgba_images = 0 @@ -94,6 +96,8 @@ static func from_bytes(bytes: PackedByteArray) -> SpriteFormat: processed_rgba_images += 1 rgba_image_offset += data.get_byte_length() + assert(sprite_format.rgba_image_data.size() == sprite_format.rgba_image_count) + sprite_format.palette = [] as Array[PaletteColor] var palette_offset = rgba_image_offset while palette_offset < bytes.size(): @@ -127,6 +131,19 @@ func save_to_file(base_dir: String = ""): var path = "%s/%s.png" % [base_dir, str(idx).pad_zeros(3)] image.save_png(path) + + for idx in rgba_image_data.size(): + var data: RGBAImageData = rgba_image_data[idx] + var image = Image.create_from_data( + data.width, + data.height, + false, + Image.FORMAT_RGBA8, + data.data + ) + + var path = "%s/%s.png" % [base_dir, str(idx).pad_zeros(3)] + image.save_png(path) func files_exist() -> bool: |