Skip to content

Commit

Permalink
Add optional low fuel warning for aircrafts
Browse files Browse the repository at this point in the history
  • Loading branch information
nextghost committed Jul 11, 2021
1 parent 9fae52c commit c99e9ac
Show file tree
Hide file tree
Showing 15 changed files with 61 additions and 9 deletions.
2 changes: 1 addition & 1 deletion signus-data/data/cs/texts/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ texts_src = brief1.txt brief10.txt brief11.txt brief12.txt brief13.txt \
txt60.txt txt61.txt txt62.txt txt63.txt txt64.txt txt65.txt txt66.txt \
txt67.txt txt68.txt txt69.txt txt7.txt txt70.txt txt71.txt txt73.txt \
txt74.txt txt75.txt txt76.txt txt77.txt txt78.txt txt79.txt txt8.txt \
txt80.txt txt81.txt txt9.txt udes1.txt \
txt80.txt txt81.txt txt82.txt txt83.txt txt84.txt txt9.txt udes1.txt \
udes10.txt udes11.txt udes12.txt udes13.txt udes14.txt udes15.txt \
udes16.txt udes17.txt udes18.txt udes19.txt udes2.txt udes20.txt \
udes21.txt udes22.txt udes23.txt udes24.txt udes25.txt udes26.txt \
Expand Down
1 change: 1 addition & 0 deletions signus-data/data/cs/texts/txt82.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Volitelná vylepšení
1 change: 1 addition & 0 deletions signus-data/data/cs/texts/txt83.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Varování, když letadlům dochází palivo
1 change: 1 addition & 0 deletions signus-data/data/cs/texts/txt84.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Letadlu dochází palivo. Ukončit kolo?
2 changes: 1 addition & 1 deletion signus-data/data/en/texts/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ texts_src = brief1.txt brief10.txt brief11.txt brief12.txt brief13.txt \
txt60.txt txt61.txt txt62.txt txt63.txt txt64.txt txt65.txt txt66.txt \
txt67.txt txt68.txt txt69.txt txt7.txt txt70.txt txt71.txt txt73.txt \
txt74.txt txt75.txt txt76.txt txt77.txt txt78.txt txt79.txt txt8.txt \
txt80.txt txt81.txt txt9.txt udes1.txt \
txt80.txt txt81.txt txt82.txt txt83.txt txt84.txt txt9.txt udes1.txt \
udes10.txt udes11.txt udes12.txt udes13.txt udes14.txt udes15.txt \
udes16.txt udes17.txt udes18.txt udes19.txt udes2.txt udes20.txt \
udes21.txt udes22.txt udes23.txt udes24.txt udes25.txt udes26.txt \
Expand Down
1 change: 1 addition & 0 deletions signus-data/data/en/texts/txt82.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Optional Features
1 change: 1 addition & 0 deletions signus-data/data/en/texts/txt83.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Low fuel warning for aircrafts
1 change: 1 addition & 0 deletions signus-data/data/en/texts/txt84.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Aircraft is running low on fuel. End turn?
1 change: 1 addition & 0 deletions signus/etc/default_signus.ini
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ stop_on_new_enemy = 1 ;
[game]
fix_autofire_saturn = 1 ;
fix_unit_stop = 1 ;
warn_aircraft_fuel = 0 ;
5 changes: 4 additions & 1 deletion signus/src/consts.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@


// Konstanty textu (tlacitka, menu, hlasky) (pole SigText):
#define TXT_COUNT 82
#define TXT_COUNT 85

#define TXT_ALWAYS 0
#define TXT_READYSHOOT 1
Expand Down Expand Up @@ -125,6 +125,9 @@
#define TXT_BUGFIXES 79
#define TXT_FIX_AUTOFIRE_SAT 80
#define TXT_FIX_UNIT_STOP 81
#define TXT_QOL_FEATURES 82
#define TXT_FUEL_WARN_CBOX 83
#define TXT_FUEL_WARN_MSG 84



Expand Down
7 changes: 5 additions & 2 deletions signus/src/global.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ int iniMaximize;
int iniFullscreen;

int iniFixAutofireSaturn, iniFixUnitStop;
int iniWarnAircraftFuel;

