Beispiel #1
0
    /// <summary>Sends the client into the game and informs other clients of the new player.</summary>
    /// <param name="playerName">The username of the new player.</param>
    public void EnterPlayer(string playerName)
    {
        playerManager = new Player.PlayerManager()
        {
            username = playerName,
            client   = this,
            state    = PlayerState.loadingScreen
        };

        GameManager.instance.players.Add(playerManager);
        ServerDatabase.UpdateServer();

        // Send all players to the new player
        foreach (Client client in Server.clients.Values)
        {
            if (client.playerManager != null)
            {
                if (client.id != id)
                {
                    ServerSend.PlayerEnter(client.playerManager);
                }
            }
        }

        // Send the new player to all players (including himself)
        foreach (Client client in Server.clients.Values)
        {
            if (client.playerManager != null)
            {
                ServerSend.PlayerEnter(playerManager);
            }
        }

        GameManager.instance.currentGameMode.OnPlayerEnter(playerManager);
    }
        public async static void CancelOrderAction(string data)
        {
            OrderBill canceledOder = JsonConvert.DeserializeObject <OrderBill>(data);

            //fetch data products in server
            await ServerDatabase.FetchProductData();

            //xóa orderbill
            DataUpdater.DeleteOrderBillByID(canceledOder.IDOrderBill);

            //update list order+số lượng product cho cửa hàng bị hủy order
            if (Infor.IDStore == canceledOder.IDStore)
            {
                (TabbarStoreManager.GetInstance().Children.ElementAt(1).BindingContext as ProductManagerViewModel).LoadData(true);
                (TabbarStoreManager.GetInstance().Children.ElementAt(2).BindingContext as OrderManagerViewModel).LoadData();
            }

            if (Infor.IDUser == canceledOder.IDUser)
            {
                (TabBarCustomer.GetInstance().Children.ElementAt(3).BindingContext as ListOrdersViewModel).LoadData();
            }

            //update số lượng product cho các user khác (gồm cả user là store bị hủy)
            var ShowStoreVM = ShowStoreView.GetInstance().BindingContext as ShowStoreViewModel;

            if (ShowStoreVM != null && ShowStoreVM.IDStore == canceledOder.IDStore)
            {
                ShowStoreVM.LoadData(true);
            }
        }
Beispiel #3
0
        private static IEnumerable <BestPlayerReport> GetBestPlayersWithConstraint(
            Func <IQueryable <BestPlayerReport>, IQueryable <BestPlayerReport> > constraint)
        {
            using (var db = new ServerDatabase())
            {
                var bestPlayers = constraint(db.PlayerScores
                                             .GroupBy(score => score.Name)
                                             .Where(group => group.Count() >= 10)
                                             .Select(group => new
                {
                    Kills  = group.Sum(score => score.Kills),
                    Deaths = group.Sum(score => score.Deaths),
                    Name   = group.Key
                })
                                             .Where(x => x.Deaths > 0)
                                             .Select(x => new BestPlayerReport
                {
                    // другого способа преобразовать в double не нашлось :(
                    KillToDeathRatio = (x.Kills + 0.5 - 0.5) / x.Deaths,
                    Name             = x.Name
                })
                                             .OrderByDescending(report => report.KillToDeathRatio));

                return(bestPlayers.ToList());
            }
        }
Beispiel #4
0
        public static async Task SaveDatabase()
        {
            //create a new GuildDatabase object
            ServerDatabase sdb = new ServerDatabase();

            //implement all setting/cache lists in here!

            sdb.ServerDatabaseDictionary = ServerSettings.SettingList;
            sdb.LastUpdate = DateTime.Now;

            //string serialization with json
            string json = Newtonsoft.Json.JsonConvert.SerializeObject(sdb);
            //leave this path alone cause it reflects the current working dictionary
            string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"/ServerDatabase.json";

            //Check if the file exist
            if (!File.Exists(path))
            {
                await CreateDatabaseFile(path);
            }
            using (StreamWriter sw = new StreamWriter(path, false))
            {
                //Write data async to the file
                await sw.WriteAsync(json);

                //don´t forget to close writers, too
                sw.Close();
            }
            //set changesMade to false for new changes
            Database_ChangesMade = false;
        }
