diff options
| author | Steven Fuller <relnev@icculus.org> | 2001-10-28 01:55:11 +0000 |
|---|---|---|
| committer | Patryk Obara <dreamer.tan@gmail.com> | 2019-08-20 02:22:36 +0200 |
| commit | 7ef81cbc6e162f1fcced6b294f6a4cf880152aa4 (patch) | |
| tree | 62dfa167d79a31b1c54b1fc27d1d8bab2b4c76d3 /src/menus.c | |
| parent | ea23e5a1bbfa4109c3eae664b70268cb45ca48cc (diff) | |
More work on menus.
Diffstat (limited to 'src/menus.c')
| -rw-r--r-- | src/menus.c | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/src/menus.c b/src/menus.c new file mode 100644 index 0000000..a249edc --- /dev/null +++ b/src/menus.c @@ -0,0 +1,334 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "fixer.h" + +#include "strtab.hpp" + +#include "awtexld.h" +#include "chnktexi.h" +#include "hud_layout.h" + +#include "avp_menus.h" + +#define UseLocalAssert Yes +#include "ourasert.h" +#include "ffstdio.h" + +#include <GL/gl.h> + +/* char AAFontWidths[256]; */ + +extern int AAFontImageNumber; + +AVPMENUGFX AvPMenuGfxStorage[MAX_NO_OF_AVPMENUGFXS] = +{ + {"Menus\\fractal.rim"}, + {"Common\\aa_font.rim"},// Warning! Texture from common used + + {"Menus\\copyright.rim"}, + + {"Menus\\FIandRD.rim"}, + {"Menus\\presents.rim"}, + {"Menus\\AliensVPredator.rim"}, + + {"Menus\\sliderbar.rim"},//AVPMENUGFX_SLIDERBAR, + {"Menus\\slider.rim"},//AVPMENUGFX_SLIDER, + + {"Menus\\starfield.rim"}, + {"Menus\\aliens.rim"}, + {"Menus\\Alien.rim"}, + {"Menus\\Marine.rim"}, + {"Menus\\Predator.rim"}, + + {"Menus\\glowy_left.rim"}, + {"Menus\\glowy_middle.rim"}, + {"Menus\\glowy_right.rim"}, + + // Marine level + {"Menus\\MarineEpisode1.rim"}, + {"Menus\\MarineEpisode2.rim"}, + {"Menus\\MarineEpisode3.rim"}, + {"Menus\\MarineEpisode4.rim"}, + {"Menus\\MarineEpisode5.rim"}, + {"Menus\\MarineEpisode6.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + + // Predator level + {"Menus\\PredatorEpisode1.rim"}, + {"Menus\\PredatorEpisode2.rim"}, + {"Menus\\PredatorEpisode3.rim"}, + {"Menus\\PredatorEpisode4.rim"}, + {"Menus\\PredatorEpisode5.rim"}, + {"Menus\\PredatorEpisode5.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + + // Alien level + {"Menus\\AlienEpisode2.rim"}, + {"Menus\\AlienEpisode4.rim"}, + {"Menus\\AlienEpisode1.rim"}, + {"Menus\\AlienEpisode3.rim"}, + {"Menus\\AlienEpisode5.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + {"Menus\\bonus.rim"}, + + // Splash screens + #if MARINE_DEMO + {"MarineSplash\\splash00.rim"}, + {"MarineSplash\\splash01.rim"}, + {"MarineSplash\\splash02.rim"}, + {"MarineSplash\\splash03.rim"}, + {"MarineSplash\\splash04.rim"}, + {"MarineSplash\\splash05.rim"}, + #elif ALIEN_DEMO + {"AlienSplash\\splash00.rim"}, + {"AlienSplash\\splash01.rim"}, + {"AlienSplash\\splash02.rim"}, + {"AlienSplash\\splash03.rim"}, + {"AlienSplash\\splash04.rim"}, + {"AlienSplash\\splash05.rim"}, + #else + {"PredatorSplash\\splash00.rim"}, + {"PredatorSplash\\splash01.rim"}, + {"PredatorSplash\\splash02.rim"}, + {"PredatorSplash\\splash03.rim"}, + {"PredatorSplash\\splash04.rim"}, + {"PredatorSplash\\splash05.rim"}, + #endif +}; + +int LengthOfMenuText(char *textPtr) +{ + fprintf(stderr, "LengthOfMenuText(%s)\n", textPtr); + + return 0; +} + +int RenderMenuText(char *textPtr, int x, int y, int alpha, enum AVPMENUFORMAT_ID format) +{ + fprintf(stderr, "RenderMenuText(%s, %d, %d, %d, %d)\n", textPtr, x, y, alpha, format); + return Hardware_RenderSmallMenuText(textPtr, x, y, alpha, format); +/* + fprintf(stderr, "RenderMenuText(%s, %d, %d, %d, %d)\n", textPtr, x, y, alpha, format); + + return 0; +*/ +} + +int RenderMenuText_Clipped(char *textPtr, int x, int y, int alpha, enum AVPMENUFORMAT_ID format, int topY, int bottomY) +{ + fprintf(stderr, "RenderMenuText_Clipped(%s, %d, %d, %d, %d, %d, %d)\n", textPtr, x, y, alpha, format, topY, bottomY); + + return 0; +} + +int RenderSmallMenuText(char *textPtr, int x, int y, int alpha, enum AVPMENUFORMAT_ID format) +{ + return Hardware_RenderSmallMenuText(textPtr, x, y, alpha, format); +/* + fprintf(stderr, "RenderSmallMenuText(%s, %d, %d, %d, %d)\n", textPtr, x, y, alpha, format); + + return 0; +*/ +} + +int RenderSmallMenuText_Coloured(char *textPtr, int x, int y, int alpha, enum AVPMENUFORMAT_ID format, int red, int green, int blue) +{ + return Hardware_RenderSmallMenuText_Coloured(textPtr, x, y, alpha, format, red, green, blue); +/* + fprintf(stderr, "RenderSmallMenuText_Coloured(%s, %d, %d, %d, %d, %d, %d, %d)\n", textPtr, x, y, alpha, format, red, green, blue); + + return 0; +*/ +} + +void RenderKeyConfigRectangle(int alpha) +{ + void Hardware_RenderKeyConfigRectangle(int alpha); + Hardware_RenderKeyConfigRectangle(alpha); +/* + fprintf(stderr, "RenderKeyConfigRectangle(%d)\n", alpha); +*/ +} + +void RenderHighlightRectangle(int x1, int y1, int x2, int y2, int r, int g, int b) +{ + void Hardware_RenderHighlightRectangle(int x1,int y1,int x2,int y2,int r, int g, int b); + Hardware_RenderHighlightRectangle(x1, y1, x2, y2, r, g, b); +/* + fprintf(stderr, "RenderHighlightRectangle(%d, %d, %d, %d, %d, %d, %d)\n", x1, y1, x2, y2, r, g, b); +*/ +} + +void RenderSmallFontString_Wrapped(char *textPtr,RECT* area,int alpha,int* output_x,int* output_y) +{ + fprintf(stderr, "RenderSmallFontString_Wrapped(%s, %p, %d, %p, %p)\n", textPtr, area, alpha, output_x, output_y); +} + +void LoadAvPMenuGfx(enum AVPMENUGFX_ID menuGfxID) +{ + AVPMENUGFX *gfxPtr; + char buffer[100]; + unsigned int fastFileLength; + void const *pFastFileData; + + GLOBALASSERT(menuGfxID < MAX_NO_OF_AVPMENUGFXS); + + gfxPtr = &AvPMenuGfxStorage[menuGfxID]; + + /* TODO: make sure this doesn't cause a leak */ + InitialiseTextures(); + CL_GetImageFileName(buffer, 100, gfxPtr->FilenamePtr, LIO_RELATIVEPATH); + + pFastFileData = ffreadbuf(buffer, &fastFileLength); + + if (pFastFileData) { + gfxPtr->ImagePtr = AwCreateSurface( + "pxfXY", + pFastFileData, + fastFileLength, + AW_TLF_TRANSP|AW_TLF_CHROMAKEY, + &(gfxPtr->Width), + &(gfxPtr->Height) + ); + } else { + gfxPtr->ImagePtr = AwCreateSurface( + "sfXY", + buffer, + AW_TLF_TRANSP|AW_TLF_CHROMAKEY, + &(gfxPtr->Width), + &(gfxPtr->Height) + ); + } + + GLOBALASSERT(gfxPtr->ImagePtr); + GLOBALASSERT(gfxPtr->Width>0); + GLOBALASSERT(gfxPtr->Height>0); + + gfxPtr->hBackup = 0; +} + +static void ReleaseAvPMenuGfx(enum AVPMENUGFX_ID menuGfxID) +{ + AVPMENUGFX *gfxPtr; + + GLOBALASSERT(menuGfxID < MAX_NO_OF_AVPMENUGFXS); + + + gfxPtr = &AvPMenuGfxStorage[menuGfxID]; + + GLOBALASSERT(gfxPtr); + GLOBALASSERT(gfxPtr->ImagePtr); + + ReleaseDDSurface(gfxPtr->ImagePtr); + + gfxPtr->ImagePtr = NULL; +} + +void LoadAllAvPMenuGfx() +{ + int i; + + for (i = 0; i < AVPMENUGFX_WINNER_SCREEN; i++) { + LoadAvPMenuGfx(i); + } + + AAFontImageNumber = CL_LoadImageOnce("Common\\aa_font.RIM",LIO_D3DTEXTURE|LIO_RELATIVEPATH|LIO_RESTORABLE); + + /* + TODO: load Fonts + TODO: Create cloud texture + TODO: Calculate AA font table? + */ + + fprintf(stderr, "LoadAllAvPMenuGfx()\n"); +} + +void LoadAllSplashScreenGfx() +{ + int i; + + for (i = AVPMENUGFX_SPLASH_SCREEN1; i < MAX_NO_OF_AVPMENUGFXS; i++) { + LoadAvPMenuGfx(i); + } +} + +void InitialiseMenuGfx() +{ + int i; + + for (i = 0; i < MAX_NO_OF_AVPMENUGFXS; i++) { + AvPMenuGfxStorage[i].ImagePtr = NULL; + } + + glDisable(GL_BLEND); + glDisable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + + glClear(GL_COLOR_BUFFER_BIT); +} + +void ReleaseAllAvPMenuGfx() +{ + int i; + + for (i = 0; i < MAX_NO_OF_AVPMENUGFXS; i++) { + if (AvPMenuGfxStorage[i].ImagePtr) { + ReleaseAvPMenuGfx(i); + } + } + + /* + TODO: Unload fonts + */ + fprintf(stderr, "ReleaseAllAvPMenuGfx()\n"); +} + +void DrawAvPMenuGfx(enum AVPMENUGFX_ID menuGfxID, int topleftX, int topleftY, int alpha,enum AVPMENUFORMAT_ID format) +{ + fprintf(stderr, "DrawAvPMenuGfx(%d, %d, %d, %d, %d)\n", menuGfxID, topleftX, topleftY, alpha, format); +} + +void DrawAvPMenuGfx_CrossFade(enum AVPMENUGFX_ID menuGfxID,enum AVPMENUGFX_ID menuGfxID2,int alpha) +{ + fprintf(stderr, "DrawAvPMenuGfx_CrossFade(%d, %d, %d)\n", menuGfxID, menuGfxID2, alpha); +} + +void DrawAvPMenuGfx_Faded(enum AVPMENUGFX_ID menuGfxID, int topleftX, int topleftY, int alpha,enum AVPMENUFORMAT_ID format) +{ + fprintf(stderr, "DrawAvPMenuGfx_Faded(%d, %d, %d, %d, %d)\n", menuGfxID, topleftX, topleftY, alpha, format); +} + +void DrawAvPMenuGfx_Clipped(enum AVPMENUGFX_ID menuGfxID, int topleftX, int topleftY, int alpha,enum AVPMENUFORMAT_ID format, int topY, int bottomY) +{ + fprintf(stderr, "DrawAvPMenuGfx_Clipped(%d, %d, %d, %d, %d, %d, %d)\n", menuGfxID, topleftX, topleftY, alpha, format, topY, bottomY); +} + +int HeightOfMenuGfx(enum AVPMENUGFX_ID menuGfxID) +{ + return AvPMenuGfxStorage[menuGfxID].Height; +} + +void FadedScreen(int alpha) +{ + fprintf(stderr, "FadedScreen(%d)\n", alpha); +} + +void ClearScreenToBlack() +{ + fprintf(stderr, "ClearScreenToBlack()\n"); +} + +#include "aafont.h" |
