Пример #1
0
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;
}
Пример #2
0
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;
}