bool GameVar::load(MfcArchive &file) { _varName = file.readPascalString(); _varType = file.readUint32LE(); debugCN(6, kDebugLoading, "[%03d] ", file.getLevel()); for (int i = 0; i < file.getLevel(); i++) debugCN(6, kDebugLoading, " "); debugCN(6, kDebugLoading, "<%s>: ", transCyrillic(_varName)); switch (_varType) { case 0: _value.intValue = file.readUint32LE(); debugC(6, kDebugLoading, "d --> %d", _value.intValue); break; case 1: _value.intValue = file.readUint32LE(); // FIXME debugC(6, kDebugLoading, "f --> %f", _value.floatValue); break; case 2: { Common::String str = file.readPascalString(); _value.stringValue = (char *)calloc(str.size() + 1, 1); Common::strlcpy(_value.stringValue, str.c_str(), str.size() + 1); debugC(6, kDebugLoading, "s --> %s", _value.stringValue); } break; default: error("Unknown var type: %d (0x%x)", _varType, _varType); } file.incLevel(); _parentVarObj = file.readClass<GameVar>(); _prevVarObj = file.readClass<GameVar>(); _nextVarObj = file.readClass<GameVar>(); _field_14 = file.readClass<GameVar>(); _subVars = file.readClass<GameVar>(); file.decLevel(); return true; }
bool GameVar::load(MfcArchive &file) { _varName = file.readPascalString(); _varType = file.readUint32LE(); debugN(6, "[%03d] ", file.getLevel()); for (int i = 0; i < file.getLevel(); i++) debugN(6, " "); debugN(6, "<%s>: ", transCyrillic((byte *)_varName)); switch (_varType) { case 0: _value.intValue = file.readUint32LE(); debug(6, "d --> %d", _value.intValue); break; case 1: _value.intValue = file.readUint32LE(); // FIXME debug(6, "f --> %f", _value.floatValue); break; case 2: _value.stringValue = file.readPascalString(); debug(6, "s --> %s", _value.stringValue); break; default: error("Unknown var type: %d (0x%x)", _varType, _varType); } file.incLevel(); _parentVarObj = (GameVar *)file.readClass(); _prevVarObj = (GameVar *)file.readClass(); _nextVarObj = (GameVar *)file.readClass(); _field_14 = (GameVar *)file.readClass(); _subVars = (GameVar *)file.readClass(); file.decLevel(); return true; }