Skip to content

Commit 5309511

Browse files
committed
Allow Materia Editor to show placeHolder IDs
1 parent 10922e3 commit 5309511

File tree

7 files changed

+116
-61
lines changed

7 files changed

+116
-61
lines changed

demos/ff7tkWidgetGallery/mainwindow.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,3 +324,9 @@ void MainWindow::on_sb_orientationWidget_value_valueChanged(int arg1)
324324
orientationWidget->setValue(arg1);
325325
}
326326

327+
328+
void MainWindow::on_cb_materiaEditor_showPlaceHolderMateria_toggled(bool checked)
329+
{
330+
materia_editor->setShowPlaceHolderMateria(checked);
331+
}
332+

demos/ff7tkWidgetGallery/mainwindow.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ private slots:
7474

7575
void on_sb_orientationWidget_value_valueChanged(int arg1);
7676

77+
void on_cb_materiaEditor_showPlaceHolderMateria_toggled(bool checked);
78+
7779
private:
7880

7981
Ui::MainWindow *ui = nullptr;

demos/ff7tkWidgetGallery/mainwindow.ui

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>73</width>
10-
<height>38</height>
9+
<width>213</width>
10+
<height>42</height>
1111
</rect>
1212
</property>
1313
<property name="sizePolicy">
@@ -147,6 +147,16 @@
147147
</property>
148148
</widget>
149149
</item>
150+
<item>
151+
<widget class="QCheckBox" name="cb_materiaEditor_showPlaceHolderMateria">
152+
<property name="text">
153+
<string>Show PlaceHolder Materia</string>
154+
</property>
155+
<property name="checked">
156+
<bool>false</bool>
157+
</property>
158+
</widget>
159+
</item>
150160
<item>
151161
<widget class="QCheckBox" name="cb_materia_editor_setEditable">
152162
<property name="text">

src/data/FF7Materia.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ int FF7Materia::materiaID(materia mat)
6060
return idClamp(mat.id);
6161
}
6262