Beispiel #5
0
        private static IEnumerable <PopularServerReport> GetPopularServersWithConstraint(
            Func <IQueryable <PopularServerReport>, IQueryable <PopularServerReport> > constraint)
        {
            using (var db = new ServerDatabase())
            {
                var popularServers = constraint(db.GameMatches
                                                .GroupBy(match => new
                {
                    match.Timestamp.Year,
                    match.Timestamp.Month,
                    match.Timestamp.Day,
                    match.Server.Endpoint,
                    match.Server.Name
                })
                                                .Select(group => new
                {
                    Count = group.Count(),
                    group.Key.Name,
                    group.Key.Endpoint
                })
                                                .GroupBy(x => new { x.Name, x.Endpoint })
                                                .Select(group => new PopularServerReport
                {
                    AverageMatchesPerDay = group.Average(x => x.Count),
                    Name          = group.Key.Name,
                    ServerAddress = group.Key.Endpoint
                }))
                                     .OrderByDescending(report => report.AverageMatchesPerDay);

                return(popularServers.ToList());
            }
        }
Beispiel #6
0
        public static void Main(string[] args)
        {
            var commandLineParser = new FluentCommandLineParser <Options>();

            commandLineParser
            .Setup(options => options.Prefix)
            .As("prefix")
            .SetDefault("http://*****:*****@"views.xml"));
            }

            RunServer(commandLineParser.Object);
        }
Beispiel #7
0
        private BasicTeraData(string resourceDirectory)
        {
            ResourceDirectory = resourceDirectory;
            Directory.CreateDirectory(Path.Combine(resourceDirectory, "config")); //ensure config dir is created
            //XmlConfigurator.Configure(new Uri(Path.Combine(ResourceDirectory, "log4net.xml")));
            HotkeysData = new HotkeysData(this);
            WindowData  = new WindowData(this);
            //EventsData = new EventsData(this);
            _dataForRegion = Helpers.Memoize <string, TeraData>(region => new TeraData(region));
            Servers        = new ServerDatabase(Path.Combine(ResourceDirectory, "data"));
            //handle overrides
            var serversOverridePath = Path.Combine(ResourceDirectory, "config/server-overrides.txt");

            if (!File.Exists(serversOverridePath))//create the default file if it doesn't exist
            {
                File.WriteAllText(serversOverridePath, defaultOverride);
            }
            var overriddenServers = GetServers(serversOverridePath).ToList();

            Servers.AddOverrides(overriddenServers);


            //ImageDatabase = new ImageDatabase(Path.Combine(ResourceDirectory, "img/"));
            //Icons = new IconsDatabase(Path.Combine(ResourceDirectory, "data/"));
        }
Beispiel #8
0
        private BasicTeraData(string resourceDirectory)
        {
            ResourceDirectory = resourceDirectory;
            Directory.CreateDirectory(Path.Combine(resourceDirectory, "config")); //ensure config dir is created
            var repo = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(repo, new Uri(Path.Combine(ResourceDirectory, "log4net.xml")));
            HotkeysData = new HotkeysData(this);
            WindowData  = new WindowData(this);
            LP.Culture  = WindowData.UILanguage != "Auto" ? CultureInfo.GetCultureInfo(WindowData.UILanguage) : CultureInfo.CurrentUICulture;
            EventsData  = new EventsData(this);
            //_dataForRegion = Helpers.Memoize<string, TeraData>(region => new TeraData(region));
            Servers = new ServerDatabase(Path.Combine(ResourceDirectory, "data"));
            //handle overrides
            var serversOverridePath = Path.Combine(ResourceDirectory, "config/server-overrides.txt");

            if (!File.Exists(serversOverridePath)) //create the default file if it doesn't exist
            {
                File.WriteAllText(serversOverridePath, LP.ServerOverrides);
            }
            var overriddenServers = GetServers(serversOverridePath).ToList();

            Servers.AddOverrides(overriddenServers);


            ImageDatabase = new ImageDatabase(Path.Combine(ResourceDirectory, "img/"));
            Icons         = new IconsDatabase(Path.Combine(ResourceDirectory, "data/"));

            // change later
            ;
        }
