void cUOTxDrawObject::addEquipment( Q_UINT32 serial, Q_UINT16 model, Q_UINT8 layer, Q_UINT16 color )
{
	// Overwrite the last 4 bytes (terminator) and readd them later
	Q_INT32 offset = rawPacket.count() - 4;
	rawPacket.resize( rawPacket.count() + 9 );

	setInt( offset, serial );
	setShort( offset+4, (model|0x8000) );
	rawPacket[offset+6] = layer;
	setShort( offset+7, color );
	setInt( offset+9, 0 ); // Terminator
}
void cUOTxSendSkills::addSkill( Q_UINT16 skillId, Q_UINT16 skill, Q_UINT16 realSkill, eStatus status )
{
	// Overwrite the last 2 bytes (terminator) and readd them later
	Q_INT32 offset = rawPacket.count() - 2;
	rawPacket.resize( rawPacket.count() + 7 );
	setShort( 1, rawPacket.count() );

	setShort( offset, skillId );
	setShort( offset+2, skill );
	setShort( offset+4, realSkill );
	rawPacket[ offset+6 ] = status;
	setShort( offset+7, 0 ); // Terminator
}
void cUOTxContextMenu::addEntry( Q_UINT16 textId, Q_UINT16 returnVal )
{
	Q_UINT32 offset = rawPacket.count();
	
	if( rawPacket.count() > 8 )
	{
		// Not the first entry anymore
		rawPacket.resize( offset + 6 );
		setShort( offset, returnVal );
		setShort( offset+2, textId );
		setShort( offset+4, 0x0000 );
	}
	else
	{
		// First entry
		rawPacket.resize( offset + 8 );
		setShort( offset, returnVal );
		setShort( offset+2, textId );
		setShort( offset+4, 0x0020 );
		setShort( offset+6, 0xFFFF );
	}
	
	// Increase the item-count + the menu-length
    rawPacket[ 7 ]++;
	setShort( 1, rawPacket.count() );
}
Example #4
0
void PipelineComposer::open()
{
    setShort(true);

    // create server cross connection
    _clusterWindow->getNetwork()->connectAllGroupToPoint(clusterId(),
            "StreamSock");
    // do not buffer any data
    for(UInt32 i=0 ; i <= serverCount() ; ++i)
        clusterWindow()->getNetwork()->getConnection(i)->forceDirectIO();
    if(!_isClient)
    {
        // create barrier
        _lock = Lock::get("PipelineComposer");
        // create barrier
        _barrier = Barrier::get("PipelineComposer");
        _frameEndBarrier = Barrier::get("PipelineComposerFrameEnd");
        // create writer thread
        _writer = BaseThread::get("PipelineComposer");
        // start writer thread
        _writer->runFunction( writeProc, this );
    }
    if(!_isClient && getPipelined())
    {
        _composeBarrier = Barrier::get("PipelineComposerCompose");
//        _composer = BaseThread::get("PipelineComposerCompose");
        _composer = dynamic_cast<Thread *>(ThreadManager::the()->getThread(NULL));
        _composer->runFunction( composeProc,0, this );
    }

#ifdef USE_NV_OCCLUSION
    glGenOcclusionQueriesNV(1, &_occlusionQuery);
#endif
}
void cUOTxShardList::addServer( Q_UINT16 serverIndex, QString serverName, Q_UINT8 serverFull, Q_INT8 serverTimeZone, Q_UINT32 serverIp )
{
	// Increase the server-count
	// Offset: 4
	setShort( 4, getShort( 4 ) + 1 );

	Q_INT32 offset = rawPacket.count();
	rawPacket.resize( rawPacket.count() + 40 ); // 40 byte per server
	setShort( 1, rawPacket.count() );
	setShort( offset, serverIndex );

	if( serverName.length() > 31 ) 
		serverName = serverName.left( 31 );

	strcpy( &rawPacket.data()[ offset + 2 ], serverName.latin1() );

	rawPacket[ offset + 34 ] = serverFull;
	rawPacket[ offset + 35 ] = serverTimeZone;
	setInt( offset + 36, serverIp );
}
void cUOTxUnicodeSpeech::setText( const QString &data )
{
	rawPacket.resize( 50 + (data.length()*2) );

	Q_INT32 offset = 48; // Pad right by one - remeber to copy one byte less
	rawPacket[ offset ] = 0x00;
	memcpy( &rawPacket.data()[ offset + 1 ], data.unicode(), (data.length()*2)-1 );

	// Add the new Terminator
	setShort( rawPacket.count() - 2, 0 );
}
Example #7
0
void DataWatcher::read(PacketBuffer &buffer) {
    byte_t item, index;
    do {
        buffer.getByte(item);
        if (item == 0x7f)
            break;
        index = item & 0x1f;
        switch (item >> 5) {
            case BYTE: {
                byte_t b;
                buffer.getByte(b);
                setByte(index, b);
                break;
            } case SHORT: {
                short_t s;
                buffer.getShort(s);
                setShort(index, s);
                break;
            } case INT: {
                int_t i;
                buffer.getInt(i);
                setInt(index, i);
                break;
            } case FLOAT: {
                float_t f;
                buffer.getFloat(f);
                setFloat(index, f);
                break;
            } case STRING: {
                string_t str;
                buffer.getString(str);
                setString(index, str);
                break;
            } case ITEMSTACK: {
                std::shared_ptr<ItemStack> stack;
                buffer.getItemStack(stack);
                setItemStack(index, stack);
                break;
            }
        }
    } while (true);
}
void cUOTxCharTownList::compile( void )
{
	rawPacket.resize( 309 + ( towns.size() * 63 ) );
	rawPacket[ 0 ] = (Q_UINT8)0xA9;

	rawPacket[ 3 ] = characters.size(); // Char Count

	for( Q_UINT8 c = 0; c < 5; ++c )
		if( c < characters.size() )
		{
			strcpy( &rawPacket.data()[ 4 + ( c * 60 ) ], characters[ c ].latin1() );
			rawPacket[ 4 + ( c * 60 ) + 30 ] = 0x00; // No Password (!)
		}
		else
			rawPacket[ 4 + ( c * 60 ) ] = 0x00; // "Pad-out" the char

	// Town Count
	Q_INT32 offset = 304;
	rawPacket[ offset++ ] = towns.size();

	for( Q_UINT8 t = 0; t < towns.size(); ++t )
	{
		rawPacket[ offset ] = towns[ t ].index;
		strcpy( &rawPacket.data()[ offset + 1 ], towns[ t ].town.latin1() );
		strcpy( &rawPacket.data()[ offset + 32 ], towns[ t ].area.latin1() );
		offset += 63;
	}

	if( charLimit >= 0 )
		setInt( offset, ( charLimit << 4 ) | flags | 0x4 );
	else
		setInt( offset, flags );

	// New Packet Size
	setShort( 1, rawPacket.count() );
}
Example #9
0
void PvObject::setShort(short value)
{
    std::string key = PyPvDataUtility::getValueOrSingleFieldName(pvStructurePtr);
    setShort(key, value);
}
Example #10
0
			Variant(short value)
			{
				setShort(value);
			}