Exemple #1
0
LipSync *ResourceLoader::loadLipSync(const char *filename) {
	Common::String fname = filename;
	fname.toLowercase();
	LipSync *result;
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b)
			return NULL;
	}

	result = new LipSync(filename, b->data(), b->len());

	// Some lipsync files have no data
	if (result->isValid()) {
		putIntoCache(fname, b);
		_lipsyncs.push_back(result);
	} else {
		delete result;
		delete b;
		result = NULL;
	}

	return result;
}
Exemple #2
0
Block *ResourceLoader::getBlock(const char *filename) {
    Common::String fname = filename;
    fname.toLowercase();
    Block *b = getFileFromCache(fname.c_str());
    if (!b) {
        b = getFileBlock(fname.c_str());
		if (b) {
			putIntoCache(fname, b);
		}
    }

    return b;
}
Exemple #3
0
Costume *ResourceLoader::loadCostume(const char *filename, Costume *prevCost) {
	Common::String fname = filename;
	fname.toLowercase();
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b)
			error("Could not find costume \"%s\"", filename);
		putIntoCache(fname, b);
	}
	Costume *result = new Costume(filename, b->data(), b->len(), prevCost);

	return result;
}
Exemple #4
0
Model *ResourceLoader::loadModel(const char *filename, CMap *c) {
	Common::String fname = filename;
	fname.toLowercase();
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b)
			error("Could not find model %s", filename);
		putIntoCache(fname, b);
	}

	Model *result = new Model(filename, b->data(), b->len(), c);
	_models.push_back(result);

	return result;
}
Exemple #5
0
KeyframeAnim *ResourceLoader::loadKeyframe(const char *filename) {
	Common::String fname = filename;
	fname.toLowercase();
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b)
			error("Could not find keyframe file %s", filename);
		putIntoCache(fname, b);
	}

	KeyframeAnim *result = new KeyframeAnim(filename, b->data(), b->len());
	_keyframeAnims.push_back(result);

	return result;
}
Exemple #6
0
Font *ResourceLoader::loadFont(const char *filename) {
	Common::String fname = filename;
	fname.toLowercase();
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b)
			error("Could not find font file %s", filename);
		putIntoCache(fname, b);
	}

	Font *result = new Font(filename, b->data(), b->len());
	_fonts.push_back(result);

	return result;
}
Exemple #7
0
CMap *ResourceLoader::loadColormap(const char *filename) {
	Common::String fname = filename;
	fname.toLowercase();
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b) {
			error("Could not find colormap %s", filename);
        }
		putIntoCache(fname, b);
	}

	CMap *result = new CMap(filename, b->data(), b->len());
	_colormaps.push_back(result);

	return result;
}
Exemple #8
0
Bitmap *ResourceLoader::loadBitmap(const char *filename) {
	Common::String fname = filename;
	fname.toLowercase();
	Block *b = getFileFromCache(fname.c_str());
	if (!b) {
		b = getFileBlock(fname.c_str());
		if (!b) {	// Grim sometimes asks for non-existant bitmaps (eg, ha_overhead)
			warning("Could not find bitmap %s", filename);
			return NULL;
		}
		putIntoCache(fname, b);
	}

	Bitmap *result = g_grim->registerBitmap(filename, b->data(), b->len());
	_bitmaps.push_back(result);

	return result;
}
Exemple #9
0
Common::SeekableReadStream *ResourceLoader::openNewStreamFile(Common::String fname, bool cache) {
	Common::SeekableReadStream *s;
    fname.toLowercase();

	if (cache) {
		s = getFileFromCache(fname);
		if (!s) {
			s = loadFile(fname);
			if (!s)
				return NULL;

			uint32 size = s->size();
			byte *buf = new byte[size];
			s->read(buf, size);
			putIntoCache(fname, buf, size);
			delete s;
			s = new Common::MemoryReadStream(buf, size);
		}
	} else {
		s = loadFile(fname);
	}
	// This will only have an effect if the stream is actually compressed.
	return Common::wrapCompressedReadStream(s);
}