/* ScummVM - Scumm Interpreter * Copyright (C) 2004 Ivan Dubrov * Copyright (C) 2004-2005 The ScummVM project * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Header$ * */ #include "gob/gob.h" #include "gob/global.h" #include "gob/video.h" #include "gob/resource.h" namespace Gob { char *resourceBuf = 0; static char *resourcePtr; void res_Free(void) { if (resourceBuf != 0) { free(resourceBuf); resourceBuf = 0; } } void res_Init(void) { File f; uint32 fileSize; if (!f.open("ALL.ASK", File::kFileReadMode)) { error("ALL.ASK is missing."); } fileSize = f.size(); resourceBuf = (char *)malloc(fileSize * 4); f.read(resourceBuf, fileSize); f.close(); } void res_Search(char resid) { int16 lang; if (resourceBuf == 0) res_Init(); lang = (language == 5) ? 2 : language; resourcePtr = resourceBuf; while (*resourcePtr != '#') { if (resourcePtr[0] == '@' && resourcePtr[1] == resid && ((int16)lang + '0') == (int16)resourcePtr[2]) { resourcePtr += 5; return; } resourcePtr++; } resourcePtr = resourceBuf; while (resourcePtr[0] != '#') { if (resourcePtr[0] == '@' && resourcePtr[1] == resid) { resourcePtr += 5; return; } resourcePtr++; } return; } void res_Get(char *buf) { int16 i = 0; while (1) { if (*resourcePtr == '\r') resourcePtr++; if (*resourcePtr == '\n') { resourcePtr++; break; } buf[i] = *resourcePtr; i++; resourcePtr++; } buf[i] = 0; } } // End of namespace Gob