public static GameData LoadFromAssembly(string filepath)
        {
            if (!File.Exists(filepath))
            {
                filepath = Path.Combine(ROOTDIR, filepath);
                if (!File.Exists(filepath))
                {
                    throw new Exception($"File {filepath} does not exist!");
                }
            }
            Console.WriteLine($"Loading assembly: \"{filepath}\"");
            // System.Threading.Thread.Sleep(-1);

            var re = new GameDataCollector();

            var ass = Assembly.UnsafeLoadFrom(filepath);

            foreach (var target in ass.GetTypes())
            {
                if (target.IsAbstract || target.IsSealed)
                {
                    continue;
                }
                re.Add(target);
            }

#if sdebug
            print_ids(re);
#endif

            //Register.Loaded = true;
            return(new GameData(re));
        }
        static void print_ids(GameDataCollector re)
        {
            Console.WriteLine("Modificators:");
            foreach (var m in re.Modificators)
            {
                line(m);
            }
            Console.WriteLine();

            Console.WriteLine("Spells:");
            foreach (var m in re.Spells)
            {
                line(m);
            }
            Console.WriteLine();

            Console.WriteLine("Minions:");
            foreach (var m in re.Minions)
            {
                line(m);
            }
            Console.WriteLine();

            void line(Type m)
            {
                Console.WriteLine($"[{(int)m.GetField("id", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null)}] {m.Name}");
            }
        }
        internal GameData(GameDataCollector c)
        {
            Spells  = c.Spells.ToArray();
            Minions = c.Minions.ToArray();
            Heroes  = c.Heroes.ToArray();

            Modificators = c.Modificators.ToArray();
            RandomEvents = c.RandomEvents.ToArray();

            Players = c.Players.ToArray();

            Reg = c.Registry;
        }