示例#1
0
        public static void Main()
        {
            // buggy need to find a beter way
            //// Console.CancelKeyPress += Console_CancelKeyPress;

            PrintHeader();

            LogQueue = new ConcurrentQueue <LogEntry>();
            Settings = LoadConfigFile();

            SetupLogging();

            UpdateConnectedClientCount();

            if (Settings == null)
            {
                Console.ReadKey();
            }
            else if (!Directory.Exists(Settings.MmapsFolder))
            {
                LogQueue.Enqueue(new LogEntry($"MMAP folder missing, edit folder in config.json...", ConsoleColor.Red, string.Empty, LogLevel.ERROR));
                Console.ReadKey();
            }
            else
            {
                Settings.MmapsFolder = Settings.MmapsFolder.Replace('/', '\\');
                AmeisenNav           = new AmeisenNav(Settings.MmapsFolder, Settings.MaxPolyPathCount, Settings.MaxPointPathCount);

                if (Settings.PreloadMaps.Length > 0)
                {
                    PreloadMaps();
                }

                TcpListener = new TcpListener(IPAddress.Parse(Settings.IpAddress), Settings.Port);
                TcpListener.Start();

                LogQueue.Enqueue(new LogEntry($"Listening on {Settings.IpAddress}:{Settings.Port} press Ctrl + C to exit...", ConsoleColor.Green, string.Empty, LogLevel.MASTER));

                EnterServerLoop();

                // cleanup after server stopped
                AmeisenNav.Dispose();
            }
        }
示例#2
0
        private static void Main(string[] args)
        {
            Console.Title = "AmeisenNavigation Server";
            Console.WriteLine($"-> AmeisenNavigation Server");
            Console.WriteLine($">> Loading config from: {settingsPath}");

            Settings settings = new Settings();

            if (File.Exists(settingsPath))
            {
                settings = JsonConvert.DeserializeObject <Settings>(File.ReadAllText(settingsPath));
            }
            else
            {
                File.WriteAllText(settingsPath, JsonConvert.SerializeObject(settings));
            }

            if (!Directory.Exists(settings.mmapsFolder))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(">> MMAP folder missing, edit folder in config.json");
                Console.ResetColor();
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine($">> MMAPS located at: {settings.mmapsFolder}");
                AmeisenNav = new AmeisenNav(settings.mmapsFolder);
                StopServer = false;

                if (settings.preloadMaps.Length > 0)
                {
                    Console.WriteLine($">> Preloading Maps");
                    foreach (int i in settings.preloadMaps)
                    {
                        AmeisenNav.LoadMap(i);
                    }
                    Console.WriteLine($">> Preloaded {settings.preloadMaps.Length} Maps");
                }

                TcpListener = new TcpListener(IPAddress.Parse(settings.ipAddress), settings.port);
                TcpListener.Start();

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($">> Server running ({settings.ipAddress}:{settings.port}) press Ctrl + C to exit");
                Console.ResetColor();
                EnterServerLoop();

                AmeisenNav.Dispose();
            }

            // Debug stuff

            /*float[] start = { -8826.562500f, -371.839752f, 71.638428f };
             * float[] end = { -8847.150391f, -387.518677f, 72.575912f };
             * float[] tileLoc = { -8918.406250f, -130.297256f, 80.906364f };
             *
             * List<Vector3> Path = GetPath(start, tileLoc);
             * string json_path = JsonConvert.SerializeObject(Path);
             *
             * Console.WriteLine($"Path contains {Path.Count} Nodes");
             * Console.WriteLine($"Path json {json_path}");
             * Console.ReadKey();*/
        }