예제 #1
0
        public static void save()
        {
            River river = new River(Level.info.path + "/Environment/Roads.dat", false);

            river.writeByte(LevelRoads.SAVEDATA_ROADS_VERSION);
            river.writeByte((byte)LevelRoads.materials.Length);
            byte b = 0;

            while ((int)b < LevelRoads.materials.Length)
            {
                river.writeSingle(LevelRoads.materials[(int)b].width);
                river.writeSingle(LevelRoads.materials[(int)b].height);
                river.writeSingle(LevelRoads.materials[(int)b].depth);
                river.writeSingle(LevelRoads.materials[(int)b].offset);
                river.writeBoolean(LevelRoads.materials[(int)b].isConcrete);
                b += 1;
            }
            river.closeRiver();
            river = new River(Level.info.path + "/Environment/Paths.dat", false);
            river.writeByte(LevelRoads.SAVEDATA_PATHS_VERSION);
            ushort num  = 0;
            ushort num2 = 0;

            while ((int)num2 < LevelRoads.roads.Count)
            {
                if (LevelRoads.roads[(int)num2].joints.Count > 1)
                {
                    num += 1;
                }
                num2 += 1;
            }
            river.writeUInt16(num);
            byte b2 = 0;

            while ((int)b2 < LevelRoads.roads.Count)
            {
                List <RoadJoint> joints = LevelRoads.roads[(int)b2].joints;
                if (joints.Count > 1)
                {
                    river.writeUInt16((ushort)joints.Count);
                    river.writeByte(LevelRoads.roads[(int)b2].material);
                    river.writeBoolean(LevelRoads.roads[(int)b2].isLoop);
                    ushort num3 = 0;
                    while ((int)num3 < joints.Count)
                    {
                        RoadJoint roadJoint = joints[(int)num3];
                        river.writeSingleVector3(roadJoint.vertex);
                        river.writeSingleVector3(roadJoint.getTangent(0));
                        river.writeSingleVector3(roadJoint.getTangent(1));
                        river.writeByte((byte)roadJoint.mode);
                        river.writeSingle(roadJoint.offset);
                        river.writeBoolean(roadJoint.ignoreTerrain);
                        num3 += 1;
                    }
                }
                b2 += 1;
            }
            river.closeRiver();
        }
예제 #2
0
        public static void save()
        {
            River river = new River(Level.info.path + "/Spawns/Vehicles.dat", false);

            river.writeByte(LevelVehicles.SAVEDATA_VERSION);
            river.writeByte((byte)LevelVehicles.tables.Count);
            byte b = 0;

            while ((int)b < LevelVehicles.tables.Count)
            {
                VehicleTable vehicleTable = LevelVehicles.tables[(int)b];
                river.writeColor(vehicleTable.color);
                river.writeString(vehicleTable.name);
                river.writeUInt16(vehicleTable.tableID);
                river.writeByte((byte)vehicleTable.tiers.Count);
                byte b2 = 0;
                while ((int)b2 < vehicleTable.tiers.Count)
                {
                    VehicleTier vehicleTier = vehicleTable.tiers[(int)b2];
                    river.writeString(vehicleTier.name);
                    river.writeSingle(vehicleTier.chance);
                    river.writeByte((byte)vehicleTier.table.Count);
                    byte b3 = 0;
                    while ((int)b3 < vehicleTier.table.Count)
                    {
                        VehicleSpawn vehicleSpawn = vehicleTier.table[(int)b3];
                        river.writeUInt16(vehicleSpawn.vehicle);
                        b3 += 1;
                    }
                    b2 += 1;
                }
                b += 1;
            }
            river.writeUInt16((ushort)LevelVehicles.spawns.Count);
            for (int i = 0; i < LevelVehicles.spawns.Count; i++)
            {
                VehicleSpawnpoint vehicleSpawnpoint = LevelVehicles.spawns[i];
                river.writeByte(vehicleSpawnpoint.type);
                river.writeSingleVector3(vehicleSpawnpoint.point);
                river.writeByte(MeasurementTool.angleToByte(vehicleSpawnpoint.angle));
            }
            river.closeRiver();
        }