63+
const QList<int> FF7Materia::placeHolderIdList()
64+
{
65+
QList<int> phList;
66+
for (const MATERIA &m : get()->d->_materiaList) {
67+
if(m.name.startsWith(get()->d->_placeHolderFilter))
68+
phList.append(m.id);
69+
}
70+
return phList;
71+
}
72+
6373
QString FF7Materia::enemySkill(int skill)
6474
{
6575
skill = std::clamp(skill, 0, int(get()->d->_enemySkills.size()) -1);

src/data/FF7Materia.h

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
180180
static Q_INVOKABLE QImage imageAllMateria() { return QImage(QStringLiteral(":/materia/all")); }
181181
static Q_INVOKABLE const QString &imageAllResource() { return get()->d->_resourceAllMateria; }
182182

183+
static Q_INVOKABLE const QString &placeHolderNameFilter() {return get()->d->_placeHolderFilter;}
184+
static Q_INVOKABLE const QList<int> placeHolderIdList();
185+
183186
// Deprecated Methods
184187
[[ deprecated ("Replace with FF7Materia::materiaAP") ]]
185188
static qint32 ap2num(quint8 ap[3]) { return materiaAP(ap); }
@@ -234,6 +237,7 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
234237
struct FF7MateriaPrivate;
235238
FF7MateriaPrivate *d;
236239
struct FF7MateriaPrivate {
240+
inline static const auto _placeHolderFilter = QStringLiteral("ID:");
237241
inline static const auto _resourceAllMateria = QStringLiteral("/materia/all");
238242
inline static const QStringList _masterCommandList{
239243
QT_TR_NOOP("Skill: DeathBlow")
@@ -322,6 +326,33 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
322326
, QT_TR_NOOP("Ultima (130mp)")
323327
};
324328

329+
inline static const QStringList _enemySkills{
330+
QT_TR_NOOP("Frog Song")
331+
, QT_TR_NOOP("L4 Suicide")
332+
, QT_TR_NOOP("Magic Hammer")
333+
, QT_TR_NOOP("White Wind")
334+
, QT_TR_NOOP("Big Guard")
335+
, QT_TR_NOOP("Angel Whisper")
336+
, QT_TR_NOOP("Dragon Force")
337+
, QT_TR_NOOP("Death Force")
338+
, QT_TR_NOOP("Flame Thrower")
339+
, QT_TR_NOOP("Laser")
340+
, QT_TR_NOOP("Matra Magic")
341+
, QT_TR_NOOP("Bad Breath")
342+
, QT_TR_NOOP("Beta")
343+
, QT_TR_NOOP("Aqualung")
344+
, QT_TR_NOOP("Trine")
345+
, QT_TR_NOOP("Magic Breath")
346+
, QT_TR_NOOP("????")
347+
, QT_TR_NOOP("Goblin Punch")
348+
, QT_TR_NOOP("Chocobuckle")
349+
, QT_TR_NOOP("L5 Death")
350+
, QT_TR_NOOP("Death Sentence")
351+
, QT_TR_NOOP("Roulette")
352+
, QT_TR_NOOP("Shadow Flare")
353+
, QT_TR_NOOP("Pandora's Box")
354+
};
355+
325356
inline static const MATERIA _emptyMateria{
326357
QT_TR_NOOP("EMPTY")
327358
, {QString(), QString(), QString(), QString(), QString()}
@@ -461,10 +492,10 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
461492
, 0x15, 0, 0, 0, 0, 0, 0, 0, 0, {0, 250000, 0, 0, 0}, 5, 2, QString(), {QString()}
462493
},
463494
{
464-
QString()
495+
QStringLiteral("ID:0x16")
465496
, {QString(), QString(), QString(), QString(), QString()}
466-
, QStringLiteral("ID:0x16"), QString(), QString(), QString()
467-
, 0X16, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
497+
, QStringLiteral("ID:0x16"), QStringLiteral(":/materia/all"), QString(), QString()
498+
, 0X16, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
468499
},
469500
{
470501
QT_TR_NOOP("All")
@@ -557,10 +588,10 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
557588
, 0x25, 0, 0, 0, 0, 0, 0, 0, 0, {0, 40000, 0, 0, 0}, 5, 2, QString(), {QString()}
558589
},
559590
{
560-
QString()
591+
QStringLiteral("ID:0x26")
561592
, {QString(), QString(), QString(), QString(), QString()}
562-
, QStringLiteral("ID:0x26"), QString(), QString(), QString()
563-
, 0X26, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
593+
, QStringLiteral("ID:0x26"), QStringLiteral(":/materia/all"), QString(), QString()
594+
, 0X26, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
564595
},
565596
{
566597
QT_TR_NOOP("Throw")
@@ -599,28 +630,28 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
599630
, 0x2C, 0, 0, 0, 0, 0, 0, 0, 0, {16777215, 0, 0, 0, 0}, 5, 1, QString(), {QString()}
600631
},
601632
{
602-
QString()
633+
QStringLiteral("ID:0x2D")
603634
, {QString(), QString(), QString(), QString(), QString()}
604-
, QStringLiteral("ID:0x2D"), QString(), QString(), QString()
605-
, 0X2D, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
635+
, QStringLiteral("ID:0x2D"), QStringLiteral(":/materia/all"), QString(), QString()
636+
, 0X2D, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
606637
},
607638
{
608-
QString()
639+
QStringLiteral("ID:0x2E")
609640
, {QString(), QString(), QString(), QString(), QString()}
610-
, QStringLiteral("ID:0x2E"), QString(), QString(), QString()
611-
, 0X2E, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
641+
, QStringLiteral("ID:0x2E"), QStringLiteral(":/materia/all"), QString(), QString()
642+
, 0X2E, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
612643
},
613644
{
614-
QString()
645+
QStringLiteral("ID:0x2F")
615646
, {QString(), QString(), QString(), QString(), QString()}
616-
, QStringLiteral("ID:0x2F"), QString(), QString(), QString()
617-
, 0X2F, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
647+
, QStringLiteral("ID:0x2F"), QStringLiteral(":/materia/all"), QString(), QString()
648+
, 0X2F, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
618649
},
619650
{
620651
QT_TR_NOOP("Master Command")
621652
, _masterCommandList
622653
, QString(), QStringLiteral(":/materia/command"), QStringLiteral(":/materia/command_star_empty"), QStringLiteral(":/materia/command_star_full")
623-
, 0x30, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 5, 1, QString(), {QString()}
654+
, 0x30, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 5, 1, QString(), {QString()}
624655
},
625656
{
626657
QT_TR_NOOP("Fire")
@@ -707,10 +738,10 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
707738
, 0x3E, -5, +5, -2, -1, 0, 0, +2, +1, {0, 5000, 15000, 30000, 45000}, 1, 5, QString(), {QString()}
708739
},
709740
{
710-
QString()
741+
QStringLiteral("ID:0x3F")
711742
, {QString(), QString(), QString(), QString(), QString()}
712-
, QStringLiteral("ID:0x3F"), QString(), QString(), QString()
713-
, 0X3F, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
743+
, QStringLiteral("ID:0x3F"), QStringLiteral(":/materia/all"), QString(), QString()
744+
, 0X3F, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
714745
},
715746
{
716747
QT_TR_NOOP("Comet")
@@ -725,16 +756,16 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
725756
, 0x41, -5, +5, -2, -1, 0, 0, +2, +1, {0, 10000, 20000, 42000, 0}, 1, 4, QString(), {QT_TR_NOOP("[Slow]"), QT_TR_NOOP("[Stop]")}
726757
},
727758
{
728-
QString()
759+
QStringLiteral("ID:0x42")
729760
, {QString(), QString(), QString(), QString(), QString()}
730-
, QStringLiteral("ID:0x42"), QString(), QString(), QString()
731-
, 0X42, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
761+
, QStringLiteral("ID:0x42"), QStringLiteral(":/materia/all"), QString(), QString()
762+
, 0X42, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
732763
},
733764
{
734-
QString()
765+
QStringLiteral("ID:0x43")
735766
, {QString(), QString(), QString(), QString(), QString()}
736-
, QStringLiteral("ID:0x43"), QString(), QString(), QString()
737-
, 0X43, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
767+
, QStringLiteral("ID:0x43"), QStringLiteral(":/materia/all"), QString(), QString()
768+
, 0X43, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 0, 0, QString(), {QString()}
738769
},
739770
{
740771
QT_TR_NOOP("Destruct")
@@ -770,7 +801,7 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
770801
QT_TR_NOOP("Master Magic")
771802
, _masterMagicList
772803
, QString(), QStringLiteral(":/materia/magic"), QStringLiteral(":/materia/magic_star_empty"), QStringLiteral(":/materia/magic_star_full")
773-
, 0x49, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 1, 1, QString(), {QString()}
804+
, 0x49, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 1, 1, QString(), {QString()}
774805
},
775806
{
776807
QT_TR_NOOP("Choco/Mog")
@@ -872,34 +903,8 @@ class FF7TKDATA_EXPORT FF7Materia : public QObject
872903
QT_TR_NOOP("Master Summon")
873904
, _masterSummonList
874905
, QString(), QStringLiteral(":/materia/summon"), QStringLiteral(":/materia/summon_star_empty"), QStringLiteral(":/materia/summon_star_full")
875-
, 0x5A, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 2, 1, QString(), {QString()}
906+
, 0x5A, 0, 0, 0, 0, 0, 0, 0, 0, {0xFFFFFF, 0, 0, 0, 0}, 2, 1, QString(), {QString()}
876907
}
877908
};
878-
inline static const QStringList _enemySkills{
879-
QT_TR_NOOP("Frog Song")
880-
, QT_TR_NOOP("L4 Suicide")
881-
, QT_TR_NOOP("Magic Hammer")
882-
, QT_TR_NOOP("White Wind")
883-
, QT_TR_NOOP("Big Guard")
884-
, QT_TR_NOOP("Angel Whisper")
885-
, QT_TR_NOOP("Dragon Force")
886-
, QT_TR_NOOP("Death Force")
887-
, QT_TR_NOOP("Flame Thrower")
888-
, QT_TR_NOOP("Laser")
889-
, QT_TR_NOOP("Matra Magic")
890-
, QT_TR_NOOP("Bad Breath")
891-
, QT_TR_NOOP("Beta")
892-
, QT_TR_NOOP("Aqualung")
893-
, QT_TR_NOOP("Trine")
894-
, QT_TR_NOOP("Magic Breath")
895-
, QT_TR_NOOP("????")
896-
, QT_TR_NOOP("Goblin Punch")
897-
, QT_TR_NOOP("Chocobuckle")
898-
, QT_TR_NOOP("L5 Death")
899-
, QT_TR_NOOP("Death Sentence")
900-
, QT_TR_NOOP("Roulette")
901-
, QT_TR_NOOP("Shadow Flare")
902-
, QT_TR_NOOP("Pandora's Box")
903-
};
904909
};
905910
};

