mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
Merge pull request #1642 from IvanSavenko/map_render_regression_fix
Map render regression fix
This commit is contained in:
@@ -109,7 +109,9 @@ const CGHeroInstance * HeroPtr::get(bool doWeExpectNull) const
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(obj);
|
||||
if (!obj)
|
||||
logAi->error("Accessing no longer accessible hero %s!", h->getNameTranslated());
|
||||
//assert(obj);
|
||||
//assert(owned);
|
||||
}
|
||||
}
|
||||
|
@@ -211,7 +211,7 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
|
||||
if(path.turn() <= treat.turn - 2)
|
||||
{
|
||||
#if NKAI_TRACE_LEVEL >= 1
|
||||
logAi->trace("Deffer defence of %s by %s because he has enough time to rich the town next trun",
|
||||
logAi->trace("Defer defence of %s by %s because he has enough time to reach the town next trun",
|
||||
town->name,
|
||||
path.targetHero->name);
|
||||
#endif
|
||||
|
@@ -161,7 +161,7 @@ void ExecuteHeroChain::accept(AIGateway * ai)
|
||||
if(node.turns == 0)
|
||||
{
|
||||
logAi->error(
|
||||
"Enable to complete chain. Expected hero %s to arive to %s but he is at %s",
|
||||
"Unable to complete chain. Expected hero %s to arive to %s but he is at %s",
|
||||
hero->getNameTranslated(),
|
||||
node.coord.toString(),
|
||||
hero->visitablePos().toString());
|
||||
@@ -169,7 +169,7 @@ void ExecuteHeroChain::accept(AIGateway * ai)
|
||||
return;
|
||||
}
|
||||
|
||||
// no exception means we were not able to rich the tile
|
||||
// no exception means we were not able to reach the tile
|
||||
ai->nullkiller->lockHero(hero, HeroLockedReason::HERO_CHAIN);
|
||||
blockedIndexes.insert(node.parentIndex);
|
||||
}
|
||||
@@ -177,7 +177,7 @@ void ExecuteHeroChain::accept(AIGateway * ai)
|
||||
{
|
||||
if(!heroPtr.validAndSet())
|
||||
{
|
||||
logAi->debug("Hero %s was killed while attempting to rich %s", heroPtr.name, node.coord.toString());
|
||||
logAi->debug("Hero %s was killed while attempting to reach %s", heroPtr.name, node.coord.toString());
|
||||
|
||||
return;
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@
|
||||
"author" : "VCMI-Team",
|
||||
"modType" : "Grafik",
|
||||
|
||||
"skipValidation" : true,
|
||||
"translations" : [
|
||||
"config/vcmi/german.json"
|
||||
]
|
||||
@@ -19,6 +20,7 @@
|
||||
"author" : "Zespół VCMI",
|
||||
"modType" : "Graficzny",
|
||||
|
||||
"skipValidation" : true,
|
||||
"translations" : [
|
||||
"config/vcmi/polish.json"
|
||||
]
|
||||
@@ -30,6 +32,7 @@
|
||||
"author" : "Команда VCMI",
|
||||
"modType" : "Графический",
|
||||
|
||||
"skipValidation" : true,
|
||||
"translations" : [
|
||||
"config/vcmi/russian.json"
|
||||
]
|
||||
|
@@ -613,7 +613,7 @@ bool MusicEntry::stop(int fade_ms)
|
||||
assert(startTime != uint32_t(-1));
|
||||
float playDuration = (endTime - startTime + startPosition) / 1000.f;
|
||||
owner->trackPositions[currentName] = playDuration;
|
||||
logGlobal->info("Stopping music file %s at %f", currentName, playDuration);
|
||||
logGlobal->trace("Stopping music file %s at %f", currentName, playDuration);
|
||||
|
||||
Mix_FadeOutMusic(fade_ms);
|
||||
return true;
|
||||
|
@@ -1963,7 +1963,8 @@ void CPlayerInterface::playerStartsTurn(PlayerColor player)
|
||||
}
|
||||
else
|
||||
{
|
||||
adventureInt->infoBar->showSelection();
|
||||
if (player == playerID)
|
||||
adventureInt->infoBar->showSelection();
|
||||
while (GH.listInt.front() != adventureInt && !dynamic_cast<CInfoWindow*>(GH.listInt.front().get())) //don't remove dialogs that expect query answer
|
||||
GH.popInts(1);
|
||||
}
|
||||
|
@@ -617,7 +617,18 @@ void MapRendererDebug::renderTile(IMapRendererContext & context, Canvas & target
|
||||
|
||||
uint8_t MapRendererDebug::checksum(IMapRendererContext & context, const int3 & coordinates)
|
||||
{
|
||||
return 0;
|
||||
uint8_t result = 0;
|
||||
|
||||
if (context.showVisitable())
|
||||
result += 1;
|
||||
|
||||
if (context.showBlockable())
|
||||
result += 2;
|
||||
|
||||
if (context.showGrid())
|
||||
result += 4;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
MapRendererPath::MapRendererPath()
|
||||
|
@@ -283,7 +283,7 @@ double MapRendererAdventureFadingContext::objectTransparency(ObjectInstanceID ob
|
||||
if(objectID == target)
|
||||
return progress;
|
||||
|
||||
return 1.0;
|
||||
return MapRendererAdventureContext::objectTransparency(objectID, coordinates);
|
||||
}
|
||||
|
||||
MapRendererAdventureMovingContext::MapRendererAdventureMovingContext(const MapRendererContextState & viewState)
|
||||
|
@@ -118,6 +118,12 @@ bool CMapHandler::compareObjectBlitOrder(const CGObjectInstance * a, const CGObj
|
||||
if(a->pos.y != b->pos.y)
|
||||
return a->pos.y < b->pos.y;
|
||||
|
||||
// heroes should appear on top of objects on the same tile
|
||||
if(b->ID==Obj::HERO && a->ID!=Obj::HERO)
|
||||
return true;
|
||||
if(b->ID!=Obj::HERO && a->ID==Obj::HERO)
|
||||
return false;
|
||||
|
||||
// or, if all other tests fail to determine priority - simply based on H3M order
|
||||
return a->id < b->id;
|
||||
}
|
||||
|
@@ -222,7 +222,7 @@
|
||||
},
|
||||
{
|
||||
"message" : 152,
|
||||
"appearChance" : { "min" : 67, "max" : 67 }
|
||||
"appearChance" : { "min" : 67 }
|
||||
}
|
||||
],
|
||||
"onVisitedMessage" : 147,
|
||||
|
@@ -26,6 +26,10 @@
|
||||
"type":"string",
|
||||
"description": "Author of the mod. Can be nickname, real name or name of team"
|
||||
},
|
||||
"skipValidation" : {
|
||||
"type":"boolean",
|
||||
"description": "If set to true, vcmi will skip validation of current translation json files"
|
||||
},
|
||||
"translations":{
|
||||
"type":"array",
|
||||
"description": "List of files with translations for this language",
|
||||
@@ -87,7 +91,7 @@
|
||||
"language" : {
|
||||
"type":"string",
|
||||
"description": "Base language of the mod, before applying localizations. By default vcmi assumes English",
|
||||
"enum" : [ "english", "german", "polish", "russian", "ukrainian" ],
|
||||
"enum" : [ "chinese", "english", "german", "polish", "russian", "ukrainian" ],
|
||||
},
|
||||
"depends": {
|
||||
"type":"array",
|
||||
|
@@ -21,7 +21,6 @@
|
||||
"playerName",
|
||||
"music",
|
||||
"sound",
|
||||
"encoding",
|
||||
"language",
|
||||
"swipe",
|
||||
"swipeDesktop",
|
||||
@@ -46,10 +45,6 @@
|
||||
"type" : "number",
|
||||
"default" : 88
|
||||
},
|
||||
"encoding" : {
|
||||
"type" : "string",
|
||||
"default" : "auto"
|
||||
},
|
||||
"swipe" : {
|
||||
"type" : "boolean",
|
||||
"default" : true
|
||||
@@ -68,7 +63,7 @@
|
||||
},
|
||||
"language" : {
|
||||
"type":"string",
|
||||
"enum" : [ "english", "german", "polish", "russian", "ukrainian" ],
|
||||
"enum" : [ "chinese", "english", "german", "polish", "russian", "ukrainian" ],
|
||||
"default" : "english"
|
||||
},
|
||||
"lastSave" : {
|
||||
|
@@ -31,26 +31,10 @@ QString resolutionToString(const QSize & resolution)
|
||||
}
|
||||
}
|
||||
|
||||
/// List of encoding which can be selected from Launcher.
|
||||
/// Note that it is possible to specify enconding manually in settings.json
|
||||
static const std::string knownEncodingsList[] = //TODO: remove hardcode
|
||||
{
|
||||
// Asks vcmi to automatically detect encoding
|
||||
"auto",
|
||||
// European Windows-125X encodings
|
||||
"CP1250", // West European, covers mostly Slavic languages that use latin script
|
||||
"CP1251", // Covers languages that use cyrillic scrypt
|
||||
"CP1252", // Latin/East European, covers most of latin languages
|
||||
// Chinese encodings
|
||||
"GBK", // extension of GB2312, also known as CP936
|
||||
"GB2312", // basic set for Simplified Chinese. Separate from GBK to allow proper detection of H3 fonts
|
||||
// Korean encodings
|
||||
"CP949" // extension of EUC-KR.
|
||||
};
|
||||
|
||||
/// List of tags of languages that can be selected from Launcher (and have translation for Launcher)
|
||||
static const std::string languageTagList[] =
|
||||
{
|
||||
"chinese",
|
||||
"english",
|
||||
"german",
|
||||
"polish",
|
||||
@@ -119,10 +103,6 @@ void CSettingsView::loadSettings()
|
||||
ui->lineEditGameDir->setText(pathToQString(VCMIDirs::get().binaryPath()));
|
||||
ui->lineEditTempDir->setText(pathToQString(VCMIDirs::get().userLogsPath()));
|
||||
|
||||
std::string encoding = settings["general"]["encoding"].String();
|
||||
size_t encodingIndex = boost::range::find(knownEncodingsList, encoding) - knownEncodingsList;
|
||||
if(encodingIndex < ui->comboBoxEncoding->count())
|
||||
ui->comboBoxEncoding->setCurrentIndex((int)encodingIndex);
|
||||
ui->comboBoxAutoSave->setCurrentIndex(settings["general"]["saveFrequency"].Integer() > 0 ? 1 : 0);
|
||||
|
||||
std::string language = settings["general"]["language"].String();
|
||||
@@ -291,12 +271,6 @@ void CSettingsView::on_plainTextEditRepos_textChanged()
|
||||
}
|
||||
}
|
||||
|
||||
void CSettingsView::on_comboBoxEncoding_currentIndexChanged(int index)
|
||||
{
|
||||
Settings node = settings.write["general"]["encoding"];
|
||||
node->String() = knownEncodingsList[index];
|
||||
}
|
||||
|
||||
void CSettingsView::on_openTempDir_clicked()
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(ui->lineEditTempDir->text()).absoluteFilePath()));
|
||||
|
@@ -49,8 +49,6 @@ private slots:
|
||||
|
||||
void on_plainTextEditRepos_textChanged();
|
||||
|
||||
void on_comboBoxEncoding_currentIndexChanged(int index);
|
||||
|
||||
void on_openTempDir_clicked();
|
||||
|
||||
void on_openUserDataDir_clicked();
|
||||
|
@@ -114,259 +114,159 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>620</width>
|
||||
<height>762</height>
|
||||
<height>731</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="3,3,1,1">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="labelGeneral">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="3,0,0,0">
|
||||
<item row="22" column="0" colspan="4">
|
||||
<widget class="QPlainTextEdit" name="plainTextEditRepos">
|
||||
<property name="lineWrapMode">
|
||||
<enum>QPlainTextEdit::NoWrap</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>General</string>
|
||||
<property name="plainText">
|
||||
<string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelLanguage">
|
||||
<property name="text">
|
||||
<string>VCMI Language</string>
|
||||
<item row="12" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxPlayerAI">
|
||||
<property name="currentText">
|
||||
<string notr="true">VCAI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="labelEncoding">
|
||||
<property name="text">
|
||||
<string>Heroes III character set</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxEncoding">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Automatic detection</string>
|
||||
<string notr="true">VCAI</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Central European (Windows 1250)</string>
|
||||
<string notr="true">Nullkiller</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Cyrillic script (Windows 1251)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Western European (Windows 1252)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Simplified Chinese (GBK)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Simplified Chinese (GB2312)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Korean (Windows 949)</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="labelNetworkPort">
|
||||
<property name="text">
|
||||
<string>Network port</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="labelAutoSave">
|
||||
<property name="text">
|
||||
<string>Autosave</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="labelBuildVersionDesc">
|
||||
<property name="text">
|
||||
<string>Build version</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="labelVideo">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Video</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="labelResolution">
|
||||
<property name="text">
|
||||
<string>Resolution</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="labelFullScreen">
|
||||
<property name="text">
|
||||
<string>Fullscreen</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="labelShowIntro">
|
||||
<property name="text">
|
||||
<string>Show intro</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="labelDisplayIndex">
|
||||
<property name="text">
|
||||
<string>Display index</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="labelCursorType">
|
||||
<property name="text">
|
||||
<string>Cursor</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" 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="13" column="0">
|
||||
<widget class="QLabel" name="labelPlayerAI">
|
||||
<property name="text">
|
||||
<string>Adventure Map AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="labelNeutralAI">
|
||||
<property name="text">
|
||||
<string>Neutral AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="0">
|
||||
<widget class="QLabel" name="labelFriendlyAI">
|
||||
<property name="text">
|
||||
<string>Friendly AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0">
|
||||
<widget class="QLabel" name="labelEnemyAI">
|
||||
<property name="text">
|
||||
<string>Enemy AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="0">
|
||||
<widget class="QLabel" name="labelDataDirs">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<item row="21" column="2" colspan="2">
|
||||
<widget class="QPushButton" name="updatesButton">
|
||||
<property name="text">
|
||||
<string>Data Directories</string>
|
||||
<string>Update now</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="0">
|
||||
<widget class="QLabel" name="labelGameDir">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="labelNetworkPort">
|
||||
<property name="text">
|
||||
<string>Extra data directory</string>
|
||||
<string>Network port</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="1">
|
||||
<item row="14" column="1" colspan="3">
|
||||
<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="13" column="1" colspan="3">
|
||||
<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="3" column="0">
|
||||
<widget class="QLabel" name="labelAutoSave">
|
||||
<property name="text">
|
||||
<string>Autosave</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="1">
|
||||
<widget class="QLineEdit" name="lineEditGameDir">
|
||||
<property name="text">
|
||||
<string notr="true">/usr/share/vcmi</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="2">
|
||||
<widget class="QPushButton" name="changeGameDataDir">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Change</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="3">
|
||||
<widget class="QPushButton" name="openGameDataDir">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="19" column="0">
|
||||
<widget class="QLabel" name="labelUserDataDir">
|
||||
<property name="text">
|
||||
<string>User data directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="19" column="3">
|
||||
<widget class="QPushButton" name="openUserDataDir">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="20" column="0">
|
||||
<widget class="QLabel" name="labelTempDir">
|
||||
<property name="text">
|
||||
<string>Log files directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="20" column="3">
|
||||
<widget class="QPushButton" name="openTempDir">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="21" column="0">
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="labelShowIntro">
|
||||
<property name="text">
|
||||
<string>Show intro</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEditUserDataDir">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">/home/user/.vcmi</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxFullScreen">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Off</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>On</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Real</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="20" column="0">
|
||||
<widget class="QLabel" name="labelRepositories">
|
||||
<property name="font">
|
||||
<font>
|
||||
@@ -379,15 +279,15 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="22" column="0">
|
||||
<widget class="QLabel" name="labelAutoCheck">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="labelDisplayIndex">
|
||||
<property name="text">
|
||||
<string>Check on startup</string>
|
||||
<string>Display index</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="22" column="1">
|
||||
<widget class="QComboBox" name="comboBoxAutoCheck">
|
||||
<item row="3" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxAutoSave">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
</property>
|
||||
@@ -403,24 +303,122 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="22" column="2" colspan="2">
|
||||
<widget class="QPushButton" name="updatesButton">
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="labelVideo">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Update now</string>
|
||||
<string>Video</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="23" column="0" colspan="4">
|
||||
<widget class="QPlainTextEdit" name="plainTextEditRepos">
|
||||
<property name="lineWrapMode">
|
||||
<enum>QPlainTextEdit::NoWrap</enum>
|
||||
</property>
|
||||
<property name="plainText">
|
||||
<string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
|
||||
<item row="19" column="0">
|
||||
<widget class="QLabel" name="labelTempDir">
|
||||
<property name="text">
|
||||
<string>Log files directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="1" colspan="3">
|
||||
<item row="15" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxEnemyAI">
|
||||
<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="4" column="0">
|
||||
<widget class="QLabel" name="labelBuildVersionDesc">
|
||||
<property name="text">
|
||||
<string>Build version</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="3">
|
||||
<widget class="QPushButton" name="openGameDataDir">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1" colspan="3">
|
||||
<widget class="QLineEdit" name="lineEditBuildVersion">
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1" colspan="3">
|
||||
<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="11" 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="6" column="0">
|
||||
<widget class="QLabel" name="labelResolution">
|
||||
<property name="text">
|
||||
<string>Resolution</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="labelCursorType">
|
||||
<property name="text">
|
||||
<string>Cursor</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="0">
|
||||
<widget class="QLabel" name="labelNeutralAI">
|
||||
<property name="text">
|
||||
<string>Neutral AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxCursorType">
|
||||
<item>
|
||||
<property name="text">
|
||||
@@ -439,6 +437,77 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="21" column="0">
|
||||
<widget class="QLabel" name="labelAutoCheck">
|
||||
<property name="text">
|
||||
<string>Check on startup</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="18" column="3">
|
||||
<widget class="QPushButton" name="openUserDataDir">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="labelFullScreen">
|
||||
<property name="text">
|
||||
<string>Fullscreen</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxDisplayIndex"/>
|
||||
</item>
|
||||
<item row="6" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxResolution"/>
|
||||
</item>
|
||||
<item row="19" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEditTempDir">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">/home/user/.vcmi</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<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="21" column="1">
|
||||
<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="12" column="0">
|
||||
<widget class="QLabel" name="labelPlayerAI">
|
||||
<property name="text">
|
||||
<string>Adventure Map AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxLanguage">
|
||||
<item>
|
||||
@@ -446,6 +515,11 @@
|
||||
<string>English</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>简体中文 (Simplified Chinese)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Deutsch (German)</string>
|
||||
@@ -468,7 +542,54 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="3">
|
||||
<item row="16" column="0">
|
||||
<widget class="QLabel" name="labelDataDirs">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Data Directories</string>
|
||||
</property>
|
||||
</widget>
|
||||
</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="18" column="0">
|
||||
<widget class="QLabel" name="labelUserDataDir">
|
||||
<property name="text">
|
||||
<string>User data directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="17" column="0">
|
||||
<widget class="QLabel" name="labelGameDir">
|
||||
<property name="text">
|
||||
<string>Extra data directory</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="labelFriendlyAI">
|
||||
<property name="text">
|
||||
<string>Friendly AI</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="3">
|
||||
<widget class="QSpinBox" name="spinBoxNetworkPort">
|
||||
<property name="minimum">
|
||||
<number>1024</number>
|
||||
@@ -481,175 +602,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1" colspan="3">
|
||||
<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="7" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxResolution"/>
|
||||
</item>
|
||||
<item row="19" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEditUserDataDir">
|
||||
<item row="17" column="2">
|
||||
<widget class="QPushButton" name="changeGameDataDir">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">/home/user/.vcmi</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="20" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="lineEditTempDir">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">/home/user/.vcmi</string>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxEnemyAI">
|
||||
<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="15" column="1" colspan="3">
|
||||
<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="14" column="1" colspan="3">
|
||||
<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="13" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxPlayerAI">
|
||||
<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="10" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxDisplayIndex"/>
|
||||
</item>
|
||||
<item row="9" column="1" colspan="3">
|
||||
<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="8" column="1" colspan="3">
|
||||
<widget class="QComboBox" name="comboBoxFullScreen">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Off</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>On</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Real</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1" colspan="3">
|
||||
<widget class="QLineEdit" name="lineEditBuildVersion">
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
<string>Change</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@@ -25,8 +25,9 @@ void CGeneralTextHandler::detectInstallParameters()
|
||||
{
|
||||
using LanguageFootprint = std::array<double, 16>;
|
||||
|
||||
static const std::array<LanguageFootprint, 6> knownFootprints =
|
||||
static const std::array<LanguageFootprint, 7> knownFootprints =
|
||||
{ {
|
||||
{ { 0.1602, 0.0000, 0.0357, 0.0054, 0.0038, 0.0017, 0.0077, 0.0214, 0.0000, 0.0000, 0.1264, 0.1947, 0.2012, 0.1406, 0.0480, 0.0532 } },
|
||||
{ { 0.0559, 0.0000, 0.1983, 0.0051, 0.0222, 0.0183, 0.4596, 0.2405, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 } },
|
||||
{ { 0.0493, 0.0000, 0.1926, 0.0047, 0.0230, 0.0121, 0.4133, 0.2780, 0.0002, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0259, 0.0008 } },
|
||||
{ { 0.0534, 0.0000, 0.1705, 0.0047, 0.0418, 0.0208, 0.4775, 0.2191, 0.0001, 0.0000, 0.0000, 0.0000, 0.0000, 0.0005, 0.0036, 0.0080 } },
|
||||
@@ -35,8 +36,9 @@ void CGeneralTextHandler::detectInstallParameters()
|
||||
{ { 0.0559, 0.0000, 0.1807, 0.0059, 0.0036, 0.0013, 0.0046, 0.0134, 0.0000, 0.0004, 0.0000, 0.0487, 0.0209, 0.0060, 0.4615, 0.1972 } },
|
||||
} };
|
||||
|
||||
static const std::array<std::string, 6> knownLanguages =
|
||||
static const std::array<std::string, 7> knownLanguages =
|
||||
{ {
|
||||
"chinese",
|
||||
"english",
|
||||
"french",
|
||||
"german",
|
||||
@@ -257,27 +259,35 @@ const std::string & CGeneralTextHandler::deserialize(const TextIdentifier & iden
|
||||
|
||||
void CGeneralTextHandler::registerString(const std::string & modContext, const TextIdentifier & UID, const std::string & localized)
|
||||
{
|
||||
assert(!modContext.empty());
|
||||
assert(!getModLanguage(modContext).empty());
|
||||
assert(UID.get().find("..") == std::string::npos); // invalid identifier - there is section that was evaluated to empty string
|
||||
//assert(stringsLocalizations.count(UID.get()) == 0); // registering already registered string?
|
||||
|
||||
if (stringsLocalizations.count(UID.get()) > 0)
|
||||
if(stringsLocalizations.count(UID.get()) > 0)
|
||||
{
|
||||
std::string oldValue = stringsLocalizations[UID.get()].baseValue;
|
||||
auto & value = stringsLocalizations[UID.get()];
|
||||
|
||||
if (oldValue != localized)
|
||||
logMod->warn("Duplicate registered string '%s' found! Old value: '%s', new value: '%s'", UID.get(), oldValue, localized);
|
||||
return;
|
||||
if(value.baseLanguage.empty())
|
||||
{
|
||||
value.baseLanguage = getModLanguage(modContext);
|
||||
value.baseValue = localized;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(value.baseValue != localized)
|
||||
logMod->warn("Duplicate registered string '%s' found! Old value: '%s', new value: '%s'", UID.get(), value.baseValue, localized);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
StringState result;
|
||||
result.baseLanguage = getModLanguage(modContext);
|
||||
result.baseValue = localized;
|
||||
result.modContext = modContext;
|
||||
|
||||
assert(!modContext.empty());
|
||||
assert(!getModLanguage(modContext).empty());
|
||||
|
||||
StringState result;
|
||||
result.baseLanguage = getModLanguage(modContext);
|
||||
result.baseValue = localized;
|
||||
result.modContext = modContext;
|
||||
|
||||
stringsLocalizations[UID.get()] = result;
|
||||
stringsLocalizations[UID.get()] = result;
|
||||
}
|
||||
}
|
||||
|
||||
void CGeneralTextHandler::registerStringOverride(const std::string & modContext, const std::string & language, const TextIdentifier & UID, const std::string & localized)
|
||||
@@ -602,9 +612,6 @@ std::string CGeneralTextHandler::getInstalledLanguage()
|
||||
|
||||
std::string CGeneralTextHandler::getInstalledEncoding()
|
||||
{
|
||||
auto explicitSetting = settings["general"]["encoding"].String();
|
||||
if (explicitSetting != "auto")
|
||||
return explicitSetting;
|
||||
return settings["session"]["encoding"].String();
|
||||
}
|
||||
|
||||
|
@@ -1156,6 +1156,9 @@ bool CModHandler::validateTranslations(TModID modName) const
|
||||
if (mod.config[language.identifier].isNull())
|
||||
continue;
|
||||
|
||||
if (mod.config[language.identifier]["skipValidation"].Bool())
|
||||
continue;
|
||||
|
||||
auto fileList = mod.config[language.identifier]["translations"].convertTo<std::vector<std::string> >();
|
||||
JsonNode json = JsonUtils::assembleFromFiles(fileList);
|
||||
result |= VLC->generaltexth->validateTranslation(language.identifier, modName, json);
|
||||
|
@@ -14,6 +14,7 @@ namespace Languages
|
||||
|
||||
enum class ELanguages
|
||||
{
|
||||
CHINESE,
|
||||
ENGLISH,
|
||||
FRENCH,
|
||||
GERMAN,
|
||||
@@ -47,11 +48,13 @@ struct Options
|
||||
|
||||
inline auto const & getLanguageList( )
|
||||
{
|
||||
static const std::array<Options, 6> languages
|
||||
static const std::array<Options, 7> languages
|
||||
{ {
|
||||
{ "chinese", "Chinese", "简体中文", "GBK", true, true },
|
||||
{ "english", "English", "English", "CP1252", true, true },
|
||||
{ "french", "French", "Français", "CP1252", true, false },
|
||||
{ "french", "French", "Français", "CP1252", true, true },
|
||||
{ "german", "German", "Deutsch", "CP1252", true, true },
|
||||
//TODO: korean - CP949 encoding
|
||||
{ "polish", "Polish", "Polski", "CP1250", true, true },
|
||||
{ "russian", "Russian", "Русский", "CP1251", true, true },
|
||||
{ "ukrainian", "Ukrainian", "Українська", "CP1251", true, true }
|
||||
|
@@ -404,7 +404,7 @@ void CObjectClassesHandler::afterLoadFinalization()
|
||||
std::string CObjectClassesHandler::getObjectName(si32 type, si32 subtype) const
|
||||
{
|
||||
const auto handler = getHandlerFor(type, subtype);
|
||||
if (handler->hasNameTextID())
|
||||
if (handler && handler->hasNameTextID())
|
||||
return handler->getNameTranslated();
|
||||
else
|
||||
return objects[type]->getNameTranslated();
|
||||
|
@@ -46,6 +46,11 @@ public:
|
||||
void configureObject(CRewardableObject * object, CRandomGenerator & rng) const;
|
||||
|
||||
void init(const JsonNode & objectConfig);
|
||||
|
||||
template <typename Handler> void serialize(Handler &h, const int version)
|
||||
{
|
||||
h & parameters;
|
||||
}
|
||||
};
|
||||
|
||||
class DLL_LINKAGE CRewardableConstructor : public AObjectTypeHandler
|
||||
@@ -60,6 +65,14 @@ public:
|
||||
void configureObject(CGObjectInstance * object, CRandomGenerator & rng) const override;
|
||||
|
||||
std::unique_ptr<IObjectInfo> getObjectInfo(std::shared_ptr<const ObjectTemplate> tmpl) const override;
|
||||
|
||||
template <typename Handler> void serialize(Handler &h, const int version)
|
||||
{
|
||||
AObjectTypeHandler::serialize(h, version);
|
||||
|
||||
if (version >= 816)
|
||||
h & objectInfo;
|
||||
}
|
||||
};
|
||||
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
@@ -544,6 +544,7 @@ void CRewardableObject::newTurn(CRandomGenerator & rand) const
|
||||
void CRewardableObject::initObj(CRandomGenerator & rand)
|
||||
{
|
||||
VLC->objtypeh->getHandlerFor(ID, subID)->configureObject(this, rand);
|
||||
assert(!info.empty());
|
||||
}
|
||||
|
||||
CRewardableObject::CRewardableObject():
|
||||
|
@@ -14,7 +14,7 @@
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
const ui32 SERIALIZATION_VERSION = 815;
|
||||
const ui32 SERIALIZATION_VERSION = 816;
|
||||
const ui32 MINIMAL_SERIALIZATION_VERSION = 813;
|
||||
const std::string SAVEGAME_MAGIC = "VCMISVG";
|
||||
|
||||
|
Reference in New Issue
Block a user