23
23
from ..language import *
24
24
from ..tooldecl import ToolClassDecl
25
25
from .imagepack import *
26
+ from ..assets .assetmanager import AssetManager
26
27
27
28
@ToolClassDecl ("imagepackrecolortester" )
28
29
class ImagePackRecolorTester :
@@ -407,6 +408,7 @@ def tool_main(args : list[str] | None = None):
407
408
parser .add_argument ("--psd" , type = str , help = "PSD file to load" )
408
409
parser .add_argument ("--loaddir" , type = str , help = "Directory to load images" )
409
410
parser .add_argument ("--yaml" , type = str , help = "ImagePack YAML file to load" )
411
+ parser .add_argument ("--asset" , type = str , help = "Asset ID to load" )
410
412
parser .add_argument ("--srcscale" , type = float , default = 1.0 , help = "Scale factor for source images" )
411
413
parser .add_argument ("--mask" , type = str , nargs = "+" , help = "Layer names to use as masks" )
412
414
parser .add_argument ("--minimal" , action = "store_true" , help = "Use narrow color range" )
@@ -432,6 +434,20 @@ def tool_main(args : list[str] | None = None):
432
434
basecolors [name ] = Color .get (parts [1 ])
433
435
434
436
imagepacks = []
437
+ def add_forkable_pack (pack : ImagePack ):
438
+ nonlocal imagepacks
439
+ if len (pack .masks ) > 1 :
440
+ # 给每个选区都生成一个独立的图片包
441
+ nummasks = len (pack .masks )
442
+ fork_args = [None ] * nummasks
443
+ for i in range (0 , nummasks ):
444
+ curpack = pack .fork_applying_mask (fork_args ) # type: ignore
445
+ curpack .masks .append (pack .masks [i ])
446
+ imagepacks .append (curpack )
447
+ elif len (pack .masks ) == 1 :
448
+ imagepacks .append (pack )
449
+ else :
450
+ raise ValueError ("No mask found in ImagePack" )
435
451
if parsed_args .psd or parsed_args .loaddir :
436
452
if len (baselayernames ) == 0 :
437
453
raise ValueError ("No mask layers specified" )
@@ -474,18 +490,16 @@ def tool_main(args : list[str] | None = None):
474
490
pack = pack .fork_and_shrink (decimal .Decimal (parsed_args .srcscale ))
475
491
else :
476
492
pack = pack .shrink_for_overview ()
477
- if len (pack .masks ) > 1 :
478
- # 给每个选区都生成一个独立的图片包
479
- nummasks = len (pack .masks )
480
- fork_args = [None ] * nummasks
481
- for i in range (0 , nummasks ):
482
- curpack = pack .fork_applying_mask (fork_args ) # type: ignore
483
- curpack .masks .append (pack .masks [i ])
484
- imagepacks .append (curpack )
485
- elif len (pack .masks ) == 1 :
486
- imagepacks .append (pack )
493
+ add_forkable_pack (pack )
494
+ elif parsed_args .asset :
495
+ am = AssetManager .get_instance ()
496
+ if pack := am .get_asset (parsed_args .asset ):
497
+ add_forkable_pack (pack )
487
498
else :
488
- raise ValueError ("No mask found in ImagePack" )
499
+ am .load_all_assets ()
500
+ json_dump = am .get_assets_json ()
501
+ available_assets = [k for k in json_dump .keys () if k .startswith ("imagepack" )]
502
+ raise ValueError ("Cannot find asset " + parsed_args .asset + ". Available assets: " + ", " .join (available_assets ))
489
503
else :
490
504
size = (600 , 200 )
491
505
for color in dest_colors :
0 commit comments