mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Merge pull request #2305 from dydzio0614/unlimited-autosave
Ability to change autosave limit + set autosave prefix
This commit is contained in:
		| @@ -137,7 +137,6 @@ int main(int argc, char * argv[]) | ||||
| 		("nointro,i", "skips intro movies") | ||||
| 		("donotstartserver,d","do not attempt to start server and just connect to it instead server") | ||||
| 		("serverport", po::value<si64>(), "override port specified in config file") | ||||
| 		("saveprefix", po::value<std::string>(), "prefix for auto save files") | ||||
| 		("savefrequency", po::value<si64>(), "limit auto save creation to each N days") | ||||
| 		("lobby", "parameters address, port, uuid to connect ro remote lobby session") | ||||
| 		("lobby-address", po::value<std::string>(), "address to remote lobby") | ||||
| @@ -222,13 +221,6 @@ int main(int argc, char * argv[]) | ||||
| 		else if(s->isNull()) | ||||
| 			s->Integer() = defaultValue; | ||||
| 	}; | ||||
| 	auto setSettingString = [](std::string key, std::string arg, std::string defaultValue) { | ||||
| 		Settings s = settings.write(vstd::split(key, "/")); | ||||
| 		if(::vm.count(arg)) | ||||
| 			s->String() = ::vm[arg].as<std::string>(); | ||||
| 		else if(s->isNull()) | ||||
| 			s->String() = defaultValue; | ||||
| 	}; | ||||
|  | ||||
| 	setSettingBool("session/onlyai", "onlyAI"); | ||||
| 	if(vm.count("headless")) | ||||
| @@ -256,7 +248,6 @@ int main(int argc, char * argv[]) | ||||
|  | ||||
| 	// Init special testing settings | ||||
| 	setSettingInteger("session/serverport", "serverport", 0); | ||||
| 	setSettingString("session/saveprefix", "saveprefix", ""); | ||||
| 	setSettingInteger("general/saveFrequency", "savefrequency", 1); | ||||
|  | ||||
| 	// Initialize logging based on settings | ||||
|   | ||||
| @@ -56,6 +56,7 @@ | ||||
| #include "../lib/mapObjects/CGTownInstance.h" | ||||
| #include "../lib/mapObjects/MiscObjects.h" | ||||
| #include "../lib/mapObjects/ObjectTemplate.h" | ||||
| #include "../lib/mapping/CMapHeader.h" | ||||
| #include "../lib/pathfinder/CGPathNode.h" | ||||
| #include "../lib/CStack.h" | ||||
| #include "../lib/JsonNode.h" | ||||
| @@ -192,24 +193,37 @@ void CPlayerInterface::playerStartsTurn(PlayerColor player) | ||||
|  | ||||
| void CPlayerInterface::performAutosave() | ||||
| { | ||||
| 	std::string prefix = settings["session"]["saveprefix"].String(); | ||||
| 	int frequency = static_cast<int>(settings["general"]["saveFrequency"].Integer()); | ||||
| 	if(firstCall) | ||||
| 	if(frequency > 0 && cb->getDate() % frequency == 0) | ||||
| 	{ | ||||
| 		autosaveCount = getLastIndex(prefix + "Autosave_"); | ||||
| 		bool usePrefix = settings["general"]["useSavePrefix"].Bool(); | ||||
| 		std::string prefix = std::string(); | ||||
|  | ||||
| 		if(firstCall > 0) //new game, not loaded | ||||
| 		if(usePrefix) | ||||
| 		{ | ||||
| 			int index = getLastIndex(prefix + "Newgame_"); | ||||
| 			index %= SAVES_COUNT; | ||||
| 			cb->save("Saves/" + prefix + "Newgame_Autosave_" + std::to_string(index + 1)); | ||||
| 			prefix = settings["general"]["savePrefix"].String(); | ||||
| 			if(prefix.empty()) | ||||
| 			{ | ||||
| 				prefix = cb->getMapHeader()->name.substr(0, 5) + "_"; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		autosaveCount++; | ||||
|  | ||||
| 		int autosaveCountLimit = settings["general"]["autosaveCountLimit"].Integer(); | ||||
| 		if(autosaveCountLimit > 0) | ||||
| 		{ | ||||
| 			cb->save("Saves/" + prefix + "Autosave_" + std::to_string(autosaveCount)); | ||||
| 			autosaveCount %= autosaveCountLimit; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			std::string stringifiedDate = std::to_string(cb->getDate(Date::MONTH)) | ||||
| 					+ std::to_string(cb->getDate(Date::WEEK)) | ||||
| 					+ std::to_string(cb->getDate(Date::DAY_OF_WEEK)); | ||||
|  | ||||
| 			cb->save("Saves/" + prefix + "Autosave_" + stringifiedDate); | ||||
| 		} | ||||
| 		firstCall = 0; | ||||
| 	} | ||||
| 	else if(frequency > 0 && cb->getDate() % frequency == 0) | ||||
| 	{ | ||||
| 		cb->save("Saves/" + prefix + "Autosave_" + std::to_string(autosaveCount++ + 1)); | ||||
| 		autosaveCount %= 5; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -221,7 +235,10 @@ void CPlayerInterface::yourTurn() | ||||
| 		GH.curInt = this; | ||||
|  | ||||
| 		NotificationHandler::notify("Your turn"); | ||||
| 		performAutosave(); | ||||
| 		if(settings["general"]["startTurnAutosave"].Bool()) | ||||
| 		{ | ||||
| 			performAutosave(); | ||||
| 		} | ||||
|  | ||||
| 		if (CSH->howManyPlayerInterfaces() > 1) //hot seat message | ||||
| 		{ | ||||
| @@ -1676,7 +1693,7 @@ void CPlayerInterface::advmapSpellCast(const CGHeroInstance * caster, int spellI | ||||
| 		CCS->soundh->playSound(castSoundPath); | ||||
| } | ||||
|  | ||||
| void CPlayerInterface::tryDiggging(const CGHeroInstance * h) | ||||
| void CPlayerInterface::tryDigging(const CGHeroInstance * h) | ||||
| { | ||||
| 	int msgToShow = -1; | ||||
|  | ||||
|   | ||||
| @@ -64,7 +64,6 @@ class CPlayerInterface : public CGameInterface, public IUpdateable | ||||
| 	// -1 - just loaded game; 1 - just started game; 0 otherwise | ||||
| 	int firstCall; | ||||
| 	int autosaveCount; | ||||
| 	static const int SAVES_COUNT = 5; | ||||
|  | ||||
| 	std::pair<const CCreatureSet *, const CCreatureSet *> lastBattleArmies; | ||||
| 	bool allowBattleReplay = false; | ||||
| @@ -203,9 +202,10 @@ public: // public interface for use by client via LOCPLINT access | ||||
| 	void stopMovement(); | ||||
| 	void moveHero(const CGHeroInstance *h, const CGPath& path); | ||||
|  | ||||
| 	void tryDiggging(const CGHeroInstance *h); | ||||
| 	void tryDigging(const CGHeroInstance *h); | ||||
| 	void showShipyardDialogOrProblemPopup(const IShipyard *obj); //obj may be town or shipyard; | ||||
| 	void proposeLoadingGame(); | ||||
| 	void performAutosave(); | ||||
|  | ||||
| 	///returns true if all events are processed internally | ||||
| 	bool capturedAllEvents(); | ||||
| @@ -237,8 +237,6 @@ private: | ||||
| 	void doMoveHero(const CGHeroInstance *h, CGPath path); | ||||
| 	void setMovementStatus(bool value); | ||||
|  | ||||
| 	/// Performs autosave, if needed according to settings | ||||
| 	void performAutosave(); | ||||
| }; | ||||
|  | ||||
| /// Provides global access to instance of interface of currently active player | ||||
|   | ||||
| @@ -419,6 +419,12 @@ void AdventureMapInterface::hotkeyEndingTurn() | ||||
|  | ||||
| 	LOCPLINT->makingTurn = false; | ||||
| 	LOCPLINT->cb->endTurn(); | ||||
|  | ||||
| 	if(!settings["general"]["startTurnAutosave"].Bool()) | ||||
| 	{ | ||||
| 		LOCPLINT->performAutosave(); | ||||
| 	} | ||||
|  | ||||
| 	mapAudio->onPlayerTurnEnded(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -284,7 +284,7 @@ void AdventureMapShortcuts::digGrail() | ||||
| 	const CGHeroInstance *h = LOCPLINT->localState->getCurrentHero(); | ||||
|  | ||||
| 	if(h && LOCPLINT->makingTurn) | ||||
| 		LOCPLINT->tryDiggging(h); | ||||
| 		LOCPLINT->tryDigging(h); | ||||
| } | ||||
|  | ||||
| void AdventureMapShortcuts::viewPuzzleMap() | ||||
|   | ||||
| @@ -42,7 +42,7 @@ AdventureOptions::AdventureOptions() | ||||
|  | ||||
| 	dig = std::make_shared<CButton>(Point(24, 139), "ADVDIG.DEF", CButton::tooltip(), [&](){ close(); }, EShortcut::ADVENTURE_DIG_GRAIL); | ||||
| 	if(const CGHeroInstance *h = LOCPLINT->localState->getCurrentHero()) | ||||
| 		dig->addCallback(std::bind(&CPlayerInterface::tryDiggging, LOCPLINT, h)); | ||||
| 		dig->addCallback(std::bind(&CPlayerInterface::tryDigging, LOCPLINT, h)); | ||||
| 	else | ||||
| 		dig->block(true); | ||||
| } | ||||
|   | ||||
| @@ -33,8 +33,12 @@ | ||||
| 				"extraDump", | ||||
| 				"userRelativePointer", | ||||
| 				"relativePointerSpeedMultiplier", | ||||
| 				"hapticFeedback", | ||||
| 				"longTouchTimeMilliseconds", | ||||
| 				"hapticFeedback" | ||||
| 				"autosaveCountLimit", | ||||
| 				"useSavePrefix", | ||||
| 				"savePrefix", | ||||
| 				"startTurnAutosave" | ||||
| 			], | ||||
| 			"properties" : { | ||||
| 				"playerName" : { | ||||
| @@ -106,6 +110,22 @@ | ||||
| 				"hapticFeedback" : { | ||||
| 					"type" : "boolean", | ||||
| 					"default" : false | ||||
| 				}, | ||||
| 				"autosaveCountLimit" : { | ||||
| 					"type" : "number", | ||||
| 					"default": 5 | ||||
| 				}, | ||||
| 				"useSavePrefix" : { | ||||
| 					"type": "boolean", | ||||
| 					"default": false | ||||
| 				}, | ||||
| 				"savePrefix" : { | ||||
| 					"type": "string", | ||||
| 					"default": "" | ||||
| 				}, | ||||
| 				"startTurnAutosave" : { | ||||
| 					"type": "boolean", | ||||
| 					"default": false | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
|   | ||||
| @@ -102,6 +102,13 @@ void CSettingsView::loadSettings() | ||||
|  | ||||
| 	ui->comboBoxAutoSave->setCurrentIndex(settings["general"]["saveFrequency"].Integer() > 0 ? 1 : 0); | ||||
|  | ||||
|     ui->spinBoxAutoSaveLimit->setValue(settings["general"]["autosaveCountLimit"].Integer()); | ||||
|  | ||||
|     ui->checkBoxAutoSavePrefix->setChecked(settings["general"]["useSavePrefix"].Bool()); | ||||
|  | ||||
|     ui->lineEditAutoSavePrefix->setText(QString::fromStdString(settings["general"]["savePrefix"].String())); | ||||
|     ui->lineEditAutoSavePrefix->setEnabled(settings["general"]["useSavePrefix"].Bool()); | ||||
|  | ||||
| 	Languages::fillLanguages(ui->comboBoxLanguage, false); | ||||
|  | ||||
| 	std::string cursorType = settings["video"]["cursor"].String(); | ||||
| @@ -500,3 +507,25 @@ void CSettingsView::on_comboBoxAlliedPlayerAI_currentTextChanged(const QString & | ||||
| 	node->String() = arg1.toUtf8().data(); | ||||
| } | ||||
|  | ||||
|  | ||||
| void CSettingsView::on_checkBoxAutoSavePrefix_stateChanged(int arg1) | ||||
| { | ||||
|     Settings node = settings.write["general"]["useSavePrefix"]; | ||||
|     node->Bool() = arg1; | ||||
|     ui->lineEditAutoSavePrefix->setEnabled(arg1); | ||||
| } | ||||
|  | ||||
|  | ||||
| void CSettingsView::on_spinBoxAutoSaveLimit_valueChanged(int arg1) | ||||
| { | ||||
|     Settings node = settings.write["general"]["autosaveCountLimit"]; | ||||
|     node->Float() = arg1; | ||||
| } | ||||
|  | ||||
|  | ||||
| void CSettingsView::on_lineEditAutoSavePrefix_textEdited(const QString &arg1) | ||||
| { | ||||
|     Settings node = settings.write["general"]["savePrefix"]; | ||||
|     node->String() = arg1.toStdString(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -66,6 +66,12 @@ private slots: | ||||
|  | ||||
| 	void on_comboBoxAlliedPlayerAI_currentTextChanged(const QString &arg1); | ||||
|  | ||||
|     void on_checkBoxAutoSavePrefix_stateChanged(int arg1); | ||||
|  | ||||
|     void on_spinBoxAutoSaveLimit_valueChanged(int arg1); | ||||
|  | ||||
|     void on_lineEditAutoSavePrefix_textEdited(const QString &arg1); | ||||
|  | ||||
| private: | ||||
| 	Ui::CSettingsView * ui; | ||||
|  | ||||
|   | ||||
| @@ -42,7 +42,6 @@ | ||||
|      </property> | ||||
|      <property name="font"> | ||||
|       <font> | ||||
|        <weight>75</weight> | ||||
|        <bold>true</bold> | ||||
|       </font> | ||||
|      </property> | ||||
| @@ -107,26 +106,25 @@ | ||||
|       <property name="geometry"> | ||||
|        <rect> | ||||
|         <x>0</x> | ||||
|         <y>-331</y> | ||||
|         <y>0</y> | ||||
|         <width>610</width> | ||||
|         <height>679</height> | ||||
|         <height>790</height> | ||||
|        </rect> | ||||
|       </property> | ||||
|       <layout class="QGridLayout" name="gridLayout" columnstretch="2,0,1,1,1"> | ||||
|        <item row="8" column="0"> | ||||
|         <widget class="QLabel" name="labelVideo"> | ||||
|        <item row="18" column="0"> | ||||
|         <widget class="QLabel" name="labelArtificialIntelligence"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <weight>75</weight> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>Video</string> | ||||
|           <string>Artificial Intelligence</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="24" column="2" colspan="3"> | ||||
|        <item row="26" column="2" colspan="3"> | ||||
|         <widget class="QLineEdit" name="lineEditRepositoryDefault"> | ||||
|          <property name="text"> | ||||
|           <string notr="true"/> | ||||
| @@ -136,168 +134,30 @@ | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="25" column="2" colspan="3"> | ||||
|         <widget class="QLineEdit" name="lineEditRepositoryExtra"> | ||||
|          <property name="text"> | ||||
|           <string notr="true"/> | ||||
|        <item row="26" column="1"> | ||||
|         <widget class="QCheckBox" name="checkBoxRepositoryDefault"> | ||||
|          <property name="enabled"> | ||||
|           <bool>true</bool> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="19" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxNeutralAI"> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">BattleAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">BattleAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">StupidAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="6" column="0"> | ||||
|         <widget class="QLabel" name="labelNetworkPort"> | ||||
|          <property name="text"> | ||||
|           <string>Network port</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="22" column="0"> | ||||
|         <widget class="QLabel" name="labelRepositories"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <weight>75</weight> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>Mod Repositories</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="7" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxAutoSave"> | ||||
|          <property name="currentIndex"> | ||||
|           <number>1</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Off</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>On</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="21" column="0"> | ||||
|         <widget class="QLabel" name="labelEnemyAI"> | ||||
|          <property name="text"> | ||||
|           <string>Enemy AI in battles</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="18" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxAlliedPlayerAI"> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">VCAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">VCAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">Nullkiller</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="5" column="0"> | ||||
|         <widget class="QLabel" name="labelTranslation"> | ||||
|          <property name="text"> | ||||
|           <string>Heroes III Translation</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="24" column="0"> | ||||
|         <widget class="QLabel" name="labelRepositoryDefault"> | ||||
|          <property name="text"> | ||||
|           <string>Default repository</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="23" column="1" colspan="2"> | ||||
|         <widget class="QComboBox" name="comboBoxAutoCheck"> | ||||
|          <property name="currentIndex"> | ||||
|           <number>1</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Off</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>On</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="13" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxShowIntro"> | ||||
|          <property name="currentIndex"> | ||||
|           <number>1</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Off</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>On</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="5" column="4"> | ||||
|         <widget class="QPushButton" name="pushButtonTranslation"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="14" column="0"> | ||||
|         <widget class="QLabel" name="labelDisplayIndex"> | ||||
|          <property name="text"> | ||||
|           <string>Display index</string> | ||||
|          <property name="checked"> | ||||
|           <bool>true</bool> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="15" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxCursorType"> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Hardware</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Software</string> | ||||
|           </property> | ||||
|          </item> | ||||
|        <item row="27" column="1"> | ||||
|         <widget class="QCheckBox" name="checkBoxRepositoryExtra"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|          <property name="checked"> | ||||
|           <bool>true</bool> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="10" column="1" colspan="4"> | ||||
|        <item row="12" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxFullScreen"> | ||||
|          <property name="toolTip"> | ||||
|           <string>Select display mode for game | ||||
| @@ -328,243 +188,21 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="25" column="1"> | ||||
|         <widget class="QCheckBox" name="checkBoxRepositoryExtra"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|          <property name="checked"> | ||||
|           <bool>true</bool> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="1" column="0"> | ||||
|         <widget class="QLabel" name="labelLanguage"> | ||||
|          <property name="text"> | ||||
|           <string>VCMI Language</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="6" column="1" colspan="4"> | ||||
|         <widget class="QSpinBox" name="spinBoxNetworkPort"> | ||||
|          <property name="minimum"> | ||||
|           <number>1024</number> | ||||
|          </property> | ||||
|          <property name="maximum"> | ||||
|           <number>65535</number> | ||||
|          </property> | ||||
|          <property name="value"> | ||||
|           <number>3030</number> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="13" column="0"> | ||||
|         <widget class="QLabel" name="labelShowIntro"> | ||||
|          <property name="text"> | ||||
|           <string>Show intro</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="5" column="1" colspan="3"> | ||||
|         <widget class="QLabel" name="labelTranslationStatus"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="20" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxFriendlyAI"> | ||||
|          <property name="editable"> | ||||
|           <bool>false</bool> | ||||
|          </property> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">BattleAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">BattleAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">StupidAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="19" column="0"> | ||||
|         <widget class="QLabel" name="labelNeutralAI"> | ||||
|          <property name="text"> | ||||
|           <string>Neutral AI in battles</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="9" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxResolution"/> | ||||
|        </item> | ||||
|        <item row="0" column="0"> | ||||
|         <widget class="QLabel" name="labelGeneral"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <weight>75</weight> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>General</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="9" column="0"> | ||||
|        <item row="11" column="0"> | ||||
|         <widget class="QLabel" name="labelResolution"> | ||||
|          <property name="text"> | ||||
|           <string>Resolution</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="24" column="1"> | ||||
|         <widget class="QCheckBox" name="checkBoxRepositoryDefault"> | ||||
|          <property name="enabled"> | ||||
|           <bool>true</bool> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|          <property name="checked"> | ||||
|           <bool>true</bool> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="17" column="0"> | ||||
|         <widget class="QLabel" name="labelEnemyPlayerAI"> | ||||
|          <property name="text"> | ||||
|           <string>Adventure Map Enemies</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="11" column="0"> | ||||
|         <widget class="QLabel" name="labelInterfaceScaling"> | ||||
|          <property name="text"> | ||||
|           <string>Interface Scaling</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="15" column="0"> | ||||
|         <widget class="QLabel" name="labelCursorType"> | ||||
|          <property name="text"> | ||||
|           <string>Cursor</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="11" column="1" colspan="4"> | ||||
|         <widget class="QSpinBox" name="spinBoxInterfaceScaling"> | ||||
|          <property name="minimum"> | ||||
|           <number>50</number> | ||||
|          </property> | ||||
|          <property name="maximum"> | ||||
|           <number>400</number> | ||||
|          </property> | ||||
|          <property name="singleStep"> | ||||
|           <number>10</number> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="4" column="0"> | ||||
|         <widget class="QLabel" name="labelLanguageBase"> | ||||
|          <property name="text"> | ||||
|           <string>Heroes III Data Language</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="18" column="0"> | ||||
|        <item row="20" column="0"> | ||||
|         <widget class="QLabel" name="labelAlliedPlayerAI"> | ||||
|          <property name="text"> | ||||
|           <string>Adventure Map Allies</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="17" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxEnemyPlayerAI"> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">VCAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">VCAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">Nullkiller</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="4" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxLanguageBase"/> | ||||
|        </item> | ||||
|        <item row="25" column="0"> | ||||
|         <widget class="QLabel" name="labelRepositoryExtra"> | ||||
|          <property name="text"> | ||||
|           <string>Additional repository</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="23" column="0"> | ||||
|         <widget class="QLabel" name="labelAutoCheck"> | ||||
|          <property name="text"> | ||||
|           <string>Check on startup</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="23" column="3" colspan="2"> | ||||
|         <widget class="QPushButton" name="refreshRepositoriesButton"> | ||||
|          <property name="text"> | ||||
|           <string>Refresh now</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="20" column="0"> | ||||
|         <widget class="QLabel" name="labelFriendlyAI"> | ||||
|          <property name="text"> | ||||
|           <string>Friendly AI in battles</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="10" column="0"> | ||||
|         <widget class="QLabel" name="labelFullScreen"> | ||||
|          <property name="text"> | ||||
|           <string>Fullscreen</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="1" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxLanguage"/> | ||||
|        </item> | ||||
|        <item row="14" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxDisplayIndex"/> | ||||
|        </item> | ||||
|        <item row="7" column="0"> | ||||
|         <widget class="QLabel" name="labelAutoSave"> | ||||
|          <property name="text"> | ||||
|           <string>Autosave</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="16" column="0"> | ||||
|         <widget class="QLabel" name="labelArtificialIntelligence"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <weight>75</weight> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>Artificial Intelligence</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="21" column="1" colspan="4"> | ||||
|        <item row="23" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxEnemyAI"> | ||||
|          <property name="editable"> | ||||
|           <bool>false</bool> | ||||
| @@ -584,14 +222,169 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="12" column="0"> | ||||
|         <widget class="QLabel" name="labelFramerateLimit"> | ||||
|        <item row="24" column="0"> | ||||
|         <widget class="QLabel" name="labelRepositories"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>Framerate Limit</string> | ||||
|           <string>Mod Repositories</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="12" column="1" colspan="4"> | ||||
|        <item row="25" column="1" colspan="2"> | ||||
|         <widget class="QComboBox" name="comboBoxAutoCheck"> | ||||
|          <property name="currentIndex"> | ||||
|           <number>1</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Off</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>On</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="5" column="1" colspan="3"> | ||||
|         <widget class="QLabel" name="labelTranslationStatus"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="26" column="0"> | ||||
|         <widget class="QLabel" name="labelRepositoryDefault"> | ||||
|          <property name="text"> | ||||
|           <string>Default repository</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="27" column="0"> | ||||
|         <widget class="QLabel" name="labelRepositoryExtra"> | ||||
|          <property name="text"> | ||||
|           <string>Additional repository</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="21" column="0"> | ||||
|         <widget class="QLabel" name="labelNeutralAI"> | ||||
|          <property name="text"> | ||||
|           <string>Neutral AI in battles</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="5" column="4"> | ||||
|         <widget class="QPushButton" name="pushButtonTranslation"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="13" column="1" colspan="4"> | ||||
|         <widget class="QSpinBox" name="spinBoxInterfaceScaling"> | ||||
|          <property name="minimum"> | ||||
|           <number>50</number> | ||||
|          </property> | ||||
|          <property name="maximum"> | ||||
|           <number>400</number> | ||||
|          </property> | ||||
|          <property name="singleStep"> | ||||
|           <number>10</number> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="13" column="0"> | ||||
|         <widget class="QLabel" name="labelInterfaceScaling"> | ||||
|          <property name="text"> | ||||
|           <string>Interface Scaling</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="4" column="0"> | ||||
|         <widget class="QLabel" name="labelLanguageBase"> | ||||
|          <property name="text"> | ||||
|           <string>Heroes III Data Language</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="8" column="0"> | ||||
|         <widget class="QLabel" name="labelAutoSaveLimit"> | ||||
|          <property name="text"> | ||||
|           <string>Autosave limit (0 = off)</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="4" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxLanguageBase"/> | ||||
|        </item> | ||||
|        <item row="22" column="0"> | ||||
|         <widget class="QLabel" name="labelFriendlyAI"> | ||||
|          <property name="text"> | ||||
|           <string>Friendly AI in battles</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="22" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxFriendlyAI"> | ||||
|          <property name="editable"> | ||||
|           <bool>false</bool> | ||||
|          </property> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">BattleAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">BattleAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">StupidAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="11" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxResolution"/> | ||||
|        </item> | ||||
|        <item row="20" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxAlliedPlayerAI"> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">VCAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">VCAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">Nullkiller</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="16" column="0"> | ||||
|         <widget class="QLabel" name="labelDisplayIndex"> | ||||
|          <property name="text"> | ||||
|           <string>Display index</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="19" column="0"> | ||||
|         <widget class="QLabel" name="labelEnemyPlayerAI"> | ||||
|          <property name="text"> | ||||
|           <string>Adventure Map Enemies</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="14" column="1" colspan="4"> | ||||
|         <widget class="QSpinBox" name="spinBoxFramerateLimit"> | ||||
|          <property name="minimum"> | ||||
|           <number>20</number> | ||||
| @@ -604,6 +397,239 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="15" column="0"> | ||||
|         <widget class="QLabel" name="labelShowIntro"> | ||||
|          <property name="text"> | ||||
|           <string>Show intro</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="7" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxAutoSave"> | ||||
|          <property name="currentIndex"> | ||||
|           <number>1</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Off</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>On</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="1" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxLanguage"/> | ||||
|        </item> | ||||
|        <item row="17" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxCursorType"> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Hardware</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Software</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="12" column="0"> | ||||
|         <widget class="QLabel" name="labelFullScreen"> | ||||
|          <property name="text"> | ||||
|           <string>Fullscreen</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="17" column="0"> | ||||
|         <widget class="QLabel" name="labelCursorType"> | ||||
|          <property name="text"> | ||||
|           <string>Cursor</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="27" column="2" colspan="3"> | ||||
|         <widget class="QLineEdit" name="lineEditRepositoryExtra"> | ||||
|          <property name="text"> | ||||
|           <string notr="true"/> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="23" column="0"> | ||||
|         <widget class="QLabel" name="labelEnemyAI"> | ||||
|          <property name="text"> | ||||
|           <string>Enemy AI in battles</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="25" column="0"> | ||||
|         <widget class="QLabel" name="labelAutoCheck"> | ||||
|          <property name="text"> | ||||
|           <string>Check on startup</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="0" column="0"> | ||||
|         <widget class="QLabel" name="labelGeneral"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>General</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="21" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxNeutralAI"> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">BattleAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">BattleAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">StupidAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="25" column="3" colspan="2"> | ||||
|         <widget class="QPushButton" name="refreshRepositoriesButton"> | ||||
|          <property name="text"> | ||||
|           <string>Refresh now</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="6" column="1" colspan="4"> | ||||
|         <widget class="QSpinBox" name="spinBoxNetworkPort"> | ||||
|          <property name="minimum"> | ||||
|           <number>1024</number> | ||||
|          </property> | ||||
|          <property name="maximum"> | ||||
|           <number>65535</number> | ||||
|          </property> | ||||
|          <property name="value"> | ||||
|           <number>3030</number> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="6" column="0"> | ||||
|         <widget class="QLabel" name="labelNetworkPort"> | ||||
|          <property name="text"> | ||||
|           <string>Network port</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="5" column="0"> | ||||
|         <widget class="QLabel" name="labelTranslation"> | ||||
|          <property name="text"> | ||||
|           <string>Heroes III Translation</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="1" column="0"> | ||||
|         <widget class="QLabel" name="labelLanguage"> | ||||
|          <property name="text"> | ||||
|           <string>VCMI Language</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="7" column="0"> | ||||
|         <widget class="QLabel" name="labelAutoSave"> | ||||
|          <property name="text"> | ||||
|           <string>Autosave</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="10" column="0"> | ||||
|         <widget class="QLabel" name="labelVideo"> | ||||
|          <property name="font"> | ||||
|           <font> | ||||
|            <bold>true</bold> | ||||
|           </font> | ||||
|          </property> | ||||
|          <property name="text"> | ||||
|           <string>Video</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="19" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxEnemyPlayerAI"> | ||||
|          <property name="currentText"> | ||||
|           <string notr="true">VCAI</string> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">VCAI</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string notr="true">Nullkiller</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="16" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxDisplayIndex"/> | ||||
|        </item> | ||||
|        <item row="14" column="0"> | ||||
|         <widget class="QLabel" name="labelFramerateLimit"> | ||||
|          <property name="text"> | ||||
|           <string>Framerate Limit</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="15" column="1" colspan="4"> | ||||
|         <widget class="QComboBox" name="comboBoxShowIntro"> | ||||
|          <property name="currentIndex"> | ||||
|           <number>1</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>Off</string> | ||||
|           </property> | ||||
|          </item> | ||||
|          <item> | ||||
|           <property name="text"> | ||||
|            <string>On</string> | ||||
|           </property> | ||||
|          </item> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="9" column="0"> | ||||
|         <widget class="QLabel" name="labelAutoSavePrefix"> | ||||
|          <property name="text"> | ||||
|           <string>Autosave prefix</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="8" column="1" colspan="4"> | ||||
|         <widget class="QSpinBox" name="spinBoxAutoSaveLimit"/> | ||||
|        </item> | ||||
|        <item row="9" column="1"> | ||||
|         <widget class="QCheckBox" name="checkBoxAutoSavePrefix"> | ||||
|          <property name="text"> | ||||
|           <string/> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|        <item row="9" column="2" colspan="3"> | ||||
|         <widget class="QLineEdit" name="lineEditAutoSavePrefix"> | ||||
|          <property name="placeholderText"> | ||||
|           <string>empty = map name prefix</string> | ||||
|          </property> | ||||
|         </widget> | ||||
|        </item> | ||||
|       </layout> | ||||
|      </widget> | ||||
|     </widget> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user