예제 #3
0
        public static void save()
        {
            River river = new River(Level.info.path + "/Spawns/Fauna.dat", false);

            river.writeByte(LevelAnimals.SAVEDATA_VERSION);
            river.writeByte((byte)LevelAnimals.tables.Count);
            byte b = 0;

            while ((int)b < LevelAnimals.tables.Count)
            {
                AnimalTable animalTable = LevelAnimals.tables[(int)b];
                river.writeColor(animalTable.color);
                river.writeString(animalTable.name);
                river.writeUInt16(animalTable.tableID);
                river.writeByte((byte)animalTable.tiers.Count);
                byte b2 = 0;
                while ((int)b2 < animalTable.tiers.Count)
                {
                    AnimalTier animalTier = animalTable.tiers[(int)b2];
                    river.writeString(animalTier.name);
                    river.writeSingle(animalTier.chance);
                    river.writeByte((byte)animalTier.table.Count);
                    byte b3 = 0;
                    while ((int)b3 < animalTier.table.Count)
                    {
                        AnimalSpawn animalSpawn = animalTier.table[(int)b3];
                        river.writeUInt16(animalSpawn.animal);
                        b3 += 1;
                    }
                    b2 += 1;
                }
                b += 1;
            }
            river.writeUInt16((ushort)LevelAnimals.spawns.Count);
            for (int i = 0; i < LevelAnimals.spawns.Count; i++)
            {
                AnimalSpawnpoint animalSpawnpoint = LevelAnimals.spawns[i];
                river.writeByte(animalSpawnpoint.type);
                river.writeSingleVector3(animalSpawnpoint.point);
            }
            river.closeRiver();
        }
예제 #4
0
        public static void save()
        {
            River river = new River(Level.info.path + "/Environment/Bounds.dat", false);

            river.writeByte(LevelNavigation.SAVEDATA_BOUNDS_VERSION);
            river.writeByte((byte)LevelNavigation.bounds.Count);
            byte b = 0;

            while ((int)b < LevelNavigation.bounds.Count)
            {
                river.writeSingleVector3(LevelNavigation.bounds[(int)b].center);
                river.writeSingleVector3(LevelNavigation.bounds[(int)b].size);
                b += 1;
            }
            river.closeRiver();
            River river2 = new River(Level.info.path + "/Environment/Flags_Data.dat", false);

            river2.writeByte(LevelNavigation.SAVEDATA_FLAG_DATA_VERSION);
            river2.writeByte((byte)LevelNavigation.flagData.Count);
            byte b2 = 0;

            while ((int)b2 < LevelNavigation.flagData.Count)
            {
                river2.writeString(LevelNavigation.flagData[(int)b2].difficultyGUID);
                river2.writeByte(LevelNavigation.flagData[(int)b2].maxZombies);
                river2.writeBoolean(LevelNavigation.flagData[(int)b2].spawnZombies);
                b2 += 1;
            }
            river2.closeRiver();
            River river3 = new River(Level.info.path + "/Environment/Flags.dat", false);

            river3.writeByte(LevelNavigation.SAVEDATA_FLAGS_VERSION);
            int num = LevelNavigation.flags.Count;

            while (ReadWrite.fileExists(string.Concat(new object[]
            {
                Level.info.path,
                "/Environment/Navigation_",
                num,
                ".dat"
            }), false, false))
            {
                ReadWrite.deleteFile(string.Concat(new object[]
                {
                    Level.info.path,
                    "/Environment/Navigation_",
                    num,
                    ".dat"
                }), false, false);
                num++;
            }
            river3.writeByte((byte)LevelNavigation.flags.Count);
            byte b3 = 0;

            while ((int)b3 < LevelNavigation.flags.Count)
            {
                Flag flag = LevelNavigation.flags[(int)b3];
                river3.writeSingleVector3(flag.point);
                river3.writeSingle(flag.width);
                river3.writeSingle(flag.height);
                if (flag.needsNavigationSave)
                {
                    River river4 = new River(string.Concat(new object[]
                    {
                        Level.info.path,
                        "/Environment/Navigation_",
                        b3,
                        ".dat"
                    }), false);
                    river4.writeByte(LevelNavigation.SAVEDATA_NAVIGATION_VERSION);
                    RecastGraph graph = flag.graph;
                    river4.writeSingleVector3(graph.forcedBoundsCenter);
                    river4.writeSingleVector3(graph.forcedBoundsSize);
                    river4.writeByte((byte)graph.tileXCount);
                    river4.writeByte((byte)graph.tileZCount);
                    RecastGraph.NavmeshTile[] tiles = graph.GetTiles();
                    for (int i = 0; i < graph.tileZCount; i++)
                    {
                        for (int j = 0; j < graph.tileXCount; j++)
                        {
                            RecastGraph.NavmeshTile navmeshTile = tiles[j + i * graph.tileXCount];
                            river4.writeUInt16((ushort)navmeshTile.tris.Length);
                            for (int k = 0; k < navmeshTile.tris.Length; k++)
                            {
                                river4.writeUInt16((ushort)navmeshTile.tris[k]);
                            }
                            river4.writeUInt16((ushort)navmeshTile.verts.Length);
                            for (int l = 0; l < navmeshTile.verts.Length; l++)
                            {
                                Int3 @int = navmeshTile.verts[l];
                                river4.writeInt32(@int.x);
                                river4.writeInt32(@int.y);
                                river4.writeInt32(@int.z);
                            }
                        }
                    }
                    river4.closeRiver();
                    flag.needsNavigationSave = false;
                }
                b3 += 1;
            }
            river3.closeRiver();
        }
