/* Выполнение кода выбранного действия */ void QSPExecuteSelActionCode(QSP_BOOL *res, QSP_BOOL isRefresh) { if (qspCurSelAction >= 0) { if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } qspExecAction(qspCurSelAction); if (qspErrorNum) { *res = QSP_FALSE; return; } if (isRefresh) qspCallRefreshInt(QSP_FALSE); } *res = QSP_TRUE; }
/* Сохранение состояния в память */ void QSPSaveGameAsData(QSP_BOOL *res, void *buf, int bufSize, int *realSize, QSP_BOOL isRefresh) { int len, size; QSP_CHAR *data; if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } if (!(len = qspSaveGameStatusToString(&data))) { *realSize = 0; *res = QSP_FALSE; return; } size = len * sizeof(QSP_CHAR); *realSize = size; if (size > bufSize) { free(data); *res = QSP_FALSE; return; } memcpy(buf, data, size); free(data); if (isRefresh) qspCallRefreshInt(QSP_FALSE); *res = QSP_TRUE; }
/* Установить индекс выбранного объекта */ void QSPSetSelObjectIndex(QSP_BOOL *res, int ind, QSP_BOOL isRefresh) { if (ind >= 0 && ind < qspCurObjectsCount && ind != qspCurSelObject) { if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } qspCurSelObject = ind; qspExecLocByVarNameWithArgs(QSP_FMT("ONOBJSEL"), 0, 0); if (qspErrorNum) { *res = QSP_FALSE; return; } if (isRefresh) qspCallRefreshInt(QSP_FALSE); } *res = QSP_TRUE; }
/* Загрузка состояния из памяти */ void QSPOpenSavedGameFromData(QSP_BOOL *res, const void *data, int dataSize, QSP_BOOL isRefresh) { int dataLen; QSP_CHAR *ptr; if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } dataLen = dataSize / sizeof(QSP_CHAR); ptr = (QSP_CHAR *)malloc((dataLen + 1) * sizeof(QSP_CHAR)); memcpy(ptr, data, dataSize); ptr[dataLen] = 0; qspOpenGameStatusFromString(ptr); free(ptr); if (qspErrorNum) { *res = QSP_FALSE; return; } if (isRefresh) qspCallRefreshInt(QSP_FALSE); *res = QSP_TRUE; }
/* Выполнение кода указанной локации */ QSP_BOOL QSPExecLocationCode(const QSP_CHAR *name, QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspExecLocByName((QSP_CHAR *)name, QSP_FALSE); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); return QSP_TRUE; }
/* Загрузка состояния из файла */ QSP_BOOL QSPOpenSavedGame(const QSP_CHAR *fileName, QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspOpenGameStatus((QSP_CHAR *)fileName); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); return QSP_TRUE; }
/* Перезапуск игры */ QSP_BOOL QSPRestartGame(QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspNewGame(QSP_TRUE); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); return QSP_TRUE; }
/* Выполнение кода локации-обработчика строки ввода */ QSP_BOOL QSPExecUserInput(QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspExecLocByVarNameWithArgs(QSP_FMT("USERCOM"), 0, 0); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); return QSP_TRUE; }
/* Выполнение строки кода */ QSP_BOOL QSPExecString(const QSP_CHAR *s, QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspExecStringAsCodeWithArgs((QSP_CHAR *)s, 0, 0, 0); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); return QSP_TRUE; }
/* Выполнение кода локации-счетчика */ QSP_BOOL QSPExecCounter(QSP_BOOL isRefresh) { if (!qspIsInCallBack) { qspPrepareExecution(); qspExecLocByVarNameWithArgs(QSP_FMT("COUNTER"), 0, 0); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); } return QSP_TRUE; }
/* Перезапуск игры */ AS3_Val QSPRestartGame(void *param, AS3_Val args) { QSP_BOOL isRefresh; AS3_ArrayValue(args, "IntType", &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); qspNewGame(QSP_TRUE); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Выполнение кода локации-обработчика строки ввода */ AS3_Val QSPExecUserInput(void *param, AS3_Val args) { QSP_BOOL isRefresh; AS3_ArrayValue(args, "IntType", &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); qspExecLocByVarNameWithArgs(QSP_FMT("USERCOM"), 0, 0); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Выполнение кода выбранного действия */ QSP_BOOL QSPExecuteSelActionCode(QSP_BOOL isRefresh) { if (qspCurSelAction >= 0) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspExecAction(qspCurSelAction); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); } return QSP_TRUE; }
/* Выполнение кода локации-счетчика */ AS3_Val QSPExecCounter(void *param, AS3_Val args) { QSP_BOOL isRefresh; AS3_ArrayValue(args, "IntType", &isRefresh); if (!qspIsInCallBack) { qspPrepareExecution(); qspExecLocByVarNameWithArgs(QSP_FMT("COUNTER"), 0, 0); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); } return AS3_True(); }
/* Установить индекс выбранного действия */ QSP_BOOL QSPSetSelActionIndex(int ind, QSP_BOOL isRefresh) { if (ind >= 0 && ind < qspCurActionsCount && ind != qspCurSelAction) { if (qspIsExitOnError && qspErrorNum) return QSP_FALSE; qspPrepareExecution(); if (qspIsDisableCodeExec) return QSP_FALSE; qspCurSelAction = ind; qspExecLocByVarNameWithArgs(QSP_FMT("ONACTSEL"), 0, 0); if (qspErrorNum) return QSP_FALSE; if (isRefresh) qspCallRefreshInt(QSP_FALSE); } return QSP_TRUE; }
/* Выполнение кода выбранного действия */ AS3_Val QSPExecuteSelActionCode(void *param, AS3_Val args) { QSP_BOOL isRefresh; AS3_ArrayValue(args, "IntType", &isRefresh); if (qspCurSelAction >= 0) { if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); qspExecAction(qspCurSelAction); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); } return AS3_True(); }
/* Выполнение строки кода */ AS3_Val QSPExecString(void *param, AS3_Val args) { char *s; QSP_CHAR *strWC; QSP_BOOL isRefresh; AS3_ArrayValue(args, "StrType, IntType", &s, &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); strWC = qspC2W(s); qspExecStringAsCodeWithArgs(strWC, 0, 0); free(strWC); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Загрузка состояния из файла */ AS3_Val QSPOpenSavedGame(void *param, AS3_Val args) { char *fileName; QSP_CHAR *fileNameWC; QSP_BOOL isRefresh; AS3_ArrayValue(args, "StrType, IntType", &fileName, &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); fileNameWC = qspC2W(fileName); qspOpenGameStatus(fileNameWC); free(fileNameWC); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Выполнение кода указанной локации */ AS3_Val QSPExecLocationCode(void *param, AS3_Val args) { char *name; QSP_CHAR *nameWC; QSP_BOOL isRefresh; AS3_ArrayValue(args, "StrType, IntType", &name, &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); nameWC = qspC2W(name); qspExecLocByName(nameWC, QSP_FALSE); free(nameWC); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Сохранение состояния в память */ AS3_Val QSPSaveGameAsData(void *param, AS3_Val args) { int len; QSP_BOOL isRefresh; AS3_Val data; QSP_CHAR *buf; AS3_ArrayValue(args, "AS3ValType, IntType", &data, &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); if (!(len = qspSaveGameStatusToString(&buf))) return AS3_False(); AS3_ByteArray_seek(data, 0, SEEK_SET); AS3_ByteArray_writeBytes(data, buf, len * sizeof(QSP_CHAR)); free(buf); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Установить индекс выбранного объекта */ AS3_Val QSPSetSelObjectIndex(void *param, AS3_Val args) { int ind; QSP_BOOL isRefresh; AS3_ArrayValue(args, "IntType, IntType", &ind, &isRefresh); if (ind >= 0 && ind < qspCurObjectsCount && ind != qspCurSelObject) { if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); qspCurSelObject = ind; qspExecLocByVarNameWithArgs(QSP_FMT("ONOBJSEL"), 0, 0); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); } return AS3_True(); }
/* Загрузка состояния из памяти */ AS3_Val QSPOpenSavedGameFromData(void *param, AS3_Val args) { AS3_Val data; int dataSize, dataLen; QSP_BOOL isRefresh; QSP_CHAR *ptr; AS3_ArrayValue(args, "AS3ValType, IntType, IntType", &data, &dataSize, &isRefresh); if (qspIsExitOnError && qspErrorNum) return AS3_False(); qspPrepareExecution(); if (qspIsDisableCodeExec) return AS3_False(); dataLen = dataSize / sizeof(QSP_CHAR); ptr = (QSP_CHAR *)malloc((dataLen + 1) * sizeof(QSP_CHAR)); AS3_ByteArray_seek(data, 0, SEEK_SET); AS3_ByteArray_readBytes(ptr, data, dataSize); ptr[dataLen] = 0; qspOpenGameStatusFromString(ptr); free(ptr); if (qspErrorNum) return AS3_False(); if (isRefresh) qspCallRefreshInt(QSP_FALSE); return AS3_True(); }
/* Перезапуск игры */ void QSPRestartGame(QSP_BOOL *res, QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } qspNewGame(QSP_TRUE); if (qspErrorNum) { *res = QSP_FALSE; return; } if (isRefresh) qspCallRefreshInt(QSP_FALSE); *res = QSP_TRUE; }
/* Сохранение состояния в файл */ void QSPSaveGame(QSP_BOOL *res, const QSP_CHAR *fileName, QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } qspSaveGameStatus((QSP_CHAR *)fileName); if (qspErrorNum) { *res = QSP_FALSE; return; } if (isRefresh) qspCallRefreshInt(QSP_FALSE); *res = QSP_TRUE; }
/* Выполнение кода указанной локации */ void QSPExecLocationCode(QSP_BOOL *res, const QSP_CHAR *name, QSP_BOOL isRefresh) { if (qspIsExitOnError && qspErrorNum) { *res = QSP_FALSE; return; } qspPrepareExecution(); if (qspIsDisableCodeExec) { *res = QSP_FALSE; return; } qspExecLocByName((QSP_CHAR *)name, QSP_FALSE); if (qspErrorNum) { *res = QSP_FALSE; return; } if (isRefresh) qspCallRefreshInt(QSP_FALSE); *res = QSP_TRUE; }