public GameplayScreen() { Viewport = new Rectangle(0, 0, 1920, 1080); centerScreen = Viewport.Center; CenterScreenVector2 = centerScreen.ToVector2(); world = new ClientWorldState(); world.CharacterAdded += World_CharacterAdded; network = NetworkEngine.Instance; //networkEngine; network.WorldState = world; worldPump = new WorldPump(); worldPump.State = world; effectManager = new EffectManager(); effectManager.UseDayNightCycle = true; effectManager.DayColor = Color.White; effectManager.NightColor = new Color(.2f, .2f, .4f);//Color.DarkBlue; //inventoryScreen = new InventoryScreen(); //inventoryScreen.ItemUsed += InventoryScreen_ItemUsed; //inventoryScreen.Player = world.PlayerCharacter; }
public void Start() { //this.Status = ServerStatus.Starting; Assembly assembly = Assembly.GetEntryAssembly(); Version ver = assembly.GetName().Version; ConsoleGameServer.WriteLine("LegendServer Version {0}.{1}, Build {2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision); ConsoleGameServer.WriteLine("Running on .NET Framework Version {0}.{1}.{2}", Environment.Version.Major, Environment.Version.Minor, Environment.Version.Build); try { ConsoleGameServer.WriteLine("Starting Data Connection..."); worldDataContext = new ServerWorldDataContext(string.Format(@"http://{0}:{1}/", LegendServer.Properties.Settings.Default.DataServerAddress, LegendServer.Properties.Settings.Default.DataServerPort)); if (!worldDataContext.AuthServer(LegendServer.Properties.Settings.Default.DataServerUsername, LegendServer.Properties.Settings.Default.DataServerPassword)) { throw new Exception("Failed to auth with data server."); } } catch (Exception e) { ConsoleGameServer.WriteLine("Starting Data Connection failed, general Exception occured:"); ConsoleGameServer.WriteLine(e.ToString()); this.WaitOnKeyPress(); return; } finally { ConsoleGameServer.WriteLine("Data Connection Successfull."); } try { ConsoleGameServer.WriteLine("Starting WorldServer..."); worldState = new ServerWorldState(worldDataContext); worldPump = new WorldPump(); worldPump.State = worldState; worldServerTask = Task.Factory.StartNew(() => worldPump.Start()); } catch (Exception se) { ConsoleGameServer.WriteLine("Starting WorldServer failed:"); ConsoleGameServer.WriteLine(se.ToString()); this.WaitOnKeyPress(); return; } finally { ConsoleGameServer.WriteLine("WorldServer running."); //this.Status = ServerStatus.Running; } try { ConsoleGameServer.WriteLine("Starting SocketServer..."); socketServer = new SocketServer(this); //socketServer.Activity += SocketServer_Activity; socketServer.ProcessPacket += SocketServer_ProcessPacket; socketServerTask = Task.Factory.StartNew(() => socketServer.Start()); } catch (SocketException se) { ConsoleGameServer.WriteLine("Starting SocketServer failed:"); ConsoleGameServer.WriteLine(se.ToString()); this.WaitOnKeyPress(); return; } finally { ConsoleGameServer.WriteLine("SocketServer running on port {0}.", SocketServer.Port); //this.Status = ServerStatus.Running; } var returnval = Task.WaitAny(worldServerTask, socketServerTask); worldPump.IsRunning = socketServer.IsRunning = false; //worldPump.State.SaveAndClose(); //Sould be located in DataContex. Game state should not be datalayer aware. socketServer.Close(); //this.Status = ServerStatus.Halting; }