Exemple #1
0
void game_create_character_as_passenger(const ScriptArguments& args)
{
	auto vehicle = static_cast<VehicleObject*>(args.getObject<VehicleObject>(0));
	auto type = args[1].integerValue();
	RW_UNUSED(type);
	RW_UNIMPLEMENTED("game_create_character_as_passenger(): character type");
	auto id = args[2].integerValue();
	auto seat = args[3].integerValue();

	auto character = args.getWorld()->createPedestrian(id, vehicle->getPosition() + spawnMagic);
	new DefaultAIController(character);

	if (seat <= -1) {
		for (seat = 0; seat < static_cast<int>(vehicle->info->seats.size()); seat++) {
			if (vehicle->getOccupant(seat) == nullptr && !vehicle->isOccupantDriver(seat)) {
				break;
			}
		}
	} else {
		/// @todo 0 - passenger seat (or back seat of bike); 1 - left rear seat; 2 - right rear seat
		seat++;
	}

	RW_CHECK(seat < static_cast<int>(vehicle->info->seats.size()), "Seat index too high");
	RW_CHECK(vehicle->getOccupant(seat) == nullptr, "Seat is not free");
	RW_CHECK(vehicle->isOccupantDriver(seat) == false, "Seat is not a passenger seat");

	character->setCurrentVehicle(vehicle, seat);
	vehicle->setOccupant(seat, character);

	*args[4].globalInteger = character->getGameObjectID();
}
Exemple #2
0
void Case::transmettreAttaque(int nbPV, Entite*e) {
    if (m_occupant!=NULL) {
        if(e->Getnom() == "Chevalier"
           || e->Getnom() == "Archer"
           || e->Getnom() == "Pretre"
           || e->Getnom() == "Magicien"
           || e->Getnom() == "Voleur"
           || e->Getnom() == "Guerrier")
           m_occupant->modifierVie(nbPV + ((Unite*)e)->getBonusUnite()[1]);
        else
        {
           m_occupant->modifierVie(nbPV);
        }

        if (!contientBatiment()&&isOccupee() &&getOccupant()->getVie()==0){
            QPixmap *tombe;
            tombe=new QPixmap("images/Coffin.png");
            (getOccupant())->setPixmap(tombe->copy(0,96,32,32));

            getOccupant()->setFlag(QGraphicsItem::ItemIsSelectable,false);
            setOccupant(NULL);
        }
        else if(isOccupee() && getOccupant()->Getnom()== "Chateau" && getOccupant()->getVie()==0)
        {
            QPixmap *tombe;
            tombe=new QPixmap("images/ChateauDetruit.png");
            (getOccupant())->setPixmap(tombe->copy(0,96,32,32));

            QMessageBox popup;
            popup.setText("Victoire " + this->getOccupant()->getJoueur()->getPseudo() + "!");
            popup.exec();

             this->getOccupant()->getPosition()[0]->parent()->finDuJeu();

        }
        else if(isOccupee() && getOccupant()->Getnom() == "Tour" && getOccupant()->getVie()==0)
        {
            QPixmap *tombe;
            tombe=new QPixmap("images/TourDetruite.png");
            (getOccupant())->setPixmap(tombe->copy(0,96,32,32));

            this->parent()->supprimerTour((Batiment*)this->getOccupant());
            getOccupant()->setFlag(QGraphicsItem::ItemIsSelectable,false);
            setOccupant(NULL);
        }

    }
}
Exemple #3
0
void Case::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
    QGraphicsRectItem::mouseReleaseEvent(event);
    if (parent()->getFlag()==attente) {
        parent()->highlight(this);
        if (isOccupee()) {
            parent()->afficheInfoUnite(getOccupant());
            parent()->setSelect(getOccupant());
            if (m_batiment) {
                if (getOccupant()->Getnom()=="Chateau")
                    parent()->setBoutons(batChateau, getOccupant()->getJoueur()->getNumero());
                else {
                    if (getOccupant()->getJoueur())
                        parent()->setBoutons(batiment, getOccupant()->getJoueur()->getNumero());
                    else
                        parent()->setBoutons(batiment);
                }
            }
            else
                parent()->setBoutons(unite, getOccupant()->getJoueur()->getNumero());

        }
        else {
            this->setSelected(true);
            this->parent()->setSelect(this);
            parent()->setBoutons(carre);
        }
    }
    else if (parent()->getFlag()==deplacement) {
        this->setSelected(false);
        if (!((Unite*)parent()->getSelect())->deplacer(this)) {
            parent()->setFlag(attente);
            this->mouseReleaseEvent(event);
        }
        else {
            parent()->getSelect()->setSelected(true);
            parent()->setFlag(attente);
            parent()->highlight(this);
            this->parent()->updatePopPt();
            this->parent()->setBoutons(unite, ((Unite*)parent()->getSelect())->getJoueur()->getNumero());
            this->parent()->afficheInfoUnite(this->getOccupant());
            parent()->CapturePossible(this);
        }
    }
    else if (parent()->getFlag()==attaque) {
        if (!isOccupee()) {
            parent()->setFlag(attente);
            this->mouseReleaseEvent(event);
        }
        else {
            this->setSelected(false);
            parent()->getSelect()->setSelected(true);
            ((Unite*)(parent()->getSelect()))->attaquer(this);
            parent()->setFlag(attente);
            parent()->highlight(this);
            this->parent()->updatePopPt();
        }
    }
    else if (parent()->getFlag()==attaqueSort) {
        ((Unite*)(parent()->getSelect()))->attaquer(this,parent()->getChoixSort());
        parent()->setFlag(attente);
        parent()->highlight(this);
    }
    else if (parent()->getFlag()==invoquer){
        this->setSelected(false);
        Chateau* ch=((Chateau*)(parent()->getSelect()));
        if (!ch->Invoquer(parent()->getUnitInvoc(), this)) {
            parent()->setFlag(attente);
            this->mouseReleaseEvent(event);
        }
        else {
            parent()->getSelect()->setSelected(true);
            parent()->highlight(this);
            parent()->updatePopPt();
            parent()->setFlag(attente);
            parent()->setBoutons(batChateau, ch->getJoueur()->getNumero());
        }
    }
}