SampleRef Reader::getSample(const std::string& name) { if (!conf.audioEnabled) return SampleRef(); SampleRef existing = sounds.lifetimeRequest(name); if (existing) return existing; std::unique_ptr<Gosu::Buffer> buffer(readBuffer(name)); if (!buffer) return SampleRef(); SampleRef result(new Sound(new Gosu::Sample(buffer->frontReader()))); sounds.lifetimePut(name, result); return result; }
ImageRef Reader::getImage(const std::string& name) { ImageRef existing = images.lifetimeRequest(name); if (existing) return existing; std::unique_ptr<Gosu::Buffer> buffer(readBuffer(name)); if (!buffer) return ImageRef(); ImageRef result(Image::create(buffer->data(), buffer->size())); if (!result) return ImageRef(); images.lifetimePut(name, result); return result; }