Esempio n. 1
0
        // Token: 0x0600007E RID: 126 RVA: 0x00005F3C File Offset: 0x0000413C
        private static void BreakdownComponentsInternal(this GameObject obj, int lvl = 0)
        {
            string text = "";

            for (int i = 0; i < lvl; i++)
            {
                text += "\t";
            }
            Tools.Log <string>(text + obj.name + "...");
            foreach (Component component in obj.GetComponents <Component>())
            {
                string str  = text;
                string str2 = "    -";
                Type   type = component.GetType();
                Tools.Log <string>(str + str2 + ((type != null) ? type.ToString() : null));
            }
            foreach (Transform transform in obj.GetComponentsInChildren <Transform>())
            {
                bool flag = transform != obj.transform;
                if (flag)
                {
                    transform.gameObject.BreakdownComponentsInternal(lvl + 1);
                }
            }
        }
Esempio n. 2
0
        public static GenericRoomTable GetSpecialRoomTable()
        {
            foreach (var entry in GameManager.Instance.GlobalInjectionData.entries)
            {
                if (entry.injectionData?.InjectionData != null)
                {
                    foreach (var data in entry.injectionData.InjectionData)
                    {
                        if (data.exactRoom != null)
                        {
                            Tools.Log(data.exactRoom.name);

                            if (data.prerequisites != null)
                            {
                                foreach (var p in data.prerequisites)
                                {
                                    Tools.Log("\t" + p.prerequisiteType);
                                }
                            }

                            if (data.placementRules != null)
                            {
                                foreach (var p in data.placementRules)
                                {
                                    Tools.Log("\t" + p);
                                }
                            }
                        }
                    }
                }
            }
            return(null);
        }
Esempio n. 3
0
        public static GameObject GetClosestShrineObject()
        {
            Tools.Log("a");
            var player = GameManager.Instance.PrimaryPlayer;

            Tools.Log("b");

            var talkers = GameObject.FindObjectsOfType <AdvancedShrineController>();

            Tools.Log("c");
            float dist = float.MaxValue, d;
            AdvancedShrineController closest = null;

            foreach (var talker in talkers)
            {
                Tools.Log("d");
                try
                {
                    d = Vector2.Distance(talker.sprite.WorldCenter, player.sprite.WorldCenter);
                    if (talker && d < dist)
                    {
                        closest = talker;
                        dist    = d;
                    }
                }
                catch { }
            }
            Tools.Log("e");
            Tools.Log(closest);
            return(closest.gameObject);
        }
Esempio n. 4
0
        public static GameObject GetClosestCustomShrineObject()
        {
            Tools.Log("a");
            var player = GameManager.Instance.PrimaryPlayer;

            Tools.Log("b");

            var shrines = GameObject.FindObjectsOfType <ShrineFactory.CustomShrineController>();

            Tools.Log("c");
            float dist = float.MaxValue, d;

            ShrineFactory.CustomShrineController closest = null;
            foreach (var shrine in shrines)
            {
                Tools.Log("d");
                try
                {
                    d = Vector2.Distance(shrine.sprite.WorldCenter, player.sprite.WorldCenter);
                    if (shrine && d < dist)
                    {
                        closest = shrine;
                        dist    = d;
                    }
                }
                catch { }
            }
            Tools.Log("e");
            Tools.Log(closest);
            return(closest.gameObject);
        }
