Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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);
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 8
0
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;
}
Exemplo n.º 9
0
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;
}
Exemplo n.º 10
0
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;
}
Exemplo n.º 11
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);
}
Exemplo n.º 12
0
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();
}
Exemplo n.º 13
0
void AGOSEngine::o_sub() {
	// 44: sub
	uint var = getVarWrapper();
	writeVariable(var, readVariable(var) - getVarOrWord());
}
Exemplo n.º 14
0
void AGOSEngine::o_random() {
	// 53: random
	uint var = getVarWrapper();
	uint value = (uint16)getVarOrWord();
	writeVariable(var, _rnd.getRandomNumber(value - 1));
}
Exemplo n.º 15
0
void AGOSEngine::writeNextVarContents(uint16 contents) {
	writeVariable(getVarWrapper(), contents);
}
Exemplo n.º 16
0
void AGOSEngine::o_addf() {
	// 45: add f
	uint var = getVarWrapper();
	writeVariable(var, readVariable(var) + getNextVarContents());
}
Exemplo n.º 17
0
    /** 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);}
Exemplo n.º 18
0
void AGOSEngine::o_mulf() {
	// 49: mul f
	uint var = getVarWrapper();
	writeVariable(var, readVariable(var) * getNextVarContents());
}
Exemplo n.º 19
0
void AGOSEngine::o_subf() {
	// 46: sub f
	uint var = getVarWrapper();
	writeVariable(var, readVariable(var) - getNextVarContents());
}
Exemplo n.º 20
0
void AGOSEngine::o_mul() {
	// 47: mul
	uint var = getVarWrapper();
	writeVariable(var, readVariable(var) * getVarOrWord());
}