internal Room NewRoom()
{
if (free_size_ == 0) {
return null;
}
uint ret_index = 0;
for (int i = 0; i < pool_size_; ++i) {
if (room_pool_[cur_position_].IsIdle) {
ret_index = cur_position_;
room_pool_[cur_position_].IsIdle = false;
cur_position_ = ++cur_position_ % pool_size_;
free_size_--;
return room_pool_[ret_index];
}
cur_position_ = ++cur_position_ % pool_size_;
}
return null;
}