void AGOSEngine::o_add() { // 43: add uint var = getVarWrapper(); writeVariable(var, readVariable(var) + getVarOrWord()); // WORKAROUND: The conversation of the male in Vid-Phone Booth at Dave's Space Bar // is based on variable 116, but stops due to a missing option (37). if (getGameType() == GType_FF && _currentTable->id == 10538 && readVariable(116) == 37) writeVariable(116, 38); }
void AGOSEngine_Simon1::os1_getPathPosn() { // 178: path find uint x = getVarOrWord(); uint y = getVarOrWord(); uint var_1 = getVarOrByte(); uint var_2 = getVarOrByte(); const uint16 *p; uint i, j; uint prev_i; uint x_diff, y_diff; uint best_i = 0, best_j = 0, best_dist = 0xFFFFFFFF; uint maxPath = (getGameType() == GType_FF || getGameType() == GType_PP) ? 100 : 20; if (getGameType() == GType_FF || getGameType() == GType_PP) { x += _scrollX; y += _scrollY; } else if (getGameType() == GType_SIMON2) { x += _scrollX * 8; } int end = (getGameType() == GType_FF) ? 9999 : 999; prev_i = maxPath + 1 - readVariable(12); for (i = maxPath; i != 0; --i) { p = (const uint16 *)_pathFindArray[maxPath - i]; if (!p) continue; for (j = 0; readUint16Wrapper(&p[0]) != end; j++, p += 2) { x_diff = ABS((int16)(readUint16Wrapper(&p[0]) - x)); y_diff = ABS((int16)(readUint16Wrapper(&p[1]) - 12 - y)); if (x_diff < y_diff) { x_diff /= 4; y_diff *= 4; } x_diff += y_diff /= 4; if ((x_diff < best_dist) || ((x_diff == best_dist) && (prev_i == i))) { best_dist = x_diff; best_i = maxPath + 1 - i; best_j = j; } } } writeVariable(var_1, best_i); writeVariable(var_2, best_j); }
void AGOSEngine::o_modf() { // 52: mod f uint var = getVarWrapper(); int value = getNextVarContents(); if (value == 0) error("o_modf: Division by zero"); writeVariable(var, readVariable(var) % value); }
void AGOSEngine::o_div() { // 48: div uint var = getVarWrapper(); int value = getVarOrWord(); if (value == 0) error("o_div: Division by zero"); writeVariable(var, readVariable(var) / value); }
void AGOSEngine::o_mod() { // 51: mod uint var = getVarWrapper(); int value = getVarOrWord(); if (value == 0) error("o_mod: Division by zero"); writeVariable(var, readVariable(var) % value); }
void AGOSEngine::o_let() { // 42: set var uint var = getVarWrapper(); uint value = getVarOrWord(); if (getGameType() == GType_FF && _currentTable) { // WORKAROUND: When the repair man comes to fix the car, the game doesn't // wait long enough for the screen to completely scroll to the left side. if (_currentTable->id == 20438 && var == 103 && value == 60) { value = 71; } } writeVariable(var, value); }
int main(void) { signal(SIGINT, stopHandler); signal(SIGTERM, stopHandler); UA_Server *server = UA_Server_new(); UA_ServerConfig_setDefault(UA_Server_getConfig(server)); addVariableType2DPoint(server); addVariable(server); addVariableFail(server); writeVariable(server); UA_StatusCode retval = UA_Server_run(server, &running); UA_Server_delete(server); return retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE; }
int main(void) { signal(SIGINT, stopHandler); signal(SIGTERM, stopHandler); UA_ServerConfig *config = UA_ServerConfig_new_default(); UA_Server *server = UA_Server_new(config); addVariableType2DPoint(server); addVariable(server); addVariableFail(server); writeVariable(server); UA_StatusCode retval = UA_Server_run(server, &running); UA_Server_delete(server); UA_ServerConfig_delete(config); return (int)retval; }
int AGOSEngine_PN::inventoryOn(int val) { writeVariable(210, val); if (_videoLockOut & 0x10) { iconPage(); } else { _videoLockOut |= 0x10; _hitAreaList = _invHitAreas; _windowArray[2]->textColor = 0; windowPutChar(_windowArray[2], 13); clearVideoWindow(4, 0); drawIconHitBar(); _objects = _variableArray[211]; _objectCountS = -1; iconPage(); } return 1; }
int XmlToKross::start() { inclass=0; while (!xml.atEnd()) { QXmlStreamReader::TokenType t=xml.readNext(); QString str; switch(t) { case QXmlStreamReader::Invalid: qDebug() << "invalid token!" << xml.errorString() << endl; break; case QXmlStreamReader::StartDocument: writeDocument(); break; case QXmlStreamReader::StartElement: // qDebug() << "Element " << xml.name().toString() << endl; str=xml.name().toString(); if(str=="Class") { inclass++; if(inclass==1) writeClass(xml.attributes().value(QString(), "name").toString(), QString(), QList<QStringList>()); } else if(str=="Function") { QString funcname=xml.attributes().value(QString(), "name").toString(); QString rettype=xml.attributes().value(QString(), "type_name").toString(); bool isConst=xml.attributes().value(QString(), "constant").toString()==QChar('1'); bool isVirtual=xml.attributes().value(QString(), "virtual").toString()==QChar('1'); currentMethod=method(); currentMethod.access=xml.attributes().value(QString(), "access").toString(); currentMethod.funcname=funcname; currentMethod.returnType=rettype; currentMethod.isConst=isConst; currentMethod.isVirtual=isVirtual; if(!definedClasses.isEmpty() && ( funcname==definedClasses.last() || funcname=='~'+definedClasses.last() ) ) currentMethod.access="constructor"; } else if(str=="Argument") { method::argument arg; arg.name=xml.attributes().value(QString(), "name").toString(); arg.type=xml.attributes().value(QString(), "type_name").toString(); arg.def=xml.attributes().value(QString(), "defaultvalue").toString(); QString context=xml.attributes().value(QString(), "context").toString(); if(!arg.def.isEmpty() && arg.type.startsWith(context)) arg.def.prepend(context+"::"); currentMethod.args.append(arg); } else if(str=="Namespace") { QString name=xml.attributes().value(QString(), "name").toString(); qDebug() << "entering to namespace " << name << inNamespace; if(inNamespace!=name) { if(!inNamespace.isEmpty()) inNamespace.append("::"); inNamespace.append(name); writeNamespace(name); qDebug() << "current status" << inNamespace; } } else if(str=="Variable" && inclass==1 && xml.attributes().value(QString(), "access").toString()=="public") { writeVariable(xml.attributes().value(QString(), "name").toString(), xml.attributes().value(QString(), "type_name").toString(), xml.attributes().value(QString(), "type_constant").toString()=="1"); } else if(str=="Enum") { flags.clear(); flags.append(xml.attributes().value(QString(), "name").toString()); } else if(str=="Enumerator") flags.append(xml.attributes().value(QString(), "name").toString()); break; case QXmlStreamReader::EndDocument: writeEndDocument(); break; case QXmlStreamReader::EndElement: str=xml.name().toString(); if(str=="Class") { if(inclass==1) writeEndClass(); inclass--; } else if(str=="Function" && currentMethod.access=="public" && inclass==1) writeEndFunction(currentMethod); else if(str=="Enum") writeEndEnum(flags); else if(str=="Namespace") { inNamespace.resize(inNamespace.lastIndexOf("::")); } break; default: break; } } if (xml.error()) { qDebug() << "error!" << xml.errorString(); return 2; } return 0; }
void AGOSEngine_Simon2::os2_printLongText() { // 70: show string from array const char *str = (const char *)getStringPtrByID(_longText[getVarOrByte()]); writeVariable(51, strlen(str) / 53 * 8 + 8); showMessageFormat("%s\n", str); }
void InputNetcdf::writeCore(const Data& iData, int iDate, int iInit, const std::vector<float>& iOffsets, const std::vector<Location>& iLocations, const std::vector<Member>& iMembers, const std::vector<std::string>& iVariables) const { // Set up file Key::Input key; key.date = iDate; key.init = iInit; key.location = 0; std::string filename = getFilename(key); // Global::createDirectory(filename); NcFile ncfile(filename.c_str(), NcFile::Replace); if(!ncfile.is_valid()) { std::stringstream ss; ss << " InputNetcdf: Could not write file: " << filename; Global::logger->write(ss.str(), Logger::error); } // Write dimensions NcDim* dimOffset = ncfile.add_dim("Offset", (long) iOffsets.size()); NcDim* dimLocation = ncfile.add_dim("Location", (long) iLocations.size()); NcDim* dimMember = ncfile.add_dim("Member", (long) iMembers.size()); // Write offsets NcVar* varOffsets = ncfile.add_var("Offset", ncFloat, dimOffset); writeVariable(varOffsets, iOffsets); // Write lat/lons NcVar* varLats = ncfile.add_var("Lat", ncFloat, dimLocation); NcVar* varLons = ncfile.add_var("Lon", ncFloat, dimLocation); NcVar* varElevs = ncfile.add_var("Elev", ncFloat, dimLocation); NcVar* varIds = ncfile.add_var("Id", ncInt, dimLocation); std::vector<float> lats; std::vector<float> lons; std::vector<float> elevs; std::vector<float> ids; for(int i = 0; i < (int) iLocations.size(); i++) { lats.push_back(iLocations[i].getLat()); lons.push_back(iLocations[i].getLon()); elevs.push_back(iLocations[i].getElev()); ids.push_back(iLocations[i].getId()); } writeVariable(varLats, lats); writeVariable(varLons, lons); writeVariable(varElevs, elevs); writeVariable(varIds, ids); // Write resolution NcVar* varRes = ncfile.add_var("Resolution", ncFloat, dimMember); std::vector<float> resolutions; for(int i = 0; i < (int) iMembers.size(); i++) { resolutions.push_back(iMembers[i].getResolution()); } writeVariable(varRes, resolutions); // Preallocate int N = iOffsets.size() * iLocations.size() * iMembers.size(); float* values = new float[N]; std::vector<std::string> localVariables; // Write each variable for(int v = 0; v < (int) iVariables.size(); v++) { for(int i = 0; i < N; i++) values[i] = Global::MV; std::string variable = iVariables[v]; std::string localVariable = variable; //bool found = getLocalVariableName(variable, localVariable); //if(!found) { // std::stringstream ss; // ss << "InputNetcdf::write: Do not know what to map " << variable << " to. Skipping."; // Global::logger->write(ss.str(), Logger::message); // } if(std::find(localVariables.begin(), localVariables.end(), localVariable) != localVariables.end()) { std::cout << "Variable " << localVariable << " has already been written once. Discarding duplicate." << std::endl; } else { localVariables.push_back(localVariable); // Populate values; for(int l = 0; l < (int) iLocations.size(); l++) { for(int o = 0; o < (int) iOffsets.size(); o++) { float offset = iOffsets[o]; for(int m = 0; m < (int) iMembers.size(); m++) { float value = iData.getValue(iDate, iInit, offset, iLocations[l], iMembers[m], variable); int index = o*iLocations.size()*iMembers.size() + l*iMembers.size() + m; assert(index < N); values[index] = value; } } } // Write values long count[3] = {iOffsets.size(), iLocations.size(), iMembers.size()}; NcVar* ncvar = ncfile.add_var(localVariable.c_str(), ncFloat, dimOffset, dimLocation, dimMember); ncvar->put(values, count); } } delete[] values; ncfile.close(); }
void AGOSEngine::o_sub() { // 44: sub uint var = getVarWrapper(); writeVariable(var, readVariable(var) - getVarOrWord()); }
void AGOSEngine::o_random() { // 53: random uint var = getVarWrapper(); uint value = (uint16)getVarOrWord(); writeVariable(var, _rnd.getRandomNumber(value - 1)); }
void AGOSEngine::writeNextVarContents(uint16 contents) { writeVariable(getVarWrapper(), contents); }
void AGOSEngine::o_addf() { // 45: add f uint var = getVarWrapper(); writeVariable(var, readVariable(var) + getNextVarContents()); }
/** Write a integer variable with general format * * @param var variable name * @param val variable value * @param varComment variable comment * @param valComment value comment */ void writeVariable(const std::string& var, const int& val, const std::string& varComment = "", const std::string& valComment = "") { writeVariable(var,StringUtils::asString(val),varComment,valComment);}
void AGOSEngine::o_mulf() { // 49: mul f uint var = getVarWrapper(); writeVariable(var, readVariable(var) * getNextVarContents()); }
void AGOSEngine::o_subf() { // 46: sub f uint var = getVarWrapper(); writeVariable(var, readVariable(var) - getNextVarContents()); }
void AGOSEngine::o_mul() { // 47: mul uint var = getVarWrapper(); writeVariable(var, readVariable(var) * getVarOrWord()); }