ff7tk  0.02
Toolkit for making FF7 Tools
ChocoboEditor.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 "ChocoboEditor.h"
17 // Pull in Icons, Be Sure Paths Are Correct
18 
19 void ChocoboEditor::resizeEvent(QResizeEvent *ev)
20 {
21  if(ev->type()==QEvent::Resize)
22  {
23  Final->setColumnMinimumWidth(0,width()/4);
24  Final->setColumnMinimumWidth(1,width()/4);
25  Final->setColumnStretch(0,width()/4);
26  Final->setColumnStretch(1,width()/4);
27  }
28 }
29 ChocoboEditor::ChocoboEditor(QWidget *parent) :
30  QWidget(parent)
31 {
32  init_display();
34 }
35 //Simple Data Return Functions.
36 quint16 ChocoboEditor::sprint(void){return choco_data.sprintspd;}
37 quint16 ChocoboEditor::mSprint(void){return choco_data.maxsprintspd;}
38 quint16 ChocoboEditor::speed(void){return choco_data.speed;}
39 quint16 ChocoboEditor::mSpeed(void){return choco_data.maxspeed;}
40 quint16 ChocoboEditor::stamina(void){return choco_stamina;}
42 QString ChocoboEditor::name(void){return choco_name;}
43 quint8 ChocoboEditor::accel(void){return choco_data.accel;}
44 quint8 ChocoboEditor::coop(void){return choco_data.coop;}
45 quint8 ChocoboEditor::intelligence(void){return choco_data.intelligence;}
46 quint8 ChocoboEditor::personality(void){return choco_data.personality;}
47 quint8 ChocoboEditor::pCount(void){return choco_data.pcount;}
48 quint8 ChocoboEditor::wins(void){return choco_data.raceswon;}
49 quint8 ChocoboEditor::sex(void){return choco_data.sex;}
50 quint8 ChocoboEditor::type(void){return choco_data.type;}
51 quint8 ChocoboEditor::rating(void){return choco_rating;}
52 
53 //Data Set Functions.
55 {
56  if(rating <0){rating=0;}
57  else if (rating>8){rating=8;}
58  combo_rating->setCurrentIndex(rating);
60 }
61 void ChocoboEditor::setSprint(int sprint_speed)
62 {
63  if(sprint_speed <0){sprint_speed =0;}
64  else if (sprint_speed > 9999){sprint_speed = 9999;}
65  sb_sprint->setValue(sprint_speed);
66  choco_data.sprintspd = sprint_speed;
67 }
68 void ChocoboEditor::setMsprint(int max_sprint_speed)
69 {
70  if(max_sprint_speed <0){max_sprint_speed =0;}
71  else if (max_sprint_speed > 9999){max_sprint_speed = 9999;}
72  sb_mSprint->setValue(max_sprint_speed);
73  choco_data.maxsprintspd = max_sprint_speed;
74 }
76 {
77  if(speed <0){speed =0;}
78  else if (speed > 9999){speed = 9999;}
79  sb_speed->setValue(speed);
80  choco_data.speed = speed;
81 }
82 void ChocoboEditor::setMspeed(int max_speed)
83 {
84  if(max_speed <0){max_speed =0;}
85  else if (max_speed > 9999){max_speed = 9999;}
86  sb_mSpeed->setValue(max_speed);
87  choco_data.maxspeed = max_speed;
88 }
90 {
91  if(stamina <0){stamina =0;}
92  else if (stamina > 9999){stamina = 9999;}
93  sb_stamina->setValue(stamina);
95 }
97 {
98  if(accel <0){accel =0;}
99  else if (accel > 255){accel =255;}
100  sb_accel->setValue(accel);
101  choco_data.accel = accel;
102 }
104 {
105  if(coop < 0){coop =0;}
106  else if (coop >255){coop =255;}
107  sb_coop->setValue(coop);
108  choco_data.coop = coop;
109 }
111 {
112  if(intel <0){intel =0;}
113  else if(intel >255){intel = 255;}
114  sb_intel->setValue(intel);
115  choco_data.intelligence = intel;
116 }
118 {//need to be researched further.
119  if(personality <0){personality =0;}
120  else if (personality >255){personality = 255;}
121  sb_personality->setValue(personality);
122  choco_data.personality = personality;
123 }
125 {
126  if(pCount <0){pCount =0;}
127  else if (pCount >255){pCount =255;}
128  sb_pCount->setValue(pCount);
129  choco_data.pcount=pCount;
130 }
132 {
133  if(wins <0){wins = 0;}
134  else if (wins>255){wins = 255;}
135  sb_wins->setValue(wins);
136  choco_data.raceswon = wins;
137  getRank();
138 }
140 {
141  if(sex<0){sex=0;}
142  else if(sex > 1){sex = 1;}
143  combo_sex->setCurrentIndex(sex);
144  choco_data.sex = sex;
145 }
147 {
148  if(type<0){type=0;}
149  else if(type > 4){type = 4;}
150  combo_type->setCurrentIndex(type);
151  choco_data.type = type;
152 }
153 void ChocoboEditor::setName(QString new_name)
154 {
155  choco_name=new_name.mid(0,6);
156  if(choco_name.startsWith('\xFF') || choco_name == QString(6,' ')){line_name->setText("");}
157  else{line_name->setText(choco_name);}
158 }
160 {
161  cb_cantMate->setChecked(cantMate);
163 }
164 
165 //Same again but with the emits..
167 {
170 }
171 void ChocoboEditor::SprintChanged(int sprint_speed)
172 {
173  choco_data.sprintspd = sprint_speed;
174  emit sprintChanged(choco_data.sprintspd);
175 }
176 void ChocoboEditor::MsprintChanged(int max_sprint_speed)
177 {
178  choco_data.maxsprintspd = max_sprint_speed;
179  emit mSprintChanged(choco_data.maxsprintspd);
180 }
182 {
183  choco_data.speed = speed;
184  emit speedChanged(choco_data.speed);
185 }
186 void ChocoboEditor::MspeedChanged(int max_speed)
187 {
188  choco_data.maxspeed = max_speed;
189  emit mSpeedChanged(choco_data.maxspeed);
190 }
192 {
195 }
197 {
198  choco_data.accel = accel;
199  emit accelChanged(choco_data.accel);
200 }
202 {
203  choco_data.coop = coop;
204  emit coopChanged(choco_data.coop);
205 }
207 {
208  choco_data.intelligence = intel;
209  emit intelligenceChanged(choco_data.intelligence);
210 }
212 {//need to be researched further.
213  choco_data.personality = personality;
214  emit personalityChanged(choco_data.personality);
215 }
217 {
218  choco_data.pcount=pCount;
219  emit pCountChanged(choco_data.pcount);
220 }
222 {
223  choco_data.raceswon = wins;
224  getRank();
225  emit winsChanged(choco_data.raceswon);
226 }
228 {
229  choco_data.sex = sex;
230  emit sexChanged(choco_data.sex);
231 }
233 {
234  choco_data.type = type;
235  emit typeChanged(choco_data.type);
236 }
237 void ChocoboEditor::NameChanged(QString new_name)
238 {
239  if(new_name !=choco_name)
240  {
241  choco_name=new_name.mid(0,6);
242  emit nameChanged(new_name);
243  }
244 }
246 {
249 }
251 {
252  //create Gui Widgets.
253  combo_sex = new QComboBox;
254  combo_type = new QComboBox;
255  line_name = new QLineEdit;
256  sb_speed = new QSpinBox;
257  sb_mSpeed = new QSpinBox;
258  sb_sprint = new QSpinBox;
259  sb_mSprint = new QSpinBox;
260  sb_stamina = new QSpinBox;
261  sb_accel = new QSpinBox;
262  sb_wins = new QSpinBox;
263  sb_coop = new QSpinBox;
264  sb_pCount = new QSpinBox;
265  sb_intel = new QSpinBox;
266  sb_personality = new QSpinBox;
267  cb_cantMate = new QCheckBox(tr("Unable To Mate"));
268 
269  lbl_rank = new QLabel();
270  lbl_stamina = new QLabel(tr("Stamina"));
271  lbl_speed = new QLabel(tr("Run Speed"));
272  lbl_div_speed = new QLabel("/");
273  lbl_div_speed->setAlignment(Qt::AlignHCenter);
274  lbl_div_speed->setMaximumWidth(font().pointSize());
275  lbl_sprint = new QLabel(tr("Sprint Speed"));
276  lbl_div_sprint = new QLabel("/");
277  lbl_div_sprint->setAlignment(Qt::AlignHCenter);
278  lbl_div_sprint->setMaximumWidth(font().pointSize());
279  lbl_accel = new QLabel(tr("Acceleration"));
280  lbl_wins = new QLabel(tr("Races Won"));
281  lbl_coop = new QLabel(tr("Cooperation"));
282  lbl_pCount = new QLabel(tr("pCount"));
283  lbl_intel = new QLabel(tr("Intelligence"));
284  lbl_personality = new QLabel(tr("Personality"));
285  lbl_rating = new QLabel(tr("Choco Billy's Rating: "));
286  //Set Widgets up
287  line_name->setMaxLength(6);
288  line_name->setPlaceholderText(tr("Name"));
289  sb_speed->setMaximum(9999);
290  sb_speed->setAlignment(Qt::AlignHCenter);
291  sb_mSpeed->setMaximum(9999);
292  sb_mSpeed->setAlignment(Qt::AlignHCenter);
293  sb_sprint->setMaximum(9999);
294  sb_sprint->setAlignment(Qt::AlignHCenter);
295  sb_mSprint->setMaximum(9999);
296  sb_mSprint->setAlignment(Qt::AlignHCenter);
297  sb_stamina->setMaximum(9999);
298  sb_stamina->setAlignment(Qt::AlignHCenter);
299  sb_coop->setMaximum(255);
300  sb_coop->setAlignment(Qt::AlignHCenter);
301  sb_accel->setMaximum(255);
302  sb_accel->setAlignment(Qt::AlignHCenter);
303  sb_wins->setMaximum(255);
304  sb_wins->setAlignment(Qt::AlignHCenter);
305  sb_pCount->setMaximum(255);
306  sb_pCount->setAlignment(Qt::AlignHCenter);
307  sb_intel->setMaximum(255);
308  sb_intel->setAlignment(Qt::AlignHCenter);
309  sb_personality->setMaximum(255);
310  sb_personality->setAlignment(Qt::AlignHCenter);
311  sb_speed->setWrapping(true);
312  sb_mSpeed->setWrapping(true);
313  sb_sprint->setWrapping(true);
314  sb_mSprint->setWrapping(true);
315  sb_stamina->setWrapping(true);
316  sb_coop->setWrapping(true);
317  sb_accel->setWrapping(true);
318  sb_wins->setWrapping(true);
319  sb_pCount->setWrapping(true);
320  sb_intel->setWrapping(true);
321  sb_personality->setWrapping(true);
322 
323  QStringList typeList;
324  typeList.append(tr("Empty"));
325  typeList.append(tr("Wonderful"));
326  typeList.append(tr("Great"));
327  typeList.append(tr("Good"));
328  typeList.append(tr("Fair"));
329  typeList.append(tr("Average"));
330  typeList.append(tr("Poor"));
331  typeList.append(tr("Bad"));
332  typeList.append(tr("Terrible"));
333 
334  //Fill Combos.
335  combo_sex->addItem(tr("Male %1").arg(QString::fromUtf8("♂")));
336  combo_sex->addItem(tr("Female %1").arg(QString::fromUtf8("♀")));
337 
338  combo_type->addItem(QIcon(QPixmap(":/chocobo/yellow")),tr("Yellow"));
339  combo_type->addItem(QIcon(QPixmap(":/chocobo/green")),tr("Green"));
340  combo_type->addItem(QIcon(QPixmap(":/chocobo/blue")),tr("Blue"));
341  combo_type->addItem(QIcon(QPixmap(":/chocobo/black")),tr("Black"));
342  combo_type->addItem(QIcon(QPixmap(":/chocobo/gold")),tr("Gold"));
343 
344  combo_rating = new QComboBox;
345  combo_rating->addItems(typeList);
346 
347 
348  //Make Layouts
349 
350  QHBoxLayout *speed_layout = new QHBoxLayout;
351  speed_layout->addWidget(lbl_speed);
352  speed_layout->addWidget(sb_speed);
353  speed_layout->addWidget(lbl_div_speed);
354  speed_layout->addWidget(sb_mSpeed);
355 
356  QHBoxLayout *sprint_layout = new QHBoxLayout;
357  sprint_layout->addWidget(lbl_sprint);
358  sprint_layout->addWidget(sb_sprint);
359  sprint_layout->addWidget(lbl_div_sprint);
360  sprint_layout->addWidget(sb_mSprint);
361 
362  QHBoxLayout *accel_layout = new QHBoxLayout;
363  accel_layout->addWidget(lbl_accel);
364  accel_layout->addWidget(sb_accel);
365 
366  QHBoxLayout *stamina_layout = new QHBoxLayout;
367  stamina_layout->addWidget(lbl_stamina);
368  stamina_layout->addWidget(sb_stamina);
369 
370  QHBoxLayout *wins_layout = new QHBoxLayout;
371  wins_layout->addWidget(lbl_wins);
372  wins_layout->addWidget(sb_wins);
373 
374  QHBoxLayout *coop_layout = new QHBoxLayout;
375  coop_layout->addWidget(lbl_coop);
376  coop_layout->addWidget(sb_coop);
377 
378  QHBoxLayout *intel_layout = new QHBoxLayout;
379  intel_layout->addWidget(lbl_intel);
380  intel_layout->addWidget(sb_intel);
381 
382  QHBoxLayout *pCount_layout = new QHBoxLayout;
383  pCount_layout->addWidget(lbl_pCount);
384  pCount_layout->addWidget(sb_pCount);
385 
386  QHBoxLayout *personality_layout = new QHBoxLayout;
387  personality_layout->addWidget(lbl_personality);
388  personality_layout->addWidget(sb_personality);
389 
390  QHBoxLayout *pCount_personality_layout = new QHBoxLayout;
391  pCount_personality_layout->addLayout(pCount_layout);
392  pCount_personality_layout->addLayout(personality_layout);
393 
394  QHBoxLayout *ratingLayout=new QHBoxLayout;
395  ratingLayout->addWidget(lbl_rating);
396  ratingLayout->addWidget(combo_rating);
397 
398  lblSpeedWarning = new QLabel(tr("Speed Values Are The Raw Values\nThe km/h speeds are calculated while playing "));
399  advancedModeBox = new QFrame;
400  advancedModeBox->setStyleSheet("QFrame:enabled{background-color: rgba(0,0,0,0);}");
401  advancedModeBox->setLayout(pCount_personality_layout);
402  advancedModeBox->setHidden(true);
403 
404  Final = new QGridLayout;
405  Final->setContentsMargins(0,0,0,0);
406  Final->setAlignment(Qt::AlignCenter);
407  Final->setColumnMinimumWidth(0,width()/4);
408  Final->setColumnMinimumWidth(1,width()/4);
409  Final->setColumnStretch(0,width()/4);
410  Final->setColumnStretch(1,width()/4);
411 
412  Final->addWidget(line_name,0,0);
413  Final->addWidget(combo_sex,0,1);
414  Final->addWidget(lbl_rank,2,0);
415  Final->addWidget(combo_type,1,0);
416  Final->addWidget(cb_cantMate,1,1);
417  Final->addLayout(wins_layout,2,1);
418  Final->addLayout(accel_layout,3,0);
419  Final->addLayout(stamina_layout,3,1);
420  Final->addLayout(coop_layout,4,0);
421  Final->addLayout(intel_layout,4,1);
422  Final->addLayout(speed_layout,5,0,1,2);
423  Final->addLayout(sprint_layout,6,0,1,2);
424  Final->addLayout(ratingLayout,7,0,1,2);
425  Final->addWidget(lblSpeedWarning,8,0,2,2,Qt::AlignCenter);
426  Final->addWidget(advancedModeBox,10,0,1,2);
427  Final->addItem(new QSpacerItem(0,0,QSizePolicy::Preferred,QSizePolicy::Expanding),11,0,1,2);
428  this->setLayout(Final);
429 }
431 {
432  connect(combo_type,SIGNAL(currentIndexChanged(int)),this,SLOT(TypeChanged(int)));
433  connect(combo_sex,SIGNAL(currentIndexChanged(int)),this,SLOT(SexChanged(int)));
434  connect(combo_rating,SIGNAL(currentIndexChanged(int)),this,SLOT(RatingChanged(int)));
435  connect(cb_cantMate,SIGNAL(toggled(bool)),this,SLOT(CantMateChanged(bool)));
436  connect(line_name,SIGNAL(textChanged(QString)),this,SLOT(NameChanged(QString)));
437  connect(sb_sprint,SIGNAL(valueChanged(int)),this,SLOT(SprintChanged(int)));
438  connect(sb_mSprint,SIGNAL(valueChanged(int)),this,SLOT(MsprintChanged(int)));
439  connect(sb_speed,SIGNAL(valueChanged(int)),this,SLOT(SpeedChanged(int)));
440  connect(sb_mSpeed,SIGNAL(valueChanged(int)),this,SLOT(MspeedChanged(int)));
441  connect(sb_stamina,SIGNAL(valueChanged(int)),this,SLOT(StaminaChanged(int)));
442  connect(sb_accel,SIGNAL(valueChanged(int)),this,SLOT(AccelChanged(int)));
443  connect(sb_coop,SIGNAL(valueChanged(int)),this,SLOT(CoopChanged(int)));
444  connect(sb_intel,SIGNAL(valueChanged(int)),this,SLOT(IntelligenceChanged(int)));
445  connect(sb_personality,SIGNAL(valueChanged(int)),this,SLOT(PersonalityChanged(int)));
446  connect(sb_pCount,SIGNAL(valueChanged(int)),this,SLOT(PcountChanged(int)));
447  connect(sb_wins,SIGNAL(valueChanged(int)),this,SLOT(WinsChanged(int)));
448 }
449 void ChocoboEditor::SetChocobo(FF7CHOCOBO choco, QString Processed_Name, bool cant_mate, quint16 stamina,quint8 rating)
450 {
451  choco_data = choco;
452  if( Processed_Name.startsWith('\xff') || Processed_Name == QString(6,'\x20')){Processed_Name ="";}
453  choco_name = Processed_Name;
454  choco_cant_mate = cant_mate;
457  line_name->setText(choco_name);
458  combo_type->setCurrentIndex(choco_data.type);
459  combo_sex->setCurrentIndex(choco_data.sex);
460  if(choco_cant_mate){cb_cantMate->setCheckState(Qt::Checked);}
461  else{cb_cantMate->setCheckState(Qt::Unchecked);}
462  sb_speed->setValue(choco_data.speed);
463  sb_mSpeed->setValue(choco_data.maxspeed);
464  sb_sprint->setValue(choco_data.sprintspd);
465  sb_mSprint->setValue(choco_data.maxsprintspd);
466  sb_stamina->setValue(choco_stamina);
467  sb_accel->setValue(choco_data.accel);
468  sb_wins->setValue(choco_data.raceswon);
469  sb_pCount->setValue(choco_data.pcount);
470  sb_coop->setValue(choco_data.coop);
471  sb_intel->setValue(choco_data.intelligence);
472  sb_personality->setValue(choco_data.personality);
473  combo_rating->setCurrentIndex(choco_rating);
474  getRank();
475 }
477 {
478  if(choco_data.raceswon <3){lbl_rank->setText(tr("Rank: C"));}
479  else if(choco_data.raceswon<6){lbl_rank->setText(tr("Rank: B"));}
480  else if(choco_data.raceswon<9){lbl_rank->setText(tr("Rank: A"));}
481  else{lbl_rank->setText(tr("Rank: S"));}
482 }
483 void ChocoboEditor::setAdvancedMode(bool advancedMode){advancedModeBox->setHidden(!advancedMode);}
484 
quint8 accel(void)
void getRank(void)
void typeChanged(quint8)
a chocobo in save game
void init_display(void)
QSpinBox * sb_sprint
void mSprintChanged(quint16)
void setSprint(int)
void init_connections(void)
void WinsChanged(int)
void setMsprint(int)
void SexChanged(int)
QLabel * lbl_stamina
QSpinBox * sb_personality
QString choco_name
quint8 intelligence(void)
void speedChanged(quint16)
void StaminaChanged(int)
quint16 mSprint(void)
void MsprintChanged(int)
ChocoboEditor(QWidget *parent=0)
void staminaChanged(quint16)
QString name(void)
void accelChanged(quint8)
void NameChanged(QString)
void SpeedChanged(int)
void setType(int)
bool cantMate(void)
void intelligenceChanged(quint8)
QSpinBox * sb_stamina
QComboBox * combo_sex
void winsChanged(quint8)
void MspeedChanged(int)
void resizeEvent(QResizeEvent *ev)
QLineEdit * line_name
void SprintChanged(int)
QComboBox * combo_rating
void RatingChanged(int)
void PersonalityChanged(int)
void CantMateChanged(bool)
void TypeChanged(int)
quint16 choco_stamina
QSpinBox * sb_intel
quint16 sprint(void)
void CoopChanged(int)
void setSex(int)
void setAccel(int)
QLabel * lbl_div_sprint
QLabel * lbl_wins
void setPcount(int)
QLabel * lbl_coop
QGridLayout * Final
QSpinBox * sb_mSprint
void setAdvancedMode(bool)
void setRating(int)
QSpinBox * sb_accel
void mSpeedChanged(quint16)
void setCantMate(bool)
void setIntelligence(int)
quint16 speed(void)
quint8 personality(void)
void PcountChanged(int)
void coopChanged(quint8)
void AccelChanged(int)
void setCoop(int)
QSpinBox * sb_coop
QLabel * lbl_rank
QSpinBox * sb_wins
quint8 sex(void)
QLabel * lbl_personality
void setName(QString)
quint8 wins(void)
QLabel * lbl_sprint
void setPersonality(int)
void cantMateChanged(bool)
quint8 type(void)
void setSpeed(int)
void setMspeed(int)
void setStamina(int)
QFrame * advancedModeBox
QLabel * lbl_div_speed
void sprintChanged(quint16)
QSpinBox * sb_pCount
quint16 stamina(void)
QLabel * lbl_accel
QSpinBox * sb_speed
QComboBox * combo_type
void SetChocobo(FF7CHOCOBO choco, QString Processed_Name="", bool cant_mate=false, quint16 stamina=0, quint8 rating=0)
void setWins(int)
void personalityChanged(quint8)
quint8 coop(void)
quint16 mSpeed(void)
void ratingChanged(quint8)
QLabel * lbl_pCount
QLabel * lblSpeedWarning
void nameChanged(QString)
quint8 choco_rating
void IntelligenceChanged(int)
void sexChanged(quint8)
QLabel * lbl_intel
QLabel * lbl_rating
quint8 pCount(void)
QLabel * lbl_speed
quint8 rating(void)
QCheckBox * cb_cantMate
FF7CHOCOBO choco_data
void pCountChanged(quint8)
QSpinBox * sb_mSpeed