void RollingballApplet::setFrame( cv::Mat& frame )
{
    // Filter pipeline
    mCalibrationFilter->setFrame( frame );
    mCalibrationFilter->process();
    mFrame = mCalibrationFilter->getCalibratedFrame();

    // compute plate angle
    mAlpha = computeAngle();

    //
    // compute new ball position
    //
    if(!mDead)
    {
        mSpeed *= 0.98;                                // frottement
        mSpeed += -6.0 * sin(M_PI/180.0 * mAlpha);    // acceleration
        mSpeed = qBound(-20.0, mSpeed, 20.0);           // limit speed

        mStep += mSpeed;
        if(mStep > W)
        {
            mStep = W;
            killPlayer(true);
        }
        if(mStep < -W)
        {
            mStep = -W;
            killPlayer(true);
        }
    }

    update();
}
Exemple #2
0
void Cmd_Sub_f(edict_t * ent)
{
	if (!matchmode->value) {
		gi.cprintf(ent, PRINT_HIGH, "This command needs matchmode to be enabled\n");
		return;
	}

	if (ent->client->resp.team == NOTEAM) {
		gi.cprintf(ent, PRINT_HIGH, "You need to be on a team for that...\n");
		return;
	}
	if (!ent->client->resp.subteam) {
		killPlayer(ent, true); // lets kill em.
		gi.bprintf(PRINT_HIGH, "%s is now a substitute for %s\n", ent->client->pers.netname, teams[ent->client->resp.team].name);
		ent->client->resp.subteam = ent->client->resp.team;
		return;
	}

	gi.bprintf(PRINT_HIGH, "%s is no longer a substitute for %s\n", ent->client->pers.netname, teams[ent->client->resp.team].name);
	ent->client->resp.subteam = 0;
	if (team_round_going && !(gameSettings & GS_ROUNDBASED))
	{
		PutClientInServer (ent);
		AddToTransparentList (ent);
	}
}
Exemple #3
0
void deleteActor(character *chr) {
	item *lodgedItem = getItemLodgedInActor(chr);
	
	if (chr == getPlayer()) {
		killPlayer();
	}

	deleteEntity(getWorld(), chr->entityId);
	
	if (lodgedItem) {
		lodgedItem->itemFlags ^= IS_LODGED;
		lodgedItem->lodgedInActor = NULL;
		lodgedItem->x = chr->x;
		lodgedItem->y = chr->y;
	}

	if (chr->itemLight) {
		deleteDynamicLight(chr->itemLight);
		chr->itemLight = NULL;
	}

	if (chr == CHARACTERS) {
		CHARACTERS = chr->next;
	} else {
		chr->prev->next = chr->next;

		if (chr->next) {
			chr->next->prev = chr->prev;
		}
	}

	free(chr);
}
void Enemy_onHit( Object* e )
{
    if ((e->vx < 0 && player.x > e->x) || (e->vx > 0 && player.x < e->x)) {
        e->vx = -e->vx;
        e->anim.direction = -e->anim.direction;
    }
    e->state = ENEMY_STATE_MOVING + 1;
    setAnimation(e, 4, 4, 0);
    killPlayer();
}
void Water_onHit( Object* e )
{
    int er, ec;
    getObjectCell(e, &er, &ec);

    int pr, pc;
    getObjectCell((Object*)&player, &pr, &pc);

    if (er == pr) {
        killPlayer();
    }
}
RollingballApplet::RollingballApplet(QWidget *parent) : Applet(parent)
{
    mName = ROLLINGBALL_NAME;
    mTitle = ROLLINGBALL_TITLE;

    // load description, marketing and technical text from
    // xml file. Ensure that mName is set before calling this function
    loadTextFromXml();

    //
    // Build filter pipeline
    //
    mCalibrationFilter = new CalibrationFilter();
    reset();

    //
    // User interface
    //
    QPalette palette = this->palette();
    palette.setColor( backgroundRole(), Qt::gray );
    setPalette( palette );

    // images
    mImgBall.load( ":/image/rollingball/spirale.png" );
    mImgReflexion.load( ":/image/rollingball/reflexion.png" );
    mImgShadow.load( ":/image/rollingball/ballShadow.png" );
    mImgCoin.load( ":/image/rollingball/coin.png" );

    QHBoxLayout *layout = new QHBoxLayout( this );
    layout->setAlignment( Qt::AlignTop | Qt::AlignRight );

    mLcd = new QLCDNumber( this );
    mLcd->setNumDigits( 2 );
    mLcd->setFixedHeight( 32 );
    layout->addWidget( mLcd );

    mTmrCoinLife = new QTimer( this );
    mTmrCoinLife->setSingleShot( true );
    connect( mTmrCoinLife, SIGNAL( timeout() ), this, SLOT( killPlayer() ) );

    mTmrCoinCycle = new QTimer( this );
    mTmrCoinCycle->setInterval( ROLLINGBALL_COIN_CYCLE);
    connect( mTmrCoinCycle, SIGNAL( timeout() ), this, SLOT( addCoin() ) );

    qsrand( QTime::currentTime().msec() );

    // Gestures
    setGestures(SWAP_LEFT_RIGHT);
}
Exemple #7
0
void Player::getDmg(int v)
{
    health -= v;
    if (health < 0)
        killPlayer();

    /*
    wou = true;
    int x1 = centralX();
    int y1 = centralY();

    wound = new QGraphicsPixmapItem();
    wound->setPixmap(QPixmap(":/images/images/wound.png").scaled(game->width(),game->height()));
    wound->setPos(x1-game->width()/2,y1-game->height()/2);
    game->scene->addItem(wound);
    */

    /*
    QTimer *timerw = new QTimer();
    connect(timerw,SIGNAL(timeout()),this,SLOT(playerWound()));
    */
    //QTimer::singleShot(2000, this, SLOT(playerWound()));
}
Exemple #8
0
static void customTrigger( int inTriggerNumber ) {
    
    //GridPos offset = { 0, 0 };
    ClothingSet clothing = getEmptyClothingSet();

    
    // increment this as we check for matches
    // thus, we can rearrange trigger order below
    // without having to update all the trigger numbers
    int t = 0;
    

    if( inTriggerNumber == t++ ) {
        forcePlayerAge( "*****@*****.**", 40 );
        
        // audible pop
        // plays on decay of this place-holder object
        setMapObject( 2, -1, 657 );
        

        // use this opportunity to spawn all NPCs for video

        GridPos startPos = { 25, -3 };
        
        clothing.tunic = getObject( 201 );
        clothing.bottom = getObject( 200 );
        
        eve = newDummyPlayer( "*****@*****.**", 19, 20,
                              startPos,
                              0,
                              clothing );

        startPos.x = 21;
        startPos.y = 2;
        clothing = getEmptyClothingSet();
        lostBaby = newDummyPlayer( "*****@*****.**", 347, 1,
                              startPos,
                              0,
                              clothing );
        
        
        clothing.tunic = getObject( 201 );
        clothing.bottom = getObject( 200 );
        
        startPos.x = 24;
        startPos.y = 4;
        momA = newDummyPlayer( "*****@*****.**", 350, 27,
                               startPos,
                               0,
                               clothing );
        startPos.x = 25;
        clothing = getEmptyClothingSet();
        babyA = newDummyPlayer( "*****@*****.**", 351, 1,
                               startPos,
                               0,
                               clothing );


        clothing.bottom = getObject( 200 );
        
        startPos.x = 26;
        startPos.y = 5;
        dadA = newDummyPlayer( "*****@*****.**", 355, 27,
                               startPos,
                               0,
                               clothing );

        startPos.x = 27;
        startPos.y = 5;
        kidA1 = newDummyPlayer( "*****@*****.**", 353, 3,
                                startPos,
                                0,
                                clothing );
        startPos.x = 30;
        startPos.y = 9;
        kidA2 = newDummyPlayer( "*****@*****.**", 350, 5,
                                startPos,
                                40,
                                clothing );
        
        clothing.hat = getObject( 199 );
        clothing.frontShoe = getObject( 203 );
        clothing.backShoe = getObject( 203 );

        startPos.x = 27;
        startPos.y = 6;
        grandpaA = newDummyPlayer( "*****@*****.**", 347, 55,
                               startPos,
                               0,
                               clothing );


        clothing = getEmptyClothingSet();
        clothing.bottom = getObject( 200 );
        
        startPos.x = 40;
        startPos.y = 1;
        manB1 = newDummyPlayer( "*****@*****.**", 347, 28,
                                startPos,
                                292,
                                clothing );

        startPos.x = 47;
        startPos.y = 3;
        manB2 = newDummyPlayer( "*****@*****.**", 354, 57,
                                startPos,
                                0,
                                clothing );
        
        startPos.x = 42;
        startPos.y = 2;
        kidB1 = newDummyPlayer( "*****@*****.**", 352, 6,
                                startPos,
                                135,
                                clothing );



        clothing.tunic = getObject( 201 );
        
        startPos.x = 43;
        startPos.y = -1;
        womanB1 = newDummyPlayer( "*****@*****.**", 353, 29,
                                startPos,
                                139,
                                clothing );

        startPos.x = 45;
        startPos.y = 2;
        womanB2 = newDummyPlayer( "*****@*****.**", 351, 49,
                                startPos,
                                71,
                                clothing );


        
        clothing = getEmptyClothingSet();
        clothing.bottom = getObject( 200 );
        
        startPos.x = 59;
        startPos.y = -5;
        kidC1 = newDummyPlayer( "*****@*****.**", 19, 5,
                                startPos,
                                0,
                                clothing );

        startPos.x = 59;
        startPos.y = -4;
        kidC2 = newDummyPlayer( "*****@*****.**", 354, 8,
                                startPos,
                                277,
                                clothing );
        
        
        clothing.hat = getObject( 199 );
        startPos.x = 56;
        startPos.y = -5;
        manC1 = newDummyPlayer( "*****@*****.**", 355, 56,
                                startPos,
                                248,
                                clothing );
        

        clothing.hat = getObject( 199 );
        clothing.tunic = getObject( 585 );
        startPos.x = 75;
        startPos.y = -7;
        manD1 = newDummyPlayer( "*****@*****.**", 352, 20,
                                startPos,
                                583,
                                clothing );

        clothing.hat = NULL;
        clothing.tunic = getObject( 201 );
        startPos.x = 78;
        startPos.y = -7;
        manD2 = newDummyPlayer( "*****@*****.**", 347, 32,
                                startPos,
                                560,
                                clothing );


        startPos.x = 69;
        startPos.y = -8;
        womanD1 = newDummyPlayer( "*****@*****.**", 350, 12.5,
                                  startPos,
                                  441,
                                  clothing );
        
        startPos.x = 81;
        startPos.y = -7;
        womanD2 = newDummyPlayer( "*****@*****.**", 351, 20,
                                  startPos,
                                  67,
                                  clothing );

        

        clothing.hat = getObject( 584 );
        clothing.tunic = getObject( 585 );
        clothing.frontShoe = getObject( 586 );
        clothing.backShoe = getObject( 586 );

        startPos.x = 91;
        startPos.y = -8;
        manE1 = newDummyPlayer( "*****@*****.**", 355, 37.5,
                                startPos,
                                334,
                                clothing );

        startPos.x = 93;
        startPos.y = -8;
        womanE1 = newDummyPlayer( "*****@*****.**", 19, 23,
                                startPos,
                                334,
                                clothing );




        startPos.x = 114;
        startPos.y = -2;
        
        clothing = getEmptyClothingSet();
        clothing.tunic = getObject( 585 );
        carDriver = newDummyPlayer( "*****@*****.**", 19, 20,
                                    startPos,
                                    630,
                                    clothing );


        clothing = getEmptyClothingSet();
        
        clothing.hat = getObject( 199 );
        clothing.tunic = getObject( 201 );
        clothing.bottom = getObject( 200 );
        clothing.frontShoe = getObject( 203 );
        clothing.backShoe = getObject( 203 );

        startPos.x = 116;
        startPos.y = -11;
        transportDriver = newDummyPlayer( "*****@*****.**", 19, 20,
                                          startPos,
                                          632,
                                          clothing );

        }
    else if( inTriggerNumber == t++ ) {
        // eve walks into clearing
        addToMove( -1, 0 );
        addToMove( -2, 0 );
        addToMove( -3, 0 );
        addToMove( -4, 0 );
        addToMove( -5, 0 );
        addToMove( -6, 0 );
        addToMove( -7, 0 );
        
        sendDummyMove( &eve, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // eve has baby
        GridPos startPos = { 18, -3 };
        
        firstBaby = newDummyPlayer( "*****@*****.**", 350, 0,
                                    startPos,
                                    0,
                                    clothing );
        }
    else if( inTriggerNumber == t++ ) {
        // grab baby
        GridPos offset = { 0, 0 };
        sendDummyAction( &eve, "BABY", offset );
        }
    else if( inTriggerNumber == t++ ) {
        // eve walks south with baby
        addToMove( 0, -1 );
        addToMove( 0, -2 );
        addToMove( 0, -3 );
        addToMove( 0, -4 );
        addToMove( 0, -5 );
        addToMove( 0, -6 );
        addToMove( 0, -7 );
        addToMove( 0, -8 );
        
        sendDummyMove( &eve, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // lost baby runs past
        forcePlayerAge( "*****@*****.**", 0 );
        addToMove( -1, 0 );
        addToMove( -2, 0 );
        addToMove( -3, 0 );
        addToMove( -4, 0 );
        addToMove( -5, 0 );
        addToMove( -6, 0 );
        addToMove( -7, 0 );
        addToMove( -8, 0 );
        addToMove( -9, 0 );
        addToMove( -10, 0 );
        addToMove( -11, 0 );
        addToMove( -12, 0 );
        addToMove( -13, 0 );
        addToMove( -14, 0 );
        addToMove( -15, 0 );
        addToMove( -16, 0 );
        
        sendDummyMove( &lostBaby, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // grab hat
        GridPos offset = { 0, 1 };
        sendDummyAction( &momA, "USE", offset );        

        // put on baby
        offset.x = 1;
        offset.y = 0;
        setNextActionDelay( 1.0 );
        sendDummyAction( &momA, "UBABY", offset, true, -1 );
        
        // pick berry
        setNextActionDelay( 0.5 );
        offset.x = -1;
        sendDummyAction( &dadA, "USE", offset );

        // kid comes walking in
        addToMove( -1, -1 );
        addToMove( -1, -2 );
        addToMove( -1, -3 );
        addToMove( -1, -4 );
        addToMove( -2, -5 );
        addToMove( -3, -5 );
        addToMove( -4, -5 );
        
        sendDummyMove( &kidA2, finishMove() );
   
        // feed berry
        offset.x  = 1;
        offset.y = 0;
        setNextActionDelay( 1.5 );
        sendDummyAction( &dadA, "UBABY", offset, true, -1 );

        // pick up baby
        setNextActionDelay( 2.25 );
        offset.x  = 1;
        offset.y = 0;
        sendDummyAction( &momA, "BABY", offset );

        // walk away with baby
        addToMove( 1, 0 );
        addToMove( 2, 0 );
        addToMove( 3, 0 );
        addToMove( 4, 0 );
        addToMove( 4, 1 );
        addToMove( 4, 2 );
        addToMove( 4, 3 );
        addToMove( 4, 4 );
        addToMove( 4, 5 );
        
        setNextActionDelay( 3 );
        sendDummyMove( &momA, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // skin rabbit
        GridPos offset = { 1, 0 };
        sendDummyAction( &kidB1, "USE", offset );
        
        // set down stone
        setNextActionDelay( .75 );
        offset.x = 0;
        sendDummyAction( &kidB1, "DROP", offset, true, -1 );

        // pick up rabbit fur
        setNextActionDelay( 1.5 );
        offset.x = 1;
        sendDummyAction( &kidB1, "USE", offset );
        
        // pick drop fur
        setNextActionDelay( 2.25 );
        offset.x = 0;
        offset.y = 1;
        sendDummyAction( &kidB1, "DROP", offset, true, -1 );

        // pick up skewer
        setNextActionDelay( 3 );
        offset.x = -1;
        offset.y = 0;
        sendDummyAction( &kidB1, "USE", offset );
        
        // skewer rabbit
        setNextActionDelay( 3.75 );
        offset.x = 1;
        offset.y = 0;
        sendDummyAction( &kidB1, "USE", offset );
        



        // chop wood
        offset.x = -1;
        offset.y = 0;
        setNextActionDelay( 0.25 );
        sendDummyAction( &womanB2, "USE", offset );
        

        // drop hatchet
        offset.x = 0;
        offset.y = 0;
        setNextActionDelay( 1 );
        sendDummyAction( &womanB2, "DROP", offset, true, -1 );
        

        // grab wood
        offset.x = -1;
        offset.y = 0;
        setNextActionDelay( 1.75 );
        sendDummyAction( &womanB2, "USE", offset );

        
        // walk to fire
        addToMove( -1, -1 );
        addToMove( -2, -1 );
        setNextActionDelay( 2.5 );
        sendDummyMove( &womanB2, finishMove() );
        
        // feed fire
        offset.x = -1;
        offset.y = 0;
        setNextActionDelay( 3.5 );
        sendDummyAction( &womanB2, "USE", offset );

        
        // walk into scene
        addToMove( -1, -1 );
        addToMove( -2, -2 );
        setNextActionDelay( .5 );
        sendDummyMove( &manB2, finishMove() );

        // grab sharp stone
        setNextActionDelay( 1.5 );
        offset.x = 0;
        offset.y = 0;
        sendDummyAction( &manB2, "USE", offset );
        

        // use stone on wood
        setNextActionDelay( 2.25 );
        offset.x = -1;
        sendDummyAction( &manB2, "USE", offset );
        

        // use stone on wood again
        setNextActionDelay( 3 );
        sendDummyAction( &manB2, "USE", offset );


        addToMove( 1, 0 );
        addToMove( 2, 1 );
        addToMove( 3, 1 );
        addToMove( 4, 1 );
        addToMove( 5, 2 );
        addToMove( 6, 3 );
        addToMove( 7, 4 );
        setNextActionDelay( 4 );
        sendDummyMove( &manB1, finishMove() );


        
        addToMove( 0, 1 );
        addToMove( 0, 2 );
        addToMove( 0, 3 );
        setNextActionDelay( 4.5 );
        sendDummyMove( &womanB1, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // light oven
        GridPos offset = { -1, 0 };
        sendDummyAction( &manC1, "USE", offset );
        
        // set down firebrand
        setNextActionDelay( 2 );
        offset.x = 0;
        sendDummyAction( &manC1, "DROP", offset, true, -1 );

        // walk to door
        addToMove( 1, -1 );
        addToMove( 2, -2 );
        setNextActionDelay( 3 );
        sendDummyMove( &manC1, finishMove() );
        
        // close door
        offset.y = 0;
        setNextActionDelay( 4 );
        sendDummyAction( &manC1, "USE", offset );
        
        
        // walk to pie
        addToMove( -1, 1 );
        setNextActionDelay( 4.5 );
        sendDummyMove( &manC1, finishMove() );
        
        // grab pie
        offset.x = -1;
        setNextActionDelay( 5.5 );
        sendDummyAction( &manC1, "USE", offset );
        
        


        
        // walk to door
        addToMove( -1, -1 );
        setNextActionDelay( .25 );
        sendDummyMove( &kidC1, finishMove() );
        
        
        // open door
        offset.x = 0;
        offset.y = -1;
        setNextActionDelay( 1 );
        sendDummyAction( &kidC1, "USE", offset );
        
        // run out

        addToMove( 0, -1 );
        addToMove( 0, -2 );
        addToMove( 0, -3 );
        addToMove( 0, -4 );
        addToMove( 0, -5 );
        addToMove( 0, -6 );
        addToMove( 0, -7 );
        addToMove( 0, -8 );
        addToMove( 0, -9 );
        addToMove( 0, -10 );
        setNextActionDelay( 1.75 );
        sendDummyMove( &kidC1, finishMove() );
        

        // follow out
        addToMove( 0, -1 );
        addToMove( -1, -2 );
        addToMove( -1, -3 );
        addToMove( -1, -4 );
        addToMove( -1, -5 );
        addToMove( -1, -6 );
        addToMove( -1, -7 );
        addToMove( -1, -8 );
        addToMove( -1, -9 );
        addToMove( -1, -10 );
        addToMove( -1, -11 );
        addToMove( -1, -12 );
        setNextActionDelay( 1.5 );
        sendDummyMove( &kidC2, finishMove() );

        }
    else if( inTriggerNumber == t++ ) {
        // hit metal repeatedly
        GridPos offset = { 1, 0 };
        sendDummyAction( &womanD1, "USE", offset );
        
        offset.x = -1;
        setNextActionDelay( 0.75 );
        sendDummyAction( &womanD1, "USE", offset );

        setNextActionDelay( 1.25 );
        sendDummyAction( &womanD1, "USE", offset );

        setNextActionDelay( 2 );
        sendDummyAction( &womanD1, "USE", offset );

        
        // kntit
        setNextActionDelay( 1.25 );
        sendDummyAction( &manD1, "USE", offset );



        // butcher
        setNextActionDelay( 1.75 );
        sendDummyAction( &manD2, "USE", offset );


        // drop knife
        setNextActionDelay( 2.5 );
        offset.x = 0;
        sendDummyAction( &manD2, "DROP", offset, true, -1 );
        
        
        // grab meat
        offset.x = -1;
        setNextActionDelay( 3 );
        sendDummyAction( &manD2, "USE", offset );
        
        // cook
        offset.y = 1;
        offset.x = 0;
        setNextActionDelay( 3.75 );
        sendDummyAction( &manD2, "USE", offset );


        // walk to fence
        addToMove( 1, -1 );
        setNextActionDelay( 3 );
        sendDummyMove( &womanD2, finishMove() );


        // close fence
        offset.y = 0;
        offset.x = 0;
        setNextActionDelay( 3.75 );
        sendDummyAction( &womanD2, "USE", offset );
        }
    else if( inTriggerNumber == t++ ) {
        // chop tree
        GridPos offset = { 1, 0 };
        sendDummyAction( &womanE1, "USE", offset );

        // put ax in cart
        offset.x = 0;
        offset.y = 1;
        setNextActionDelay( 1.5 );
        sendDummyAction( &womanE1, "DROP", offset, true, -1 );

        // grab wood
        offset.y = 0;
        offset.x = 1;
        setNextActionDelay( 2.25 );
        sendDummyAction( &womanE1, "USE", offset );

        // put wood in cart
        offset.x = 0;
        offset.y = 1;
        setNextActionDelay( 3.25 );
        sendDummyAction( &womanE1, "DROP", offset, true, -1 );
        
        // walk to south
        addToMove( 0, -1 );
        addToMove( 0, -2 );
        addToMove( 0, -3 );
        addToMove( 0, -4 );
        addToMove( 0, -5 );
        addToMove( 0, -6 );
        addToMove( 0, -7 );
        addToMove( 0, -8 );
        addToMove( 0, -9 );

        setNextActionDelay( 4 );
        sendDummyMove( &womanE1, finishMove() );




        // chop
        offset.y = 0;
        offset.x = 1;
        setNextActionDelay( 0.25 );
        sendDummyAction( &manE1, "USE", offset );
        
        // put ax in cart
        offset.x = -1;
        setNextActionDelay( 1 );
        sendDummyAction( &manE1, "DROP", offset, true, -1 );

        // grab wood
        offset.y = 0;
        offset.x = 1;
        setNextActionDelay( 1.75 );
        sendDummyAction( &manE1, "USE", offset );
        
        // put wood in cart
        offset.x = -1;
        setNextActionDelay( 2.5 );
        sendDummyAction( &manE1, "DROP", offset, true, -1 );
        
        // grab cart
        setNextActionDelay( 3 );
        sendDummyAction( &manE1, "USE", offset );


        // walk to village
        addToMove( -1, -1 );
        addToMove( -2, -1 );
        addToMove( -3, -1 );
        addToMove( -4, -1 );
        addToMove( -5, -1 );
        addToMove( -6, -1 );
        addToMove( -7, -1 );
        addToMove( -8, -1 );
        addToMove( -9, -1 );
        setNextActionDelay( 3.5 );
        sendDummyMove( &manE1, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // car drives past
        
        addToMove( -1, 0 );
        addToMove( -2, 0 );
        addToMove( -3, 0 );
        addToMove( -4, 0 );
        addToMove( -5, 0 );
        addToMove( -6, 0 );
        addToMove( -7, 0 );
        addToMove( -8, 0 );
        addToMove( -9, 0 );
        addToMove( -10, 0 );
        addToMove( -11, 0 );
        addToMove( -12, 0 );
        addToMove( -13, 0 );
        addToMove( -14, 0 );
        addToMove( -15, 0 );
        sendDummyMove( &carDriver, finishMove() );


        addToMove( -1, 0 );
        addToMove( -2, 0 );
        addToMove( -3, 0 );
        addToMove( -4, 0 );
        addToMove( -5, 0 );
        addToMove( -6, 0 );
        addToMove( -7, 0 );
        addToMove( -8, 0 );
        addToMove( -9, 0 );
        addToMove( -10, 0 );
        addToMove( -11, 0 );
        addToMove( -12, 0 );
        setNextActionDelay( 2 );
        sendDummyMove( &carDriver, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // horn honks
        
        // plays on decay of this place-holder object
        setMapObject( 102, -2, 654 );
        }
    else if( inTriggerNumber == t++ ) {
        // transport goes overhead
        
        addToMove( 0, 1 );
        addToMove( 0, 2 );
        addToMove( 0, 3 );
        addToMove( 0, 4 );
        addToMove( 0, 5 );
        addToMove( 0, 6 );
        addToMove( 0, 7 );
        addToMove( 0, 8 );
        addToMove( 0, 9 );
        addToMove( 0, 10 );
        addToMove( 0, 11 );
        addToMove( 0, 12 );
        addToMove( 0, 13 );
        addToMove( 0, 14 );
        addToMove( 0, 15 );
        sendDummyMove( &transportDriver, finishMove() );


        addToMove( 0, 1 );
        addToMove( 0, 2 );
        addToMove( 0, 3 );
        addToMove( 0, 4 );
        addToMove( 0, 5 );
        addToMove( 0, 6 );
        addToMove( 0, 7 );
        addToMove( 0, 8 );
        addToMove( 0, 9 );
        addToMove( 0, 10 );
        setNextActionDelay( 3 );
        sendDummyMove( &transportDriver, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        // robot switch to firing state
        setMapObject( 115, 8, 648 );
        }
    else if( inTriggerNumber == t++ ) {
        killPlayer( "*****@*****.**" );
        }
    else if( inTriggerNumber == t++ ) {
        // robot switch to greeting state
        setMapObject( 115, 8, 649 );
        }
    else if( inTriggerNumber == t++ ) {
        // robot switch to leaving state
        setMapObject( 115, 8, 0 );

        GridPos startPos = { 115, 8 };
        
        
        
        robotDummy = newDummyPlayer( "*****@*****.**", 650, 0,
                                    startPos,
                                    0,
                                    clothing );
        
        // robot runs north
        addToMove( 0, 1 );
        addToMove( 0, 2 );
        addToMove( 0, 3 );
        addToMove( 0, 4 );
        addToMove( 0, 5 );
        addToMove( 0, 6 );
        addToMove( 0, 7 );
        addToMove( 0, 8 );
        addToMove( 0, 9 );

        sendDummyMove( &robotDummy, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {
        
        GridPos startPos = { -16, -8 };
        
        
        
        wolfDummy = newDummyPlayer( "*****@*****.**", 418, 0,
                                    startPos,
                                    0,
                                    clothing );
        }
    else if( inTriggerNumber == t++ ) {
        // wolf runs past cammera
        addToMove( 1, -1 );
        addToMove( 2, -2 );
        addToMove( 3, -3 );
        addToMove( 4, -4 );
        addToMove( 5, -5 );
        addToMove( 6, -6 );
        addToMove( 7, -7 );
        addToMove( 8, -8 );
        
        sendDummyMove( &wolfDummy, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {

        GridPos startPos = { -10, -10 };
        
        
        
        firstBaby = newDummyPlayer( "*****@*****.**", 19, 0,
                                    startPos,
                                    0,
                                    clothing );

        // stick a loincloth to right so we can put it on baby
        setMapObject( -1, -10, 200 );

        // set up phonograph
        setMapObject( 3, 0, 488 );
        setMapObject( 4, 0, 491 );
        }
    else if( inTriggerNumber == t++ ) {
        sendDummySay( &firstBaby, "O" );
        }
    else if( inTriggerNumber == t++ ) {
        sendDummySay( &firstBaby, "K" );
        }
    else if( inTriggerNumber == t++ ) {

        GridPos deathPos = killPlayer( "*****@*****.**" );
        firstBaby.pos = deathPos;
        }
    else if( inTriggerNumber == t++ ) {        
        // baby walks around at end
        addToMove( 1, 0 );
        addToMove( 2, 0 );
        addToMove( 3, 0 );
        addToMove( 4, 0 );
        
        sendDummyMove( &firstBaby, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {        
        // baby walks around at end
        addToMove( -1, 0 );
        addToMove( -2, 0 );
        addToMove( -3, 0 );
        
        sendDummyMove( &firstBaby, finishMove() );
        }
    else if( inTriggerNumber == t++ ) {        
        // kill baby
        
        dummySockets.deleteElementEqualTo( firstBaby.sock );

        delete firstBaby.sock;
        }
    
    }
Exemple #9
0
void Game::evolue(Input& in)
{
    if(endOfAnimation)
        in.setQuit(1);
    
    // Tableau des contrôles des joueurs (clavier)
    SDLKey tabkey[3][5] = 
    { 
        {SDLK_z,SDLK_s,SDLK_q,SDLK_d, SDLK_a}, 
        {SDLK_UP,SDLK_DOWN,SDLK_LEFT,SDLK_RIGHT, SDLK_RSHIFT}, 
        {SDLK_KP8, SDLK_KP5, SDLK_KP4, SDLK_KP6, SDLK_KP7},
    };
    
    // Tableau des controles des joueurs (joystick)
    int tabjoy[] = {1,4,8,2,0};
    
    // Ecoute du clavier et Actions en conséquence
    for(int i=0; i<NB_PLAYERS; i++ )
    {
        // Récupération du joueur i
        Player *p =  mapPlayers[i];
        
        if( p->isAlive() )
        {
            if( in.getNbJoysticks() > 0 && ( i - in.getNbJoysticks() ) < 0 ) {
                // Mouvement vers le haut :
                if( in.getHat(i,0) ==  tabjoy[0] )
                {
                    doMoveUp(p);
                }

                // Mouvement vers le bas :
                if( in.getHat(i,0) ==  tabjoy[1] )
                {
                    doMoveDown(p);
                }

                // Mouvement vers la gauche :
                if( in.getHat(i,0) ==  tabjoy[2] )
                {
                    doMoveLeft(p);
                }

                // Mouvement vers la droite :
                if( in.getHat(i,0) ==  tabjoy[3] )
                {
                    doMoveRight(p);
                }

                // Remise à 0 du sprite, dès qu'on relâche toutes les touches de déplacement
                if( in.getHat(i,0) !=  tabjoy[0] && in.getHat(i,0) !=  tabjoy[1] && in.getHat(i,0) !=  tabjoy[2] && in.getHat(i,0) !=  tabjoy[3] )
                {
                    p->resetSprite();
                }
                
                // Pose d'une bombe
                if( in.getButton(i, tabjoy[4]) )
                {
                    // Remise à 0 de la touche, pour éviter la pose de bombe en restant appuyé :
                    in.resetButton(i,tabjoy[4]);

                    doDropBomb(p);
                }
                
            }   else {
                // Mouvement vers le haut :
                if( in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3]))
                {
                    doMoveUp(p);
                }

                // Mouvement vers le bas :
                if( !in.getKey(tabkey[i][0]) && in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3]))
                {
                    doMoveDown(p);
                }

                // Mouvement vers la gauche :
                if( !in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3]))
                {
                    doMoveLeft(p);
                }

                // Mouvement vers la droite :
                if( !in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && in.getKey(tabkey[i][3]))
                {
                    doMoveRight(p);
                }

                // Remise à 0 du sprite, dès qu'on relâche toutes les touches de déplacement
                if( !in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3]))
                {
                    p->resetSprite();
                }
                
                // Pose d'une bombe
                if( in.getKey(tabkey[i][4] ) )
                {
                    // Remise à 0 de la touche, pour éviter la pose de bombe en restant appuyé :
                    in.resetKey(tabkey[i][4]);

                    doDropBomb(p);	
                }
            }      
        }    
    }
	
    // Mise à jour des bombes
    for(int i = 0; i < mapBombs.size() ; i++ )
    {		
        updateBomb(i);
    }

    // Mise à jour des explosions
    for(int i = 0; i < mapExplosions.size() ; i++ )
    {		
        updateExplosion(i);
    }
    
    // Explosions et personnages
    for(int i = 0; i < mapExplosions.size() ; i++ )
    {
        Explosion *e = mapExplosions[i];

        for(int j = 0; j < e->getCollisionBoxes().size() ; j++ )
        {   
            SDL_Rect box = e->getCollisionBoxes()[j];

            for(int k = 0; k < mapPlayers.size() ; k++)
            {
                Player *p = mapPlayers[k];
                if( p->isAlive() )
                {
                    if( checkCollision( box, p->getBox() ) )
                    {
                        killPlayer(k);
                    }
                }       
            }   
        }
    }
    
    // Test du gagnant
    if( nbPlayersAlive == 1 )
    {
        int indexWinner;
        bool win = false;
        for( int i = 0 ; i < mapPlayers.size() ;  i++)
        {
            if( mapPlayers[i]->isAlive() )
            {
                indexWinner = i;
                win =true;
            }
            
            if( win ) break;
        }
        
        if(title == NULL)
        {
            title = new AnimationPlayer("img/animations/players/player%d-wins-%d.png", indexWinner+1, 42);
            endOfGame = true;
        }
    }
}
Exemple #10
0
void Player::keyActions() // player действия при нажатии клавиши
{
    game->centerOn(this);

    lastX = x();
    lastY = y();
    lastDeg = degree;
    lastHDeg = hdegree;
    lastHealth = health;

    // эффект получения урона (должен стоять перед движением)
    if (wou)
    {
        /*
        int x1 = centralX();
        int y1 = centralY();
        wound->setPos(x1-game->width()/2,y1-game->height()/2);
        */
    }

    // движение вперед, назад
    if (mf)
    {
        moveForward();
        if (game->createBots)
            *bot << "mf ";
    }
    if (mb)
    {
        moveBack();
        if (game->createBots)
            *bot << "mb ";
    }

    // если player вышел за границы
    if (this->x() < game->dop - pixsize/2 ||
        this->x() > game->scene->width()-game->dop*2 + 20 ||
        this->y() < game->dop - pixsize/2 ||
        this->y() > game->scene->height()-game->dop*2 + 20)
    {
        // координата Х в центре экрана
        int x1 = centralX();

        // координата Y в центре экрана
        int y1 = centralY();

        if (out == false)
        {
            out = true;
            outTime = QTime::currentTime();
            outTimer = outMaxTime;

            QString image = ":/images/images/out.png";
            caution = new Caution(image, "CAUTION", 5);
            caution->setPos(x1-200,y1-88);
            game->scene->addItem(caution);
        }
        caution->setPos(x1-200, y1-88);

        if (outTime.msecsTo(QTime::currentTime()) > 1000)
        {
            if (outTimer > 0)
            {
                outTimer--;
                outTime = outTime.addSecs(1);
                caution->decTimer();
            }
            else
            {
                // DIE M**********R!
                //qDebug() << "you died";
                out = false;
                outTimer = outMaxTime;
                delete caution;

                // убить
                killPlayer();
                // BUHAHA
            }
        }
    }
    else
    {
        if (out == true)
        {
            out = false;
            outTimer = outMaxTime;
            delete caution;
        }
    }

    // универсальный поворот
    if (rl || rr)
    {
        playerRotate();
        spin++;
    }

    // ты ничего не видел
    if (rl == false && rr == false)
        spin = 0;
    // совершенно ничего
    if (spin == 540)
    {
        QMediaPlayer *sound = new QMediaPlayer();
        sound->setMedia(QUrl("qrc:/sounds/sounds/spin.mp3"));
        sound->play();
    }

    // поворот башни
    if (hl)
    {
        headLeft();
        if (game->createBots)
            *bot << "hl ";
    }
    if (hr)
    {
        headRight();
        if (game->createBots)
            *bot << "hr ";
    }

    // звук поворота башни
    if ((hr || hl) &&  tankhrotate->state() == QMediaPlayer::StoppedState) // если звук поворота еще не проигрывался
        tankhrotate->play();

    if (hr == false && hl == false && tankhrotate->state() == QMediaPlayer::PlayingState)
        tankhrotate->stop();

    // стрельба + звуки стрельбы
    if (fr && fireReady)
    {
        playerFire();
        reloading = false; // звук перезарядки еще на начат
        isFiring = 1;

        // анимация перезарядки
        reloadAnim = new QLabel();
        reloadAnim->setStyleSheet("background-color: transparent;");
        QMovie *movie = new QMovie(":/images/images/anim/Reload.gif");
        reloadAnim->setMovie(movie);
        reloadAnim->move(x()+20,y()+20);
        movie->setScaledSize(QSize(180,180));
        //movie->setSpeed(100);
        movie->start();
        QGraphicsProxyWidget *proxy = game->scene->addWidget(reloadAnim);

        if (game->createBots)
            *bot << "fr ";
    }
    if (fireReady == false) // счетчик для ожидания между выстрелами
    {
        fireCount += keyDelay;

        reloadAnim->move(x()+20,y()+20);
    }
    if ((fireCount > fireTime - bulletready->duration()) && reloading == false) // звук перезарядки
    {
        reloading = true; // перезарядка уже начата (защита от нескольких)
        bulletready->play();
    }
    if (fireCount > fireTime) // готовность выстрела
    {
        fireReady = true;
        fireCount = 0;

        delete reloadAnim;
    }

    if (game->createBots)
        *bot << endl;

    if (lastX != x() || lastY != y() || lastDeg != degree || lastHDeg != hdegree || lastHealth != health)
        emit KeyPressed();

    if (alive == false || (mf == false && mb == false && rl == false && rr == false && hl == false && hr == false && fr == false &&
                          fireReady == true && tankhrotate->state() == QMediaPlayer::StoppedState && out == false))
    {
        action = false;
        timer->stop();
    }
}
Exemple #11
0
void Drop_onHit( Object* e )
{
    killPlayer();
}
Exemple #12
0
void Bat_onHit( Object* e )
{
    killPlayer();
}
Exemple #13
0
void Shot_onHit( Object* e )
{
    setAnimation(e, 3, 3, 5);
    e->state += 1;
    killPlayer();
}