Exemplo n.º 1
0
int SpecialSyreen(pPlayer pl)
{
	s16 b;
	s16 angle;
	pPlayer opp=(pPlayer)pl->opp;
	int ret=0;
	s32 dist=distanceBetweenPoints(pl->object.xpos,pl->object.ypos,opp->object.xpos,
		opp->object.ypos);
	if (dist<208&&(!(opp->ship_flags & CREW_IMMUNE)))
		{

			s8 crew_loss;
			crew_loss = ((8		* (208 - dist)/ 209));
			if (crew_loss >= opp->crew)
				crew_loss = opp->crew - 1;

	for (int i=0;i<crew_loss&&opp->crew-ret>1;i++)
	{
		b=nextWeapon(pl,4,12);
	if (b>0)
	{
		pl->weapon[b].type=CREW;
		pl->weapon[b].object.life=1;
		pl->weapon[b].status=200;//GUESS
		pl->weapon[b].damage=0;
		pl->weapon[b].target=pl->opp;
		pl->weapon[b].parent=pl;
		pl->weapon[b].damageparent=1;
		pl->weapon[b].movefunc=&MoveCrew;
		pl->weapon[b].hitfunc=&HitCrew;
		pl->weapon[b].object.ignorecollision=0;

		pl->weapon[b].object.size=8;
		pl->weapon[b].object.angle = 0;

		pl->weapon[b].object.xspeed=0;
		pl->weapon[b].object.yspeed=0;

		pl->weapon[b].turn_wait=CREW_WAIT;

	angle=FindAngle(opp->object.xpos,opp->object.ypos,pl->object.xpos,pl->object.ypos);
	angle=ModifyAngle(angle,((i*2)-crew_loss)*20);

		pl->weapon[b].object.xpos = opp->object.xpos+((s32)(opp->offset*3 * SIN[angle])>>8);
		pl->weapon[b].object.ypos = opp->object.ypos-((s32)(opp->offset*3 * COS[angle])>>8);

		drawOnScreen(&pl->weapon[b].object.xscreen,&pl->weapon[b].object.yscreen,
			pl->weapon[b].object.xpos,pl->weapon[b].object.ypos,screenx,screeny,pl->weapon[b].object.size);

	 	sprites[pl->weapon[b].sprite].attribute0 = COLOR_256 | SQUARE | ROTATION_FLAG |SIZE_DOUBLE | MODE_TRANSPARENT | pl->weapon[b].object.yscreen;	//setup sprite info, 256 colour, shape and y-coord
		sprites[pl->weapon[b].sprite].attribute1 =SIZE_8 | ROTDATA(pl->weapon[b].sprite) | pl->weapon[b].object.xscreen;
		sprites[pl->weapon[b].sprite].attribute2 = pl->SpriteStart+66 | PRIORITY(1);
		ret++;

	}
	}	//loop
Exemplo n.º 2
0
int FireArilou(pPlayer pl)
{
	pPlayer opp=(pPlayer)pl->opp;
	play_sfx(&arilou_fire,pl->plr-1);

	for (int b=0;b<4;b++)
	{


			pl->weapon[b].type=LASER;
			pl->weapon[b].object.life=2;
			pl->weapon[b].damage=-1;
			pl->weapon[b].target=pl->opp;
			pl->weapon[b].parent=pl;
			pl->weapon[b].damageparent=0;			
			pl->weapon[b].movefunc=0;			
			pl->weapon[b].hitfunc=0;
			pl->weapon[b].object.ignorecollision=0;

			pl->weapon[b].object.size=32;//(b==3?8:32);
			pl->weapon[b].object.angle = FindAngle(pl->object.xpos,pl->object.ypos,opp->object.xpos,opp->object.ypos);

			s32 off=(b==0?13:13+(b*32));

			pl->weapon[b].object.xspeed=0;
			pl->weapon[b].object.yspeed=0;


			pl->weapon[b].object.xpos = pl->object.xpos+((off * (s32)SIN[pl->weapon[b].object.angle])>>8);
			pl->weapon[b].object.ypos = pl->object.ypos-((off * (s32)COS[pl->weapon[b].object.angle])>>8);

			drawOnScreen(&pl->weapon[b].object.xscreen,&pl->weapon[b].object.yscreen,
				pl->weapon[b].object.xpos,pl->weapon[b].object.ypos,screenx,screeny,pl->weapon[b].object.size);

			sprites[pl->weapon[b].sprite].attribute0 = COLOR_256 | SQUARE | ROTATION_FLAG |SIZE_DOUBLE | MODE_TRANSPARENT | pl->weapon[b].object.yscreen;	//setup sprite info, 256 colour, shape and y-coord
			sprites[pl->weapon[b].sprite].attribute1 =SIZE_32 | ROTDATA(pl->weapon[b].sprite) | pl->weapon[b].object.xscreen;
			sprites[pl->weapon[b].sprite].attribute2 = pl->SpriteStart+64 | PRIORITY(1);
		}
	return 1;
}
/**
   If no mouse button is pressed, the image data hasn't changed and the image
   can be copied from offscreen image
   If a mouse button is pressed, the image is painted directly on screen to avoid
   unnecessary copy steps
 */
void
SystemTopologyDrawing::paintEvent( QPaintEvent* )
{
    //  qDebug() << "==== paintEv" << QTime::currentTime();
    QPainter painter( this );
    painter.fillRect( rect(), this->palette().brush( QPalette::Window ) );

    // mouse action cannot be handled with offscreen image
    if ( rightMousePressed || leftMousePressed || toSelect )
    {
        drawOnScreen();
    }
    else                                                 // use offscreen image
    {
        bool selectionChanged = data->updateSelection(); // todo optimize
        if ( offscreen == 0 || selectionChanged )
        {
            drawOffScreen();
        }
        painter.drawPixmap( 0, 0, *offscreen );
    }
}
void mainApp::draw()
{
    //----------
    // render visual
    //----------
    mVisualBlob->rendering();
    
    //----------
    // draw moniter
    //----------
    switch (mMode)
    {
        case ON_SCREEN:     drawOnScreen(); break;
        case PRE_PROCESS:   drawPreProcess(); break;
        case BLOB_CONTROLL: drawBlobControll(); break;
    }
    
    if (bDrawGui)
    {
        gui.draw();
        drawInfomationText(gui.getPosition().x, gui.getPosition().y + gui.getHeight() + 20);
    }
    ofSetWindowTitle(ofToString(ofGetFrameRate()));
}
Exemplo n.º 5
0
int FireUtwig(pPlayer pl)
{

	s16 b;
	int ret=0;

	
	for (int i=0;i<6;i++)
	{
	b= nextWeapon(pl);
	if (b>=0)
	{
	pl->weapon[b].type=SIMPLE;
	pl->weapon[b].object.life=MISSILE_LIFE;//range
	pl->weapon[b].damage=-1*MISSILE_DAMAGE;//6 suspect 6 was for both guns;
	pl->weapon[b].target=pl->opp;
	pl->weapon[b].parent=pl;
	pl->weapon[b].damageparent=0;
	pl->weapon[b].movefunc=0;
	pl->weapon[b].hitfunc=0;
	pl->weapon[b].object.ignorecollision=0;

	pl->weapon[b].object.size=8;
	pl->weapon[b].object.angle = pl->object.angle;

	s32 speed=20;
	pl->weapon[b].object.xspeed = ((MISSILE_SPEED * (s32)SIN[pl->object.angle])>>8);///SPEED_REDUCT;
	pl->weapon[b].object.yspeed = ((MISSILE_SPEED * (s32)COS[pl->object.angle])>>8);///SPEED_REDUCT;

	//pl->weapon[b].object.xpos = pl->object.xpos+((52 * (s32)SIN[pl->object.angle+(i==0?-30:+30)])>>8)/3;
	//pl->weapon[b].object.ypos = pl->object.ypos-((52 * (s32)COS[pl->object.angle+(i==0?-30:+30)])>>8)/3;

	s16 angle;

	if (i==0)
		angle=ModifyAngle(pl->object.angle,-55);
	else if (i==1)
		angle=ModifyAngle(pl->object.angle,-35);
	else if (i==2)
		angle=ModifyAngle(pl->object.angle,-10);
	else if (i==3)
		angle=ModifyAngle(pl->object.angle,15);
	else if (i==4)
		angle=ModifyAngle(pl->object.angle,45);
	else if (i==5)
		angle=ModifyAngle(pl->object.angle,65);



	pl->weapon[b].object.xpos = pl->object.xpos+((52 * (s32)SIN[angle])>>8)/3;
	pl->weapon[b].object.ypos = pl->object.ypos-((52 * (s32)COS[angle])>>8)/3;

	#ifdef MISSILE_START
	pl->weapon[b].object.xpos-=pl->weapon[b].object.xspeed;
	pl->weapon[b].object.ypos+=pl->weapon[b].object.yspeed;
	#endif

	drawOnScreen(&pl->weapon[b].object.xscreen,&pl->weapon[b].object.yscreen,
		pl->weapon[b].object.xpos,pl->weapon[b].object.ypos,screenx,screeny,pl->weapon[b].object.size);

	sprites[pl->weapon[b].sprite].attribute0 = COLOR_256 | SQUARE | ROTATION_FLAG |SIZE_DOUBLE | MODE_TRANSPARENT | pl->weapon[b].object.yscreen;	//setup sprite info, 256 colour, shape and y-coord
    sprites[pl->weapon[b].sprite].attribute1 =SIZE_8| ROTDATA(pl->weapon[b].sprite) | pl->weapon[b].object.xscreen;
    sprites[pl->weapon[b].sprite].attribute2 = pl->SpriteStart+64 | PRIORITY(1);

    ret++;
	}
	}