bool CharacterObject::enterVehicle(VehicleObject* vehicle, size_t seat) { if(vehicle) { // Check that the seat is free if(vehicle->getOccupant(seat)) { return false; } else { // Make sure we leave any vehicle we're inside enterVehicle(nullptr, 0); vehicle->setOccupant(seat, this); setCurrentVehicle(vehicle, seat); //enterAction(VehicleSit); return true; } } else { if(currentVehicle) { currentVehicle->setOccupant(seat, nullptr); // Disabled due to crashing. //setPosition(currentVehicle->getPosition()); setCurrentVehicle(nullptr, 0); return true; } } return false; }
void Player::interact(sf::Vector2f vehicleLocation, DeliveryManager* deliveryManager) { sf::Vector2u playerPoint(col, row); Delivery* delivery = deliveryManager->getDeliveryAt(playerPoint); if (delivery != NULL) { if (delivery->getPickupPoint() == playerPoint && !delivery->isPickedUp()) { deliveryManager->pickupDelivery(delivery); } else if (delivery->getDropoffPoint() == playerPoint && delivery->isPickedUp()) deliveryManager->dropoffDelivery(delivery); } else if (abs(x - vehicleLocation.x) < 80 && abs(y - vehicleLocation.y) < 80) enterVehicle(); }