예제 #5
0
        // Token: 0x06002561 RID: 9569 RVA: 0x000D93E4 File Offset: 0x000D77E4
        public static void save()
        {
            River river = new River(Level.info.path + "/Environment/Nodes.dat", false);

            river.writeByte(LevelNodes.SAVEDATA_VERSION);
            byte   b   = 0;
            ushort num = 0;

            while ((int)num < LevelNodes.nodes.Count)
            {
                if (LevelNodes.nodes[(int)num].type != ENodeType.LOCATION || ((LocationNode)LevelNodes.nodes[(int)num]).name.Length > 0)
                {
                    b += 1;
                }
                num += 1;
            }
            river.writeByte(b);
            byte b2 = 0;

            while ((int)b2 < LevelNodes.nodes.Count)
            {
                if (LevelNodes.nodes[(int)b2].type != ENodeType.LOCATION || ((LocationNode)LevelNodes.nodes[(int)b2]).name.Length > 0)
                {
                    river.writeSingleVector3(LevelNodes.nodes[(int)b2].point);
                    river.writeByte((byte)LevelNodes.nodes[(int)b2].type);
                    if (LevelNodes.nodes[(int)b2].type == ENodeType.LOCATION)
                    {
                        river.writeString(((LocationNode)LevelNodes.nodes[(int)b2]).name);
                    }
                    else if (LevelNodes.nodes[(int)b2].type == ENodeType.SAFEZONE)
                    {
                        river.writeSingle(((SafezoneNode)LevelNodes.nodes[(int)b2]).radius);
                        river.writeBoolean(((SafezoneNode)LevelNodes.nodes[(int)b2]).isHeight);
                        river.writeBoolean(((SafezoneNode)LevelNodes.nodes[(int)b2]).noWeapons);
                        river.writeBoolean(((SafezoneNode)LevelNodes.nodes[(int)b2]).noBuildables);
                    }
                    else if (LevelNodes.nodes[(int)b2].type == ENodeType.PURCHASE)
                    {
                        river.writeSingle(((PurchaseNode)LevelNodes.nodes[(int)b2]).radius);
                        river.writeUInt16(((PurchaseNode)LevelNodes.nodes[(int)b2]).id);
                        river.writeUInt32(((PurchaseNode)LevelNodes.nodes[(int)b2]).cost);
                    }
                    else if (LevelNodes.nodes[(int)b2].type == ENodeType.ARENA)
                    {
                        river.writeSingle(((ArenaNode)LevelNodes.nodes[(int)b2]).radius);
                    }
                    else if (LevelNodes.nodes[(int)b2].type == ENodeType.DEADZONE)
                    {
                        river.writeSingle(((DeadzoneNode)LevelNodes.nodes[(int)b2]).radius);
                    }
                    else if (LevelNodes.nodes[(int)b2].type == ENodeType.AIRDROP)
                    {
                        river.writeUInt16(((AirdropNode)LevelNodes.nodes[(int)b2]).id);
                    }
                    else if (LevelNodes.nodes[(int)b2].type == ENodeType.EFFECT)
                    {
                        river.writeByte((byte)((EffectNode)LevelNodes.nodes[(int)b2]).shape);
                        river.writeSingle(((EffectNode)LevelNodes.nodes[(int)b2]).radius);
                        river.writeSingleVector3(((EffectNode)LevelNodes.nodes[(int)b2]).bounds);
                        river.writeUInt16(((EffectNode)LevelNodes.nodes[(int)b2]).id);
                        river.writeBoolean(((EffectNode)LevelNodes.nodes[(int)b2]).noWater);
                        river.writeBoolean(((EffectNode)LevelNodes.nodes[(int)b2]).noLighting);
                    }
                }
                b2 += 1;
            }
            river.closeRiver();
        }