Example #1
0
        private List <DEM_Type> ParseSection2SubEntry(int offset, int count)
        {
            List <DEM_Type> subEntries = new List <DEM_Type>();

            for (int i = 0; i < count; i++)
            {
                DEM_Type subEntry = new DEM_Type();

                subEntry.I_00   = BitConverter.ToInt32(rawBytes, offset + 0);
                subEntry.I_04   = DEM_Type.GetDemoDataType(BitConverter.ToUInt16(rawBytes, offset + 4), BitConverter.ToUInt16(rawBytes, offset + 6), BitConverter.ToInt32(rawBytes, offset + 12));
                subEntry.Offset = BitConverter.ToInt32(rawBytes, offset + 16);
                int pointerCount  = BitConverter.ToInt32(rawBytes, offset + 12);
                int pointerOffset = BitConverter.ToInt32(rawBytes, offset + 16);
                subEntry = ParseTypes(subEntry.I_04, subEntry, pointerOffset, BitConverter.ToUInt16(rawBytes, offset + 4), BitConverter.ToUInt16(rawBytes, offset + 6), BitConverter.ToInt32(rawBytes, offset + 12));
                subEntries.Add(subEntry);
                offset += 32;
            }

            return(subEntries);
        }
Example #2
0
        private DEM_Type ParseTypes(DEM_Type.DemoDataTypes demoType, DEM_Type subEntry, int offset, int type1, int type2, int count)
        {
            switch (demoType)
            {
            case DEM_Type.DemoDataTypes.Type0_1_6:
                subEntry.Type0_1_6 = Type0_1_6.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.FadeInOut:
                subEntry.Type0_2_7 = Type0_2_7.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type0_3_8:
                subEntry.Type0_3_8 = Type0_3_8.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type0_16_1:
                subEntry.Type0_16_1 = Type0_16_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type0_19_1:
                subEntry.Type0_19_1 = Type0_19_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type0_20_2:
                subEntry.Type0_20_2 = Type0_20_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type0_21_2:
                subEntry.Type0_21_2 = Type0_21_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_1_5:
                subEntry.Type1_1_5 = Type1_1_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_1_9:
                subEntry.Type1_1_9 = Type1_1_9.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_2_3:
                subEntry.Type1_2_3 = Type1_2_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_2_5:
                subEntry.Type1_2_5 = Type1_2_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Transformation:
                subEntry.Type1_4_2 = Type1_4_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_6_4:
                subEntry.Type1_6_4 = Type1_6_4.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_7_1:
                subEntry.Type1_7_1 = Type1_7_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_8_6:
                subEntry.Type1_8_6 = Type1_8_6.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_11_2:
                subEntry.Type1_11_2 = Type1_11_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_12_2:
                subEntry.Type1_12_2 = Type1_12_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_13_10:
                subEntry.Type1_13_10 = Type1_13_10.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_14_1:
                subEntry.Type1_14_1 = Type1_14_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_16_2:
                subEntry.Type1_16_2 = Type1_16_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_20_12:
                subEntry.Type1_20_12 = Type1_20_12.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_26_2:
                subEntry.Type1_26_2 = Type1_26_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_27_2:
                subEntry.Type1_27_2 = Type1_27_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.AnimationSmall:
                subEntry.Type1_0_9 = Type1_0_9.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Animation:
                subEntry.Type1_0_10 = Type1_0_10.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.ActorVisibility:
                subEntry.Type1_3_2 = Type1_3_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.ActorDamage:
                subEntry.Type1_9_5 = Type1_9_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_10_8:
                subEntry.Type1_10_8 = Type1_10_8.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_17_6:
                subEntry.Type1_17_6 = Type1_17_6.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type1_19_3:
                subEntry.Type1_19_3 = Type1_19_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Camera:
                subEntry.Type2_0_1 = Type2_0_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type2_6_3:
                subEntry.Type2_6_3 = Type2_6_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type2_7_5:
                subEntry.Type2_7_5 = Type2_7_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type2_7_8:
                subEntry.Type2_7_8 = Type2_7_8.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type2_9_2:
                subEntry.Type2_9_2 = Type2_9_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type2_10_2:
                subEntry.Type2_10_2 = Type2_10_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type2_11_1:
                subEntry.Type2_11_1 = Type2_11_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type3_0_1:
                subEntry.Type3_0_1 = Type3_0_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type3_1_1:
                subEntry.Type3_1_1 = Type3_1_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type3_2_1:
                subEntry.Type3_2_1 = Type3_2_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type3_3_1:
                subEntry.Type3_3_1 = Type3_3_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type3_4_2:
                subEntry.Type3_4_2 = Type3_4_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type4_2_3:
                subEntry.Type4_2_3 = Type4_2_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type4_3_5:
                subEntry.Type4_3_5 = Type4_3_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type4_4_1:
                subEntry.Type4_4_1 = Type4_4_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Effect:
                subEntry.Type4_0_12 = Type4_0_12.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.ScreenEffect:
                subEntry.Type4_1_8 = Type4_1_8.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type5_0_2:
                subEntry.Type5_0_2 = Type5_0_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type5_1_2:
                subEntry.Type5_1_2 = Type5_1_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Sound:
                subEntry.Type5_0_3 = Type5_0_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Music:
                subEntry.Type5_2_3 = Type5_2_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type5_3_2:
                subEntry.Type5_3_2 = Type5_3_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type5_4_3:
                subEntry.Type5_4_3 = Type5_4_3.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type6_0_1:
                subEntry.Type6_0_1 = Type6_0_1.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.DistanceFocus:
                subEntry.Type6_16_6 = Type6_16_6.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.SpmControl:
                subEntry.Type6_17_19 = Type6_17_19.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type6_18_7:
                subEntry.Type6_18_7 = Type6_18_7.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type6_19_15:
                subEntry.Type6_19_15 = Type6_19_15.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type6_20_2:
                subEntry.Type6_20_2 = Type6_20_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type7_0_5:
                subEntry.Type7_0_5 = Type7_0_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.YearDisplay:
                subEntry.Type9_0_2 = Type9_0_2.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type9_1_5:
                subEntry.Type9_1_5 = Type9_1_5.Read(rawBytes, bytes, offset);
                break;

            case DEM_Type.DemoDataTypes.Type0_17_0:
            case DEM_Type.DemoDataTypes.Type9_8_0:
            case DEM_Type.DemoDataTypes.Type0_16_0:
                //No values
                break;

            default:
                //Console.WriteLine(String.Format("Unknown DEM_Type: {0}_{1}_{2} (offset={3})", type1, type2, count, offset));
                //Console.Read();
                //break;
                throw new Exception(String.Format("Unknown DEM_Type: {0}_{1}_{2} (offset={3})", type1, type2, count, offset));
            }

            return(subEntry);
        }