From ab53fac4a8c7747db2dedfe1e1bcda485ca3b1e3 Mon Sep 17 00:00:00 2001 From: onpon4 Date: Mon, 4 Jan 2016 09:01:54 -0500 Subject: [PATCH] Moved face sprites to their own array. Man, that was really difficult. Every time something wrong happened, segfault. Ugh... Anyway, that's done. --- src/defs.h | 3 ++- src/gfx.cpp | 1 + src/gfx.h | 1 + src/intermission.cpp | 18 +++++++++--------- src/misc.cpp | 9 +++++---- src/misc.h | 2 +- src/script.cpp | 2 +- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/defs.h b/src/defs.h index 88cc87d..4a77281 100644 --- a/src/defs.h +++ b/src/defs.h @@ -414,7 +414,8 @@ enum { FACE_KLINE, FACE_PHOEBE, FACE_URSULA, - FACE_CREW + FACE_CREW, + FACE_MAX }; // Missions diff --git a/src/gfx.cpp b/src/gfx.cpp index 2fec6bc..80da961 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -23,6 +23,7 @@ along with this program. If not, see . SDL_Surface *gfx_background; SDL_Surface *gfx_sprites[MAX_SPRITES]; +SDL_Surface *gfx_faceSprites[FACE_MAX]; SDL_Surface *gfx_shipSprites[MAX_SHIPSPRITES]; SDL_Surface *gfx_fontSprites[MAX_FONTSPRITES]; SDL_Surface *gfx_shopSprites[MAX_SHOPSPRITES]; diff --git a/src/gfx.h b/src/gfx.h index ba69a3a..f1a004b 100644 --- a/src/gfx.h +++ b/src/gfx.h @@ -24,6 +24,7 @@ along with this program. If not, see . extern SDL_Surface *gfx_background; extern SDL_Surface *gfx_sprites[MAX_SPRITES]; +extern SDL_Surface *gfx_faceSprites[FACE_MAX]; extern SDL_Surface *gfx_shipSprites[MAX_SHIPSPRITES]; extern SDL_Surface *gfx_fontSprites[MAX_FONTSPRITES]; extern SDL_Surface *gfx_shopSprites[MAX_SHOPSPRITES]; diff --git a/src/intermission.cpp b/src/intermission.cpp index 749f980..acbb032 100644 --- a/src/intermission.cpp +++ b/src/intermission.cpp @@ -353,7 +353,7 @@ static void intermission_updateCommsSurface(SDL_Surface *comms) char string[255]; gfx_drawRect(comms, 0, 10, comms->w - 1, 55, 0x00, 0x22, 0x00); - gfx_blit(gfx_sprites[FACE_CHRIS], 20, 15, comms); + gfx_blit(gfx_faceSprites[FACE_CHRIS], 20, 15, comms); gfx_renderString("Chris Bainfield", 80, 15, FONT_WHITE, 0, comms); sprintf(string, "Current Location: %s", systemPlanet[game.stationedPlanet].name); gfx_renderString(string, 80, 35, FONT_WHITE, 0, comms); @@ -375,7 +375,7 @@ static void intermission_createCommsSurface(SDL_Surface *comms) { yOffset = systemPlanet[i].messageSlot * 60; gfx_drawRect(comms, 0, 105 + yOffset, comms->w - 1, 55, 0x00, 0x00, 0x77); - gfx_blit(gfx_sprites[systemPlanet[i].faceImage], 20, 110 + yOffset, comms); + gfx_blit(gfx_faceSprites[systemPlanet[i].faceImage], 20, 110 + yOffset, comms); gfx_renderString(systemPlanet[i].from, 80, 110 + yOffset, FONT_WHITE, 0, comms); gfx_renderString(systemPlanet[i].subject, 80, 130 + yOffset, FONT_CYAN, 0, comms); gfx_renderString("INCOMPLETE", 350, 110 + yOffset, FONT_RED, 0, comms); @@ -426,7 +426,7 @@ static void intermission_createMissionDetailSurface(SDL_Surface *comms, int miss faceNumber = getFace(string); if (faceNumber > -1) { - gfx_blit(gfx_sprites[faceNumber], 10, y, comms); + gfx_blit(gfx_faceSprites[faceNumber], 10, y, comms); col = FONT_WHITE; } else @@ -608,12 +608,12 @@ int intermission() gfx_sprites[34] = gfx_loadImage("gfx/planet_orange.png"); // Faces (as defines) - gfx_sprites[FACE_CHRIS] = gfx_loadImage("gfx/face_chris.png"); - gfx_sprites[FACE_SID] = gfx_loadImage("gfx/face_sid.png"); - gfx_sprites[FACE_KRASS] = gfx_loadImage("gfx/face_krass.png"); - gfx_sprites[FACE_PHOEBE] = gfx_loadImage("gfx/face_phoebe.png"); - gfx_sprites[FACE_URSULA] = gfx_loadImage("gfx/face_ursula.png"); - gfx_sprites[FACE_KLINE] = gfx_loadImage("gfx/face_kline.png"); + gfx_faceSprites[FACE_CHRIS] = gfx_loadImage("gfx/face_chris.png"); + gfx_faceSprites[FACE_SID] = gfx_loadImage("gfx/face_sid.png"); + gfx_faceSprites[FACE_KRASS] = gfx_loadImage("gfx/face_krass.png"); + gfx_faceSprites[FACE_PHOEBE] = gfx_loadImage("gfx/face_phoebe.png"); + gfx_faceSprites[FACE_URSULA] = gfx_loadImage("gfx/face_ursula.png"); + gfx_faceSprites[FACE_KLINE] = gfx_loadImage("gfx/face_kline.png"); engine.done = 0; engine.keyState[KEY_FIRE] = 0; diff --git a/src/misc.cpp b/src/misc.cpp index 929ce5f..13aba1d 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -71,17 +71,18 @@ Sets a radio message that appears at the top of the screen. Used for script events, etc. We send a message priority too, since we don't want Phoebe or Ursula's banter to interrupt an important message */ -void setRadioMessage(signed char face, const char *in, int priority) +void setRadioMessage(int face, const char *in, int priority) { + SDL_Surface *faceShape = NULL; + if ((gfx_textSprites[TS_RADIO].life > 0) && (priority == 0)) return; gfx_createTextObject(TS_RADIO, in, -1, 50, FONT_WHITE); gfx_textSprites[TS_RADIO].life = 240; - SDL_Surface *faceShape = NULL; if (face > -1) - faceShape = gfx_sprites[face]; + faceShape = gfx_faceSprites[face]; gfx_createMessageBox(faceShape, in, 1); } @@ -97,7 +98,7 @@ int getFace(const char *face) for (int i = 0 ; i < 7 ; i++) { if (strcmp(faces[i], face) == 0) - return 90 + i; + return FACE_CHRIS + i; } return -1; diff --git a/src/misc.h b/src/misc.h index 68f694a..c309781 100644 --- a/src/misc.h +++ b/src/misc.h @@ -23,7 +23,7 @@ along with this program. If not, see . extern void clearInfoLines(); void copyInfoLine(int a, int b); extern void setInfoLine(const char *in, int color); -extern void setRadioMessage(signed char face, const char *in, int priority); +extern void setRadioMessage(int face, const char *in, int priority); extern int getFace(const char *face); extern void resetLists(); diff --git a/src/script.cpp b/src/script.cpp index 442b622..311b4a6 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -193,7 +193,7 @@ void doCutscene(int scene) face = NULL; if (cutMessage[currentMessage].face != -1) - face = gfx_sprites[cutMessage[currentMessage].face]; + face = gfx_faceSprites[cutMessage[currentMessage].face]; gfx_createMessageBox(face, cutMessage[currentMessage].message, 0); } }