Пример #1
0
/**
* @ingroup XmlParser
* @brief XML 의 모든 하위 element 중에서 입력된 이름과 일치하는 element 를 검색한다.
* @param pclsList	element 리스트
* @param pszName		이름
* @param pszChildName 하위 이름
* @param iIndex		순번
* @param iCount		현재 검색된 이름 개수
* @returns 검색되면 해당 element 의 포인터를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
*/
CXmlElement * CXmlSearch::SelectElement(XML_ELEMENT_LIST * pclsList, const char * pszName, const char * pszChildName, const int iIndex, int & iCount)
{
	XML_ELEMENT_LIST::iterator	itEL;
	CXmlElement * pclsElement = NULL;

	for (itEL = pclsList->begin(); itEL != pclsList->end(); ++itEL)
	{
		if (!strcmp(pszName, itEL->GetName()))
		{
			pclsElement = SelectElement(itEL->GetElementList(), pszChildName, iIndex, iCount);
			if (pclsElement)
			{
				return pclsElement;
			}
		}
		else
		{
			pclsElement = SelectElement(itEL->GetElementList(), pszName, pszChildName, iIndex, iCount);
			if (pclsElement)
			{
				return pclsElement;
			}
		}
	}

	return NULL;
}
void CGraphicsContainerSelect::SelectElements(CElementCollection elements)
{
	for(int i=0; i<elements.Count();i++)
	{
		IElementPtr pElement= elements.QueryElement(i);
		SelectElement(pElement);
	}
}
Пример #3
0
CXmlElement * CXmlSearch::SelectElement(const char * pszName, const char * pszChildName, const int iIndex)
{
	int iCount = 0;

	if (iIndex < 0) return NULL;

	return SelectElement(&m_clsElementList, pszName, pszChildName, iIndex, iCount);
}
Пример #4
0
/**
* @ingroup XmlParser
* @brief 애트리뷰트에 해당하는 값을 검색하여 int 변수에 저장한다.
* @param pszName Element 이름
* @param pszAttrName 애트리뷰트 이름
* @param iValue		애트리뷰트 값
* @param iIndex		Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다.
*/
bool CXmlSearch::SelectAttribute(const char * pszName, const char * pszAttrName, int & iValue, const int iIndex)
{
	CXmlElement * pclsElement = SelectElement(pszName, iIndex);
	if (pclsElement)
	{
		return pclsElement->SelectAttribute(pszAttrName, iValue);
	}

	return false;
}
Пример #5
0
/**
* @ingroup XmlParser
* @brief 애트리뷰트에 해당하는 값을 검색한다.
* @param pszName Element 이름
* @param pszAttrName 애트리뷰트 이름
* @param iIndex		Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 애트리뷰트의 값을 리턴하고 그렇지 않으면 NULL 을 리턴한다.
*/
const char * CXmlSearch::SelectAttribute(const char * pszName, const char * pszAttrName, const int iIndex)
{
	CXmlElement * pclsElement = SelectElement(pszName, iIndex);
	if (pclsElement)
	{
		return pclsElement->SelectAttribute(pszAttrName);
	}

	return NULL;
}
Пример #6
0
/**
* @brief N 개의 tag 와 일치하는 element 를 검색한다.
* @param iIndex 순번. 0 을 입력하면 첫번째 검색된 element 를 검색한다. 2 를 입력하면 세번째 검색된 element 를 검색한다.
* @param iNameCount 이름 개수
* @param ... 이름
* @returns 검색되면 해당 element 의 포인터를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
*/
CXmlElement * CXmlSearch::SelectElement(const int iIndex, int iNameCount, ...)
{
	if (iIndex < 0) return NULL;
	if (iNameCount <= 0) return NULL;

	int iCount = 0;
	MAKE_NAME_LIST

		return SelectElement(&m_clsElementList, clsNameList, 0, iIndex, iCount);
}
Пример #7
0
/**
* @brief N 개의 tag 와 일치하는 element 를 검색한다.
* @param pclsList		element 리스트
* @param clsNameList 검색 이름 리스트. 상위 tag 이름부터 하위 tag 이름으로 순서대로 저장되어야 한다.
* @param iNameIndex	검색 이름 리스트에서 현재 검색할 이름 인덱스
* @param iIndex			순번
* @param iCount			현재 검색된 이름 개수
* @returns 검색되면 해당 element 의 포인터를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
*/
CXmlElement * CXmlSearch::SelectElement(XML_ELEMENT_LIST * pclsList, XML_NAME_LIST & clsNameList, int iNameIndex, const int iIndex, int & iCount)
{
	XML_ELEMENT_LIST::iterator	itEL;
	CXmlElement * pclsElement = NULL;

	int iNameSize = (int)clsNameList.size();
	const char * pszName = clsNameList[iNameIndex].c_str();

	for (itEL = pclsList->begin(); itEL != pclsList->end(); ++itEL)
	{
		if (!strcmp(pszName, itEL->GetName()))
		{
			if (iNameSize == (iNameIndex + 1))
			{
				if (iCount == iIndex)
				{
					return &(*itEL);
				}

				++iCount;
			}
			else
			{
				pclsElement = SelectElement(itEL->GetElementList(), clsNameList, iNameIndex + 1, iIndex, iCount);
				if (pclsElement)
				{
					return pclsElement;
				}
			}
		}
		else
		{
			pclsElement = SelectElement(itEL->GetElementList(), clsNameList, iNameIndex, iIndex, iCount);
			if (pclsElement)
			{
				return pclsElement;
			}
		}
	}

	return NULL;
}
Пример #8
0
/**
* @ingroup XmlParser
* @brief 모든 하위 Element 를 검색하여서 bool 내용을 가져온다.
* @param pszName Element 이름
* @param pszChildName 하위 element 이름
* @param bData		하위 Element 의 값을 저장하는 변수
* @param iIndex		하위 Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다.
*/
bool CXmlSearch::SelectElementData(const char * pszName, const char * pszChildName, bool & bData, const int iIndex)
{
	CXmlElement * pclsElement = SelectElement(pszName, pszChildName, iIndex);
	if (pclsElement)
	{
		bData = GetBoolean(pclsElement->GetData());
		return true;
	}

	return false;
}
Пример #9
0
/**
* @ingroup XmlParser
* @brief 모든 하위 Element 를 검색하여서 내용을 저장한다.
* @param pszName		Element 이름
* @param pszChildName 하위 Element 이름
* @param strData		Elemnet 의 내용을 저장할 변수
* @param iIndex		Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다.
*/
bool CXmlSearch::SelectElementData(const char * pszName, const char * pszChildName, std::string & strData, const int iIndex)
{
	CXmlElement * pclsElement = SelectElement(pszName, pszChildName, iIndex);
	if (pclsElement)
	{
		strData = pclsElement->GetData();
		return true;
	}

	return false;
}
Пример #10
0
/**
* @ingroup XmlParser
* @brief 모든 하위 Element 를 검색하여서 정수 내용을 가져온다.
* @param pszName Element 이름
* @param iData	Element 의 값을 저장하는 변수
* @param iIndex	Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다.
*/
bool CXmlSearch::SelectElementData(const char * pszName, int & iData, const int iIndex)
{
	CXmlElement * pclsElement = SelectElement(pszName, iIndex);
	if (pclsElement)
	{
		iData = atoi(pclsElement->GetData());

		return true;
	}

	return false;
}
Пример #11
0
/**
* @ingroup XmlParser
* @brief 하위 Element 를 검색하여서 내용을 저장한다.
* @param pszName		하위 Element 이름
* @param strData		하위 Elemnet 의 내용을 저장할 변수
* @param iIndex		하위 Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다.
*/
bool CXmlElement::SelectElementData(const char * pszName, std::string & strData, const int iIndex)
{
	strData.clear();

	CXmlElement * pclsElement = SelectElement(pszName, iIndex);
	if (pclsElement)
	{
		strData = pclsElement->m_strData;
		return true;
	}

	return false;
}
Пример #12
0
/**
* @ingroup XmlParser
* @brief 하위 Element 를 검색하여서 bool 내용을 가져온다.
* @param pszName 하위 Element 이름
* @param bData		하위 Element 의 값을 저장하는 변수
* @param iIndex		하위 Element 인덱스. 0 을 입력하면 첫번째 검색된 하위 Element 를 리턴하고 1 을 입력하면 두번째 검색된 하위 Element 를 리턴한다.
* @returns 성공하면 true 를 리턴하고 실패하면 false 를 리턴한다.
*/
bool CXmlElement::SelectElementData(const char * pszName, bool & bData, const int iIndex)
{
	bData = false;

	CXmlElement * pclsElement = SelectElement(pszName, iIndex);
	if (pclsElement)
	{
		bData = GetBoolean(pclsElement->m_strData.c_str());

		return true;
	}

	return false;
}
Пример #13
0
/**
* @brief N 개의 tag 와 일치하는 element 의 값을 검색한다.
* @param iIndex 순번. 0 을 입력하면 첫번째 검색된 element 를 검색한다. 2 를 입력하면 세번째 검색된 element 를 검색한다.
* @param bData 검색된 데이터 저장 변수
* @param iNameCount 이름 개수
* @param ... 이름
* @returns 검색되면 해당 element 의 포인터를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
*/
bool CXmlSearch::SelectElementData(const int iIndex, bool & bData, int iNameCount, ...)
{
	if (iIndex < 0) return false;
	if (iNameCount <= 0) return false;

	int iCount = 0;
	MAKE_NAME_LIST

		CXmlElement * pclsElement = SelectElement(&m_clsElementList, clsNameList, 0, iIndex, iCount);
	if (pclsElement)
	{
		bData = GetBoolean(pclsElement->GetData());
		return true;
	}

	return false;
}
Пример #14
0
/*----------------------------------------------------------------------
  TtaSelectElementWithoutPath

  Selects a single element but don't update the selection path.
  The element is highlighted in all views
  where it can be displayed. If it cannot be displayed in any existing
  view, a new view is eventually open for displaying it.
  Parameters:
  document: the document containing the element to be
  selected.
  selectedElement: the element to be selected. NULL for cancelling the
  selection in the document.
  ----------------------------------------------------------------------*/