char *format_string(const char *fmt, va_list args) {
char *buf;
Expand Down Expand Up @@ -270,6 +271,7 @@ bool LoadINI() {

iniFixAutofireSaturn = iniparser_getint(dict, "game:fix_autofire_saturn", 1);
iniFixUnitStop = iniparser_getint(dict, "game:fix_unit_stop", 1);
iniWarnAircraftFuel = iniparser_getint(dict, "game:warn_aircraft_fuel", 0);

iniparser_freedict(dict);
detect_language();
Expand Down Expand Up @@ -322,8 +324,9 @@ void SaveINI() {

fprintf(f, "\n[game]\n"
"fix_autofire_saturn = %i ;\n"
"fix_unit_stop = %i ;\n",
iniFixAutofireSaturn, iniFixUnitStop);
"fix_unit_stop = %i ;\n"
"warn_aircraft_fuel = %i ;\n",
iniFixAutofireSaturn, iniFixUnitStop, iniWarnAircraftFuel);

fclose(f);
}
Expand Down
1 change: 1 addition & 0 deletions signus/src/global.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ extern int iniEnhancedGuiOn, iniShowStatusbar, iniShowMoveRange, iniShowShootRan

extern int iniJukeboxRepeat, iniJukeboxRandom, iniJukeboxListSize, iniJukeboxSave;
extern int iniFixAutofireSaturn, iniFixUnitStop;
extern int iniWarnAircraftFuel;

extern bool LoadINI();
extern void SaveINI();
Expand Down
29 changes: 28 additions & 1 deletion signus/src/signus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ void SetSoundVolume()

void configure_features(void) {
int fix_autofire = iniFixAutofireSaturn, fix_ustop = iniFixUnitStop;
int warn_aircraft = iniWarnAircraftFuel;
TDialog dlg(9+(VIEW_SX-490)/2, 36+(VIEW_SY-300)/2, 490, 300, "dlgopti");

dlg.Insert(new TButton(340, 20, SigText[TXT_OK], cmOk, TRUE));
Expand All @@ -405,9 +406,14 @@ void configure_features(void) {
dlg.Insert(new TCheckBox(10, 56, 250, SigText[TXT_FIX_UNIT_STOP],
&fix_ustop));

dlg.Insert(new TStaticText(10,86, 150,16, SigText[TXT_QOL_FEATURES]));
dlg.Insert(new TCheckBox(10, 108, 250, SigText[TXT_FUEL_WARN_CBOX],
&warn_aircraft));

if (dlg.Exec() == cmOk) {
iniFixAutofireSaturn = fix_autofire;
iniFixUnitStop = fix_ustop;
iniWarnAircraftFuel = warn_aircraft;
ApplyINI();
SaveINI();
}
Expand Down Expand Up @@ -652,6 +658,24 @@ void DoVisSetup() {
////////////////////////////////////////////////////////////////////////////
////////////////////////// Zpracovani udalosti: ////////////////////////////

int check_aircraft_fuel(void) {
int ret;
TObject *oldsel = SelectedUnit;
TAircraft *aircraft = find_low_fuel_idle_aircraft();

if (!aircraft) {
return 1;
}

aircraft->Select();
ret = PromtBox(SigText[TXT_FUEL_WARN_MSG], cmYes | cmNo);

if (ret == cmYes) {
oldsel->Select();
}

return ret == cmYes;
}

// Seznam ikon:

Expand All @@ -670,7 +694,10 @@ void HandleIcons(TEvent *e) {
break;

case 3:
TurnEnded = TRUE;
if (!iniWarnAircraftFuel || check_aircraft_fuel()) {
TurnEnded = TRUE;
}

break;

case 4:
Expand Down
14 changes: 12 additions & 2 deletions signus/src/uaircraf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,19 @@ TAircraft *GetAircraftAt(int x, int y)
return NULL;
}

TAircraft *find_low_fuel_idle_aircraft(void) {
for (int i = 0; i < AircraftsCnt; i++) {
TAircraft *ptr = Aircrafts[i];

if ((ptr->ID < BADLIFE) && (ptr->GetType() != unRex) &&
(ptr->Fuel <= ptr->MaxFuel / 2) &&
(ptr->TimeUnits == ptr->MaxTimeUnits)) {
return ptr;
}
}



return NULL;
}



Expand Down
3 changes: 2 additions & 1 deletion signus/src/uaircraf.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ extern int AircraftsCnt;
extern TAircraft *GetAircraftAt(int x, int y);
// vraci letadlo nad tim polickem nebo NULL, kdyz je tam pusto


// Find first aircraft that triggers low fuel warning
TAircraft *find_low_fuel_idle_aircraft(void);



Expand Down

0 comments on commit c99e9ac

Please sign in to comment.