Beispiel #9
0
        public TeraSniffer(IpSniffer ipSniffer, ServerDatabase servers)
        {
            _serversByIp = servers.GetServersByIp();

            if (ipSniffer == null)
            {
                var netmasks = _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();

                string filter = string.Join(" or ", netmasks.Select(x => $"(net {x})"));
                filter = "tcp and (" + filter + ")";

                try
                {
                    ipSniffer = new IpSnifferWinPcap(filter);
                }
                catch
                {
                    ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
                }
            }

            _ipSniffer = ipSniffer;

            var tcpSniffer = new TcpSniffer(_ipSniffer);

            tcpSniffer.NewConnection += HandleNewConnection;
        }
Beispiel #10
0
        private static HttpResponse GetMatch(Dictionary <string, string> urlArgs)
        {
            var       endpoint  = urlArgs["endpoint"];
            var       timestamp = DateTime.Parse(urlArgs["timestamp"]).ToUniversalTime();
            GameMatch match;

            using (var db = new ServerDatabase())
                match = db.GameMatches
                        .Include(m => m.Scoreboard)
                        .Include(m => m.Server)
                        .FirstOrDefault(m =>
                                        m.Server.Endpoint == endpoint &&
                                        m.Timestamp == timestamp);

            if (match == null)
            {
                return(new HttpResponse(HttpStatusCode.NotFound));
            }

            match.Scoreboard = match.Scoreboard.OrderByDescending(score => score.Frags).ToList();
            return(new HttpResponse(
                       HttpStatusCode.OK,
                       JsonConvert.SerializeObject(
                           match,
                           DoubleConverter)));
        }
        public void TestBestPlayersZeroDeaths()
        {
            using (var db = new ServerDatabase())
            {
                for (var i = 0; i < 15; i++)
                {
                    var score = new PlayerScore
                    {
                        Deaths = 0,
                        Kills  = 10,
                        Name   = "one"
                    };
                    db.PlayerScores.Add(score);
                }
                db.SaveChanges();
            }

            var request = new HttpRequest(HttpMethod.Get, Stream.Null);
            var urlArgs = new Dictionary <string, string> {
                { "entity", "best-players" }
            };
            var response = ReportsRoutes.ReportWithCount(urlArgs, request);
            var actual   = JsonConvert.DeserializeObject <List <BestPlayerReport> >(response.Content);
            var expected = new List <BestPlayerReport>();

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void TestGetAllServers()
        {
            var server1 = new GameServer
            {
                Endpoint  = "test1.com-8080",
                Name      = "1",
                GameModes = new [] { new GameMode {
                                         Name = "DM"
                                     } }
            };
            var server2 = new GameServer
            {
                Endpoint  = "test2.com-8080",
                Name      = "2",
                GameModes = new GameMode[0]
            };
            var urlArgs = new Dictionary <string, string>();
            var request = new HttpRequest(HttpMethod.Get, Stream.Null);

            using (var db = new ServerDatabase())
            {
                db.GameServers.Add(server1);
                db.GameServers.Add(server2);
                db.SaveChanges();
            }

            var response = ServerInfoRoutes.GetAllServersInfo(urlArgs, request);
            var actual   = JToken.Parse(response.Content);
            var expected =
                "[{\"endpoint\":\"test1.com-8080\",\"info\":{\"name\":\"1\",\"gameModes\":[\"DM\"]}},{\"endpoint\":\"test2.com-8080\",\"info\":{\"name\":\"2\",\"gameModes\":[]}}]";
            var expectedJson = JToken.Parse(expected);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsTrue(JToken.DeepEquals(expectedJson, actual));
        }
        public void TestGetServer()
        {
            var server = new GameServer
            {
                Endpoint  = "test.com-8080",
                Name      = "] My P3rfect Server [",
                GameModes = new[] { new GameMode {
                                        Name = "DM"
                                    } }
            };
            var urlArgs = new Dictionary <string, string> {
                { "endpoint", "test.com-8080" }
            };
            var request  = new HttpRequest(HttpMethod.Get, Stream.Null);
            var response = ServerInfoRoutes.ServerInfo(urlArgs, request);

            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);

            using (var db = new ServerDatabase())
            {
                db.GameServers.Add(server);
                db.SaveChanges();
            }
            var expected     = "{\"name\":\"] My P3rfect Server [\",\"gameModes\":[\"DM\"]}";
            var expectedJson = JToken.Parse(expected);

            response = ServerInfoRoutes.ServerInfo(urlArgs, request);
            var actual = JToken.Parse(response.Content);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsTrue(JToken.DeepEquals(actual, expectedJson));
        }
        public void TestAddServer()
        {
            var urlArgs = new Dictionary <string, string> {
                { "endpoint", "test.com-8080" }
            };
            var expected = new GameServer
            {
                Endpoint  = "test.com-8080",
                Name      = "] My P3rfect Server [",
                GameModes = new[] { new GameMode {
                                        Name = "DM"
                                    }, new GameMode {
                                        Name = "TDM"
                                    } }
            };

            using (var stream = new MemoryStream())
            {
                var writer = new StreamWriter(stream);
                writer.Write("{\"name\": \"] My P3rfect Server [\",\"gameModes\": [ \"DM\", \"TDM\" ]}");
                writer.Flush();
                stream.Position = 0;
                var request  = new HttpRequest(HttpMethod.Put, stream);
                var response = ServerInfoRoutes.ServerInfo(urlArgs, request);

                Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
                using (var db = new ServerDatabase())
                {
                    var a = db.GameServers.ToList();
                    CollectionAssert.AreEqual(new[] { expected }, a);
                }
            }
        }
