Add settings for scaling income.

This adds both player and enemy income multiplier options. Note that
previously the AI was only getting 75% of their income. I've changed
that to give them their full income by default since the player can now
influence it.
This commit is contained in:
Dan Albert
2020-12-05 18:06:57 -08:00
parent f1a2602cfd
commit bac47dad83
7 changed files with 95 additions and 60 deletions

View File

@@ -0,0 +1,20 @@
from typing import Optional
from PySide2.QtWidgets import QSpinBox
class TenthsSpinner(QSpinBox):
def __init__(self, minimum: Optional[int] = None,
maximum: Optional[int] = None,
initial: Optional[int] = None) -> None:
super().__init__()
if minimum is not None:
self.setMinimum(minimum)
if maximum is not None:
self.setMaximum(maximum)
if initial is not None:
self.setValue(initial)
def textFromValue(self, val: int) -> str:
return f"X {val / 10:.1f}"

View File

@@ -0,0 +1,26 @@
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QGridLayout, QLabel, QSlider
from qt_ui.widgets.floatspinners import TenthsSpinner
class TenthsSpinSlider(QGridLayout):
def __init__(self, label: str, minimum: int, maximum: int,
initial: int) -> None:
super().__init__()
self.addWidget(QLabel(label), 0, 0)
slider = QSlider(Qt.Horizontal)
slider.setMinimum(minimum)
slider.setMaximum(maximum)
slider.setValue(initial)
self.spinner = TenthsSpinner(minimum, maximum, initial)
slider.valueChanged.connect(lambda x: self.spinner.setValue(x))
self.spinner.valueChanged.connect(lambda x: slider.setValue(x))
self.addWidget(slider, 1, 0)
self.addWidget(self.spinner, 1, 1)
@property
def value(self) -> float:
return self.spinner.value() / 10