@@ -30,13 +30,15 @@ def __init__(self, parent=None) -> None:
3030 self .games = {}
3131 self .characters = {}
3232 self .variants = {}
33+ self .colors = []
3334 self .selectedGame = {}
3435 self .stockIcons = {}
3536 self .startgg_id_to_character = {}
3637
3738 self .characterModel = QStandardItemModel ()
3839 self .skinModels = {}
3940 self .variantModel = QStandardItemModel ()
41+ self .colorModel = QStandardItemModel ()
4042 self .stageModel = QStandardItemModel ()
4143 self .stageModelWithBlank = QStandardItemModel ()
4244
@@ -267,6 +269,7 @@ def run(self):
267269 if gameObj != None :
268270 self .parent ().characters = gameObj .get ("character_to_codename" , {})
269271 self .parent ().variants = gameObj .get ("variant_to_codename" , {})
272+ self .parent ().colors = gameObj .get ("preset_colors" , [])
270273
271274 assetsKey = ""
272275 if len (list (gameObj .get ("assets" , {}).keys ())) > 0 :
@@ -502,6 +505,45 @@ def run(self):
502505 except :
503506 logger .error (traceback .format_exc ())
504507
508+ # Load translations for colors
509+ try :
510+ for c in range (len (self .parent ().colors )):
511+ display_name = self .parent ().colors [c ].get ("name" )
512+ export_name = self .parent ().colors [c ].get ("name" )
513+ en_name = self .parent ().colors [c ].get ("name" )
514+
515+ if self .parent ().colors [c ].get ("locale" ):
516+ locale = TSHLocaleHelper .programLocale
517+ if locale .replace ("-" , "_" ) in self .parent ().colors [c ]["locale" ]:
518+ display_name = self .parent ().colors [
519+ c ]["locale" ][locale .replace ("-" , "_" )]
520+ elif re .split ("-|_" , locale )[0 ] in self .parent ().colors [c ]["locale" ]:
521+ display_name = self .parent ().colors [
522+ c ]["locale" ][re .split ("-|_" , locale )[0 ]]
523+ elif TSHLocaleHelper .GetRemaps (TSHLocaleHelper .programLocale ) in self .parent ().colors [c ]["locale" ]:
524+ display_name = self .parent ().colors [c ]["locale" ][TSHLocaleHelper .GetRemaps (
525+ TSHLocaleHelper .programLocale )]
526+
527+ locale = TSHLocaleHelper .exportLocale
528+ if locale .replace ("-" , "_" ) in self .parent ().colors [c ]["locale" ]:
529+ export_name = self .parent ().colors [
530+ c ]["locale" ][locale .replace ("-" , "_" )]
531+ elif re .split ("-|_" , locale )[0 ] in self .parent ().colors [c ]["locale" ]:
532+ export_name = self .parent ().colors [
533+ c ]["locale" ][re .split ("-|_" , locale )[0 ]]
534+ elif TSHLocaleHelper .GetRemaps (TSHLocaleHelper .exportLocale ) in self .parent ().colors [c ]["locale" ]:
535+ export_name = self .parent ().colors [c ]["locale" ][TSHLocaleHelper .GetRemaps (
536+ TSHLocaleHelper .exportLocale )]
537+
538+ self .parent (
539+ ).colors [c ]["display_name" ] = display_name
540+ self .parent (
541+ ).colors [c ]["export_name" ] = export_name
542+ self .parent (
543+ ).colors [c ]["en_name" ] = en_name
544+ except :
545+ logger .error (traceback .format_exc ())
546+
505547 with StateManager .SaveBlock ():
506548 StateManager .Set (f"game" , {
507549 "name" : self .parent ().selectedGame .get ("name" ),
@@ -511,13 +553,15 @@ def run(self):
511553 "defaults" : self .parent ().selectedGame .get ("defaults" ),
512554 "mods_active" : self .mods_active ,
513555 "has_stages" : bool (self .parent ().selectedGame .get ("stage_to_codename" )),
514- "has_variants" : bool (self .parent ().selectedGame .get ("variant_to_codename" ))
556+ "has_variants" : bool (self .parent ().selectedGame .get ("variant_to_codename" )),
557+ "has_colors" : bool (self .parent ().selectedGame .get ("preset_colors" ))
515558 })
516559
517560 self .parent ().has_modded_content = False
518561 self .parent ().UpdateCharacterModel (self .mods_active )
519562 self .parent ().UpdateSkinModel ()
520563 self .parent ().UpdateVariantModel ()
564+ self .parent ().UpdateColorModel ()
521565 self .parent ().UpdateStageModel (self .mods_active )
522566
523567 StateManager .Set (f"game.has_modded_content" , self .parent ().has_modded_content )
@@ -561,6 +605,7 @@ def run(self, mods_active=False, mods_reload_mode=False):
561605 if gameObj != None :
562606 self .parent .characters = gameObj .get ("character_to_codename" , {})
563607 self .parent .variants = gameObj .get ("variant_to_codename" , {})
608+ self .parent .colors = gameObj .get ("preset_colors" , {})
564609
565610 assetsKey = ""
566611 if len (list (gameObj .get ("assets" , {}).keys ())) > 0 :
@@ -790,6 +835,42 @@ def run(self, mods_active=False, mods_reload_mode=False):
790835 except :
791836 logger .error (traceback .format_exc ())
792837
838+ # Load translations for colors
839+ try :
840+ for c in self .parent .colors .keys ():
841+ display_name = c
842+ export_name = c
843+ en_name = c
844+
845+ if self .parent .colors [c ].get ("locale" ):
846+ locale = TSHLocaleHelper .programLocale
847+ if locale .replace ("-" , "_" ) in self .parent .colors [c ]["locale" ]:
848+ display_name = self .parent .colors [
849+ c ]["locale" ][locale .replace ("-" , "_" )]
850+ elif re .split ("-|_" , locale )[0 ] in self .parent .colors [c ]["locale" ]:
851+ display_name = self .parent .colors [
852+ c ]["locale" ][re .split ("-|_" , locale )[0 ]]
853+ elif TSHLocaleHelper .GetRemaps (TSHLocaleHelper .programLocale ) in self .parent .colors [c ]["locale" ]:
854+ display_name = self .parent .colors [c ]["locale" ][TSHLocaleHelper .GetRemaps (
855+ TSHLocaleHelper .programLocale )]
856+
857+ locale = TSHLocaleHelper .exportLocale
858+ if locale .replace ("-" , "_" ) in self .parent .colors [c ]["locale" ]:
859+ export_name = self .parent .colors [
860+ c ]["locale" ][locale .replace ("-" , "_" )]
861+ elif re .split ("-|_" , locale )[0 ] in self .parent .colors [c ]["locale" ]:
862+ export_name = self .parent .colors [
863+ c ]["locale" ][re .split ("-|_" , locale )[0 ]]
864+ elif TSHLocaleHelper .GetRemaps (TSHLocaleHelper .exportLocale ) in self .parent .colors [c ]["locale" ]:
865+ export_name = self .parent .colors [c ]["locale" ][TSHLocaleHelper .GetRemaps (
866+ TSHLocaleHelper .exportLocale )]
867+
868+ self .parent .colors [c ]["display_name" ] = display_name
869+ self .parent .colors [c ]["export_name" ] = export_name
870+ self .parent .colors [c ]["en_name" ] = en_name
871+ except :
872+ logger .error (traceback .format_exc ())
873+
793874 StateManager .Set (f"game" , {
794875 "name" : self .parent .selectedGame .get ("name" ),
795876 "smashgg_id" : self .parent .selectedGame .get ("smashgg_game_id" ),
@@ -798,13 +879,15 @@ def run(self, mods_active=False, mods_reload_mode=False):
798879 "defaults" : self .parent .selectedGame .get ("defaults" ),
799880 "mods_active" : mods_active ,
800881 "has_stages" : bool (self .parent .selectedGame .get ("stage_to_codename" )),
801- "has_variants" : bool (self .parent .selectedGame .get ("variant_to_codename" ))
882+ "has_variants" : bool (self .parent .selectedGame .get ("variant_to_codename" )),
883+ "has_colors" : bool (self .parent .selectedGame .get ("preset_colors" ))
802884 })
803885
804886 self .parent .has_modded_content = False
805887 self .parent .UpdateCharacterModel (mods_active )
806888 self .parent .UpdateSkinModel ()
807889 self .parent .UpdateVariantModel ()
890+ self .parent .UpdateColorModel ()
808891 self .parent .UpdateStageModel (mods_active )
809892
810893 StateManager .Set (f"game.has_modded_content" , self .parent .has_modded_content )
@@ -1012,6 +1095,45 @@ def UpdateCharacterModel(self, mods_active = True):
10121095 except :
10131096 logger .error (traceback .format_exc ())
10141097
1098+ def UpdateColorModel (self ):
1099+ try :
1100+ self .colorModel = QStandardItemModel ()
1101+
1102+ # Add one empty
1103+ item = QStandardItem ("" )
1104+ self .colorModel .appendRow (item )
1105+
1106+ for c in range (len (self .colors )):
1107+ name = self .colors [c ].get ("name" )
1108+ item = QStandardItem ()
1109+ item .setData (name , Qt .ItemDataRole .EditRole )
1110+ logger .info (name )
1111+
1112+ data = {
1113+ "name" : self .colors [c ].get ("export_name" ),
1114+ "en_name" : c ,
1115+ "display_name" : self .colors [c ].get ("display_name" ),
1116+ "value" : self .colors [c ].get ("value" ),
1117+ "force_opponent" : self .colors [c ].get ("force_opponent" )
1118+ }
1119+
1120+ icon = QPixmap (100 ,100 )
1121+ icon .fill (QColor ("#" + self .colors [c ].get ("value" )))
1122+ item .setIcon (QIcon (icon ))
1123+
1124+
1125+ if self .colors [c ].get ("display_name" ) != name :
1126+ item .setData (
1127+ f'{ self .colors [c ].get ("display_name" )} / { name } ' , Qt .ItemDataRole .EditRole )
1128+
1129+ item .setData (data , Qt .ItemDataRole .UserRole )
1130+ self .colorModel .appendRow (item )
1131+
1132+ self .colorModel .sort (0 )
1133+ except :
1134+ logger .error (traceback .format_exc ())
1135+
1136+
10151137 def UpdateVariantModel (self ):
10161138 try :
10171139 self .variantModel = QStandardItemModel ()
0 commit comments