Beispiel #15
0
        public TeraSniffer(IpSniffer ipSniffer, ServerDatabase servers)
        {
            _serversByIp = servers.GetServersByIp();

            if (ipSniffer == null)
            {
                var netmasks = _serversByIp.Keys.Select(s => string.Join(".", s.Split('.').Take(3)) + ".0/24").Distinct().ToArray();

                string filter = string.Join(" or ", netmasks.Select(x => $"(net {x})"));
                filter = "tcp and (" + filter + ")";

                try
                {
                    ipSniffer = new IpSnifferWinPcap(filter);
                }
                catch
                {
                    ipSniffer = new IpSnifferRawSocketMultipleInterfaces();
                }
            }

            _ipSniffer = ipSniffer;

            var tcpSniffer = new TcpSniffer(_ipSniffer);
            tcpSniffer.NewConnection += HandleNewConnection;
        }
        public void TestGetMatch()
        {
            var server  = testServer;
            var match   = testMatch;
            var urlArgs = new Dictionary <string, string>
            {
                { "endpoint", "test.com-8080" },
                { "timestamp", "0001-01-01T00:00:00Z" }
            };
            var request  = new HttpRequest(HttpMethod.Get, Stream.Null);
            var response = MatchInfoRoutes.MatchInfo(urlArgs, request);

            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);

            using (var db = new ServerDatabase())
            {
                db.GameServers.Add(server);
                db.GameMatches.Add(match);
                db.SaveChanges();
            }

            var expected     = "{\"scoreboard\":[{\"name\":\"Vasya\",\"frags\":0,\"kills\":42,\"deaths\":0}],\"map\":\"Dust\",\"gameMode\":\"DM\",\"fragLimit\":0,\"timeLimit\":0,\"timeElapsed\":0.000000}";
            var expectedJson = JToken.Parse(expected);

            response = MatchInfoRoutes.MatchInfo(urlArgs, request);
            var actualJson = JToken.Parse(response.Content);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsTrue(JToken.DeepEquals(actualJson, expectedJson));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ServerDatabase serverDatabase = db.ServerDatabases.Find(id);

            db.ServerDatabases.Remove(serverDatabase);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #18
0
        public BasicTeraData(string resourceDirectory, string language)
        {
            ResourceDirectory = resourceDirectory;
            Language          = language;
            _dataForRegion    = Helpers.Memoize <string, TeraData>(region => new TeraData(this, region));
            Servers           = new ServerDatabase(ResourceDirectory);
//            Regions = GetRegions(Path.Combine(ResourceDirectory, "regions.txt")).ToList();
        }
