mirror of
https://github.com/283375/arcaea-offline-pyside-ui.git
synced 2025-07-01 12:26:26 +00:00
wip: TabTools_StepCalculator
This commit is contained in:
@ -1,3 +1,14 @@
|
||||
import logging
|
||||
|
||||
from arcaea_offline.calculate.world_step import (
|
||||
LegacyMapStepBooster,
|
||||
MemoriesStepBooster,
|
||||
PartnerBonus,
|
||||
PlayResult,
|
||||
calculate_play_rating_from_step,
|
||||
calculate_step,
|
||||
calculate_step_original,
|
||||
)
|
||||
from PySide6.QtCore import QEasingCurve, QObject, QSize, Qt, QTimeLine
|
||||
from PySide6.QtGui import QIcon, QPainter, QPaintEvent, QPixmap
|
||||
from PySide6.QtWidgets import (
|
||||
@ -12,6 +23,8 @@ from ui.designer.tabs.tabTools.tabTools_StepCalculator_ui import (
|
||||
Ui_TabTools_StepCalculator,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class MapTypeListWidgetWidget(QLabel):
|
||||
def paintEvent(self, e: QPaintEvent) -> None:
|
||||
@ -108,6 +121,120 @@ class TabTools_StepCalculator(Ui_TabTools_StepCalculator, QWidget):
|
||||
self.mapTypeButtonGroup.addButton(self.mapTypeLegacyPlayRadioButton, 0)
|
||||
self.mapTypeButtonGroup.addButton(self.mapTypeLegacyPlayPlusRadioButton, 1)
|
||||
self.mapTypeButtonGroup.addButton(self.mapTypePlayRadioButton, 2)
|
||||
|
||||
self.mapTypeButtonGroup.idToggled.connect(self.stackedWidget.setCurrentIndex)
|
||||
self.mapTypePlayRadioButton.setChecked(True)
|
||||
|
||||
self.legacyPlayPlusStaminaButtonGroup = QButtonGroup(self)
|
||||
self.legacyPlayPlusStaminaButtonGroup.addButton(
|
||||
self.legacyPlayPlus_x2StaminaRadioButton, 2
|
||||
)
|
||||
self.legacyPlayPlusStaminaButtonGroup.addButton(
|
||||
self.legacyPlayPlus_x4StaminaRadioButton, 4
|
||||
)
|
||||
self.legacyPlayPlusStaminaButtonGroup.addButton(
|
||||
self.legacyPlayPlus_x6StaminaRadioButton, 6
|
||||
)
|
||||
self.legacyPlayPlus_x2StaminaRadioButton.setChecked(True)
|
||||
|
||||
self.legacyPlayPlusFragmentsButtonGroup = QButtonGroup(self)
|
||||
self.legacyPlayPlusFragmentsButtonGroup.addButton(
|
||||
self.legacyPlayPlus_x11fragRadioButton, 100
|
||||
)
|
||||
self.legacyPlayPlusFragmentsButtonGroup.addButton(
|
||||
self.legacyPlayPlus_x125fragRadioButton, 250
|
||||
)
|
||||
self.legacyPlayPlusFragmentsButtonGroup.addButton(
|
||||
self.legacyPlayPlus_x15fragRadioButton, 500
|
||||
)
|
||||
|
||||
self.mapTypeButtonGroup.buttonToggled.connect(self.tryCalculate)
|
||||
self.legacyPlayPlusStaminaButtonGroup.buttonToggled.connect(self.tryCalculate)
|
||||
self.legacyPlayPlusFragmentsButtonGroup.buttonToggled.connect(self.tryCalculate)
|
||||
self.play_memoryBoostCheckBox.toggled.connect(self.tryCalculate)
|
||||
self.partnerStepValueSpinBox.valueChanged.connect(self.tryCalculate)
|
||||
self.partnerSkillGroupBox.toggled.connect(self.tryCalculate)
|
||||
self.partnerSkillStepBonusLineEdit.textChanged.connect(self.tryCalculate)
|
||||
self.partnerSkillFinalMultiplierLineEdit.textChanged.connect(self.tryCalculate)
|
||||
self.calculate_toStep_playResultSpinBox.valueChanged.connect(self.tryCalculate)
|
||||
self.calculate_fromStep_targetStepSpinBox.valueChanged.connect(
|
||||
self.tryCalculate
|
||||
)
|
||||
|
||||
def toStepPlayResult(self):
|
||||
return PlayResult(
|
||||
play_rating=self.calculate_toStep_playResultSpinBox.value(),
|
||||
partner_step=self.partnerStepValueSpinBox.value(),
|
||||
)
|
||||
|
||||
def partnerBonus(self):
|
||||
if self.partnerSkillGroupBox.isChecked():
|
||||
try:
|
||||
partnerBonus = PartnerBonus(
|
||||
step_bonus=self.partnerSkillStepBonusLineEdit.text(),
|
||||
final_multiplier=self.partnerSkillFinalMultiplierLineEdit.text(),
|
||||
)
|
||||
partnerBonus.step_bonus
|
||||
partnerBonus.final_multiplier
|
||||
return partnerBonus
|
||||
except Exception:
|
||||
return PartnerBonus()
|
||||
|
||||
return PartnerBonus()
|
||||
|
||||
def stepBooster(self):
|
||||
if self.mapTypeButtonGroup.checkedId() == 1:
|
||||
# Legacy Play+
|
||||
stamina = self.legacyPlayPlusStaminaButtonGroup.checkedId()
|
||||
if self.legacyPlayPlus_useFragmentsGroupBox.isChecked():
|
||||
fragment = self.legacyPlayPlusFragmentsButtonGroup.checkedId()
|
||||
fragment = fragment if fragment > -1 else None
|
||||
else:
|
||||
fragment = None
|
||||
return None if stamina < 0 else LegacyMapStepBooster(stamina, fragment)
|
||||
elif self.mapTypeButtonGroup.checkedId() == 2:
|
||||
# General Music Play
|
||||
if self.play_memoryBoostCheckBox.isChecked():
|
||||
return MemoriesStepBooster()
|
||||
else:
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
|
||||
def tryCalculate(self):
|
||||
if self.partnerStepValueSpinBox.value() <= 0.0:
|
||||
self.calculate_toStep_resultLabel.setText("...")
|
||||
self.calculate_fromStep_resultLabel.setText("...")
|
||||
return
|
||||
|
||||
# toStep
|
||||
try:
|
||||
playResult = self.toStepPlayResult()
|
||||
partnerBonus = self.partnerBonus()
|
||||
stepBooster = self.stepBooster()
|
||||
|
||||
stepOriginal = calculate_step_original(
|
||||
playResult, partner_bonus=partnerBonus, step_booster=stepBooster
|
||||
)
|
||||
step = calculate_step(
|
||||
playResult, partner_bonus=partnerBonus, step_booster=stepBooster
|
||||
)
|
||||
self.calculate_toStep_resultLabel.setText(f"{step}<br>({stepOriginal})")
|
||||
except Exception:
|
||||
logger.exception("Cannot calculate toStep")
|
||||
self.calculate_toStep_resultLabel.setText("...")
|
||||
|
||||
# fromStep
|
||||
try:
|
||||
self.calculate_fromStep_resultLabel.setText(
|
||||
str(
|
||||
calculate_play_rating_from_step(
|
||||
self.calculate_fromStep_targetStepSpinBox.value(),
|
||||
self.partnerStepValueSpinBox.value(),
|
||||
partner_bonus=partnerBonus,
|
||||
step_booster=stepBooster,
|
||||
)
|
||||
)
|
||||
)
|
||||
except Exception:
|
||||
logger.exception("Cannot calculate fromStep")
|
||||
self.calculate_fromStep_resultLabel.setText("...")
|
||||
|
Reference in New Issue
Block a user