Skip to content
This repository was archived by the owner on May 4, 2025. It is now read-only.

Commit 2d045fc

Browse files
committed
add encoding selector and engine version check
1 parent 70f9df9 commit 2d045fc

File tree

8 files changed

+69
-17
lines changed

8 files changed

+69
-17
lines changed

src/databaseholder.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#include "databaseholder.h"
22

3-
DatabaseHolder::DatabaseHolder(QString main, QString source, QString patch) {
4-
p_tree = lcf::LMT_Reader::Load((patch + "/RPG_RT.lmt").toStdString(), "UTF-8");
5-
m_tree = lcf::LMT_Reader::Load((main + "/RPG_RT.lmt").toStdString(), "UTF-8");
6-
p_db = lcf::LDB_Reader::Load((patch + "/RPG_RT.ldb").toStdString(), "UTF-8");
7-
s_db = lcf::LDB_Reader::Load((source + "/RPG_RT.ldb").toStdString(), "UTF-8");
8-
m_db = lcf::LDB_Reader::Load((main + "/RPG_RT.ldb").toStdString(), "UTF-8");
3+
DatabaseHolder::DatabaseHolder(QString main, QString source, QString patch, std::string in_encoding) {
4+
p_tree = lcf::LMT_Reader::Load((patch + "/RPG_RT.lmt").toStdString(), in_encoding);
5+
m_tree = lcf::LMT_Reader::Load((main + "/RPG_RT.lmt").toStdString(), in_encoding);
6+
p_db = lcf::LDB_Reader::Load((patch + "/RPG_RT.ldb").toStdString(), in_encoding);
7+
s_db = lcf::LDB_Reader::Load((source + "/RPG_RT.ldb").toStdString(), in_encoding);
8+
m_db = lcf::LDB_Reader::Load((main + "/RPG_RT.ldb").toStdString(), in_encoding);
9+
encoding = in_encoding;
910
}

src/databaseholder.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66

77
class DatabaseHolder {
88
public:
9-
DatabaseHolder(QString main, QString source, QString patch);
9+
DatabaseHolder(QString main, QString source, QString patch, std::string in_encoding);
1010
std::unique_ptr<lcf::rpg::TreeMap> p_tree = nullptr;
1111
std::unique_ptr<lcf::rpg::TreeMap> m_tree = nullptr;
1212
std::unique_ptr<lcf::rpg::Database> p_db = nullptr;
1313
std::unique_ptr<lcf::rpg::Database> s_db = nullptr;
1414
std::unique_ptr<lcf::rpg::Database> m_db = nullptr;
15+
std::string encoding;
1516
};
1617

src/directorydialog.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
DirectoryDialog::DirectoryDialog(QWidget *parent) : QDialog(parent), ui(new Ui::DirectoryDialog) {
2424
ui->setupUi(this);
2525
ui->buttonBox->buttons()[0]->setDisabled(true);
26+
ui->encodingComboBox->addItems({"UTF-8", "932 (Japanese)", "949 (Korean)", "1250 (Central Europe)", "1251 (Cyryllic)", "1252 (Occidental)", "1253 (Greek)", "1255 (Hebrew)", "1256 (Arabic)", "874 (Thai)", "936 (Chinese Simplified)", "950 (Chinese Traditional)", "1254 (Turkish)", "1257 (Baltic)"});
2627
}
2728

2829
DirectoryDialog::~DirectoryDialog() {
@@ -73,3 +74,36 @@ QString DirectoryDialog::source() {
7374
QString DirectoryDialog::patch() {
7475
return ui->patchLabel->text();
7576
}
77+
78+
std::string DirectoryDialog::encoding() {
79+
switch (ui->encodingComboBox->currentIndex()) {
80+
case (1):
81+
return "932";
82+
case (2):
83+
return "949";
84+
case (3):
85+
return "1250";
86+
case (4):
87+
return "1251";
88+
case (5):
89+
return "1252";
90+
case (6):
91+
return "1253";
92+
case (7):
93+
return "1255";
94+
case (8):
95+
return "1256";
96+
case (9):
97+
return "874";
98+
case (10):
99+
return "936";
100+
case (11):
101+
return "950";
102+
case (12):
103+
return "1254";
104+
case (13):
105+
return "1257";
106+
default:
107+
return "UTF-8";
108+
}
109+
}

src/directorydialog.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#pragma once
1919

20+
#include "lcf/saveopt.h"
2021
#include <QDialog>
2122

2223
namespace Ui {
@@ -34,6 +35,7 @@ class DirectoryDialog : public QDialog {
3435
QString source();
3536
QString patch();
3637
void toggleOkButton();
38+
std::string encoding();
3739
private slots:
3840
void on_mainPushButton_clicked();
3941
void on_sourcePushButton_clicked();

src/directorydialog.ui

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,20 @@
168168
</item>
169169
</layout>
170170
</item>
171+
<item>
172+
<layout class="QVBoxLayout" name="verticalLayout_6">
173+
<item>
174+
<widget class="QLabel" name="encodingLabel">
175+
<property name="text">
176+
<string>Encoding</string>
177+
</property>
178+
</widget>
179+
</item>
180+
<item>
181+
<widget class="QComboBox" name="encodingComboBox"/>
182+
</item>
183+
</layout>
184+
</item>
171185
<item>
172186
<widget class="QDialogButtonBox" name="buttonBox">
173187
<property name="orientation">

src/main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ int main(int argc, char *argv[]) {
5050
QString patch = w.patch();
5151
QString source = w.source();
5252

53-
DatabaseHolder h(main, source, patch);
53+
DatabaseHolder h(main, source, patch, w.encoding());
5454

5555
// if there is no changelog for the main copy yet, create one
5656
if (!QFile::exists(main + "/changelog.txt")) {
@@ -141,15 +141,15 @@ int main(int argc, char *argv[]) {
141141
lcf::LMT_Reader::Save(
142142
(main + QString("/RPG_RT.lmt")).toStdString(),
143143
*h.m_tree,
144-
lcf::EngineVersion::e2k3,
145-
"UTF-8",
144+
lcf::GetEngineVersion(*h.m_db),
145+
h.encoding,
146146
lcf::SaveOpt::eNone);
147147
}
148148
if (h.m_db != nullptr) {
149149
lcf::LDB_Reader::Save(
150150
(main + QString("/RPG_RT.ldb")).toStdString(),
151151
*h.m_db,
152-
"UTF-8",
152+
h.encoding,
153153
lcf::SaveOpt::eNone);
154154
}
155155

src/map_diff.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ int map_diff(DatabaseHolder &d, DBAsset asset, QString main, QString source, QSt
6161
// this actually uses an external file (and gross misuse of qsettings)
6262
// to track which tiles have been changed in the main copy so far
6363
// if none of the tiles overlap, we can automerge; else a manual diff is required
64-
std::unique_ptr<lcf::rpg::Map> m_map = lcf::LMU_Reader::Load((main + QString("/Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(), "UTF-8");
65-
std::unique_ptr<lcf::rpg::Map> s_map = lcf::LMU_Reader::Load((source + QString("/Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(), "UTF-8");
66-
std::unique_ptr<lcf::rpg::Map> p_map = lcf::LMU_Reader::Load((patch + QString("/Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(), "UTF-8");
64+
std::unique_ptr<lcf::rpg::Map> m_map = lcf::LMU_Reader::Load((main + QString("/Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(), d.encoding);
65+
std::unique_ptr<lcf::rpg::Map> s_map = lcf::LMU_Reader::Load((source + QString("/Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(), d.encoding);
66+
std::unique_ptr<lcf::rpg::Map> p_map = lcf::LMU_Reader::Load((patch + QString("/Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(), d.encoding);
6767
QSettings tilediff(main + "/eidolist_tilediff");
6868

6969
if (m_map->height != s_map->height || s_map->height != p_map->height || m_map->width != s_map->width || s_map->width != p_map->width) {
@@ -147,7 +147,7 @@ int map_diff(DatabaseHolder &d, DBAsset asset, QString main, QString source, QSt
147147
(main + QString("Map%1.lmu").arg(paddedint(asset.id, 4))).toStdString(),
148148
*m_map,
149149
lcf::GetEngineVersion(*d.m_db),
150-
"UTF-8",
150+
d.encoding,
151151
lcf::SaveOpt::eNone
152152
);
153153

src/merger_base.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ int dbmerge(QString main, QString source, QString patch, DBAsset dbasset, Databa
7070
if (dbasset.folder == "Map") {
7171
// populate the tilediff
7272
// for more info about this check the map_diff.cpp file
73-
std::unique_ptr<lcf::rpg::Map> s_map = lcf::LMU_Reader::Load((source + QString("/Map%1.lmu").arg(paddedint(dbasset.id, 4))).toStdString(), "UTF-8");
74-
std::unique_ptr<lcf::rpg::Map> p_map = lcf::LMU_Reader::Load((patch + QString("/Map%1.lmu").arg(paddedint(dbasset.id, 4))).toStdString(), "UTF-8");
73+
std::unique_ptr<lcf::rpg::Map> s_map = lcf::LMU_Reader::Load((source + QString("/Map%1.lmu").arg(paddedint(dbasset.id, 4))).toStdString(), h.encoding);
74+
std::unique_ptr<lcf::rpg::Map> p_map = lcf::LMU_Reader::Load((patch + QString("/Map%1.lmu").arg(paddedint(dbasset.id, 4))).toStdString(), h.encoding);
7575
if (p_map == nullptr) {
7676
QMessageBox::warning(nullptr, "Warning", QString("Map%1 was not found in the patch copy, despite being mentioned in the changelog!").arg(paddedint(dbasset.id, 4)));
7777
return 1;

0 commit comments

Comments
 (0)