Esempio n. 1
0
bool PossibleRooms::IsReplaceable(int32_t roomId ) const
{
    auto foundSelf = std::find_if( mUniqueRoomIds.begin(), mUniqueRoomIds.end(), [&]( PossibleRoom const& room ) { return room.mRoomId == roomId; } );
    if (foundSelf != mUniqueRoomIds.end() && foundSelf->mIsBase)
    {
        return true;
    }
    static auto& mRoomRepo = RoomRepo::Get();
    auto const& roomDesc = mRoomRepo( roomId ).GetRoomDesc();
    auto found = std::find_if( mUniqueRoomIds.begin(), mUniqueRoomIds.end(), [&]( PossibleRoom const& room ) {
            return roomDesc.FitsInto( mRoomRepo( room.mRoomId ).GetRoomDesc(), RoomDesc::Layout ) 
                    && room.mIsBase; } );
    return found != mUniqueRoomIds.end();
}
Esempio n. 2
0
PossibleRooms::PossibleRoomIds_t PossibleRooms::GetRoomIdsFiltered( RoomDesc const& roomDesc, int32_t flags, bool shuffled /*= true*/ ) const
{
    PossibleRoomIds_t r;
    PossibleRoomIds_t roomIds;
    if (shuffled)
    {
        roomIds = mRoomIds;
        std::shuffle( roomIds.begin(), roomIds.end(), mRand );
        roomIds = MakeRoomeIdsUnique( roomIds );
    }
    else
    {
        roomIds = mUniqueRoomIds;
    }

    static auto& mRoomRepo = RoomRepo::Get();
    for (auto&& roomId : roomIds)
    {
        if (roomDesc.FitsInto(mRoomRepo( roomId.mRoomId ).GetRoomDesc(), flags))
        {
            r.push_back( roomId );
        }
    }

    return r;
}
Esempio n. 3
0
PossibleRooms::PossibleRoomIds_t PossibleRooms::GetRoomIdsByProperty( RoomProperty::Type prop, bool shuffled /*= true */ ) const
{
    PossibleRoomIds_t r;
    PossibleRoomIds_t roomIds;
    if (shuffled)
    {
        roomIds = mRoomIds;
        std::shuffle( roomIds.begin(), roomIds.end(), mRand );
        roomIds = MakeRoomeIdsUnique( roomIds );
    }
    else
    {
        roomIds = mUniqueRoomIds;
    }

    static auto& mRoomRepo = RoomRepo::Get();
    for (auto&& roomId : roomIds)
    {
        if (mRoomRepo( roomId.mRoomId ).GetRoomDesc().HasProperty( prop ))
        {
            r.push_back( roomId );
        }
    }
    return r;
}
Esempio n. 4
0
void GeneratorData::ReplaceRoom( int32_t roomIndex, int32_t roomId )
{
    //auto& gRoomDesc = mGRoomDescs[roomIndex];
    static auto& mRoomRepo = RoomRepo::Get();
    GetRoomDesc(roomIndex).SetRoom(&mRoomRepo( roomId ) );
}