Exemplo n.º 1
0
        private void MessageTempEntity()
        {
            Byte type = bitBuffer.ReadByte();

            switch (type)
            {
            // obsolete
            case 16:     // TE_BEAM
            case 26:     // TE_BEAMHOSE
                break;

            // simple coord format messages
            case 2:     // TE_GUNSHOT
            case 4:     // TE_TAREXPLOSION
            case 9:     // TE_SPARKS
            case 10:    // TE_LAVASPLASH
            case 11:    // TE_TELEPORT
                Seek(6);
                break;

            case 0:     // TE_BEAMPOINTS
                Seek(24);
                break;

            case 1:     // TE_BEAMENTPOINT
                Seek(20);
                break;

            case 3:     // TE_EXPLOSION
                Seek(11);
                break;

            case 5:     // TE_SMOKE
                Seek(10);
                break;

            case 6:     // TE_TRACER
                Seek(12);
                break;

            case 7:     // TE_LIGHTNING
                Seek(17);
                break;

            case 8:     // TE_BEAMENTS
                Seek(16);
                break;

            case 12:     // TE_EXPLOSION2
                Seek(8);
                break;

            case 13:     // TE_BSPDECAL
                Seek(8);

                UInt16 entityIndex = bitBuffer.ReadUInt16();

                if (entityIndex != 0)
                {
                    Seek(2);
                }
                break;

            case 14:     // TE_IMPLOSION
                Seek(9);
                break;

            case 15:     // TE_SPRITETRAIL
                Seek(19);
                break;

            case 17:     // TE_SPRITE
                Seek(10);
                break;

            case 18:     // TE_BEAMSPRITE
                Seek(16);
                break;

            case 19:     // TE_BEAMTORUS
            case 20:     // TE_BEAMDISK
            case 21:     // TE_BEAMCYLINDER
                Seek(24);
                break;

            case 22:     // TE_BEAMFOLLOW
                Seek(10);
                break;

            case 23:     // TE_GLOWSPRITE
                // SDK is wrong

                /*
                 *  write_coord()	 position
                 *  write_coord()
                 *  write_coord()
                 *  write_short()	 model index
                 *  write_byte()	 life in 0.1's
                 *  write_byte()	scale in 0.1's
                 *  write_byte()	brightness
                 */
                Seek(11);
                break;

            case 24:     // TE_BEAMRING
                Seek(16);
                break;

            case 25:     // TE_STREAK_SPLASH
                Seek(19);
                break;

            case 27:     // TE_DLIGHT
                Seek(12);
                break;

            case 28:     // TE_ELIGHT
                Seek(16);
                break;

            case 29:     // TE_TEXTMESSAGE
                Seek(5);
                Byte textParmsEffect = bitBuffer.ReadByte();
                Seek(14);

                if (textParmsEffect == 2)
                {
                    Seek(2);
                }

                bitBuffer.ReadString();     // capped to 512 bytes (including null terminator)
                break;

            case 30:     // TE_LINE
            case 31:     // TE_BOX
                Seek(17);
                break;

            case 99:     // TE_KILLBEAM
                Seek(2);
                break;

            case 100:     // TE_LARGEFUNNEL
                Seek(10);
                break;

            case 101:     // TE_BLOODSTREAM
                Seek(14);
                break;

            case 102:     // TE_SHOWLINE
                Seek(12);
                break;

            case 103:     // TE_BLOOD
                Seek(14);
                break;

            case 104:     // TE_DECAL
                Seek(9);
                break;

            case 105:     // TE_FIZZ
                Seek(5);
                break;

            case 106:     // TE_MODEL
                // WRITE_ANGLE could be a short..
                Seek(17);
                break;

            case 107:     // TE_EXPLODEMODEL
                Seek(13);
                break;

            case 108:     // TE_BREAKMODEL
                Seek(24);
                break;

            case 109:     // TE_GUNSHOTDECAL
                Seek(9);
                break;

            case 110:     // TE_SPRITE_SPRAY
                Seek(17);
                break;

            case 111:     // TE_ARMOR_RICOCHET
                Seek(7);
                break;

            case 112:     // TE_PLAYERDECAL (could be a trailing short after this, apparently...)
                Seek(10);
                break;

            case 113:     // TE_BUBBLES
            case 114:     // TE_BUBBLETRAIL
                Seek(19);
                break;

            case 115:     // TE_BLOODSPRITE
                Seek(12);
                break;

            case 116:     // TE_WORLDDECAL
            case 117:     // TE_WORLDDECALHIGH
                Seek(7);
                break;

            case 118:     // TE_DECALHIGH
                Seek(9);
                break;

            case 119:     // TE_PROJECTILE
                Seek(16);
                break;

            case 120:     // TE_SPRAY
                Seek(18);
                break;

            case 121:     // TE_PLAYERSPRITES
                Seek(5);
                break;

            case 122:     // TE_PARTICLEBURST
                Seek(10);
                break;

            case 123:     // TE_FIREFIELD
                Seek(9);
                break;

            case 124:     // TE_PLAYERATTACHMENT
                Seek(7);
                break;

            case 125:     // TE_KILLPLAYERATTACHMENTS
                Seek(1);
                break;

            case 126:     // TE_MULTIGUNSHOT
                Seek(18);
                break;

            case 127:     // TE_USERTRACER
                Seek(15);
                break;

            default:
                throw new ApplicationException(String.Format("Unknown tempentity type \"{0}\".", type));
            }
        }