diff --git a/README.txt b/README.txt index 7960277..0a0dfb8 100644 --- a/README.txt +++ b/README.txt @@ -85,7 +85,7 @@ Project: Starfighter depends on the following libraries to build: * SDL2_image * SDL2_mixer * SDL2_ttf -* utf8proc +* Pango Once you have all dependencies installed, you can do the following from a terminal window: diff --git a/src/intermission.c b/src/intermission.c index 290e41d..9e79f2f 100644 --- a/src/intermission.c +++ b/src/intermission.c @@ -718,7 +718,7 @@ static void intermission_createCommsSurface(SDL_Surface *comms) gfx_drawRect(comms, 0, 0, comms->w - 1, comms->h - 1, 0x00, 0x00, 0x25); - gfx_renderString("+++ CURRENT MISSIONS (click for info) +++", -1, 15, FONT_GREEN, 0, comms); + gfx_renderUnicode("+++ CURRENT MISSIONS (click for info) +++", -1, 15, FONT_GREEN, 0, comms); int yOffset; @@ -739,7 +739,7 @@ static int intermission_renderDialog(SDL_Surface *comms, int y, int face, const { int newY; gfx_blit(gfx_faceSprites[face], 10, y, comms); - newY = gfx_renderString(string, 80, y, FONT_WHITE, 1, comms) + 25; + newY = gfx_renderUnicode(string, 80, y, FONT_WHITE, 1, comms) + 25; if (newY < y + 60) newY += (60 - (newY - y)); return newY; diff --git a/src/save.c b/src/save.c index 08cb04e..6d91d32 100644 --- a/src/save.c +++ b/src/save.c @@ -394,23 +394,23 @@ void save_createSurface(SDL_Surface *savesSurface, int clickedSlot) gfx_renderString("CANCEL", 150, 270, FONT_WHITE, 0, savesSurface); gfx_renderString("DELETE", 270, 270, FONT_WHITE, 0, savesSurface); - gfx_renderString("SAVE will save the game", 17, 200, FONT_WHITE, 0, + gfx_renderUnicode("SAVE will save the game", 17, 200, FONT_WHITE, 0, savesSurface); - gfx_renderString("CANCEL will unselect that slot", 17, 220, + gfx_renderUnicode("CANCEL will unselect that slot", 17, 220, FONT_WHITE, 0, savesSurface); - gfx_renderString("DELETE will remove the save", 17, 240, + gfx_renderUnicode("DELETE will remove the save", 17, 240, FONT_WHITE, 0, savesSurface); break; case -1: - gfx_renderString("First click a Save game slot to use", 17, 200, + gfx_renderUnicode("First click a Save game slot to use", 17, 200, FONT_WHITE, 0, savesSurface); break; case -10: - gfx_renderString("Game Saved", 130, 200, FONT_WHITE, 0, + gfx_renderUnicode("Game Saved", 130, 200, FONT_WHITE, 0, savesSurface); break; case -11: - gfx_renderString("Save Deleted", 130, 200, FONT_WHITE, 0, + gfx_renderUnicode("Save Deleted", 130, 200, FONT_WHITE, 0, savesSurface); break; } diff --git a/src/shop.c b/src/shop.c index bfc9489..0f7c356 100644 --- a/src/shop.c +++ b/src/shop.c @@ -339,37 +339,37 @@ static void drawShop() case -1: break; case -2: - gfx_renderString("You don't have enough money", 20, 30, FONT_WHITE, + gfx_renderUnicode("You don't have enough money", 20, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -3: - gfx_renderString("Cannot upgrade ship", 5, 22, FONT_WHITE, 0, + gfx_renderUnicode("Cannot upgrade ship", 5, 22, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); - gfx_renderString("Hardware capacity has been reached", 20, 38, + gfx_renderUnicode("Hardware capacity has been reached", 20, 38, FONT_CYAN, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -4: - gfx_renderString("Ammunition limit reached", 20, 30, FONT_WHITE, 0, + gfx_renderUnicode("Ammunition limit reached", 20, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -5: - gfx_renderString("You cannot sell that item", 20, 30, FONT_WHITE, + gfx_renderUnicode("You cannot sell that item", 20, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -6: - gfx_renderString("Nothing to sell", 20, 30, FONT_WHITE, 0, + gfx_renderUnicode("Nothing to sell", 20, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -7: - gfx_renderString("Rockets cannot be bought for Laser or Charger Cannon", + gfx_renderUnicode("Rockets cannot be bought for Laser or Charger Cannon", 5, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -8: - gfx_renderString("You already have that weapon", 20, 30, + gfx_renderUnicode("You already have that weapon", 20, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; case -9: - gfx_renderString("This weapon's ammo limit has been reached", 20, + gfx_renderUnicode("This weapon's ammo limit has been reached", 20, 30, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; default: @@ -386,7 +386,7 @@ static void drawShop() } gfx_renderString(shopItems[shopSelectedItem].name, 5, 22, FONT_WHITE, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); - gfx_renderString(description, 20, 38, FONT_CYAN, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); + gfx_renderUnicode(description, 20, 38, FONT_CYAN, 0, gfx_shopSprites[SHOP_S_ITEM_INFO]); break; } } diff --git a/src/title.c b/src/title.c index 4bcc122..b164bce 100644 --- a/src/title.c +++ b/src/title.c @@ -190,6 +190,8 @@ int title_show() int then; int now; + int x; + int y; int redGlow = 255; int redDir = -2; @@ -199,6 +201,9 @@ int title_show() int skip = 0; int listLength = 6; // menu list length int menuType = MENU_MAIN; + + SDL_Surface *copyrightText; + SDL_Surface *infoText; game_init(); @@ -242,6 +247,18 @@ int title_show() createCheatMenu(); + copyrightText = gfx_createSurface(screen->w, 60); + gfx_renderString("Copyright Parallel Realities 2003", + 5, 0, FONT_WHITE, 0, copyrightText); + gfx_renderString("Copyright Guus Sliepen, Astrid S. de Wijn and others 2012", + 5, 20, FONT_WHITE, 0, copyrightText); + gfx_renderString("Copyright 2015-2019 Julie Marchant", + 5, 40, FONT_WHITE, 0, copyrightText); + + sprintf(buildVersion, "Version %s", VERSION ); + infoText = gfx_createSurface(strlen(buildVersion) * 9 + 6, 20); + gfx_renderString(buildVersion, 0, 0, FONT_WHITE, 0, infoText); + // Set the star motion engine.ssx = -0.5; engine.ssy = 0; @@ -263,8 +280,6 @@ int title_show() aliens[i].face = 0; } - sprintf(buildVersion, "Version %s", VERSION ); - SDL_Rect optionRec; optionRec.x = screen->w / 2 - 110; @@ -327,8 +342,6 @@ int title_show() if ((now - then >= 27500) || (skip)) { - screen_addBuffer(0, 0, screen->w, screen->h); - optionRec.x = screen->w / 2 - 110; optionRec.y = screen->h / 3 + 26 + (20 * selectedOption); if (menuType > MENU_MAIN) @@ -336,6 +349,7 @@ int title_show() optionRec.y += 20; screen_drawRect(optionRec.x, optionRec.y, optionRec.w, optionRec.h, redGlow, 0x00, 0x00); + screen_addBuffer(optionRec.x, optionRec.y, optionRec.w, optionRec.h); switch(menuType) { @@ -379,15 +393,15 @@ int title_show() selectedOption = 4; } - gfx_renderString("Copyright Parallel Realities 2003", - 5, gfx_background->h - 60, FONT_WHITE, 0, gfx_background); - gfx_renderString("Copyright Guus Sliepen, Astrid S. de Wijn and others 2012", - 5, gfx_background->h - 40, FONT_WHITE, 0, gfx_background); - gfx_renderString("Copyright 2015-2017 Julie Marchant", - 5, gfx_background->h - 20, FONT_WHITE, 0, gfx_background); - gfx_renderString(buildVersion, gfx_background->w - 6 - strlen(buildVersion) * 9, - gfx_background->h - 20, FONT_WHITE, 0, gfx_background); - screen_addBuffer(0, 0, screen->w, screen->h); + x = 0; + y = screen->h - copyrightText->h; + screen_blit(copyrightText, x, y); + screen_addBuffer(x, y, copyrightText->w, copyrightText->h); + + x = screen->w - infoText->w; + y = screen->h - infoText->h; + screen_blit(infoText, x, y); + screen_addBuffer(x, y, infoText->w, infoText->h); } } @@ -397,15 +411,6 @@ int title_show() { if ((now - then <= 27500) && (!skip)) { - gfx_renderString("Copyright Parallel Realities 2003", - 5, screen->h - 60, FONT_WHITE, 0, gfx_background); - gfx_renderString("Copyright Guus Sliepen, Astrid S. de Wijn and others 2012", - 5, screen->h - 40, FONT_WHITE, 0, gfx_background); - gfx_renderString("Copyright 2015-2019 Julie Marchant", - 5, screen->h - 20, FONT_WHITE, 0, gfx_background); - gfx_renderString(buildVersion, screen->w - 6 - strlen(buildVersion) * 9, - screen->h - 20, FONT_WHITE, 0, gfx_background); - screen_addBuffer(0, screen->h - 40, screen->w, 40); skip = 1; } else @@ -549,6 +554,8 @@ int title_show() SDL_FreeSurface(prlogo); SDL_FreeSurface(sflogo); + SDL_FreeSurface(copyrightText); + SDL_FreeSurface(infoText); engine.keyState[KEY_FIRE] = 0; engine.keyState[KEY_ALTFIRE] = 0;