Beispiel #19
0
 private BasicTeraData(string resourceDirectory)
 {
     ResourceDirectory = resourceDirectory;
     Directory.CreateDirectory(Path.Combine(resourceDirectory, "config")); //ensure config dir is created
     XmlConfigurator.Configure(new Uri(Path.Combine(ResourceDirectory, "log4net.xml")));
     Servers = new ServerDatabase(Path.Combine(ResourceDirectory, "data"));
     Icons   = new IconsDatabase(Path.Combine(ResourceDirectory, "data/"));
 }
        public async Task LoadServerDataAsync()
        {
            while (ServerDatabase.Users.Count == 0)
            {
                await ServerDatabase.LoadDataFromServer();
            }

            Database.LoadDataToLocal();
        }
Beispiel #21
0
 private BasicTeraData(string resourceDirectory)
 {
     ResourceDirectory = resourceDirectory;
     XmlConfigurator.Configure(new Uri(Path.Combine(ResourceDirectory, "log4net.xml")));
     HotkeysData    = new HotkeysData(this);
     WindowData     = new WindowData(this);
     _dataForRegion = Helpers.Memoize <string, TeraData>(region => new TeraData(region));
     Servers        = new ServerDatabase(Path.Combine(ResourceDirectory, "data"));
     ImageDatabase  = new ImageDatabase(Path.Combine(ResourceDirectory, "img/"));
 }
 public ActionResult Edit([Bind(Include = "Id,Name,Size,NumberOfUsers")] ServerDatabase serverDatabase)
 {
     if (ModelState.IsValid)
     {
         db.Entry(serverDatabase).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(serverDatabase));
 }
Beispiel #23
0
 static void Main(string[] args)
 {
     Console.Title = "Server";
     ServerDatabase.Init();
     _clients = new List <ConnectedObject>();
     StartListening();
     Console.ReadLine();
     CloseAllSockets();
     currentversion = "2";
 }
 public ActionResult Edit([Bind(Include = "Id,Name,Size,NumberOfUsers,EmployeeId,ServerId")] ServerDatabase serverDatabase)
 {
     if (ModelState.IsValid)
     {
         db.Entry(serverDatabase).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ServerId = new SelectList(db.Servers, "Id", "Name", serverDatabase.ServerId);
     return(View(serverDatabase));
 }
Beispiel #25
0
        public static async Task LoadDatabase()
        {
            await CoreProgram._errorHandler._client_Log(new LogMessage(LogSeverity.Debug, "LoadDatabase", "Loading databases"));

            string[] path = new string[2] {
                Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"/ServerDatabase.json", Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"/GuildUserDatabase.json"
            };
            int pathCount = 0;

            foreach (string _path in path)
            {
                //Check if the file exist
                if (!File.Exists(_path))
                {
                    await CoreProgram._errorHandler._client_Log(new LogMessage(LogSeverity.Warning, "LoadDatabase", "File not found... create file!"));
                    await CreateDatabaseFile(_path);
                }
                using (StreamReader reader = new StreamReader(_path))
                {
                    //leave this path alone cause it reflects the current working dictionary
                    string json = await reader.ReadToEndAsync();

                    if (pathCount == 0)
                    {
                        //create a new ServerDatabase from the json deserializer
                        ServerDatabase sdb = Newtonsoft.Json.JsonConvert.DeserializeObject <ServerDatabase>(json);
                        //set all setting/cache lists in here!
                        if (sdb != null)
                        {
                            ServerSettings.SettingList = sdb.ServerDatabaseDictionary; await CoreProgram._errorHandler._client_Log(new LogMessage(LogSeverity.Debug, "LoadDatabase", "Loaded: server_database..."));
                        }
                        else
                        {
                            await CoreProgram._errorHandler._client_Log(new LogMessage(LogSeverity.Critical, "LoadDatabase", "Could not load ServerDatabase", new NullReferenceException()));
                        }
                    }
                    if (pathCount == 1)
                    {
                        //create a new GuildDatabase from the json deserializer
                        GuildUserDatabase gdb = Newtonsoft.Json.JsonConvert.DeserializeObject <GuildUserDatabase>(json);
                        //set all setting/cache lists in here!
                        if (gdb != null)
                        {
                            Databases.GuildUserDatabase.GuildSettingsList = gdb.GuildUserDatabaseDictionary; await CoreProgram._errorHandler._client_Log(new LogMessage(LogSeverity.Debug, "LoadDatabase", "Loaded: guild_database..."));
                        }
                        else
                        {
                            await CoreProgram._errorHandler._client_Log(new LogMessage(LogSeverity.Critical, "LoadDatabase", "Could not load GuildUserDatabase", new NullReferenceException()));
                        }
                    }
                }
                pathCount++;
            }
        }
        public ActionResult Create([Bind(Include = "Id,Name,Size,NumberOfUsers")] ServerDatabase serverDatabase)
        {
            if (ModelState.IsValid)
            {
                db.ServerDatabases.Add(serverDatabase);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(serverDatabase));
        }
Beispiel #27
0
    private void Start()
    {
        QualitySettings.vSyncCount  = 0;
        Application.targetFrameRate = 50;

        Server.Start(50, 17685);

        ServerDatabase.UpdateServer();

        ChangeGameState(GameModeType.waiting, startLobby.name);
    }
        public async static void InsertOrderBillAction(string data)
        {
            //fetch data products in server
            await ServerDatabase.FetchProductData();

            OrderBill newOrder = JsonConvert.DeserializeObject <OrderBill>(data);

            DataUpdater.InsertOrderBill(newOrder);
            if (Infor.IDStore == newOrder.IDStore)
            {
                (TabbarStoreManager.GetInstance().Children.ElementAt(2).BindingContext as OrderManagerViewModel).LoadData();
            }
        }
        public ActionResult Create([Bind(Include = "Id,Name,Size,EmployeeId,NumberOfUsers,ServerId")] ServerDatabase serverDatabase)
        {
            if (ModelState.IsValid)
            {
                db.ServerDatabases.Add(serverDatabase);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "Name", serverDatabase.EmployeeId);
            ViewBag.ServerId   = new SelectList(db.Servers, "Id", "Name", serverDatabase.ServerId);
            return(View(serverDatabase));
        }
Beispiel #30
0
        public BasicTeraData(string folder)
        {
            Icons             = new List <ImageElement>();
            ResourceDirectory = Path.Combine(folder, @"resources");
            Servers           = new ServerDatabase(Path.Combine(ResourceDirectory, "data"));
            //icons part
            DirectoryInfo d = new DirectoryInfo(Path.Combine(ResourceDirectory, "icons"));

            FileInfo[] Files = d.GetFiles("*.png");
            foreach (var image in Files)
            {
                Icons.Add(new ImageElement(image.FullName));
            }
        }
        // GET: ServerDatabases2/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ServerDatabase serverDatabase = db.ServerDatabases.Find(id);

            if (serverDatabase == null)
            {
                return(HttpNotFound());
            }
            return(View(serverDatabase));
        }
