mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-17 04:27:45 -07:00
- Add CommandZone and CommandZoneLogic for commander - Add CommanderTaxCounter - Add counter active state protocol (show/hide tax counters) - Add "Enable Command Zone" option in game creation dialogs - Add context menu actions for command zone operations Took 9 minutes Took 11 minutes
91 lines
3.6 KiB
C++
91 lines
3.6 KiB
C++
#include "dlg_local_game_options.h"
|
|
|
|
#include "../../../client/settings/cache_settings.h"
|
|
|
|
#include <QCheckBox>
|
|
#include <QDialogButtonBox>
|
|
#include <QGridLayout>
|
|
#include <QGroupBox>
|
|
#include <QLabel>
|
|
#include <QSpinBox>
|
|
#include <QVBoxLayout>
|
|
|
|
DlgLocalGameOptions::DlgLocalGameOptions(QWidget *parent) : QDialog(parent)
|
|
{
|
|
numberPlayersLabel = new QLabel(tr("Players:"), this);
|
|
numberPlayersEdit = new QSpinBox(this);
|
|
numberPlayersEdit->setMinimum(1);
|
|
numberPlayersEdit->setMaximum(8);
|
|
numberPlayersEdit->setValue(1);
|
|
numberPlayersLabel->setBuddy(numberPlayersEdit);
|
|
|
|
auto *generalGrid = new QGridLayout;
|
|
generalGrid->setContentsMargins(5, 5, 5, 5);
|
|
generalGrid->addWidget(numberPlayersLabel, 0, 0);
|
|
generalGrid->addWidget(numberPlayersEdit, 0, 1);
|
|
generalGroupBox = new QGroupBox(tr("General"), this);
|
|
generalGroupBox->setLayout(generalGrid);
|
|
|
|
startingLifeTotalLabel = new QLabel(tr("Starting life total:"), this);
|
|
startingLifeTotalEdit = new QSpinBox(this);
|
|
startingLifeTotalEdit->setMinimum(-999999999);
|
|
startingLifeTotalEdit->setMaximum(999999999);
|
|
startingLifeTotalEdit->setValue(20);
|
|
startingLifeTotalLabel->setBuddy(startingLifeTotalEdit);
|
|
|
|
enableCommandZoneCheckBox = new QCheckBox(tr("Enable command zone"), this);
|
|
|
|
auto *gameSetupGrid = new QGridLayout;
|
|
gameSetupGrid->setContentsMargins(5, 5, 5, 5);
|
|
gameSetupGrid->addWidget(startingLifeTotalLabel, 0, 0);
|
|
gameSetupGrid->addWidget(startingLifeTotalEdit, 0, 1);
|
|
gameSetupGrid->addWidget(enableCommandZoneCheckBox, 1, 0, 1, 2);
|
|
gameSetupOptionsGroupBox = new QGroupBox(tr("Game setup options"), this);
|
|
gameSetupOptionsGroupBox->setLayout(gameSetupGrid);
|
|
|
|
rememberSettingsCheckBox = new QCheckBox(tr("Remember settings"), this);
|
|
|
|
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
|
|
connect(buttonBox, &QDialogButtonBox::accepted, this, &DlgLocalGameOptions::actOK);
|
|
connect(buttonBox, &QDialogButtonBox::rejected, this, &DlgLocalGameOptions::reject);
|
|
|
|
auto *mainLayout = new QVBoxLayout;
|
|
mainLayout->addWidget(generalGroupBox);
|
|
mainLayout->addWidget(gameSetupOptionsGroupBox);
|
|
mainLayout->addWidget(rememberSettingsCheckBox);
|
|
mainLayout->addWidget(buttonBox);
|
|
setLayout(mainLayout);
|
|
|
|
rememberSettingsCheckBox->setChecked(SettingsCache::instance().getLocalGameRememberSettings());
|
|
if (rememberSettingsCheckBox->isChecked()) {
|
|
numberPlayersEdit->setValue(SettingsCache::instance().getLocalGameMaxPlayers());
|
|
startingLifeTotalEdit->setValue(SettingsCache::instance().getLocalGameStartingLifeTotal());
|
|
enableCommandZoneCheckBox->setChecked(SettingsCache::instance().getLocalGameEnableCommandZone());
|
|
}
|
|
|
|
setWindowTitle(tr("Local game options"));
|
|
setFixedHeight(sizeHint().height());
|
|
|
|
numberPlayersEdit->setFocus();
|
|
}
|
|
|
|
void DlgLocalGameOptions::actOK()
|
|
{
|
|
SettingsCache::instance().setLocalGameRememberSettings(rememberSettingsCheckBox->isChecked());
|
|
if (rememberSettingsCheckBox->isChecked()) {
|
|
SettingsCache::instance().setLocalGameMaxPlayers(numberPlayersEdit->value());
|
|
SettingsCache::instance().setLocalGameStartingLifeTotal(startingLifeTotalEdit->value());
|
|
SettingsCache::instance().setLocalGameEnableCommandZone(enableCommandZoneCheckBox->isChecked());
|
|
}
|
|
|
|
accept();
|
|
}
|
|
|
|
LocalGameOptions DlgLocalGameOptions::getOptions() const
|
|
{
|
|
return LocalGameOptions{
|
|
.numberPlayers = numberPlayersEdit->value(),
|
|
.startingLifeTotal = startingLifeTotalEdit->value(),
|
|
.enableCommandZone = enableCommandZoneCheckBox->isChecked(),
|
|
};
|
|
}
|