Esempio n. 5
0
        // Token: 0x06000053 RID: 83 RVA: 0x000055AC File Offset: 0x000037AC
        public static DungeonFlow CreateDebugFlow(Dungeon dungeon)
        {
            DungeonFlow dungeonFlow = SampleFlow.CreateEntranceExitFlow(dungeon);

            dungeonFlow.name = "debug_flow";
            DungeonFlowNode dungeonFlowNode = new DungeonFlowNode(dungeonFlow)
            {
                overrideExactRoom = RoomFactory.CreateEmptyRoom(12, 12)
            };
            DungeonFlowNode parent = dungeonFlowNode;

            dungeonFlow.AddNodeToFlow(dungeonFlowNode, dungeonFlow.FirstNode);
            foreach (RoomFactory.RoomData roomData in RoomFactory.rooms.Values)
            {
                string str = "Adding room to flow: ";
                PrototypeDungeonRoom room = roomData.room;
                Tools.Log <string>(str + ((room != null) ? room.ToString() : null));
                DungeonFlowNode dungeonFlowNode2 = new DungeonFlowNode(dungeonFlow)
                {
                    overrideExactRoom = roomData.room
                };
                dungeonFlow.AddNodeToFlow(dungeonFlowNode2, parent);
                dungeonFlowNode = new DungeonFlowNode(dungeonFlow)
                {
                    overrideExactRoom = RoomFactory.CreateEmptyRoom(12, 12)
                };
                dungeonFlow.AddNodeToFlow(dungeonFlowNode, dungeonFlowNode2);
                parent = dungeonFlowNode;
            }
            dungeon = null;
            return(dungeonFlow);
        }
Esempio n. 6
0
        public static PrototypeDungeonRoom GetRoomFromDungeon(string roomName, string floor)
        {
            roomName = roomName.ToLower();
            var rooms = GetRoomsFromRoomTables(floor);

            foreach (var room in rooms)
            {
                Tools.Log(room.name, "roomnames.txt");
                if (room.name.ToLower().Equals(roomName))
                {
                    return(room);
                }
            }
            var nodes = OfficialFlows.GetAllFlowNodes(floor);

            if (nodes == null)
            {
                return(null);
            }
            foreach (var node in nodes)
            {
                var overrideRoom = node.overrideExactRoom;

                if (overrideRoom != null)
                {
                    Tools.Log(overrideRoom.name, "roomnames.txt");
                }
                if (overrideRoom != null && overrideRoom.name.ToLower().Equals(roomName))
                {
                    return(overrideRoom);
                }
            }
            return(null);
        }
Esempio n. 7
0
        public static DungeonFlow CreateDebugFlow(Dungeon dungeon)
        {
            var flow = SampleFlow.CreateEntranceExitFlow(dungeon);

            flow.name = "debug_flow";
            DungeonFlowNode
                customRoom,
                hub = new DungeonFlowNode(flow)
            {
                overrideExactRoom = RoomFactory.CreateEmptyRoom()
            },
                lastNode = hub;

            flow.AddNodeToFlow(hub, flow.FirstNode);
            foreach (var room in RoomFactory.rooms.Values)
            {
                Tools.Log("Adding room to flow: " + room.room);
                customRoom = new DungeonFlowNode(flow)
                {
                    overrideExactRoom = room.room
                };
                flow.AddNodeToFlow(customRoom, lastNode);
                hub = new DungeonFlowNode(flow)
                {
                    overrideExactRoom = RoomFactory.CreateEmptyRoom()
                };
                flow.AddNodeToFlow(hub, customRoom);
                lastNode = hub;
            }
            dungeon = null;
            return(flow);
        }
Esempio n. 8
0
        // Token: 0x0600000C RID: 12 RVA: 0x00003260 File Offset: 0x00001460
        public static void LogProtoRoomData(PrototypeDungeonRoom room)
        {
            int num = 0;

            Tools.LogPropertiesAndFields <PrototypeDungeonRoom>(room, "ROOM");
            foreach (PrototypePlacedObjectData prototypePlacedObjectData in room.placedObjects)
            {
                Tools.Log <string>(string.Format("\n----------------Object #{0}----------------", num++));
                Tools.LogPropertiesAndFields <PrototypePlacedObjectData>(prototypePlacedObjectData, "PLACED OBJECT");
                Tools.LogPropertiesAndFields <DungeonPlaceable>((prototypePlacedObjectData != null) ? prototypePlacedObjectData.placeableContents : null, "PLACEABLE CONTENT");
                bool flag = prototypePlacedObjectData == null;
                DungeonPlaceableVariant obj;
                if (flag)
                {
                    obj = null;
                }
                else
                {
                    DungeonPlaceable placeableContents = prototypePlacedObjectData.placeableContents;
                    obj = ((placeableContents != null) ? placeableContents.variantTiers[0] : null);
                }
                Tools.LogPropertiesAndFields <DungeonPlaceableVariant>(obj, "VARIANT TIERS");
            }
            Tools.Print <string>("==LAYERS==", "FFFFFF", false);
            foreach (PrototypeRoomObjectLayer prototypeRoomObjectLayer in room.additionalObjectLayers)
            {
            }
        }
