/// <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); } }
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()); } }
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; }
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()); } }
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); }
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/")); }
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 ; }
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; }
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); } } }
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")); }
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(); }
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(); }
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)); }
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)); }
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)); }
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)); }
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)); }
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/")); }
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); }