Spaces:
Runtime error
Runtime error
File size: 9,229 Bytes
970efde 0ed027c 970efde 0ed027c 3393f9d 970efde 0ed027c ef62e40 970efde 0ed027c 1467c05 0ed027c 1467c05 0ed027c 1467c05 0ed027c 1467c05 0ed027c 970efde 0ed027c 970efde 0ed027c 1467c05 3393f9d 0ed027c 3393f9d 0ed027c 970efde 0ed027c 3393f9d 0ed027c 970efde 0ed027c 1467c05 3393f9d 0ed027c 3393f9d 0ed027c 3393f9d 0ed027c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
import json
import os
from qt.components import ComboWithLabel, RadioWithLabel, SpinWithLabel
from qt.components.bonuses import BonusesWidget
from qt.components.config import ConfigWidget
from qt.components.equipments import EquipmentsWidget
from qt.components.consumables import ConsumablesWidget
from qt.components.recipes import RecipesWidget
from qt.components.talents import TalentsWidget
from qt.components.top import TopWidget
from utils.parser import Parser
if not os.path.exists("config"):
CONFIG = {}
else:
CONFIG = json.load(open("config", encoding="utf-8"))
def config_script(
parser: Parser, config_widget: ConfigWidget,
talent_widget: TalentsWidget, recipe_widget: RecipesWidget,
equipments_widget: EquipmentsWidget, consumable_widget: ConsumablesWidget, bonus_widget: BonusesWidget):
def load_equipments(config):
if not config:
return
for label, equipment in equipments_widget.items():
if 'equipment' not in config[label]:
continue
else:
index = equipment.equipment.combo_box.findText(config[label]['equipment'])
equipment.equipment.combo_box.setCurrentIndex(index)
equipment.strength_level.combo_box.setCurrentIndex(config[label]['strength_level'])
if 'enchant' in config[label]:
index = equipment.enchant.combo_box.findText(config[label]['enchant'])
equipment.enchant.combo_box.setCurrentIndex(index)
if 'special_enchant' in config[label]:
if equipment.special_enchant.radio_button.isChecked() != config[label]['special_enchant']:
equipment.special_enchant.radio_button.click()
if 'embed_levels' in config[label]:
for i, embed_level in enumerate(equipment.embed_levels):
embed_level.combo_box.setCurrentIndex(config[label]['embed_levels'][i])
if 'stone_level' in config[label]:
equipment.stone_level.combo_box.setCurrentIndex(config[label]['stone_level'])
if 'stone_attrs' in config[label]:
for i, stone_attr in enumerate(equipment.stone_attrs):
index = equipment.stone_attrs[i].combo_box.findText(config[label]['stone_attrs'][i])
stone_attr.combo_box.setCurrentIndex(index)
def load_consumables(config):
for label, consumable in consumable_widget.items():
if isinstance(consumable, ComboWithLabel):
consumable.combo_box.setCurrentText(config[label])
elif isinstance(consumable, RadioWithLabel):
if consumable.radio_button.isChecked() != config[label]:
consumable.radio_button.click()
def load_bonuses(config):
bonus_widget.formation.formation.combo_box.setCurrentText(config['formation']['formation'])
bonus_widget.formation.core_rate.spin_box.setValue(config['formation']['core_rate'])
bonus_widget.formation.rate.spin_box.setValue(config['formation']['rate'])
for label, value in config['team_gains'].items():
team_gain = bonus_widget.team_gains[label]
if isinstance(value, bool):
if team_gain.radio_button.isChecked() != value:
team_gain.radio_button.click()
elif isinstance(value, dict):
for sub_label, sub_value in value.items():
sub_team_gain = team_gain[sub_label]
if isinstance(sub_team_gain, ComboWithLabel):
sub_team_gain.combo_box.setCurrentText(sub_value)
elif isinstance(sub_team_gain, SpinWithLabel):
sub_team_gain.spin_box.setValue(config['team_gains'][label][sub_label])
def load_recipes(config):
for i, recipes in enumerate(config):
for selected_item in recipe_widget.recipes[i].list.selectedItems():
selected_item.setSelected(False)
def load_config():
config_name = config_widget.config_select.combo_box.currentText()
config = CONFIG.get(parser.current_school.school, {}).get(config_name, {})
if not config:
return
category = config_widget.config_category.combo_box.currentText()
if category == "ε
¨ι¨":
load_equipments(config.get("equipments"))
load_consumables(config.get("consumables"))
load_bonuses(config.get("bonuses"))
elif category == "θ£
ε€":
load_equipments(config.get("equipments"))
elif category == "ζΆθε":
load_consumables(config.get("consumables"))
elif category == "ε’η":
load_bonuses(config.get("bonuses"))
config_widget.config_name.text_browser.setText(config_name)
config_widget.load_config.clicked.connect(load_config)
def save_equipments(config):
for label, equipment in equipments_widget.items():
config[label] = {}
if not (text := equipment.equipment.combo_box.currentText()):
continue
else:
config[label]['equipment'] = text
config[label]['strength_level'] = equipment.strength_level.combo_box.currentIndex()
if equipment.enchant:
config[label]['enchant'] = equipment.enchant.combo_box.currentText()
if equipment.special_enchant:
config[label]['special_enchant'] = equipment.special_enchant.radio_button.isChecked()
if equipment.embed_levels:
config[label]['embed_levels'] = [
embed_level.combo_box.currentIndex() for embed_level in equipment.embed_levels
]
if equipment.stone_level:
config[label]['stone_level'] = equipment.stone_level.combo_box.currentIndex()
if equipment.stone_attrs:
config[label]['stone_attrs'] = [
stone_attr.combo_box.currentText() for stone_attr in equipment.stone_attrs
]
def save_consumables(config):
for label, consumable in consumable_widget.items():
if isinstance(consumable, ComboWithLabel):
config[label] = consumable.combo_box.currentText()
elif isinstance(consumable, RadioWithLabel):
config[label] = consumable.radio_button.isChecked()
def save_bonuses(config):
config['formation']['formation'] = bonus_widget.formation.formation.combo_box.currentText()
config['formation']['core_rate'] = bonus_widget.formation.core_rate.spin_box.value()
config['formation']['rate'] = bonus_widget.formation.rate.spin_box.value()
for label, team_gain in bonus_widget.team_gains.items():
if isinstance(team_gain, RadioWithLabel):
config['team_gains'][label] = team_gain.radio_button.isChecked()
elif isinstance(team_gain, dict):
config['team_gains'][label] = {}
for sub_label, sub_team_gain in team_gain.items():
if isinstance(sub_team_gain, ComboWithLabel):
config['team_gains'][label][sub_label] = sub_team_gain.combo_box.currentText()
elif isinstance(sub_team_gain, SpinWithLabel):
config['team_gains'][label][sub_label] = sub_team_gain.spin_box.value()
def save_recipes(config):
for recipe in recipe_widget.values():
if selected_items := recipe.list.selectedItems():
config.append(selected_items)
def save_config():
config_name = config_widget.config_name.text_browser.text()
school = parser.current_school.school
if school not in CONFIG:
CONFIG[school] = {}
if config_name not in CONFIG[school]:
CONFIG[school][config_name] = {
"equipments": {},
"consumables": {},
"bonuses": {"formation": {}, "team_gains": {}},
"talents": [],
"recipes": []
}
save_equipments(CONFIG[school][config_name]['equipments'])
save_consumables(CONFIG[school][config_name]['consumables'])
save_bonuses(CONFIG[school][config_name]['bonuses'])
# save_recipes(CONFIG[parser.school.school][config_name]['recipes'])
json.dump(CONFIG, open("config", "w", encoding="utf-8"), ensure_ascii=False)
config_widget.config_select.set_items(
list(CONFIG.get(school, {})), keep_index=True, default_index=-1
)
config_widget.save_config.clicked.connect(save_config)
def delete_config():
config_name = config_widget.config_name.text_browser.text()
school = parser.current_school.school
if config_name not in CONFIG.get(school, {}):
return
CONFIG[school].pop(config_name)
json.dump(CONFIG, open("config", "w", encoding="utf-8"), ensure_ascii=False)
config_widget.config_select.set_items(list(CONFIG.get(school, {})), default_index=-1)
config_widget.config_name.text_browser.clear()
config_widget.delete_config.clicked.connect(delete_config)
|