Ejemplo n.º 1
0
CDlgSpot::CDlgSpot(CWnd* pParent /*=NULL*/)
    : CDialogEx(CDlgSpot::IDD, pParent)
    , m_strIds( _T( "" ) )
    , m_idSpot( 0 )
    , m_strName( _T( "" ) )
    , m_x( 0 )
    , m_y( 0 )
    , m_strArea( _T( "" ) )
    , m_strWhen( _T( "" ) )
    , m_idWhen( 0 )
    , m_strWhenDel( _T( "" ) )
    , m_idWhenDel( 0 )
    , m_strCode( _T( "" ) )
    , m_idCode( 0 )
    , m_idName( 0 )
    , m_idArea( 0 )
    , m_strSpr( _T( "" ) )
{
    XCLEAR_ARRAY( m_numProduce );
    XCLEAR_ARRAY( m_nParam );
}
Ejemplo n.º 2
0
/*
BOOL XBaseProp::LoadBlock( CToken& token, void *pBlockObj, LPCTSTR szBlockName, ID _idBlock )
{
	TCHAR szLastToken[64];
	XCLEAR_ARRAY( szLastToken );
	ID idBlock = 0;
	while(1)
	{
		if( token.GetToken() == NULL )	break;
		if( token == _T("{") ) {
#pragma message( "이름 없어도 블럭생성되게 해서 하위계층으로 계속 복사되도록. 스킬처럼" )
//			if( szBlockName )	// 블럭네임이 있을때만 블럭을 생성한다. 스크립트에서 최상위 블럭은 보통 이게 널이다
			void *pSendBlock = NULL;
			void *pNewBlock = pSendBlock = CreateNewBlock( szLastToken, idBlock );
			if( pNewBlock == NULL )		// 새로 할당 못받은경우는 상위에서 넘겨준 포인터로 넘겨준다.
				pSendBlock = pBlockObj;
			if( LoadBlock( token, pSendBlock, szLastToken, idBlock ) == FALSE )
			{
				//XPROP_BREAKF( 1, "%s블럭 읽기실패", szLastToken );
				XBREAKF( 1, "%s->%s{ }:\n알수없는 기호 나옴", token.m_strFileName, (szBlockName)? szBlockName : _T("") );
				SAFE_DELETE( pNewBlock );
				return FALSE;
			} else {
				if( pNewBlock )		// 어쨋든 여기서 블럭 할당 못받은경우는 리스트에 추가할수 없다
					AddNewBlock( pNewBlock );
			}
		}
		else if( token == _T("}") ) 
				break;
		else {
			// 바로 다음 토큰이 블럭{ 이라면 블럭이름으로 인식
			TCHAR szNextToken1[ MAX_TOKEN ];
			TCHAR szNextToken2[ MAX_TOKEN ];
			token.PushPos();		// 현재 위치 백업
			_tcscpy_s( szNextToken1, token.GetToken() );
			_tcscpy_s( szNextToken2, token.GetToken() );		// 다음, 다다음 토큰까지 읽어본다
			token.PopPos();	// 토큰위치 복구
			if( szNextToken1[0] == '{' ) {
				if( token.IsNumeric( token.m_Token ) )				// { 앞에 있는 토큰이 숫자형태라면 
					idBlock = token.ToNumber( token.m_Token );	// 일단 idblock으로 가정
				else {
					_tcscpy_s( szLastToken, token.m_Token );
					idBlock = 0;
				}
			} else if( token.IsNumeric( szNextToken1 ) && szNextToken2[0] == '{' )	// 다음 토큰이 숫자+{ 면 블럭 아이디로 인식
			{
				_tcscpy_s( szLastToken, token.m_Token );	// 일단 블럭이름 받아놓고
				idBlock = token.GetNumber();		// block id
			} else {
				// 토큰 파싱은 버추얼 파서에게 맞긴다
				if( OnParse( token, pBlockObj, szBlockName ) == FALSE ) {	 
				XERROR( "%s->%s{ }:\n알수없는 기호 나옴", token.m_strFileName, (szBlockName)? szBlockName : _T("") );
//					XPROP_BREAKF( 1, "알수없는 기호나옴: %s", token.m_Token );
//					return FALSE;	// 알수없는 기호나와도 일단 계속 읽게 하자
				}
			}
		}
	}
	return TRUE;
}
*/
BOOL XBaseProp::LoadBlock( CToken& token, void *pBlockObj, LPCTSTR szBlockName, ID _idBlock )
{
	TCHAR szLastToken[64];
	XCLEAR_ARRAY( szLastToken );
	ID idBlock = 0;
	while(1)
	{
		if( token.GetToken() == NULL )	break;
		if( token == _T("{") ) {
#pragma message( "이름 없어도 블럭생성되게 해서 하위계층으로 계속 복사되도록. 스킬처럼" )
//			if( szBlockName )	// 블럭네임이 있을때만 블럭을 생성한다. 스크립트에서 최상위 블럭은 보통 이게 널이다
			void *pSendBlock = NULL;
			void *pNewBlock = pSendBlock = CreateNewBlock( szLastToken, idBlock );
			if( pNewBlock == NULL )		// 새로 할당 못받은경우는 상위에서 넘겨준 포인터로 넘겨준다.
				pSendBlock = pBlockObj;
			if( LoadBlock( token, pSendBlock, szLastToken, idBlock ) == FALSE )
			{
				//XPROP_BREAKF( 1, "%s블럭 읽기실패", szLastToken );
				XBREAKF( 1, "%s->%s{ }:\n알수없는 기호 나옴", token.m_strFileName, (szBlockName)? szBlockName : _T("") );
				SAFE_DELETE( pNewBlock );
				return FALSE;
			} else {
				if( pNewBlock )		// 어쨋든 여기서 블럭 할당 못받은경우는 리스트에 추가할수 없다
					AddNewBlock( pNewBlock );
			}
		}
		else if( token == _T("}") ) 
				break;
		else {
			// 토큰 파싱은 버추얼 파서에게 맞긴다
			if( OnParse( token, pBlockObj, szBlockName ) == FALSE ) 
			{	 
				// 토큰해석을 못했다면 블럭 이름일 수 있다.
				// 바로 다음 토큰이 블럭{ 이라면 블럭이름으로 인식
				TCHAR szNextToken1[ MAX_TOKEN ];
				TCHAR szNextToken2[ MAX_TOKEN ];
				token.PushPos();		// 현재 위치 백업
				_tcscpy_s( szNextToken1, token.GetToken() );
				if( token.GetToken() == NULL )
					break;
				_tcscpy_s( szNextToken2, token.m_Token );		// 다음, 다다음 토큰까지 읽어본다
				token.PopPos();	// 토큰위치 복구
				if( szNextToken1[0] == '{' ) {
					if( token.IsNumeric( token.m_Token ) )				// { 앞에 있는 토큰이 숫자형태라면 
						idBlock = token.ToNumber( token.m_Token );	// 일단 idblock으로 가정
					else {
						_tcscpy_s( szLastToken, token.m_Token );
						idBlock = 0;
					}
				} else if( token.IsNumeric( szNextToken1 ) && szNextToken2[0] == '{' )	// 다음 토큰이 숫자+{ 면 블럭 아이디로 인식
				{
					_tcscpy_s( szLastToken, token.m_Token );	// 일단 블럭이름 받아놓고
					idBlock = token.GetNumber();		// block id
				} else {
					// 토큰 파싱은 버추얼 파서에게 맞긴다
//					if( OnParse( token, pBlockObj, szBlockName ) == FALSE ) {	 
	//					XERROR( "%s->%s{ }:\n알수없는 기호 나옴", token.m_strFileName, (szBlockName)? szBlockName : _T("") );
//					}
				}
			}
		}
	}
	return TRUE;
}