ff7tk  0.02
Toolkit for making FF7 Tools
CharEditor.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // copyright 2012 - 2016 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 #include "CharEditor.h"
17 //#include <QDebug>
18 CharEditor::CharEditor(qreal Scale,QWidget *parent) : QWidget(parent)
19 {
20  scale = Scale;
21  init_display();
23  //auto level and auto stat calc are enabled by default.
24  //always check them when doing these actions.
25  autolevel=true;
26  autostatcalc=true;
27  load=false;
28  editable=true;
29  advancedMode=false;
30  mslotsel =-1;
31 }
32 
34 {
35 
36  lbl_avatar = new QLabel;
37  lbl_avatar->setFixedSize(86*scale,98*scale);
38  line_name = new QLineEdit;
39  line_name->setPlaceholderText(tr("Name"));
40  lbl_hp = new QLabel(tr("HP"));
41  lbl_mp = new QLabel(tr("MP"));
42  lbl_mp_slash = new QLabel("/");
43  lbl_hp_slash = new QLabel("/");
44  lbl_hp_max = new QLabel("");
45  lbl_mp_max = new QLabel("");
46  sb_level = new QSpinBox;
47  sb_level->setPrefix(tr("Level").append(": "));
48  sb_curMp = new QSpinBox;
49  sb_curHp = new QSpinBox;
50  sb_maxMp = new QSpinBox;
51  sb_maxMp->setToolTip(tr("value calculated ingame; edit BaseMp"));
52  sb_maxMp->setVisible(false);
53  sb_maxHp = new QSpinBox;
54  sb_maxHp->setToolTip(tr("value calculated ingame; edit BaseHp"));
55  sb_maxHp->setVisible(false);
56 
57  sb_kills = new QSpinBox;
58  sb_kills->setPrefix(tr("Kills").append(": "));
59  cb_fury=new QCheckBox(tr("Fury"));
60  cb_sadness = new QCheckBox(tr("Sadness"));
61  cb_front_row = new QCheckBox(tr("Front Row"));
62  cb_idChanger = new QCheckBox;
63  cb_idChanger->setHidden(true);
64 
65  combo_id = new QComboBox;
66  for(int i=0;i<11;i++){combo_id->addItem(Chars.icon(i),Chars.defaultName(i));}
67  combo_id->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed);
68  combo_id->setHidden(true);
69 
70  lbl_base_hp = new QLabel(tr("Base HP"));
71  lbl_base_hp_bonus = new QLabel;
72  sb_base_hp = new QSpinBox;
73  sb_base_hp->setFixedWidth(fontMetrics().width(QChar('W'))*5);
74  lbl_base_mp = new QLabel(tr("Base MP"));
75  lbl_base_mp_bonus = new QLabel;
76  sb_base_mp = new QSpinBox;
77  sb_base_mp->setFixedWidth(fontMetrics().width(QChar('W'))*5);
78 
79  lbl_level_progress = new QLabel(tr("Level Progress"));
80  bar_tnl = new QProgressBar;
81  bar_tnl->setMaximum(61);//strange indeed..
82  bar_tnl->setTextVisible(false);
83  bar_tnl->setFixedHeight(10*scale);
84  bar_tnl->setFixedWidth(61*scale);
85  lbl_level_next = new QLabel(tr("Next"));
86  sb_total_exp = new QSpinBox;
87  sb_total_exp->setPrefix(tr("Exp: "));
88  sb_total_exp->setMaximumWidth(fontMetrics().width(QChar('9'))*16);
89  sb_total_exp->setMaximum(2147483647);
90  sb_total_exp->setWrapping(true);
91 
92  lbl_limit_bar = new QLabel (tr("Limit Bar"));
93  slider_limit = new QSlider;
94  slider_limit->setMaximumHeight(20*scale);
95  slider_limit->setMaximum(255);
96  slider_limit->setOrientation(Qt::Horizontal);
97  lcd_limit_value = new QLCDNumber;
98  lcd_limit_value->setSegmentStyle(QLCDNumber::Flat);
99 
100  lbl_str = new QLabel(tr("Str"));
101  sb_str = new QSpinBox;
102  sb_str->setAlignment(Qt::AlignCenter);
103  QLabel *lbl_str_plus_1 = new QLabel(tr("+"));
104  lbl_str_plus_1->setAlignment(Qt::AlignCenter);
105  sb_str_bonus = new QSpinBox;
106  sb_str_bonus->setAlignment(Qt::AlignCenter);
107  QLabel *lbl_str_plus_2 = new QLabel(tr("+"));
108  lbl_str_plus_2->setAlignment(Qt::AlignCenter);
109  lbl_str_mat_bonus = new QLabel;
110  QLabel *lbl_str_equals = new QLabel(tr("="));
111  lbl_str_total = new QLabel;
112 
113  lbl_vit = new QLabel(tr("Vit"));
114  sb_vit = new QSpinBox;
115  sb_vit->setAlignment(Qt::AlignCenter);
116  QLabel *lbl_vit_plus_1 = new QLabel(tr("+"));
117  lbl_vit_plus_1->setAlignment(Qt::AlignCenter);
118  sb_vit_bonus = new QSpinBox;
119  sb_vit_bonus->setAlignment(Qt::AlignCenter);
120  QLabel *lbl_vit_plus_2 = new QLabel(tr("+"));
121  lbl_vit_plus_2->setAlignment(Qt::AlignCenter);
122  lbl_vit_mat_bonus = new QLabel;
123  QLabel *lbl_vit_equals = new QLabel(tr("="));
124  lbl_vit_total = new QLabel;
125 
126  lbl_mag = new QLabel(tr("Mag"));
127  sb_mag = new QSpinBox;
128  sb_mag->setAlignment(Qt::AlignCenter);
129  QLabel *lbl_mag_plus_1 = new QLabel(tr("+"));
130  lbl_mag_plus_1->setAlignment(Qt::AlignCenter);
131  sb_mag_bonus = new QSpinBox;
132  sb_mag_bonus->setAlignment(Qt::AlignCenter);
133  QLabel *lbl_mag_plus_2 = new QLabel(tr("+"));
134  lbl_mag_plus_2->setAlignment(Qt::AlignCenter);
135  lbl_mag_mat_bonus = new QLabel;
136  QLabel *lbl_mag_equals = new QLabel(tr("="));
137  lbl_mag_total = new QLabel;
138 
139  lbl_spi = new QLabel(tr("Spi"));
140  sb_spi = new QSpinBox;
141  sb_spi->setAlignment(Qt::AlignCenter);
142  QLabel *lbl_spi_plus_1 = new QLabel(tr("+"));
143  lbl_spi_plus_1->setAlignment(Qt::AlignCenter);
144  sb_spi_bonus = new QSpinBox;
145  sb_spi_bonus->setAlignment(Qt::AlignCenter);
146  QLabel *lbl_spi_plus_2 = new QLabel(tr("+"));
147  lbl_spi_plus_2->setAlignment(Qt::AlignCenter);
148  lbl_spi_mat_bonus = new QLabel;
149  QLabel *lbl_spi_equals = new QLabel(tr("="));
150  lbl_spi_total = new QLabel;
151 
152  lbl_dex = new QLabel(tr("Dex"));
153  sb_dex = new QSpinBox;
154  sb_dex->setAlignment(Qt::AlignCenter);
155  QLabel *lbl_dex_plus_1 = new QLabel(tr("+"));
156  lbl_dex_plus_1->setAlignment(Qt::AlignCenter);
157  sb_dex_bonus = new QSpinBox;
158  sb_dex_bonus->setAlignment(Qt::AlignCenter);
159  QLabel *lbl_dex_plus_2 = new QLabel(tr("+"));
160  lbl_dex_plus_2->setAlignment(Qt::AlignCenter);
161  lbl_dex_mat_bonus = new QLabel;
162  QLabel *lbl_dex_equals = new QLabel(tr("="));
163  lbl_dex_total = new QLabel;
164 
165  lbl_lck = new QLabel(tr("Lck"));
166  sb_lck = new QSpinBox;
167  sb_lck->setAlignment(Qt::AlignCenter);
168  QLabel *lbl_lck_plus_1 = new QLabel(tr("+"));
169  lbl_lck_plus_1->setAlignment(Qt::AlignCenter);
170  sb_lck_bonus = new QSpinBox;
171  sb_lck_bonus->setAlignment(Qt::AlignCenter);
172  QLabel *lbl_lck_plus_2 = new QLabel(tr("+"));
173  lbl_lck_plus_2->setAlignment(Qt::AlignCenter);
174  lbl_lck_mat_bonus = new QLabel;
175  QLabel *lbl_lck_equals = new QLabel(tr("="));
176  lbl_lck_total = new QLabel;
177 
178  //Spin Boxes for limit uses.
179  sb_uses_limit_1_1 = new QSpinBox;
180  sb_uses_limit_2_1 = new QSpinBox;
181  sb_uses_limit_3_1 = new QSpinBox;
182  sb_uses_limit_1_1->setFixedWidth(fontMetrics().width(QChar('W'))*5);
183  sb_uses_limit_2_1->setFixedWidth(fontMetrics().width(QChar('W'))*5);
184  sb_uses_limit_3_1->setFixedWidth(fontMetrics().width(QChar('W'))*5);
185  sb_uses_limit_1_1->setAlignment(Qt::AlignCenter);
186  sb_uses_limit_2_1->setAlignment(Qt::AlignCenter);
187  sb_uses_limit_3_1->setAlignment(Qt::AlignCenter);
188 
189 
190  lbl_uses = new QLabel(tr("Limit Uses"));
191  lbl_uses->setAlignment(Qt::AlignHCenter);
192  lbl_1_1 = new QLabel(tr("1-1"));
193  lbl_2_1 = new QLabel(tr("2-1"));
194  lbl_3_1 = new QLabel(tr("3-1"));
195  lbl_1_1->setFixedWidth(fontMetrics().width(QChar('W'))*3);
196  lbl_2_1->setFixedWidth(fontMetrics().width(QChar('W'))*3);
197  lbl_3_1->setFixedWidth(fontMetrics().width(QChar('W'))*3);
198  lbl_1_1->setAlignment(Qt::AlignHCenter);
199  lbl_2_1->setAlignment(Qt::AlignHCenter);
200  lbl_3_1->setAlignment(Qt::AlignHCenter);
201 
202 
203  QHBoxLayout *layout_1_1 = new QHBoxLayout;
204  layout_1_1->setContentsMargins(0,0,0,0);
205  //layout_1_1->setSpacing(3);
206  layout_1_1->addWidget(lbl_1_1);
207  layout_1_1->addWidget(sb_uses_limit_1_1);
208 
209  QHBoxLayout *layout_2_1 = new QHBoxLayout;
210  layout_2_1->setContentsMargins(0,0,0,0);
211  //layout_2_1->setSpacing(3);
212  layout_2_1->addWidget(lbl_2_1);
213  layout_2_1->addWidget(sb_uses_limit_2_1);
214  QHBoxLayout *layout_3_1 = new QHBoxLayout;
215  layout_3_1->setContentsMargins(0,0,0,0);
216  //layout_3_1->setSpacing(3);
217  layout_3_1->addWidget(lbl_3_1);
218  layout_3_1->addWidget(sb_uses_limit_3_1);
219 
220  QVBoxLayout *used_limits_layout = new QVBoxLayout;
221  used_limits_layout->setContentsMargins(0,0,0,0);
222  //used_limits_layout->setSpacing(3);
223  used_limits_layout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Minimum,QSizePolicy::MinimumExpanding));
224  used_limits_layout->addWidget(lbl_uses);
225  used_limits_layout->addLayout(layout_1_1);
226  used_limits_layout->addLayout(layout_2_1);
227  used_limits_layout->addLayout(layout_3_1);
228  used_limits_layout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Minimum,QSizePolicy::MinimumExpanding));
229 
230  list_limits = new QListWidget;
231  lbl_limit_level = new QLabel(tr("Limit Level"));
232  sb_limit_level = new QSpinBox;
233 
234  sb_limit_level->setFixedWidth(fontMetrics().width(QChar('W'))*4);
235 
236  QHBoxLayout *limit_level_layout = new QHBoxLayout;
237  limit_level_layout->setContentsMargins(0,0,0,0);
238  limit_level_layout->addWidget(lbl_limit_level);
239  limit_level_layout->addWidget(sb_limit_level);
240 
241  sb_level->setMaximum(99);
242  sb_curMp->setMaximum(32767);
243  sb_curHp->setMaximum(32767);
244  sb_maxMp->setMaximum(32767);
245  sb_maxHp->setMaximum(32767);
246  sb_base_hp->setMaximum(32767);
247  sb_base_mp->setMaximum(32767);
248  sb_kills->setMaximum(65535);
249  sb_str->setMaximum(255);
250  sb_str_bonus->setMaximum(255);
251  sb_vit->setMaximum(255);
252  sb_vit_bonus->setMaximum(255);
253  sb_mag->setMaximum(255);
254  sb_mag_bonus->setMaximum(255);
255  sb_spi->setMaximum(255);
256  sb_spi_bonus->setMaximum(255);
257  sb_dex->setMaximum(255);
258  sb_dex_bonus->setMaximum(255);
259  sb_lck->setMaximum(255);
260  sb_lck_bonus->setMaximum(255);
261  sb_limit_level->setMaximum(4);
262  sb_uses_limit_1_1->setMaximum(32767);
263  sb_uses_limit_2_1->setMaximum(32767);
264  sb_uses_limit_3_1->setMaximum(32767);
265 
266  sb_curMp->setWrapping(true);
267  sb_curHp->setWrapping(true);
268  sb_base_hp->setWrapping(true);
269  sb_base_mp->setWrapping(true);
270  sb_kills->setWrapping(true);
271  sb_str->setWrapping(true);
272  sb_str_bonus->setWrapping(true);
273  sb_vit->setWrapping(true);
274  sb_vit_bonus->setWrapping(true);
275  sb_mag->setWrapping(true);
276  sb_mag_bonus->setWrapping(true);
277  sb_spi->setWrapping(true);
278  sb_spi_bonus->setWrapping(true);
279  sb_dex->setWrapping(true);
280  sb_dex_bonus->setWrapping(true);
281  sb_lck->setWrapping(true);
282  sb_lck_bonus->setWrapping(true);
283  sb_limit_level->setWrapping(true);
284  sb_uses_limit_1_1->setWrapping(true);
285  sb_uses_limit_2_1->setWrapping(true);
286  sb_uses_limit_3_1->setWrapping(true);
287 
288  line_name->setMaxLength(11);
289  line_name->setMaximumWidth(fontMetrics().width(QChar('W'))*11);
290 
291  QHBoxLayout * name_level_layout= new QHBoxLayout;
292  name_level_layout->addWidget(line_name);
293  QSpacerItem *name_spacer = new QSpacerItem(20,0,QSizePolicy::Fixed,QSizePolicy::Fixed);
294  name_level_layout->addSpacerItem(name_spacer);
295  name_level_layout->addWidget(sb_level);
296 
297  QHBoxLayout *hp_layout = new QHBoxLayout;
298  hp_layout->addWidget(lbl_hp);
299  hp_layout->addWidget(sb_curHp);
300  hp_layout->addWidget(lbl_hp_slash);
301  hp_layout->addWidget(lbl_hp_max);
302  hp_layout->addWidget(sb_maxHp);
303  QSpacerItem *hp_spacer1 = new QSpacerItem(20,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
304  hp_layout->addSpacerItem(hp_spacer1);
305  QSpacerItem *hp_spacer = new QSpacerItem(20,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
306  hp_layout->addSpacerItem(hp_spacer);
307 
308  QHBoxLayout *mp_layout = new QHBoxLayout;
309  mp_layout->addWidget(lbl_mp);
310  mp_layout->addWidget(sb_curMp);
311  mp_layout->addWidget(lbl_mp_slash);
312  mp_layout->addWidget(lbl_mp_max);
313  mp_layout->addWidget(sb_maxMp);
314  QSpacerItem *mp_spacer1 = new QSpacerItem(20,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
315  mp_layout->addSpacerItem(mp_spacer1);
316  QSpacerItem *mp_spacer = new QSpacerItem(20,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
317  mp_layout->addSpacerItem(mp_spacer);
318 
319  QHBoxLayout *barNextLayout = new QHBoxLayout();
320  barNextLayout->setContentsMargins(0,0,0,0);
321  barNextLayout->addWidget(bar_tnl);
322  barNextLayout->addWidget(lbl_level_next);
323  barNextLayout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::MinimumExpanding,QSizePolicy::Fixed));
324 
325  QVBoxLayout *exp_layout = new QVBoxLayout;
326  exp_layout->setContentsMargins(0,0,0,0);
327  //exp_layout->setSpacing(0);
328  exp_layout->addWidget(sb_total_exp);
329  exp_layout->addLayout(barNextLayout);
330 
331  QHBoxLayout *kills_layout = new QHBoxLayout;
332  kills_layout->setContentsMargins(0,0,0,0);
333  kills_layout->addWidget(sb_kills);
334  kills_layout->addLayout(exp_layout);
335 
336  QVBoxLayout *name_hp_mp_kills_layout = new QVBoxLayout;
337  //name_hp_mp_kills_layout->setSpacing(0);
338  name_hp_mp_kills_layout->addLayout(name_level_layout);
339  name_hp_mp_kills_layout->addLayout(hp_layout);
340  name_hp_mp_kills_layout->addLayout(mp_layout);
341  name_hp_mp_kills_layout->addLayout(kills_layout);
342 
343  QVBoxLayout *fury_sadness_layout = new QVBoxLayout;
344  fury_sadness_layout->setContentsMargins(0,0,0,0);
345  //fury_sadness_layout->setSpacing(2);
346  fury_sadness_layout->addWidget(cb_fury);
347  fury_sadness_layout->addWidget(cb_sadness);
348 
349 
350  QVBoxLayout *sadness_row_id_layout =new QVBoxLayout;
351  sadness_row_id_layout->addLayout(fury_sadness_layout);
352  sadness_row_id_layout->addSpacerItem(new QSpacerItem(0,6,QSizePolicy::Preferred,QSizePolicy::Preferred));
353  sadness_row_id_layout->addWidget(cb_front_row);
354  sadness_row_id_layout->addWidget(cb_idChanger);
355  sadness_row_id_layout->addSpacerItem(new QSpacerItem(0,6,QSizePolicy::Preferred,QSizePolicy::Preferred));
356  sadness_row_id_layout->addWidget(combo_id);
357 
358  QHBoxLayout *avatar_name_layout = new QHBoxLayout;
359  avatar_name_layout->setContentsMargins(0,0,0,0);
360  //avatar_name_layout->setSpacing(0);
361  avatar_name_layout->addWidget(lbl_avatar);
362  avatar_name_layout->addLayout(name_hp_mp_kills_layout);
363  avatar_name_layout->addLayout(sadness_row_id_layout);
364 
365  QHBoxLayout *limit_bar_layout = new QHBoxLayout;
366  limit_bar_layout->setContentsMargins(0,0,0,0);
367  limit_bar_layout->addLayout(limit_level_layout);
368 
369  QSpacerItem *limitSpacer = new QSpacerItem(10,0,QSizePolicy::Fixed,QSizePolicy::Fixed);
370  limit_bar_layout->addSpacerItem(limitSpacer);
371  limit_bar_layout->addWidget(lbl_limit_bar);
372  limit_bar_layout->addWidget(slider_limit);
373  limit_bar_layout->addWidget(lcd_limit_value);
374 
375  QHBoxLayout *str_layout = new QHBoxLayout;
376  str_layout->setContentsMargins(0,0,0,0);
377  str_layout->addWidget(lbl_str);
378  str_layout->addWidget(sb_str);
379  str_layout->addWidget(lbl_str_plus_1);
380  str_layout->addWidget(sb_str_bonus);
381  str_layout->addWidget(lbl_str_plus_2);
382  str_layout->addWidget(lbl_str_mat_bonus);
383  str_layout->addWidget(lbl_str_equals);
384  str_layout->addWidget(lbl_str_total);
385 
386  QHBoxLayout *vit_layout = new QHBoxLayout;
387  vit_layout->setContentsMargins(0,0,0,0);
388  vit_layout->addWidget(lbl_vit);
389  vit_layout->addWidget(sb_vit);
390  vit_layout->addWidget(lbl_vit_plus_1);
391  vit_layout->addWidget(sb_vit_bonus);
392  vit_layout->addWidget(lbl_vit_plus_2);
393  vit_layout->addWidget(lbl_vit_mat_bonus);
394  vit_layout->addWidget(lbl_vit_equals);
395  vit_layout->addWidget(lbl_vit_total);
396 
397  QHBoxLayout *mag_layout = new QHBoxLayout;
398  mag_layout->setContentsMargins(0,0,0,0);
399  mag_layout->addWidget(lbl_mag);
400  mag_layout->addWidget(sb_mag);
401  mag_layout->addWidget(lbl_mag_plus_1);
402  mag_layout->addWidget(sb_mag_bonus);
403  mag_layout->addWidget(lbl_mag_plus_2);
404  mag_layout->addWidget(lbl_mag_mat_bonus);
405  mag_layout->addWidget(lbl_mag_equals);
406  mag_layout->addWidget(lbl_mag_total);
407 
408  QHBoxLayout *spi_layout = new QHBoxLayout;
409  spi_layout->setContentsMargins(0,0,0,0);
410  spi_layout->addWidget(lbl_spi);
411  spi_layout->addWidget(sb_spi);
412  spi_layout->addWidget(lbl_spi_plus_1);
413  spi_layout->addWidget(sb_spi_bonus);
414  spi_layout->addWidget(lbl_spi_plus_2);
415  spi_layout->addWidget(lbl_spi_mat_bonus);
416  spi_layout->addWidget(lbl_spi_equals);
417  spi_layout->addWidget(lbl_spi_total);
418 
419  QHBoxLayout *dex_layout = new QHBoxLayout;
420  dex_layout->setContentsMargins(0,0,0,0);
421  dex_layout->addWidget(lbl_dex);
422  dex_layout->addWidget(sb_dex);
423  dex_layout->addWidget(lbl_dex_plus_1);
424  dex_layout->addWidget(sb_dex_bonus);
425  dex_layout->addWidget(lbl_dex_plus_2);
426  dex_layout->addWidget(lbl_dex_mat_bonus);
427  dex_layout->addWidget(lbl_dex_equals);
428  dex_layout->addWidget(lbl_dex_total);
429 
430  QHBoxLayout *lck_layout = new QHBoxLayout;
431  lck_layout->setContentsMargins(0,0,0,0);
432  lck_layout->addWidget(lbl_lck);
433  lck_layout->addWidget(sb_lck);
434  lck_layout->addWidget(lbl_lck_plus_1);
435  lck_layout->addWidget(sb_lck_bonus);
436  lck_layout->addWidget(lbl_lck_plus_2);
437  lck_layout->addWidget(lbl_lck_mat_bonus);
438  lck_layout->addWidget(lbl_lck_equals);
439  lck_layout->addWidget(lbl_lck_total);
440 
441  QHBoxLayout *base_hp_layout = new QHBoxLayout;
442  base_hp_layout->setContentsMargins(0,0,0,0);
443  base_hp_layout->addWidget(lbl_base_hp);
444  base_hp_layout->addWidget(sb_base_hp);
445  base_hp_layout->addWidget(lbl_base_hp_bonus);
446  base_hp_layout->addSpacerItem(new QSpacerItem(3,0,QSizePolicy::Expanding,QSizePolicy::Fixed));
447 
448  QHBoxLayout *base_mp_layout = new QHBoxLayout;
449  base_mp_layout->setContentsMargins(0,0,0,0);
450  base_mp_layout->addWidget(lbl_base_mp);
451  base_mp_layout->addWidget(sb_base_mp);
452  base_mp_layout->addWidget(lbl_base_mp_bonus);
453  base_mp_layout->addSpacerItem(new QSpacerItem(3,0,QSizePolicy::Expanding,QSizePolicy::Fixed));
454 
455  QHBoxLayout *base_hp_mp_layout = new QHBoxLayout;
456  base_hp_mp_layout->setContentsMargins(0,0,0,0);
457  base_hp_mp_layout->setSpacing(3);
458  base_hp_mp_layout->addLayout(base_hp_layout);
459  base_hp_mp_layout->addLayout(base_mp_layout);
460 
461  QVBoxLayout *stat_layout = new QVBoxLayout;
462  stat_layout->setContentsMargins(0,2,0,0);
463  stat_layout->setSpacing(0);
464  stat_layout->addLayout(str_layout);
465  stat_layout->addLayout(vit_layout);
466  stat_layout->addLayout(mag_layout);
467  stat_layout->addLayout(spi_layout);
468  stat_layout->addLayout(dex_layout);
469  stat_layout->addLayout(lck_layout);
470  stat_layout->addLayout(base_hp_mp_layout);
471 
472  QFrame*stat_box= new QFrame;
473  stat_box->setLayout(stat_layout);
474  stat_box->adjustSize();
475 
476  QLabel *lbl_0x34= new QLabel(QString(tr("0x34")));
477  lcd_0x34 = new QLCDNumber;
478  lcd_0x34->setDigitCount(2);
479  lcd_0x34->setFixedSize(32*scale,20*scale);
480  lcd_0x34->setHexMode();
481  lcd_0x34->setSegmentStyle(QLCDNumber::Flat);
482  QVBoxLayout *_0x34_layout = new QVBoxLayout;
483  _0x34_layout->setContentsMargins(0,0,0,0);
484  _0x34_layout->setSpacing(0);
485  _0x34_layout->addWidget(lbl_0x34);
486  _0x34_layout->addWidget(lcd_0x34);
487 
488  QLabel *lbl_0x35= new QLabel(QString(tr("0x35")));
489  lcd_0x35 = new QLCDNumber;
490  lcd_0x35->setDigitCount(2);
491  lcd_0x35->setFixedSize(32*scale,20*scale);
492  lcd_0x35->setHexMode();
493  lcd_0x35->setSegmentStyle(QLCDNumber::Flat);
494  QVBoxLayout *_0x35_layout = new QVBoxLayout;
495  _0x35_layout->setContentsMargins(0,0,0,0);
496  _0x35_layout->setSpacing(0);
497  _0x35_layout->addWidget(lbl_0x35);
498  _0x35_layout->addWidget(lcd_0x35);
499 
500  QLabel *lbl_0x36= new QLabel(QString(tr("0x36")));
501  lcd_0x36 = new QLCDNumber;
502  lcd_0x36->setDigitCount(2);
503  lcd_0x36->setFixedSize(32*scale,20*scale);
504  lcd_0x36->setHexMode();
505  lcd_0x36->setSegmentStyle(QLCDNumber::Flat);
506  QVBoxLayout *_0x36_layout = new QVBoxLayout;
507  _0x36_layout->setContentsMargins(0,0,0,0);
508  _0x36_layout->setSpacing(0);
509  _0x36_layout->addWidget(lbl_0x36);
510  _0x36_layout->addWidget(lcd_0x36);
511 
512  QLabel *lbl_0x37= new QLabel(QString(tr("0x37")));
513  lcd_0x37 = new QLCDNumber;
514  lcd_0x37->setDigitCount(2);
515  lcd_0x37->setFixedSize(32*scale,20*scale);
516  lcd_0x37->setHexMode();
517 
518  lcd_0x37->setSegmentStyle(QLCDNumber::Flat);
519  QVBoxLayout *_0x37_layout = new QVBoxLayout;
520  _0x37_layout->setContentsMargins(0,0,0,0);
521  _0x37_layout->setSpacing(0);
522  _0x37_layout->addWidget(lbl_0x37);
523  _0x37_layout->addWidget(lcd_0x37);
524 
525  QVBoxLayout *unknown_layout = new QVBoxLayout;
526  unknown_layout->setContentsMargins(0,0,0,0);
527  unknown_layout->setSpacing(0);
528  unknown_layout->addLayout(_0x34_layout);
529  unknown_layout->addLayout(_0x35_layout);
530  unknown_layout->addLayout(_0x36_layout);
531  unknown_layout->addLayout(_0x37_layout);
532 
533  unknown_box = new QFrame;
534  unknown_box->setLayout(unknown_layout);
535  unknown_box->setFixedHeight(stat_box->height());
536  unknown_box->setVisible(false);
537 
538  QHBoxLayout *stat_layout_2 = new QHBoxLayout;
539  stat_layout_2->setContentsMargins(0,0,0,0);
540  stat_layout_2->addWidget(stat_box);
541  stat_layout_2->addWidget(unknown_box);
542 
543  QHBoxLayout *limit_use_list = new QHBoxLayout;
544  limit_use_list->addLayout(used_limits_layout);
545  limit_use_list->addWidget(list_limits);
546 
547  QVBoxLayout *limit_box = new QVBoxLayout;
548  limit_box->setContentsMargins(0,0,0,0);
549  //limit_box->setSpacing(0);
550  limit_box->addLayout(limit_bar_layout);
551  limit_box->addLayout(limit_use_list);
552 
553  QVBoxLayout *lower_section = new QVBoxLayout;
554  lower_section->setContentsMargins(0,0,0,0);
555  lower_section->setSpacing(0);
556  lower_section->addLayout(stat_layout_2);
557  lower_section->addLayout(limit_box);
558 
559  QVBoxLayout *left_Final = new QVBoxLayout;
560  left_Final->setContentsMargins(0,0,0,0);
561  //left_Final->setSpacing(0);
562  left_Final->addLayout(avatar_name_layout);
563  left_Final->addLayout(lower_section);
564  left_Final->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Preferred,QSizePolicy::MinimumExpanding));
565 
566  weapon_selection = new QComboBox;
567 
568 
569  armor_selection = new QComboBox;
570  for(int i=256;i<288;i++){armor_selection->addItem(QPixmap::fromImage(Items.image(i)),Items.name(i));}
571 
572  accessory_selection = new QComboBox;
573 
574  for(int i=288;i<320;i++){accessory_selection->addItem(QPixmap::fromImage(Items.image(i)),Items.name(i));}
575  accessory_selection->addItem(QPixmap::fromImage(Items.image(288)),tr("-NONE-"));
576  materia_edit = new MateriaEditor(scale,this);
578 
579  elemental_effects = new QListWidget();
580  QHBoxLayout *elemental = new QHBoxLayout();
581  elemental->setContentsMargins(0,0,0,0);
582  elemental->addWidget(elemental_effects);
583 
584  elemental_box =new QGroupBox();
585  elemental_box->setContentsMargins(3,3,3,3);
586  elemental_box->setLayout(elemental);
587  elemental_box->setTitle(tr("Elemental Effects"));
588  elemental_box->setHidden(1);
589 
590  QVBoxLayout *elemental_layout = new QVBoxLayout();
591  elemental_layout->setContentsMargins(0,0,0,0);
592  elemental_layout->addWidget(elemental_box);
593  elemental_layout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding));
594 
595  status_effects = new QListWidget();
596  QHBoxLayout *status =new QHBoxLayout();
597  status->setContentsMargins(0,0,0,0);
598  status->addWidget(status_effects);
599 
600  status_box = new QGroupBox();
601  status_box->setContentsMargins(3,3,3,3);
602  status_box->setLayout(status);
603  status_box->setTitle(tr("Status Effects"));
604  status_box->setHidden(1);
605 
606  QVBoxLayout *status_layout = new QVBoxLayout();
607  status_layout->setContentsMargins(0,0,0,0);
608  status_layout->addWidget(status_box);
609  status_layout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding));
610 
611  QHBoxLayout *effects_layout =new QHBoxLayout();
612  effects_layout->setContentsMargins(0,0,0,0);
613  effects_layout->addLayout(elemental_layout);
614  effects_layout->addLayout(status_layout);
615  QSpacerItem *spacer2 = new QSpacerItem(-1,-1,QSizePolicy::Expanding,QSizePolicy::Minimum);
616  effects_layout->addSpacerItem(spacer2);
617  effects_layout->setSpacing(0);
618 
619  //set up materia slots and box for weapon.
620  weapon_materia_box = new QFrame;
621  weapon_materia_box->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
622  QSpacerItem *weapon_spacer=new QSpacerItem(-1,-1,QSizePolicy::Expanding,QSizePolicy::Minimum);
623  //I Like the No Growth Slots They Look Better so i always use them
624  // you can use FF7Item::Style_m_grow_slot() to get the style of that slot
625 
626  weapon_slot_1 = new QPushButton();
627  weapon_slot_1->setFixedSize(32*scale,32*scale);
628  weapon_slot_1->setIconSize(QSize(32*scale,32*scale));
629  weapon_slot_1->setStyleSheet(Items.styleMateriaSlotNoGrowth());
630  weapon_slot_1->setHidden(1);
631 
632  QHBoxLayout *weapon_slot_1_layout = new QHBoxLayout;
633  weapon_slot_1_layout->setContentsMargins(0,0,0,0);
634  weapon_slot_1_layout->addWidget(weapon_slot_1);
635 
636  weapon_frm_1 = new QFrame;
637  weapon_frm_1->setFixedSize(32*scale,32*scale);
638  weapon_frm_1->setFrameShape(QFrame::NoFrame);
639  weapon_frm_1->setFrameShadow(QFrame::Plain);
640  weapon_frm_1->setLayout(weapon_slot_1_layout);
641 
642  weapon_m_link_1= new QLabel();
643  weapon_m_link_1->setFixedSize(12*scale,16*scale);
644 
645  weapon_slot_2 = new QPushButton();
646  weapon_slot_2->setFixedSize(32*scale,32*scale);
647  weapon_slot_2->setIconSize(QSize(32*scale,32*scale));
648  weapon_slot_2->setStyleSheet(Items.styleMateriaSlotNoGrowth());
649  weapon_slot_2->setHidden(1);
650 
651  QHBoxLayout *weapon_slot_2_layout = new QHBoxLayout;
652  weapon_slot_2_layout->setContentsMargins(0,0,0,0);
653  weapon_slot_2_layout->addWidget(weapon_slot_2);
654 
655  weapon_frm_2 = new QFrame;
656  weapon_frm_2->setFixedSize(32*scale,32*scale);
657  weapon_frm_2->setFrameShape(QFrame::NoFrame);
658  weapon_frm_2->setFrameShadow(QFrame::Plain);
659  weapon_frm_2->setLayout(weapon_slot_2_layout);
660 
661  QHBoxLayout *weapon_slots_1_and_2 = new QHBoxLayout();
662  weapon_slots_1_and_2->setContentsMargins(0,0,0,0);
663  weapon_slots_1_and_2->addWidget(weapon_frm_1);
664  weapon_slots_1_and_2->addWidget(weapon_m_link_1);
665  weapon_slots_1_and_2->addWidget(weapon_frm_2);
666  weapon_slots_1_and_2->setSpacing(0);
667 
668  weapon_slot_3 = new QPushButton();
669  weapon_slot_3->setFixedSize(32*scale,32*scale);
670  weapon_slot_3->setFlat(true);
671  weapon_slot_3->setAutoFillBackground(true);
672  weapon_slot_3->setIconSize(QSize(32*scale,32*scale));
673  weapon_slot_3->setStyleSheet(Items.styleMateriaSlotNoGrowth());
674  weapon_slot_3->setHidden(1);
675 
676  QHBoxLayout *weapon_slot_3_layout = new QHBoxLayout;
677  weapon_slot_3_layout->setContentsMargins(0,0,0,0);
678  weapon_slot_3_layout->addWidget(weapon_slot_3);
679 
680  weapon_frm_3 = new QFrame;
681  weapon_frm_3->setFixedSize(32*scale,32*scale);
682  weapon_frm_3->setFrameShape(QFrame::NoFrame);
683  weapon_frm_3->setFrameShadow(QFrame::Plain);
684  weapon_frm_3->setLayout(weapon_slot_3_layout);
685 
686  weapon_m_link_2 = new QLabel();
687  weapon_m_link_2->setFixedSize(12*scale,16*scale);
688 
689  weapon_slot_4 = new QPushButton();
690  weapon_slot_4->setFixedSize(32*scale,32*scale);
691  weapon_slot_1->setStyleSheet(Items.styleMateriaSlotNoGrowth());
692  weapon_slot_4->setFlat(true);
693  weapon_slot_4->setAutoFillBackground(true);
694  weapon_slot_4->setIconSize(QSize(32*scale,32*scale));
695  weapon_slot_4->setStyleSheet(Items.styleMateriaSlotNoGrowth());
696  weapon_slot_4->setHidden(1);
697 
698  QHBoxLayout *weapon_slot_4_layout = new QHBoxLayout;
699  weapon_slot_4_layout->setContentsMargins(0,0,0,0);
700  weapon_slot_4_layout->addWidget(weapon_slot_4);
701 
702  weapon_frm_4 = new QFrame;
703  weapon_frm_4->setFixedSize(32*scale,32*scale);
704  weapon_frm_4->setFrameShape(QFrame::NoFrame);
705  weapon_frm_4->setFrameShadow(QFrame::Plain);
706  weapon_frm_4->setLayout(weapon_slot_4_layout);
707 
708  QHBoxLayout *weapon_slots_3_and_4 = new QHBoxLayout();
709  weapon_slots_3_and_4->setContentsMargins(0,0,0,0);
710  weapon_slots_3_and_4->addWidget(weapon_frm_3);
711  weapon_slots_3_and_4->addWidget(weapon_m_link_2);
712  weapon_slots_3_and_4->addWidget(weapon_frm_4);
713  weapon_slots_3_and_4->setSpacing(0);
714 
715  weapon_slot_5 = new QPushButton();
716  weapon_slot_5->setFixedSize(32*scale,32*scale);
717  weapon_slot_5->setFlat(true);
718  weapon_slot_5->setAutoFillBackground(true);
719  weapon_slot_5->setIconSize(QSize(32*scale,32*scale));
720  weapon_slot_5->setStyleSheet(Items.styleMateriaSlotNoGrowth());
721  weapon_slot_5->setHidden(1);
722 
723  QHBoxLayout *weapon_slot_5_layout = new QHBoxLayout;
724  weapon_slot_5_layout->setContentsMargins(0,0,0,0);
725  weapon_slot_5_layout->addWidget(weapon_slot_5);
726 
727  weapon_frm_5 = new QFrame;
728  weapon_frm_5->setFixedSize(32*scale,32*scale);
729  weapon_frm_5->setFrameShape(QFrame::NoFrame);
730  weapon_frm_5->setFrameShadow(QFrame::Plain);
731  weapon_frm_5->setLayout(weapon_slot_5_layout);
732 
733  weapon_m_link_3 = new QLabel();
734  weapon_m_link_3->setFixedSize(12*scale,16*scale);
735 
736  weapon_slot_6 = new QPushButton();
737  weapon_slot_6->setFixedSize(32*scale,32*scale);
738  weapon_slot_6->setFlat(true);
739  weapon_slot_6->setAutoFillBackground(true);
740  weapon_slot_6->setIconSize(QSize(32*scale,32*scale));
741  weapon_slot_6->setStyleSheet(Items.styleMateriaSlotNoGrowth());
742  weapon_slot_6->setHidden(1);
743 
744  QHBoxLayout *weapon_slot_6_layout = new QHBoxLayout;
745  weapon_slot_6_layout->setContentsMargins(0,0,0,0);
746  weapon_slot_6_layout->addWidget(weapon_slot_6);
747 
748  weapon_frm_6 = new QFrame;
749  weapon_frm_6->setFixedSize(32*scale,32*scale);
750  weapon_frm_6->setFrameShape(QFrame::NoFrame);
751  weapon_frm_6->setFrameShadow(QFrame::Plain);
752  weapon_frm_6->setLayout(weapon_slot_6_layout);
753 
754  QHBoxLayout *weapon_slots_5_and_6 = new QHBoxLayout();
755  weapon_slots_5_and_6->setContentsMargins(0,0,0,0);
756  weapon_slots_5_and_6->addWidget(weapon_frm_5);
757  weapon_slots_5_and_6->addWidget(weapon_m_link_3);
758  weapon_slots_5_and_6->addWidget(weapon_frm_6);
759  weapon_slots_5_and_6->setSpacing(0);
760 
761  weapon_slot_7 = new QPushButton();
762  weapon_slot_7->setFixedSize(32*scale,32*scale);
763  weapon_slot_7->setFlat(true);
764  weapon_slot_7->setAutoFillBackground(true);
765  weapon_slot_7->setIconSize(QSize(32*scale,32*scale));
766  weapon_slot_7->setStyleSheet(Items.styleMateriaSlotNoGrowth());
767  weapon_slot_7->setHidden(1);
768 
769  QHBoxLayout *weapon_slot_7_layout = new QHBoxLayout;
770  weapon_slot_7_layout->setContentsMargins(0,0,0,0);
771  weapon_slot_7_layout->addWidget(weapon_slot_7);
772 
773  weapon_frm_7 = new QFrame;
774  weapon_frm_7->setFixedSize(32*scale,32*scale);
775  weapon_frm_7->setFrameShape(QFrame::NoFrame);
776  weapon_frm_7->setFrameShadow(QFrame::Plain);
777  weapon_frm_7->setLayout(weapon_slot_7_layout);
778 
779  weapon_m_link_4 = new QLabel();
780  weapon_m_link_4->setFixedSize(12*scale,16*scale);
781 
782  weapon_slot_8 = new QPushButton();
783  weapon_slot_8->setFixedSize(32*scale,32*scale);
784  weapon_slot_8->setFlat(true);
785  weapon_slot_8->setAutoFillBackground(true);
786  weapon_slot_8->setIconSize(QSize(32*scale,32*scale));
787  weapon_slot_8->setStyleSheet(Items.styleMateriaSlotNoGrowth());
788  weapon_slot_8->setHidden(1);
789 
790  QHBoxLayout *weapon_slot_8_layout = new QHBoxLayout;
791  weapon_slot_8_layout->setContentsMargins(0,0,0,0);
792  weapon_slot_8_layout->addWidget(weapon_slot_8);
793 
794  weapon_frm_8 = new QFrame;
795  weapon_frm_8->setFixedSize(32*scale,32*scale);
796  weapon_frm_8->setFrameShape(QFrame::NoFrame);
797  weapon_frm_8->setFrameShadow(QFrame::Plain);
798  weapon_frm_8->setLayout(weapon_slot_8_layout);
799 
800  QHBoxLayout *weapon_slots_7_and_8 = new QHBoxLayout();
801  weapon_slots_7_and_8->setContentsMargins(0,0,0,0);
802  weapon_slots_7_and_8->addWidget(weapon_frm_7);
803  weapon_slots_7_and_8->addWidget(weapon_m_link_4);
804  weapon_slots_7_and_8->addWidget(weapon_frm_8);
805  weapon_slots_7_and_8->setSpacing(0);
806 
807  QHBoxLayout *weapon_materia_slots = new QHBoxLayout();
808  weapon_materia_slots->setContentsMargins(0,0,0,0);
809  weapon_materia_slots->addLayout(weapon_slots_1_and_2);
810  weapon_materia_slots->addLayout(weapon_slots_3_and_4);
811  weapon_materia_slots->addLayout(weapon_slots_5_and_6);
812  weapon_materia_slots->addLayout(weapon_slots_7_and_8);
813  weapon_materia_slots->addSpacerItem(weapon_spacer);
814  weapon_materia_slots->setSpacing(12);
815 
816  weapon_materia_box->setLayout(weapon_materia_slots);
817 
818  lblWeaponStats = new QLabel();
819 
820  QVBoxLayout *weapon_layout = new QVBoxLayout;
821  weapon_layout->setContentsMargins(0,0,0,0);
822  weapon_layout->addWidget(weapon_selection);
823  weapon_layout->addWidget(lblWeaponStats);
824  weapon_layout->addWidget(weapon_materia_box);
825 
826  weapon_box = new QGroupBox(tr("Weapon"));
827  weapon_box->setLayout(weapon_layout);
828  weapon_box->adjustSize();
829  //set up materia slots and box for armor.
830  armor_materia_box = new QFrame;
831 
832  lblArmorStats = new QLabel();
833 
834  QSpacerItem *armor_spacer=new QSpacerItem(-1,-1,QSizePolicy::Expanding,QSizePolicy::Minimum);
835  //I Like the No Growth Slots They Look Better so i always use them
836  // you can use FF7Item::Style_m_grow_slot() to get the style of that slot
837 
838  armor_slot_1 = new QPushButton();
839  armor_slot_1->setFixedSize(32*scale,32*scale);
840  armor_slot_1->setIconSize(QSize(32*scale,32*scale));
841  armor_slot_1->setStyleSheet(Items.styleMateriaSlotNoGrowth());
842  armor_slot_1->setHidden(1);
843 
844  QHBoxLayout *armor_slot_1_layout = new QHBoxLayout;
845  armor_slot_1_layout->setContentsMargins(0,0,0,0);
846  armor_slot_1_layout->addWidget(armor_slot_1);
847 
848  armor_frm_1 = new QFrame;
849  armor_frm_1->setFixedSize(32*scale,32*scale);
850  armor_frm_1->setFrameShape(QFrame::NoFrame);
851  armor_frm_1->setFrameShadow(QFrame::Plain);
852  armor_frm_1->setLayout(armor_slot_1_layout);
853 
854  armor_m_link_1= new QLabel();
855  armor_m_link_1->setFixedSize(12*scale,16*scale);
856 
857  armor_slot_2 = new QPushButton();
858  armor_slot_2->setFixedSize(32*scale,32*scale);
859  armor_slot_2->setIconSize(QSize(32*scale,32*scale));
860  armor_slot_2->setStyleSheet(Items.styleMateriaSlotNoGrowth());
861  armor_slot_2->setHidden(1);
862 
863  QHBoxLayout *armor_slot_2_layout = new QHBoxLayout;
864  armor_slot_2_layout->setContentsMargins(0,0,0,0);
865  armor_slot_2_layout->addWidget(armor_slot_2);
866 
867  armor_frm_2 = new QFrame;
868  armor_frm_2->setFixedSize(32*scale,32*scale);
869  armor_frm_2->setFrameShape(QFrame::NoFrame);
870  armor_frm_2->setFrameShadow(QFrame::Plain);
871  armor_frm_2->setLayout(armor_slot_2_layout);
872 
873  QHBoxLayout *armor_slots_1_and_2 = new QHBoxLayout();
874  armor_slots_1_and_2->setContentsMargins(0,0,0,0);
875  armor_slots_1_and_2->addWidget(armor_frm_1);
876  armor_slots_1_and_2->addWidget(armor_m_link_1);
877  armor_slots_1_and_2->addWidget(armor_frm_2);
878  armor_slots_1_and_2->setSpacing(0);
879 
880  armor_slot_3 = new QPushButton();
881  armor_slot_3->setFixedSize(32*scale,32*scale);
882  armor_slot_3->setFlat(true);
883  armor_slot_3->setAutoFillBackground(true);
884  armor_slot_3->setIconSize(QSize(32*scale,32*scale));
885  armor_slot_3->setStyleSheet(Items.styleMateriaSlotNoGrowth());
886  armor_slot_3->setHidden(1);
887 
888  QHBoxLayout *armor_slot_3_layout = new QHBoxLayout;
889  armor_slot_3_layout->setContentsMargins(0,0,0,0);
890  armor_slot_3_layout->addWidget(armor_slot_3);
891 
892  armor_frm_3 = new QFrame;
893  armor_frm_3->setFixedSize(32*scale,32*scale);
894  armor_frm_3->setFrameShape(QFrame::NoFrame);
895  armor_frm_3->setFrameShadow(QFrame::Plain);
896  armor_frm_3->setLayout(armor_slot_3_layout);
897 
898  armor_m_link_2 = new QLabel();
899  armor_m_link_2->setFixedSize(12*scale,16*scale);
900  armor_m_link_2->setScaledContents(1);
901 
902  armor_slot_4 = new QPushButton();
903  armor_slot_4->setFixedSize(32*scale,32*scale);
904  armor_slot_1->setStyleSheet(Items.styleMateriaSlotNoGrowth());
905  armor_slot_4->setFlat(true);
906  armor_slot_4->setAutoFillBackground(true);
907  armor_slot_4->setIconSize(QSize(32*scale,32*scale));
908  armor_slot_4->setStyleSheet(Items.styleMateriaSlotNoGrowth());
909  armor_slot_4->setHidden(1);
910 
911  QHBoxLayout *armor_slot_4_layout = new QHBoxLayout;
912  armor_slot_4_layout->setContentsMargins(0,0,0,0);
913  armor_slot_4_layout->addWidget(armor_slot_4);
914 
915  armor_frm_4 = new QFrame;
916  armor_frm_4->setFixedSize(32*scale,32*scale);
917  armor_frm_4->setFrameShape(QFrame::NoFrame);
918  armor_frm_4->setFrameShadow(QFrame::Plain);
919  armor_frm_4->setLayout(armor_slot_4_layout);
920 
921  QHBoxLayout *armor_slots_3_and_4 = new QHBoxLayout();
922  armor_slots_3_and_4->setContentsMargins(0,0,0,0);
923  armor_slots_3_and_4->addWidget(armor_frm_3);
924  armor_slots_3_and_4->addWidget(armor_m_link_2);
925  armor_slots_3_and_4->addWidget(armor_frm_4);
926  armor_slots_3_and_4->setSpacing(0);
927 
928  armor_slot_5 = new QPushButton();
929  armor_slot_5->setFixedSize(32*scale,32*scale);
930  armor_slot_5->setFlat(true);
931  armor_slot_5->setAutoFillBackground(true);
932  armor_slot_5->setIconSize(QSize(32*scale,32*scale));
933  armor_slot_5->setStyleSheet(Items.styleMateriaSlotNoGrowth());
934  armor_slot_5->setHidden(1);
935 
936  QHBoxLayout *armor_slot_5_layout = new QHBoxLayout;
937  armor_slot_5_layout->setContentsMargins(0,0,0,0);
938  armor_slot_5_layout->addWidget(armor_slot_5);
939 
940  armor_frm_5 = new QFrame;
941  armor_frm_5->setFixedSize(32*scale,32*scale);
942  armor_frm_5->setFrameShape(QFrame::NoFrame);
943  armor_frm_5->setFrameShadow(QFrame::Plain);
944  armor_frm_5->setLayout(armor_slot_5_layout);
945 
946  armor_m_link_3 = new QLabel();
947  armor_m_link_3->setFixedSize(12*scale,16*scale);
948  armor_m_link_3->setScaledContents(1);
949 
950  armor_slot_6 = new QPushButton();
951  armor_slot_6->setFixedSize(32*scale,32*scale);
952  armor_slot_6->setFlat(true);
953  armor_slot_6->setAutoFillBackground(true);
954  armor_slot_6->setIconSize(QSize(32*scale,32*scale));
955  armor_slot_6->setStyleSheet(Items.styleMateriaSlotNoGrowth());
956  armor_slot_6->setHidden(1);
957 
958  QHBoxLayout *armor_slot_6_layout = new QHBoxLayout;
959  armor_slot_6_layout->setContentsMargins(0,0,0,0);
960  armor_slot_6_layout->addWidget(armor_slot_6);
961 
962  armor_frm_6 = new QFrame;
963  armor_frm_6->setFixedSize(32*scale,32*scale);
964  armor_frm_6->setFrameShape(QFrame::NoFrame);
965  armor_frm_6->setFrameShadow(QFrame::Plain);
966  armor_frm_6->setLayout(armor_slot_6_layout);
967 
968  QHBoxLayout *armor_slots_5_and_6 = new QHBoxLayout();
969  armor_slots_5_and_6->setContentsMargins(0,0,0,0);
970  armor_slots_5_and_6->addWidget(armor_frm_5);
971  armor_slots_5_and_6->addWidget(armor_m_link_3);
972  armor_slots_5_and_6->addWidget(armor_frm_6);
973  armor_slots_5_and_6->setSpacing(0);
974 
975  armor_slot_7 = new QPushButton();
976  armor_slot_7->setFixedSize(32*scale,32*scale);
977  armor_slot_7->setFlat(true);
978  armor_slot_7->setAutoFillBackground(true);
979  armor_slot_7->setIconSize(QSize(32*scale,32*scale));
980  armor_slot_7->setStyleSheet(Items.styleMateriaSlotNoGrowth());
981  armor_slot_7->setHidden(1);
982 
983  QHBoxLayout *armor_slot_7_layout = new QHBoxLayout;
984  armor_slot_7_layout->setContentsMargins(0,0,0,0);
985  armor_slot_7_layout->addWidget(armor_slot_7);
986 
987  armor_frm_7 = new QFrame;
988  armor_frm_7->setFixedSize(32*scale,32*scale);
989  armor_frm_7->setFrameShape(QFrame::NoFrame);
990  armor_frm_7->setFrameShadow(QFrame::Plain);
991  armor_frm_7->setLayout(armor_slot_7_layout);
992 
993  armor_m_link_4 = new QLabel();
994  armor_m_link_4->setFixedSize(12*scale,16*scale);
995  armor_m_link_4->setScaledContents(1);
996 
997  armor_slot_8 = new QPushButton();
998  armor_slot_8->setFixedSize(32*scale,32*scale);
999  armor_slot_8->setFlat(true);
1000  armor_slot_8->setAutoFillBackground(true);
1001  armor_slot_8->setIconSize(QSize(32*scale,32*scale));
1002  armor_slot_8->setStyleSheet(Items.styleMateriaSlotNoGrowth());
1003  armor_slot_8->setHidden(1);
1004 
1005  QHBoxLayout *armor_slot_8_layout = new QHBoxLayout;
1006  armor_slot_8_layout->setContentsMargins(0,0,0,0);
1007  armor_slot_8_layout->addWidget(armor_slot_8);
1008 
1009  armor_frm_8 = new QFrame;
1010  armor_frm_8->setFixedSize(32*scale,32*scale);
1011  armor_frm_8->setFrameShape(QFrame::NoFrame);
1012  armor_frm_8->setFrameShadow(QFrame::Plain);
1013  armor_frm_8->setLayout(armor_slot_8_layout);
1014 
1015  QHBoxLayout *armor_slots_7_and_8 = new QHBoxLayout();
1016  armor_slots_7_and_8->setContentsMargins(0,0,0,0);
1017  armor_slots_7_and_8->addWidget(armor_frm_7);
1018  armor_slots_7_and_8->addWidget(armor_m_link_4);
1019  armor_slots_7_and_8->addWidget(armor_frm_8);
1020  armor_slots_7_and_8->setSpacing(0);
1021 
1022  QHBoxLayout *armor_materia_slots = new QHBoxLayout();
1023  armor_materia_slots->setContentsMargins(0,0,0,0);
1024  armor_materia_slots->addLayout(armor_slots_1_and_2);
1025  armor_materia_slots->addLayout(armor_slots_3_and_4);
1026  armor_materia_slots->addLayout(armor_slots_5_and_6);
1027  armor_materia_slots->addLayout(armor_slots_7_and_8);
1028  armor_materia_slots->addSpacerItem(armor_spacer);
1029  armor_materia_slots->setSpacing(12);
1030 
1031  armor_materia_box->setLayout(armor_materia_slots);
1032 
1033  QVBoxLayout *armor_layout = new QVBoxLayout;
1034  armor_layout->setContentsMargins(0,0,0,0);
1035  armor_layout->addWidget(armor_selection);
1036  armor_layout->addWidget(lblArmorStats);
1037  armor_layout->addWidget(armor_materia_box);
1038 
1039  armor_box = new QGroupBox(tr("Armor"));
1040  armor_box->setLayout(armor_layout);
1041 
1042  QVBoxLayout *accessory_layout = new QVBoxLayout;
1043  accessory_layout->setContentsMargins(0,0,0,0);
1044  accessory_layout->addWidget(accessory_selection);
1045 
1046  accessory_box = new QGroupBox(tr("Accessory"));
1047  accessory_box->setLayout(accessory_layout);
1048 
1049  QVBoxLayout *right_Top = new QVBoxLayout;
1050  right_Top->setContentsMargins(0,0,0,0);
1051  right_Top->addWidget(weapon_box);
1052  right_Top->addWidget(armor_box);
1053  right_Top->addWidget(accessory_box);
1054 
1055  QWidget *right_top = new QWidget;
1056  right_top->setContentsMargins(0,0,0,0);
1057  right_top->setLayout(right_Top);
1058 
1059  QVBoxLayout *right_bottom = new QVBoxLayout;
1060  right_bottom->setContentsMargins(0,0,0,0);
1061  right_bottom->addWidget(materia_edit);
1062  right_bottom->addLayout(effects_layout);
1063 
1064  QVBoxLayout *right_Final = new QVBoxLayout;
1065  right_Final->setContentsMargins(3,0,3,0);
1066  right_Final->addWidget(right_top);
1067  right_Final->setSpacing(3);
1068  right_Final->addLayout(right_bottom);
1069 
1070  toolbox = new QToolBox;
1071 
1072  QFrame *tabStatus = new QFrame;
1073  tabStatus->setLayout(left_Final);
1074  tabStatus->adjustSize();
1075  toolbox->addItem(tabStatus,Chars.icon(0),QString(tr("Status Info")));
1076 
1077  QFrame *tabEquipment = new QFrame;
1078  tabEquipment->setLayout(right_Final);
1079  tabEquipment->adjustSize();
1080  toolbox->addItem(tabEquipment,QIcon(QPixmap::fromImage(Items.image(256))),QString(tr("Equipment")));
1081 
1082  QVBoxLayout *toolbox_layout = new QVBoxLayout;
1083  toolbox_layout->setContentsMargins(0,0,0,0);
1084  toolbox_layout->addWidget(toolbox);
1085 
1086  this->setLayout(toolbox_layout);
1087 }
1088 void CharEditor::setToolBoxStyle(QString stylesheet){toolbox->setStyleSheet(stylesheet);}
1089 void CharEditor::setMateriaHoverStyle(QString hoverColor){materia_edit->setHoverStyle(hoverColor);}
1090 void CharEditor::setSliderStyle(QString style){slider_limit->setStyleSheet(style);}
1091 
1093 {
1094  connect(cb_idChanger,SIGNAL(toggled(bool)),this,SLOT(cb_idChanger_toggled(bool)));
1095  connect(sb_level,SIGNAL(valueChanged(int)),this,SLOT(Level_Changed(int)));
1096  connect(sb_curMp,SIGNAL(valueChanged(int)),this,SLOT(setCurMp(int)));
1097  connect(sb_curHp,SIGNAL(valueChanged(int)),this,SLOT(setCurHp(int)));
1098  connect(sb_maxMp,SIGNAL(valueChanged(int)),this,SLOT(setMaxMp(int)));
1099  connect(sb_maxHp,SIGNAL(valueChanged(int)),this,SLOT(setMaxHp(int)));
1100  connect(sb_base_hp,SIGNAL(valueChanged(int)),this,SLOT(setBaseHp(int)));
1101  connect(sb_base_mp,SIGNAL(valueChanged(int)),this,SLOT(setBaseMp(int)));
1102  connect(sb_kills,SIGNAL(valueChanged(int)),this,SLOT(setKills(int)));
1103  connect(line_name,SIGNAL(textChanged(QString)),this,SLOT(setName(QString)));
1104  connect(cb_front_row,SIGNAL(toggled(bool)),this,SLOT(setRow(bool)));
1105  connect(cb_fury,SIGNAL(toggled(bool)),this,SLOT(cb_fury_toggled(bool)));
1106  connect(cb_sadness,SIGNAL(toggled(bool)),this,SLOT(cb_sadness_toggled(bool)));
1107  connect(sb_str,SIGNAL(valueChanged(int)),this,SLOT(setStr(int)));
1108  connect(sb_str_bonus,SIGNAL(valueChanged(int)),this,SLOT(setStrBonus(int)));
1109  connect(sb_vit,SIGNAL(valueChanged(int)),this,SLOT(setVit(int)));
1110  connect(sb_vit_bonus,SIGNAL(valueChanged(int)),this,SLOT(setVitBonus(int)));
1111  connect(sb_mag,SIGNAL(valueChanged(int)),this,SLOT(setMag(int)));
1112  connect(sb_mag_bonus,SIGNAL(valueChanged(int)),this,SLOT(setMagBonus(int)));
1113  connect(sb_spi,SIGNAL(valueChanged(int)),this,SLOT(setSpi(int)));
1114  connect(sb_spi_bonus,SIGNAL(valueChanged(int)),this,SLOT(setSpiBonus(int)));
1115  connect(sb_dex,SIGNAL(valueChanged(int)),this,SLOT(setDex(int)));
1116  connect(sb_dex_bonus,SIGNAL(valueChanged(int)),this,SLOT(setDexBonus(int)));
1117  connect(sb_lck,SIGNAL(valueChanged(int)),this,SLOT(setLck(int)));
1118  connect(sb_lck_bonus,SIGNAL(valueChanged(int)),this,SLOT(setLckBonus(int)));
1119  connect(slider_limit,SIGNAL(valueChanged(int)),this,SLOT(setLimitBar(int)));
1120  connect(sb_total_exp,SIGNAL(valueChanged(int)),this,SLOT(Exp_Changed(int)));
1121  connect(slider_limit,SIGNAL(valueChanged(int)),lcd_limit_value,SLOT(display(int)));
1122  connect(list_limits,SIGNAL(clicked(QModelIndex)),this,SLOT(calc_limit_value(QModelIndex)));
1123  connect(sb_uses_limit_1_1,SIGNAL(valueChanged(int)),this,SLOT(setTimesused1(int))); //Vegeta_Ss4: Fixed limit timeused GUI
1124  connect(sb_uses_limit_2_1,SIGNAL(valueChanged(int)),this,SLOT(setTimesused2(int))); //Vegeta_Ss4: Fixed limit timeused GUI
1125  connect(sb_uses_limit_3_1,SIGNAL(valueChanged(int)),this,SLOT(setTimesused3(int))); //Vegeta_Ss4: Fixed limit timeused GUI
1126  connect(sb_limit_level,SIGNAL(valueChanged(int)),this,SLOT(setLimitLevel(int))); //Vegeta_Ss4: Fixed limitlevel GUI
1127  connect(combo_id,SIGNAL(currentIndexChanged(int)),this,SLOT(setId(int)));
1128  connect(weapon_selection,SIGNAL(currentIndexChanged(int)),this,SLOT(setWeapon(int)));
1129  connect(armor_selection,SIGNAL(currentIndexChanged(int)),this,SLOT(setArmor(int)));
1130  connect(accessory_selection,SIGNAL(currentIndexChanged(int)),this,SLOT(setAccessory(int)));
1131  connect(weapon_slot_1,SIGNAL(clicked()),this,SLOT(weapon_slot_1_clicked()));
1132  connect(weapon_slot_2,SIGNAL(clicked()),this,SLOT(weapon_slot_2_clicked()));
1133  connect(weapon_slot_3,SIGNAL(clicked()),this,SLOT(weapon_slot_3_clicked()));
1134  connect(weapon_slot_4,SIGNAL(clicked()),this,SLOT(weapon_slot_4_clicked()));
1135  connect(weapon_slot_5,SIGNAL(clicked()),this,SLOT(weapon_slot_5_clicked()));
1136  connect(weapon_slot_6,SIGNAL(clicked()),this,SLOT(weapon_slot_6_clicked()));
1137  connect(weapon_slot_7,SIGNAL(clicked()),this,SLOT(weapon_slot_7_clicked()));
1138  connect(weapon_slot_8,SIGNAL(clicked()),this,SLOT(weapon_slot_8_clicked()));
1139  connect(armor_slot_1,SIGNAL(clicked()),this,SLOT(armor_slot_1_clicked()));
1140  connect(armor_slot_2,SIGNAL(clicked()),this,SLOT(armor_slot_2_clicked()));
1141  connect(armor_slot_3,SIGNAL(clicked()),this,SLOT(armor_slot_3_clicked()));
1142  connect(armor_slot_4,SIGNAL(clicked()),this,SLOT(armor_slot_4_clicked()));
1143  connect(armor_slot_5,SIGNAL(clicked()),this,SLOT(armor_slot_5_clicked()));
1144  connect(armor_slot_6,SIGNAL(clicked()),this,SLOT(armor_slot_6_clicked()));
1145  connect(armor_slot_7,SIGNAL(clicked()),this,SLOT(armor_slot_7_clicked()));
1146  connect(armor_slot_8,SIGNAL(clicked()),this,SLOT(armor_slot_8_clicked()));
1147  connect(materia_edit,SIGNAL(ap_changed(qint32)),this,SLOT(matAp_changed(qint32)));
1148  connect(materia_edit,SIGNAL(id_changed(qint8)),this,SLOT(matId_changed(qint8)));
1149 }
1151 {
1152  disconnect(cb_idChanger,SIGNAL(toggled(bool)),this,SLOT(cb_idChanger_toggled(bool)));
1153  disconnect(sb_level,SIGNAL(valueChanged(int)),this,SLOT(Level_Changed(int)));
1154  disconnect(sb_curMp,SIGNAL(valueChanged(int)),this,SLOT(setCurMp(int)));
1155  disconnect(sb_curHp,SIGNAL(valueChanged(int)),this,SLOT(setCurHp(int)));
1156  disconnect(sb_maxMp,SIGNAL(valueChanged(int)),this,SLOT(setMaxMp(int)));
1157  disconnect(sb_maxHp,SIGNAL(valueChanged(int)),this,SLOT(setMaxHp(int)));
1158  disconnect(sb_base_hp,SIGNAL(valueChanged(int)),this,SLOT(setBaseHp(int)));
1159  disconnect(sb_base_mp,SIGNAL(valueChanged(int)),this,SLOT(setBaseMp(int)));
1160  disconnect(sb_kills,SIGNAL(valueChanged(int)),this,SLOT(setKills(int)));
1161  disconnect(line_name,SIGNAL(textChanged(QString)),this,SLOT(setName(QString)));
1162  disconnect(cb_front_row,SIGNAL(toggled(bool)),this,SLOT(setRow(bool)));
1163  disconnect(cb_fury,SIGNAL(toggled(bool)),this,SLOT(cb_fury_toggled(bool)));
1164  disconnect(cb_sadness,SIGNAL(toggled(bool)),this,SLOT(cb_sadness_toggled(bool)));
1165  disconnect(sb_str,SIGNAL(valueChanged(int)),this,SLOT(setStr(int)));
1166  disconnect(sb_str_bonus,SIGNAL(valueChanged(int)),this,SLOT(setStrBonus(int)));
1167  disconnect(sb_vit,SIGNAL(valueChanged(int)),this,SLOT(setVit(int)));
1168  disconnect(sb_vit_bonus,SIGNAL(valueChanged(int)),this,SLOT(setVitBonus(int)));
1169  disconnect(sb_mag,SIGNAL(valueChanged(int)),this,SLOT(setMag(int)));
1170  disconnect(sb_mag_bonus,SIGNAL(valueChanged(int)),this,SLOT(setMagBonus(int)));
1171  disconnect(sb_spi,SIGNAL(valueChanged(int)),this,SLOT(setSpi(int)));
1172  disconnect(sb_spi_bonus,SIGNAL(valueChanged(int)),this,SLOT(setSpiBonus(int)));
1173  disconnect(sb_dex,SIGNAL(valueChanged(int)),this,SLOT(setDex(int)));
1174  disconnect(sb_dex_bonus,SIGNAL(valueChanged(int)),this,SLOT(setDexBonus(int)));
1175  disconnect(sb_lck,SIGNAL(valueChanged(int)),this,SLOT(setLck(int)));
1176  disconnect(sb_lck_bonus,SIGNAL(valueChanged(int)),this,SLOT(setLckBonus(int)));
1177  disconnect(slider_limit,SIGNAL(valueChanged(int)),this,SLOT(setLimitBar(int)));
1178  disconnect(sb_total_exp,SIGNAL(valueChanged(int)),this,SLOT(Exp_Changed(int)));
1179  disconnect(slider_limit,SIGNAL(valueChanged(int)),lcd_limit_value,SLOT(display(int)));
1180  disconnect(list_limits,SIGNAL(clicked(QModelIndex)),this,SLOT(calc_limit_value(QModelIndex)));
1181  disconnect(sb_uses_limit_1_1,SIGNAL(valueChanged(int)),this,SLOT(setTimesused1(int))); //Vegeta_Ss4: Fixed limit timeused GUI
1182  disconnect(sb_uses_limit_2_1,SIGNAL(valueChanged(int)),this,SLOT(setTimesused2(int))); //Vegeta_Ss4: Fixed limit timeused GUI
1183  disconnect(sb_uses_limit_3_1,SIGNAL(valueChanged(int)),this,SLOT(setTimesused3(int))); //Vegeta_Ss4: Fixed limit timeused GUI
1184  disconnect(sb_limit_level,SIGNAL(valueChanged(int)),this,SLOT(setLimitLevel(int))); //Vegeta_Ss4: Fixed limitlevel GUI
1185  disconnect(combo_id,SIGNAL(currentIndexChanged(int)),this,SLOT(setId(int)));
1186  disconnect(weapon_selection,SIGNAL(currentIndexChanged(int)),this,SLOT(setWeapon(int)));
1187  disconnect(armor_selection,SIGNAL(currentIndexChanged(int)),this,SLOT(setArmor(int)));
1188  disconnect(accessory_selection,SIGNAL(currentIndexChanged(int)),this,SLOT(setAccessory(int)));
1189  disconnect(weapon_slot_1,SIGNAL(clicked()),this,SLOT(weapon_slot_1_clicked()));
1190  disconnect(weapon_slot_2,SIGNAL(clicked()),this,SLOT(weapon_slot_2_clicked()));
1191  disconnect(weapon_slot_3,SIGNAL(clicked()),this,SLOT(weapon_slot_3_clicked()));
1192  disconnect(weapon_slot_4,SIGNAL(clicked()),this,SLOT(weapon_slot_4_clicked()));
1193  disconnect(weapon_slot_5,SIGNAL(clicked()),this,SLOT(weapon_slot_5_clicked()));
1194  disconnect(weapon_slot_6,SIGNAL(clicked()),this,SLOT(weapon_slot_6_clicked()));
1195  disconnect(weapon_slot_7,SIGNAL(clicked()),this,SLOT(weapon_slot_7_clicked()));
1196  disconnect(weapon_slot_8,SIGNAL(clicked()),this,SLOT(weapon_slot_8_clicked()));
1197  disconnect(armor_slot_1,SIGNAL(clicked()),this,SLOT(armor_slot_1_clicked()));
1198  disconnect(armor_slot_2,SIGNAL(clicked()),this,SLOT(armor_slot_2_clicked()));
1199  disconnect(armor_slot_3,SIGNAL(clicked()),this,SLOT(armor_slot_3_clicked()));
1200  disconnect(armor_slot_4,SIGNAL(clicked()),this,SLOT(armor_slot_4_clicked()));
1201  disconnect(armor_slot_5,SIGNAL(clicked()),this,SLOT(armor_slot_5_clicked()));
1202  disconnect(armor_slot_6,SIGNAL(clicked()),this,SLOT(armor_slot_6_clicked()));
1203  disconnect(armor_slot_7,SIGNAL(clicked()),this,SLOT(armor_slot_7_clicked()));
1204  disconnect(armor_slot_8,SIGNAL(clicked()),this,SLOT(armor_slot_8_clicked()));
1205  disconnect(materia_edit,SIGNAL(ap_changed(qint32)),this,SLOT(matAp_changed(qint32)));
1206  disconnect(materia_edit,SIGNAL(id_changed(qint8)),this,SLOT(matId_changed(qint8)));
1207 }
1208 qint8 CharEditor::id(){return data.id;}
1209 qint8 CharEditor::level(){return data.level;}
1210 quint8 CharEditor::str(){return data.strength;}
1211 quint8 CharEditor::vit(){return data.vitality;}
1212 quint8 CharEditor::mag(){return data.magic;}
1213 quint8 CharEditor::spi(){return data.spirit;}
1214 quint8 CharEditor::dex(){return data.dexterity;}
1215 quint8 CharEditor::lck(){return data.luck;}
1216 quint8 CharEditor::strBonus(){return data.strength_bonus;}
1217 quint8 CharEditor::vitBonus(){return data.vitality_bonus;}
1218 quint8 CharEditor::magBonus(){return data.magic_bonus;}
1219 quint8 CharEditor::spiBonus(){return data.spirit_bonus;}
1220 quint8 CharEditor::dexBonus(){return data.dexterity_bonus;}
1221 quint8 CharEditor::lckBonus(){return data.luck_bonus;}
1222 qint8 CharEditor::limitLevel(){return data.limitlevel;}
1223 quint8 CharEditor::limitBar(){return data.limitbar;}
1224 QString CharEditor::name(){return line_name->text();}
1225 quint8 CharEditor::weapon(){return data.weapon;}
1226 quint8 CharEditor::armor(){return data.armor;}
1227 quint8 CharEditor::accessory(){return data.accessory;}
1228 quint16 CharEditor::curHp(){return data.curHP;}
1229 quint16 CharEditor::maxHp(){return data.maxHP;}
1230 quint16 CharEditor::curMp(){return data.curMP;}
1231 quint16 CharEditor::maxMp(){return data.maxMP;}
1232 quint16 CharEditor::kills(){return data.kills;}
1233 quint8 CharEditor::row(){return data.flags[1];}
1234 quint8 CharEditor::levelProgress(){return data.flags[2];}
1235 quint8 CharEditor::sadnessfury(){return data.flags[0];}
1236 quint16 CharEditor::limits(){return data.limits;}
1237 quint16 CharEditor::timesused1(){return data.timesused1;}
1238 quint16 CharEditor::timesused2(){return data.timesused2;}
1239 quint16 CharEditor::timesused3(){return data.timesused3;}
1240 quint16 CharEditor::baseHp(){return data.baseHP;}
1241 quint16 CharEditor::baseMp(){return data.baseMP;}
1242 quint32 CharEditor::exp(){return data.exp;}
1243 quint32 CharEditor::expNext(){return data.expNext;}
1244 materia CharEditor::char_materia(int mat){return data.materias[mat];}
1245 
1247 {
1248  if(quint32(exp) != data.exp)
1249  {
1250  setExp(exp);
1251  if(autolevel)
1252  {
1253  if( (data.exp>=Chars.totalExpForLevel(data.id,data.level)) || (data.exp<=Chars.totalExpForLevel(data.id,data.level-1)) )
1254  {
1255  int level=0;
1256  int prev_level = data.level;
1257  for (int i=level;i<99;i++)
1258  {
1259  if(data.exp>=Chars.totalExpForLevel(data.id,i)){level++;}
1260  }
1261  sb_level->blockSignals(true);
1262  sb_level->setValue(level);
1263  setLevel(level);
1264  sb_level->blockSignals(false);
1265  level_up(prev_level);
1266  }
1267  update_tnl_bar();
1268  }
1269  }
1270 }
1271 
1273 {
1274  //if(level != data.level)
1275  // {
1276  if(autolevel)
1277  {
1278  int prev_level=data.level;
1279  setLevel(level);
1280  if(level<=0){setExp(0);}
1281  else{setExp(Chars.totalExpForLevel(data.id,level-1));}
1282  sb_total_exp->blockSignals(true);
1283  sb_total_exp->setValue(data.exp);
1284  sb_total_exp->blockSignals(false);
1285  level_up(prev_level);
1286  update_tnl_bar();
1287  }
1288  else{setLevel(level);}
1289  // }
1290 }
1291 void CharEditor::setChar(FF7CHAR Chardata,QString Processed_Name)
1292 {
1293  disconnectAll();// remove all connections. safer signal blocking!
1294  data = Chardata;
1295  _name=Processed_Name;
1296  //more here like setting the gui stuff.
1297  lbl_avatar->setPixmap(Chars.pixmap(data.id).scaled(lbl_avatar->width(),lbl_avatar->height(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
1298  line_name->setText(_name);
1299  sb_level->setValue(data.level);
1300  sb_curMp->setValue(data.curMP);
1301  sb_curHp->setValue(data.curHP);
1302  sb_maxHp->setValue(data.maxHP);
1303  lbl_hp_max->setText(QString(" %1").arg(QString::number(data.maxHP)));
1304  sb_maxMp->setValue(data.maxMP);
1305  lbl_mp_max->setText(QString(" %1").arg(QString::number(data.maxMP)));
1306  sb_kills->setValue(data.kills);
1307  combo_id->setCurrentIndex(data.id);
1308  if(data.flags[0]==FF7Char::Fury){cb_fury->setChecked(Qt::Checked);}else{cb_fury->setChecked(Qt::Unchecked);}
1309  if(data.flags[0]==FF7Char::Sadness ){cb_sadness->setChecked(Qt::Checked);}else{cb_sadness->setChecked(Qt::Unchecked);}
1310  if(data.flags[1] ==FF7Char::FrontRow){cb_front_row->setChecked(Qt::Checked);}else{cb_front_row->setChecked(Qt::Unchecked);}
1311  sb_total_exp->setValue(data.exp);
1312  lbl_level_next->setText(tr("Next: %1").arg(QString::number(data.expNext)));
1313  slider_limit->setValue(data.limitbar);
1314  lcd_limit_value->display(int(data.limitbar));
1315  bar_tnl->setValue(data.flags[2]);
1316  sb_str->setValue(data.strength);
1317  sb_str_bonus->setValue(data.strength_bonus);
1318  sb_vit->setValue(data.vitality);
1319  sb_vit_bonus->setValue(data.vitality_bonus);
1320  sb_dex->setValue(data.dexterity);
1321  sb_dex_bonus->setValue(data.dexterity_bonus);
1322  sb_mag->setValue(data.magic);
1323  sb_mag_bonus->setValue(data.magic_bonus);
1324  sb_spi->setValue(data.spirit);
1325  sb_spi_bonus->setValue(data.spirit_bonus);
1326  sb_lck->setValue(data.luck);
1327  sb_lck_bonus->setValue(data.luck_bonus);
1328  sb_base_hp->setValue(data.baseHP);
1329  sb_base_mp->setValue(data.baseMP);
1330 
1332  {
1333  if(!advancedMode){cb_idChanger->setHidden(false);}
1334  else{cb_idChanger->setHidden(true);}
1335  if(data.id == FF7Char::CaitSith || data.id == FF7Char::YoungCloud){cb_idChanger->setText(tr("Young Cloud"));}
1336  if(data.id ==FF7Char::Vincent || data.id == FF7Char::Sephiroth){cb_idChanger->setText(tr("Sephiroth"));}
1337  if(data.id == FF7Char::CaitSith || data.id == FF7Char::Vincent){cb_idChanger->setCheckState(Qt::Unchecked);}
1338  if(data.id == FF7Char::YoungCloud || data.id == FF7Char::Sephiroth){cb_idChanger->setCheckState(Qt::Checked);}
1339  }
1340  else{cb_idChanger->setHidden(true);}
1341  //Process the limits.
1342  list_limits->clear();
1343  list_limits->addItems(Chars.limits(data.id));
1344  for(int i=0;i<7;i++)
1345  {//Process the List. Hide "" entries, and Check Limts Learned.
1346 
1347  if(list_limits->item(i)->text()=="") {list_limits->item(i)->setHidden(true);}
1348  else{list_limits->item(i)->setHidden(false);}
1349 
1350  if(data.limits & (1<< _limitbitarray[i])){list_limits->item(i)->setCheckState(Qt::Checked);} //Vegeta_Ss4: Fixed list_limits GUI
1351  else{list_limits->item(i)->setCheckState(Qt::Unchecked);}
1352  }
1353  list_limits->setFixedHeight(list_limits->sizeHintForRow(0)*list_limits->count() +list_limits->contentsMargins().top()+list_limits->contentsMargins().bottom());
1354  sb_uses_limit_1_1->setValue(data.timesused1); //Vegeta_Ss4: Fixed limit timeused GUI
1355  sb_uses_limit_2_1->setValue(data.timesused2); //Vegeta_Ss4: Fixed limit timeused GUI
1356  sb_uses_limit_3_1->setValue(data.timesused3); //Vegeta_Ss4: Fixed limit timeused GUI
1357  sb_limit_level->setValue(data.limitlevel); //Vegeta_Ss4: Fixed limitlevel GUI
1358 
1359  quint8 weapon = data.weapon;
1360  weapon_selection->clear();
1361 
1362  for(int i = Chars.weaponStartingId(data.id); i < Chars.numberOfWeapons(data.id)+Chars.weaponStartingId(data.id);i++)
1363  {
1364  weapon_selection->addItem(QPixmap::fromImage(Items.image(i)),Items.name(i));
1365  }
1366 
1367  data.weapon = weapon;
1368  if(data.id !=FF7Char::Sephiroth){weapon_selection->setCurrentIndex(data.weapon-Chars.weaponOffset(data.id));}
1369  else{weapon_selection->blockSignals(true);weapon_selection->setCurrentIndex(0);weapon_selection->blockSignals(false);}
1370 
1371  armor_selection->setCurrentIndex(data.armor);
1372 
1373  if(data.accessory != FF7Char::EmptyAccessory){accessory_selection->setCurrentIndex(data.accessory);}
1374  else{accessory_selection->setCurrentIndex(32);}
1375  //set the unknowns
1376  lcd_0x34->display(data.z_4[0]);
1377  lcd_0x35->display(data.z_4[1]);
1378  lcd_0x36->display(data.z_4[2]);
1379  lcd_0x37->display(data.z_4[3]);
1380  calc_stats();
1382  elemental_info();
1383  status_info();
1385  init_connections();//reconnect all
1386 }
1387 
1389 {
1390  if(data.level == level){return;}
1391  else
1392  {
1393  if(level<0){data.level=0;}
1394  else if(level>99){data.level=99;}
1395  else{data.level=level;}
1396  emit level_changed(data.level);
1397  }
1398 }
1400 {
1401  if(sad)
1402  {
1404  cb_fury->blockSignals(true);
1405  cb_fury->setChecked(Qt::Unchecked);
1406  cb_fury->blockSignals(false);
1407  }
1408  else{setSadnessFury(0);}
1409 }
1411 {
1412  if(fury)
1413  {
1415  cb_sadness->blockSignals(true);
1416  cb_sadness->setChecked(Qt::Unchecked);
1417  cb_sadness->blockSignals(false);
1418  }
1419  else{setSadnessFury(0);}
1420 }
1422 {
1423  if(data.maxHP == maxHp){return;}
1424  else
1425  {
1426  if(maxHp<0){data.maxHP=0;}
1427  else if(maxHp >32767){data.maxHP=32767;}
1428  else{data.maxHP=maxHp;}
1429  emit maxHp_changed(data.maxHP);
1430  }
1431 }
1433 {
1434  if(data.curHP == curHp){return;}
1435  else
1436  {
1437  if(curHp<0){data.curHP=0;}
1438  else if(curHp >32767){data.curHP=32767;}
1439  else{data.curHP=curHp;}
1440  emit curHp_changed(data.curHP);
1441  }
1442 }
1444 {
1445  if(data.maxMP == maxMp){return;}
1446  else
1447  {
1448  if(maxMp<0){data.maxMP=0;}
1449  else if(maxMp >32767){data.maxMP=32767;}
1450  else{data.maxMP=maxMp;}
1451  emit maxMp_changed(data.maxMP);
1452  }
1453 }
1455 {
1456  if(data.curMP == curMp){return;}
1457  else
1458  {
1459  if(curMp<0){data.curMP=0;}
1460  else if(curMp >32767){data.curMP=32767;}
1461  else{data.curMP=curMp;}
1462  emit curMp_changed(data.curMP);
1463  }
1464 }
1466 {
1467  if(data.kills == kills){return;}
1468  else
1469  {
1470  if(kills<0){data.kills=0;}
1471  else if(kills >65535){data.kills=65535;}
1472  else{data.kills=kills;}
1473  emit kills_changed(data.kills);
1474  }
1475 }
1477 {
1478  if(_name==name){return;}
1479  else
1480  {
1481  _name=name;
1482  emit name_changed(_name);
1483  }
1484 }
1485 void CharEditor::setId(int id)
1486 {
1487  if(data.id ==id){return;}
1488  else
1489  {
1490  if(id<0){data.id = 0;}
1491  else if(id>0x0B){data.id=FF7Char::Empty;}
1492  else{data.id = id;}
1493  setChar(data,line_name->text());
1494  emit id_changed(data.id);
1495  }
1496 }
1497 void CharEditor::setStr(int strength)
1498 {
1499  if(data.strength ==strength){return;}
1500  else
1501  {
1502  if(strength<0){data.strength=0;}
1503  else if(strength>0xFF){data.strength=0xFF;}
1504  else{data.strength = strength;}
1505  emit str_changed(data.strength);
1506  calc_stats();
1507  }
1508 }
1509 void CharEditor::setVit(int vitality)
1510 {
1511  if(data.vitality ==vitality){return;}
1512  else
1513  {
1514  if(vitality<0){data.vitality = 0;}
1515  else if(vitality>0xFF){data.vitality=0xFF;}
1516  else{data.vitality = vitality;}
1517  emit vit_changed(data.vitality);
1518  calc_stats();
1519  }
1520 }
1521 void CharEditor::setMag(int magic)
1522 {
1523  if(data.magic ==magic){return;}
1524  else
1525  {
1526  if(magic<0){data.magic = 0;}
1527  else if(magic>0xFF){data.magic=0xFF;}
1528  else{data.magic = magic;}
1529  emit mag_changed(data.magic);
1530  calc_stats();
1531  }
1532 }
1533 void CharEditor::setSpi(int spirit)
1534 {
1535  if(data.spirit ==spirit){return;}
1536  else
1537  {
1538  if(spirit<0){data.spirit = 0;}
1539  else if(spirit>0xFF){data.spirit=0xFF;}
1540  else{data.spirit = spirit;}
1541  emit spi_changed(data.spirit);
1542  calc_stats();
1543  }
1544 }
1545 void CharEditor::setDex(int dexterity)
1546 {
1547  if(data.dexterity ==dexterity){return;}
1548  else
1549  {
1550  if(dexterity<0){data.dexterity = 0;}
1551  else if(dexterity>0xFF){data.dexterity=0xFF;}
1552  else{data.dexterity = dexterity;}
1553  emit dex_changed(data.dexterity);
1554  calc_stats();
1555  }
1556 }
1557 void CharEditor::setLck(int luck)
1558 {
1559  if(data.luck ==luck){return;}
1560  else
1561  {
1562  if(luck<0){data.luck = 0;}
1563  else if(luck>0xFF){data.luck=0xFF;}
1564  else{data.luck = luck;}
1565  emit lck_changed(data.luck);
1566  calc_stats();
1567  }
1568 }
1569 void CharEditor::setStrBonus(int strength_bonus)
1570 {
1571  if(data.strength_bonus ==strength_bonus){return;}
1572  else
1573  {
1574  if(strength_bonus<0){data.strength_bonus = 0;}
1575  else if(strength_bonus>0xFF){data.strength_bonus=0xFF;}
1576  else{data.strength_bonus = strength_bonus;}
1577  emit strBonus_changed(data.strength_bonus);
1578  calc_stats();
1579  }
1580 }
1581 void CharEditor::setVitBonus(int vitality_bonus)
1582 {
1583  if(data.vitality_bonus ==vitality_bonus){return;}
1584  else
1585  {
1586  if(vitality_bonus<0){data.vitality_bonus = 0;}
1587  else if(vitality_bonus>0xFF){data.vitality_bonus=0xFF;}
1588  else{data.vitality_bonus = vitality_bonus;}
1589  emit vitBonus_changed(data.vitality_bonus);
1590  calc_stats();
1591  }
1592 }
1593 void CharEditor::setMagBonus(int magic_bonus)
1594 {
1595  if(data.magic_bonus ==magic_bonus){return;}
1596  else
1597  {
1598  if(magic_bonus<0){data.magic_bonus = 0;}
1599  else if(magic_bonus>0xFF){data.magic_bonus=0xFF;}
1600  else{data.magic_bonus = magic_bonus;}
1601  emit magBonus_changed(data.magic_bonus);
1602  calc_stats();
1603  }
1604 }
1605 void CharEditor::setSpiBonus(int spirit_bonus)
1606 {
1607  if(data.spirit_bonus ==spirit_bonus){return;}
1608  else
1609  {
1610  if(spirit_bonus<0){data.spirit_bonus = 0;}
1611  else if(spirit_bonus>0xFF){data.spirit_bonus=0xFF;}
1612  else{data.spirit_bonus = spirit_bonus;}
1613  emit spiBonus_changed(data.spirit_bonus);
1614  calc_stats();
1615  }
1616 }
1617 void CharEditor::setDexBonus(int dexterity_bonus)
1618 {
1619  if(data.dexterity_bonus ==dexterity_bonus){return;}
1620  else
1621  {
1622  if(dexterity_bonus<0){data.dexterity_bonus = 0;}
1623  else if(dexterity_bonus>0xFF){data.dexterity_bonus=0xFF;}
1624  else{data.dexterity_bonus = dexterity_bonus;}
1625  emit dexBonus_changed(data.dexterity_bonus);
1626  calc_stats();
1627  }
1628 }
1629 void CharEditor::setLckBonus(int luck_bonus)
1630 {
1631  if(data.luck_bonus ==luck_bonus){return;}
1632  else
1633  {
1634  if(luck_bonus<0){data.luck_bonus = 0;}
1635  else if(luck_bonus>0xFF){data.luck_bonus=0xFF;}
1636  else{data.luck_bonus = luck_bonus;}
1637  emit lckBonus_changed(data.luck_bonus);
1638  calc_stats();
1639  }
1640 }
1641 void CharEditor::setLimitLevel(int limitlevel)
1642 {
1643  if(data.limitlevel ==limitlevel){return;}
1644  else
1645  {
1646  if(limitlevel<0){data.limitlevel = 0;}
1647  else if(limitlevel>4){data.limitlevel=4;}
1648  else{data.limitlevel = limitlevel;}
1649  emit limitLevel_changed(data.limitlevel);
1650  }
1651 }
1652 void CharEditor::setLimitBar(int limitbar)
1653 {
1654  if(data.limitbar ==limitbar){return;}
1655  else
1656  {
1657  if(limitbar<0){data.limitbar = 0;}
1658  else if(limitbar>0xFF){data.limitbar=0xFF;}
1659  else{data.limitbar = limitbar;}
1660  emit limitBar_changed(data.limitbar);
1661  }
1662 }
1664 {
1665  if(weapon == (data.weapon-Chars.weaponOffset(data.id))){return;}
1666  else
1667  {
1668  if(weapon<0){data.weapon=Chars.weaponOffset(data.id);}
1669  else if(weapon>Chars.numberOfWeapons(data.id)){data.weapon=Chars.numberOfWeapons(data.id)+Chars.weaponOffset(data.id);}
1670  else {data.weapon=weapon+Chars.weaponOffset(data.id);}
1671  emit weapon_changed(data.weapon);
1672  //Update the Widget.
1673  elemental_info();
1674  status_info();
1676  calc_stats();
1677  }
1678 }
1680 {
1681  if(armor == data.armor){return;}
1682  else
1683  {
1684  if(armor<0){data.armor=0;}
1685  else if(armor>32){data.armor=FF7Char::EmptyArmor;}
1686  else {data.armor= armor; }
1687  emit armor_changed(data.armor);
1688  elemental_info();
1689  status_info();
1691  calc_stats();
1692  }
1693 }
1695 {
1696  if(accessory == data.accessory){return;}
1697  else
1698  {
1699  if(accessory<0){data.accessory=0;}
1700  else if(accessory>32){data.accessory=FF7Char::EmptyAccessory;}
1701  else {data.accessory = accessory;}
1702  emit accessory_changed(data.accessory);
1703  elemental_info();
1704  status_info();
1705  calc_stats();
1706  }
1707 }
1708 void CharEditor::setSadnessFury(int sad_fury)
1709 {
1710  if(sad_fury == data.flags[0]){return;}
1711  else
1712  {
1713  if(sad_fury==FF7Char::Fury){data.flags[0]=FF7Char::Fury;}
1714  else if( sad_fury==FF7Char::Sadness ){data.flags[0]=FF7Char::Sadness;}
1715  else{data.flags[0]=0;}
1716  emit sadnessfury_changed(data.flags[0]);
1717  }
1718 
1719 }
1720 void CharEditor::setRow(bool front_row)
1721 {
1722  if( (front_row) && (data.flags[1]==FF7Char::FrontRow) ){return;}
1723  else if((!front_row) && (data.flags[1]==FF7Char::BackRow)){return;}
1724  else
1725  {
1726  if(front_row){data.flags[1]=FF7Char::FrontRow;}
1727  else{data.flags[1]=FF7Char::BackRow;}
1728  emit row_changed(data.flags[1]);
1729  }
1730 }
1731 
1732 void CharEditor::setLevelProgress(int level_progress)
1733 {//Level progress bar (0-63) game ingores values <4 4-63 are visible as "progress"
1734  if(level_progress ==data.flags[2]){return;}
1735  else
1736  {
1737  if(level_progress<0){data.flags[2]=0;}
1738  else if(level_progress >63){data.flags[2]=63;}
1739  else{data.flags[2]=level_progress;}
1740  emit levelProgress_changed(data.flags[2]);
1741  }
1742 }
1743 
1745 {
1746  if(limits ==data.limits){return;}
1747  else
1748  {
1749  if(limits <0){data.limits=0;}
1750  else if(limits>32767){data.limits=32767;}
1751  else {data.limits = limits;}
1752  emit limits_changed(data.limits);
1753  }
1754 }
1755 void CharEditor::setTimesused1(int timesused)
1756 {
1757  if(timesused ==data.timesused1){return;}
1758  else
1759  {
1760  if(timesused <0){data.timesused1=0;}
1761  else if(timesused>65535){data.timesused1=65535;}
1762  else{data.timesused1 = timesused;}
1763  emit(timesused1_changed(data.timesused1));
1764  }
1765 }
1766 
1767 void CharEditor::setTimesused2(int timesused)
1768 {
1769  if(timesused ==data.timesused2){return;}
1770  else
1771  {
1772  if(timesused <0){data.timesused2=0;}
1773  else if(timesused>65535){data.timesused2=65535;}
1774  else{data.timesused2 = timesused;}
1775  emit(timesused2_changed(data.timesused2));
1776  }
1777 }
1778 void CharEditor::setTimesused3(int timesused)
1779 {
1780  if(timesused ==data.timesused3){return;}
1781  else
1782  {
1783  if(timesused <0){data.timesused3=0;}
1784  else if(timesused>65535){data.timesused3=65535;}
1785  else{data.timesused3 = timesused;}
1786  emit(timesused3_changed(data.timesused3));
1787  }
1788 }
1790 {
1791  if(data.baseHP == baseHp){return;}
1792  else
1793  {
1794  if(baseHp<0){data.baseHP=0;}
1795  else if(baseHp >32767){data.baseHP=32767;}
1796  else{data.baseHP=baseHp;}
1797  emit baseHp_changed(data.baseHP);
1798  calc_stats();
1799  }
1800 }
1802 {
1803  if(data.baseMP == baseMp){return;}
1804  else
1805  {
1806  if(baseMp<0){data.baseMP=0;}
1807  else if(baseMp >32767){data.baseMP=32767;}
1808  else{data.baseMP=baseMp;}
1809  emit baseMp_changed(data.baseMP);
1810  calc_stats();
1811  }
1812 }
1814 {
1815  if(data.exp == quint32(exp)){return;}
1816  else
1817  {
1818  if(exp<0){data.exp=0;}
1819  else{data.exp=exp;}
1820  emit exp_changed(data.exp);
1821  }
1822 }
1824 {
1825  if(data.expNext == quint32(expNext)){return;}
1826  else
1827  {
1828  if(expNext<0){data.expNext=0;}
1829  else{data.expNext=expNext;}
1830  emit expNext_changed(data.expNext);
1831  }
1832 }
1833 
1834 void CharEditor::calc_limit_value(QModelIndex item)
1835 {
1836  int row = item.row();
1837  int limits = data.limits;
1838  if(list_limits->item(row)->checkState()==Qt::Checked){limits |= (1<< _limitbitarray[row]);}
1839  else{limits &= ~(1<<_limitbitarray[row]);}
1840  setLimits(limits);
1841 }
1842 void CharEditor::setAutoLevel(bool ans){autolevel=ans;if(ans){Level_Changed(data.level);}}//used to turn off auto char leveling
1844 void CharEditor::setAutoStatCalc(bool ans){autostatcalc=ans;calc_stats();}//Toggle stat calculation
1847 void CharEditor::setAdvancedMode(bool new_advancedMode)
1848 {
1849  advancedMode = new_advancedMode;
1850  unknown_box->setVisible(advancedMode);
1851  combo_id->setVisible(advancedMode);
1852  sb_maxHp->setVisible(advancedMode);
1853  sb_maxMp->setVisible(advancedMode);
1854  lbl_hp_max->setVisible(!advancedMode);
1855  lbl_mp_max->setVisible(!advancedMode);
1856  //if viewing cait/vincent/y.cloud or sephiroth hid the checkbox for simple id changing.
1858 }
1860 {
1861  editable = edit;
1862  if(editable){
1863  // unlock all items, do this better later on.
1864  this->setEnabled(true);
1865  }
1866  else{
1867  //lock all items
1868  this->setEnabled(false);
1869  }
1870 }
1871 bool CharEditor::Editable(void){return editable;}
1872 
1874 {
1875  int str_total=0;
1876  int vit_total=0;
1877  int spi_total=0;
1878  int dex_total=0;
1879  int mag_total=0;
1880  int lck_total=0;
1881 
1882  int str_bonus=0;
1883  int vit_bonus=0;
1884  int spi_bonus=0;
1885  int dex_bonus=0;
1886  int mag_bonus=0;
1887  int lck_bonus=0;
1888  int hp_bonus=0;
1889  int mp_bonus=0;
1890 
1891  str_total = data.strength + data.strength_bonus;
1892  vit_total= data.vitality + data.vitality_bonus;
1893  dex_total = data.dexterity + data.dexterity_bonus;
1894  spi_total = data.spirit + data.spirit_bonus;
1895  mag_total = data.magic + data.magic_bonus;
1896  lck_total = data.luck + data.luck_bonus;
1897 
1898  if(autostatcalc)
1899  {
1900  //add equipment bonuses
1901  //Weapon
1902  str_bonus +=Items.statSTR(data.weapon + 128 );
1903  vit_bonus +=Items.statVIT(data.weapon + 128);
1904  dex_bonus +=Items.statDEX(data.weapon + 128);
1905  spi_bonus +=Items.statSPI(data.weapon + 128);
1906  mag_bonus +=Items.statMAG(data.weapon + 128);
1907  lck_bonus +=Items.statLCK(data.weapon + 128);
1908  hp_bonus+=Items.statHP(data.weapon + 128);
1909  mp_bonus+=Items.statMP(data.weapon + 128);
1910  QString title;
1911  title.append(tr("AP:x%1").arg(QString::number(Items.materiaGrowthRate(data.weapon + 128))));
1912 
1913  if(Items.statSTR(data.weapon + 128)!=0)
1914  {
1915  title.append(tr(" Str:+%1").arg(QString::number(Items.statSTR(data.weapon + 128))));
1916  }
1917  if(Items.statVIT(data.weapon + 128)!=0)
1918  {
1919  title.append(tr(" Vit:+%1").arg(QString::number(Items.statVIT(data.weapon + 128))));
1920  }
1921  if(Items.statDEX(data.weapon + 128)!=0)
1922  {
1923  title.append(tr(" Dex:+%1").arg(QString::number(Items.statDEX(data.weapon + 128))));
1924  }
1925  if(Items.statSPI(data.weapon + 128)!=0)
1926  {
1927  title.append(tr(" Spi:+%1").arg(QString::number(Items.statSPI(data.weapon + 128))));
1928  }
1929  if(Items.statMAG(data.weapon + 128)!=0)
1930  {
1931  title.append(tr(" Mag:+%1").arg(QString::number(Items.statMAG(data.weapon + 128))));
1932  }
1933  if(Items.statLCK(data.weapon + 128)!=0)
1934  {
1935  title.append(tr(" Lck:+%1").arg(QString::number(Items.statLCK(data.weapon + 128))));
1936  }
1937  if(Items.statHP(data.weapon + 128)!=0)
1938  {
1939  title.append(tr(" Hp:+%1%").arg(QString::number(Items.statHP(data.weapon + 128))));
1940  }
1941  if(Items.statMP(data.weapon + 128)!=0)
1942  {
1943  title.append(tr(" Mp:+%1%").arg(QString::number(Items.statMP(data.weapon + 128))));
1944  }
1945  lblWeaponStats->setText(title);
1946  //Armor
1947  str_bonus += Items.statSTR(data.armor + 256);
1948  vit_bonus +=Items.statVIT(data.armor + 256);
1949  dex_bonus +=Items.statDEX(data.armor + 256);
1950  spi_bonus +=Items.statSPI(data.armor + 256);
1951  mag_bonus +=Items.statMAG(data.armor + 256);
1952  lck_bonus +=Items.statLCK(data.armor+ 256);
1953  hp_bonus+=Items.statHP(data.armor + 256);
1954  mp_bonus+=Items.statMP(data.armor + 256);
1955  title.clear();
1956  title.append(tr("AP:x%1").arg(QString::number(Items.materiaGrowthRate(data.armor + 256))));
1957  if(Items.statSTR(data.armor + 256) != 0)
1958  {
1959  title.append(tr(" Str:+%1").arg(QString::number(Items.statSTR(data.armor + 256))));
1960  }
1961  if(Items.statVIT(data.armor + 256) !=0)
1962  {
1963  title.append(tr(" Vit:+%1").arg(QString::number(Items.statVIT(data.armor + 256))));
1964  }
1965  if(Items.statDEX(data.armor + 256)!=0)
1966  {
1967  title.append(tr(" Dex:+%1").arg(QString::number(Items.statDEX(data.armor + 256))));
1968  }
1969  if(Items.statSPI(data.armor + 256)!=0)
1970  {
1971  title.append(tr(" Spi:+%1").arg(QString::number(Items.statSPI(data.armor + 256))));
1972  }
1973  if(Items.statMAG(data.armor + 256)!=0)
1974  {
1975  title.append(tr(" Mag:+%1").arg(QString::number(Items.statMAG(data.armor + 256))));
1976  }
1977  if(Items.statLCK(data.armor + 256)!=0)
1978  {
1979  title.append(tr(" Lck:+%1").arg(QString::number(Items.statLCK(data.armor + 256))));
1980  }
1981  if(Items.statHP(data.armor + 256)!=0)
1982  {
1983  title.append(tr(" Hp:+%1%").arg(QString::number(Items.statHP(data.armor + 256))));
1984  }
1985  if(Items.statMP(data.armor + 256)!=0)
1986  {
1987  title.append(tr(" Mp:+%1%").arg(QString::number(Items.statMP(data.armor + 256))));
1988  }
1989  lblArmorStats->setText(title);
1990  //Accessory
1991  if(data.accessory <32)
1992  {
1993  str_bonus += Items.statSTR(data.accessory + 288);
1994  vit_bonus +=Items.statVIT(data.accessory + 288);
1995  dex_bonus +=Items.statDEX(data.accessory + 288);
1996  spi_bonus +=Items.statSPI(data.accessory + 288);
1997  mag_bonus +=Items.statMAG(data.accessory + 288);
1998  lck_bonus +=Items.statLCK(data.accessory+ 288);
1999  hp_bonus+=Items.statHP(data.accessory + 288);
2000  mp_bonus+=Items.statMP(data.accessory + 288);
2001  title.clear();
2002  title.append(tr("Accessory"));
2003  if(Items.statSTR(data.accessory + 288) != 0)
2004  {
2005  title.append(tr(" Str:+%1").arg(QString::number(Items.statSTR(data.accessory + 288))));
2006  }
2007  if(Items.statVIT(data.accessory + 288) !=0)
2008  {
2009  title.append(tr(" Vit:+%1").arg(QString::number(Items.statVIT(data.accessory + 288))));
2010  }
2011  if(Items.statDEX(data.accessory + 288)!=0)
2012  {
2013  title.append(tr(" Dex:+%1").arg(QString::number(Items.statDEX(data.accessory + 288))));
2014  }
2015  if(Items.statSPI(data.accessory + 288)!=0)
2016  {
2017  title.append(tr(" Spi:+%1").arg(QString::number(Items.statSPI(data.accessory + 288))));
2018  }
2019  if(Items.statMAG(data.accessory + 288)!=0)
2020  {
2021  title.append(tr(" Mag:+%1").arg(QString::number(Items.statMAG(data.accessory + 288))));
2022  }
2023  if(Items.statLCK(data.accessory + 288)!=0)
2024  {
2025  title.append(tr(" Lck:+%1").arg(QString::number(Items.statLCK(data.accessory + 288))));
2026  }
2027  if(Items.statHP(data.accessory + 288)!=0)
2028  {
2029  title.append(tr(" Hp:+%1%").arg(QString::number(Items.statHP(data.accessory + 288))));
2030  }
2031  if(Items.statMP(data.accessory + 288)!=0)
2032  {
2033  title.append(tr(" Mp:+%1%").arg(QString::number(Items.statMP(data.accessory + 288))));
2034  }
2035  accessory_box->setTitle(title);
2036  }
2037  else{title.clear();title.append(tr("Accessory"));accessory_box->setTitle(title);}
2038  //process materia
2039  for(int i=0;i<16;i++)
2040  {
2041  if(data.materias[i].id!=FF7Materia::EmptyId)
2042  {
2043  bool add=true;
2044  int level=0;
2045  int aptemp = Materias.ap2num(data.materias[i].ap);
2046  for(int m=0; m<Materias.levels(data.materias[i].id);m++){if(aptemp >= Materias.ap(data.materias[i].id,m)){level++;}}
2047 
2048  switch(i)
2049  {
2050  case 0: if(weapon_slot_1->isHidden()){add=false;};break;
2051  case 1: if(weapon_slot_2->isHidden()){add=false;}break;
2052  case 2: if(weapon_slot_3->isHidden()){add=false;}break;
2053  case 3: if(weapon_slot_4->isHidden()){add=false;}break;
2054  case 4: if(weapon_slot_5->isHidden()){add=false;}break;
2055  case 5: if(weapon_slot_6->isHidden()){add=false;}break;
2056  case 6: if(weapon_slot_7->isHidden()){add=false;}break;
2057  case 7: if(weapon_slot_8->isHidden()){add=false;}break;
2058  case 8: if(armor_slot_1->isHidden()){add=false;}break;
2059  case 9: if(armor_slot_2->isHidden()){add=false;}break;
2060  case 10:if(armor_slot_3->isHidden()){add=false;}break;
2061  case 11:if(armor_slot_4->isHidden()){add=false;}break;
2062  case 12:if(armor_slot_5->isHidden()){add=false;}break;
2063  case 13:if(armor_slot_6->isHidden()){add=false;}break;
2064  case 14:if(armor_slot_7->isHidden()){add=false;}break;
2065  case 15:if(armor_slot_8->isHidden()){add=false;}break;
2066  }
2067  if(add)
2068  {
2069  // no special materia that affects these stats.
2070  str_bonus +=Materias.statSTR(data.materias[i].id);
2071  vit_bonus +=Materias.statVIT(data.materias[i].id);
2072  spi_bonus +=Materias.statSPI(data.materias[i].id);
2073  //Show in Percentage.
2074  if(data.materias[i].id == 0x00){mp_bonus +=(10*level);} else{mp_bonus+=Materias.statMP(data.materias[i].id);}
2075  if(data.materias[i].id == 0x01){hp_bonus += (10*level);} else{hp_bonus+=Materias.statHP(data.materias[i].id);}
2076  //show exact numbers
2077  if(data.materias[i].id == 0x02){dex_bonus += data.dexterity * (0.01*(level*10));} else{dex_bonus +=Materias.statDEX(data.materias[i].id);}
2078  if(data.materias[i].id ==0x03){ mag_bonus += data.magic * (0.01*(level*10));} else{mag_bonus +=Materias.statMAG(data.materias[i].id);}
2079  if(data.materias[i].id ==0x04){ lck_bonus += data.luck * (0.01*(level*10));} else{lck_bonus +=Materias.statLCK(data.materias[i].id);}
2080  }// end of add case.
2081  }
2082  }
2083 
2084  }
2085 
2086  lbl_str_mat_bonus->setText(QString::number(str_bonus));
2087  lbl_vit_mat_bonus->setText(QString::number(vit_bonus));
2088  lbl_dex_mat_bonus->setText(QString::number(dex_bonus));
2089  lbl_spi_mat_bonus->setText(QString::number(spi_bonus));
2090  lbl_mag_mat_bonus->setText(QString::number(mag_bonus));
2091  lbl_lck_mat_bonus->setText(QString::number(lck_bonus));
2092 
2093  str_total+=str_bonus;
2094  vit_total+= vit_bonus;
2095  dex_total+= dex_bonus;
2096  spi_total+= spi_bonus;
2097  mag_total+= mag_bonus;
2098  lck_total+= lck_bonus;
2099 
2100  if(str_total < 256)lbl_str_total->setText(QString::number(str_total));
2101  else{lbl_str_total->setText(QString::number(255));}
2102 
2103  if(vit_total < 256)lbl_vit_total->setText(QString::number(vit_total));
2104  else{lbl_vit_total->setText(QString::number(255));}
2105 
2106  if(dex_total < 256)lbl_dex_total->setText(QString::number(dex_total));
2107  else{lbl_dex_total->setText(QString::number(255));}
2108 
2109  if(spi_total < 256)lbl_spi_total->setText(QString::number(spi_total));
2110  else{lbl_spi_total->setText(QString::number(255));}
2111 
2112  if(mag_total < 256)lbl_mag_total->setText(QString::number(mag_total));
2113  else{lbl_mag_total->setText(QString::number(255));}
2114 
2115  if(lck_total < 256)lbl_lck_total->setText(QString::number(lck_total));
2116  else{lbl_lck_total->setText(QString::number(255));}
2117 
2118  if(hp_bonus>0){lbl_base_hp_bonus->setText(QString(" +%2 (+%1%)").arg(QString::number(hp_bonus),QString::number(int(data.baseHP *(hp_bonus*0.01)))));}
2119  else if(hp_bonus<0){lbl_base_hp_bonus->setText(QString(" %2 (%1%)").arg(QString::number(hp_bonus),QString::number(int(data.baseHP *(hp_bonus*0.01)))));}
2120  else{lbl_base_hp_bonus->setText(QString(""));}
2121 
2122  if(mp_bonus>0){lbl_base_mp_bonus->setText(QString(" +%2 (+%1%)").arg(QString::number(mp_bonus),QString::number(int(data.baseMP *(mp_bonus*0.01)))));}
2123  else if(mp_bonus<0){lbl_base_mp_bonus->setText(QString(" %2 (%1%)").arg(QString::number(mp_bonus),QString::number(int(data.baseMP *(mp_bonus*0.01)))));}
2124  else{lbl_base_mp_bonus->setText(QString(""));}
2125 
2126  sb_maxHp->setValue(data.baseHP + (data.baseHP * (hp_bonus*.01)));
2127  lbl_hp_max->setText(QString(" %1").arg(QString::number(sb_maxHp->value())));
2128  sb_maxMp->setValue(data.baseMP + (data.baseMP *(mp_bonus *.01)));
2129  lbl_mp_max->setText(QString(" %1").arg(QString::number(sb_maxMp->value())));
2130 
2131 }
2132 
2133 void CharEditor::level_up(int pre_level)
2134 {
2135  if(pre_level < data.level)
2136  {//level up
2137  for(int i=pre_level;i<data.level;i++)
2138  {// for statGain stat guide, 0=str; 1=vit;2=mag;3=spr;4=dex;5=lck;6=basehp;7basemp also use id incase of mods that could move a char.
2139  sb_str->setValue(data.strength + Chars.statGain(data.id,0,data.strength,i,i+1));
2140  sb_vit->setValue(data.vitality + Chars.statGain(data.id,1,data.vitality,i,i+1));
2141  sb_mag->setValue(data.magic + Chars.statGain(data.id,2,data.magic,i,i+1));
2142  sb_spi->setValue(data.spirit + Chars.statGain(data.id,3,data.spirit,i,i+1));
2143  sb_dex->setValue(data.dexterity + Chars.statGain(data.id,4,data.dexterity,i,i+1));
2144  sb_lck->setValue(data.luck + Chars.statGain(data.id,5,data.luck,i,i+1));
2145  sb_base_hp->setValue(data.baseHP + Chars.statGain(data.id,6,data.baseHP,i,i+1));
2146  sb_base_mp->setValue(data.baseMP + Chars.statGain(data.id,7,data.baseMP,i,i+1));
2147  }
2148  }
2149  else if(pre_level > data.level)
2150  {//level down
2151  for(int i=pre_level;i>data.level;i--)
2152  {// for statGain stat guide, 0=str; 1=vit; 2=mag; 3=spr; 4=dex; 5=lck; 6=basehp; 7basemp
2153  sb_str->setValue(data.strength - Chars.statGain(data.id,0,data.strength,i,i-1));
2154  sb_vit->setValue(data.vitality - Chars.statGain(data.id,1,data.vitality,i,i-1));
2155  sb_mag->setValue(data.magic - Chars.statGain(data.id,2,data.magic,i,i-1));
2156  sb_spi->setValue(data.spirit - Chars.statGain(data.id,3,data.spirit,i,i-1));
2157  sb_dex->setValue(data.dexterity - Chars.statGain(data.id,4,data.dexterity,i,i-1));
2158  sb_lck->setValue(data.luck - Chars.statGain(data.id,5,data.luck,i,i-1));
2159  sb_base_hp->setValue(data.baseHP - Chars.statGain(data.id,6,data.baseHP,i,i-1));
2160  sb_base_mp->setValue(data.baseMP - Chars.statGain(data.id,7,data.baseMP,i,i-1));
2161  }
2162  }
2163  calc_stats();
2164 }
2166 {
2167  if(data.level!=99)
2168  {
2169  setExpNext(Chars.totalExpForLevel(data.id,data.level)- data.exp);
2170  if(data.level>0)
2171  {
2172  setLevelProgress(((Chars.tnlForLevel(data.id,data.level)-data.expNext)*62)/Chars.tnlForLevel(data.id,data.level));
2173  }
2174  }
2175  else
2176  {
2177  setExpNext(0);
2178  setLevelProgress(0x3D);
2179  }
2180  bar_tnl->setValue(data.flags[2]);
2181  if(bar_tnl->value()<4){bar_tnl->setValue(0);}//ff7 ingores the value if its <4 (but we don't save this)
2182  lbl_level_next->setText(tr("Next: %1").arg(QString::number(data.expNext)));
2183 }
2184 
2186 {
2187  int y= elemental_effects->contentsMargins().top() +elemental_effects->contentsMargins().bottom();
2188  bool show=false;
2189  int item_id = 0;
2190  QString m_effect;
2191  elemental_effects->clear();
2192  for(int r=0;r<3;r++)
2193  {
2194  switch (r)
2195  {
2196  case 0:item_id = data.weapon +128; break;
2197  case 1:item_id = data.armor +256; break;
2198  case 2:item_id = data.accessory +288; break;
2199  }
2200  if(item_id <0 || item_id >319){}
2201  else
2202  {
2203  for(int i=0;i<14;i++)
2204  {
2205  QString effect;
2206  int element=0;
2207  switch(i)
2208  {
2209  case 0: element=Items.elementRestoration(item_id); effect.append(tr("Restoration"));break;
2210  case 1: element=Items.elementFire(item_id); effect.append(tr("Fire")); break;
2211  case 2: element=Items.elementCold(item_id); effect.append(tr("Cold")); break;
2212  case 3: element=Items.elementLightning(item_id); effect.append(tr("Lightning")); break;
2213  case 4: element=Items.elementEarth(item_id); effect.append(tr("Earth")); break;
2214  case 5: element=Items.elementWind(item_id); effect.append(tr("Wind")); break;
2215  case 6: element=Items.elementWater(item_id); effect.append(tr("Water")); break;
2216  case 7: element=Items.elementGravity(item_id); effect.append(tr("Gravity")); break;
2217  case 8: element=Items.elementHoly(item_id); effect.append(tr("Holy")); break;
2218  case 9: element=Items.elementPoison(item_id); effect.append(tr("Poison")); break;
2219  case 10: element=Items.elementCut(item_id); effect.append(tr("Cut")); break;
2220  case 11: element=Items.elementShoot(item_id); effect.append(tr("Shoot")); break;
2221  case 12: element=Items.elementPunch(item_id); effect.append(tr("Punch")); break;
2222  case 13: element=Items.elementHit(item_id); effect.append(tr("Hit")); break;
2223  }
2224  switch(element)
2225  {
2226  case -3: effect.prepend(tr("Absorb:"));break;
2227  case -2: effect.prepend(tr("Nullify:"));break;
2228  case -1: effect.prepend(tr("Halve:"));break;
2229  case 0: effect.clear();break;
2230  case +1: effect.prepend(tr("Attack:"));break;
2231  }
2232  if(!effect.isNull() && !m_effect.contains(effect,Qt::CaseSensitive))
2233  {
2234  m_effect.append(effect);
2235  elemental_effects->addItem(effect);
2236  show=true; y+=elemental_effects->sizeHintForRow(0);
2237  }
2238  }//end of for Loop
2239  elemental_effects->setFixedHeight(y);
2240  elemental_box->setFixedSize(205*scale,y +elemental_box->contentsMargins().top()+elemental_box->contentsMargins().bottom());
2241  }//end of else.
2242  }//end of other loop.
2243  elemental_box->setVisible(show);
2244  elemental_box->adjustSize();
2245 }//end of function
2246 
2248 {
2249  int y=status_effects->contentsMargins().top()+status_effects->contentsMargins().bottom();
2250  bool show=false;
2251  int item_id =0;
2252  QString m_status;
2253  status_effects->clear();
2254  status_effects->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
2255  for(int r=0;r<3;r++)
2256  {
2257  switch (r)
2258  {
2259  case 0:item_id = data.weapon +128; break;
2260  case 1:item_id = data.armor +256; break;
2261  case 2:item_id = data.accessory +288; break;
2262  }
2263  if(item_id <0 || item_id >319){}
2264  else
2265  {
2266  for(int i=0;i<24;i++)
2267  {
2268  QString effect;
2269  int status=0;
2270  switch(i)
2271  {
2272  case 0: status=Items.statusDeath(item_id); effect.append(tr("Death"));break;
2273  case 1: status=Items.statusSlowNumb(item_id); effect.append(tr("Slow-Numb"));break;
2274  case 2: status=Items.statusDeathSentence(item_id); effect.append(tr("D.Sentence"));break;
2275  case 3: status=Items.statusParalysis(item_id); effect.append(tr("Paralysis"));break;
2276  case 4: status=Items.statusPetrify(item_id); effect.append(tr("Petrify"));break;
2277  case 5: status=Items.statusSilence(item_id); effect.append(tr("Silence"));break;
2278  case 6: status=Items.statusSleep(item_id); effect.append(tr("Sleep"));break;
2279  case 7: status=Items.statusConfusion(item_id); effect.append(tr("Confusion"));break;
2280  case 8: status=Items.statusBerserk(item_id); effect.append(tr("Berserk"));break;
2281  case 9: status=Items.statusFrog(item_id); effect.append(tr("Frog"));break;
2282  case 10: status=Items.statusMini(item_id); effect.append(tr("Mini"));break;
2283  case 11: status=Items.statusPoison(item_id); effect.append(tr("Poison"));break;
2284  case 12: status=Items.statusFury(item_id); effect.append(tr("Fury"));break;
2285  case 13: status=Items.statusSadness(item_id); effect.append(tr("Sadness"));break;
2286  case 14: status=Items.statusDarkness(item_id); effect.append(tr("Darkness"));break;
2287  case 15: status=Items.statusHaste(item_id); effect.append(tr("Haste"));break;
2288  case 16: status=Items.statusSlow(item_id); effect.append(tr("Slow"));break;
2289  case 17: status=Items.statusStop(item_id); effect.append(tr("Stop"));break;
2290  case 18: status=Items.statusBarrier(item_id); effect.append(tr("Barrier"));break;
2291  case 19: status=Items.statusMagicBarrier(item_id); effect.append(tr("M.Barrier"));break;
2292  case 20: status=Items.statusReflect(item_id); effect.append(tr("Reflect"));break;
2293  case 21: status=Items.statusShield(item_id); effect.append(tr("Shield"));break;
2294  case 22: status=Items.statusRegen(item_id); effect.append(tr("Regen"));break;
2295  case 23: status=Items.statusResist(item_id); effect.append(tr("Regen"));break;
2296  }
2297  switch(status)
2298  {
2299  case -2: effect.prepend(tr("Protect:")); break;
2300  case -1: effect.prepend(tr("Remove:")); break;
2301  case 0: effect.clear();break;
2302  case +1: effect.prepend(tr("Inflict:")); break;
2303  case +2: effect.prepend(tr("OnBattle:"));break;
2304  }
2305  if(!effect.isNull() && !m_status.contains(effect,Qt::CaseSensitive))
2306  {
2307  m_status.append(effect);
2308  status_effects->addItem(effect);
2309  show=true; y+=status_effects->sizeHintForRow(0);
2310  }
2311  }//end of for Loop
2312  status_effects->setFixedHeight(y);
2313  status_box->setFixedSize(205*scale,y + status_box->contentsMargins().top()+ status_box->contentsMargins().bottom());
2314  }//end of else.
2315  }//end of loop
2316  status_box->setVisible(show);
2317  status_box->adjustSize();
2318 }//end of function
2320 {
2321  weapon_slot_8->setHidden(1);
2322  weapon_slot_7->setHidden(1);
2323  weapon_slot_6->setHidden(1);
2324  weapon_slot_5->setHidden(1);
2325  weapon_slot_4->setHidden(1);
2326  weapon_slot_3->setHidden(1);
2327  weapon_slot_2->setHidden(1);
2328  weapon_slot_1->setHidden(1);
2329  armor_slot_8->setHidden(1);
2330  armor_slot_7->setHidden(1);
2331  armor_slot_6->setHidden(1);
2332  armor_slot_5->setHidden(1);
2333  armor_slot_4->setHidden(1);
2334  armor_slot_3->setHidden(1);
2335  armor_slot_2->setHidden(1);
2336  armor_slot_1->setHidden(1);
2337 
2338  //reset style sheet for the outer slot frames and links to ensure they are not visible reguardless of hosts stylesheet.
2339  armor_frm_1->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2340  armor_frm_2->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2341  armor_frm_3->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2342  armor_frm_4->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2343  armor_frm_5->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2344  armor_frm_6->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2345  armor_frm_7->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2346  armor_frm_8->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2347  weapon_frm_8->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2348  weapon_frm_7->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2349  weapon_frm_6->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2350  weapon_frm_5->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2351  weapon_frm_4->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2352  weapon_frm_3->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2353  weapon_frm_2->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2354  weapon_frm_1->setStyleSheet(QString("QFrame{background-color:rgba(0,0,0,0);}"));
2355 
2356  weapon_m_link_1->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2357  weapon_m_link_2->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2358  weapon_m_link_3->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2359  weapon_m_link_4->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2360  armor_m_link_1->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2361  armor_m_link_2->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2362  armor_m_link_3->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2363  armor_m_link_4->setStyleSheet(QString("background-color:rgba(0,0,0,0);"));
2364 
2365  //fill the slots.
2366 
2367  if(data.materias[0].id!=FF7Materia::EmptyId){weapon_slot_1->setIcon(QIcon(Materias.pixmap(data.materias[0].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_1->setIcon(QIcon(QString("")));}
2368  if(data.materias[0].id!=FF7Materia::EmptyId){weapon_slot_1->setToolTip(Materias.name(data.materias[0].id));}else{weapon_slot_1->setToolTip(QString(tr("-Empty-")));}
2369  if(data.materias[1].id!=FF7Materia::EmptyId){weapon_slot_2->setIcon(QIcon(Materias.pixmap(data.materias[1].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_2->setIcon(QIcon(QString("")));}
2370  if(data.materias[1].id!=FF7Materia::EmptyId){weapon_slot_2->setToolTip(Materias.name(data.materias[1].id));}else{weapon_slot_2->setToolTip(QString(tr("-Empty-")));}
2371  if(data.materias[2].id!=FF7Materia::EmptyId){weapon_slot_3->setIcon(QIcon(Materias.pixmap(data.materias[2].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_3->setIcon(QIcon(QString("")));}
2372  if(data.materias[2].id!=FF7Materia::EmptyId){weapon_slot_3->setToolTip(Materias.name(data.materias[2].id));}else{weapon_slot_3->setToolTip(QString(tr("-Empty-")));}
2373  if(data.materias[3].id!=FF7Materia::EmptyId){weapon_slot_4->setIcon(QIcon(Materias.pixmap(data.materias[3].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_4->setIcon(QIcon(QString("")));}
2374  if(data.materias[3].id!=FF7Materia::EmptyId){weapon_slot_4->setToolTip(Materias.name(data.materias[3].id));}else{weapon_slot_4->setToolTip(QString(tr("-Empty-")));}
2375  if(data.materias[4].id!=FF7Materia::EmptyId){weapon_slot_5->setIcon(QIcon(Materias.pixmap(data.materias[4].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_5->setIcon(QIcon(QString("")));}
2376  if(data.materias[4].id!=FF7Materia::EmptyId){weapon_slot_5->setToolTip(Materias.name(data.materias[4].id));}else{weapon_slot_5->setToolTip(QString(tr("-Empty-")));}
2377  if(data.materias[5].id!=FF7Materia::EmptyId){weapon_slot_6->setIcon(QIcon(Materias.pixmap(data.materias[5].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_6->setIcon(QIcon(QString("")));}
2378  if(data.materias[5].id!=FF7Materia::EmptyId){weapon_slot_6->setToolTip(Materias.name(data.materias[5].id));}else{weapon_slot_6->setToolTip(QString(tr("-Empty-")));}
2379  if(data.materias[6].id!=FF7Materia::EmptyId){weapon_slot_7->setIcon(QIcon(Materias.pixmap(data.materias[6].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_7->setIcon(QIcon(QString("")));}
2380  if(data.materias[6].id!=FF7Materia::EmptyId){weapon_slot_7->setToolTip(Materias.name(data.materias[6].id));}else{weapon_slot_7->setToolTip(QString(tr("-Empty-")));}
2381  if(data.materias[7].id!=FF7Materia::EmptyId){weapon_slot_8->setIcon(QIcon(Materias.pixmap(data.materias[7].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{weapon_slot_8->setIcon(QIcon(QString("")));}
2382  if(data.materias[7].id!=FF7Materia::EmptyId){weapon_slot_8->setToolTip(Materias.name(data.materias[7].id));}else{weapon_slot_8->setToolTip(QString(tr("-Empty-")));}
2383  if(data.materias[8].id!=FF7Materia::EmptyId){armor_slot_1->setIcon(QIcon(Materias.pixmap(data.materias[8].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_1->setIcon(QIcon(QString("")));}
2384  if(data.materias[8].id!=FF7Materia::EmptyId){armor_slot_1->setToolTip(Materias.name(data.materias[8].id));}else{armor_slot_1->setToolTip(QString(tr("-Empty-")));}
2385  if(data.materias[9].id!=FF7Materia::EmptyId){armor_slot_2->setIcon(QIcon(Materias.pixmap(data.materias[9].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_2->setIcon(QIcon(QString("")));}
2386  if(data.materias[9].id!=FF7Materia::EmptyId){armor_slot_2->setToolTip(Materias.name(data.materias[9].id));}else{armor_slot_2->setToolTip(QString(tr("-Empty-")));}
2387  if(data.materias[10].id!=FF7Materia::EmptyId){armor_slot_3->setIcon(QIcon(Materias.pixmap(data.materias[10].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_3->setIcon(QIcon(QString("")));}
2388  if(data.materias[10].id!=FF7Materia::EmptyId){armor_slot_3->setToolTip(Materias.name(data.materias[10].id));}else{armor_slot_3->setToolTip(QString(tr("-Empty-")));}
2389  if(data.materias[11].id!=FF7Materia::EmptyId){armor_slot_4->setIcon(QIcon(Materias.pixmap(data.materias[11].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_4->setIcon(QIcon(QString("")));}
2390  if(data.materias[11].id!=FF7Materia::EmptyId){armor_slot_4->setToolTip(Materias.name(data.materias[11].id));}else{armor_slot_4->setToolTip(QString(tr("-Empty-")));}
2391  if(data.materias[12].id!=FF7Materia::EmptyId){armor_slot_5->setIcon(QIcon(Materias.pixmap(data.materias[12].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_5->setIcon(QIcon(QString("")));}
2392  if(data.materias[12].id!=FF7Materia::EmptyId){armor_slot_5->setToolTip(Materias.name(data.materias[12].id));}else{armor_slot_5->setToolTip(QString(tr("-Empty-")));}
2393  if(data.materias[13].id!=FF7Materia::EmptyId){armor_slot_6->setIcon(QIcon(Materias.pixmap(data.materias[13].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_6->setIcon(QIcon(QString("")));}
2394  if(data.materias[13].id!=FF7Materia::EmptyId){armor_slot_6->setToolTip(Materias.name(data.materias[13].id));}else{armor_slot_6->setToolTip(QString(tr("-Empty-")));}
2395  if(data.materias[14].id!=FF7Materia::EmptyId){armor_slot_7->setIcon(QIcon(Materias.pixmap(data.materias[14].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_7->setIcon(QIcon(QString("")));}
2396  if(data.materias[14].id!=FF7Materia::EmptyId){armor_slot_7->setToolTip(Materias.name(data.materias[14].id));}else{armor_slot_7->setToolTip(QString(tr("-Empty-")));}
2397  if(data.materias[15].id!=FF7Materia::EmptyId){armor_slot_8->setIcon(QIcon(Materias.pixmap(data.materias[15].id).scaled(24*scale,24*scale,Qt::KeepAspectRatio,Qt::SmoothTransformation)));}else{armor_slot_8->setIcon(QIcon(QString("")));}
2398  if(data.materias[15].id!=FF7Materia::EmptyId){armor_slot_8->setToolTip(Materias.name(data.materias[15].id));}else{armor_slot_8->setToolTip(QString(tr("-Empty-")));}
2399 
2400  //set up weapon
2401  QString ap_rate =tr("AP:x%1").arg(Items.materiaGrowthRate(data.weapon +128));
2402  lblWeaponStats->setText(ap_rate);
2403  switch(Items.materiaSlots(data.weapon +128))
2404  {
2405  case 8:weapon_slot_8->setHidden(0);
2406  case 7:weapon_slot_7->setHidden(0);
2407  case 6:weapon_slot_6->setHidden(0);
2408  case 5:weapon_slot_5->setHidden(0);
2409  case 4:weapon_slot_4->setHidden(0);
2410  case 3:weapon_slot_3->setHidden(0);
2411  case 2:weapon_slot_2->setHidden(0);
2412  case 1:weapon_slot_1->setHidden(0);
2413  };
2414  switch(Items.linkedSlots((data.weapon +128)))
2415  {
2416  case 4: weapon_m_link_4->setStyleSheet(Items.styleMateriaLink());
2417  case 3: weapon_m_link_3->setStyleSheet(Items.styleMateriaLink());
2418  case 2: weapon_m_link_2->setStyleSheet(Items.styleMateriaLink());
2419  case 1: weapon_m_link_1->setStyleSheet(Items.styleMateriaLink());
2420  };
2421  //set up armor
2422  ap_rate =tr("AP:x%1").arg(Items.materiaGrowthRate(data.armor+256));
2423  lblArmorStats->setText(ap_rate);
2424  switch(Items.materiaSlots(data.armor +256))
2425  {
2426  case 8:armor_slot_8->setHidden(0);
2427  case 7:armor_slot_7->setHidden(0);
2428  case 6:armor_slot_6->setHidden(0);
2429  case 5:armor_slot_5->setHidden(0);
2430  case 4:armor_slot_4->setHidden(0);
2431  case 3:armor_slot_3->setHidden(0);
2432  case 2:armor_slot_2->setHidden(0);
2433  case 1:armor_slot_1->setHidden(0);
2434  };
2435  switch(Items.linkedSlots((data.armor +256)))
2436  {
2437  case 4: armor_m_link_4->setStyleSheet(Items.styleMateriaLink());
2438  case 3: armor_m_link_3->setStyleSheet(Items.styleMateriaLink());
2439  case 2: armor_m_link_2->setStyleSheet(Items.styleMateriaLink());
2440  case 1: armor_m_link_1->setStyleSheet(Items.styleMateriaLink());
2441  };
2442  calc_stats();
2443 }
2445 {
2446  if(id>=0 &&id<91){data.materias[mslotsel].id = id;}
2447  else{data.materias[mslotsel].id = FF7Materia::EmptyId;}
2448  if(!load){emit(Materias_changed(data.materias[mslotsel]));}
2450  calc_stats();
2451 }
2453 {
2454  if(ap>=0 && ap<FF7Materia::MaxMateriaAp)
2455  {
2456  int a = (ap & 0xff);
2457  int b = (ap & 0xff00) >> 8;
2458  int c = (ap & 0xff0000) >> 16;
2459  data.materias[mslotsel].ap[0]=a;
2460  data.materias[mslotsel].ap[1]=b;
2461  data.materias[mslotsel].ap[2]=c;
2462  }
2463  else
2464  {
2465  data.materias[mslotsel].ap[0]=0xFF;
2466  data.materias[mslotsel].ap[1]=0xFF;
2467  data.materias[mslotsel].ap[2]=0xFF;
2468  }
2469  if(!load){emit(Materias_changed(data.materias[mslotsel]));}
2471 }
2488 
2490 {
2491  load=true;
2492  if(Mslot<0){return;}
2493  if(Mslot != mslotsel)
2494  {
2495  mslotsel = Mslot;
2497  setSlotFrame();
2498  emit(mslotChanged(mslotsel));
2499  }
2501  load=false;
2502 }
2503 
2505 {
2506  weapon_frm_1->setFrameShape(QFrame::NoFrame);
2507  weapon_frm_2->setFrameShape(QFrame::NoFrame);
2508  weapon_frm_3->setFrameShape(QFrame::NoFrame);
2509  weapon_frm_4->setFrameShape(QFrame::NoFrame);
2510  weapon_frm_5->setFrameShape(QFrame::NoFrame);
2511  weapon_frm_6->setFrameShape(QFrame::NoFrame);
2512  weapon_frm_7->setFrameShape(QFrame::NoFrame);
2513  weapon_frm_8->setFrameShape(QFrame::NoFrame);
2514  armor_frm_1->setFrameShape(QFrame::NoFrame);
2515  armor_frm_2->setFrameShape(QFrame::NoFrame);
2516  armor_frm_3->setFrameShape(QFrame::NoFrame);
2517  armor_frm_4->setFrameShape(QFrame::NoFrame);
2518  armor_frm_5->setFrameShape(QFrame::NoFrame);
2519  armor_frm_6->setFrameShape(QFrame::NoFrame);
2520  armor_frm_7->setFrameShape(QFrame::NoFrame);
2521  armor_frm_8->setFrameShape(QFrame::NoFrame);
2522 
2523  switch(mslotsel)
2524  {
2525  case 0: weapon_frm_1->setFrameShape(QFrame::Box);break;
2526  case 1: weapon_frm_2->setFrameShape(QFrame::Box);break;
2527  case 2: weapon_frm_3->setFrameShape(QFrame::Box);break;
2528  case 3: weapon_frm_4->setFrameShape(QFrame::Box);break;
2529  case 4: weapon_frm_5->setFrameShape(QFrame::Box);break;
2530  case 5: weapon_frm_6->setFrameShape(QFrame::Box);break;
2531  case 6: weapon_frm_7->setFrameShape(QFrame::Box);break;
2532  case 7: weapon_frm_8->setFrameShape(QFrame::Box);break;
2533  case 8: armor_frm_1->setFrameShape(QFrame::Box);break;
2534  case 9: armor_frm_2->setFrameShape(QFrame::Box);break;
2535  case 10: armor_frm_3->setFrameShape(QFrame::Box);break;
2536  case 11: armor_frm_4->setFrameShape(QFrame::Box);break;
2537  case 12: armor_frm_5->setFrameShape(QFrame::Box);break;
2538  case 13: armor_frm_6->setFrameShape(QFrame::Box);break;
2539  case 14: armor_frm_7->setFrameShape(QFrame::Box);break;
2540  case 15: armor_frm_8->setFrameShape(QFrame::Box);break;
2541  default: break;
2542  };
2543 }
2545 {
2546  if(checked && data.id == FF7Char::CaitSith){combo_id->setCurrentIndex(FF7Char::YoungCloud);}
2547  if(checked && data.id == FF7Char::Vincent){combo_id->setCurrentIndex(FF7Char::Sephiroth);}
2548  if(!checked && data.id ==FF7Char::YoungCloud){combo_id->setCurrentIndex(FF7Char::CaitSith);}
2549  if(!checked && data.id ==FF7Char::Sephiroth){combo_id->setCurrentIndex(FF7Char::Vincent);}
2550 }
2552 {
2553  if(data.id ==FF7Char::YoungCloud || data.id == FF7Char::Sephiroth){return;}
2554  else
2555  {
2556  sb_level->setValue(99);
2557  sb_base_hp->setValue(10000); //set to 10k to prevent overflow
2558  sb_base_mp->setValue(10000); //set to 10k to prevent overflow
2559  sb_str_bonus->setValue(255);
2560  sb_dex_bonus->setValue(255);
2561  sb_spi_bonus->setValue(255);
2562  sb_vit_bonus->setValue(255);
2563  sb_mag_bonus->setValue(255);
2564  sb_lck_bonus->setValue(255);
2565  sb_curHp->setValue(data.maxHP);
2566  sb_curMp->setValue(data.maxMP);
2567 
2568  //do limits.
2569  if(data.id ==FF7Char::CaitSith)
2570  {
2571  sb_limit_level->setValue(2);
2572  this->setLimits(0x09);
2573  }
2574  else if (data.id ==FF7Char::Vincent)
2575  {
2576  sb_limit_level->setValue(4);
2577  this->setLimits(0x249);
2578  }
2579  else
2580  {
2581  sb_limit_level->setValue(4);
2582  this->setLimits(0x2DB);
2583  }
2584  }
2585 }
2587 {
2588  if(data.id ==FF7Char::YoungCloud || data.id ==FF7Char::Sephiroth){return;}
2589  else
2590  {
2591  //set up weapons/ armor
2592  weapon_selection->setCurrentIndex(Chars.numberOfWeapons(data.id)-1);
2593  armor_selection->setCurrentIndex(29);
2594  accessory_selection->setCurrentIndex(18);
2595  for(int i=15;i>=0;i--)
2596  {
2597  mslotsel = i;
2598  quint8 new_id = FF7Materia::EmptyId;
2599  switch(mslotsel)
2600  {
2601  case 6: new_id = FF7Materia::MegaAll; break;
2602  case 5: new_id = FF7Materia::LongRange; break;
2603  case 4: new_id = FF7Materia::PreEmptive; break;
2604  case 3: new_id = FF7Materia::MasterSummon; break;
2605  case 2: new_id = FF7Materia::EnemySkill; break;
2606  case 1: new_id = FF7Materia::MasterCommand; break;
2607  case 0: weapon_slot_1_clicked();new_id = FF7Materia::MasterMagic; break;
2608  }
2609 
2610  data.materias[mslotsel].id = new_id;
2611  data.materias[mslotsel].ap[0] = 0xFF;
2612  data.materias[mslotsel].ap[1] = 0xFF;
2613  data.materias[mslotsel].ap[2] = 0xFF;
2614 
2615  emit(mslotChanged(mslotsel));
2616  emit(Materias_changed(data.materias[mslotsel]));
2617  }
2618  setSlotFrame();
2620  cb_front_row->setCheckState(Qt::Unchecked);
2621  }
2622 }
2624 {
2625  weapon_selection->setEditable(editable);
2626  weapon_selection->setInsertPolicy(QComboBox::NoInsert);
2627 
2628  armor_selection->setEditable(editable);
2629  armor_selection->setInsertPolicy(QComboBox::NoInsert);
2630 
2631  accessory_selection->setEditable(editable);
2632  accessory_selection->setInsertPolicy(QComboBox::NoInsert);
2634 }
quint8 row()
qint8 statusRegen(int id)
regen status effect of an item
Definition: FF7Item.cpp:75
QPushButton * weapon_slot_5
Definition: CharEditor.h:320
FF7Item Items
Definition: CharEditor.h:358
MateriaEditor * materia_edit
Definition: CharEditor.h:297
QSpinBox * sb_mag_bonus
Definition: CharEditor.h:252
void vitBonus_changed(quint8)
qint8 elementCut(int id)
cut elemental effect of an item
Definition: FF7Item.cpp:48
void mslotChanged(int)
qint8 statLCK(int id)
Definition: FF7Materia.cpp:32
QPushButton * weapon_slot_1
Definition: CharEditor.h:316
QPushButton * armor_slot_8
Definition: CharEditor.h:340
void setLck(int)
qint8 elementHoly(int id)
ho;y elemental effect of an item
Definition: FF7Item.cpp:46
void mag_changed(quint8)
void weapon_slot_1_clicked()
QPushButton * weapon_slot_6
Definition: CharEditor.h:321
void weapon_slot_2_clicked()
void setDexBonus(int)
QSpinBox * sb_str
Definition: CharEditor.h:239
void setExp(int)
QPushButton * armor_slot_2
Definition: CharEditor.h:334
qint8 statDEX(int id)
change to dexterity when equipped
Definition: FF7Item.cpp:31
QLabel * lbl_lck
Definition: CharEditor.h:268
qint8 statMP(int id)
change to MP when equipped
Definition: FF7Item.cpp:28
void disconnectAll(void)
void dex_changed(quint8)
QLabel * lbl_mag_mat_bonus
Definition: CharEditor.h:253
void armor_slot_3_clicked()
QPushButton * weapon_slot_4
Definition: CharEditor.h:319
void setEditable(bool)
void cb_fury_toggled(bool)
QLCDNumber * lcd_0x34
Definition: CharEditor.h:351
quint8 levelProgress()
void weapon_slot_4_clicked()
qint8 statusDeathSentence(int id)
death sentence status effect of an item
Definition: FF7Item.cpp:55
QSpinBox * sb_vit
Definition: CharEditor.h:245
void exp_changed(quint32)
int statGain(int who, int stat, int stat_amount, int current_lvl, int next_lvl)
how much to increase stat on level up
Definition: FF7Char.cpp:52
quint8 dexBonus()
void cb_sadness_toggled(bool)
quint16 timesused2()
void setCurMp(int)
QFrame * weapon_frm_6
Definition: CharEditor.h:313
quint16 timesused1()
void curMp_changed(quint16)
QSpinBox * sb_limit_level
Definition: CharEditor.h:283
qint8 statusMagicBarrier(int id)
magic barrier status effect of an item
Definition: FF7Item.cpp:72
QLabel * lbl_hp_max
Definition: CharEditor.h:221
quint8 weapon()
qint8 elementRestoration(int id)
restoration elemental effect of an item
Definition: FF7Item.cpp:38
void kills_changed(quint16)
void setStarsSize(int)
QSpinBox * sb_mag
Definition: CharEditor.h:251
QFrame * armor_frm_4
Definition: CharEditor.h:328
void setSadnessFury(int)
void dexBonus_changed(quint8)
void cb_idChanger_toggled(bool)
void update_materia_slots()
qint8 statusBerserk(int id)
berserk status effect of an item
Definition: FF7Item.cpp:61
QLabel * lbl_limit_bar
Definition: CharEditor.h:234
QLabel * lbl_vit_total
Definition: CharEditor.h:248
QSpinBox * sb_base_hp
Definition: CharEditor.h:275
QSpinBox * sb_vit_bonus
Definition: CharEditor.h:246
void setMaxMp(int)
void timesused2_changed(quint16)
QFrame * armor_frm_3
Definition: CharEditor.h:327
void init_display(void)
Definition: CharEditor.cpp:33
QLCDNumber * lcd_limit_value
Definition: CharEditor.h:236
QLabel * lbl_uses
Definition: CharEditor.h:288
void setVit(int)
QFrame * weapon_frm_8
Definition: CharEditor.h:315
void setExpNext(int)
QLabel * lbl_vit_mat_bonus
Definition: CharEditor.h:247
void setAccessory(int)
qint8 materiaGrowthRate(int id)
ap multiplier for an item
Definition: FF7Item.cpp:26
void setAdvancedMode(bool)
QLabel * weapon_m_link_4
Definition: CharEditor.h:344
QLabel * lbl_mp
Definition: CharEditor.h:222
quint8 limitBar()
qint8 statusDeath(int id)
death status effect of an item
Definition: FF7Item.cpp:53
qint8 statusMini(int id)
mini status effect of an item
Definition: FF7Item.cpp:63
QLabel * lbl_dex_total
Definition: CharEditor.h:266
bool Editable()
int numberOfWeapons(int who)
number of weapons for a Character
Definition: FF7Char.cpp:24
QLabel * lbl_base_hp_bonus
Definition: CharEditor.h:276
QString styleMateriaSlotNoGrowth(void)
QStyle of a no growth materia slot for use on a QPushButton.
Definition: FF7Item.cpp:77
QGroupBox * status_box
Definition: CharEditor.h:299
QPushButton * armor_slot_6
Definition: CharEditor.h:338
QPushButton * weapon_slot_8
Definition: CharEditor.h:323
QString name(int id)
Definition: FF7Materia.cpp:25
QString defaultName(int who)
default name for a character
Definition: FF7Char.cpp:40
qint8 statusSlow(int id)
slow status effect of an item
Definition: FF7Item.cpp:69
int weaponStartingId(int who)
find what item id is the first weapon for a Character
Definition: FF7Char.cpp:22
void limits_changed(quint16)
qint8 statusDarkness(int id)
darkness status effect of an item
Definition: FF7Item.cpp:67
QListWidget * status_effects
Definition: CharEditor.h:301
void armor_slot_2_clicked()
QCheckBox * cb_front_row
Definition: CharEditor.h:227
void setTimesused3(int)
FF7Materia Materias
Definition: CharEditor.h:359
QLabel * lbl_base_hp
Definition: CharEditor.h:274
void weapon_slot_3_clicked()
QFrame * armor_frm_7
Definition: CharEditor.h:331
qint8 statusStop(int id)
stop status effect of an item
Definition: FF7Item.cpp:70
QLabel * weapon_m_link_1
Definition: CharEditor.h:341
qint8 statSPI(int id)
Definition: FF7Materia.cpp:31
void setStr(int)
QLabel * lbl_mp_slash
Definition: CharEditor.h:223
void row_changed(quint8)
qint8 statMAG(int id)
Definition: FF7Materia.cpp:30
void MaxEquip()
void armor_slot_7_clicked()
QLCDNumber * lcd_0x35
Definition: CharEditor.h:352
void setRow(bool front_row)
quint32 ap2num(quint8 ap[3])
Definition: FF7Materia.cpp:65
void elemental_info()
QPushButton * armor_slot_1
Definition: CharEditor.h:333
qint8 statDEX(int id)
Definition: FF7Materia.cpp:29
QLabel * lbl_vit
Definition: CharEditor.h:244
void setAutoLevel(bool)
void calc_stats(void)
quint32 tnlForLevel(int who, int level)
experance needed to level up
Definition: FF7Char.cpp:29
quint8 vitBonus()
void str_changed(quint8)
int mslotsel
Definition: CharEditor.h:366
void weapon_slot_6_clicked()
bool AutoStatCalc()
QGroupBox * accessory_box
Definition: CharEditor.h:306
qint8 elementWind(int id)
wind elemental effect of an item
Definition: FF7Item.cpp:43
void setEditableComboBoxes(bool)
QFrame * armor_frm_8
Definition: CharEditor.h:332
Character Info in the save game.
void sadnessfury_changed(quint8)
quint8 mag()
QSpinBox * sb_level
Definition: CharEditor.h:213
qint8 statSTR(int id)
Definition: FF7Materia.cpp:27
qint8 statSTR(int id)
change to strength when equipped
Definition: FF7Item.cpp:29
QCheckBox * cb_sadness
Definition: CharEditor.h:226
qint8 statusPoison(int id)
poison status effect of an item
Definition: FF7Item.cpp:64
void Exp_Changed(int)
QFrame * weapon_frm_4
Definition: CharEditor.h:311
bool autolevel
Definition: CharEditor.h:362
quint8 spi()
QLabel * lbl_str_total
Definition: CharEditor.h:242
QSpinBox * sb_curMp
Definition: CharEditor.h:214
QSlider * slider_limit
Definition: CharEditor.h:235
void setHoverStyle(QString hoverColor)
qint8 statusSadness(int id)
sadness status effect of an item
Definition: FF7Item.cpp:66
QLabel * lbl_limit_level
Definition: CharEditor.h:282
QComboBox * weapon_selection
Definition: CharEditor.h:294
void armor_slot_4_clicked()
void weapon_changed(quint8)
QImage image(int id)
get an items picture as qimage
Definition: FF7Item.cpp:22
QFrame * armor_frm_2
Definition: CharEditor.h:326
static const quint16 _limitbitarray[0x07]
Definition: FF7Char.h:356
void timesused3_changed(quint16)
quint8 magBonus()
QPushButton * weapon_slot_7
Definition: CharEditor.h:322
QLabel * lbl_mag_total
Definition: CharEditor.h:254
QSpinBox * sb_lck_bonus
Definition: CharEditor.h:270
void limitBar_changed(quint8)
QSpinBox * sb_spi
Definition: CharEditor.h:257
QFrame * weapon_frm_1
Definition: CharEditor.h:308
quint16 limits()
QPushButton * armor_slot_4
Definition: CharEditor.h:336
QLabel * lbl_dex_mat_bonus
Definition: CharEditor.h:265
void setLevelProgress(int)
QIcon icon(int who)
Menu icon for a character.
Definition: FF7Char.cpp:27
qint8 id()
QGroupBox * weapon_box
Definition: CharEditor.h:304
quint16 maxHp()
QListWidget * elemental_effects
Definition: CharEditor.h:300
quint8 dex()
quint8 sadnessfury()
QSpinBox * sb_curHp
Definition: CharEditor.h:216
QLabel * lbl_lck_total
Definition: CharEditor.h:272
qint8 limitLevel()
QLabel * lbl_dex
Definition: CharEditor.h:262
void setAutoStatCalc(bool)
qint8 statusShield(int id)
shield status effect of an item
Definition: FF7Item.cpp:74
void matId_changed(qint8)
QLabel * lbl_spi_total
Definition: CharEditor.h:260
qint8 elementHit(int id)
hit elemental effect of an item
Definition: FF7Item.cpp:51
void setDex(int)
QFrame * armor_frm_5
Definition: CharEditor.h:329
quint8 vit()
QString _name
Definition: CharEditor.h:361
QSpinBox * sb_dex_bonus
Definition: CharEditor.h:264
void armor_slot_8_clicked()
void setSlotFrame(void)
void vit_changed(quint8)
void limitLevel_changed(qint8)
quint8 str()
FF7CHAR data
Definition: CharEditor.h:360
QLabel * lbl_mp_max
Definition: CharEditor.h:224
QSpinBox * sb_base_mp
Definition: CharEditor.h:279
quint16 curMp()
void setMagBonus(int)
void Materias_changed(materia)
CharEditor(qreal Scale=1, QWidget *parent=0)
Definition: CharEditor.cpp:18
QLabel * lbl_level_progress
Definition: CharEditor.h:231
void weapon_slot_7_clicked()
QString name()
qint8 elementFire(int id)
fire elemental effect of an item
Definition: FF7Item.cpp:39
QComboBox * accessory_selection
Definition: CharEditor.h:296
bool advancedMode
Definition: CharEditor.h:365
void magBonus_changed(quint8)
qint8 statusFrog(int id)
frog status effect of an item
Definition: FF7Item.cpp:62
void weapon_slot_5_clicked()
qint8 statusPetrify(int id)
petrify status effect of an item
Definition: FF7Item.cpp:57
int weaponOffset(int who)
find what weapon number is the first weapon for a Character
Definition: FF7Char.cpp:23
QFrame * unknown_box
Definition: CharEditor.h:350
QSpinBox * sb_str_bonus
Definition: CharEditor.h:240
void setTimesused1(int)
QLabel * lbl_mag
Definition: CharEditor.h:250
qint8 elementGravity(int id)
gravity elemental effect of an item
Definition: FF7Item.cpp:45
QLabel * armor_m_link_4
Definition: CharEditor.h:348
quint8 accessory()
quint16 maxMp()
QPushButton * armor_slot_3
Definition: CharEditor.h:335
QLCDNumber * lcd_0x36
Definition: CharEditor.h:353
qint8 statLCK(int id)
change to luck when equipped
Definition: FF7Item.cpp:32
void setLckBonus(int)
void armor_slot_6_clicked()
quint8 lck()
QSpinBox * sb_uses_limit_1_1
Definition: CharEditor.h:284
qint32 ap(int id, int lvl)
Definition: FF7Materia.cpp:37
QLabel * lbl_spi_mat_bonus
Definition: CharEditor.h:259
qint8 levels(int id)
Definition: FF7Materia.cpp:35
qint8 statusReflect(int id)
reflect status effect of an item
Definition: FF7Item.cpp:73
void setMateria(quint8 materia_id=0, qint32 materia_ap=0)
void weapon_slot_8_clicked()
QSpinBox * sb_lck
Definition: CharEditor.h:269
void calc_limit_value(QModelIndex)
void curHp_changed(quint16)
quint16 curHp()
QLabel * weapon_m_link_3
Definition: CharEditor.h:343
void accessory_changed(quint8)
QLabel * armor_m_link_1
Definition: CharEditor.h:345
void lckBonus_changed(quint8)
QFrame * armor_frm_6
Definition: CharEditor.h:330
QLCDNumber * lcd_0x37
Definition: CharEditor.h:354
void mButtonPress(int Mslot)
void armor_slot_1_clicked()
bool editable
Definition: CharEditor.h:364
quint16 kills()
QFrame * weapon_frm_2
Definition: CharEditor.h:309
materia format saved in materia list or on a character
quint16 baseMp()
qint8 statusBarrier(int id)
barrier status effect of an item
Definition: FF7Item.cpp:71
quint8 lckBonus()
void matAp_changed(qint32)
qint8 elementWater(int id)
water elemental effect of an item
Definition: FF7Item.cpp:44
QString name(int id)
get an items name
Definition: FF7Item.cpp:19
qint8 elementPoison(int id)
poison elemental effect of an item
Definition: FF7Item.cpp:47
QFrame * armor_frm_1
Definition: CharEditor.h:325
void setLimitBar(int)
QLabel * lbl_2_1
Definition: CharEditor.h:290
qint8 statusSleep(int id)
sleep status effect of an item
Definition: FF7Item.cpp:59
QSpinBox * sb_maxHp
Definition: CharEditor.h:217
void baseHp_changed(quint16)
quint32 expNext()
QStringList limits(int who)
Limit list for a character.
Definition: FF7Char.cpp:42
QLabel * lbl_base_mp_bonus
Definition: CharEditor.h:280
void baseMp_changed(quint16)
QComboBox * armor_selection
Definition: CharEditor.h:295
void status_info()
void level_changed(qint8)
void expNext_changed(quint32)
QLabel * armor_m_link_2
Definition: CharEditor.h:346
qint8 elementEarth(int id)
earth elemental effect of an item
Definition: FF7Item.cpp:42
QLabel * weapon_m_link_2
Definition: CharEditor.h:342
void Level_Changed(int)
qint8 statusFury(int id)
fury status effect of an item
Definition: FF7Item.cpp:65
QLabel * lbl_hp
Definition: CharEditor.h:219
void setVitBonus(int)
void setMaxHp(int)
QSpinBox * sb_kills
Definition: CharEditor.h:218
void setSpiBonus(int)
QCheckBox * cb_fury
Definition: CharEditor.h:225
void setLevel(int)
void armor_changed(quint8)
QLineEdit * line_name
Definition: CharEditor.h:212
void init_connections(void)
qint8 statusResist(int id)
resist status effect of an item
Definition: FF7Item.cpp:76
void maxHp_changed(quint16)
qreal scale
Definition: CharEditor.h:368
void level_up(int)
QLabel * lbl_lck_mat_bonus
Definition: CharEditor.h:271
QLabel * lblWeaponStats
Definition: CharEditor.h:292
void levelProgress_changed(quint8)
quint8 spiBonus()
QString styleMateriaLink(void)
QStyle of a materia link for use on a QLabel.
Definition: FF7Item.cpp:85
void maxMp_changed(quint16)
void spi_changed(quint8)
QLabel * lbl_1_1
Definition: CharEditor.h:289
QSpinBox * sb_dex
Definition: CharEditor.h:263
bool AdvancedMode()
qint32 ap
Definition: CharEditor.h:367
QPushButton * weapon_slot_3
Definition: CharEditor.h:318
QFrame * weapon_frm_7
Definition: CharEditor.h:314
qint8 statHP(int id)
Definition: FF7Materia.cpp:33
qint8 statVIT(int id)
Definition: FF7Materia.cpp:28
qint8 statusSlowNumb(int id)
slow numb status effect of an item
Definition: FF7Item.cpp:54
qint8 statusParalysis(int id)
paralysis status effect of an item
Definition: FF7Item.cpp:56
QToolBox * toolbox
Definition: CharEditor.h:349
void strBonus_changed(quint8)
void setChar(FF7CHAR Chardata, QString Processed_Name="")
qint8 level()
void setId(int)
qint8 statusSilence(int id)
silence status effect of an item
Definition: FF7Item.cpp:58
QGroupBox * armor_box
Definition: CharEditor.h:305
qint8 elementShoot(int id)
shoot elemental effect of an item
Definition: FF7Item.cpp:49
bool AutoLevel()
void setArmor(int)
QSpinBox * sb_spi_bonus
Definition: CharEditor.h:258
QLabel * lbl_avatar
Definition: CharEditor.h:211
qint8 statHP(int id)
change to HP when equipped
Definition: FF7Item.cpp:27
QSpinBox * sb_total_exp
Definition: CharEditor.h:230
void MaxStats()
void setWeapon(int)
QLabel * armor_m_link_3
Definition: CharEditor.h:347
quint16 baseHp()
QLabel * lbl_3_1
Definition: CharEditor.h:291
QLabel * lblArmorStats
Definition: CharEditor.h:293
void update_tnl_bar()
qint8 statMP(int id)
Definition: FF7Materia.cpp:34
void setBaseMp(int)
qint8 statVIT(int id)
change to vitality when equipped
Definition: FF7Item.cpp:30
QFrame * weapon_frm_5
Definition: CharEditor.h:312
void setTimesused2(int)
QFrame * weapon_frm_3
Definition: CharEditor.h:310
void setLimits(int)
qint8 elementCold(int id)
cold elemental effect of an item
Definition: FF7Item.cpp:40
qint8 statusConfusion(int id)
confusion status effect of an item
Definition: FF7Item.cpp:60
QComboBox * combo_id
Definition: CharEditor.h:228
QGroupBox * elemental_box
Definition: CharEditor.h:298
quint8 armor()
QPushButton * armor_slot_5
Definition: CharEditor.h:337
QLabel * lbl_str_mat_bonus
Definition: CharEditor.h:241
QFrame * weapon_materia_box
Definition: CharEditor.h:302
void setSliderStyle(QString style)
QLabel * lbl_base_mp
Definition: CharEditor.h:278
QSpinBox * sb_uses_limit_3_1
Definition: CharEditor.h:286
materia char_materia(int mat)
void setMateriaHoverStyle(QString)
void setName(QString)
qint8 statusHaste(int id)
haste status effect of an item
Definition: FF7Item.cpp:68
quint32 exp()
qint8 materiaSlots(int id)
total number of materia slots in item
Definition: FF7Item.cpp:24
QSpinBox * sb_uses_limit_2_1
Definition: CharEditor.h:285
QCheckBox * cb_idChanger
Definition: CharEditor.h:355
quint8 strBonus()
qint8 linkedSlots(int id)
total number materia links in item
Definition: FF7Item.cpp:25
QListWidget * list_limits
Definition: CharEditor.h:287
qint8 elementLightning(int id)
lightning elemental effect of an item
Definition: FF7Item.cpp:41
QLabel * lbl_hp_slash
Definition: CharEditor.h:220
void name_changed(QString)
quint16 timesused3()
QPixmap pixmap(int who)
Menu icon for a character.
Definition: FF7Char.cpp:25
void setCurHp(int)
QPixmap pixmap(int id)
Definition: FF7Materia.cpp:39
quint32 totalExpForLevel(int who, int level)
Exp needed to reach a level.
Definition: FF7Char.cpp:28
QFrame * armor_materia_box
Definition: CharEditor.h:303
void setLimitLevel(int)
void setMag(int)
qint8 statSPI(int id)
change to spirit when equipped
Definition: FF7Item.cpp:34
void timesused1_changed(quint16)
void setBaseHp(int)
qint8 elementPunch(int id)
punch elemental effect of an item
Definition: FF7Item.cpp:50
void setSpi(int)
QPushButton * armor_slot_7
Definition: CharEditor.h:339
void setToolBoxStyle(QString)
QLabel * lbl_spi
Definition: CharEditor.h:256
QLabel * lbl_level_next
Definition: CharEditor.h:232
void setKills(int)
QPushButton * weapon_slot_2
Definition: CharEditor.h:317
QProgressBar * bar_tnl
Definition: CharEditor.h:233
void armor_slot_5_clicked()
FF7Char Chars
Definition: CharEditor.h:357
QLabel * lbl_str
Definition: CharEditor.h:238
void id_changed(qint8)
bool autostatcalc
Definition: CharEditor.h:363
void setStrBonus(int)
qint8 statMAG(int id)
change to magic when equipped
Definition: FF7Item.cpp:33
void setEditableMateriaCombo(bool enabled)
void spiBonus_changed(quint8)
void lck_changed(quint8)
QSpinBox * sb_maxMp
Definition: CharEditor.h:215