void TtaSelectElementWithoutPath (Document document, Element selectedElement)
{
  DisplayMode         dispMode;

  UserErrorCode = 0;
  if (selectedElement && ((PtrElement) selectedElement)->ElParent == NULL)
    TtaError (ERR_invalid_parameter);
  /* Checks the parameter document */
  else if (document < 1 || document > MAX_DOCUMENTS)
    TtaError (ERR_invalid_document_parameter);
  else if (LoadedDocument[document - 1] == NULL)
    TtaError (ERR_invalid_document_parameter);
  else
    {
      dispMode = TtaGetDisplayMode (document);
      if (dispMode == DisplayImmediately && selectedElement)
        SelectElement (LoadedDocument[document - 1],
                       (PtrElement) selectedElement, TRUE, FALSE, FALSE);
    }
}
Пример #15
0
/*----------------------------------------------------------------------
  TtaSelectElement

  Selects a single element. This element is highlighted in all views
  where it can be displayed. If it cannot be displayed in any existing
  view, a new view is eventually open for displaying it.
  Parameters:
  document: the document containing the element to be
  selected.
  selectedElement: the element to be selected. NULL for cancelling the
  selection in the document.
  ----------------------------------------------------------------------*/
void TtaSelectElement (Document document, Element selectedElement)
{
  DisplayMode         dispMode;

  UserErrorCode = 0;
  if (selectedElement && ((PtrElement) selectedElement)->ElParent == NULL)
    TtaError (ERR_invalid_parameter);
  /* Checks the parameter document */
  else if (document < 1 || document > MAX_DOCUMENTS)
    TtaError (ERR_invalid_document_parameter);
  else if (LoadedDocument[document - 1] == NULL)
    TtaError (ERR_invalid_document_parameter);
  else
    {
      dispMode = TtaGetDisplayMode (document);
      if (dispMode == DisplayImmediately)
        {
        if (selectedElement == NULL)
          /* Abort the selection */
          ResetSelection (LoadedDocument[document - 1]);
        else
          {
            SelectElement (LoadedDocument[document - 1],
                           (PtrElement) selectedElement, TRUE, FALSE, TRUE);
#ifdef _WX
            // update the status bar
            TtaSetStatusSelectedElement (document, 1, selectedElement);
#endif /* _WX */
          }
        }
      else
        {
          CancelSelection ();
          NewSelection (document, selectedElement, NULL, 0, 0);
        }
    }
}
Пример #16
0
////////////////////////////////////////////////////////////////////////
//
// Function:    SelectTarget
// Date:        04/03/99
// Author:      JIM
//
// Description: 
//
////////////////////////////////////////////////////////////////////////
ItemPtr	FormationItem::SelectTarget(ItemPtr currtarget,int* selectedelt,int counter/*=0*/)
{
	ItemPtr rv=NULL;
	if (currtarget)
		if (currtarget->Status.size>=FORMATIONSIZE)
		{
			FormationItemPtr curr=*currtarget;
			while (curr->leader)
				curr=curr->Leader();
			rv=curr;
			if (rv && selectedelt)
				*selectedelt=counter;
		}
		else
		{
			//count up damage
			//count up live tokens
			//if (damage-100*livetokens>700)
			//		pick another target
//DEADCODE DAW 01/07/99 			Bool	bombableSGT=CheckForWeapon(LT_BOMB);			  //DAW 01/07/99
			UniqueID SGT=currtarget->SGT;
			if (SGT==UID_NULL)
				SGT=currtarget->uniqueID.count;
			
//DeadCode DAW 01Jul99 			if (!bombableSGT && Persons2::getbandfromUID(SGT)!=AmberAirfieldBAND && Persons2::getbandfromUID(SGT)!=AmberBridgeBAND)
//DeadCode DAW 01Jul99 				bombableSGT=TRUE;

			int damage=0,livetokens=0;
//DeadCode DAW 01Jul99 			if (!bombableSGT && !currtarget->SGT)
//DeadCode DAW 01Jul99 				damage=800;
//DeadCode DAW 01Jul99 			else
			if (currtarget->shape==EMPTY)
				damage=1000;
			else
				for (GroupItterator gi(currtarget->shape,currtarget->Anim);gi;gi++)
					if (gi.AnimDataMAD().itemstate)
						damage+=gi.DamageWeight()*gi.AnimDataMAD().itemstate;
					else
						if (gi.IsStoresToken())
							livetokens++;
//DEADCODE JIM 22/03/00 			if ((duty&DUTYMASK)==DC_WW)
//DEADCODE JIM 22/03/00 			{
//DEADCODE JIM 22/03/00 				if (selectedelt)
//DEADCODE JIM 22/03/00 					*selectedelt=SelectElement(rv,counter);
//DEADCODE JIM 22/03/00 				rv=currtarget;
//DEADCODE JIM 22/03/00 			}
//DEADCODE JIM 22/03/00 			else
			if (damage-livetokens*100<700)
				rv=currtarget;
			else
			{
//DeadCode DAW 27Jun99 				UniqueID SGT=currtarget->SGT;
//DeadCode DAW 27Jun99 				if (SGT==UID_NULL)
//DeadCode DAW 27Jun99 					SGT=currtarget->uniqueID.count;
				ItemPtr	test=*Persons2::ConvertPtrUID(SGT);
				int	lowestdamage=900;
				int	scan=-1;
				if (test)
					do{
						damage=0;livetokens=0;
//DeadCode DAW 01Jul99 						if (!bombableSGT)
//DeadCode DAW 01Jul99 							damage=1000;
//DeadCode DAW 01Jul99 						else

						if (currtarget->shape==EMPTY)
							damage=1000;
						else
							for (GroupItterator gi(test->shape,test->Anim);gi;gi++)
							{
								if (gi.AnimDataMAD().itemstate)
									damage+=gi.DamageWeight()*gi.AnimDataMAD().itemstate;
								else
									if (gi.IsStoresToken())
										livetokens++;
							}
//DeadCode DAW 01Jul99 						bombableSGT=TRUE;
						if (damage-livetokens*200<lowestdamage)
						{
							rv=test;
							lowestdamage=damage-livetokens*200;
						}
						while (++scan<IllegalSepID)
						{
							if (scan<WayPointBAND || scan>=WayPointBANDEND)
								if ((test=*Persons2::ConvertPtrUID(UniqueID(scan)))!=NULL)
									if (test->SGT==SGT && test->shape!=EMPTY)
										break;
						}
					}while (scan<IllegalSepID);
			}
			if (rv && selectedelt)												//DAW 27Jun99
				*selectedelt=SelectElement(rv,counter);			//DAW 27Jun99
		}
//DeadCode DAW 27Jun99 	if (rv && selectedelt)
//DeadCode DAW 27Jun99 		if (rv->Status.size>=FORMATIONSIZE)
//DeadCode DAW 27Jun99 		{
//DeadCode DAW 27Jun99 			selectedelt=0;
//DeadCode DAW 27Jun99 			rv=SelectConvoyMember(*rv,counter);
//DeadCode DAW 27Jun99 		}
//DeadCode DAW 27Jun99 		else
	if(!rv)
		return currtarget;
	return	rv;
}