Internationalization and icon tweaks
added better support for localization added a somewhat spotty German translation tweaked some of the updated icons
@ -199,9 +199,6 @@ FORMS += \
|
||||
src/structuredialog.ui
|
||||
|
||||
|
||||
TRANSLATIONS += \
|
||||
rc/lang/en_US.ts
|
||||
|
||||
RESOURCES += \
|
||||
rc/icons.qrc \
|
||||
rc/style.qrc \
|
||||
@ -209,7 +206,10 @@ RESOURCES += \
|
||||
rc/lang.qrc
|
||||
|
||||
|
||||
# ----- translations -----
|
||||
# ----- translations (pluralization) -----
|
||||
|
||||
TRANSLATIONS += \
|
||||
rc/lang/en_US.ts
|
||||
|
||||
translations: {
|
||||
# automatically run lupdate for pluralization default translation
|
||||
|
@ -35,7 +35,6 @@
|
||||
<file>icons/treasure.png</file>
|
||||
<file>icons/treasure_d.png</file>
|
||||
<file>icons/zombie.png</file>
|
||||
<file>icons/zombie_d.png</file>
|
||||
<file>icons/grid.png</file>
|
||||
<file>icons/grid_d.png</file>
|
||||
<file>icons/slime_d.png</file>
|
||||
|
BIN
rc/icons/hut.png
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 487 B |
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 425 B |
Before Width: | Height: | Size: 431 B After Width: | Height: | Size: 446 B |
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 447 B |
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 407 B |
Before Width: | Height: | Size: 423 B |
@ -1,5 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>lang/en_US.qm</file>
|
||||
<file>lang/de_DE.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
BIN
rc/lang/de_DE.qm
Normal file
4424
rc/lang/de_DE.ts
Normal file
BIN
rc/lang/en_US.qm
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="en">
|
||||
<TS version="2.1" language="en">
|
||||
<context>
|
||||
<name>ConfigDialog</name>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/configdialog.cpp" line="111"/>
|
||||
<location filename="../../src/configdialog.cpp" line="137"/>
|
||||
<source>[%n biome(s)] %1</source>
|
||||
<translation>
|
||||
<numerusform>[%n biome] %1</numerusform>
|
||||
@ -15,7 +15,7 @@
|
||||
<context>
|
||||
<name>FormConditions</name>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/formconditions.cpp" line="255"/>
|
||||
<location filename="../../src/formconditions.cpp" line="260"/>
|
||||
<source>Cut %n condition(s)</source>
|
||||
<translation>
|
||||
<numerusform>Cut %n condition</numerusform>
|
||||
@ -23,8 +23,8 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/formconditions.cpp" line="260"/>
|
||||
<location filename="../../src/formconditions.cpp" line="278"/>
|
||||
<location filename="../../src/formconditions.cpp" line="265"/>
|
||||
<location filename="../../src/formconditions.cpp" line="283"/>
|
||||
<source>Copy %n condition(s)</source>
|
||||
<translation>
|
||||
<numerusform>Copy %n condition</numerusform>
|
||||
@ -32,7 +32,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/formconditions.cpp" line="266"/>
|
||||
<location filename="../../src/formconditions.cpp" line="271"/>
|
||||
<source>Paste %n condition(s)</source>
|
||||
<translation>
|
||||
<numerusform>Paste %n condition</numerusform>
|
||||
@ -40,7 +40,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/formconditions.cpp" line="271"/>
|
||||
<location filename="../../src/formconditions.cpp" line="276"/>
|
||||
<source>Remove %n condition(s)</source>
|
||||
<translation>
|
||||
<numerusform>Remove %n condition</numerusform>
|
||||
@ -62,7 +62,7 @@
|
||||
<context>
|
||||
<name>FormSearchControl</name>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/formsearchcontrol.cpp" line="340"/>
|
||||
<location filename="../../src/formsearchcontrol.cpp" line="443"/>
|
||||
<source>Paste %n seed(s) from clipboard</source>
|
||||
<translation>
|
||||
<numerusform>Paste %n seed from clipboard</numerusform>
|
||||
@ -70,29 +70,10 @@
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QuadListDialog</name>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/quadlistdialog.cpp" line="159"/>
|
||||
<source>%n quad-hut(s)</source>
|
||||
<translation>
|
||||
<numerusform>%n quad-hut</numerusform>
|
||||
<numerusform>%n quad-huts</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/quadlistdialog.cpp" line="160"/>
|
||||
<source>%n quad-monument(s)</source>
|
||||
<translation>
|
||||
<numerusform>%n quad-monument</numerusform>
|
||||
<numerusform>%n quad-monuments</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SearchMaster</name>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/searchthread.cpp" line="156"/>
|
||||
<location filename="../../src/searchthread.cpp" line="165"/>
|
||||
<source>Biome condition with ID %1 includes %n biome(s) that do not generate in MC %2.</source>
|
||||
<translation>
|
||||
<numerusform>Biome condition with ID %1 includes %n biome that does not generate in MC %2.</numerusform>
|
||||
@ -100,7 +81,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/searchthread.cpp" line="540"/>
|
||||
<location filename="../../src/searchthread.cpp" line="560"/>
|
||||
<source>Failed to stop %n worker thread(s).
|
||||
Keep waiting for threads to stop?</source>
|
||||
<translation>
|
||||
|
@ -430,7 +430,7 @@ ConditionDialog::ConditionDialog(FormConditions *parent, Config *config, int mcv
|
||||
setClimateLimits(climaterange[0], cond.limok, true);
|
||||
setClimateLimits(climaterange[1], cond.limex, false);
|
||||
|
||||
ui->comboHeightRange->setCurrentIndex(cond.flags & Condition::FLG_INRANGE ? 0 : 1);
|
||||
ui->comboHeightRange->setCurrentIndex(cond.flags & Condition::FLG_IN_RANGE ? 0 : 1);
|
||||
}
|
||||
|
||||
on_lineSquare_editingFinished();
|
||||
@ -1029,7 +1029,7 @@ void ConditionDialog::on_buttonOk_clicked()
|
||||
if (ui->checkMatchAny->isChecked())
|
||||
c.flags |= Condition::FLG_MATCH_ANY;
|
||||
if (ui->comboHeightRange->currentIndex() == 0)
|
||||
c.flags |= Condition::FLG_INRANGE;
|
||||
c.flags |= Condition::FLG_IN_RANGE;
|
||||
|
||||
c.varflags = c.varstart = 0;
|
||||
if (ui->checkStartPieces->isChecked())
|
||||
@ -1098,10 +1098,11 @@ void ConditionDialog::on_comboBoxCat_currentIndexChanged(int idx)
|
||||
continue;
|
||||
slot++;
|
||||
QVariant vidx = QVariant::fromValue((int)(ft - g_filterinfo.list));
|
||||
QString txt = QApplication::translate("Filter", ft->name);
|
||||
if (ft->icon)
|
||||
ui->comboBoxType->insertItem(slot, QIcon(ft->icon), ft->name, vidx);
|
||||
ui->comboBoxType->insertItem(slot, QIcon(ft->icon), txt, vidx);
|
||||
else
|
||||
ui->comboBoxType->insertItem(slot, QApplication::translate("Filter", ft->name), vidx);
|
||||
ui->comboBoxType->insertItem(slot, txt, vidx);
|
||||
|
||||
if (mc < ft->mcmin || mc > ft->mcmax)
|
||||
ui->comboBoxType->setItemData(slot, false, Qt::UserRole-1); // deactivate
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "cutil.h"
|
||||
|
||||
#include <QThread>
|
||||
#include <QCoreApplication>
|
||||
|
||||
|
||||
void ExtGenConfig::reset()
|
||||
@ -282,6 +283,7 @@ void Config::reset()
|
||||
gridMultiplier = 0;
|
||||
mapCacheSize = 256;
|
||||
mapThreads = 0;
|
||||
lang = "en_US";
|
||||
biomeColorPath = "";
|
||||
separator = ";";
|
||||
quote = "";
|
||||
@ -300,6 +302,7 @@ void Config::load(QSettings& settings)
|
||||
gridMultiplier = settings.value("config/gridMultiplier", gridMultiplier).toInt();
|
||||
mapCacheSize = settings.value("config/mapCacheSize", mapCacheSize).toInt();
|
||||
mapThreads = settings.value("config/mapThreads", mapThreads).toInt();
|
||||
lang = settings.value("config/lang", lang).toString();
|
||||
biomeColorPath = settings.value("config/biomeColorPath", biomeColorPath).toString();
|
||||
separator = settings.value("config/separator", separator).toString();
|
||||
quote = settings.value("config/quote", quote).toString();
|
||||
@ -318,6 +321,7 @@ void Config::save(QSettings& settings)
|
||||
settings.setValue("config/gridMultiplier", gridMultiplier);
|
||||
settings.setValue("config/mapCacheSize", mapCacheSize);
|
||||
settings.setValue("config/mapThreads", mapThreads);
|
||||
settings.setValue("config/lang", lang);
|
||||
settings.setValue("config/biomeColorPath", biomeColorPath);
|
||||
settings.setValue("config/separator", separator);
|
||||
settings.setValue("config/quote", quote);
|
||||
|
@ -172,6 +172,7 @@ struct Config
|
||||
int gridMultiplier;
|
||||
int mapCacheSize;
|
||||
int mapThreads;
|
||||
QString lang;
|
||||
QString biomeColorPath;
|
||||
QString separator;
|
||||
QString quote;
|
||||
|
@ -9,6 +9,8 @@
|
||||
#include <QThread>
|
||||
#include <QFileInfo>
|
||||
#include <QFileDialog>
|
||||
#include <QDirIterator>
|
||||
#include <QLocale>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
@ -32,6 +34,20 @@ ConfigDialog::ConfigDialog(QWidget *parent, Config *config)
|
||||
ui->lineMatching->setValidator(new QIntValidator(1, 99999999, ui->lineMatching));
|
||||
ui->spinThreads->setRange(1, QThread::idealThreadCount());
|
||||
|
||||
QString rclang = ":/lang";
|
||||
QDirIterator it(rclang, QDirIterator::Subdirectories);
|
||||
while (it.hasNext())
|
||||
{
|
||||
QString fnam = it.next();
|
||||
if(!fnam.endsWith(".qm"))
|
||||
continue;
|
||||
QString code = QFileInfo(fnam).baseName();
|
||||
QLocale locale(code);
|
||||
QString text = QLocale::languageToString(locale.language());
|
||||
text += " (" + QLocale::countryToString(locale.country()) + ")";
|
||||
ui->comboLang->addItem(text, code);
|
||||
}
|
||||
|
||||
initConfig(config);
|
||||
}
|
||||
|
||||
@ -55,6 +71,7 @@ void ConfigDialog::initConfig(Config *config)
|
||||
ui->comboGridMult->setCurrentText(config->gridMultiplier ? QString::number(config->gridMultiplier) : tr("None"));
|
||||
ui->spinCacheSize->setValue(config->mapCacheSize);
|
||||
ui->spinThreads->setValue(config->mapThreads ? config->mapThreads : QThread::idealThreadCount());
|
||||
ui->comboLang->setCurrentIndex(ui->comboLang->findData(config->lang));
|
||||
ui->lineSep->setText(config->separator);
|
||||
int idx = config->quote == "\'" ? 1 : config->quote== "\"" ? 2 : 0;
|
||||
ui->comboQuote->setCurrentIndex(idx);
|
||||
@ -75,6 +92,7 @@ Config ConfigDialog::getConfig()
|
||||
conf.gridMultiplier = ui->comboGridMult->currentText().toInt();
|
||||
conf.mapCacheSize = ui->spinCacheSize->value();
|
||||
conf.mapThreads = ui->spinThreads->value();
|
||||
conf.lang = ui->comboLang->currentData().toString();
|
||||
conf.separator = ui->lineSep->text();
|
||||
int idx = ui->comboQuote->currentIndex();
|
||||
conf.quote = idx == 1 ? "\'" : idx == 2 ? "\"" : "";
|
||||
|
@ -145,14 +145,7 @@
|
||||
<string>Interface</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Biome color customization:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="4">
|
||||
<item row="3" column="4">
|
||||
<widget class="QPushButton" name="buttonClear">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
@ -166,133 +159,57 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="2">
|
||||
<widget class="QPushButton" name="buttonBiomeColor">
|
||||
<property name="text">
|
||||
<string>[none]</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0" colspan="5">
|
||||
<widget class="QCheckBox" name="checkSmooth">
|
||||
<property name="toolTip">
|
||||
<string>Simulate innertia for the map view</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Smooth map motion</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="toolTip">
|
||||
<string>Use a fixed grid in blocks instead of outlining the generated map tiles
|
||||
Leave blank for the default behaviour</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Custom grid spacing:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" colspan="3">
|
||||
<widget class="QComboBox" name="comboStyle">
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>System</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Dark</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="5">
|
||||
<widget class="QCheckBox" name="checkBBoxes">
|
||||
<property name="text">
|
||||
<string>Outline known bounding boxes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Maximum structure zoom:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="9" column="0" colspan="5">
|
||||
<widget class="QCheckBox" name="checkBBoxes">
|
||||
<property name="text">
|
||||
<string>Outline known bounding boxes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>Custom grid multiplier:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>GUI style:</string>
|
||||
<item row="7" column="2" colspan="3">
|
||||
<widget class="QSpinBox" name="spinCacheSize">
|
||||
<property name="suffix">
|
||||
<string> MB</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>8192</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>256</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2" colspan="3">
|
||||
<widget class="QPushButton" name="buttonBiomeColorEditor">
|
||||
<item row="10" column="0" colspan="5">
|
||||
<widget class="QCheckBox" name="checkSmooth">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Simulate inertia for the map view</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Edit biome colors...</string>
|
||||
<string>Smooth map motion</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2" colspan="3">
|
||||
<widget class="QPushButton" name="buttonStructVisEdit">
|
||||
<property name="text">
|
||||
<string>Edit map visibility limits...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="3">
|
||||
<widget class="QLineEdit" name="lineGridSpacing"/>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Map cache size:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="buttonColorHelp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>14</width>
|
||||
<height>14</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border: none;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../rc/icons.qrc">
|
||||
<normaloff>:/icons/info.png</normaloff>:/icons/info.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>14</width>
|
||||
<height>14</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2" colspan="3">
|
||||
<item row="6" column="2" colspan="3">
|
||||
<widget class="QComboBox" name="comboGridMult">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@ -324,35 +241,128 @@ Leave blank for the default behaviour</string>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2" colspan="3">
|
||||
<widget class="QSpinBox" name="spinCacheSize">
|
||||
<property name="suffix">
|
||||
<string> MB</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>8192</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>256</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<item row="8" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Threads for map:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="2" colspan="3">
|
||||
<item row="0" column="2" colspan="3">
|
||||
<widget class="QComboBox" name="comboStyle">
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>System</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Dark</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="buttonColorHelp">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>14</width>
|
||||
<height>14</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border: none;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../rc/icons.qrc">
|
||||
<normaloff>:/icons/info.png</normaloff>:/icons/info.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>14</width>
|
||||
<height>14</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="3">
|
||||
<widget class="QPushButton" name="buttonStructVisEdit">
|
||||
<property name="text">
|
||||
<string>Edit map visibility limits...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2" colspan="3">
|
||||
<widget class="QLineEdit" name="lineGridSpacing"/>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="3">
|
||||
<widget class="QPushButton" name="buttonBiomeColorEditor">
|
||||
<property name="text">
|
||||
<string>Edit biome colors...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2" colspan="2">
|
||||
<widget class="QPushButton" name="buttonBiomeColor">
|
||||
<property name="text">
|
||||
<string>[none]</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="toolTip">
|
||||
<string>Use a fixed grid in blocks instead of outlining the generated map tiles
|
||||
Leave blank for the default behaviour</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Custom grid spacing:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="2" colspan="3">
|
||||
<widget class="QSpinBox" name="spinThreads"/>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Map cache size:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Biome color customization:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>GUI style:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>Language:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2" colspan="3">
|
||||
<widget class="QComboBox" name="comboLang"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -23,6 +23,8 @@ class MainWindow;
|
||||
|
||||
class SeedTableModel : public QAbstractTableModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SeedTableModel(QObject *parent = nullptr) :
|
||||
QAbstractTableModel(parent) {}
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include "mainwindow.h"
|
||||
#include <QApplication>
|
||||
#include <QTranslator>
|
||||
#include <QFontDatabase>
|
||||
#include <QStandardPaths>
|
||||
#include <QDir>
|
||||
@ -60,10 +59,6 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
QTranslator translator;
|
||||
translator.load("en_US", ":/lang");
|
||||
app.installTranslator(&translator);
|
||||
|
||||
//int fontid = QFontDatabase::addApplicationFont(":/fonts/test.ttf");
|
||||
int fontid = QFontDatabase::addApplicationFont(":/fonts/DejaVuSans.ttf");
|
||||
if (fontid >= 0)
|
||||
|
@ -33,13 +33,15 @@
|
||||
#include <QStandardPaths>
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
#include <QTranslator>
|
||||
#include <QLibraryInfo>
|
||||
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
, ui(new Ui::MainWindow)
|
||||
, dock(new QDockWidget(tr("Map"), this))
|
||||
, mapView(new MapView(this))
|
||||
, ui()
|
||||
, dock()
|
||||
, mapView()
|
||||
, formCond()
|
||||
, formGen48()
|
||||
, formControl()
|
||||
@ -52,6 +54,15 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
, dimactions{}
|
||||
, dimgroup()
|
||||
{
|
||||
QSettings settings(APP_STRING, APP_STRING);
|
||||
QString lang = settings.value("config/lang", QLocale().name()).toString();
|
||||
if (!loadTranslation(lang))
|
||||
loadTranslation("en_US");
|
||||
|
||||
ui = new Ui::MainWindow;
|
||||
dock = new QDockWidget(tr("Map"), this);
|
||||
mapView = new MapView(this);
|
||||
|
||||
ui->setupUi(this);
|
||||
|
||||
dock->setWidget(mapView);
|
||||
@ -272,6 +283,22 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
||||
QMainWindow::closeEvent(event);
|
||||
}
|
||||
|
||||
bool MainWindow::loadTranslation(QString lang)
|
||||
{
|
||||
static QTranslator rc_translator;
|
||||
static QTranslator qt_translator;
|
||||
if (!rc_translator.load(lang, ":/lang"))
|
||||
return false;
|
||||
QLocale::setDefault(lang);
|
||||
QString qt_locale = "qtbase_" + lang;
|
||||
QString qt_trpath = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
|
||||
if (qt_translator.load(qt_locale, qt_trpath))
|
||||
qApp->installTranslator(&qt_translator);
|
||||
qApp->installTranslator(&rc_translator);
|
||||
config.lang = lang;
|
||||
return true;
|
||||
}
|
||||
|
||||
QAction *MainWindow::addMapAction(int sopt, const char *iconpath, QString tip)
|
||||
{
|
||||
QIcon icon;
|
||||
@ -1093,6 +1120,12 @@ void MainWindow::onUpdateConfig()
|
||||
Config old = config;
|
||||
config.load();
|
||||
|
||||
if (old.lang != config.lang)
|
||||
{
|
||||
QString msg = tr("The application will need to be restarted before all changes can take effect.");
|
||||
QMessageBox::information(this, tr("Restart required"), msg);
|
||||
}
|
||||
|
||||
getMapView()->setConfig(config);
|
||||
if (old.uistyle != config.uistyle)
|
||||
onStyleChanged(config.uistyle);
|
||||
|
@ -49,6 +49,8 @@ public:
|
||||
virtual ~MainWindow();
|
||||
virtual void closeEvent(QCloseEvent *event) override;
|
||||
|
||||
bool loadTranslation(QString lang);
|
||||
|
||||
QAction *addMapAction(int sopt, const char *iconpath, QString tip);
|
||||
|
||||
bool getSeed(WorldInfo *wi, bool applyrand = true);
|
||||
|
@ -343,15 +343,10 @@ void MapView::showContextMenu(const QPoint &pos)
|
||||
grab(); // invokes an immediate paint call
|
||||
}
|
||||
|
||||
VarPos vp = getActivePos();
|
||||
QString seed = world ? QString::asprintf("%" PRId64, (int64_t)world->wi.seed) : "";
|
||||
QString tp = QString::asprintf("/tp @p %d ~ %d", vp.p.x, vp.p.z);
|
||||
QString coords = QString::asprintf("%d %d", vp.p.x, vp.p.z);
|
||||
QString chunk = QString::asprintf("%d %d", vp.p.x >> 4, vp.p.z >> 4);
|
||||
QString region = QString::asprintf("%d %d", vp.p.x >> 9, vp.p.z >> 9);
|
||||
struct _cpy_dat { QString txt, cpy; };
|
||||
std::vector<_cpy_dat> cpy_dat;
|
||||
|
||||
menu.addAction(tr("Go to coordinates..."), this, &MapView::onGoto, QKeySequence(Qt::CTRL + Qt::Key_G));
|
||||
menu.addAction(tr("Copy seed: ")+seed, this, &MapView::copySeed, QKeySequence::Copy);
|
||||
VarPos vp = getActivePos();
|
||||
|
||||
if (vp.type != -1)
|
||||
{ // structure has a known size / location
|
||||
@ -375,14 +370,34 @@ void MapView::showContextMenu(const QPoint &pos)
|
||||
midy = 63;
|
||||
}
|
||||
}
|
||||
QString tps = QString::asprintf("/tp @p %d %d %d", midx, midy, midz);
|
||||
menu.addAction(tr("Copy tp: ")+tps, [=](){ this->copyText(tps); });
|
||||
cpy_dat.push_back({ tr("Copy tp:"), QString::asprintf("/tp @p %d %d %d", midx, midy, midz) });
|
||||
}
|
||||
menu.addAction(tr("Copy tp: ")+tp, [=](){ this->copyText(tp); });
|
||||
menu.addAction(tr("Copy block: ")+coords, [=](){ this->copyText(coords); });
|
||||
menu.addAction(tr("Copy chunk: ")+chunk, [=](){ this->copyText(chunk); });
|
||||
menu.addAction(tr("Copy region: ")+region, [=](){ this->copyText(region); });
|
||||
// menu.addAction(tr("Animation"), this, &MapView::runAni);
|
||||
cpy_dat.push_back({ tr("Copy tp:"), QString::asprintf("/tp @p %d ~ %d", vp.p.x, vp.p.z) });
|
||||
cpy_dat.push_back({ tr("Copy coords:"), QString::asprintf("%d %d", vp.p.x, vp.p.z) });
|
||||
cpy_dat.push_back({ tr("Copy chunk:"), QString::asprintf("%d %d", vp.p.x >> 4, vp.p.z >> 4) });
|
||||
cpy_dat.push_back({ tr("Copy region:"), QString::asprintf("%d %d", vp.p.x >> 9, vp.p.z >> 9) });
|
||||
|
||||
int pad = 0;
|
||||
for (auto& it : cpy_dat)
|
||||
{
|
||||
if (it.txt.length() > pad)
|
||||
pad = it.txt.length();
|
||||
}
|
||||
pad += 1;
|
||||
|
||||
|
||||
menu.addAction(tr("Go to coordinates..."), this, &MapView::onGoto, QKeySequence(Qt::CTRL + Qt::Key_G));
|
||||
if (world)
|
||||
{
|
||||
QString txt = tr("Copy seed:").leftJustified(pad) + QString::asprintf("%" PRId64, (int64_t)world->wi.seed);
|
||||
menu.addAction(txt, this, &MapView::copySeed, QKeySequence::Copy);
|
||||
}
|
||||
for (auto& it : cpy_dat)
|
||||
{
|
||||
QString txt = it.txt.leftJustified(pad) + it.cpy;
|
||||
menu.addAction(txt, [=](){ this->copyText(it.cpy); });
|
||||
}
|
||||
//menu.addAction(tr("Animation"), this, &MapView::runAni);
|
||||
menu.exec(mapToGlobal(pos));
|
||||
}
|
||||
|
||||
|
@ -1849,7 +1849,7 @@ L_noise_biome:
|
||||
int ymax = cond->limok[NP_DEPTH][1];
|
||||
float y;
|
||||
mapApproxHeight(&y, nullptr, &env->g, &env->sn, rx1, rz1, 1, 1);
|
||||
if (cond->flags & Condition::FLG_INRANGE)
|
||||
if (cond->flags & Condition::FLG_IN_RANGE)
|
||||
valid = y >= ymin && y <= ymax;
|
||||
else
|
||||
valid = y <= ymin || y >= ymax;
|
||||
|
257
src/search.h
@ -134,44 +134,46 @@ static const struct FilterList
|
||||
"",
|
||||
""
|
||||
};
|
||||
|
||||
#define _(S) QT_TRANSLATE_NOOP("Filter", S)
|
||||
|
||||
list[F_LOGIC_OR] = FilterInfo{
|
||||
CAT_HELPER, 0, 0, 0, 0, 0, 0, 1, 0, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/helper.png",
|
||||
_("OR logic gate"),
|
||||
_("Evaluates as true when any of the conditions that reference it "
|
||||
QT_TRANSLATE_NOOP("Filter", "OR logic gate"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Evaluates as true when any of the conditions that reference it "
|
||||
"(by relative location) are met. When no referencing conditions are "
|
||||
"defined, it defaults to true.")
|
||||
};
|
||||
list[F_LOGIC_NOT] = FilterInfo{
|
||||
CAT_HELPER, 0, 0, 0, 0, 0, 0, 1, 0, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/helper.png",
|
||||
_("NOT logic gate"),
|
||||
_("Evaluates as true when none of the conditions that reference it "
|
||||
QT_TRANSLATE_NOOP("Filter", "NOT logic gate"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Evaluates as true when none of the conditions that reference it "
|
||||
"(by relative location) are met. When no referencing conditions are "
|
||||
"defined, it defaults to true.")
|
||||
};
|
||||
list[F_LUA] = FilterInfo{
|
||||
CAT_HELPER, 0, 0, 0, 0, 0, 0, 1, 0, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/helper.png",
|
||||
_("Lua"),
|
||||
_("Define custom conditions using Lua scripts.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Lua"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Define custom conditions using Lua scripts.")
|
||||
};
|
||||
list[F_SCALE_TO_NETHER] = FilterInfo{
|
||||
CAT_HELPER, 0, 0, 0, 0, 0, 0, 1, 0, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/portal_lit.png",
|
||||
_("Coordinate factor x/8"),
|
||||
_("Divides relative location by 8, from Overworld to Nether.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Coordinate factor x/8"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Divides relative location by 8, from Overworld to Nether.")
|
||||
};
|
||||
list[F_SCALE_TO_OVERWORLD] = FilterInfo{
|
||||
CAT_HELPER, 0, 0, 0, 0, 0, 0, 1, 0, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/portal_lit.png",
|
||||
_("Coordinate factor x*8"),
|
||||
_("Multiplies relative location by 8, from Nether to Overworld.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Coordinate factor x*8"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Multiplies relative location by 8, from Nether to Overworld.")
|
||||
};
|
||||
const char *spiral_desc = _(
|
||||
const char *spiral_desc = QT_TRANSLATE_NOOP("Filter",
|
||||
"<html><head/><body>"
|
||||
"Spiral iterator conditions can be used to move a testing position across "
|
||||
"a given area using a certain step size. Other conditions that refer to it "
|
||||
@ -182,59 +184,61 @@ static const struct FilterList
|
||||
list[F_SPIRAL_1] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 1, 0, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:1"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:1"),
|
||||
spiral_desc
|
||||
};
|
||||
list[F_SPIRAL_4] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 4, 2, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:4"),
|
||||
spiral_desc
|
||||
};
|
||||
list[F_SPIRAL_16] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 16, 4, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:16"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:16"),
|
||||
spiral_desc
|
||||
};
|
||||
list[F_SPIRAL_64] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 64, 6, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:64"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:64"),
|
||||
spiral_desc
|
||||
};
|
||||
list[F_SPIRAL_256] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 256, 8, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:256"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:256"),
|
||||
spiral_desc
|
||||
};
|
||||
list[F_SPIRAL_512] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 512, 9, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:512"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:512"),
|
||||
spiral_desc
|
||||
};
|
||||
list[F_SPIRAL_1024] = FilterInfo{
|
||||
CAT_HELPER, 0, 1, 1, 0, 0, 0, 1024, 10, 0, MC_UNDEF, MC_NEWEST, DIM_UNDEF, 0, disp++,
|
||||
":icons/reference.png",
|
||||
_("Spiral iterator 1:1024"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spiral iterator 1:1024"),
|
||||
spiral_desc
|
||||
};
|
||||
|
||||
list[F_QH_IDEAL] = FilterInfo{
|
||||
CAT_QUAD, 0, 1, 1, 0, 0, Swamp_Hut, 512, 9, 0, MC_1_4, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/quad.png",
|
||||
_("Quad-hut (ideal)"),
|
||||
_("The lower 48-bits provide potential for four swamp huts in "
|
||||
QT_TRANSLATE_NOOP("Filter", "Quad-hut (ideal)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"The lower 48-bits provide potential for four swamp huts in "
|
||||
"spawning range, in one of the best configurations that exist.")
|
||||
};
|
||||
|
||||
list[F_QH_CLASSIC] = FilterInfo{
|
||||
CAT_QUAD, 0, 1, 1, 0, 0, Swamp_Hut, 512, 9, 0, MC_1_4, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/quad.png",
|
||||
_("Quad-hut (classic)"),
|
||||
_("The lower 48-bits provide potential for four swamp huts in "
|
||||
QT_TRANSLATE_NOOP("Filter", "Quad-hut (classic)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"The lower 48-bits provide potential for four swamp huts in "
|
||||
"spawning range, in one of the \"classic\" configurations. "
|
||||
"(Checks for huts in the nearest 2x2 chunk corners of each "
|
||||
"region.)")
|
||||
@ -243,8 +247,9 @@ static const struct FilterList
|
||||
list[F_QH_NORMAL] = FilterInfo{
|
||||
CAT_QUAD, 0, 1, 1, 0, 0, Swamp_Hut, 512, 9, 0, MC_1_4, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/quad.png",
|
||||
_("Quad-hut (normal)"),
|
||||
_("The lower 48-bits provide potential for four swamp huts in "
|
||||
QT_TRANSLATE_NOOP("Filter", "Quad-hut (normal)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"The lower 48-bits provide potential for four swamp huts in "
|
||||
"spawning range, such that all of them are within 128 blocks "
|
||||
"of a single AFK location, including a vertical tollerance "
|
||||
"for a fall damage chute.")
|
||||
@ -253,8 +258,9 @@ static const struct FilterList
|
||||
list[F_QH_BARELY] = FilterInfo{
|
||||
CAT_QUAD, 0, 1, 1, 0, 0, Swamp_Hut, 512, 9, 0, MC_1_4, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/quad.png",
|
||||
_("Quad-hut (barely)"),
|
||||
_("The lower 48-bits provide potential for four swamp huts in "
|
||||
QT_TRANSLATE_NOOP("Filter", "Quad-hut (barely)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"The lower 48-bits provide potential for four swamp huts in "
|
||||
"spawning range, in any configuration, such that the bounding "
|
||||
"boxes are within 128 blocks of a single AFK location.")
|
||||
};
|
||||
@ -262,8 +268,9 @@ static const struct FilterList
|
||||
list[F_QM_95] = FilterInfo{
|
||||
CAT_QUAD, 0, 1, 1, 0, 0, Monument, 512, 9, 0, MC_1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/quad.png",
|
||||
_("Quad-ocean-monument (>95%)"),
|
||||
_("The lower 48-bits provide potential for 95% of the area of "
|
||||
QT_TRANSLATE_NOOP("Filter", "Quad-ocean-monument (>95%)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"The lower 48-bits provide potential for 95% of the area of "
|
||||
"four ocean monuments to be within 128 blocks of an AFK "
|
||||
"location.")
|
||||
};
|
||||
@ -271,8 +278,9 @@ static const struct FilterList
|
||||
list[F_QM_90] = FilterInfo{
|
||||
CAT_QUAD, 0, 1, 1, 0, 0, Monument, 512, 9, 0, MC_1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/quad.png",
|
||||
_("Quad-ocean-monument (>90%)"),
|
||||
_("The lower 48-bits provide potential for 90% of the area of "
|
||||
QT_TRANSLATE_NOOP("Filter", "Quad-ocean-monument (>90%)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"The lower 48-bits provide potential for 90% of the area of "
|
||||
"four ocean monuments to be within 128 blocks of an AFK "
|
||||
"location.")
|
||||
};
|
||||
@ -280,45 +288,51 @@ static const struct FilterList
|
||||
list[F_BIOME] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, L_VORONOI_1, 0, 1, 0, 0, MC_B1_7, MC_1_17, 0, 1, disp++, // disable for 1.18
|
||||
":icons/map.png",
|
||||
_("Biomes 1:1"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:1"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-).")
|
||||
};
|
||||
|
||||
list[F_BIOME_4] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 4, 2, 0, MC_B1_7, MC_NEWEST, 0, 1, disp++,
|
||||
":icons/map.png",
|
||||
_("Biomes 1:4"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-).")
|
||||
};
|
||||
list[F_BIOME_16] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 16, 4, 0, MC_B1_7, MC_NEWEST, 0, 1, disp++,
|
||||
":icons/map.png",
|
||||
_("Biomes 1:16"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:16"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-).")
|
||||
};
|
||||
list[F_BIOME_64] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 64, 6, 0, MC_B1_7, MC_NEWEST, 0, 1, disp++,
|
||||
":icons/map.png",
|
||||
_("Biomes 1:64"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:64"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-).")
|
||||
};
|
||||
list[F_BIOME_256] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 256, 8, 0, MC_B1_7, MC_NEWEST, 0, 1, disp++,
|
||||
":icons/map.png",
|
||||
_("Biomes 1:256"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:256"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-).")
|
||||
};
|
||||
|
||||
list[F_BIOME_4_RIVER] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, L_RIVER_MIX_4, 0, 4, 2, 0, MC_1_13, MC_1_17, 0, 0, disp++,
|
||||
":icons/map.png",
|
||||
_("Biomes 1:4 RIVER"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:4 RIVER"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-) "
|
||||
"at layer RIVER with scale 1:4. "
|
||||
"This layer does not generate ocean variants.")
|
||||
@ -326,8 +340,9 @@ static const struct FilterList
|
||||
list[F_BIOME_256_OTEMP] = FilterInfo{
|
||||
CAT_BIOMES, 0, 1, 1, 0, L_OCEAN_TEMP_256, 0, 256, 8, 0, MC_1_13, MC_1_17, 0, 0, disp++,
|
||||
":icons/map.png",
|
||||
_("Biomes 1:256 O.TEMP"),
|
||||
_("Allows only seeds with the included (+) biomes in the specified area and "
|
||||
QT_TRANSLATE_NOOP("Filter", "Biomes 1:256 O.TEMP"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Allows only seeds with the included (+) biomes in the specified area and "
|
||||
"discard those that have biomes that are explicitly excluded (-) "
|
||||
"at layer OCEAN TEMPERATURE with scale 1:256. "
|
||||
"This generation layer depends only on the lower 48-bits of the seed.")
|
||||
@ -335,204 +350,224 @@ static const struct FilterList
|
||||
list[F_CLIMATE_NOISE] = FilterInfo{
|
||||
CAT_BIOMES, 0, 1, 1, 0, 0, 0, 4, 2, 0, MC_1_18, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/map.png",
|
||||
_("Climate parameters 1:4"),
|
||||
_("Custom limits for the required and allowed climate noise parameters that "
|
||||
QT_TRANSLATE_NOOP("Filter", "Climate parameters 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Custom limits for the required and allowed climate noise parameters that "
|
||||
"the specified area should cover.")
|
||||
};
|
||||
list[F_CLIMATE_MINMAX] = FilterInfo{
|
||||
CAT_BIOMES, 0, 1, 1, 0, 0, 0, 4, 2, 0, MC_1_18, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/map.png",
|
||||
_("Locate climate extreme 1:4"),
|
||||
_("Finds the location where a climate parameter reaches its minimum or maximum.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Locate climate extreme 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Finds the location where a climate parameter reaches its minimum or maximum.")
|
||||
};
|
||||
list[F_BIOME_CENTER] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 4, 2, 1, MC_B1_7, MC_NEWEST, 0, 1, disp++,
|
||||
":icons/map.png",
|
||||
_("Locate biome center 1:4"),
|
||||
_("Finds the center position of a given biome.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Locate biome center 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Finds the center position of a given biome.")
|
||||
};
|
||||
list[F_BIOME_CENTER_256] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 256, 8, 1, MC_B1_7, MC_1_17, 0, 1, disp++,
|
||||
":icons/map.png",
|
||||
_("Locate biome center 1:256"),
|
||||
_("Finds the center position of a given biome. Based on the 1:256 biome layer.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Locate biome center 1:256"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Finds the center position of a given biome. Based on the 1:256 biome layer.")
|
||||
};
|
||||
list[F_TEMPS] = FilterInfo{
|
||||
CAT_BIOMES, 1, 1, 1, 0, 0, 0, 1024, 10, 0, MC_1_7, MC_1_17, 0, 0, disp++,
|
||||
":icons/tempcat.png",
|
||||
_("Temperature categories"),
|
||||
_("Checks that the area has a minimum of all the required temperature categories.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Temperature categories"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Checks that the area has a minimum of all the required temperature categories.")
|
||||
};
|
||||
|
||||
list[F_BIOME_NETHER_1] = FilterInfo{
|
||||
CAT_NETHER, 1, 1, 1, 0, 0, 0, 1, 0, 0, MC_1_16_1, 0, -1, 1, disp++, // disabled
|
||||
":icons/nether.png",
|
||||
_("Nether biomes 1:1 (disabled)"),
|
||||
_("Nether biomes after voronoi scaling to 1:1.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Nether biomes 1:1 (disabled)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Nether biomes after voronoi scaling to 1:1.")
|
||||
};
|
||||
list[F_BIOME_NETHER_4] = FilterInfo{
|
||||
CAT_NETHER, 0, 1, 1, 0, 0, 0, 4, 2, 0, MC_1_16_1, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/nether.png",
|
||||
_("Nether biomes 1:4"),
|
||||
_("Nether biomes with normal noise sampling at scale 1:4.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Nether biomes 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Nether biomes with normal noise sampling at scale 1:4.")
|
||||
};
|
||||
list[F_BIOME_NETHER_16] = FilterInfo{
|
||||
CAT_NETHER, 0, 1, 1, 0, 0, 0, 16, 4, 0, MC_1_16_1, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/nether.png",
|
||||
_("Nether biomes 1:16"),
|
||||
_("Nether biomes, but only sampled at scale 1:16.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Nether biomes 1:16"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Nether biomes, but only sampled at scale 1:16.")
|
||||
};
|
||||
list[F_BIOME_NETHER_64] = FilterInfo{
|
||||
CAT_NETHER, 0, 1, 1, 0, 0, 0, 64, 6, 0, MC_1_16_1, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/nether.png",
|
||||
_("Nether biomes 1:64"),
|
||||
_("Nether biomes, but only sampled at scale 1:64.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Nether biomes 1:64"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Nether biomes, but only sampled at scale 1:64.")
|
||||
};
|
||||
list[F_BIOME_NETHER_256] = FilterInfo{
|
||||
CAT_NETHER, 0, 1, 1, 0, 0, 0, 256, 8, 0, MC_1_16_1, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/nether.png",
|
||||
_("Nether biomes 1:256"),
|
||||
_("Nether biomes, but only sampled at scale 1:256.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Nether biomes 1:256"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Nether biomes, but only sampled at scale 1:256.")
|
||||
};
|
||||
|
||||
list[F_BIOME_END_1] = FilterInfo{
|
||||
CAT_END, 1, 1, 1, 0, 0, 0, 1, 0, 0, MC_1_9, 0, +1, 1, disp++, // disabled
|
||||
":icons/the_end.png",
|
||||
_("End biomes 1:1 (disabled)"),
|
||||
_("End biomes after voronoi scaling to 1:1.")
|
||||
QT_TRANSLATE_NOOP("Filter", "End biomes 1:1 (disabled)"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"End biomes after voronoi scaling to 1:1.")
|
||||
};
|
||||
list[F_BIOME_END_4] = FilterInfo{
|
||||
CAT_END, 0, 1, 1, 0, 0, 0, 4, 2, 0, MC_1_9, MC_NEWEST, +1, 0, disp++,
|
||||
":icons/the_end.png",
|
||||
_("End biomes 1:4"),
|
||||
_("End biomes sampled at scale 1:4. Note this is just a simple upscale of 1:16.")
|
||||
QT_TRANSLATE_NOOP("Filter", "End biomes 1:4"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"End biomes sampled at scale 1:4. Note this is just a simple upscale of 1:16.")
|
||||
};
|
||||
list[F_BIOME_END_16] = FilterInfo{
|
||||
CAT_END, 0, 1, 1, 0, 0, 0, 16, 4, 0, MC_1_9, MC_NEWEST, +1, 0, disp++,
|
||||
":icons/the_end.png",
|
||||
_("End biomes 1:16"),
|
||||
_("End biomes with normal sampling at scale 1:16. ")
|
||||
QT_TRANSLATE_NOOP("Filter", "End biomes 1:16"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"End biomes with normal sampling at scale 1:16. ")
|
||||
};
|
||||
list[F_BIOME_END_64] = FilterInfo{
|
||||
CAT_END, 0, 1, 1, 0, 0, 0, 64, 6, 0, MC_1_9, MC_NEWEST, +1, 0, disp++,
|
||||
":icons/the_end.png",
|
||||
_("End biomes 1:64"),
|
||||
_("End biomes with lossy sampling at scale 1:64. ")
|
||||
QT_TRANSLATE_NOOP("Filter", "End biomes 1:64"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"End biomes with lossy sampling at scale 1:64. ")
|
||||
};
|
||||
|
||||
list[F_SPAWN] = FilterInfo{
|
||||
CAT_OTHER, 1, 1, 1, 1, 0, 0, 1, 0, 0, MC_B1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/spawn.png",
|
||||
_("Spawn"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Spawn"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_SLIME] = FilterInfo{
|
||||
CAT_OTHER, 0, 1, 1, 0, 0, 0, 16, 4, 1, MC_UNDEF, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/slime.png",
|
||||
_("Slime chunk"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Slime chunk"),
|
||||
""
|
||||
};
|
||||
list[F_HEIGHT] = FilterInfo{
|
||||
CAT_OTHER, 0, 1, 0, 0, 0, 0, 4, 2, 0, MC_1_1, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/height.png",
|
||||
_("Surface height"),
|
||||
_("Check the approximate surface height at scale 1:4 at a single coordinate.")
|
||||
QT_TRANSLATE_NOOP("Filter", "Surface height"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Check the approximate surface height at scale 1:4 at a single coordinate.")
|
||||
};
|
||||
|
||||
list[F_FIRST_STRONGHOLD] = FilterInfo{
|
||||
CAT_OTHER, 0, 1, 1, 1, 0, 0, 1, 0, 0, MC_B1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/stronghold.png",
|
||||
_("First stronghold"),
|
||||
_("Finds the approxmiate location of the first stronghold "
|
||||
QT_TRANSLATE_NOOP("Filter", "First stronghold"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Finds the approxmiate location of the first stronghold "
|
||||
"(+/-112 blocks). Depends only on the 48-bit seed.")
|
||||
};
|
||||
|
||||
list[F_STRONGHOLD] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, 0, 1, 0, 1, MC_B1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/stronghold.png",
|
||||
_("Stronghold"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Stronghold"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_VILLAGE] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Village, 1, 0, 1, MC_B1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/village.png",
|
||||
_("Village"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Village"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_MINESHAFT] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 0, 0, Mineshaft, 1, 0, 1, MC_B1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/mineshaft.png",
|
||||
_("Abandoned mineshaft"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Abandoned mineshaft"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_DESERT] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Desert_Pyramid, 1, 0, 1, MC_1_3, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/desert.png",
|
||||
_("Desert pyramid"),
|
||||
_("In version 1.18+, desert pyramids depend on surface height and may fail to "
|
||||
QT_TRANSLATE_NOOP("Filter", "Desert pyramid"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"In version 1.18+, desert pyramids depend on surface height and may fail to "
|
||||
"generate near caves/aquifers, rivers and oceans.")
|
||||
};
|
||||
|
||||
list[F_JUNGLE] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Jungle_Temple, 1, 0, 1, MC_1_3, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/jungle.png",
|
||||
_("Jungle temple"),
|
||||
_("In version 1.18+, jungle temples depend on surface height and may fail to "
|
||||
QT_TRANSLATE_NOOP("Filter", "Jungle temple"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"In version 1.18+, jungle temples depend on surface height and may fail to "
|
||||
"generate near caves/aquifers, rivers and oceans.")
|
||||
};
|
||||
|
||||
list[F_HUT] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Swamp_Hut, 1, 0, 1, MC_1_4, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/hut.png",
|
||||
_("Swamp hut"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Swamp hut"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_MONUMENT] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Monument, 1, 0, 1, MC_1_8, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/monument.png",
|
||||
_("Ocean monument"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Ocean monument"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_IGLOO] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Igloo, 1, 0, 1, MC_1_9, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/igloo.png",
|
||||
_("Igloo"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Igloo"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_MANSION] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Mansion, 1, 0, 1, MC_1_11, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/mansion.png",
|
||||
_("Woodland mansion"),
|
||||
_("In version 1.18+, mansions depend on surface height and may fail to "
|
||||
QT_TRANSLATE_NOOP("Filter", "Woodland mansion"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"In version 1.18+, mansions depend on surface height and may fail to "
|
||||
"generate near caves/aquifers, rivers and oceans.")
|
||||
};
|
||||
|
||||
list[F_RUINS] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Ocean_Ruin, 1, 0, 1, MC_1_13, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/ruins.png",
|
||||
_("Ocean ruins"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Ocean ruins"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_SHIPWRECK] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Shipwreck, 1, 0, 1, MC_1_13, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/shipwreck.png",
|
||||
_("Shipwreck"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Shipwreck"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_TREASURE] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Treasure, 1, 0, 1, MC_1_13, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/treasure.png",
|
||||
_("Buried treasure"),
|
||||
_("Buried treasures are always positioned near the center of a chunk "
|
||||
QT_TRANSLATE_NOOP("Filter", "Buried treasure"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Buried treasures are always positioned near the center of a chunk "
|
||||
"rather than a chunk boarder. Make sure the testing area is set "
|
||||
"accordingly.")
|
||||
};
|
||||
@ -540,76 +575,74 @@ static const struct FilterList
|
||||
list[F_WELL] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Desert_Well, 1, 0, 1, MC_1_13, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/well.png",
|
||||
_("Desert well"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Desert well"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_OUTPOST] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Outpost, 1, 0, 1, MC_1_14, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/outpost.png",
|
||||
_("Pillager outpost"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Pillager outpost"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_ANCIENT_CITY] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Ancient_City, 1, 0, 1, MC_1_19, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/ancient_city.png",
|
||||
_("Ancient city"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Ancient city"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_TRAILS] = FilterInfo{
|
||||
CAT_STRUCT, 1, 1, 1, 1, 0, Trail_Ruin, 1, 0, 1, MC_1_20, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/trail.png",
|
||||
_("Trail ruins"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Trail ruins"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_PORTAL] = FilterInfo{
|
||||
CAT_STRUCT, 0, 1, 1, 1, 0, Ruined_Portal, 1, 0, 1, MC_1_16_1, MC_NEWEST, 0, 0, disp++,
|
||||
":icons/portal.png",
|
||||
_("Ruined portal (overworld)"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Ruined portal (overworld)"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_PORTALN] = FilterInfo{
|
||||
CAT_STRUCT, 0, 1, 1, 1, 0, Ruined_Portal_N, 1, 0, 1, MC_1_16_1, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/portal.png",
|
||||
_("Ruined portal (nether)"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Ruined portal (nether)"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_FORTRESS] = FilterInfo{
|
||||
CAT_STRUCT, 0, 1, 1, 1, 0, Fortress, 1, 0, 1, MC_1_0, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/fortress.png",
|
||||
_("Nether fortress"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Nether fortress"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_BASTION] = FilterInfo{
|
||||
CAT_STRUCT, 0, 1, 1, 1, 0, Bastion, 1, 0, 1, MC_1_16_1, MC_NEWEST, -1, 0, disp++,
|
||||
":icons/bastion.png",
|
||||
_("Bastion remnant"),
|
||||
QT_TRANSLATE_NOOP("Filter", "Bastion remnant"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_ENDCITY] = FilterInfo{
|
||||
CAT_STRUCT, 0, 1, 1, 1, 0, End_City, 1, 0, 1, MC_1_9, MC_NEWEST, +1, 0, disp++,
|
||||
":icons/endcity.png",
|
||||
_("End city"),
|
||||
QT_TRANSLATE_NOOP("Filter", "End city"),
|
||||
""
|
||||
};
|
||||
|
||||
list[F_GATEWAY] = FilterInfo{
|
||||
CAT_STRUCT, 0, 1, 1, 1, 0, End_Gateway, 1, 0, 1, MC_1_13, MC_NEWEST, +1, 0, disp++,
|
||||
":icons/gateway.png",
|
||||
_("End gateway"),
|
||||
_("Checks only scattered return gateways. Does not include those generated "
|
||||
QT_TRANSLATE_NOOP("Filter", "End gateway"),
|
||||
QT_TRANSLATE_NOOP("Filter",
|
||||
"Checks only scattered return gateways. Does not include those generated "
|
||||
"when defeating the dragon.")
|
||||
};
|
||||
|
||||
#undef _ // translation macro
|
||||
|
||||
}
|
||||
}
|
||||
g_filterinfo;
|
||||
@ -632,7 +665,7 @@ struct /*__attribute__((packed))*/ Condition
|
||||
enum { // condition flags
|
||||
FLG_APPROX = 0x0001,
|
||||
FLG_MATCH_ANY = 0x0010,
|
||||
FLG_INRANGE = 0x0020,
|
||||
FLG_IN_RANGE = 0x0020,
|
||||
};
|
||||
enum { // variant flags
|
||||
VAR_WITH_START = 0x01, // restrict start piece index and biome
|
||||
|