ref: 5fd6d3dd6084f2db868d31e1ac6103800e4ae949
parent: 949bfd129b8c56b48b42f688b4e17aa3ed5d62bc
parent: b10d8953347327613c8cd6db37e9807f779f986b
author: Clownacy <Clownacy@users.noreply.github.com>
date: Wed Sep 11 07:11:15 EDT 2019
Merge pull request #52 from GabrielRavier/improveDoConfig Improve DoConfig
--- a/DoConfig/DoConfig.cpp
+++ b/DoConfig/DoConfig.cpp
@@ -4,25 +4,26 @@
* To Public License, Version 2, as published by Sam Hocevar. See
* http://sam.zoy.org/wtfpl/COPYING for more details. */
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <fstream>
#include "FL/Fl.H"
-#include "FL/Fl_Window.H"
-#include "FL/Fl_Radio_Round_Button.H"
-#include "FL/Fl_Choice.H"
#include "FL/Fl_Check_Button.H"
+#include "FL/Fl_Choice.H"
+#include "FL/Fl_Radio_Round_Button.H"
+#include "FL/Fl_Window.H"
+#include <FL/Enumerations.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Round_Button.H>
-#include <FL/Enumerations.H>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <fstream>
#define MAGIC "DOUKUTSU20041206"
#define FONT "Courier New"
-struct data{
+struct data
+{
char magic[32];
char font[64];
unsigned char move[4];
@@ -33,15 +34,17 @@
unsigned char buttons[8][4];
};
-class RadioRow{
- public:
- RadioRow(char offset);
- int value();
- void value(int input);
- private:
- Fl_Group *group;
- Fl_Radio_Round_Button *buttons[6];
- Fl_Group *label;
+class RadioRow
+{
+public:
+ RadioRow(char offset);
+ int value();
+ void value(int input);
+
+private:
+ Fl_Group *group;
+ Fl_Radio_Round_Button *buttons[6];
+ Fl_Group *label;
};
static char config_path[FILENAME_MAX];
@@ -61,30 +64,30 @@
chars[3] = (long_var >> 24) & 0xFF;
}
-RadioRow::RadioRow(char offset){
+RadioRow::RadioRow(char offset)
+{
char *temp = new char[2];
- *(temp) = (char)(49+offset); //Muhahahahahahah!
- *(temp+1) = '\0';
- this->group = new Fl_Group(140+offset*30, 150, 30, 180);
+ temp[0] = '1' + offset;
+ temp[1] = '\0';
+ this->group = new Fl_Group(140 + offset * 30, 150, 30, 180);
this->group->label(temp);
this->group->align(FL_ALIGN_TOP_LEFT);
- for(char i=0;i<6;i++){
- this->buttons[i] = new Fl_Radio_Round_Button(140+offset*30, 150+30*i, 30, 30);
- }
+ for (char i = 0; i < 6; i++)
+ this->buttons[i] = new Fl_Radio_Round_Button(140 + offset * 30, 150 + 30 * i, 30, 30);
this->group->end();
}
-int RadioRow::value(){
+int RadioRow::value()
+{
char i;
- for(i=0;i<6;i++){
- if(this->buttons[i]->value()){
+ for (i = 0; i < 6; i++)
+ if (this->buttons[i]->value())
return (int)i;
- }
- }
return 0;
}
-void RadioRow::value(int input){
+void RadioRow::value(int input)
+{
this->buttons[input]->setonly();
}
@@ -103,53 +106,48 @@
Fl_Group *joystuffcontainer;
RadioRow *joyRows[8];
-void quit(Fl_Widget*, void*){
+void quit(Fl_Widget *, void *)
+{
std::exit(0);
}
-void activatejoy(Fl_Widget*, void*){
- if(joystuffcontainer->active()){
+void activatejoy(Fl_Widget *, void *)
+{
+ if (joystuffcontainer->active())
joystuffcontainer->deactivate();
- } else {
+ else
joystuffcontainer->activate();
- }
}
-void read_Config(){
+void read_Config()
+{
std::fstream fd;
fd.open(config_path, std::ios::in | std::ios::binary);
- fd.read((char*)&config, sizeof(config));
+ fd.read((char *)&config, sizeof(config));
fd.close();
- if (CharsToLong(config.move) == 0){
- movear->setonly();
- } else {
- movegt->setonly();
- }
- if (CharsToLong(config.attack) == 0){
- buttonxz->setonly();
- } else {
- buttonzx->setonly();
- }
- if (CharsToLong(config.okay) == 0){
- okayjump->setonly();
- }else{
- okayattack->setonly();
- }
+ CharsToLong(config.move) ? movegt->setonly() : movear->setonly();
+ CharsToLong(config.attack) ? buttonzx->setonly() : buttonxz->setonly();
+ CharsToLong(config.okay) ? okayattack->setonly() : okayjump->setonly();
+
displaychoice->value(CharsToLong(config.display));
joychoice->value(CharsToLong(config.useJoy));
- if( !CharsToLong(config.useJoy) ){
+
+ if (!CharsToLong(config.useJoy))
joystuffcontainer->deactivate();
- }
- for(char i=0;i<8;i++){
+
+ for (char i = 0; i < 8; i++)
+ {
const unsigned long button = CharsToLong(config.buttons[i]);
- if(button<9 && button>0){
+ if (button < 6 && button > 0)
+ {
const unsigned int button_lookup[6] = {0, 1, 2, 4, 5, 3};
- joyRows[i]->value(button_lookup[button-1]);
+ joyRows[i]->value(button_lookup[button - 1]);
}
}
}
-void write_Config(Fl_Widget*, void*){
+void write_Config(Fl_Widget *, void *)
+{
LongToChars(movegt->value(), config.move);
LongToChars(buttonzx->value(), config.attack);
LongToChars(okayattack->value(), config.okay);
@@ -156,20 +154,23 @@
LongToChars(displaychoice->value(), config.display);
LongToChars(joychoice->value(), config.useJoy);
- for(char i =0;i<8;i++){
+ for (char i = 0; i < 8; i++)
+ {
const unsigned int button_lookup[6] = {0, 1, 2, 5, 3, 4};
- LongToChars(button_lookup[joyRows[i]->value()]+1, config.buttons[i]);
+ LongToChars(button_lookup[joyRows[i]->value()] + 1, config.buttons[i]);
}
std::fstream fd;
fd.open(config_path, std::ios::out | std::ios::binary);
- fd.write((char*)&config, sizeof(config));
+ fd.write((char *)&config, sizeof(config));
fd.close();
exit(0);
}
-int main(int argc, char* argv[]){
+
+int main(int argc, char *argv[])
+{
strcpy(config_path, argv[0]);
- for (size_t i = strlen(config_path); ; --i)
+ for (size_t i = strlen(config_path);; --i)
{
if (i == 0)
{
@@ -187,73 +188,76 @@
Fl_Window *mainw = new Fl_Window(400, 380, "DoConfig - Doukutsu Monogatari Settings");
Fl_Group *movegroup = new Fl_Group(10, 10, 185, 50);
- movegroup->box(FL_THIN_DOWN_BOX);
- movear = new Fl_Radio_Round_Button(10, 10, 185, 20, "Arrows for Movement");
- movear->setonly();
- movegt = new Fl_Radio_Round_Button(10, 40, 185, 20, "<>? for Movement");
+ movegroup->box(FL_THIN_DOWN_BOX);
+ movear = new Fl_Radio_Round_Button(10, 10, 185, 20, "Arrows for Movement");
+ movear->setonly();
+ movegt = new Fl_Radio_Round_Button(10, 40, 185, 20, "<>? for Movement");
movegroup->end();
Fl_Group *buttongroup = new Fl_Group(10, 70, 185, 50);
- buttongroup->box(FL_THIN_DOWN_BOX);
- buttonxz = new Fl_Radio_Round_Button(10, 70, 185, 20, "Z=Jump; X=Attack");
- buttonxz->setonly();
- buttonzx = new Fl_Radio_Round_Button(10, 100, 185, 20, "X=Jump; Z=Attack");
+ buttongroup->box(FL_THIN_DOWN_BOX);
+ buttonxz = new Fl_Radio_Round_Button(10, 70, 185, 20, "Z=Jump; X=Attack");
+ buttonxz->setonly();
+ buttonzx = new Fl_Radio_Round_Button(10, 100, 185, 20, "X=Jump; Z=Attack");
buttongroup->end();
Fl_Group *okaygroup = new Fl_Group(205, 10, 185, 50);
- okaygroup->box(FL_THIN_DOWN_BOX);
- okayjump = new Fl_Radio_Round_Button(205, 10, 185, 20, "Jump=Okay");
- okayjump->setonly();
- okayattack = new Fl_Radio_Round_Button(205, 40, 185, 20, "Attack=Okay");
+ okaygroup->box(FL_THIN_DOWN_BOX);
+ okayjump = new Fl_Radio_Round_Button(205, 10, 185, 20, "Jump=Okay");
+ okayjump->setonly();
+ okayattack = new Fl_Radio_Round_Button(205, 40, 185, 20, "Attack=Okay");
okaygroup->end();
displaychoice = new Fl_Choice(205, 70, 185, 20);
- Fl_Menu_Item screens[] = {
- {"Fullscreen 16-bit"},
- {"Windowed 320x240"},
- {"Windowed 640x480"},
- {"Fullscreen 24-bit"},
- {"Fullscreen 32-bit"},
- {0}};
+ Fl_Menu_Item screens[] = {{"Fullscreen 16-bit"}, {"Windowed 320x240"}, {"Windowed 640x480"}, {"Fullscreen 24-bit"}, {"Fullscreen 32-bit"}, {0}};
displaychoice->menu(screens);
+
joychoice = new Fl_Check_Button(205, 100, 185, 20, "Use Joypad");
joychoice->callback(&activatejoy);
joystuffcontainer = new Fl_Group(10, 130, 380, 200);
- joystuffcontainer->box(FL_THIN_DOWN_BOX);
- for(char i=0;i<8;i++){
- joyRows[i] = new RadioRow(i);
- }
- //There's no Label class alright? I'll switch it as soon as one is introduced.
- Fl_Group *labeljump = new Fl_Group(10, 150, 10, 20);
- labeljump->label("Jump:");
- labeljump->align(FL_ALIGN_RIGHT);
- labeljump->end();
- Fl_Group *labelattack = new Fl_Group(10, 180, 10, 20);
- labelattack->label("Attack:");
- labelattack->align(FL_ALIGN_RIGHT);
- labelattack->end();
- Fl_Group *labelweaponup = new Fl_Group(10, 210, 10, 20);
- labelweaponup->label("Weapon+:");
- labelweaponup->align(FL_ALIGN_RIGHT);
- labelweaponup->end();
- Fl_Group *labelweapondown = new Fl_Group(10, 240, 10, 20);
- labelweapondown->label("Weapon-:");
- labelweapondown->align(FL_ALIGN_RIGHT);
- labelweapondown->end();
- Fl_Group *labelitem = new Fl_Group(10, 270, 10, 20);
- labelitem->label("Items:");
- labelitem->align(FL_ALIGN_RIGHT);
- labelitem->end();
- Fl_Group *labelmap = new Fl_Group(10, 300, 10, 20);
- labelmap->label("Map:");
- labelmap->align(FL_ALIGN_RIGHT);
- labelmap->end();
+ joystuffcontainer->box(FL_THIN_DOWN_BOX);
+ for (char i = 0; i < 8; i++)
+ {
+ joyRows[i] = new RadioRow(i);
+ }
+ // There's no Label class alright? I'll switch it as soon as one is introduced.
+ Fl_Group *labeljump = new Fl_Group(10, 150, 10, 20);
+ labeljump->label("Jump:");
+ labeljump->align(FL_ALIGN_RIGHT);
+ labeljump->end();
+
+ Fl_Group *labelattack = new Fl_Group(10, 180, 10, 20);
+ labelattack->label("Attack:");
+ labelattack->align(FL_ALIGN_RIGHT);
+ labelattack->end();
+
+ Fl_Group *labelweaponup = new Fl_Group(10, 210, 10, 20);
+ labelweaponup->label("Weapon+:");
+ labelweaponup->align(FL_ALIGN_RIGHT);
+ labelweaponup->end();
+
+ Fl_Group *labelweapondown = new Fl_Group(10, 240, 10, 20);
+ labelweapondown->label("Weapon-:");
+ labelweapondown->align(FL_ALIGN_RIGHT);
+ labelweapondown->end();
+
+ Fl_Group *labelitem = new Fl_Group(10, 270, 10, 20);
+ labelitem->label("Items:");
+ labelitem->align(FL_ALIGN_RIGHT);
+ labelitem->end();
+
+ Fl_Group *labelmap = new Fl_Group(10, 300, 10, 20);
+ labelmap->label("Map:");
+ labelmap->align(FL_ALIGN_RIGHT);
+ labelmap->end();
+
joystuffcontainer->end();
Fl_Button *okaybutton = new Fl_Button(10, 340, 185, 30, "Okay");
okaybutton->callback(&write_Config);
+
Fl_Button *cancelbutton = new Fl_Button(205, 340, 185, 30, "Cancel");
cancelbutton->callback(&quit);
--
⑨