support ruby in rme
This commit is contained in:
parent
80909734c2
commit
aeb56e579c
8 changed files with 201 additions and 77 deletions
|
@ -31,7 +31,11 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="config_alias"/>
|
||||
<widget class="QLineEdit" name="config_alias">
|
||||
<property name="toolTip">
|
||||
<string>A nickname for this region map that will differentiate it from others (should be unique).</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="message_alias">
|
||||
|
@ -58,6 +62,9 @@
|
|||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="config_tilemapFormat">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The tilemap format can be either:</p><p>1) Plain (tilemap is a list of 8-bit tile indexes into the tileset)</p><p>2) 4BPP (tilemap entries are 16 bits, with x/y-flip, and palette index for 16 16-color palettes)</p><p>3) 8BPP (tilemap entries are 16 bits, with x/y-flip, single 256-color palette)</p></body></html></string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>plain</string>
|
||||
|
@ -123,6 +130,9 @@
|
|||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>The height of the tilemap</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
|
@ -170,6 +180,9 @@
|
|||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Path to the tileset image (.png) relative to the project root.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -201,6 +214,9 @@
|
|||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QFrame" name="frame_2">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Path to the tilemap binary relative to the project root.</p></body></html></string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
|
@ -272,7 +288,11 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="config_tilemapPalettePath"/>
|
||||
<widget class="QLineEdit" name="config_tilemapPalettePath">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>(optional) Path to the .pal JASC palette file</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="browse_tilemapPalettePath">
|
||||
|
@ -308,6 +328,9 @@
|
|||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The width of the tilemap</p></body></html></string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
|
@ -334,6 +357,9 @@
|
|||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="config_layoutFormat">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The format of the layout file, can be a C array in a text file with &quot;MAPSEC_&quot;-prefixed constants, or a binary file where each byte is a value of some &quot;MAPSEC_&quot;-prefixed constant.</p></body></html></string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>C array</string>
|
||||
|
@ -385,7 +411,11 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="config_layoutPath"/>
|
||||
<widget class="QLineEdit" name="config_layoutPath">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The path to the layout file, relative to the project root.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="browse_layoutPath">
|
||||
|
@ -443,6 +473,9 @@
|
|||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The layout width.</p></body></html></string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
|
@ -473,6 +506,9 @@
|
|||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="config_leftOffs">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The offset from the left of the tilemap where the layout starts.</p><p>(ie, coordinate (0,0) in the layout would be (offset left, offset top) in the tilemap).</p></body></html></string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
|
@ -540,6 +576,9 @@
|
|||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The layout height.</p></body></html></string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
|
@ -569,7 +608,11 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="config_topOffs"/>
|
||||
<widget class="QSpinBox" name="config_topOffs">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>The offset from the top of the tilemap where the layout starts.</p><p>(ie, coordinate (0,0) in the layout would be (offset left, offset top) in the tilemap).</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
|
|
|
@ -181,6 +181,7 @@ private:
|
|||
bool layout_uses_layers = false;
|
||||
QStringList layout_constants;
|
||||
QString layout_qualifiers;
|
||||
QString layout_type;
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
QVector<shared_ptr<TilemapTile>> tilemap;
|
||||
|
|
|
@ -93,11 +93,11 @@ private:
|
|||
bool saveRegionMapEntries();
|
||||
tsl::ordered_map<QString, MapSectionEntry> region_map_entries;
|
||||
|
||||
void buildConfigDialog();
|
||||
bool buildConfigDialog();
|
||||
poryjson::Json configRegionMapDialog();
|
||||
void buildUpdateConfigDialog();
|
||||
poryjson::Json buildDefaultJson();
|
||||
poryjson::Json getJsonFromAlias(QString alias);
|
||||
bool verifyConfig(poryjson::Json cfg);
|
||||
|
||||
bool modified();
|
||||
|
||||
|
@ -117,7 +117,6 @@ private:
|
|||
void setRegionMap(RegionMap *map);
|
||||
|
||||
bool createCityMap(QString name);
|
||||
bool tryInsertNewMapEntry(QString);
|
||||
|
||||
void restoreWindowState();
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"region_maps": [
|
||||
{
|
||||
"alias": "hoenn",
|
||||
"tilemap": {
|
||||
"width": 64,
|
||||
"height": 64,
|
||||
"format": "plain",
|
||||
"tileset_path": "graphics/pokenav/region_map.png",
|
||||
"tilemap_path": "graphics/pokenav/region_map_map.bin"
|
||||
},
|
||||
"layout": {
|
||||
"width": 28,
|
||||
"height": 15,
|
||||
"offset_left": 1,
|
||||
"offset_top": 2,
|
||||
"format": "C array",
|
||||
"path": "src/data/region_map/region_map_layout.h"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -15,13 +15,7 @@
|
|||
|
||||
using std::make_shared;
|
||||
|
||||
static bool ensureRegionMapFileExists(QString filepath) {
|
||||
if (!QFile::exists(filepath)) {
|
||||
logError(QString("Region map file does not exist: %1").arg(filepath));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
RegionMap::RegionMap(Project *project) {
|
||||
this->project = project;
|
||||
|
@ -39,8 +33,7 @@ bool RegionMap::loadMapData(poryjson::Json data) {
|
|||
this->layout_layers.clear();
|
||||
this->layouts.clear();
|
||||
|
||||
loadTilemap(tilemapJson);
|
||||
loadLayout(layoutJson);
|
||||
return loadTilemap(tilemapJson) && loadLayout(layoutJson);
|
||||
}
|
||||
|
||||
int RegionMap::tilemapBytes() {
|
||||
|
@ -166,8 +159,6 @@ bool RegionMap::loadLayout(poryjson::Json layoutJson) {
|
|||
}
|
||||
case LayoutFormat::CArray:
|
||||
{
|
||||
// TODO: pokeruby / non-layered style C array or just an array of mapsections
|
||||
|
||||
ParseUtil parser;
|
||||
QString text = parser.readTextFile(fullPath(this->layout_path));
|
||||
|
||||
|
@ -228,8 +219,46 @@ bool RegionMap::loadLayout(poryjson::Json layoutJson) {
|
|||
}
|
||||
|
||||
} else {
|
||||
logError("Region map layout is not readable.");
|
||||
return false;
|
||||
// try single-layered
|
||||
QRegularExpression reAlt("(?<qual_1>static)?\\s?(?<qual_2>const)?\\s?(?<type>[A-Za-z0-9_]+)?\\s+(?<label>[A-Za-z0-9_]+)\\[\\]");
|
||||
QRegularExpressionMatch matchAlt = reAlt.match(text);
|
||||
if (matchAlt.hasMatch()) {
|
||||
// TODO: save type info
|
||||
QString qualifiers = matchAlt.captured("qual_1") + " " + matchAlt.captured("qual_2");
|
||||
QString type = matchAlt.captured("type");
|
||||
QString label = matchAlt.captured("label");
|
||||
this->layout_constants.append("");
|
||||
this->layout_qualifiers = qualifiers + " " + type;
|
||||
this->layout_array_label = label;
|
||||
this->layout_type = type;
|
||||
|
||||
QRegularExpression reSec("(?<sec>MAPSEC_[A-Za-z0-9_]+)");
|
||||
QRegularExpressionMatchIterator k = reSec.globalMatch(text);
|
||||
|
||||
QList<LayoutSquare> layout;
|
||||
int l = 0;
|
||||
while (k.hasNext()) {
|
||||
QRegularExpressionMatch p = k.next();
|
||||
QString sec = p.captured("sec");
|
||||
|
||||
int x = l % this->layout_width;
|
||||
int y = l / this->layout_width;
|
||||
|
||||
LayoutSquare square;
|
||||
square.map_section = sec;
|
||||
square.has_map = (sec != "MAPSEC_NONE" && !sec.isEmpty());
|
||||
square.x = x;
|
||||
square.y = y;
|
||||
layout.append(square);
|
||||
|
||||
l++;
|
||||
}
|
||||
this->layout_layers.append("main");
|
||||
setLayout("main", layout);
|
||||
} else {
|
||||
logError("Region map layout is not readable.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -256,6 +285,8 @@ void RegionMap::redo() {
|
|||
void RegionMap::save() {
|
||||
saveTilemap();
|
||||
saveLayout();
|
||||
|
||||
this->editHistory.setClean();
|
||||
}
|
||||
|
||||
poryjson::Json::object RegionMap::config() {
|
||||
|
@ -330,8 +361,11 @@ void RegionMap::saveLayout() {
|
|||
}
|
||||
text += " = {\n";
|
||||
if (this->layout_layers.size() == 1) {
|
||||
// TODO: single layered
|
||||
// just dump the array of map sections, or save as multi dimensional [width][height]?
|
||||
for (LayoutSquare s : this->getLayout("main")) {
|
||||
text += " " + s.map_section + ",\n";
|
||||
}
|
||||
text.chop(2);
|
||||
text += "\n";
|
||||
} else {
|
||||
// multi layered
|
||||
for (auto layoutName : this->layout_layers) {
|
||||
|
|
|
@ -1798,14 +1798,11 @@ void MainWindow::connectSubEditorsToShortcutsEditor() {
|
|||
connect(shortcutsEditor, &ShortcutsEditor::shortcutsSaved,
|
||||
tilesetEditor, &TilesetEditor::applyUserShortcuts);
|
||||
|
||||
// TODO: Remove this check when the region map editor supports pokefirered.
|
||||
//if (projectConfig.getBaseGameVersion() != BaseGameVersion::pokefirered) {
|
||||
if (!regionMapEditor)
|
||||
initRegionMapEditor();
|
||||
if (regionMapEditor)
|
||||
connect(shortcutsEditor, &ShortcutsEditor::shortcutsSaved,
|
||||
regionMapEditor, &RegionMapEditor::applyUserShortcuts);
|
||||
//}
|
||||
if (!regionMapEditor)
|
||||
initRegionMapEditor();
|
||||
if (regionMapEditor)
|
||||
connect(shortcutsEditor, &ShortcutsEditor::shortcutsSaved,
|
||||
regionMapEditor, &RegionMapEditor::applyUserShortcuts);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPencil_triggered()
|
||||
|
|
|
@ -180,8 +180,14 @@ void buildEmeraldDefaults(poryjson::Json &json) {
|
|||
|
||||
QString err;
|
||||
json = poryjson::Json::parse(emeraldDefault, err);
|
||||
}
|
||||
|
||||
// TODO: error check these
|
||||
void buildRubyDefaults(poryjson::Json &json) {
|
||||
ParseUtil parser;
|
||||
QString emeraldDefault = parser.readTextFile(":/text/region_map_default_ruby.json");
|
||||
|
||||
QString err;
|
||||
json = poryjson::Json::parse(emeraldDefault, err);
|
||||
}
|
||||
|
||||
void buildFireredDefaults(poryjson::Json &json) {
|
||||
|
@ -201,7 +207,7 @@ poryjson::Json RegionMapEditor::buildDefaultJson() {
|
|||
break;
|
||||
|
||||
case BaseGameVersion::pokeruby:
|
||||
// TODO: pokeruby defaults
|
||||
buildRubyDefaults(defaultJson);
|
||||
break;
|
||||
|
||||
case BaseGameVersion::pokefirered:
|
||||
|
@ -212,7 +218,7 @@ poryjson::Json RegionMapEditor::buildDefaultJson() {
|
|||
return defaultJson;
|
||||
}
|
||||
|
||||
void RegionMapEditor::buildConfigDialog() {
|
||||
bool RegionMapEditor::buildConfigDialog() {
|
||||
// use this temporary object while window is active, save only when user accepts
|
||||
poryjson::Json rmConfigJsonUpdate = this->rmConfigJson;
|
||||
|
||||
|
@ -302,13 +308,13 @@ void RegionMapEditor::buildConfigDialog() {
|
|||
// //cityMapList->setFocusPolicy(Qt::NoFocus);
|
||||
// form.addRow(new QLabel("City Map List:"));
|
||||
// form.addRow(cityMapList);
|
||||
|
||||
//
|
||||
// for (int i = 0; i < 20; i++) {
|
||||
// QListWidgetItem *newItem = new QListWidgetItem;
|
||||
// newItem->setText(QString("city %1").arg(i));
|
||||
// cityMapList->addItem(newItem);
|
||||
// }
|
||||
|
||||
//
|
||||
// QPushButton *addCitiesButton = new QPushButton("Configure City Maps...");
|
||||
// form.addRow(addCitiesButton);
|
||||
// // needs to pick tilemaps and such here too
|
||||
|
@ -347,12 +353,12 @@ void RegionMapEditor::buildConfigDialog() {
|
|||
if (dialog.exec() == QDialog::Accepted) {
|
||||
// if everything looks good, we can update the master json
|
||||
this->rmConfigJson = rmConfigJsonUpdate;
|
||||
} else {
|
||||
// TODO: return bool from this function so can close RME on error
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: set tooltips, default values in spinboxes
|
||||
poryjson::Json RegionMapEditor::configRegionMapDialog() {
|
||||
|
||||
RegionMapPropertiesDialog dialog(this);
|
||||
|
@ -361,8 +367,6 @@ poryjson::Json RegionMapEditor::configRegionMapDialog() {
|
|||
if (dialog.exec() == QDialog::Accepted) {
|
||||
poryjson::Json regionMapJson = dialog.saveToJson();
|
||||
return regionMapJson;
|
||||
} else {
|
||||
// TODO: anything?
|
||||
}
|
||||
|
||||
return poryjson::Json();
|
||||
|
@ -373,17 +377,45 @@ void RegionMapEditor::buildUpdateConfigDialog() {
|
|||
// TODO: get rid of this function
|
||||
}
|
||||
|
||||
poryjson::Json RegionMapEditor::getJsonFromAlias(QString alias) {
|
||||
// unused
|
||||
// TODO: get a map Json from an alias
|
||||
bool RegionMapEditor::verifyConfig(poryjson::Json cfg) {
|
||||
OrderedJson::object obj = cfg.object_items();
|
||||
|
||||
if (!obj.contains("region_maps")) {
|
||||
logError("Region map config json has no map list.");
|
||||
return false;
|
||||
}
|
||||
|
||||
OrderedJson::array arr = obj["region_maps"].array_items();
|
||||
|
||||
for (auto ref : arr) {
|
||||
RegionMap tempMap(this->project);
|
||||
if (!tempMap.loadMapData(ref)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RegionMapEditor::load() {
|
||||
// check for config json file
|
||||
QString jsonConfigFilepath = this->project->root + "/src/data/region_map/porymap_config.json";
|
||||
if (!QFile::exists(jsonConfigFilepath)) {
|
||||
logWarn("Region Map config file not found.");
|
||||
|
||||
bool badConfig = true;
|
||||
|
||||
if (QFile::exists(jsonConfigFilepath)) {
|
||||
logInfo("Region map configuration file found.");
|
||||
ParseUtil parser;
|
||||
OrderedJson::object obj;
|
||||
if (parser.tryParseOrderedJsonFile(&obj, jsonConfigFilepath)) {
|
||||
this->rmConfigJson = OrderedJson(obj);
|
||||
}
|
||||
badConfig = !verifyConfig(this->rmConfigJson);
|
||||
} else {
|
||||
logWarn("Region Map config file not found.");
|
||||
}
|
||||
|
||||
if (badConfig) {
|
||||
// show popup explaining next window
|
||||
QMessageBox warning;
|
||||
warning.setText("Region map configuration not found.");
|
||||
|
@ -393,25 +425,16 @@ bool RegionMapEditor::load() {
|
|||
|
||||
if (warning.exec() == QMessageBox::Ok) {
|
||||
// there is a separate window that allows to load multiple region maps,
|
||||
buildConfigDialog();
|
||||
|
||||
// TODO: need to somehow handle (by making above function return bool?)
|
||||
// when user closes the config dialog without setting up maps so we
|
||||
// can return false from here in that case as well
|
||||
if (!buildConfigDialog()) {
|
||||
logError("Region map loading interrupted [user]");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// TODO: Do not open region map editor (maybe just return false is sufficient?)
|
||||
// do not open editor
|
||||
logError("Region map loading interrupted [user]");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// TODO: put this first? so can fall back on the above if parse errors
|
||||
// TODO: verify this object before assignment
|
||||
logInfo("Region map configuration file found.");
|
||||
ParseUtil parser;
|
||||
OrderedJson::object obj;
|
||||
parser.tryParseOrderedJsonFile(&obj, jsonConfigFilepath);
|
||||
this->rmConfigJson = OrderedJson(obj);
|
||||
}
|
||||
|
||||
// if all has gone well, this->rmConfigJson should be populated
|
||||
// next, load the entries
|
||||
|
@ -420,13 +443,14 @@ bool RegionMapEditor::load() {
|
|||
// load the region maps into this->region_maps
|
||||
poryjson::Json::object regionMapObjectCopy = this->rmConfigJson.object_items();
|
||||
for (auto o : regionMapObjectCopy["region_maps"].array_items()) {
|
||||
// TODO: could this crash?
|
||||
QString alias = o.object_items().at("alias").string_value();
|
||||
|
||||
RegionMap *newMap = new RegionMap(this->project);
|
||||
// TODO: is there a better way than this pointer to get entries to pixmap item? (surely)
|
||||
newMap->setEntries(&this->region_map_entries);
|
||||
newMap->loadMapData(o);
|
||||
if (!newMap->loadMapData(o)) {
|
||||
delete newMap;
|
||||
return false;
|
||||
}
|
||||
|
||||
connect(newMap, &RegionMap::mapNeedsDisplaying, [this]() {
|
||||
displayRegionMap();
|
||||
|
@ -481,7 +505,6 @@ bool RegionMapEditor::loadCityMaps() {
|
|||
}
|
||||
|
||||
bool RegionMapEditor::saveRegionMap(RegionMap *map) {
|
||||
//
|
||||
if (!map) return false;
|
||||
|
||||
map->save();
|
||||
|
@ -512,7 +535,6 @@ void RegionMapEditor::saveConfig() {
|
|||
}
|
||||
|
||||
void RegionMapEditor::on_action_RegionMap_Save_triggered() {
|
||||
// TODO: add "Save All" to save all region maps
|
||||
saveRegionMap(this->region_map);
|
||||
|
||||
// save entries
|
||||
|
@ -875,11 +897,6 @@ bool RegionMapEditor::createCityMap(QString name) {
|
|||
*/
|
||||
}
|
||||
|
||||
bool RegionMapEditor::tryInsertNewMapEntry(QString mapsec) {
|
||||
// TODO
|
||||
return false;
|
||||
}
|
||||
|
||||
void RegionMapEditor::onRegionMapTileSelectorSelectedTileChanged(unsigned id) {
|
||||
this->selectedImageTile = id;
|
||||
}
|
||||
|
@ -1059,7 +1076,6 @@ void RegionMapEditor::on_comboBox_RM_Entry_MapSection_textActivated(const QStrin
|
|||
}
|
||||
|
||||
void RegionMapEditor::on_comboBox_layoutLayer_textActivated(const QString &text) {
|
||||
// TODO: verify whether layer is legit
|
||||
this->region_map->setLayer(text);
|
||||
displayRegionMapLayout();
|
||||
displayRegionMapLayoutOptions();
|
||||
|
|
|
@ -48,28 +48,40 @@ QImage TilemapTileSelector::tileImg(shared_ptr<TilemapTile> tile) {
|
|||
tilesetImage.convertTo(QImage::Format::Format_Indexed8);
|
||||
|
||||
// TODO: bounds check on the palette copying
|
||||
|
||||
switch(this->format) {
|
||||
case TilemapFormat::Plain:
|
||||
break;
|
||||
case TilemapFormat::BPP_4:
|
||||
{
|
||||
QVector<QRgb> newColorTable;
|
||||
int palMinLength = tile->palette() * 16 + 16;
|
||||
if ((this->palette.count() < palMinLength) || (tilesetImage.colorTable().count() != 16)) {
|
||||
// either a) the palette has less than 256 colors, or b) the image is improperly indexed
|
||||
for (QRgb color : tilesetImage.colorTable()) {
|
||||
int gray = qGray(color);
|
||||
newColorTable.append(qRgb(gray, gray, gray));
|
||||
}
|
||||
} else {
|
||||
// use actual pal
|
||||
// before Qt 6, the color table is a QVector which is deprecated now, and this method does not exits
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
tilesetImage.setColorTable(this->palette.toVector().mid(tile->palette() * 16, 16));
|
||||
newColorTable = this->palette.toVector().mid(tile->palette() * 16, 16);
|
||||
#else
|
||||
tilesetImage.setColorTable(this->palette.mid(tile->palette() * 16, 16));
|
||||
newColorTable = this->palette.mid(tile->palette() * 16, 16);
|
||||
#endif
|
||||
}
|
||||
tilesetImage.setColorTable(newColorTable);
|
||||
break;
|
||||
}
|
||||
case TilemapFormat::BPP_8:
|
||||
{
|
||||
// TODO:
|
||||
if (tilesetImage.colorTable().count() == this->palette.count()) {
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
//tilesetImage.setColorTable(this->palette.toVector());
|
||||
tilesetImage.setColorTable(this->palette.toVector());
|
||||
#else
|
||||
//tilesetImage.setColorTable(this->palette);
|
||||
tilesetImage.setColorTable(this->palette);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
|
|
Loading…
Reference in a new issue