This commit is contained in:
Paul 2000-11-28 00:06:22 +00:00
parent f35357baf1
commit 81c8d618c9
13 changed files with 182 additions and 40 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -17,6 +17,7 @@ sfx/ingame.pxm
sfx/ingame.vb sfx/ingame.vb
sfx/ingame.vh sfx/ingame.vh
backdrop/credits.gfx backdrop/credits.gfx
backdrop/sky.gfx
{ SYSTEM_CACHE 4 { SYSTEM_CACHE 4
} }
ui/uigfx.spr ui/uigfx.spr

View File

@ -123,7 +123,7 @@ INGAMEFX_GFX_OUT_DIR := $(DATA_OUT)/ingamefx
INGAMEFX_GFX_NONTRANS := INGAMEFX_GFX_NONTRANS :=
INGAMEFX_GFX_NONTRANS_IN := $(foreach FILE,$(INGAMEFX_GFX_NONTRANS),$(INGAMEFX_NONTRANS_DIR)/$(FILE)) INGAMEFX_GFX_NONTRANS_IN := $(foreach FILE,$(INGAMEFX_GFX_NONTRANS),$(INGAMEFX_NONTRANS_DIR)/$(FILE))
INGAMEFX_GFX_TRANS := +bubble_small.bmp +bubble_flower.bmp INGAMEFX_GFX_TRANS := +bubble_1.bmp +bubble_2.bmp +bubble_3.bmp
INGAMEFX_GFX_TRANS_IN := $(foreach FILE,$(INGAMEFX_GFX_TRANS),$(INGAMEFX_GFX_DIR)/$(FILE)) INGAMEFX_GFX_TRANS_IN := $(foreach FILE,$(INGAMEFX_GFX_TRANS),$(INGAMEFX_GFX_DIR)/$(FILE))
INGAMEFX_GFX_TEX_IN := ${INGAMEFX_GFX_NONTRANS_IN} ${INGAMEFX_GFX_TRANS_IN} INGAMEFX_GFX_TEX_IN := ${INGAMEFX_GFX_NONTRANS_IN} ${INGAMEFX_GFX_TRANS_IN}
@ -181,7 +181,7 @@ GFX_DATA_OUT += $(FRONTEND_GFX_TEX_OUT)
# Big TGA backdrops # Big TGA backdrops
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
BACKDROPS_IN_DIR := $(GRAF_DIR)/backdrop BACKDROPS_IN_DIR := $(GRAF_DIR)/backdrop
BACKDROPS_IN := credits BACKDROPS_IN := credits sky
BACKDROPS_OUT_DIR := $(DATA_OUT)/backdrop BACKDROPS_OUT_DIR := $(DATA_OUT)/backdrop
BACKDROPS_OUT := $(foreach SCREEN,$(BACKDROPS_IN),$(BACKDROPS_OUT_DIR)/$(SCREEN).gfx) BACKDROPS_OUT := $(foreach SCREEN,$(BACKDROPS_IN),$(BACKDROPS_OUT_DIR)/$(SCREEN).gfx)

View File

