/* Загрузка новой игры из памяти */ void QSPLoadGameWorldFromData(QSP_BOOL *res, const void *data, int dataSize, const QSP_CHAR *fileName) { char *ptr; if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspResetError(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } ptr = (char *)malloc(dataSize + 3); memcpy(ptr, data, dataSize); ptr[dataSize] = ptr[dataSize + 1] = ptr[dataSize + 2] = 0; qspOpenQuestFromData(ptr, dataSize + 3, (QSP_CHAR *)fileName, QSP_FALSE); free(ptr); if (qspErrorNum) { *res = QSP_FALSE; return; } *res = QSP_TRUE; }
/* Загрузка новой игры из памяти */ AS3_Val QSPLoadGameWorldFromData(void *param, AS3_Val args) { char *ptr; AS3_Val data; int dataSize; char *fileName; QSP_CHAR *fileNameWC; AS3_ArrayValue(args, "AS3ValType, IntType, StrType", &data, &dataSize, &fileName); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspResetError(); if (qspIsDisableCodeExec) return AS3_False(); ptr = (char *)malloc(dataSize + 3); AS3_ByteArray_seek(data, 0, SEEK_SET); AS3_ByteArray_readBytes(ptr, data, dataSize); ptr[dataSize] = ptr[dataSize + 1] = ptr[dataSize + 2] = 0; fileNameWC = qspC2W(fileName); qspOpenQuestFromData(ptr, dataSize + 3, fileNameWC, QSP_FALSE); free(fileNameWC); free(ptr); if (qspErrorNum) return AS3_False(); return AS3_True(); }