コード例 #1
0
ファイル: Program.cs プロジェクト: ErtyHackward/utopia
        static void Main(string[] args)
        {
            foreach (var arg in args)
            {
                if (arg.ToLower() == "-nolandscapebuffer")
                {
                    Utopia.Shared.World.LandscapeBufferManager.WithoutLandscapeBuffer = true;
                }
                if (arg.ToLower() == "-showdebug")
                {
                    ShowDebug = true;
                }
                if (arg.ToLower() == "-resetsingleplayerworld")
                {
                    DeleteAllSavedGame();
                }
                if (arg.ToLower() == "-640p")
                {
                    StartUpResolution = new System.Drawing.Size(1024, 576);
                }
                if (arg.ToLower() == "-720p")
                {
                    StartUpResolution = new System.Drawing.Size(1280, 720);
                }
                if (arg.ToLower().StartsWith("-lcdefferedmodelvl"))
                {
                    Utopia.UtopiaRender.LCDefferedModeLvl = int.Parse(arg.ToLower().Replace("-lcdefferedmodelvl", ""));
                }
            }
#if DEBUG
            ShowDebug = true;
#endif

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            DllLoadHelper.LoadUmnanagedLibrary("sqlite3.dll");

            using (var main = new GameClient())
            {
                Thread.CurrentThread.Priority = ThreadPriority.Highest;
                main.Run();
            }
        }
コード例 #2
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            EntityFactory.InitializeProtobufInheritanceHierarchy();

            IconManager = new IconManager();

            if (string.IsNullOrEmpty(Settings.Default.UtopiaFolder))
            {
                // we need to have a path to utopia game folder
                var openFileDialog = new OpenFileDialog();

                openFileDialog.Filter = "Realms.exe main file|Realms.exe";
                openFileDialog.Title  = "Editor needs utopia files...";

                if (openFileDialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                Settings.Default.UtopiaFolder = Path.GetDirectoryName(openFileDialog.FileName);
                Settings.Default.Save();
            }

            DllLoadHelper.LoadUmnanagedLibrary("sqlite3.dll");
            IconManager.Initialize(Settings.Default.UtopiaFolder);

            // collect all sound files
            var           baseSoundPath = Path.Combine(Settings.Default.UtopiaFolder);
            List <string> files         = new List <string>();

            files.Add(null);
            files.AddRange(GetFiles(Path.Combine(Settings.Default.UtopiaFolder), "*.wav").Select(f => f.Remove(0, baseSoundPath.Length + 1)));
            files.AddRange(GetFiles(Path.Combine(Settings.Default.UtopiaFolder), "*.wma").Select(f => f.Remove(0, baseSoundPath.Length + 1)));

            ShortSoundSelector.PossibleSound = files.OrderBy(x => x).ToArray();
            SoundList.PossibleSound          = ShortSoundSelector.PossibleSound;
            ModelIcons = new Dictionary <string, Image>();

            Application.Run(new FrmMain());
        }
コード例 #3
0
ファイル: TigerNative.cs プロジェクト: ErtyHackward/sharpdc
 static TigerNative()
 {
     DllLoadHelper.LoadUmnanagedLibrary("Tiger.dll");
 }