src/widgets/data/MateriaEditor.cpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ MateriaEditor::MateriaEditor(QWidget *parent, quint8 materia_id, qint32 materia_
3232
, _current_ap(0)
3333
, _highlightColor(QStringLiteral("%1,%2,%3,128").arg(QString::number(palette().highlight().color().red()), QString::number(palette().highlight().color().green()), QString::number(palette().highlight().color().blue())))
3434
, _iconSize (QSize(fontMetrics().height(), fontMetrics().height()))
35+
, _showPlaceHolders(false)
3536
, _editable(true)
3637
{
3738
init_display();
@@ -175,7 +176,7 @@ void MateriaEditor::setLevel()
175176

176177
void MateriaEditor::setStars()
177178
{
178-
//Hide if its eskill Materia
179+
//show if its eskill Materia
179180
if (FF7Materia::levels(_id) == 1
180181
|| (_id == FF7Materia::EmptyId)) {
181182
box_stars->setHidden(true);
@@ -225,8 +226,9 @@ void MateriaEditor::typeChanged(int new_type)
225226
combo_materia->blockSignals(true);
226227
if (new_type == 0) {
227228
for (int i = 0; i < 91; i++) {
228-
if (!FF7Materia::name(i).isEmpty())
229-
combo_materia->addItem(FF7Materia::icon(i), FF7Materia::name(i));
229+
if (!_showPlaceHolders && FF7Materia::placeHolderIdList().contains(i))
230+
continue;
231+
combo_materia->addItem(FF7Materia::icon(i), FF7Materia::name(i));
230232
}
231233
} else {
232234
for (int i = 0; i < 91; i++) {
@@ -244,6 +246,8 @@ void MateriaEditor::typeChanged(int new_type)
244246
void MateriaEditor::materia_changed(const QString &new_name)
245247
{
246248
for (quint8 i = 0; i < 91; i++) {
249+
if (!_showPlaceHolders && FF7Materia::placeHolderIdList().contains(i))
250+
continue;
247251
if (FF7Materia::name(i) == new_name) {
248252
if (_id != i)
249253
setMateria(i, _current_ap);
@@ -308,6 +312,14 @@ void MateriaEditor::setEditable(bool edit)
308312
editMode();
309313
}
310314

315+
void MateriaEditor::setShowPlaceHolderMateria(bool showPlaceHolders)
316+
{
317+
if(_showPlaceHolders == showPlaceHolders)
318+
return;
319+
_showPlaceHolders = showPlaceHolders;
320+
typeChanged(0);
321+
}
322+
311323
void MateriaEditor::editMode()
312324
{
313325
for (QPushButton *button : qAsConst(btn_stars))
@@ -382,8 +394,9 @@ QHBoxLayout *MateriaEditor::makeNameLayout()
382394
combo_materia->setStyleSheet(QStringLiteral("QComboBox { combobox-popup: 0;}"));
383395
combo_materia->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
384396
for (int i = 0; i < 91; i++) {
385-
if (!FF7Materia::name(i).isEmpty())
397+
if (!FF7Materia::placeHolderIdList().contains(i)) {
386398
combo_materia->addItem(FF7Materia::pixmap(i), FF7Materia::name(i));
399+
}
387400
}
388401
connect(combo_materia, &QComboBox::currentTextChanged, this, &MateriaEditor::materia_changed);
389402

src/widgets/data/MateriaEditor.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ class QListWidget;
2929
class QPushButton;
3030
class QSpacerItem;
3131
class QSpinBox;
32-
32+
/**
33+
* @brief The MateriaEditor class \n
34+
* \p MateriaEditor is a Widget that can be used to edit materia in the player's inventory or on a character.
35+
*/
3336
class FF7TKWIDGETS_EXPORT MateriaEditor : public QWidget
3437
{
3538
Q_OBJECT
@@ -43,7 +46,12 @@ class FF7TKWIDGETS_EXPORT MateriaEditor : public QWidget
4346
qint8 id();
4447
bool isEditable(void);
4548
void setEditable(bool);
46-
// qint32 raw_data(void);
49+
50+
/**
51+
* @brief setShowPlaceHolderMateria Sets if the list of possible materia contains the placeholder materia
52+
* @param showPlaceHolders: True if you want to show the placeholders.
53+
*/
54+
void setShowPlaceHolderMateria(bool showPlaceHolders);
4755
protected:
4856
void changeEvent(QEvent *e);
4957
public slots:
@@ -97,6 +105,7 @@ public slots:
97105
qint32 _current_ap;// current ap amount
98106
QString _highlightColor;
99107
QSize _iconSize;
108+
bool _showPlaceHolders; // Show Materia Named "ID:0x\\d+"
100109
bool _editable;
101110
inline static const auto _buttonStyle = QStringLiteral("QPushButton:enabled{background-color: rgba(0,0,0,0);border:0px solid;} QPushButton:hover{background-color:rgba(%1);}");
102111
inline static const auto _itemStyle = QStringLiteral("::item { padding-left: 0px; padding-top: 1px; padding-bottom: 1px;}"

0 commit comments

Comments
 (0)