Beispiel #32
0
        private BasicTeraData(string resourceDirectory)
        {
            ResourceDirectory = resourceDirectory;
            Directory.CreateDirectory(Path.Combine(resourceDirectory, "config")); //ensure config dir is created
            XmlConfigurator.Configure(new Uri(Path.Combine(ResourceDirectory, "log4net.xml")));
            HotkeysData = new HotkeysData(this);
            WindowData = new WindowData(this);
            EventsData = new EventsData(this);
            _dataForRegion = Helpers.Memoize<string, TeraData>(region => new TeraData(region));
            Servers = new ServerDatabase(Path.Combine(ResourceDirectory, "data"));
            //handle overrides
            var serversOverridePath = Path.Combine(ResourceDirectory, "config/server-overrides.txt");
            if (!File.Exists(serversOverridePath))//create the default file if it doesn't exist
                File.WriteAllText(serversOverridePath, LP.ServerOverrides );
            var overriddenServers = GetServers(serversOverridePath).ToList();
            Servers.AddOverrides(overriddenServers);

            ImageDatabase = new ImageDatabase(Path.Combine(ResourceDirectory, "img/"));
            Icons = new IconsDatabase(Path.Combine(ResourceDirectory, "data/"));
        }
Beispiel #33
0
        private void LoadServers()
        {
            Servers = new ServerDatabase(ResourceDirectory);

            //handle overrides
            var serversOverridePath = Path.Combine(_overridesDirectory, "server-overrides.txt");
            if (!File.Exists(serversOverridePath))//create the default file if it doesn't exist
                File.WriteAllText(serversOverridePath, Properties.Resources.server_overrides);
            var overriddenServers = GetServers(serversOverridePath).ToList();
            Servers.AddOverrides(overriddenServers);
        }