From 9efaff27835855cfd795710cfe10e4296f9982ca Mon Sep 17 00:00:00 2001 From: onpon4 Date: Wed, 4 Mar 2015 21:30:23 -0500 Subject: [PATCH] Started renaming functions. I'm going to completely reorganize this absolute mess of a codebase. First thing is to fix the names so that it's more obvious what files they're defined in. Second thing is to move around some functions, and rename some of the cpp and h files, to organize them better. I'm doing these both at once. --- src/Starfighter.cpp | 44 +++++-- src/ai.cpp | 8 +- src/ai.h | 6 +- src/aliens.cpp | 273 ++++++++++++++++++++++---------------------- src/aliens.h | 14 +-- src/bullets.cpp | 2 +- src/game.cpp | 2 +- 7 files changed, 186 insertions(+), 163 deletions(-) diff --git a/src/Starfighter.cpp b/src/Starfighter.cpp index 9316351..cb2691f 100644 --- a/src/Starfighter.cpp +++ b/src/Starfighter.cpp @@ -20,15 +20,19 @@ along with this program. If not, see . #include "Starfighter.h" -int main(int argc, char *argv[]) +int main(int argc, char **argv) { + bool cheatAttempt; + int cheatCount; + int section; + if (chdir(DATADIR) == -1) printf("Warning: failed to change directory to \"%s\"\n", DATADIR); defineGlobals(); // Must do this first! - bool cheatAttempt = false; - int cheatCount = 0; + cheatAttempt = false; + cheatCount = 0; if (argc > 1) { @@ -49,15 +53,27 @@ int main(int argc, char *argv[]) for (int i = 1 ; i < argc ; i++) { if (strcmp(argv[i], "-nomove") == 0) - {printf("Enemy movement disabled\n"); dev.moveAliens = 0;} + { + printf("Enemy movement disabled\n"); + dev.moveAliens = 0; + } if (strcmp(argv[i], "-nofire") == 0) - {printf("Enemy firing disabled\n"); dev.fireAliens = 0;} + { + printf("Enemy firing disabled\n"); + dev.fireAliens = 0; + } if (strcmp(argv[i], "-cheat") == 0) cheatAttempt = true; if (strcmp(argv[i], "-noaudio") == 0) - {printf("No Audio\n"); engine.useAudio = false;} + { + printf("No Audio\n"); + engine.useAudio = false; + } if (strcmp(argv[i], "-mono") == 0) - {printf("Mono sound output\n"); engine.useAudio = true;} + { + printf("Mono sound output\n"); + engine.useAudio = true; + } if ((strcmp(argv[i], "humans") == 0) && (cheatCount == 0)) cheatCount = 1; if ((strcmp(argv[i], "do") == 0) && (cheatCount == 1)) @@ -65,8 +81,11 @@ int main(int argc, char *argv[]) if ((strcmp(argv[i], "it") == 0) && (cheatCount == 2)) cheatCount = 3; if (((strcmp(argv[i], "better") == 0) && (cheatCount == 3)) || - (strcmp(argv[i], "humansdoitbetter") == 0)) - {printf("Humans do it better! Cheats enabled.\n"); engine.cheat = true;} + (strcmp(argv[i], "humansdoitbetter") == 0)) + { + printf("Humans do it better! Cheats enabled.\n"); + engine.cheat = true; + } } atexit(cleanUp); @@ -100,14 +119,14 @@ int main(int argc, char *argv[]) showStory(); // Determine which part of the game we will go to... - int section = 0; + section = 0; currentGame.difficulty = DIFFICULTY_NORMAL; newGame(); while (true) { - switch(section) + switch (section) { case 0: section = doTitle(); @@ -118,7 +137,8 @@ int main(int argc, char *argv[]) break; case 2: - if (currentGame.stationedPlanet == -1) {doCutscene(0);} + if (currentGame.stationedPlanet == -1) + doCutscene(0); section = mainGameLoop(); break; } diff --git a/src/ai.cpp b/src/ai.cpp index 10ee94f..efa0e8d 100644 --- a/src/ai.cpp +++ b/src/ai.cpp @@ -25,7 +25,7 @@ Aliens are assigned various AI types and this routine makes use of them. Levels of aggression, defence and evasion are all here. */ -void setEnemyAI(object *theEnemy) +void ai_set(object *theEnemy) { // Make friendly craft generally concentrate on smaller fighters if ((theEnemy->flags & FL_FRIEND) && (theEnemy->target == &enemy[WC_BOSS])) @@ -106,7 +106,7 @@ void setEnemyAI(object *theEnemy) } } -void setKlineAttackMethod(object *theEnemy) +void ai_setKlineAttackMethod(object *theEnemy) { theEnemy->maxShield -= 500; if (theEnemy->maxShield == 0) @@ -143,7 +143,7 @@ void setKlineAttackMethod(object *theEnemy) /* This AI is exclusively for Kline. */ -void setKlineAI(object *theEnemy) +void ai_setKline(object *theEnemy) { // Weapon type change if ((rand() % 3) == 0) @@ -186,7 +186,7 @@ void setKlineAI(object *theEnemy) theEnemy->flags |= FL_CIRCLES; break; default: - setEnemyAI(theEnemy); + ai_set(theEnemy); break; } } diff --git a/src/ai.h b/src/ai.h index 0f65e4b..af49f46 100644 --- a/src/ai.h +++ b/src/ai.h @@ -20,8 +20,8 @@ along with this program. If not, see . #ifndef AI_H #define AI_H -extern void setEnemyAI(object *theEnemy); -extern void setKlineAttackMethod(object *theEnemy); -extern void setKlineAI(object *theEnemy); +void ai_set(object *theEnemy); +void ai_setKlineAttackMethod(object *theEnemy); +void ai_setKline(object *theEnemy); #endif diff --git a/src/aliens.cpp b/src/aliens.cpp index 18b212a..e716357 100644 --- a/src/aliens.cpp +++ b/src/aliens.cpp @@ -22,7 +22,25 @@ along with this program. If not, see . object defEnemy[MAX_DEFALIENS]; object enemy[MAX_ALIENS]; -static bool placeAlien(object *theEnemy) +/* +This simply pulls back an alien from the array that is +"dead" (no shield) and returns the index number so we can have +a new one. +*/ +static int alien_getFreeIndex() +{ + for (int i = 0 ; i < engine.maxAliens ; i++) + { + if (!enemy[i].active) + { + return i; + } + } + + return -1; +} + +static bool alien_place(object *theEnemy) { if (rand() % 2 == 0) theEnemy->x = rrand(screen->w, screen->w * 2); @@ -52,90 +70,9 @@ static bool placeAlien(object *theEnemy) return true; } -/* -This simply pulls back an alien from the array that is -"dead" (no shield) and returns the index number so we can have -a new one. -*/ -static int getAlien() +bool alien_add() { - for (int i = 0 ; i < engine.maxAliens ; i++) - { - if (!enemy[i].active) - { - return i; - } - } - - return -1; -} - -static void addDrone(object *host) -{ - int index = getAlien(); - - if (index == -1) - return; - - enemy[index] = defEnemy[CD_DRONE]; - enemy[index].active = true; - enemy[index].face = rand() % 2; - enemy[index].owner = &enemy[index]; // Most enemies will own themselves - enemy[index].target = &enemy[index]; - enemy[index].thinktime = (50 + rand() % 50); - enemy[index].systemPower = enemy[index].maxShield; - enemy[index].deathCounter = 0 - (enemy[index].maxShield * 3); - enemy[index].hit = 0; - - enemy[index].x = host->x + rand() % 50; - enemy[index].y = host->y + rand() % 50; -} - -static void addSmallAsteroid(object *host) -{ - if (engine.missionCompleteTimer != 0) - return; - - int index = -1; - int debris = 1 + rand() % 10; - - for (int i = 0 ; i < debris ; i++) - addBullet(&weapon[W_ROCKETS], host, 0, 0); - - for (int i = 10 ; i < 20 ; i++) - if (!enemy[i].active) - index = i; - - if (index == -1) - return; - - if ((rand() % 10) > 3) - { - enemy[index] = defEnemy[CD_ASTEROID2]; - enemy[index].imageIndex[0] = enemy[index].imageIndex[1] = 39 + rand() % 2; - enemy[index].image[0] = shipShape[enemy[index].imageIndex[0]]; - enemy[index].image[1] = shipShape[enemy[index].imageIndex[1]]; - } - else - { - enemy[index] = defEnemy[CD_DRONE]; - } - - enemy[index].owner = &enemy[index]; // Most enemies will own themselves - enemy[index].target = &enemy[index]; - enemy[index].thinktime = 1; - enemy[index].systemPower = enemy[index].maxShield; - enemy[index].deathCounter = 0 - (enemy[index].maxShield * 3); - enemy[index].hit = 0; - - enemy[index].x = host->x; - enemy[index].y = host->y; - enemy[index].active = true; -} - -bool addAlien() -{ - int index = getAlien(); + int index = alien_getFreeIndex(); if ((index == -1) || (currentGame.area == 23) || (currentGame.area == 26)) return 0; @@ -143,7 +80,7 @@ bool addAlien() signed char *alienArray; signed char numberOfAliens = 1; - alienArray = new signed char[5]; + alienArray = new signed char[8]; switch(currentGame.area) { @@ -272,7 +209,7 @@ bool addAlien() // Attempts to place an alien. If it fails, the alien is deactivated. for (int i = 0 ; i < 100 ; i++) { - if (placeAlien(&enemy[index])) + if (alien_place(&enemy[index])) break; enemy[index].active = false; @@ -299,7 +236,102 @@ bool addAlien() return true; } -static void getPreDefinedAliens() +static void alien_addDrone(object *hostEnemy) +{ + int index = alien_getFreeIndex(); + + if (index == -1) + return; + + enemy[index] = defEnemy[CD_DRONE]; + enemy[index].active = true; + enemy[index].face = rand() % 2; + enemy[index].owner = &enemy[index]; // Most enemies will own themselves + enemy[index].target = &enemy[index]; + enemy[index].thinktime = (50 + rand() % 50); + enemy[index].systemPower = enemy[index].maxShield; + enemy[index].deathCounter = 0 - (enemy[index].maxShield * 3); + enemy[index].hit = 0; + + enemy[index].x = hostEnemy->x + rand() % 50; + enemy[index].y = hostEnemy->y + rand() % 50; +} + +static void alien_addSmallAsteroid(object *hostEnemy) +{ + if (engine.missionCompleteTimer != 0) + return; + + int index = -1; + int debris = 1 + rand() % 10; + + for (int i = 0 ; i < debris ; i++) + addBullet(&weapon[W_ROCKETS], hostEnemy, 0, 0); + + for (int i = 10 ; i < 20 ; i++) + if (!enemy[i].active) + index = i; + + if (index == -1) + return; + + if ((rand() % 10) > 3) + { + enemy[index] = defEnemy[CD_ASTEROID2]; + enemy[index].imageIndex[0] = enemy[index].imageIndex[1] = 39 + rand() % 2; + enemy[index].image[0] = shipShape[enemy[index].imageIndex[0]]; + enemy[index].image[1] = shipShape[enemy[index].imageIndex[1]]; + } + else + { + enemy[index] = defEnemy[CD_DRONE]; + } + + enemy[index].owner = &enemy[index]; // Most enemies will own themselves + enemy[index].target = &enemy[index]; + enemy[index].thinktime = 1; + enemy[index].systemPower = enemy[index].maxShield; + enemy[index].deathCounter = 0 - (enemy[index].maxShield * 3); + enemy[index].hit = 0; + + enemy[index].x = hostEnemy->x; + enemy[index].y = hostEnemy->y; + enemy[index].active = true; +} + +static void alien_addFriendly(int type) +{ + if (type != FR_SID) + enemy[type] = defEnemy[CD_FRIEND]; + else + enemy[type] = defEnemy[CD_SID]; + + enemy[type].owner = &enemy[type]; + enemy[type].target = &enemy[type]; + enemy[type].active = true; + + if (rand() % 2 == 0) + enemy[type].x = rrand((int)(screen->w / 2), (int)(screen->w / 2) + 150); + else + enemy[type].x = rrand((int)(screen->w / 2) - 150, (int)(screen->w / 2)); + + if (rand() % 2 == 0) + enemy[type].y = rrand((int)(screen->h / 2), (int)(screen->h / 2) + 150); + else + enemy[type].y = rrand((int)(screen->h / 2) - 150, (int)(screen->h / 2)); + + if (type == FR_PHOEBE) + enemy[type].classDef = CD_PHOEBE; + + if (type == FR_URSULA) + enemy[type].classDef = CD_URSULA; + + // For the sake of it being the final battle :) + if (currentGame.area == 25) + enemy[type].flags |= FL_IMMORTAL; +} + +static void aliens_getPreDefined() { FILE *fp; char string[255]; @@ -324,15 +356,16 @@ static void getPreDefinedAliens() enemy[index].active = true; /* - we make 1000 attempts to place this enemy since it is required. If after 1000 attempts - we still have managed to place the alien, then it simple isn't going to happen and we - will just exit the game. The chances of this happening are very very low! + we make 1000 attempts to place this enemy since it is required. If after + 1000 attempts we still haven't managed to place the alien, then it + simply isn't going to happen and we will just exit the game. The chances + of this happening are very very low! */ while (true) { placeAttempt++; - if (placeAlien(&enemy[index])) + if (alien_place(&enemy[index])) break; if (placeAttempt > 1000) @@ -465,38 +498,6 @@ static void getPreDefinedAliens() } } -static void addFriendly(int type) -{ - if (type != FR_SID) - enemy[type] = defEnemy[CD_FRIEND]; - else - enemy[type] = defEnemy[CD_SID]; - - enemy[type].owner = &enemy[type]; - enemy[type].target = &enemy[type]; - enemy[type].active = true; - - if (rand() % 2 == 0) - enemy[type].x = rrand((int)(screen->w / 2), (int)(screen->w / 2) + 150); - else - enemy[type].x = rrand((int)(screen->w / 2) - 150, (int)(screen->w / 2)); - - if (rand() % 2 == 0) - enemy[type].y = rrand((int)(screen->h / 2), (int)(screen->h / 2) + 150); - else - enemy[type].y = rrand((int)(screen->h / 2) - 150, (int)(screen->h / 2)); - - if (type == FR_PHOEBE) - enemy[type].classDef = CD_PHOEBE; - - if (type == FR_URSULA) - enemy[type].classDef = CD_URSULA; - - // For the sake of it being the final battle :) - if (currentGame.area == 25) - enemy[type].flags |= FL_IMMORTAL; -} - void setTarget(int index) { engine.targetIndex = index; @@ -515,7 +516,7 @@ void initAliens() engine.targetIndex = -1; - getPreDefinedAliens(); + aliens_getPreDefined(); // specific for Phoebe being captured! if (currentGame.area == 7) @@ -525,16 +526,17 @@ void initAliens() enemy[WC_KLINE].active = false; for (int i = 0 ; i < engine.maxAliens ; i++) - addAlien(); + alien_add(); if (currentGame.hasWingMate1) - addFriendly(FR_PHOEBE); + alien_addFriendly(FR_PHOEBE); if (currentGame.hasWingMate2) - addFriendly(FR_URSULA); + alien_addFriendly(FR_URSULA); - if ((currentGame.area == 9) || (currentGame.area == 17) || (currentGame.area == 25)) - addFriendly(FR_SID); + if ((currentGame.area == 9) || (currentGame.area == 17) || + (currentGame.area == 25)) + alien_addFriendly(FR_SID); // Disable Wingmates for certain missions switch (currentGame.area) @@ -991,7 +993,8 @@ void doAliens() theEnemy->target = theEnemy; // Specific to Sid to stop him pissing about(!) - if ((theEnemy->classDef == CD_SID) && (theEnemy->target->flags & FL_DISABLED)) + if ((theEnemy->classDef == CD_SID) && + (theEnemy->target->flags & FL_DISABLED)) theEnemy->target = theEnemy; if (theEnemy->target == theEnemy) @@ -1012,10 +1015,10 @@ void doAliens() if ((!(theEnemy->flags & FL_DISABLED)) && (theEnemy->thinktime == 0) && (theEnemy->target != theEnemy) && (theEnemy->owner == theEnemy)) { - if (theEnemy->classDef != CD_KLINE) - setEnemyAI(theEnemy); + if (theEnemy->classDef == CD_KLINE) + ai_setKline(theEnemy); else - setKlineAI(theEnemy); + ai_set(theEnemy); theEnemy->thinktime = (rand() % 25) * 10; @@ -1042,7 +1045,7 @@ void doAliens() theEnemy->face = 0; if ((theEnemy->flags & FL_DEPLOYDRONES) && ((rand() % 300) == 0)) - addDrone(theEnemy); + alien_addDrone(theEnemy); if (theEnemy->flags & FL_LEAVESECTOR) { @@ -1235,7 +1238,7 @@ void doAliens() { int i = 1 + (rand() % 3); for (int j = 0 ; j < i ; j++) - addSmallAsteroid(theEnemy); + alien_addSmallAsteroid(theEnemy); } } } diff --git a/src/aliens.h b/src/aliens.h index 0ffae41..e414094 100644 --- a/src/aliens.h +++ b/src/aliens.h @@ -23,12 +23,12 @@ along with this program. If not, see . extern object defEnemy[MAX_DEFALIENS]; extern object enemy[MAX_ALIENS]; -extern bool addAlien(); -extern void setTarget(int index); -extern void initAliens(); -extern void killAllAliens(); -extern void doAliens(); -extern void setAlienShapes(); -extern void defineAliens(); +bool alien_add(); +void setTarget(int index); +void initAliens(); +void killAllAliens(); +void doAliens(); +void setAlienShapes(); +void defineAliens(); #endif diff --git a/src/bullets.cpp b/src/bullets.cpp index fd7f0fd..1c6c71e 100644 --- a/src/bullets.cpp +++ b/src/bullets.cpp @@ -621,7 +621,7 @@ void doBullets() } else { - setKlineAttackMethod(theEnemy); + ai_setKlineAttackMethod(theEnemy); } } } diff --git a/src/game.cpp b/src/game.cpp index 163038e..51031c4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -276,7 +276,7 @@ int mainGameLoop() wrapInt(&(--engine.addAliens), 0, currentMission.addAliens); if ((engine.addAliens == 0) && (allowableAliens > 0)) { - allowableAliens -= addAlien(); + allowableAliens -= alien_add(); } }