SBSPSS/source/paul/paul.cpp
2000-10-17 22:04:57 +00:00

326 lines
6.0 KiB
C++

/*=========================================================================
paul.cpp
Author: PKG
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
/*----------------------------------------------------------------------
Includes
-------- */
#include "paul\paul.h"
#ifndef __SYSTEM_DBG_H__
#include "system\dbg.h"
#endif
#ifndef __GFX_FONT_H__
#include "gfx\font.h"
#endif
#ifndef __MEMORY_HEADER__
#include "mem\memory.h"
#endif
#ifndef __UTILS_HEADER__
#include "utils\utils.h"
#endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
#ifndef __PAD_PADS_H__
#include "pad\pads.h"
#endif
#ifndef __GFX_BUBICLES__
#include "gfx\bubicles.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
---- */
static FontBank s_fontBank;
char *s_mem[3];
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
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);
CSoundMediator::setSfxBank(CSoundMediator::INGAME);
CSoundMediator::setSong(CSoundMediator::MUSIC);
CSoundMediator::playSong();
//CXAStream::Init();
PAUL_DBGMSG("initialised..");
ploopid1=CSoundMediator::playSfx(0);
ploopid2=CSoundMediator::playSfx(0);
tb.init(&data);
sprites=new ("bg sprite") SpriteBank();
sprites->load(INGAMEFX_INGAMEFX_SPR);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPaulScene::shutdown()
{
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPaulScene::render()
{
int logCount;
int i,y,charHeight;
logCount=getNumberOfDbgLinesInLog();
y=20;
charHeight=s_fontBank.getCharHeight();
for(i=0;i<logCount;i++)
{
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);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int psfx=3;
int pkill=0;
#include "sound\speech.h"
int mvol=10;
int svol=255;
VECTOR ppos;
int psp=0;
void CPaulScene::think()
{
int pad;
int sfxId=-1;
int setSfxVolume=false;
int setSongVolume=false;
pad=PadGetDown(0);
if(pad&PAD_R1)
{
tb.init(&data);
PAUL_DBGMSG("-------------------");
}
else if(pad&PAD_CROSS)
{
sfxId=psfx;
}
else if(pad&PAD_SQUARE)
{
sfxId=0;
}
else if(pad&PAD_TRIANGLE)
{
sfxId=1;
}
else if(pad&PAD_CIRCLE)
{
sfxId=2;
}
if(sfxId!=-1)
{
CSoundMediator::playSfx(sfxId);
}
if(pad&PAD_START)
{
// PAUL_DBGMSG("stop loopers..");
// CSoundMediator::stopSfx((xmPlayingId)ploopid1);
// CSoundMediator::stopSfx((xmPlayingId)ploopid2);
PAUL_DBGMSG("speech..\n");
CSoundMediator::playSpeech((SpeechEquate)psp);
}
if(pad&PAD_R2)
{
PAUL_DBGMSG("stop all");
CSoundMediator::stopAllSound();
}
#ifdef __USER_paul__
if(pad&PAD_L2)
{
extern int dump;
dump=true;
}
#endif
//CSoundMediator::setposition((xmPlayingId)ploopid,&ppos);
pad=PadGetHeld(0);
if(pad&PAD_UP)
{
mvol+=16;
if(mvol>CSoundMediator::MAX_VOLUME)mvol=CSoundMediator::MAX_VOLUME;
setSongVolume=true;
}
if(pad&PAD_DOWN)
{
mvol-=16;
if(mvol<CSoundMediator::MIN_VOLUME)mvol=CSoundMediator::MIN_VOLUME;
setSongVolume=true;
}
if(pad&PAD_RIGHT)
{
svol+=16;
if(svol>CSoundMediator::MAX_VOLUME)svol=CSoundMediator::MAX_VOLUME;
setSfxVolume=true;
}
if(pad&PAD_LEFT)
{
svol-=16;
if(svol<CSoundMediator::MIN_VOLUME)svol=CSoundMediator::MIN_VOLUME;
setSfxVolume=true;
}
if(setSongVolume) CSoundMediator::setVolume(CSoundMediator::SPEECH,mvol);
if(setSfxVolume) CSoundMediator::setVolume(CSoundMediator::SFX,svol);
if(setSongVolume||setSfxVolume)
{
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();
}
/*===========================================================================
end */