This commit is contained in:
Paul 2001-02-21 17:13:37 +00:00
parent 9386d1e96c
commit 68bf62003e
15 changed files with 259 additions and 46 deletions

View file

@ -25,6 +25,10 @@
#include "utils\mathtab.h"
#endif
#ifndef __PRIM_HEADER__
#include "gfx\prim.h"
#endif
/* Std Lib
------- */
@ -62,7 +66,7 @@
void CBaseQuestItemPickup::init()
{
CBasePickup::init();
// m_sin=0;
m_pingFrame=0;
}
/*----------------------------------------------------------------------
@ -82,17 +86,28 @@ void CBaseQuestItemPickup::shutdown()
Params:
Returns:
---------------------------------------------------------------------- */
//int bubmix_bobspeed=10;
//int bubmix_bobscale=3;
int quest_pingframes=50;
int quest_pingwaitframes=100;
int quest_pingsize=100;
int quest_pingr=0;
int quest_pingg=255;
int quest_pingb=0;
int quest_pingsegments=16;
int quest_transmode=1;
void CBaseQuestItemPickup::think(int _frames)
{
CBasePickup::think(_frames);
// m_sin=(m_sin+(_frames*bubmix_bobspeed))&4095;
m_pingFrame+=_frames;
if(m_pingFrame>(quest_pingframes+quest_pingwaitframes))
{
// Do sound too.. (pkg)
m_pingFrame=0;
}
}
/*----------------------------------------------------------------------
Function:
Purpose:
Purpose: LOTS to optimise here.. (pkg)
Params:
Returns:
---------------------------------------------------------------------- */
@ -110,6 +125,51 @@ void CBaseQuestItemPickup::render()
y=Pos.vy-ofs.vy-(fh->H/2);
sprites->printFT4(fh,x,y,0,0,PICKUPS_OT_POS);
if(m_pingFrame<quest_pingframes)
{
int radius;
int endr,endg,endb;
int angle;
DVECTOR p1,p2;
int i;
POLY_G3 *g3;
POLY_FT3 *ft3;
x=Pos.vx-ofs.vx;
y=Pos.vy-ofs.vy;
radius=(quest_pingsize*m_pingFrame)/quest_pingframes;
endr=(quest_pingr*(quest_pingframes-m_pingFrame))/quest_pingframes;
endg=(quest_pingg*(quest_pingframes-m_pingFrame))/quest_pingframes;
endb=(quest_pingb*(quest_pingframes-m_pingFrame))/quest_pingframes;
p1.vx=x;
p1.vy=y+radius;
for(i=0;i<quest_pingsegments;i++)
{
angle=(4095*(i+1))/quest_pingsegments;
p2.vx=x+((msin(angle)*radius)>>12);
p2.vy=y+((mcos(angle)*radius)>>12);
g3=GetPrimG3();
setXY3(g3,x,y,p1.vx,p1.vy,p2.vx,p2.vy);
setRGB0(g3,0,0,0);
setRGB1(g3,endr,endg,endb);
setRGB2(g3,endr,endg,endb);
setShadeTex(g3,0);
setSemiTrans(g3,1);
AddPrimToList(g3,PICKUPS_OT_POS+1);
p1=p2;
}
// Trans
ft3=GetPrimFT3();
setShadeTex(ft3,1);
setSemiTrans(ft3,1);
ft3->tpage=(quest_transmode<<5);
setXY3(ft3,512,512,512,512,512,512);
AddPrimToList(ft3,PICKUPS_OT_POS+1);
}
CBasePickup::render();
}