File size: 4,289 Bytes
5825182
f0b1638
88de31c
970efde
88de31c
2452398
f0b1638
2452398
f0b1638
 
 
 
 
5825182
970efde
5825182
f0b1638
2452398
970efde
 
 
f0b1638
 
 
 
 
2452398
970efde
 
 
2452398
 
 
 
f0b1638
 
 
2f63a42
2452398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88de31c
 
 
 
 
 
 
 
 
3ed500d
 
 
 
 
 
88de31c
 
 
 
 
 
 
 
 
 
 
 
 
 
f0b1638
970efde
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
from PySide6.QtWidgets import QFileDialog, QWidget

from general.consumables import FOODS, POTIONS, WEAPON_ENCHANTS, SNACKS, WINES, SPREADS
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 general.consumables import FOODS, POTIONS, WEAPON_ENCHANTS, SPREADS, SNACKS, WINES
# from general.gains.formation import FORMATIONS
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):
    parser = Parser()

    def upload_logs():
        file_name = QFileDialog(top_widget, "Choose File").getOpenFileName()
        parser(file_name[0])
        school = parser.school
        """ 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)
        dashboard_widget.fight_select.set_items(record_index)
        dashboard_widget.duration.set_value(parser.duration(parser.record_index[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[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(MAX_RECIPES):
                recipes_widget[i].list.item(n).setSelected(True)
            recipes_widget[i].show()

        """ Update equipment options """
        for equipment_widget in equipments_widget.values():
            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)
            current_equipment = equipment_widget.equipment.combo_box.currentText()
            if current_equipment in choices:
                default_index = choices.index(current_equipment)
            else:
                default_index = -1
            equipment_widget.equipment.set_items(choices, default_index=default_index)

            if equipment_widget.stones_json:
                equipment_widget.stone_level.combo_box.setCurrentIndex(MAX_STONE_LEVEL)

        """ Update consumable options """
        consumables_widget.major_food.set_items([""] + FOODS[school.major])
        consumables_widget.minor_food.set_items([""] + FOODS[school.kind] + FOODS[""])
        consumables_widget.major_potion.set_items([""] + POTIONS[school.major])
        consumables_widget.minor_potion.set_items([""] + POTIONS[school.kind] + POTIONS[""])
        consumables_widget.weapon_enchant.set_items([""] + WEAPON_ENCHANTS[school.kind])
        consumables_widget.home_snack.set_items([""] + SNACKS[school.kind] + SNACKS[""])
        consumables_widget.home_wine.set_items([""] + WINES[school.major] + WINES[""])
        consumables_widget.spread.set_items([""] + SPREADS[school.major] + SPREADS[school.kind])

        config_widget.show()
        bottom_widget.show()

    top_widget.upload_button.clicked.connect(upload_logs)

    return parser