Beispiel #1
0
void PRFProperty::parseElement(TiXmlElement *elem)
{
    DEBUG(5, PRFProperty, "In parseElement.");

    id = elem->Attribute("id");

    dataType->id = CORBA::string_dup(id.c_str());

    type = elem->Attribute("type");

    name = elem->Attribute("name");

    mode = elem->Attribute("mode");

    parseKind(elem);
    parseAction(elem);
}
Beispiel #2
0
int evt_GetLastAction(char*apikey, Action * action)
{
	connect();
	
	char * urlPath = createGetLastActionURLPath(action->thng);
	char * header = createHeader(apikey);
	
	int responseCode = HTTP_Get(socket, EVRYTHNG_API_HOST, urlPath, header, respHeader, ARRAY_SIZE(respHeader), respBody, ARRAY_SIZE(respBody),200);
	
	if (responseCode == 200)
	{
		parseAction(action, respBody);
	}

	disconnect();
	free(urlPath);
	free(header);
	
	return responseCode;	
}
Beispiel #3
0
LEElement *LEElementPool::parseExpression(const char * line) {

	LEElement *first = NULL;
	LEElement *last = NULL;

	while (true) {
		line = getNextToken(line, parsingBuffer);

		if (line == NULL) {
			/**
			 * No more tokens in this line
			 */
			return first;
		}

		LEElement *n = next();

		if (isNumeric(parsingBuffer)) {
			n->init(LE_NUMERIC_VALUE, atoff(parsingBuffer));
		} else {
			le_action_e action = parseAction(parsingBuffer);
			if (action == LE_UNDEFINED) {
				/**
				 * Cannot recognize token
				 */
				warning((obd_code_e) 0, "unrecognized [%s]", parsingBuffer);
				return NULL;
			}
			n->init(action);
		}

		if (first == NULL) {
			first = n;
			last = n;
		} else {
			last->next = n;
			last = last->next;
		}
	}
	return first;
}
ComplexUserActionList ComplexUserActionParser::parseScenarios()
{
	ComplexUserActionList scenarios;

	QDir dir;
	dir.current().cdUp();
	dir.cdUp();
	dir.setPath("userAction/userScenario");
	QStringList filters;
	filters << "*.xml";
	QStringList const scenarioFileNames = dir.entryList(filters);
	QStringList scenarioFiles;
	for (const QString &actionFileName: scenarioFileNames) {
		scenarioFiles << dir.absolutePath() + "/" + actionFileName;
	}
	for (const QString &actionFile: scenarioFiles) {
		ComplexUserAction *scenario = parseAction(actionFile, true);
		if (scenario != nullptr) {
			scenarios << scenario;
		}
	}
	return scenarios;
}
ComplexUserActionList ComplexUserActionParser::parse()
{
	ComplexUserActionList complexActions;

	QDir dir;
	dir.current().cdUp();
	dir.cdUp();
	dir.setPath("userAction/complexUserAction/XMLcomplexUserActions");
	QStringList filters;
	filters << "*.xml";
	QStringList const complexActionFileNames = dir.entryList(filters);
	QStringList complexActionFiles;
	for (const QString &actionFileName: complexActionFileNames) {
		complexActionFiles << dir.absolutePath() + "/" + actionFileName;
	}
	for (const QString &actionFile: complexActionFiles) {
		ComplexUserAction *complexUserAction = parseAction(actionFile);
		if (complexUserAction != nullptr) {
			complexActions << complexUserAction;
		}
	}
	return complexActions;
}
Beispiel #6
0
void Parser::parseAction(QXmlStreamReader &xml, Action *parent) {
    while (!xml.atEnd() && !xml.hasError()) {
        QXmlStreamReader::TokenType token = xml.readNext();

        if (token == QXmlStreamReader::StartElement) {
            //parse action..
            Action *a;
            QXmlStreamAttributes a_attr = xml.attributes();
            if (xml.name().toString() == "move") {
                a = new Move(a_attr.value("range").toString(), a_attr.value("rule").toString());
            } else {
                a = new Response(a_attr.value("rule").toString());
            }
            parent->addAction(a);
            parseAction(xml, a);
        }

        if (token == QXmlStreamReader::EndElement &&
                (xml.name().toString() == "move" || xml.name().toString() == "resp")) {
            //strategy end..
            return ;
        }
    }
}
Beispiel #7
0
/**
 * \brief 读取攻城脚本
 *
 * \param rushID 脚本id
 * \param rushDelay 攻城延迟时间
 * \param countryID 目标国家id
 * \return 读取是否成功,不成功则不可用
 */
