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; }
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; }
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; } }
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(); }
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; }