namespace Supercell.Laser.Server { using Supercell.Laser.Logic.Data; using Supercell.Laser.Logic.Listener; using Supercell.Laser.Server.Database; using Supercell.Laser.Server.Logic; using Supercell.Laser.Server.Logic.Game; using Supercell.Laser.Server.Message; using Supercell.Laser.Server.Networking; using Supercell.Laser.Server.Networking.Session; using Supercell.Laser.Server.PlayerMapUtils; using Supercell.Laser.Server.Settings; using Npgsql; internal static class Resources { /// /// Initializes the databases /// public static void InitDatabase() { Accounts.Init(Configuration.Instance.DatabaseUsername, Configuration.Instance.DatabasePassword); Alliances.Init(Configuration.Instance.DatabaseUsername, Configuration.Instance.DatabasePassword); // Fix: PlayerMapManager.Init нигде не вызывался, из-за чего его статический // _cache оставался null и GetPlayerMap падал с NullReferenceException // при первом же обращении (см. PlayerMapManager.cs:126). var playerMapConnectionString = new NpgsqlConnectionStringBuilder { Host = "localhost", Username = Configuration.Instance.DatabaseUsername, Password = Configuration.Instance.DatabasePassword, Database = Configuration.Instance.DatabaseName, Pooling = true, MaxPoolSize = 100, MinPoolSize = 5 }.ToString(); PlayerMapManager.Init(playerMapConnectionString); //Accounts.TruncateAll(); } /// /// Initializes the logic part of server /// public static void InitLogic() { // Fingerprint.Load(); DataTables.Load(false); Events.Init(); Sessions.Init(); Leaderboards.Init(); Battles.Init(); Matchmaking.Init(); Teams.Init(); Promocodes.Init(); // _ = Supercell.Laser.Bot.Program.StartAsync(); } /// /// Initializes the network part of server /// public static void InitNetwork() { Processor.Init(); Connections.Init(); LogicServerListener.Instance = new ServerListener(); TCPGateway.Init("0.0.0.0", 9339); UDPGateway.Init("0.0.0.0", Configuration.Instance.UdpPort); } } }