This commit is contained in:
parent
8e23902867
commit
a861327465
6 changed files with 661 additions and 4 deletions
|
@ -19,4 +19,4 @@ sfx/ingame.vh
|
|||
{ SYSTEM_CACHE 4
|
||||
}
|
||||
ui/uigfx.spr
|
||||
|
||||
ingamefx/ingamefx.spr
|
||||
|
|
|
@ -58,7 +58,8 @@ gfx_src := prim \
|
|||
animtex \
|
||||
sprbank \
|
||||
font \
|
||||
fdata
|
||||
fdata \
|
||||
bubicles
|
||||
|
||||
# camera \
|
||||
# basemod \
|
||||
|
|
34
makefile.gfx
34
makefile.gfx
|
@ -118,7 +118,37 @@ GFX_DATA_OUT += $(UI_GFX_TEX_OUT)
|
|||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# SFX
|
||||
# Ingame graphic effects
|
||||
#----------------------------------------------------------------------------
|
||||
INGAMEFX_GFX_DIR := $(GRAF_DIR)/ingamefx
|
||||
INGAMEFX_GFX_OUT_DIR := $(DATA_OUT)/ingamefx
|
||||
|
||||
INGAMEFX_GFX_NONTRANS :=
|
||||
INGAMEFX_GFX_NONTRANS_IN := $(foreach FILE,$(INGAMEFX_GFX_NONTRANS),$(INGAMEFX_NONTRANS_DIR)/$(FILE))
|
||||
|
||||
INGAMEFX_GFX_TRANS := +bubble_small.bmp +bubble_flower.bmp background.bmp
|
||||
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_OUT := $(INGAMEFX_GFX_OUT_DIR)/ingamefx.Spr
|
||||
INGAMEFX_GFX_REP_FILE := $(REPORT_DIR)/ingamefx.rep
|
||||
INGAMEFX_GFX_HDR_FILE := $(INC_DIR)/ingamefx.h
|
||||
|
||||
cleaningamefx :
|
||||
$(RM) -f $(INGAMEFX_GFX_TEX_OUT)
|
||||
|
||||
ingamefx: $(INGAMEFX_GFX_TEX_IN)
|
||||
|
||||
$(INGAMEFX_GFX_TEX_OUT) : $(INGAMEFX_GFX_TEX_IN)
|
||||
@parkgrab -c+ -z+ ${INGAMEFX_GFX_TRANS_IN} -c+ -z- ${INGAMEFX_GFX_NONTRANS_IN} -b+ -t:9,4,1 -l:$(REPORT_DIR)/ingamefx.lbm -o:$(INGAMEFX_GFX_TEX_OUT) -k:$(INGAMEFX_GFX_REP_FILE)
|
||||
@$(MV) -f $(INGAMEFX_GFX_OUT_DIR)/ingamefx.h $(INGAMEFX_GFX_HDR_FILE)
|
||||
|
||||
GRAF_DIRS_TO_MAKE += $(INGAMEFX_GFX_OUT_DIR)
|
||||
GFX_DATA_OUT += $(INGAMEFX_GFX_TEX_OUT)
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Sound FX
|
||||
#----------------------------------------------------------------------------
|
||||
SFX_IN_DIR := data/SFX
|
||||
SFX_OUT_DIR := $(DATA_OUT)/SFX
|
||||
|
@ -141,7 +171,7 @@ GFX_DATA_OUT += $(SFX_ALL_OUT)
|
|||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Music
|
||||
# Music
|
||||
#----------------------------------------------------------------------------
|
||||
MUSIC_IN_DIR := data/music
|
||||
MUSIC_OUT_DIR := $(DATA_OUT)/music
|
||||
|
|
397
source/gfx/bubicles.cpp
Normal file
397
source/gfx/bubicles.cpp
Normal file
|
@ -0,0 +1,397 @@
|
|||
/*=========================================================================
|
||||
|
||||
bubicles.cpp
|
||||
|
||||
Author: PKG
|
||||
Created:
|
||||
Project: Spongebob
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 2000 Climax Development Ltd
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
#include "bubicles.h"
|
||||
|
||||
#ifndef __PRIM_HEADER__
|
||||
#include "gfx\prim.h"
|
||||
#endif
|
||||
|
||||
#ifndef __MATHTABLE_HEADER__
|
||||
#include "utils\mathtab.h"
|
||||
#endif
|
||||
|
||||
#ifndef __UTILS_HEADER__
|
||||
#include "utils\utils.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GFX_SPRBANK_H__
|
||||
#include "gfx\sprbank.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
||||
/* Data
|
||||
---- */
|
||||
|
||||
#ifndef __SPR_INGAMEFX_H__
|
||||
#include <ingamefx.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Vars
|
||||
---- */
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
static SpriteBank *sprites=NULL;
|
||||
void CBubicleEmitter::init(BubicleEmitterData *_init)
|
||||
{
|
||||
for(int i=0;i<NUM_BUB;i++)
|
||||
{
|
||||
m_bubicles[i]=NULL;
|
||||
}
|
||||
m_frameCount=0;
|
||||
|
||||
m_data=*_init;
|
||||
|
||||
if(sprites==NULL)
|
||||
{
|
||||
sprites=new ("bubble sprites") SpriteBank();
|
||||
sprites->load(INGAMEFX_INGAMEFX_SPR);
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CBubicleEmitter::think()
|
||||
{
|
||||
int birthAmount;
|
||||
|
||||
|
||||
birthAmount=0;
|
||||
for(int i=0;i<NUM_BUB;i++)
|
||||
{
|
||||
if(m_bubicles[i])
|
||||
{
|
||||
m_bubicles[i]->think();
|
||||
if(m_bubicles[i]->isDead())
|
||||
{
|
||||
delete m_bubicles[i];
|
||||
m_bubicles[i]=NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(m_frameCount>=m_data.m_birthRate)
|
||||
{
|
||||
birthAmount=m_data.m_birthAmount;
|
||||
m_frameCount=0;
|
||||
}
|
||||
if(birthAmount)
|
||||
{
|
||||
m_bubicles[i]=createNewBubicle(&m_data);
|
||||
birthAmount--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m_frameCount++;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CBubicleEmitter::render()
|
||||
{
|
||||
for(int i=0;i<NUM_BUB;i++)
|
||||
{
|
||||
if(m_bubicles[i])
|
||||
m_bubicles[i]->render();
|
||||
}
|
||||
|
||||
POLY_F4 *f4;
|
||||
f4=GetPrimF4();
|
||||
setPolyF4(f4);
|
||||
setXYWH(f4,m_data.m_x,m_data.m_y,m_data.m_w,m_data.m_h);
|
||||
setSemiTrans(f4,1);
|
||||
setShadeTex(f4,0);
|
||||
setRGB0(f4,30,40,50);
|
||||
AddPrimToList(f4,m_data.m_bubicleBase.m_ot+1);
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CBubicleEmitter::setPos(int _x,int _y)
|
||||
{
|
||||
m_data.m_x=_x;
|
||||
m_data.m_y=_y;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CBubicleEmitter::setSize(int _w,int _h)
|
||||
{
|
||||
m_data.m_w=_w;
|
||||
m_data.m_h=_h;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
int fixed=false;
|
||||
CBubicle *CBubicleEmitter::createNewBubicle(BubicleEmitterData *_init)
|
||||
{
|
||||
CBubicle *newBub;
|
||||
BubicleData newBubData;
|
||||
int x,y;
|
||||
|
||||
newBub=new ("CBubicle") CBubicle();
|
||||
|
||||
x=_init->m_x+getRndRange(_init->m_w);
|
||||
y=_init->m_y+getRndRange(_init->m_h);
|
||||
|
||||
if(fixed)
|
||||
{
|
||||
newBubData.m_life=_init->m_bubicleBase.m_life;
|
||||
newBubData.m_vx=_init->m_bubicleBase.m_vx;
|
||||
newBubData.m_vdx=_init->m_bubicleBase.m_vdx;
|
||||
newBubData.m_vxmax=_init->m_bubicleBase.m_vxmax;
|
||||
newBubData.m_vy=_init->m_bubicleBase.m_vy;
|
||||
newBubData.m_vdy=_init->m_bubicleBase.m_vdy;
|
||||
newBubData.m_vymax=_init->m_bubicleBase.m_vymax;
|
||||
newBubData.m_w=_init->m_bubicleBase.m_w;
|
||||
newBubData.m_h=_init->m_bubicleBase.m_h;
|
||||
newBubData.m_dvSizeChange=_init->m_bubicleBase.m_dvSizeChange;
|
||||
newBubData.m_theta=_init->m_bubicleBase.m_theta;
|
||||
newBubData.m_vtheta=_init->m_bubicleBase.m_vtheta;
|
||||
newBubData.m_wobbleWidth=_init->m_bubicleBase.m_wobbleWidth;
|
||||
newBubData.m_vwobbleWidth=_init->m_bubicleBase.m_vwobbleWidth;
|
||||
newBubData.m_vdwobbleWidth=_init->m_bubicleBase.m_vdwobbleWidth;
|
||||
newBubData.m_ot=_init->m_bubicleBase.m_ot;
|
||||
newBubData.m_colour.m_r=_init->m_bubicleBase.m_colour.m_r;
|
||||
newBubData.m_colour.m_g=_init->m_bubicleBase.m_colour.m_r;
|
||||
newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r;
|
||||
}
|
||||
else
|
||||
{
|
||||
newBubData.m_life=_init->m_bubicleBase.m_life+getRndRange(_init->m_bubicleRange.m_life);
|
||||
newBubData.m_vx=_init->m_bubicleBase.m_vx+getRndRange(_init->m_bubicleRange.m_vx);
|
||||
newBubData.m_vdx=_init->m_bubicleBase.m_vdx+getRndRange(_init->m_bubicleRange.m_vdx);
|
||||
newBubData.m_vxmax=_init->m_bubicleBase.m_vxmax+getRndRange(_init->m_bubicleRange.m_vxmax);
|
||||
newBubData.m_vy=_init->m_bubicleBase.m_vy+getRndRange(_init->m_bubicleRange.m_vy);
|
||||
newBubData.m_vdy=_init->m_bubicleBase.m_vdy+getRndRange(_init->m_bubicleRange.m_vdy);
|
||||
newBubData.m_vymax=_init->m_bubicleBase.m_vymax+getRndRange(_init->m_bubicleRange.m_vymax);
|
||||
newBubData.m_w=_init->m_bubicleBase.m_w+getRndRange(_init->m_bubicleRange.m_w);
|
||||
newBubData.m_h=_init->m_bubicleBase.m_h+getRndRange(_init->m_bubicleRange.m_h);
|
||||
newBubData.m_dvSizeChange=_init->m_bubicleBase.m_dvSizeChange+getRndRange(_init->m_bubicleRange.m_dvSizeChange);
|
||||
newBubData.m_theta=_init->m_bubicleBase.m_theta+getRndRange(_init->m_bubicleRange.m_theta);
|
||||
newBubData.m_vtheta=_init->m_bubicleBase.m_vtheta+getRndRange(_init->m_bubicleRange.m_vtheta);
|
||||
newBubData.m_wobbleWidth=_init->m_bubicleBase.m_wobbleWidth+getRndRange(_init->m_bubicleRange.m_wobbleWidth);
|
||||
newBubData.m_vwobbleWidth=_init->m_bubicleBase.m_vwobbleWidth+getRndRange(_init->m_bubicleRange.m_vwobbleWidth);
|
||||
newBubData.m_vdwobbleWidth=_init->m_bubicleBase.m_vdwobbleWidth+getRndRange(_init->m_bubicleRange.m_vdwobbleWidth);
|
||||
newBubData.m_ot=_init->m_bubicleBase.m_ot+getRndRange(_init->m_bubicleRange.m_ot);
|
||||
newBubData.m_colour.m_r=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_r);
|
||||
newBubData.m_colour.m_g=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_g);
|
||||
newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_b);
|
||||
}
|
||||
|
||||
newBub->init(&newBubData,x,y);
|
||||
|
||||
return newBub;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
static int gaycount=0;
|
||||
void CBubicle::init(BubicleData *_init,int _x,int _y)
|
||||
{
|
||||
m_data=*_init;
|
||||
|
||||
m_x=(_x-(m_data.m_w>>1))<<ACCURACY_SHIFT;
|
||||
m_y=(_y-(m_data.m_h>>1))<<ACCURACY_SHIFT;
|
||||
|
||||
m_data.m_vxmax;
|
||||
m_data.m_vymax;
|
||||
m_data.m_w<<=ACCURACY_SHIFT;
|
||||
m_data.m_h<<=ACCURACY_SHIFT;
|
||||
|
||||
m_typeSizeChange=getRnd()&1;
|
||||
m_vSizeChange=0;
|
||||
m_frameCount=0;
|
||||
|
||||
if((gaycount++)&0x31)
|
||||
m_fhBub=sprites->getFrameHeader(FRM__BUBBLE_SMALL);
|
||||
else
|
||||
m_fhBub=sprites->getFrameHeader(FRM__BUBBLE_FLOWER);
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CBubicle::think()
|
||||
{
|
||||
if(!isDead())
|
||||
{
|
||||
if(m_x!=m_data.m_vxmax)
|
||||
{
|
||||
m_x+=m_data.m_vx;
|
||||
if(m_data.m_vxmax<0)
|
||||
{
|
||||
m_data.m_vx+=m_data.m_vdx;
|
||||
if(m_data.m_vx<m_data.m_vxmax)
|
||||
m_data.m_vx=m_data.m_vxmax;
|
||||
}
|
||||
else if(m_data.m_vxmax>0)
|
||||
{
|
||||
m_data.m_vx+=m_data.m_vdx;
|
||||
if(m_data.m_vx>m_data.m_vxmax)
|
||||
m_data.m_vx=m_data.m_vxmax;
|
||||
}
|
||||
}
|
||||
|
||||
if(m_y!=m_data.m_vymax)
|
||||
{
|
||||
m_y+=m_data.m_vy;
|
||||
if(m_data.m_vymax<0)
|
||||
{
|
||||
m_data.m_vy+=m_data.m_vdy;
|
||||
if(m_data.m_vy<m_data.m_vymax)
|
||||
m_data.m_vy=m_data.m_vymax;
|
||||
}
|
||||
else if(m_data.m_vymax>0)
|
||||
{
|
||||
m_data.m_vy+=m_data.m_vdy;
|
||||
if(m_data.m_vy>m_data.m_vymax)
|
||||
m_data.m_vy=m_data.m_vymax;
|
||||
}
|
||||
}
|
||||
|
||||
m_data.m_theta=(m_data.m_theta+m_data.m_vtheta)&4095;
|
||||
|
||||
m_data.m_wobbleWidth+=m_data.m_vwobbleWidth;
|
||||
m_data.m_vwobbleWidth+=m_data.m_vdwobbleWidth;
|
||||
|
||||
|
||||
if(m_typeSizeChange)
|
||||
{
|
||||
if(m_data.m_w<m_data.m_h)
|
||||
m_vSizeChange+=m_data.m_dvSizeChange;
|
||||
else if(m_data.m_w>m_data.m_h)
|
||||
m_vSizeChange-=m_data.m_dvSizeChange;
|
||||
m_data.m_w+=m_vSizeChange;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(m_data.m_h<m_data.m_w)
|
||||
m_vSizeChange+=m_data.m_dvSizeChange;
|
||||
else if(m_data.m_h>m_data.m_w)
|
||||
m_vSizeChange-=m_data.m_dvSizeChange;
|
||||
m_data.m_h+=m_vSizeChange;
|
||||
}
|
||||
|
||||
m_frameCount++; //PKG
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CBubicle::render()
|
||||
{
|
||||
if(!isDead())
|
||||
{
|
||||
POLY_FT4 *ft4;
|
||||
int x,y,w,h;
|
||||
|
||||
x=m_x>>ACCURACY_SHIFT;
|
||||
y=m_y>>ACCURACY_SHIFT;
|
||||
w=m_data.m_w>>ACCURACY_SHIFT;
|
||||
h=m_data.m_h>>ACCURACY_SHIFT;
|
||||
|
||||
x+=(msin(m_data.m_theta)*(m_data.m_wobbleWidth>>ACCURACY_SHIFT))>>12;
|
||||
|
||||
ft4=sprites->printFT4((sFrameHdr*)m_fhBub,0,0,0,0,m_data.m_ot);
|
||||
setXYWH(ft4,x,y,w,h);
|
||||
setSemiTrans(ft4,1);
|
||||
setRGB0(ft4,m_data.m_colour.m_r,m_data.m_colour.m_g,m_data.m_colour.m_b);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
int CBubicle::isDead()
|
||||
{
|
||||
return m_frameCount>m_data.m_life||m_y<0;
|
||||
}
|
||||
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
140
source/gfx/bubicles.h
Normal file
140
source/gfx/bubicles.h
Normal file
|
@ -0,0 +1,140 @@
|
|||
/*=========================================================================
|
||||
|
||||
bubicles.h
|
||||
|
||||
Author: PKG
|
||||
Created:
|
||||
Project: Spongebob
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 2000 Climax Development Ltd
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
#ifndef __GFX_BUBICLES_H__
|
||||
#define __GFX_BUBICLES_H__
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
|
||||
typedef struct RGBPack
|
||||
{
|
||||
unsigned char m_r,m_g,m_b;
|
||||
};
|
||||
|
||||
|
||||
// particle
|
||||
typedef struct
|
||||
{
|
||||
int m_life;
|
||||
int m_vx,m_vdx,m_vxmax;
|
||||
int m_vy,m_vdy,m_vymax;
|
||||
int m_w,m_h;
|
||||
int m_dvSizeChange;
|
||||
int m_theta,m_vtheta;
|
||||
int m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth;
|
||||
int m_ot;
|
||||
RGBPack m_colour;
|
||||
} BubicleData;
|
||||
|
||||
|
||||
class CBubicle
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
ACCURACY_SHIFT=6,
|
||||
};
|
||||
|
||||
|
||||
void init(BubicleData *_init,int _x,int _y);
|
||||
|
||||
void think();
|
||||
void render();
|
||||
|
||||
int isDead();
|
||||
|
||||
private:
|
||||
int m_x;
|
||||
int m_y;
|
||||
int m_typeSizeChange; // 0=Width, 1=Height
|
||||
int m_vSizeChange;
|
||||
int m_frameCount;
|
||||
void *m_fhBub; // FFS! Go on.. try and make this an sFrameHdr *
|
||||
|
||||
BubicleData m_data;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
// emitter
|
||||
typedef struct
|
||||
{
|
||||
int m_x,m_y,m_w,m_h;
|
||||
int m_birthRate,m_birthAmount;
|
||||
|
||||
BubicleData m_bubicleBase;
|
||||
BubicleData m_bubicleRange;
|
||||
} BubicleEmitterData;
|
||||
|
||||
class CBubicleEmitter
|
||||
{
|
||||
public:
|
||||
enum{NUM_BUB=400};
|
||||
|
||||
void init(BubicleEmitterData *_init);
|
||||
|
||||
void think();
|
||||
void render();
|
||||
|
||||
void setPos(int _x,int _y);
|
||||
void setSize(int _w,int _h);
|
||||
void setPosAndSize(int _x,int _y,int _w,int _h) {setPos(_x,_y);setSize(_w,_h);}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
static CBubicle *createNewBubicle(BubicleEmitterData *_init);
|
||||
// static void removeBubicle();
|
||||
|
||||
|
||||
BubicleEmitterData m_data;
|
||||
int m_x,m_y,m_w,m_h;
|
||||
int m_birthRate;
|
||||
int m_frameCount;
|
||||
|
||||
CBubicle *m_bubicles[NUM_BUB];
|
||||
// static int s_numBubble
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Globals
|
||||
------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Functions
|
||||
--------- */
|
||||
|
||||
/*---------------------------------------------------------------------- */
|
||||
|
||||
#endif /* __GFX_BUBICLES_H__ */
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
|
@ -42,6 +42,14 @@
|
|||
#include "pad\pads.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GFX_BUBICLES__
|
||||
#include "gfx\bubicles.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GFX_SPRBANK_H__
|
||||
#include "gfx\sprbank.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -49,6 +57,11 @@
|
|||
/* Data
|
||||
---- */
|
||||
|
||||
#ifndef __SPR_INGAMEFX_H__
|
||||
#include <ingamefx.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
@ -76,6 +89,39 @@ char *s_mem[3];
|
|||
---------------------------------------------------------------------- */
|
||||
int ploopid1=0;
|
||||
int ploopid2=0;
|
||||
BubicleEmitterData data=
|
||||
{
|
||||
206,200,40,40, // m_x,m_y,m_w,m_h
|
||||
3,1, // m_birthRate,m_birthAmount
|
||||
{ // m_bubicleBase
|
||||
100, // m_life
|
||||
0,0,0, // m_vx,m_vdx,m_vxmax
|
||||
-40,-15,-200, // m_vy,m_vdy,m_vymax
|
||||
13,10, // m_w,m_h
|
||||
10, // m_dvSizeChange
|
||||
0,100, // m_theta,m_vtheta
|
||||
100,2,0, // m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth
|
||||
40, // m_ot
|
||||
{ 128,128,128, } // m_colour
|
||||
},
|
||||
{ // m_bubicleRange
|
||||
100, // m_life
|
||||
0,0,0, // m_vx,m_vdx,m_vxmax
|
||||
20,10,0, // m_vy,m_vdy,m_vymax
|
||||
5,5, // m_w,m_h
|
||||
10, // m_dvSizeChange
|
||||
4095,50, // m_theta,m_vtheta
|
||||
100,5,0, // m_wobbleWidth,m_vwobbleWidth,m_vdwobbleWidth
|
||||
0, // m_ot
|
||||
{ 0, 64,127, } // m_colour
|
||||
}
|
||||
};
|
||||
CBubicleEmitter tb;
|
||||
int tbx=64,tby=230;
|
||||
int tbw=512-128,tbh=20;
|
||||
|
||||
static SpriteBank *sprites=NULL;
|
||||
|
||||
void CPaulScene::init()
|
||||
{
|
||||
s_fontBank.initialise(&standardFont);
|
||||
|
@ -92,6 +138,11 @@ void CPaulScene::init()
|
|||
|
||||
ploopid1=CSoundMediator::playSfx(0);
|
||||
ploopid2=CSoundMediator::playSfx(0);
|
||||
|
||||
tb.init(&data);
|
||||
|
||||
sprites=new ("bg sprite") SpriteBank();
|
||||
sprites->load(INGAMEFX_INGAMEFX_SPR);
|
||||
}
|
||||
|
||||
|
||||
|
@ -125,6 +176,12 @@ void CPaulScene::render()
|
|||
s_fontBank.print(20,y,getDbgLineFromLog(i));
|
||||
y+=charHeight;
|
||||
}
|
||||
|
||||
tb.render();
|
||||
|
||||
POLY_FT4 *ft4=sprites->printFT4(FRM_BACKGROUND,0,0,0,0,1023);
|
||||
setXYWH(ft4,20,20,512-40,256-40);
|
||||
setRGB0(ft4,64,64,64);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
|
@ -151,6 +208,7 @@ void CPaulScene::think()
|
|||
pad=PadGetDown(0);
|
||||
if(pad&PAD_R1)
|
||||
{
|
||||
tb.init(&data);
|
||||
PAUL_DBGMSG("-------------------");
|
||||
}
|
||||
else if(pad&PAD_CROSS)
|
||||
|
@ -229,7 +287,38 @@ void CPaulScene::think()
|
|||
PAUL_DBGMSG("speech:%d sfx:%d",mvol,svol);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//CXAStream::ControlXA();
|
||||
|
||||
pad=PadGetHeld(1);
|
||||
if(pad&PAD_L1)
|
||||
{
|
||||
if(pad&PAD_UP)
|
||||
tbh--;
|
||||
if(pad&PAD_DOWN)
|
||||
tbh++;
|
||||
if(pad&PAD_LEFT)
|
||||
tbw--;
|
||||
if(pad&PAD_RIGHT)
|
||||
tbw++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pad&PAD_UP)
|
||||
tby-=5;
|
||||
if(pad&PAD_DOWN)
|
||||
tby+=5;
|
||||
if(pad&PAD_LEFT)
|
||||
tbx-=5;
|
||||
if(pad&PAD_RIGHT)
|
||||
tbx+=5;
|
||||
}
|
||||
tb.setPosAndSize(tbx,tby,tbw,tbh);
|
||||
|
||||
tb.think();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue