This commit is contained in:
parent
9386d1e96c
commit
68bf62003e
15 changed files with 259 additions and 46 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue