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(); }
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); } } }
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()); } } }