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; }
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; }
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; }
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; }
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; }
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; }
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; }
void testFileTransfer(){ MpsHeader header; header.payloadDescriptor = '0'; memcpy(header.descriptorId , generateRandomKey(16) , 16); //strcpy(header.descriptorId , generateRandomKey(16)); File * file1 = fopen("/home/gonzalo/images/anonimo.jpg" , "r"); char readingBuffer[1024]; char buffer[65536]; char * opName = "snd_img1"; int offset = 0; while(! feof(file1) && header.payloadDescriptor == '0'){ bzero(buffer , 65536); fread(readingBuffer , sizeof(char) , 1024 , file1); FileBlock * block = getFileBlock(readingBuffer); header.payloadDescriptor = 'b'; header.payloadSize = sizeof(FileBlock) + strlen("snd_img1"); memcpy(buffer , &header , sizeof(MpsHeader)); offset += sizeof(MpsHeader); memcpy(buffer + 21 , opName , strlen("snd_img1")); offset += strlen("snd_img1"); memcpy(buffer + 29 , block , sizeof(FileBlock)); offset += sizeof(FileBlock); sendBytes(getFileSystemConnection() , buffer , offset ); recv(getFileSystemConnection() , &header , sizeof(MpsHeader) , 0); } header.payloadSize = 0; header.payloadDescriptor = 'a'; sendBytes(getFileSystemConnection() , &header , sizeof(MpsHeader)); fclose(file1); }
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; }