Esempio n. 9
0
        // Token: 0x06000077 RID: 119 RVA: 0x00005C34 File Offset: 0x00003E34
        public static void Print <T>(T obj, string color = "FFFFFF", bool force = false)
        {
            bool flag = Tools.verbose || force;

            if (flag)
            {
                string[] array = obj.ToString().Split(new char[]
                {
                    '\n'
                });
                foreach (string text in array)
                {
                    Tools.LogToConsole(string.Concat(new string[]
                    {
                        "<color=#",
                        color,
                        ">[",
                        Tools.modID,
                        "] ",
                        text,
                        "</color>"
                    }));
                }
            }
            Tools.Log <string>(obj.ToString());
        }
Esempio n. 10
0
        public static void LoadRoomsFromRoomDirectory()
        {
            string roomDirectory = RoomDirectory();

            Directory.CreateDirectory(roomDirectory);
            foreach (string f in Directory.GetFiles(roomDirectory, "*", SearchOption.AllDirectories))
            {
                if (f.EndsWith(".room", StringComparison.OrdinalIgnoreCase))
                {
                    string name = Path.GetFullPath(f).RemovePrefix(roomDirectory).RemoveSuffix(".room");
                    Tools.Log($"Found room: \"{name}\"");
                    var roomData = BuildFromRoomFile(f);
                    DungeonHandler.Register(roomData);
                    rooms.Add(name, roomData);
                }
                else if (f.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
                {
                    Tools.Log($"Found zipped rooms: \"{f}\"");
                    var roomsData = BuildFromZipFile(f);
                    foreach (var roomData in roomsData)
                    {
                        string name = roomData.room.name;
                        Tools.Log($"Found room: \"{name}\"");
                        DungeonHandler.Register(roomData);
                        rooms.Add(roomData.room.name, roomData);
                    }
                }
            }
        }
Esempio n. 11
0
 public void DumpEnemyDatabase()
 {
     Tools.Print("Dumping enemy database.");
     for (int i = 0; i < EnemyDatabase.Instance.Entries.Count; i++)
     {
         var entry = EnemyDatabase.Instance.Entries[i];
         Tools.Log($"{entry.myGuid}\t{entry.name}\t{i}\t{entry.isNormalEnemy}\t{entry.isInBossTab}", "EnemyDump.txt");
     }
 }
Esempio n. 12
0
        public override void Start()
        {
            try
            {
                GungeonAPI.Init();
                KeyShrine.Add();

                //Enable the debug flow
                ETGModConsole.Commands.AddUnit("debugflow", (args) =>
                {
                    DungeonHandler.debugFlow = !DungeonHandler.debugFlow;
                    string status            = DungeonHandler.debugFlow ? "enabled" : "disabled";
                    string color             = DungeonHandler.debugFlow ? "00FF00" : "FF0000";
                    Tools.Print($"Debug flow {status}", color, true);
                });

                //This is useful for figuring out where you want your shrine to go in the breach
                ETGModConsole.Commands.AddUnit("getpos", (args) =>
                {
                    ETGModConsole.Log("Player position: " + GameManager.Instance.PrimaryPlayer.transform.position);
                    ETGModConsole.Log("Player center: " + GameManager.Instance.PrimaryPlayer.sprite.WorldCenter);
                });

                ETGModConsole.Commands.AddUnit("dissectshrine", (args) =>
                {
                    var c = GetClosestCustomShrineObject();
                    Tools.BreakdownComponents(c);
                    Tools.LogPropertiesAndFields(c.GetComponent <SimpleInteractable>());
                });

                ETGModConsole.Commands.AddUnit("roomname", (args) =>
                {
                    var room = GameManager.Instance.PrimaryPlayer.CurrentRoom;
                    Tools.Print(room.GetRoomName());
                });

                ETGModConsole.Commands.AddUnit("hidehitboxes", (args) => HitboxMonitor.DeleteHitboxDisplays());
                ETGModConsole.Commands.AddUnit("showhitboxes", (args) =>
                {
                    foreach (var obj in GameObject.FindObjectsOfType <SpeculativeRigidbody>())
                    {
                        if (obj && obj.sprite && Vector2.Distance(obj.sprite.WorldCenter, GameManager.Instance.PrimaryPlayer.sprite.WorldCenter) < 8)
                        {
                            Tools.Log(obj?.name);
                            HitboxMonitor.DisplayHitbox(obj);
                        }
                    }
                });

                Tools.Print($"Custom Rooms {VERSION} loaded.", "FF00FF", true);
            }
            catch (Exception e)
            {
                Tools.Print("Failed to load Custom Rooms Mod", "FF0000", true);
                Tools.PrintException(e);
            }
        }
Esempio n. 13
0
 public static void DisplayHitbox(SpeculativeRigidbody speculativeRigidbody)
 {
     PixelCollider collider = speculativeRigidbody.HitboxPixelCollider;
     Tools.Log("Collider Found...");
     if (!speculativeRigidbody.gameObject.GetComponent<HitBoxDisplay>())
         speculativeRigidbody.gameObject.AddComponent<HitBoxDisplay>();
     Tools.Log("Displaying...");
     LogHitboxInfo(collider);
 }
Esempio n. 14
0
        // Token: 0x06000078 RID: 120 RVA: 0x00005CD8 File Offset: 0x00003ED8
        public static void PrintRaw <T>(T obj, bool force = false)
        {
            bool flag = Tools.verbose || force;

            if (flag)
            {
                Tools.LogToConsole(obj.ToString());
            }
            Tools.Log <string>(obj.ToString());
        }
Esempio n. 15
0
        // Token: 0x06000019 RID: 25 RVA: 0x000036B8 File Offset: 0x000018B8
        public static void DisplayHitbox(SpeculativeRigidbody speculativeRigidbody)
        {
            PixelCollider hitboxPixelCollider = speculativeRigidbody.HitboxPixelCollider;

            Tools.Log <string>("Collider Found...");
            bool flag = !speculativeRigidbody.gameObject.GetComponent <HitboxMonitor.HitBoxDisplay>();

            if (flag)
            {
                speculativeRigidbody.gameObject.AddComponent <HitboxMonitor.HitBoxDisplay>();
            }
            Tools.Log <string>("Displaying...");
            HitboxMonitor.LogHitboxInfo(hitboxPixelCollider);
        }
Esempio n. 16
0
        public static RoomData ExtractRoomData(string data)
        {
            int end = data.Length - dataHeader.Length - 1;

            for (int i = end; i > 0; i--)
            {
                string sub = data.Substring(i, dataHeader.Length);
                if (sub.Equals(dataHeader))
                {
                    return(JsonUtility.FromJson <RoomData>(data.Substring(i + dataHeader.Length)));
                }
            }
            Tools.Log($"No room data found at {data}");
            return(new RoomData());
        }
Esempio n. 17
0
        public static RoomData ExtractRoomData(string data)
        {
            int num = (data.Length - dataHeader.Length - 1);

            for (int i = num; i > 0; i--)
            {
                string text = data.Substring(i, dataHeader.Length);
                if (text.Equals(dataHeader))
                {
                    return(JsonUtility.FromJson <RoomData>(data.Substring(i + dataHeader.Length)));
                }
            }
            Tools.Log("No room data found at " + data);
            return(default(RoomData));
        }
Esempio n. 18
0
 public static void AcquirePrototypeRoom(Action <LoopFlowBuilder, BuilderFlowNode> orig, LoopFlowBuilder self, BuilderFlowNode buildData)
 {
     orig(self, buildData);
     if (buildData.assignedPrototypeRoom)
     {
         if (buildData.assignedPrototypeRoom.category != PrototypeDungeonRoom.RoomCategory.NORMAL)
         {
             Tools.LogPropertiesAndFields(buildData.assignedPrototypeRoom, "\n" + buildData.assignedPrototypeRoom.name);
         }
         else
         {
             Tools.Log("======================= NULL =======================\n");
         }
     }
 }
Esempio n. 19
0
 public static void LoadRoomsFromRoomDirectory()
 {
     Directory.CreateDirectory(roomDirectory);
     foreach (string f in Directory.GetFiles(roomDirectory))
     {
         if (!f.EndsWith(".room"))
         {
             continue;
         }
         string name = Path.GetFileName(f);
         Tools.Log($"Found room: \"{name}\"");
         var roomData = BuildFromFile(f);
         DungeonHandler.Register(roomData);
         rooms.Add(name, roomData);
     }
 }
Esempio n. 20
0
 // Token: 0x0600003A RID: 58 RVA: 0x00003A08 File Offset: 0x00001C08
 public static void LoadRoomsFromRoomDirectory()
 {
     Directory.CreateDirectory(RoomFactory.roomDirectory);
     foreach (string text in Directory.GetFiles(RoomFactory.roomDirectory))
     {
         bool flag = !text.EndsWith(".room");
         if (!flag)
         {
             string fileName = Path.GetFileName(text);
             Tools.Log <string>("Found room: \"" + fileName + "\"");
             RoomFactory.RoomData roomData = RoomFactory.BuildFromFile(text);
             DungeonHandler.Register(roomData);
             RoomFactory.rooms.Add(fileName, roomData);
         }
     }
 }
Esempio n. 21
0
        // Token: 0x06000082 RID: 130 RVA: 0x000060B8 File Offset: 0x000042B8
        public static void LogPropertiesAndFields <T>(T obj, string header = "")
        {
            Tools.Log <string>(header);
            Tools.Log <string>("=======================");
            bool flag = obj == null;

            if (flag)
            {
                Tools.Log <string>("LogPropertiesAndFields: Null object");
            }
            else
            {
                Type type = obj.GetType();
                Tools.Log <string>(string.Format("Type: {0}", type));
                PropertyInfo[] properties = type.GetProperties();
                Tools.Log <string>(string.Format("{0} Properties: ", typeof(T)));
                foreach (PropertyInfo propertyInfo in properties)
                {
                    try
                    {
                        object value = propertyInfo.GetValue(obj, null);
                        string text  = value.ToString();
                        bool   flag2 = ((obj != null) ? obj.GetType().GetGenericTypeDefinition() : null) == typeof(List <>);
                        bool   flag3 = flag2;
                        if (flag3)
                        {
                            List <object> list = value as List <object>;
                            text = string.Format("List[{0}]", list.Count);
                            foreach (object obj2 in list)
                            {
                                text = text + "\n\t\t" + obj2.ToString();
                            }
                        }
                        Tools.Log <string>("\t" + propertyInfo.Name + ": " + text);
                    }
                    catch
                    {
                    }
                }
                Tools.Log <string>(string.Format("{0} Fields: ", typeof(T)));
                FieldInfo[] fields = type.GetFields();
                foreach (FieldInfo fieldInfo in fields)
                {
                    Tools.Log <string>(string.Format("\t{0}: {1}", fieldInfo.Name, fieldInfo.GetValue(obj)));
                }
            }
        }
Esempio n. 22
0
 public static WeightedRoom SelectByWeight(Func <WeightedRoomCollection, WeightedRoom> orig, WeightedRoomCollection self)
 {
     try
     {
         if (!seenTables.Contains(self))
         {
             //Tools.Log(self.name, "RoomTables/" + self.name + ".txt");
             foreach (var wroom in self.elements)
             {
                 Tools.Log(wroom.room.name, "RoomTables/" + seenTables.Count + ".txt");
             }
             seenTables.Add(self);
         }
     }catch (Exception e)
     {
         Tools.PrintException(e);
     }
     return(orig(self));
 }
Esempio n. 23
0
        public static void LogProtoRoomData(PrototypeDungeonRoom room)
        {
            int i = 0;

            Tools.LogPropertiesAndFields(room, "ROOM");
            foreach (var placedObject in room.placedObjects)
            {
                Tools.Log($"\n----------------Object #{i++}----------------");
                Tools.LogPropertiesAndFields(placedObject, "PLACED OBJECT");
                Tools.LogPropertiesAndFields(placedObject?.placeableContents, "PLACEABLE CONTENT");
                Tools.LogPropertiesAndFields(placedObject?.placeableContents?.variantTiers[0], "VARIANT TIERS");
            }

            Tools.Print("==LAYERS==");
            foreach (var layer in room.additionalObjectLayers)
            {
                //Tools.LogPropertiesAndFields(layer);
            }
        }
Esempio n. 24
0
        public static void StraightLine()
        {
            try
            {
                Vector2[] enemyPositions = new Vector2[100];
                string[]  enemyGuids     = new string[100];
                int[]     enemyLayers    = new int[100];
                for (int i = 0; i < enemyGuids.Length; i++)
                {
                    var db = EnemyDatabase.Instance.Entries;
                    int r  = Random.Range(0, db.Count);
                    enemyGuids[i]     = db[r].encounterGuid;
                    enemyPositions[i] = new Vector2(i * 2, 10);
                    enemyLayers[i]    = 0;
                }

                Vector2[] exits = new Vector2[]
                {
                    new Vector2(0, 9),
                    new Vector2(200, 9),
                };

                string[] dirs = new string[]
                {
                    "WEST", "EAST"
                };

                RoomData data = new RoomData()
                {
                    enemyPositions           = enemyPositions,
                    enemyGUIDs               = enemyGuids,
                    enemyReinforcementLayers = enemyLayers,
                    exitPositions            = exits,
                    exitDirections           = dirs,
                };
                Tools.Log("Data to JSON: " + JsonUtility.ToJson(data));
            }
            catch (Exception e)
            {
                Tools.PrintException(e);
            }
        }
Esempio n. 25
0
        // Token: 0x06000028 RID: 40 RVA: 0x00003CA8 File Offset: 0x00001EA8
        public static PrototypeDungeonRoom GetRoomFromDungeon(string roomName, string floor)
        {
            roomName = roomName.ToLower();
            List <PrototypeDungeonRoom> roomsFromRoomTables = OfficialFlows.GetRoomsFromRoomTables(floor);

            foreach (PrototypeDungeonRoom prototypeDungeonRoom in roomsFromRoomTables)
            {
                Tools.Log <string>(prototypeDungeonRoom.name, "roomnames.txt");
                bool flag = prototypeDungeonRoom.name.ToLower().Equals(roomName);
                if (flag)
                {
                    return(prototypeDungeonRoom);
                }
            }
            List <DungeonFlowNode> allFlowNodes = OfficialFlows.GetAllFlowNodes(floor);
            bool flag2 = allFlowNodes == null;
            PrototypeDungeonRoom result;

            if (flag2)
            {
                result = null;
            }
            else
            {
                foreach (DungeonFlowNode dungeonFlowNode in allFlowNodes)
                {
                    PrototypeDungeonRoom overrideExactRoom = dungeonFlowNode.overrideExactRoom;
                    bool flag3 = overrideExactRoom != null;
                    if (flag3)
                    {
                        Tools.Log <string>(overrideExactRoom.name, "roomnames.txt");
                    }
                    bool flag4 = overrideExactRoom != null && overrideExactRoom.name.ToLower().Equals(roomName);
                    if (flag4)
                    {
                        return(overrideExactRoom);
                    }
                }
                result = null;
            }
            return(result);
        }
Esempio n. 26
0
 // Token: 0x06000079 RID: 121 RVA: 0x00005D18 File Offset: 0x00003F18
 public static void PrintError <T>(T obj, string color = "FF0000")
 {
     string[] array = obj.ToString().Split(new char[]
     {
         '\n'
     });
     foreach (string text in array)
     {
         Tools.LogToConsole(string.Concat(new string[]
         {
             "<color=#",
             color,
             ">[",
             Tools.modID,
             "] ",
             text,
             "</color>"
         }));
     }
     Tools.Log <string>(obj.ToString());
 }
Esempio n. 27
0
 // Token: 0x06000050 RID: 80 RVA: 0x00004840 File Offset: 0x00002A40
 public static void StraightLine()
 {
     try
     {
         Vector2[] array  = new Vector2[100];
         string[]  array2 = new string[100];
         int[]     array3 = new int[100];
         for (int i = 0; i < array2.Length; i++)
         {
             List <EnemyDatabaseEntry> entries = EnemyDatabase.Instance.Entries;
             int index = UnityEngine.Random.Range(0, entries.Count);
             array2[i] = entries[index].encounterGuid;
             array[i]  = new Vector2((float)(i * 2), 10f);
             array3[i] = 0;
         }
         Vector2[] exitPositions = new Vector2[]
         {
             new Vector2(0f, 9f),
             new Vector2(200f, 9f)
         };
         string[] exitDirections = new string[]
         {
             "WEST",
             "EAST"
         };
         RoomFactory.RoomData roomData = new RoomFactory.RoomData
         {
             enemyPositions           = array,
             enemyGUIDs               = array2,
             enemyReinforcementLayers = array3,
             exitPositions            = exitPositions,
             exitDirections           = exitDirections
         };
         Tools.Log <string>("Data to JSON: " + JsonUtility.ToJson(roomData));
     }
     catch (Exception e)
     {
         Tools.PrintException(e, "FF0000");
     }
 }
Esempio n. 28
0
        public static IEnumerable <RoomData> BuildFromZipFile(string zipFilePath)
        {
            if (!ZipFile.IsZipFile(zipFilePath))
            {
                Tools.Log($"Not a valid zip file!");
                yield break;
            }
            using (var zipFile = ZipFile.Read(zipFilePath))
            {
                //Tools.PrintNoID("did it work?");
                foreach (var entry in zipFile.Entries)
                {
                    var fileName  = Path.GetFileNameWithoutExtension(entry.FileName);
                    var extension = Path.GetExtension(entry.FileName);
                    if (!string.Equals(extension, ".room", StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }

                    byte[] zipData;
                    int    capacity = (int)entry.UncompressedSize;
                    if (capacity < 0)
                    {
                        continue;
                    }

                    using (var ms = new MemoryStream(capacity))
                    {
                        entry.Extract(ms);
                        zipData = ms.ToArray();
                    }

                    var texture  = ResourceExtractor.BytesToTexture(zipData, fileName);
                    var roomData = ExtractRoomDataFromBytes(zipData);
                    roomData.room = Build(texture, roomData);

                    yield return(roomData);
                }
            }
        }
Esempio n. 29
0
        // Token: 0x0600007A RID: 122 RVA: 0x00005DB0 File Offset: 0x00003FB0
        public static void PrintException(Exception e, string color = "FF0000")
        {
            string text = e.Message + "\n" + e.StackTrace;

            string[] array = text.Split(new char[]
            {
                '\n'
            });
            foreach (string text2 in array)
            {
                Tools.LogToConsole(string.Concat(new string[]
                {
                    "<color=#",
                    color,
                    ">[",
                    Tools.modID,
                    "] ",
                    text2,
                    "</color>"
                }));
            }
            Tools.Log <string>(e.Message);
            Tools.Log <string>("\t" + e.StackTrace);
        }