bool Rush::loadRushData(DWORD rushID,DWORD rushDelay,DWORD countryID)
{
  zXMLParser xml;
  if (!xml.initFile(Seal::global["confdir"] +"city_rush.xml"))
  {
    Xlogger->error("打开city_rush.xml失败");
    return false;
  }

  xmlNodePtr root = xml.getRootNode("info");
  if (!root) return false;
  xmlNodePtr rushNode = xml.getChildNode(root,"rush");

  while (rushNode)
  {
    DWORD id=0;
    xml.getNodePropNum(rushNode,"id",&id,sizeof(id));
    if (rushID==id)
    {
      xml.getNodePropNum(rushNode,"boss",&bossID,sizeof(bossID));
      xml.getNodePropStr(rushNode,"bossname",bossName,sizeof(bossName));
      xml.getNodePropStr(rushNode,"name",rushName,sizeof(rushName));
      xml.getNodePropNum(rushNode,"cleardelay",&clearDelay,sizeof(clearDelay));
      xml.getNodePropNum(rushNode,"lasttime",&lasttime,sizeof(bossID));
      
      zXMLParser parser = zXMLParser();
      parser.initFile(Seal::global["confdir"] + "scenesinfo.xml");
      xmlNodePtr root2 = parser.getRootNode("ScenesInfo");
      if (0==root2) return false;
      xmlNodePtr infoNode = parser.getChildNode(root2,"countryinfo");
      if (0==infoNode) return false;
      
      char str[MAX_NAMESIZE];
      xmlNodePtr dataNode = parser.getChildNode(infoNode,"country");
      while (dataNode)
      {                       
        DWORD id=0;
        parser.getNodePropNum(dataNode,"id",&id,sizeof(id));
        if (id==countryID)
        {
          parser.getNodePropStr(dataNode,"name",str,sizeof(str));
          break;
        }
        dataNode = parser.getNextNode(dataNode,"country");
      }
      if (!dataNode)
      {
        Xlogger->debug("读取攻城数据时,未找到目标国家 id=%d",countryID);
        return false;
      }
      strncpy(mapName,str,sizeof(mapName));
      
      DWORD mapID;
      xml.getNodePropNum(rushNode,"mapid",&mapID,sizeof(mapID));
      infoNode = parser.getChildNode(root2,"mapinfo");
      if (0==infoNode) return false;
      dataNode = parser.getChildNode(infoNode,"map");
      while (dataNode)
      {                       
        DWORD id=0;
        parser.getNodePropNum(dataNode,"mapID",&id,sizeof(id));
        if (id==mapID)
        {
          parser.getNodePropStr(dataNode,"name",str,sizeof(str));
          break;
        }
        dataNode = parser.getNextNode(dataNode,"map");
      }
      if (!dataNode)
      {
        Xlogger->debug("读取攻城数据时,未找到目标地图 id=%d",mapID);
        return false;
      }
      strcat(mapName,"·");
      strcat(mapName,str);

      dataNode = xml.getChildNode(rushNode,"boss");
      while (dataNode)
      {
        bossDefine bd;
        xml.getNodePropNum(dataNode,"x",&bd.pos.x,sizeof(bd.pos.x));
        xml.getNodePropNum(dataNode,"y",&bd.pos.y,sizeof(bd.pos.y));
        xml.getNodePropNum(dataNode,"num",&bd.num,sizeof(bd.num));
        xml.getNodePropNum(dataNode,"region",&bd.region,sizeof(bd.region));
        xml.getNodePropNum(dataNode,"script",&bd.script,sizeof(bd.script));

        bossVector.push_back(bd);

        dataNode = xml.getNextNode(dataNode,"boss");
      }

      dataNode = xml.getChildNode(rushNode,"servant");
      while (dataNode)
      {
        servantDefine sd;
        xml.getNodePropNum(dataNode,"id",&sd.id,sizeof(sd.id));
        xml.getNodePropNum(dataNode,"num",&sd.num,sizeof(sd.num));
        xml.getNodePropNum(dataNode,"rate",&sd.rate,sizeof(sd.rate));
        xml.getNodePropNum(dataNode,"interval",&sd.interval,sizeof(sd.interval));

        servantVector.push_back(sd);

        dataNode = xml.getNextNode(dataNode,"servant");
      }

      dataNode = xml.getChildNode(rushNode,"notify");
      if (dataNode)
        xml.getNodePropStr(dataNode,"str",text,sizeof(text));

      char t[128];
      std::string::size_type pos=0;
      dataNode = xml.getChildNode(rushNode,"starttext");
      if (dataNode)
      {
        xml.getNodePropStr(dataNode,"str",t,sizeof(t));
        startText = t;
        pos = startText.find("time",0);
        if (pos!=std::string::npos)
          startText.replace(pos,4,"%s");
      }

      dataNode = xml.getChildNode(rushNode,"endtext");
      if (dataNode)
      {
        xml.getNodePropStr(dataNode,"str",t,sizeof(t));
        endText = t;
        pos = endText.find("time",0);
        if (pos!=std::string::npos)
          endText.replace(pos,4,"%s");
      }

      dataNode = xml.getChildNode(rushNode,"phase");
      phaseDefine pd;
      pd.action = RUSH_RELIVE;
      pd.lasttime = rushDelay;
      setPhaseTime(pd.lasttime*1000);
      phaseVector.push_back(pd);
      while (dataNode)
      {
        char action[32];
        bzero(action,sizeof(action));
        bzero(pd.say,sizeof(pd.say));
        xml.getNodePropStr(dataNode,"action",action,sizeof(action));
        pd.action = parseAction(action);
        if (pd.action)
        {
          xml.getNodePropNum(dataNode,"x",&pd.pos.x,sizeof(pd.pos.x));
          xml.getNodePropNum(dataNode,"y",&pd.pos.y,sizeof(pd.pos.y));
          xml.getNodePropNum(dataNode,"region",&pd.region,sizeof(pd.region));
          xml.getNodePropStr(dataNode,"say",pd.say,sizeof(pd.say));
          xml.getNodePropNum(dataNode,"lasttime",&pd.lasttime,sizeof(pd.lasttime));
          xml.getNodePropNum(dataNode,"id",&pd.x,sizeof(pd.x));
          xml.getNodePropNum(dataNode,"num",&pd.y,sizeof(pd.y));
          xml.getNodePropNum(dataNode,"script",&pd.z,sizeof(pd.z));

          phaseVector.push_back(pd);
        }

        dataNode = xml.getNextNode(dataNode,"phase");
      }
      pd.action = RUSH_END;
      bzero(pd.say,sizeof(pd.say));
      phaseVector.push_back(pd);

      //Xlogger->info("读取攻城数据成功:name=%s mapname=%s boss=%d servant=%d phase=%d",rushName,mapName,bossVector.size(),servantVector.size(),phaseVector.size());
      return true;
      break;
    }
    rushNode = xml.getNextNode(rushNode,"rush");
  }
  Xlogger->info("读取攻城数据失败:rushID=%d countryID=%d",rushID,countryID);
  return false;
}