コード例 #1
0
bool ExternalFile::idle( const QString& name, bool read )
{
    setFileName( name );

    if( !TibiaFile::exists() ) {
        emit documentError( name, QObject::tr( "File does not exist." ), -1 );
        return false;
    }

    if( !TibiaFile::open( QIODevice::ReadOnly ) ) {
        emit parseError( QObject::tr( "Open Error" ), TibiaFile::error() );
        return false;
    }

    if( read ) {
        QDataStream in( this );
        in.setByteOrder( QDataStream::LittleEndian );
        in >> m_version;

        m_datFormat = g_formatHandler.getFormatByClient( m_version );
        if( !m_datFormat ) {
            emit documentError( name, tr( "Unknown format: %1" ).arg( m_version ), -1 );
            return false;
        }
    }

    m_idle = true;
    m_success = true;
    return m_success;
}
コード例 #2
0
bool PictureFile::idle( const QString& name, bool read )
{
    setFileName( name );

    if( !TibiaFile::exists() ) {
        emit documentError( name, QObject::tr( "File does not exist." ), -1 );
        return false;
    }

    if( !TibiaFile::open( QIODevice::ReadOnly ) ) {
        emit parseError( QObject::tr( "Open Error" ), TibiaFile::error() );
        return false;
    }

    TibiaFile::seek( 0 );

    if( read ) {
        QDataStream in( this );
        in.setByteOrder( QDataStream::LittleEndian );
        in >> m_signature;
        in >> m_count;
    }

    m_idle = true;
    m_loaded = true;
    return m_idle;
}
コード例 #3
0
int perlcm_crawlupdate(struct collectionFormat *collection,
        int (*documentExist)(struct collectionFormat *collection,struct crawldocumentExistFormat *crawldocumentExist),
        int (*documentAdd)(struct collectionFormat *collection,struct crawldocumentAddFormat *crawldocumentAdd),
        int (*documentError)(struct collectionFormat *collection, int level, const char *fmt, ...),
        int (*documentContinue)(struct collectionFormat *collection)) {

	struct cargsF cargs;
	int ret;
	char error[512];

	cargs.collection 	= collection;
	cargs.documentExist 	= documentExist;
	cargs.documentAdd 	= documentAdd;
	cargs.documentError 	= documentError;
	cargs.documentContinue = documentContinue;


	ret = preprocessAndRun(collection,&cargs,"Perlcrawl::crawl_update", error,sizeof(error) );

	//hvis vi fik 0 som retur verdi, er alt ok, og vi returnerer 1
	if (ret == 0) {
		return 1;
	}
	else {
		documentError(collection,1,error);		
		return 0;
	}
}
コード例 #4
0
ファイル: libraryfile.cpp プロジェクト: blackz13/tibiaeditor
ItemData LibraryFile::getItemData( qint32 index )
{
	QMutexLocker locker( &mutex );

	if( isIdle() )
	{
		QDataStream in( this );
		in.setByteOrder( QDataStream::LittleEndian );
		TibiaFile::seek( sizeof( quint16 ) + sizeof( m_count ) + sizeof( m_version ) + index * sizeof( quint32 ) );
		quint32 offset;
		in >> offset;
		if( offset == 0x00000000 ) // Blank item
			return ItemData();

		TibiaFile::seek( offset );

		QString error;
		quint32 address = 0;
		ItemData itemData;
		if( ExternalFile::readItem( in, itemData, m_datFormat, this, index, address, error ) )
		{
			m_spriteHash.insert( index, address );
			return itemData;
		}
		else
			emit documentError( fileName(), error, -1 );
	}

	if( m_internalItems.contains( index ) )
		return m_internalItems.value( index );

	if( m_items.value( index ) )
		return m_items.value( index )->getItemData();

	return ItemData();
}
コード例 #5
0
ファイル: formatfile.cpp プロジェクト: blackz13/tibiaeditor
bool FormatFile::load( const QString& fileName )
{
	setFileName( fileName );

	if( !TibiaFile::open( QIODevice::ReadOnly ) ){
		emit parseError( QObject::tr( "Open Error" ), TibiaFile::error() );
		return false;
	}

	QString error;
	int line;

	QDomDocument doc( "formats" );
	if( !doc.setContent( this, true, &error, &line ) ){
		emit documentError( fileName, error, line );
		TibiaFile::close();
		return false;
	}

	TibiaFile::close();

	QDomElement docElem = doc.documentElement();
	if( docElem.tagName().compare( "formats", Qt::CaseInsensitive ) == 0 )
	{
		QDomNode node = docElem.firstChild();
		while( !node.isNull() )
		{
			if( node.isElement() )
			{
				QDomElement element = node.toElement();
				if( !element.isNull() )
				{
					if( element.tagName().compare( "format", Qt::CaseInsensitive ) == 0 )
					{
						ItemFormat format;
						format.name = element.attribute( "name" );
						format.version = element.attribute( "version" ).toInt();
						format.redirect = element.attribute( "redirect" ).toInt();
						format.ZDivFactor = element.attribute( "zdiv", "1" ).toInt();

						QDomElement subelement = element.firstChildElement( "property" );
						while( !subelement.isNull() )
						{
							FormatProperty formatProperty;
							formatProperty.header = subelement.attribute( "header", "255" ).toInt();
							if( format.version == -1 )
								formatProperty.base = formatProperty.header;
							else
								formatProperty.base = subelement.attribute( "base", "255" ).toInt();
							formatProperty.name = subelement.attribute( "name" );
							formatProperty.tooltip = subelement.attribute( "tooltip" );

							QDomElement child = subelement.firstChildElement( "child" );
							while( !child.isNull() )
							{
								PropertyValue propertyValue;
								propertyValue.size = child.attribute( "size", "0" ).toInt();
								propertyValue.name = child.attribute( "name" );
								propertyValue.tooltip = child.attribute( "tooltip" );
								formatProperty.propertyValues.push_back( propertyValue );

								child = child.nextSiblingElement( "child" );
							}

							format.properties.push_back( formatProperty );
							
							subelement = subelement.nextSiblingElement( "property" );
						}

						format.valid = true;
						formats.insert( format.version, format );
					}
				}
			}
			node = node.nextSibling();
		}
	}
	else {
		emit documentError( fileName, tr( "Invalid Element: " ) + docElem.tagName(), -1 );
		return false;
	}

	_loaded = true;
	return true;
}