public void Run()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
// This intial query is needed to warm up the database
using (var context = new GameDatabaseContext())
{
List<UserAccount> accounts = context.Accounts.Where(x => x.IsOnline).ToList();
accounts.ForEach(x => x.IsOnline = false);
context.SaveChanges();
}
Log.Info("GameServer.Run");
List<IManager> managers = new List<IManager>();
managers.Add(new ChatManager());
managers.Add(new ZoneManager());
managers.Add(new ContentManager(root: PathHelper.AssetBasePath));
managers.Add(new NetworkManager(port: 1234));
managers.Add(new PowerManager());
managers.Add(new AttributeRepository());
foreach (IManager manager in managers)
{
manager.Initialize();
}
NetworkManager.Current.Connected += OnConnection;
NetworkManager.Current.PacketRecieved += OnPacketRecieved;
NetworkManager.Current.Disconnected += OnDisconnected;
// Test data only
var testZone = new Zone();
testZone.Name = "Island";
ZoneManager.Current.Zones.Add(testZone);
testZone.World.GameObjects.Add(GameObjectFactory.CreateMap(testZone, "Maps/Island.json"));
testZone.World.GameObjects.Add(GameObjectFactory.CreateSkeleton(testZone, new Utils.Math.Vector2(6 * 32, 3 * 32)));
// Start our stopwatch
_stopwatch.Start();
while (true)
{
Tick();
Thread.Sleep(100); // sleep until we have proper game loop
}
}