Spaces:
Runtime error
Runtime error
File size: 6,008 Bytes
5825182 f0b1638 88de31c ef62e40 970efde 88de31c 2452398 f0b1638 2452398 f0b1638 5825182 970efde 5825182 f0b1638 2452398 ef62e40 f0b1638 ef62e40 f0b1638 3393f9d 970efde 2452398 3393f9d f0b1638 2f63a42 3393f9d 0ed027c 3393f9d 0ed027c 2452398 60d173b 2452398 88de31c 0ed027c 88de31c 0ed027c 88de31c 0ed027c 3393f9d 0ed027c 88de31c 0ed027c 88de31c ef62e40 0ed027c f0b1638 970efde f0b1638 3393f9d f0b1638 |
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 |
from PySide6.QtWidgets import QFileDialog, QWidget
from general.consumables import FOODS, POTIONS, WEAPON_ENCHANTS, SNACKS, WINES, SPREADS
from general.gains.formation import FORMATIONS
from qt.components.bonuses import BonusesWidget
from qt.components.config import ConfigWidget
from qt.components.consumables import ConsumablesWidget
from qt.components.dashboard import DashboardWidget
from qt.components.equipments import EquipmentsWidget
from qt.components.recipes import RecipesWidget
from qt.components.talents import TalentsWidget
from qt.components.top import TopWidget
from qt.constant import MAX_RECIPES, MAX_STONE_LEVEL
from qt.scripts.config import CONFIG
from utils.parser import Parser
def top_script(
top_widget: TopWidget, config_widget: ConfigWidget, bottom_widget: QWidget,
dashboard_widget: DashboardWidget, talents_widget: TalentsWidget, recipes_widget: RecipesWidget,
equipments_widget: EquipmentsWidget, consumables_widget: ConsumablesWidget, bonus_widget: BonusesWidget
):
parser = Parser()
def upload_logs():
file_name = QFileDialog(top_widget, "Choose File").getOpenFileName()
if not file_name[0]:
return
parser(file_name[0])
top_widget.player_select.set_items(
[parser.id2name[player_id] for player_id in parser.school], keep_index=True, default_index=0
)
top_widget.player_select.show()
select_player(None)
top_widget.upload_button.clicked.connect(upload_logs)
def select_player(_):
player_name = top_widget.player_select.combo_box.currentText()
if not player_name:
return
player_id = parser.name2id[player_name]
parser.current_player = player_id
school = parser.school[player_id]
""" Update config """
config_choices = list(CONFIG.get(school.school, {}))
config_widget.config_select.set_items(config_choices, default_index=-1)
""" Update dashboard """
record_index = list(parser.record_index[player_id])
dashboard_widget.fight_select.set_items(record_index, default_index=0)
dashboard_widget.duration.set_value(parser.duration(player_id, parser.record_index[player_id][record_index[0]]))
""" Update talent options """
for i, talent_widget in enumerate(talents_widget.values()):
talents = school.talents[i]
default_index = talents.index(parser.select_talents[player_id][i]) + 1
talent_widget.set_items(
[""] + [school.talent_decoder[talent] for talent in talents], default_index=default_index
)
""" Update recipe options """
for recipe_widget in recipes_widget.values():
recipe_widget.list.clear()
recipe_widget.hide()
for i, (skill, recipes) in enumerate(school.recipes.items()):
recipes_widget[i].set_label(skill)
recipes_widget[i].set_items(recipes)
for n in range(min(MAX_RECIPES, len(recipes))):
recipes_widget[i].list.item(n).setSelected(True)
recipes_widget[i].show()
""" Update equipment options """
for label, equipment_widget in equipments_widget.items():
choices = [""]
for name, detail in equipment_widget.equipment_json.items():
if detail['kind'] not in (school.kind, school.major):
continue
if detail['school'] not in ("精简", "通用", school.school):
continue
choices.append(name)
equipment_widget.equipment.set_items(choices, keep_index=True)
if equipment_widget.stones_json:
if not (current_index := equipment_widget.stone_level.combo_box.currentIndex()):
current_index = MAX_STONE_LEVEL
equipment_widget.stone_level.combo_box.setCurrentIndex(current_index)
if select_equipment := parser.select_equipments[player_id].get(label, {}):
if equipment := equipment_widget.equipment_mapping.get(select_equipment['equipment']):
if equipment in equipment_widget.equipment.items:
equipment_widget.equipment.combo_box.setCurrentText(equipment)
if enchant := equipment_widget.enchant_mapping.get(select_equipment['enchant']):
if enchant in equipment_widget.enchant.items:
equipment_widget.enchant.combo_box.setCurrentText(enchant)
equipment_widget.strength_level.combo_box.setCurrentIndex(select_equipment['strength_level'])
for i, embed_level in enumerate(select_equipment['embed_levels']):
equipment_widget.embed_levels[i].combo_box.setCurrentIndex(embed_level)
""" Update consumable options """
consumables_widget.major_food.set_items([""] + FOODS[school.major], keep_index=True)
consumables_widget.minor_food.set_items([""] + FOODS[school.kind] + FOODS[""], keep_index=True)
consumables_widget.major_potion.set_items([""] + POTIONS[school.major], keep_index=True)
consumables_widget.minor_potion.set_items([""] + POTIONS[school.kind] + POTIONS[""], keep_index=True)
consumables_widget.weapon_enchant.set_items([""] + WEAPON_ENCHANTS[school.kind], keep_index=True)
consumables_widget.home_snack.set_items([""] + SNACKS[school.kind] + SNACKS[""], keep_index=True)
consumables_widget.home_wine.set_items([""] + WINES[school.major] + WINES[""], keep_index=True)
consumables_widget.spread.set_items([""] + SPREADS[school.major] + SPREADS[school.kind], keep_index=True)
""" Update bonus options """
bonus_widget.formation.formation.set_items([""] + FORMATIONS[school.kind] + FORMATIONS[""], keep_index=True)
config_widget.show()
bottom_widget.show()
top_widget.player_select.combo_box.currentTextChanged.connect(select_player)
return parser
|