This commit is contained in:
Paul 2001-05-25 21:18:54 +00:00
parent 0b22ba26cd
commit c41e4640cf
2 changed files with 68 additions and 1 deletions

View File

@ -59,6 +59,27 @@
#include "friend\fplnkton.h"
#endif
#ifndef __PAD_PADS_H__
#include "pad\pads.h"
#endif
#ifndef __GAME_CONVO_H__
#include "game\convo.h"
#endif
#ifndef __SPR_SPRITES_H__
#include <sprites.h>
#endif
// These are temporary.. I'll clean them up when I can test them (pkg)
int strobespeed=20;
int strobebase=300;
int strobescale=100;
// These are temporary.. I'll clean them up when I can test them (pkg)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Friend NPCs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -175,6 +196,8 @@ void CNpcFriend::init()
m_frame = 0;
m_reversed = false;
m_platform = NULL;
m_hasSpokenToSbYet=false;
m_iconStrobe=0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -229,10 +252,28 @@ void CNpcFriend::think(int _frames)
m_animPlaying = true;
m_frame = 0;
}
m_iconStrobe=(m_iconStrobe+(strobespeed))&4095;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct
{
int m_control,m_iconFrame;
} ICON_MAP;
static const ICON_MAP s_iconMap[]=
{
{ PAD_UP, FRM__BUTU },
{ PAD_DOWN, FRM__BUTD },
{ PAD_LEFT, FRM__BUTL },
{ PAD_RIGHT, FRM__BUTR },
{ PAD_CROSS, FRM__BUTX },
{ PAD_SQUARE, FRM__BUTS },
{ PAD_CIRCLE, FRM__BUTC },
{ PAD_TRIANGLE, FRM__BUTT },
};
void CNpcFriend::render()
{
CNpcThing::render();
@ -249,6 +290,28 @@ void CNpcFriend::render()
boundingBox.YMax = 0;
setCollisionSize( ( boundingBox.XMax - boundingBox.XMin ), ( boundingBox.YMax - boundingBox.YMin ) );
setCollisionCentreOffset( ( boundingBox.XMax + boundingBox.XMin ) >> 1, ( boundingBox.YMax + boundingBox.YMin ) >> 1 );
if(m_hasSpokenToSbYet&&!CConversation::isActive())
{
const ICON_MAP *map;
int control;
sFrameHdr *fh;
int size;
DVECTOR iconPos;
map=s_iconMap;
control=CPadConfig::getButton(CPadConfig::PAD_CFG_UP);
while(map->m_control!=control)
{
map++;
}
fh=CGameScene::getSpriteBank()->getFrameHeader(map->m_iconFrame);
size=strobebase+((msin(m_iconStrobe)*strobescale)>>12);
iconPos=getRenderPos();
iconPos.vx-=(fh->W*size)>>(8+1);
iconPos.vy-=120;
CGameScene::getSpriteBank()->printFT4Scaled(fh,iconPos.vx,iconPos.vy,0,0,0,size);
}
}
}
@ -263,8 +326,9 @@ void CNpcFriend::collidedWith( CThing *_thisThing )
{
CPlayer *player = (CPlayer *) _thisThing;
if ( player->isTryingToConversateWithFriend() )
if ( !m_hasSpokenToSbYet||player->isTryingToConversateWithFriend() )
{
m_hasSpokenToSbYet=true;
startConderversation();
}

View File

@ -106,6 +106,9 @@ protected:
u8 m_animPlaying;
CActorGfx *m_actorGfx;
bool m_reversed;
int m_hasSpokenToSbYet;
int m_iconStrobe;
};
#endif