Browse Source

Show progress bar when unpacking files.

master
MagicBot 2 years ago
parent
commit
6bc7e3ecd8
  1. 272
      mbEditorPro2.0/mbEditorPro.py
  2. 3
      mbEditorPro2.0/requirements.txt

272
mbEditorPro2.0/mbEditorPro.py

@ -13,6 +13,7 @@ import json @@ -13,6 +13,7 @@ import json
import os
import sys
import wave
from tqdm import tqdm
from arcane.ArcImage import *
from arcane.ArcMesh import *
@ -29,6 +30,7 @@ from arcane.objects import ArcObj, ArcDoorObject, ArcStaticObject, ArcStructureO @@ -29,6 +30,7 @@ from arcane.objects import ArcObj, ArcDoorObject, ArcStaticObject, ArcStructureO
from arcane.util import *
from arcane.zones import *
DUMP_DIRECTORY = 'ARCANE_DUMP'
WORKING_DIRECTORY = os.path.dirname(__file__)
TARGET_DIRECTORY = os.path.join(WORKING_DIRECTORY, DUMP_DIRECTORY)
@ -148,21 +150,23 @@ def unpack_cobjects(): @@ -148,21 +150,23 @@ def unpack_cobjects():
resources = load_cache_file('CObjects.cache')
for res_id, data in resources:
in_stream = ResStream(data)
magic = in_stream.read_dword()
obj_type = in_stream.read_dword()
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
in_stream = ResStream(data)
magic = in_stream.read_dword()
obj_type = in_stream.read_dword()
arc_in = COBJECTS_MAP[obj_type]()
filepath = os.path.join(
COBJECTS_DIRECTORY,
OBJECT_TYPE_TO_STRING[obj_type],
f'{res_id:d}.json'
)
arc_in.load_binary(in_stream)
parsed = arc_in.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
arc_in = COBJECTS_MAP[obj_type]()
filepath = os.path.join(
COBJECTS_DIRECTORY,
OBJECT_TYPE_TO_STRING[obj_type],
f'{res_id:d}.json'
)
arc_in.load_binary(in_stream)
parsed = arc_in.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_cobjects():
@ -221,17 +225,19 @@ def unpack_czones(): @@ -221,17 +225,19 @@ def unpack_czones():
resources = load_cache_file('CZone.cache')
for res_id, data in resources:
arc_zone = ArcZone()
in_stream = ResStream(data)
filepath = os.path.join(
CZONE_DIRECTORY,
f'{res_id:d}.json'
)
arc_zone.load_binary(in_stream)
parsed = arc_zone.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_zone = ArcZone()
in_stream = ResStream(data)
filepath = os.path.join(
CZONE_DIRECTORY,
f'{res_id:d}.json'
)
arc_zone.load_binary(in_stream)
parsed = arc_zone.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_czones():
@ -278,19 +284,21 @@ def unpack_sound(): @@ -278,19 +284,21 @@ def unpack_sound():
resources = load_cache_file('Sound.cache')
for res_id, data in resources:
arc_sound = ArcSound()
in_stream = ResStream(data)
filepath = os.path.join(
SOUND_DIRECTORY,
f'{res_id:d}.wav'
)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_sound = ArcSound()
in_stream = ResStream(data)
filepath = os.path.join(
SOUND_DIRECTORY,
f'{res_id:d}.wav'
)
arc_sound.load_binary(in_stream)
with open(filepath, 'wb') as fp:
wave_writer = wave.Wave_write(fp)
arc_sound.save_wav(wave_writer)
wave_writer.close()
arc_sound.load_binary(in_stream)
with open(filepath, 'wb') as fp:
wave_writer = wave.Wave_write(fp)
arc_sound.save_wav(wave_writer)
wave_writer.close()
pBar.update(1)
def pack_sound():
@ -344,17 +352,22 @@ def test_sound(): @@ -344,17 +352,22 @@ def test_sound():
def unpack_texture():
init_texture()
print('Decompressing Texture Cache...')
resources = load_cache_file('Textures.cache')
for res_id, data in resources:
filepath = os.path.join(
TEXTURE_DIRECTORY,
f'{res_id:d}.tga'
)
arc_texture = ArcTexture()
in_stream = ResStream(data)
arc_texture.load_binary(in_stream)
arc_texture.save_img(filepath)
print('Writing images')
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
filepath = os.path.join(
TEXTURE_DIRECTORY,
f'{res_id:d}.tga'
)
arc_texture = ArcTexture()
in_stream = ResStream(data)
arc_texture.load_binary(in_stream)
arc_texture.save_img(filepath)
pBar.update(1)
def pack_texture():
@ -408,16 +421,19 @@ def unpack_terrain(): @@ -408,16 +421,19 @@ def unpack_terrain():
init_terrain()
resources = load_cache_file('TerrainAlpha.cache')
for res_id, data in resources:
filepath = os.path.join(
TERRAIN_DIRECTORY,
f'{res_id:d}.tga'
)
arc_terrain = ArcTerrain()
in_stream = ResStream(data)
arc_terrain.load_binary(in_stream)
arc_terrain.save_img(filepath)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
filepath = os.path.join(
TERRAIN_DIRECTORY,
f'{res_id:d}.tga'
)
arc_terrain = ArcTerrain()
in_stream = ResStream(data)
arc_terrain.load_binary(in_stream)
arc_terrain.save_img(filepath)
pBar.update(1)
def pack_terrain():
@ -474,17 +490,19 @@ def unpack_mesh(): @@ -474,17 +490,19 @@ def unpack_mesh():
resources = load_cache_file('Mesh.cache')
for res_id, data in resources:
arc_mesh = ArcMesh()
in_stream = ResStream(data)
filepath = os.path.join(
MESH_DIRECTORY,
f'{res_id:d}.json'
)
arc_mesh.load_binary(in_stream)
parsed = arc_mesh.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_mesh = ArcMesh()
in_stream = ResStream(data)
filepath = os.path.join(
MESH_DIRECTORY,
f'{res_id:d}.json'
)
arc_mesh.load_binary(in_stream)
parsed = arc_mesh.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_mesh():
@ -531,17 +549,19 @@ def unpack_visual(): @@ -531,17 +549,19 @@ def unpack_visual():
resources = load_cache_file('Visual.cache')
for res_id, data in resources:
arc_visual = ArcVisual()
in_stream = ResStream(data)
filepath = os.path.join(
VISUAL_DIRECTORY,
f'{res_id:d}.json'
)
arc_visual.load_binary(in_stream)
parsed = arc_visual.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_visual = ArcVisual()
in_stream = ResStream(data)
filepath = os.path.join(
VISUAL_DIRECTORY,
f'{res_id:d}.json'
)
arc_visual.load_binary(in_stream)
parsed = arc_visual.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_visual():
@ -588,17 +608,19 @@ def unpack_motion(): @@ -588,17 +608,19 @@ def unpack_motion():
resources = load_cache_file('Motion.cache')
for res_id, data in resources:
arc_motion = ArcMotion()
in_stream = ResStream(data)
filepath = os.path.join(
MOTION_DIRECTORY,
f'{res_id:d}.json'
)
arc_motion.load_binary(in_stream)
parsed = arc_motion.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_motion = ArcMotion()
in_stream = ResStream(data)
filepath = os.path.join(
MOTION_DIRECTORY,
f'{res_id:d}.json'
)
arc_motion.load_binary(in_stream)
parsed = arc_motion.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_motion():
@ -645,17 +667,19 @@ def unpack_tile(): @@ -645,17 +667,19 @@ def unpack_tile():
resources = load_cache_file('Tile.cache')
for res_id, data in resources:
arc_tile = ArcTileManager()
in_stream = ResStream(data)
filepath = os.path.join(
TILE_DIRECTORY,
f'{res_id:d}.json'
)
arc_tile.load_binary(in_stream)
parsed = arc_tile.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_tile = ArcTileManager()
in_stream = ResStream(data)
filepath = os.path.join(
TILE_DIRECTORY,
f'{res_id:d}.json'
)
arc_tile.load_binary(in_stream)
parsed = arc_tile.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_tile():
@ -702,18 +726,20 @@ def unpack_skeleton(): @@ -702,18 +726,20 @@ def unpack_skeleton():
resources = load_cache_file('Skeleton.cache')
for res_id, data in resources:
arc_skeleton = ArcSkeleton()
in_stream = ResStream(data)
filepath = os.path.join(
SKELETON_DIRECTORY,
f'{res_id:d}.json'
)
arc_skeleton.load_binary(in_stream)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_skeleton = ArcSkeleton()
in_stream = ResStream(data)
filepath = os.path.join(
SKELETON_DIRECTORY,
f'{res_id:d}.json'
)
arc_skeleton.load_binary(in_stream)
parsed = arc_skeleton.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
parsed = arc_skeleton.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_skeleton():
@ -760,18 +786,20 @@ def unpack_render(): @@ -760,18 +786,20 @@ def unpack_render():
resources = load_cache_file('render.cache')
for res_id, data in resources:
arc_render = ArcRender()
in_stream = ResStream(data)
filepath = os.path.join(
RENDER_DIRECTORY,
f'{res_id:d}.json'
)
arc_render.load_binary(in_stream)
parsed = arc_render.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
with tqdm(total=len(resources)) as pBar:
for res_id, data in resources:
arc_render = ArcRender()
in_stream = ResStream(data)
filepath = os.path.join(
RENDER_DIRECTORY,
f'{res_id:d}.json'
)
arc_render.load_binary(in_stream)
parsed = arc_render.save_json()
with open(filepath, 'w') as fp:
json.dump(parsed, fp, indent=2)
pBar.update(1)
def pack_render():

3
mbEditorPro2.0/requirements.txt

@ -1 +1,4 @@ @@ -1 +1,4 @@
pillow==9.3.0
tqdm~=4.64.1

Loading…
Cancel
Save