bool VehicleKit::HasEmptySeat(int8 seatId) const { if (seatId < 0) return (GetNextEmptySeat(0,true) != -1); SeatMap::const_iterator seat = m_Seats.find(seatId); // need add check on accessories-only seats... if (seat == m_Seats.end()) return false; return !seat->second.passenger; }
Vehicle* Vehicle::FindFreeSeat(int8 *seatid, bool force) { SeatMap::const_iterator i_seat = m_Seats.find(*seatid); if(i_seat == m_Seats.end()) return GetFirstEmptySeat(seatid, force); if((i_seat->second.flags & (SEAT_FULL | SEAT_VEHICLE_FULL)) || (!force && (i_seat->second.vs_flags & SF_UNACCESSIBLE))) return GetNextEmptySeat(seatid, true, force); if(i_seat->second.flags & SEAT_VEHICLE_FREE) { // this should never be NULL if(Vehicle *v = (Vehicle*)i_seat->second.passenger) return v->FindFreeSeat(seatid, force); return NULL; } return this; }