45 GBoxOptions->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); |
45 GBoxOptions->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); |
46 mainLayout.addWidget(GBoxOptions); |
46 mainLayout.addWidget(GBoxOptions); |
47 |
47 |
48 QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions); |
48 QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions); |
49 |
49 |
50 GameSchemes = new QComboBox(GBoxOptions); |
50 GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Gameplay"), GBoxOptions), 0, 0); |
51 GBoxOptionsLayout->addWidget(GameSchemes, 0, 2); |
51 |
|
52 Scripts = new QComboBox(GBoxOptions); |
|
53 GBoxOptionsLayout->addWidget(Scripts, 0, 1); |
|
54 |
|
55 Scripts->addItem(QComboBox::tr("Normal")); |
|
56 Scripts->insertSeparator(1); |
|
57 |
|
58 for (int i = 0; i < scriptList->size(); ++i) { |
|
59 QString script = (*scriptList)[i].remove(".lua", Qt::CaseInsensitive); |
|
60 QList<QVariant> scriptInfo; |
|
61 QFile scriptCfgFile(QString("%1/Scripts/Multiplayer/%2.cfg").arg(datadir->absolutePath()).arg(script)); |
|
62 if (scriptCfgFile.exists() && scriptCfgFile.open(QFile::ReadOnly)) { |
|
63 QString scheme; |
|
64 QString weapons; |
|
65 QTextStream input(&scriptCfgFile); |
|
66 input >> scheme; |
|
67 input >> weapons; |
|
68 if (scheme.isEmpty()) |
|
69 scheme = "locked"; |
|
70 scheme.replace("_", " "); |
|
71 if (weapons.isEmpty()) |
|
72 weapons = "locked"; |
|
73 weapons.replace("_", " "); |
|
74 scriptInfo.push_back(scheme); |
|
75 scriptInfo.push_back(weapons); |
|
76 scriptCfgFile.close(); |
|
77 } |
|
78 else |
|
79 { |
|
80 scriptInfo.push_back("locked"); |
|
81 scriptInfo.push_back("locked"); |
|
82 } |
|
83 Scripts->addItem(script, scriptInfo); |
|
84 } |
|
85 |
|
86 connect(Scripts, SIGNAL(currentIndexChanged(int)), this, SLOT(scriptChanged(int))); |
|
87 |
|
88 QWidget *SchemeWidget = new QWidget(GBoxOptions); |
|
89 GBoxOptionsLayout->addWidget(SchemeWidget, 1, 0, 1, 2); |
|
90 |
|
91 QGridLayout *SchemeWidgetLayout = new QGridLayout(SchemeWidget); |
|
92 SchemeWidgetLayout->setMargin(0); |
|
93 |
|
94 GameSchemes = new QComboBox(SchemeWidget); |
|
95 SchemeWidgetLayout->addWidget(GameSchemes, 0, 2); |
52 connect(GameSchemes, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeChanged(int))); |
96 connect(GameSchemes, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeChanged(int))); |
53 |
97 |
54 GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), GBoxOptions), 0, 0); |
98 SchemeWidgetLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), SchemeWidget), 0, 0); |
55 |
99 |
56 QPixmap pmEdit(":/res/edit.png"); |
100 QPixmap pmEdit(":/res/edit.png"); |
57 |
101 |
58 QPushButton * goToSchemePage = new QPushButton(GBoxOptions); |
102 QPushButton * goToSchemePage = new QPushButton(SchemeWidget); |
59 goToSchemePage->setToolTip(tr("Edit schemes")); |
103 goToSchemePage->setToolTip(tr("Edit schemes")); |
60 goToSchemePage->setIconSize(pmEdit.size()); |
104 goToSchemePage->setIconSize(pmEdit.size()); |
61 goToSchemePage->setIcon(pmEdit); |
105 goToSchemePage->setIcon(pmEdit); |
62 goToSchemePage->setMaximumWidth(pmEdit.width() + 6); |
106 goToSchemePage->setMaximumWidth(pmEdit.width() + 6); |
63 GBoxOptionsLayout->addWidget(goToSchemePage, 0, 3); |
107 SchemeWidgetLayout->addWidget(goToSchemePage, 0, 3); |
64 connect(goToSchemePage, SIGNAL(clicked()), this, SLOT(jumpToSchemes())); |
108 connect(goToSchemePage, SIGNAL(clicked()), this, SLOT(jumpToSchemes())); |
65 |
109 |
66 GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Weapons"), GBoxOptions), 1, 0); |
110 SchemeWidgetLayout->addWidget(new QLabel(QLabel::tr("Weapons"), SchemeWidget), 1, 0); |
67 |
111 |
68 WeaponsName = new QComboBox(GBoxOptions); |
112 WeaponsName = new QComboBox(SchemeWidget); |
69 GBoxOptionsLayout->addWidget(WeaponsName, 1, 2); |
113 SchemeWidgetLayout->addWidget(WeaponsName, 1, 2); |
70 |
114 |
71 connect(WeaponsName, SIGNAL(currentIndexChanged(int)), this, SLOT(ammoChanged(int))); |
115 connect(WeaponsName, SIGNAL(currentIndexChanged(int)), this, SLOT(ammoChanged(int))); |
72 |
116 |
73 QPushButton * goToWeaponPage = new QPushButton(GBoxOptions); |
117 QPushButton * goToWeaponPage = new QPushButton(SchemeWidget); |
74 goToWeaponPage->setToolTip(tr("Edit weapons")); |
118 goToWeaponPage->setToolTip(tr("Edit weapons")); |
75 goToWeaponPage->setIconSize(pmEdit.size()); |
119 goToWeaponPage->setIconSize(pmEdit.size()); |
76 goToWeaponPage->setIcon(pmEdit); |
120 goToWeaponPage->setIcon(pmEdit); |
77 goToWeaponPage->setMaximumWidth(pmEdit.width() + 6); |
121 goToWeaponPage->setMaximumWidth(pmEdit.width() + 6); |
78 GBoxOptionsLayout->addWidget(goToWeaponPage, 1, 3); |
122 SchemeWidgetLayout->addWidget(goToWeaponPage, 1, 3); |
79 connect(goToWeaponPage, SIGNAL(clicked()), this, SLOT(jumpToWeapons())); |
123 connect(goToWeaponPage, SIGNAL(clicked()), this, SLOT(jumpToWeapons())); |
80 |
124 |
81 //GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Bind schemes with weapons"), GBoxOptions), 2, 0); |
125 //GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Bind schemes with weapons"), GBoxOptions), 2, 0); |
82 |
126 |
83 bindEntries = new QCheckBox(GBoxOptions); |
127 bindEntries = new QCheckBox(SchemeWidget); |
84 bindEntries->setToolTip(tr("When this option is enabled selecting a game scheme will auto-select a weapon")); |
128 bindEntries->setToolTip(tr("When this option is enabled selecting a game scheme will auto-select a weapon")); |
85 bindEntries->setChecked(true); |
129 bindEntries->setChecked(true); |
86 bindEntries->setMaximumWidth(42); |
130 bindEntries->setMaximumWidth(42); |
87 bindEntries->setStyleSheet( "QCheckBox::indicator:checked { image: url(\":/res/lock.png\"); }" |
131 bindEntries->setStyleSheet( "QCheckBox::indicator:checked { image: url(\":/res/lock.png\"); }" |
88 "QCheckBox::indicator:unchecked { image: url(\":/res/unlock.png\"); }" ); |
132 "QCheckBox::indicator:unchecked { image: url(\":/res/unlock.png\"); }" ); |
89 GBoxOptionsLayout->addWidget(bindEntries, 0, 1, 0, 1, Qt::AlignVCenter); |
133 SchemeWidgetLayout->addWidget(bindEntries, 0, 1, 0, 1, Qt::AlignVCenter); |
90 //GBoxOptionsLayout->addWidget(bindEntries, 2, 2); |
134 //GBoxOptionsLayout->addWidget(bindEntries, 2, 2); |
91 |
135 |
92 connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(seedChanged(const QString &))); |
136 connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(seedChanged(const QString &))); |
93 connect(pMapContainer, SIGNAL(mapChanged(const QString &)), this, SLOT(mapChanged(const QString &))); |
137 connect(pMapContainer, SIGNAL(mapChanged(const QString &)), this, SLOT(mapChanged(const QString &))); |
94 connect(pMapContainer, SIGNAL(mapgenChanged(MapGenerator)), this, SLOT(mapgenChanged(MapGenerator))); |
138 connect(pMapContainer, SIGNAL(mapgenChanged(MapGenerator)), this, SLOT(mapgenChanged(MapGenerator))); |
321 |
375 |
322 void GameCFGWidget::mapChanged(const QString & value) |
376 void GameCFGWidget::mapChanged(const QString & value) |
323 { |
377 { |
324 if(pMapContainer->getCurrentIsMission()) |
378 if(pMapContainer->getCurrentIsMission()) |
325 { |
379 { |
326 GameSchemes->setEnabled(false); |
380 Scripts->setEnabled(false); |
327 WeaponsName->setEnabled(false); |
381 Scripts->setCurrentIndex(0); |
328 bindEntries->setEnabled(false); |
382 |
329 GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); |
383 if (pMapContainer->getCurrentScheme() == "locked") |
330 WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); |
384 { |
|
385 GameSchemes->setEnabled(false); |
|
386 GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); |
|
387 } |
|
388 else |
|
389 { |
|
390 GameSchemes->setEnabled(true); |
|
391 int num = GameSchemes->findText(pMapContainer->getCurrentScheme()); |
|
392 if (num != -1) |
|
393 GameSchemes->setCurrentIndex(num); |
|
394 else |
|
395 GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); |
|
396 } |
|
397 |
|
398 if (pMapContainer->getCurrentWeapons() == "locked") |
|
399 { |
|
400 WeaponsName->setEnabled(false); |
|
401 WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); |
|
402 } |
|
403 else |
|
404 { |
|
405 WeaponsName->setEnabled(true); |
|
406 int num = WeaponsName->findText(pMapContainer->getCurrentWeapons()); |
|
407 if (num != -1) |
|
408 WeaponsName->setCurrentIndex(num); |
|
409 else |
|
410 WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); |
|
411 } |
|
412 |
|
413 if (pMapContainer->getCurrentScheme() != "locked" && pMapContainer->getCurrentWeapons() != "locked") |
|
414 bindEntries->setEnabled(true); |
|
415 else |
|
416 bindEntries->setEnabled(false); |
331 } |
417 } |
332 else |
418 else |
333 { |
419 { |
|
420 Scripts->setEnabled(true); |
334 GameSchemes->setEnabled(true); |
421 GameSchemes->setEnabled(true); |
335 WeaponsName->setEnabled(true); |
422 WeaponsName->setEnabled(true); |
336 bindEntries->setEnabled(true); |
423 bindEntries->setEnabled(true); |
337 } |
424 } |
338 emit paramChanged("MAP", QStringList(value)); |
425 emit paramChanged("MAP", QStringList(value)); |