@ -96,7 +96,7 @@ void CFrontEndCredits::shutdown()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
u8 *s_image; static u8 *s_image;
void CFrontEndCredits::select() void CFrontEndCredits::select()
{ {
m_shuttingDown=false; m_shuttingDown=false;

View File

@ -83,9 +83,6 @@ static int count;
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndDemoMode::init() void CFrontEndDemoMode::init()
{ {
m_sprites=new ("Demomode Sprites") SpriteBank();
m_sprites->load(FRONTEND_FRONTEND_SPR);
m_smallFont=new ("Demomode SmallFont") FontBank(); m_smallFont=new ("Demomode SmallFont") FontBank();
m_smallFont->initialise(&standardFont); m_smallFont->initialise(&standardFont);
m_smallFont->setJustification(FontBank::JUST_CENTRE); m_smallFont->setJustification(FontBank::JUST_CENTRE);
@ -101,7 +98,6 @@ void CFrontEndDemoMode::init()
void CFrontEndDemoMode::shutdown() void CFrontEndDemoMode::shutdown()
{ {
m_smallFont->dump(); delete m_smallFont; m_smallFont->dump(); delete m_smallFont;
m_sprites->dump(); delete m_sprites;
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -140,12 +136,7 @@ void CFrontEndDemoMode::render()
sFrameHdr *fh; sFrameHdr *fh;
// Game logo/title // Game logo/title
fh=m_sprites->getFrameHeader(FRM__SBLOGO); CFrontEndScene::renderLogo();
m_sprites->printFT4(fh,256-(fh->W/2),LOGO_CENTRE_Y-(fh->H/2),0,0,220);
m_smallFont->setColour(GAME_TITLE_TEXT_R,GAME_TITLE_TEXT_G,GAME_TITLE_TEXT_B);
m_smallFont->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE);
m_smallFont->setColour(0,0,0);
m_smallFont->print(256+1,GAME_TITLE_TEXT_CENTRE_Y+1,STR__FRONTEND__GAME_TITLE);
if(!CFader::isFading()) if(!CFader::isFading())
{ {

View File

@ -64,7 +64,6 @@ private:
}; };
class FontBank *m_smallFont; class FontBank *m_smallFont;
class SpriteBank *m_sprites;
int m_shuttingDown; int m_shuttingDown;
}; };

View File

@ -42,6 +42,18 @@
#include "frontend\credits.h" #include "frontend\credits.h"
#endif #endif
#ifndef __GFX_SPRBANK_H__
#include "gfx\sprbank.h"
#endif
#ifndef __GFX_FONT_H__
#include "gfx\font.h"
#endif
#ifndef __LOCALE_TEXTDBASE_H__
#include "locale\textdbase.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -49,6 +61,11 @@
/* Data /* Data
---- */ ---- */
#ifndef __SPR_FRONTEND_H__
#include <frontend.h>
#endif
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Tyepdefs && Defines Tyepdefs && Defines
------------------- */ ------------------- */
@ -87,6 +104,14 @@ CFrontEndMode *CFrontEndScene::s_modeCodes[]=
CFrontEndScene FrontEndScene; CFrontEndScene FrontEndScene;
int rsx=4096;
int rsy=4096;
int rsr=0;
int rspeed=0;
SpriteBank *m_sprites;
FontBank *m_font;
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
@ -103,6 +128,13 @@ void CFrontEndScene::init()
m_exitToGame=false; m_exitToGame=false;
m_mode=MODE__NONE; m_mode=MODE__NONE;
setMode(MODE__MAIN_TITLES); setMode(MODE__MAIN_TITLES);
m_sprites=new ("MainTitle Sprites") SpriteBank();
m_sprites->load(FRONTEND_FRONTEND_SPR);
m_font=new ("frontendfont") FontBank();
m_font->initialise(&standardFont);
m_font->setJustification(FontBank::JUST_CENTRE);
} }
@ -114,6 +146,9 @@ void CFrontEndScene::init()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndScene::shutdown() void CFrontEndScene::shutdown()
{ {
m_font->dump(); delete m_font;
m_sprites->dump(); delete m_sprites;
for(int i=0;i<MODE__NONE;i++) for(int i=0;i<MODE__NONE;i++)
{ {
s_modeCodes[i]->shutdown(); s_modeCodes[i]->shutdown();
@ -143,6 +178,8 @@ void CFrontEndScene::think(int _frames)
{ {
CFrontEndMode *mode; CFrontEndMode *mode;
thinkLogo(_frames);
mode=s_modeCodes[m_mode]; mode=s_modeCodes[m_mode];
mode->think(_frames); mode->think(_frames);
if(mode->isReadyToExit()) if(mode->isReadyToExit())
@ -164,6 +201,37 @@ int CFrontEndScene::readyToShutdown()
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CFrontEndScene::renderLogo()
{
sFrameHdr *fh;
fh=m_sprites->getFrameHeader(FRM__SBLOGO);
m_sprites->printRotatedScaledSprite(fh,256,LOGO_CENTRE_Y,rsx,rsy,rsr,220);
m_font->setColour(GAME_TITLE_TEXT_R,GAME_TITLE_TEXT_G,GAME_TITLE_TEXT_B);
m_font->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE);
m_font->setColour(0,0,0);
m_font->print(256+1,GAME_TITLE_TEXT_CENTRE_Y+1,STR__FRONTEND__GAME_TITLE);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CFrontEndScene::thinkLogo(int _frames)
{
rsr=(rsr+(_frames*rspeed))&4095;
}
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:

View File

@ -50,6 +50,15 @@ public:
MODE__EXIT_TO_GAME, MODE__EXIT_TO_GAME,
} FrontEndMode; } FrontEndMode;
enum
{
LOGO_CENTRE_Y=74,
GAME_TITLE_TEXT_CENTRE_Y=100,
GAME_TITLE_TEXT_R=128,
GAME_TITLE_TEXT_G=128,
GAME_TITLE_TEXT_B=128,
};
void init(); void init();
void shutdown(); void shutdown();
void render(); void render();
@ -57,8 +66,11 @@ public:
int readyToShutdown(); int readyToShutdown();
char *getSceneName() {return"FrontEnd";} char *getSceneName() {return"FrontEnd";}
static void renderLogo();
private: private:
void thinkLogo(int _frames);
void setMode(FrontEndMode _newMode); void setMode(FrontEndMode _newMode);
int m_exitToGame; int m_exitToGame;

View File

@ -50,6 +50,14 @@
#include "gui\gframe.h" #include "gui\gframe.h"
#endif #endif
#ifndef _FILEIO_HEADER_
#include "fileio\fileio.h"
#endif
#ifndef __VID_HEADER_
#include "system\vid.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -147,6 +155,7 @@ void CFrontEndMainTitles::shutdown()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
static u8 *s_image;
void CFrontEndMainTitles::select() void CFrontEndMainTitles::select()
{ {
m_mode=MODE__PRESS_START; m_mode=MODE__PRESS_START;
@ -159,6 +168,10 @@ void CFrontEndMainTitles::select()
m_demoTimeout=0; m_demoTimeout=0;
s_image=CFileIO::loadFile(BACKDROP_SKY_GFX);
ASSERT(s_image);
SetScreenImage(s_image);
CFader::setFadingIn(); CFader::setFadingIn();
} }
@ -170,6 +183,9 @@ void CFrontEndMainTitles::select()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndMainTitles::unselect() void CFrontEndMainTitles::unselect()
{ {
ClearScreenImage();
MemFree(s_image); s_image=NULL;
m_mainMenu->unselect(); m_mainMenu->unselect();
} }
@ -192,31 +208,58 @@ int isy=3;
int isw=100; int isw=100;
int ish=56; int ish=56;
int rsx=4096;
int rsy=4096;
int rsr=0;
int rspeed=0;
void CFrontEndMainTitles::render() void CFrontEndMainTitles::render()
{ {
sFrameHdr *fh; sFrameHdr *fh;
POLY_FT4 *ft4; POLY_FT4 *ft4;
// Game logo/title // Game logo/title
fh=m_sprites->getFrameHeader(FRM__SBLOGO); CFrontEndScene::renderLogo();
// m_sprites->printFT4(fh,256-(fh->W/2),LOGO_CENTRE_Y-(fh->H/2),0,0,220);
m_sprites->printRotatedScaledSprite(fh,256,LOGO_CENTRE_Y,rsx,rsy,rsr,220);
m_smallFont->setColour(GAME_TITLE_TEXT_R,GAME_TITLE_TEXT_G,GAME_TITLE_TEXT_B);
m_smallFont->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE);
m_smallFont->setColour(0,0,0);
m_smallFont->print(256+1,GAME_TITLE_TEXT_CENTRE_Y+1,STR__FRONTEND__GAME_TITLE);
// The island // The island
fh=m_sprites->getFrameHeader(FRM__ISLAND); fh=m_sprites->getFrameHeader(FRM__ISLAND);
m_sprites->printFT4(fh,ISLAND_LEFT_X,ISLAND_BOTTOM_Y-(fh->H),0,0,221); m_sprites->printFT4(fh,ISLAND_LEFT_X,ISLAND_BOTTOM_Y-(fh->H),0,0,221);
// Sky // Sky
/*
// POLY_FT4 *CFrontEndMainTitles::prepareSeaPortionFT4(sFrameHdr *_fh,int _x,int _y,int _w,int _h,int _rgb)
if(xstep&&ystep)
{
int x,y,f;
sFrameHdr *fh;
POLY_FT4 *ft4;
fh=m_sprites->getFrameHeader(FRM_SKY);
for(x=0;x<512;x+=xstep)
{
for(y=0;y<128;y+=ystep)
{
for(f=0;f<posnum;f++)
{
ft4=prepareSeaPortionFT4(fh,x>>2,y<<1,xstep>>2,ystep<<1,128);
setXYWH(ft4,x+pos[f].x,y+pos[f].y,xstep,ystep);
if(f)
{
setSemiTrans(ft4,true);
}
AddPrimToList(ft4,1000-f);
}
}
}
}
else
{
POLY_G4 *g4;
g4=GetPrimG4();
setXYWH(g4,0,0,512,256);
setRGB0(g4,99,50,50);
setRGB1(g4,50,50,99);
setRGB2(g4,50,99,50);
setRGB3(g4,99,50,99);
AddPrimToList(g4,1001);
}
*/
/*
fh=m_sprites->getFrameHeader(FRM_SKY); fh=m_sprites->getFrameHeader(FRM_SKY);
for(int i=0;i<posnum;i++) for(int i=0;i<posnum;i++)
{ {
@ -225,6 +268,7 @@ void CFrontEndMainTitles::render()
if(i) if(i)
setSemiTrans(ft4,true); setSemiTrans(ft4,true);
} }
*/
renderSeaSection(m_sprites->getFrameHeader(FRM__ISLAND),isx,HORIZON_LEVEL+isy,isw,ish); renderSeaSection(m_sprites->getFrameHeader(FRM__ISLAND),isx,HORIZON_LEVEL+isy,isw,ish);
renderSeaSection(m_sprites->getFrameHeader(FRM_SKY),0,HORIZON_LEVEL,512,256-HORIZON_LEVEL+SEA_OVERLAP); renderSeaSection(m_sprites->getFrameHeader(FRM_SKY),0,HORIZON_LEVEL,512,256-HORIZON_LEVEL+SEA_OVERLAP);
@ -253,7 +297,6 @@ void CFrontEndMainTitles::render()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndMainTitles::think(int _frames) void CFrontEndMainTitles::think(int _frames)
{ {
rsr=(rsr+(_frames*rspeed))&4095;
sval=(sval+(seaspeed*_frames))&4095; sval=(sval+(seaspeed*_frames))&4095;
switch(m_mode) switch(m_mode)
@ -430,7 +473,7 @@ void CFrontEndMainTitles::renderSeaSection(sFrameHdr *_fh,int _x,int _y,int _w,i
{ {
grid[xloop][yloop].x=(x>>8)+0; grid[xloop][yloop].x=(x>>8)+0;
grid[xloop][yloop].y=(y>>8)+(msin(waveval)/scale); grid[xloop][yloop].y=(y>>8)+(msin(waveval)/scale);
grid[xloop][yloop].colour=colourbase+((msin(waveval)/colourscale)*colourpostscale); // grid[xloop][yloop].colour=colourbase+((msin(waveval)/colourscale)*colourpostscale);
x+=xstep; x+=xstep;
} }
y+=ystep; y+=ystep;

View File

@ -55,12 +55,6 @@ public:
private: private:
enum enum
{ {
LOGO_CENTRE_Y=74,
GAME_TITLE_TEXT_CENTRE_Y=100,
GAME_TITLE_TEXT_R=128,
GAME_TITLE_TEXT_G=128,
GAME_TITLE_TEXT_B=128,
PRESS_START_TEXT_Y=180, PRESS_START_TEXT_Y=180,
PRESS_START_TEXT_R=150, PRESS_START_TEXT_R=150,
PRESS_START_TEXT_G=100, PRESS_START_TEXT_G=100,

View File

@ -69,8 +69,19 @@
int CBubicleFactory::s_initialised=false; int CBubicleFactory::s_initialised=false;
CBubicleEmitter *CBubicleFactory::s_emitters; CBubicleEmitter *CBubicleFactory::s_emitters;
CBubicle *CBubicleFactory::s_bubicles; CBubicle *CBubicleFactory::s_bubicles;
SpriteBank *CBubicleFactory::s_sprites; SpriteBank *CBubicleFactory::s_sprites;
int CBubicleFactory::s_frameTypeCounter=0;
const int CBubicleFactory::s_frameTabSize=8;
const int CBubicleFactory::s_frameTabSizeMask=0x07;
sFrameHdr *CBubicleFactory::s_frameTab[s_frameTabSize];
const int CBubicleFactory::s_frameTabSrc[s_frameTabSize]=
{
FRM__BUBBLE_1,FRM__BUBBLE_2,FRM__BUBBLE_2,FRM__BUBBLE_1,
FRM__BUBBLE_2,FRM__BUBBLE_1,FRM__BUBBLE_2,FRM__BUBBLE_3,
};
int s_numLiveBubicleEmitters=0; int s_numLiveBubicleEmitters=0;
int s_numLiveBubicles=0; int s_numLiveBubicles=0;
@ -217,8 +228,6 @@ void CBubicle::create()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CBubicle::init(BubicleData *_init,int _x,int _y) void CBubicle::init(BubicleData *_init,int _x,int _y)
{ {
static int frameType=0;
m_data=*_init; m_data=*_init;
m_x=(_x-(m_data.m_w>>1))<<ACCURACY_SHIFT; m_x=(_x-(m_data.m_w>>1))<<ACCURACY_SHIFT;
@ -233,7 +242,7 @@ void CBubicle::init(BubicleData *_init,int _x,int _y)
m_vSizeChange=0; m_vSizeChange=0;
m_frameCount=0; m_frameCount=0;
m_fhBub=CBubicleFactory::getSprites()->getFrameHeader((frameType++)&0x31?FRM__BUBBLE_SMALL:FRM__BUBBLE_FLOWER); m_fhBub=CBubicleFactory::getBubbleFrameHeader();
m_active=true; m_active=true;
} }
@ -365,6 +374,11 @@ void CBubicleFactory::init()
s_sprites=new ("Bubble Sprites") SpriteBank(); s_sprites=new ("Bubble Sprites") SpriteBank();
s_sprites->load(INGAMEFX_INGAMEFX_SPR); s_sprites->load(INGAMEFX_INGAMEFX_SPR);
for(i=0;i<s_frameTabSize;i++)
{
s_frameTab[i]=s_sprites->getFrameHeader(s_frameTabSrc[i]);
}
emt=s_emitters=(CBubicleEmitter*)MemAlloc(sizeof(CBubicleEmitter)*NUM_EMITTERS,"BubicleEmitters"); emt=s_emitters=(CBubicleEmitter*)MemAlloc(sizeof(CBubicleEmitter)*NUM_EMITTERS,"BubicleEmitters");
for(i=0;i<NUM_EMITTERS;i++,emt++) for(i=0;i<NUM_EMITTERS;i++,emt++)
emt->create(); emt->create();
@ -554,5 +568,19 @@ CBubicle *CBubicleFactory::spawnParticle(BubicleEmitterData *_init)
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
sFrameHdr *CBubicleFactory::getBubbleFrameHeader()
{
s_frameTypeCounter=(s_frameTypeCounter+1)&s_frameTabSizeMask;
return s_frameTab[s_frameTypeCounter];
}
/*=========================================================================== /*===========================================================================
end */ end */

View File

@ -161,7 +161,7 @@ public:
static CBubicleEmitter *spawnEmitter(BubicleEmitterData *_init); static CBubicleEmitter *spawnEmitter(BubicleEmitterData *_init);
static CBubicle *spawnParticle(BubicleEmitterData *_init); static CBubicle *spawnParticle(BubicleEmitterData *_init);
static sFrameHdr *getBubbleFrameHeader();
static SpriteBank *getSprites() {return s_sprites;} static SpriteBank *getSprites() {return s_sprites;}
@ -179,6 +179,12 @@ private:
static CBubicle *s_bubicles; static CBubicle *s_bubicles;
static SpriteBank *s_sprites; static SpriteBank *s_sprites;
static int s_frameTypeCounter;
static const int s_frameTabSize;
static const int s_frameTabSizeMask;
static sFrameHdr *s_frameTab[];
static const int s_frameTabSrc[];
}; };

View File

@ -75,7 +75,7 @@ BubicleEmitterData s_fadeBubicleSpawner=
0,0, // m_theta,m_vtheta 0,0, // m_theta,m_vtheta
0,0,0, // m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth 0,0,0, // m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth
0, // m_ot 0, // m_ot
{220,220,220} // m_colour {20,20,20} // m_colour
}, },
// m_bubicleRange; // m_bubicleRange;
{ {