コード例 #4
0
ファイル: Program.cs プロジェクト: ErtyHackward/utopia
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            logger.Info("Utopia Realms game server v{1} Protocol: v{0}", ServerConnection.ProtocolVersion, Assembly.GetExecutingAssembly().GetName().Version);

            DllLoadHelper.LoadUmnanagedLibrary("sqlite3.dll");

            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "main.realm");

            if (!File.Exists(path))
            {
                if (args.Length == 0)
                {
                    logger.Fatal("Could not find the realm file. Specify realm configuration file path.");
                    return;
                }

                path = args[0];

                if (!File.Exists(path))
                {
                    logger.Fatal("Could not find the realm file at " + path);
                    return;
                }
            }

            _serverFactory = new EntityFactory();

            EntityFactory.InitializeProtobufInheritanceHierarchy();

            WorldConfiguration conf;

            try
            {
                conf = WorldConfiguration.LoadFromFile(path);
                _serverFactory.Config = conf;
                logger.Info("Realm file {0} loaded", path);
            }
            catch (Exception ex)
            {
                logger.Fatal("Exception when trying to load configuration:\n" + ex.Message);
                return;
            }

            System.Net.ServicePointManager.Expect100Continue = false;

            var    configFileName = "server.config";
            var    port           = 0;
            string desc           = null;

            for (int i = 0; i < args.Length; i++)
            {
                var argument = args[i];
                if (argument == "-conf" && args.Length > i + 1)
                {
                    configFileName = args[i + 1];
                }
                if (argument == "-port" && args.Length > i + 1)
                {
                    port = int.Parse(args[i + 1]);
                }
                if (argument == "-desc" && args.Length > i + 1)
                {
                    desc = args[i + 1];
                }
            }

            _settingsManager = new XmlSettingsManager <ServerSettings>(@"Server\" + configFileName);
            _settingsManager.Load();


            if (port != 0 && _settingsManager.Settings.ServerPort != port)
            {
                _settingsManager.Settings.ServerPort = port;
                _settingsManager.Save();
            }

            if (string.IsNullOrEmpty(_settingsManager.Settings.Seed))
            {
                Console.WriteLine();
                Console.WriteLine("Please enter the seed:");
                Console.Write("> ");
                _settingsManager.Settings.Seed = Console.ReadLine();
                _settingsManager.Save();
            }

            if (string.IsNullOrEmpty(_settingsManager.Settings.ServerName) || _settingsManager.Settings.ServerName == "unnamed server")
            {
                Console.WriteLine();
                Console.WriteLine("Please enter the name of the server:");
                Console.Write("> ");
                _settingsManager.Settings.ServerName = Console.ReadLine();
                _settingsManager.Save();
            }

            if (string.IsNullOrEmpty(_settingsManager.Settings.ServerDescription))
            {
                if (desc != null)
                {
                    _settingsManager.Settings.ServerDescription = desc;
                }
                else
                {
                    Console.WriteLine();
                    Console.WriteLine("Please enter the server description:");
                    Console.Write("> ");
                    _settingsManager.Settings.ServerDescription = Console.ReadLine();
                    _settingsManager.Save();
                }
            }

            var wp = new WorldParameters
            {
                WorldName     = "Utopia",
                SeedName      = _settingsManager.Settings.Seed,
                Configuration = conf
            };

            IocBind(wp);

            _serverWebApi = new ServerWebApi();
            _server       = new ServerCore(
                _settingsManager,
                _worldGenerator,
                new ServerUsersStorage(_sqLiteStorageManager, _serverWebApi),
                _sqLiteStorageManager,
                _sqLiteStorageManager,
                _sqLiteStorageManager,
                _serverFactory,
                wp
                );

            _serverFactory.LandscapeManager     = _server.LandscapeManager;
            _serverFactory.DynamicEntityManager = _server.AreaManager;
            _serverFactory.GlobalStateManager   = _server.GlobalStateManager;
            _serverFactory.ScheduleManager      = _server.Scheduler;
            _serverFactory.ServerSide           = true;

            _gameplay = new ServerGameplayProvider(_server, conf);

            _server.ConnectionManager.Listen();
            _server.LoginManager.PlayerEntityNeeded += LoginManagerPlayerEntityNeeded;
            _server.LoginManager.PlayerLogged       += LoginManager_PlayerLogged;

            _server.UsersStorage.DefaultRole = _server.CustomStorage.GetVariable("DefaultRole", UserRole.Guest);

            // send alive message each 5 minutes
            _reportAliveTimer = new Timer(CommitServerInfo, null, 0, 1000 * 60 * 5);

            _server.EntityManager.LoadNpcs();

            while (Console.ReadLine() != "exit")
            {
                Console.WriteLine("Type 'exit' to quit");
            }

            _server.Dispose();
        }