ff7tk 0.80.25
Work with Final Fantasy 7 game data
CharEditor.h
Go to the documentation of this file.
1/****************************************************************************/
2// copyright 2012 -2022 Chris Rizzitello <sithlord48@gmail.com> //
3// //
4// This file is part of FF7tk //
5// //
6// FF7tk is free software: you can redistribute it and/or modify //
7// it under the terms of the GNU General Public License as published by //
8// the Free Software Foundation, either version 3 of the License, or //
9// (at your option) any later version. //
10// //
11// FF7tk is distributed in the hope that it will be useful, //
12// but WITHOUT ANY WARRANTY; without even the implied warranty of //
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
14// GNU General Public License for more details. //
15/****************************************************************************/
16#pragma once
17
18#include <QWidget>
19#include <FF7Materia.h>
20#include <Type_FF7CHAR.h>
21
22#ifndef ff7tkwidgets_export_h
23 #include <ff7tkwidgets_export.h>
24#endif
25
26
27class QCheckBox;
28class QComboBox;
29class QLCDNumber;
30class QLineEdit;
31class QProgressBar;
32class QToolBox;
33class QSpinBox;
34class QLabel;
35class QHFrame;
36class QHBoxLayout;
37class QVBoxLayout;
38class QGroupBox;
39class QListWidget;
40class QFrame;
41class QSlider;
42class QPushButton;
43
44class FF7Item;
45class MateriaEditor;
46
50class FF7TKWIDGETS_EXPORT CharEditor : public QWidget
51{
52 Q_OBJECT
53public:
54 explicit CharEditor(qreal Scale = 1, QWidget *parent = nullptr);
55 void setChar(const FF7CHAR &Chardata, const QString &Processed_Name = "");
56 bool AutoLevel();
57 bool AutoStatCalc();
58 bool Editable();
59 bool AdvancedMode();
60 void MaxStats();
61 void MaxEquip();
62 quint8 id();
63 quint8 level();
64 quint8 str();
65 quint8 vit();
66 quint8 mag();
67 quint8 spi();
68 quint8 dex();
69 quint8 lck();
70 quint8 strBonus();
71 quint8 vitBonus();
72 quint8 magBonus();
73 quint8 spiBonus();
74 quint8 dexBonus();
75 quint8 lckBonus();
76 qint8 limitLevel();
77 quint8 limitBar();
78 QString name();
79 quint8 weapon();
80 quint8 armor();
81 quint8 accessory();
82 quint16 curHp();
83 quint16 maxHp();
84 quint16 curMp();
85 quint16 maxMp();
86 quint16 kills();
87 quint8 row();
88 quint8 levelProgress();
89 quint8 sadnessfury();
90 quint16 limits();
91 quint16 timesused1();
92 quint16 timesused2();
93 quint16 timesused3();
94 quint16 baseHp();
95 quint16 baseMp();
96 quint32 exp();
97 quint32 expNext();
98 materia char_materia(int mat);
99
100protected:
101 void changeEvent(QEvent *e) override;
102
103signals:
104 void id_changed(qint8);
105 void level_changed(qint8);
106 void str_changed(quint8);
107 void vit_changed(quint8);
108 void mag_changed(quint8);
109 void spi_changed(quint8);
110 void dex_changed(quint8);
111 void lck_changed(quint8);
112 void strBonus_changed(quint8);
113 void vitBonus_changed(quint8);
114 void magBonus_changed(quint8);
115 void spiBonus_changed(quint8);
116 void dexBonus_changed(quint8);
117 void lckBonus_changed(quint8);
119 void limitBar_changed(quint8);
120 void name_changed(QString);
121 void weapon_changed(quint8);
122 void armor_changed(quint8);
123 void accessory_changed(quint8);
124 void curHp_changed(quint16);
125 void maxHp_changed(quint16);
126 void curMp_changed(quint16);
127 void maxMp_changed(quint16);
128 void kills_changed(quint16);
129 void row_changed(quint8);
132 void limits_changed(quint16);
133 void timesused1_changed(quint16);
134 void timesused2_changed(quint16);
135 void timesused3_changed(quint16);
136 void baseHp_changed(quint16);
137 void baseMp_changed(quint16);
138 void exp_changed(quint32);
139 void mslotChanged(int);
141 void expNext_changed(quint32);
142
143public slots:
144 void setAutoLevel(bool);
145 void setAutoStatCalc(bool);
146 void setEditable(bool);
147 void setAdvancedMode(bool);
148 void setToolBoxStyle(const QString &styleSheet);
149 void setSliderStyle(const QString &style);
150 void setEditableComboBoxes(bool);
151
152private:
153 void setId(int);
154 void setLevel(int);
155 void setStr(int);
156 void setVit(int);
157 void setMag(int);
158 void setSpi(int);
159 void setDex(int);
160 void setLck(int);
161 void setStrBonus(int);
162 void setVitBonus(int);
163 void setMagBonus(int);
164 void setSpiBonus(int);
165 void setDexBonus(int);
166 void setLckBonus(int);
167 void setLimitLevel(int);
168 void setLimitBar(int);
169 void setName(const QString &name);
170 void setWeapon(int);
171 void setArmor(int);
172 void setAccessory(int);
173 void setRow(bool front_row);
174 void setLevelProgress(int);
175 void setSadnessFury(int);
176 void setLimits(int);
177 void setTimesused1(int);
178 void setTimesused2(int);
179 void setTimesused3(int);
180 void setBaseHp(int);
181 void setBaseMp(int);
182 void setExp(int);
183 void setExpNext(int);
184 void setCurMp(int);
185 void setCurHp(int);
186 void setMaxMp(int);
187 void setMaxHp(int);
188 void setKills(int);
189 void cb_fury_toggled(bool);
190 void cb_sadness_toggled(bool);
191 void cb_idChanger_toggled(bool);
192 void calc_limit_value(QModelIndex);
193 void Level_Changed(int);// used for tracking growth of char
194 void Exp_Changed(int);// used for tracking growth of char
195 void materiaSlotClicked(int slotClicked);
196 void matAp_changed(qint32);
197 void matId_changed(qint8);
198 void init_display();
199 void init_connections();
200 void disconnectAll();
201 void calc_stats();//calc stat changes if autostatcalc == true;
202 void level_up(int);
203 void update_tnl_bar();
204 void elemental_info();
205 void status_info();
206 void update_materia_slots();
207 void updateMateriaToolTips();
208 void setSlotFrame();
213 void updateText();
214
224 QWidget* makeStatWidget(QSpinBox* statBaseSpinBox = nullptr, QSpinBox* statSourceSpinBox = nullptr
225 , QLabel* statLabel = nullptr, QLabel* statMateriaBonusLabel = nullptr, QLabel* statTotalLabel = nullptr);
226
231 QFrame* makeStatFrame();
232
242 QHBoxLayout * makeMateriaSlotPair(QPushButton* button1 = nullptr, QPushButton* button2 = nullptr, QFrame *frame1 = nullptr, QFrame *frame2 = nullptr, QLabel* linkLabel = nullptr);
243
248 QVBoxLayout * makeLimitLayout();
249//Data
250 bool load{false};
251 bool autolevel{true};
252 bool autostatcalc{true};
253 bool editable{true};
254 bool advancedMode{false};
255 int mslotsel{-1};
256 qint32 ap{0};
257 FF7Materia Materias;
258 FF7CHAR data;
259 QString _name;
260 qreal scale;
261//GUI PARTS
262 QLabel *lblAvatar = nullptr;
263 QLineEdit *lineName = nullptr;
264 QSpinBox *sbLevel = nullptr;
265 QSpinBox *sbCurrentMp = nullptr;
266 QSpinBox *sbCurrentHp = nullptr;
267
268 QLabel *lblBaseHp = nullptr;
269 QSpinBox *sbBaseHp = nullptr;
270 QLabel *lblBaseHpBonus = nullptr;
271
272 QLabel *lblBaseMp = nullptr;
273 QSpinBox *sbBaseMp = nullptr;
274 QLabel *lblBaseMpBonus = nullptr;
275
276 QSpinBox *sbKills = nullptr;
277 QLabel *lblCurrentHp = nullptr;
278 QLabel *lblMaxHp = nullptr;
279 QLabel *lblCurrentMp = nullptr;
280 QLabel *lblMaxMp = nullptr;
281 QCheckBox *cbFury = nullptr;
282 QCheckBox *cbSadness = nullptr;
283 QCheckBox *cbFrontRow = nullptr;
284 QComboBox *comboId = nullptr;
285
286 QSpinBox *sbTotalExp = nullptr;
287 QLabel *lbl_level_next = nullptr;
288 QProgressBar *bar_tnl = nullptr;
289 QLabel *lbl_limit_bar = nullptr;
290 QSlider *slider_limit = nullptr;
291 QLCDNumber *lcdLimitValue = nullptr;
292
293 QLabel *lblStr = nullptr;
294 QSpinBox *sbStr = nullptr;
295 QSpinBox *sbStrSourceUse = nullptr;
296 QLabel *lblStrMateriaBonus = nullptr;
297 QLabel *lblStrTotal = nullptr;
298
299 QLabel *lblVit = nullptr;
300 QSpinBox *sbVit = nullptr;
301 QSpinBox *sbVitSourceUse = nullptr;
302 QLabel *lblVitMateriaBonus = nullptr;
303 QLabel *lblVitTotal = nullptr;
304
305 QLabel *lblMag = nullptr;
306 QSpinBox *sbMag = nullptr;
307 QSpinBox *sbMagSourceUse = nullptr;
308 QLabel *lblMagMateriaBonus = nullptr;
309 QLabel *lblMagTotal = nullptr;
310
311 QLabel *lblSpi = nullptr;
312 QSpinBox *sbSpi = nullptr;
313 QSpinBox *sbSpiSourceUse = nullptr;
314 QLabel *lblSpiMateriaBonus = nullptr;
315 QLabel *lblSpiTotal = nullptr;
316
317 QLabel *lblDex = nullptr;
318 QSpinBox *sbDex = nullptr;
319 QSpinBox *sbDexSourceUse = nullptr;
320 QLabel *lblDexMateriaBonus = nullptr;
321 QLabel *lblDexTotal = nullptr;
322
323 QLabel *lblLck = nullptr;
324 QSpinBox *sbLck = nullptr;
325 QSpinBox *sbLckSourceUse = nullptr;
326 QLabel *lblLckMateriaBonus = nullptr;
327 QLabel *lblLckTotal = nullptr;
328
329 QLabel *lbl_limit_level = nullptr;
330 QSpinBox *sb_limit_level = nullptr;
331 QSpinBox *sb_uses_limit_1_1 = nullptr;
332 QSpinBox *sb_uses_limit_2_1 = nullptr;
333 QSpinBox *sb_uses_limit_3_1 = nullptr;
334 QListWidget *list_limits = nullptr;
335 QLabel *lbl_uses = nullptr;
336 QLabel *lbl_1_1 = nullptr;
337 QLabel *lbl_2_1 = nullptr;
338 QLabel *lbl_3_1 = nullptr;
339 QLabel *lbl_0x34 = nullptr;
340 QLabel *lbl_0x35 = nullptr;
341 QLabel *lbl_0x36 = nullptr;
342 QLabel *lbl_0x37 = nullptr;
343 QLabel *lblWeaponStats = nullptr;
344 QLabel *lblArmorStats = nullptr;
345 QComboBox *weapon_selection = nullptr;
346 QComboBox *armor_selection = nullptr;
347 QComboBox *accessory_selection = nullptr;
348 MateriaEditor *materia_edit = nullptr;
349 QGroupBox *elemental_box = nullptr;
350 QGroupBox *status_box = nullptr;
351 QListWidget *elemental_effects = nullptr;
352 QListWidget *status_effects = nullptr;
353 QFrame *weapon_materia_box = nullptr;
354 QFrame *armor_materia_box = nullptr;
355 QGroupBox *weapon_box = nullptr;
356 QGroupBox *armor_box = nullptr;
357 QGroupBox *accessory_box = nullptr;
358 QList<QFrame *> materiaSlotFrames;
359 QList<QPushButton *> materiaSlots;
360 QLabel *weapon_m_link_1 = nullptr;
361 QLabel *weapon_m_link_2 = nullptr;
362 QLabel *weapon_m_link_3 = nullptr;
363 QLabel *weapon_m_link_4 = nullptr;
364 QLabel *armor_m_link_1 = nullptr;
365 QLabel *armor_m_link_2 = nullptr;
366 QLabel *armor_m_link_3 = nullptr;
367 QLabel *armor_m_link_4 = nullptr;
368 QToolBox *toolbox = nullptr;
369 QFrame *unknown_box = nullptr;
370 QLCDNumber *lcd_0x34 = nullptr;
371 QLCDNumber *lcd_0x35 = nullptr;
372 QLCDNumber *lcd_0x36 = nullptr;
373 QLCDNumber *lcd_0x37 = nullptr;
374 QCheckBox *cb_idChanger = nullptr;
375 //Static Limits
376 inline static const int quint8Max = 255;
377 inline static const int qint16Max = 32767;
378 inline static const int quint16Max = 65535;
379 inline static const int expMax = 2147483647;
380
381};
Widget to allow editing of a character using FF7Char for data.
Definition: CharEditor.h:51
void maxHp_changed(quint16)
void limitLevel_changed(qint8)
void strBonus_changed(quint8)
void level_changed(qint8)
void dexBonus_changed(quint8)
void vitBonus_changed(quint8)
void lckBonus_changed(quint8)
void name_changed(QString)
void timesused1_changed(quint16)
void curMp_changed(quint16)
void vit_changed(quint8)
void limitBar_changed(quint8)
void timesused2_changed(quint16)
void armor_changed(quint8)
void lck_changed(quint8)
void exp_changed(quint32)
void limits_changed(quint16)
void mag_changed(quint8)
void accessory_changed(quint8)
void Materias_changed(materia)
void sadnessfury_changed(quint8)
void baseMp_changed(quint16)
void spiBonus_changed(quint8)
void mslotChanged(int)
void str_changed(quint8)
void weapon_changed(quint8)
void levelProgress_changed(quint8)
void dex_changed(quint8)
void timesused3_changed(quint16)
void curHp_changed(quint16)
void maxMp_changed(quint16)
void spi_changed(quint8)
void magBonus_changed(quint8)
void expNext_changed(quint32)
void row_changed(quint8)
void kills_changed(quint16)
void id_changed(qint8)
void baseHp_changed(quint16)
Information about items in FF7.
Definition: FF7Item.h:31
Definition: FF7Materia.h:26
Definition: MateriaEditor.h:38
Character Info in the save game.
materia format saved in materia list or on a character