Пример #1
0
		public RecentServer(Server server, DateTime on)
		{
			_on = @on;
			_ipAddress = server.IpAddress;
			_port = server.Port;
			_name = server.Name;
		}
Пример #2
0
		public Server CreateServer()
		{
			var server = new Server(_ipAddress, _port);
			server.Settings = new SortedDictionary<string, string>()
			                  	{
			                  		{"hostname",_name}
			                  	};
			return server;
		}
Пример #3
0
		public string GetNotes(Server server)
		{
			var fileName = GetNoteFileName(server);
			if(!File.Exists(fileName))
				return "";
			return File.ReadAllText(fileName, Encoding.UTF8);
		}
Пример #4
0
		public void AddRecent(Server server)
		{
			var recentServer = new RecentServer(server, DateTime.Now);
			if(RecentServers.Count > 50)
			{
				var oldest = RecentServers.OrderBy(x => x.On).FirstOrDefault();
				RecentServers.Remove(oldest);
			}
			RecentServers.Add(recentServer);
			recentServer.Server = server;
			App.Events.Publish(new RecentAdded(recentServer));
			Save();			
		}
Пример #5
0
		public void RemoveFavorite(Server server)
		{
			var favorite = Favorites.FirstOrDefault(f => f.Matches(server));
			if(favorite == null)
				return;
			Favorites.Remove(favorite);
			App.Events.Publish(new FavoritesUpdated(server));
			Save();
		}
Пример #6
0
		public void AddFavorite(Server server)
		{
			if(Favorites.Any(f => f.Matches(server)))
				return;
			Favorites.Add(new FavoriteServer(server));
			App.Events.Publish(new FavoritesUpdated(server));
			Save();
		}
Пример #7
0
		public ServerUpdated(Server server, bool supressRefresh)
		{
			Server = server;
			SupressRefresh = supressRefresh;
		}
Пример #8
0
		public RequestNoteEdit(Server server)
		{
			Server = server;
		}
Пример #9
0
		public bool HasNotes(Server server)
		{
			return File.Exists(GetNoteFileName(server));
		}
Пример #10
0
		public FavoriteServer(Server server)
		{
			_ipAddress = server.IpAddress;
			_port = server.Port;
			_name = server.Name;
		}
Пример #11
0
 public ServerQueryClient(Server server, string ipAddress, int port)
 {
     _server = server;
     _ipAddress = ipAddress;
     _port = port;
 }
Пример #12
0
 public void Double_digit_offsets_parse_correctly()
 {
     var server = new Server(null, 0);
     server.Settings["hostname"] = @"DayZ - [GMT+12] dayzmod.com - hosted by LegoDeCom & Hulk";
     Assert.That(server.ServerTime.Value.Hour, Is.EqualTo(DateTime.UtcNow.AddHours(+12).Hour));
 }
Пример #13
0
		public static void JoinServer(Server server)
		{
			var arguments = new StringBuilder();

			string exePath;
			
			if(UserSettings.Current.GameOptions.LaunchUsingSteam)
			{
				exePath = Path.Combine(LocalMachineInfo.Current.SteamPath, "steam.exe");
				if(!File.Exists(exePath))
				{
					MessageBox.Show("Could not find Steam, please adjust your options or check your Steam installation.");
					return;
				}
				
				 arguments.Append(" -applaunch 33930");

                if(UserSettings.Current.GameOptions.Arma2OASteamUpdate){
                    string mainEXE = Path.Combine(CalculatedGameSettings.Current.Arma2OAPath, @"arma2oa.exe");
                    string betaEXE = Path.Combine(CalculatedGameSettings.Current.Arma2OAPath, @"Expansion\beta\arma2oa.exe");
					if(File.Exists(mainEXE) && File.Exists(betaEXE))
					{
						var mainExeVersion = FileVersionInfo.GetVersionInfo(mainEXE).ProductVersion;
						var betaExeVersion = FileVersionInfo.GetVersionInfo(betaEXE).ProductVersion;

						if (mainExeVersion != betaExeVersion)
						{
							File.Copy(mainEXE, mainEXE + "_" + mainExeVersion, true);
							File.Copy(betaEXE, mainEXE, true);
						}
					}
                }

			}
			else
			{
				exePath = CalculatedGameSettings.Current.Arma2OAExePath;
			}

			if(UserSettings.Current.GameOptions.MultiGpu)
			{
				arguments.Append(" -winxp");
			}

			if(UserSettings.Current.GameOptions.WindowedMode)
			{
				arguments.Append(" -window");
			}

			if(!string.IsNullOrWhiteSpace(UserSettings.Current.GameOptions.AdditionalStartupParameters))
			{
				arguments.Append(" " + UserSettings.Current.GameOptions.AdditionalStartupParameters);
			}

			arguments.Append(" -noSplash -noFilePatching");
			arguments.Append(" -connect=" + server.IpAddress);
			arguments.Append(" -port=" + server.Port);
			arguments.AppendFormat(" \"-mod={0};expansion;expansion\\beta;expansion\\beta\\expansion;{1}\"", CalculatedGameSettings.Current.Arma2Path, CalculatedGameSettings.Current.DayZPath);

			try
			{
				var p = new Process
			        		{
			        			StartInfo =
			        				{
			        					FileName = exePath,
			        					Arguments = arguments.ToString(),
			        					WorkingDirectory = CalculatedGameSettings.Current.Arma2OAPath,
			        					UseShellExecute = true,
			        				}
			        		};
				p.Start();

				UserSettings.Current.AddRecent(server);

                if(UserSettings.Current.GameOptions.CloseDayZCommander){
                    Thread.Sleep(1000);
                    Environment.Exit(0);
                }
			}
			catch(Exception ex)
			{
				//var joinServerException = new JoinServerException(exePath, arguments.ToString(), CalculatedGameSettings.Current.Arma2OAPath, ex);
				//_logger.Error(joinServerException);
			}
			finally
			{
				arguments.Clear();
			}
		}
Пример #14
0
        private List<Server> GetAllSync()
        {
            ExecuteGSList("-u");
            return ExecuteGSList("-n arma2oapc -f \"mod LIKE '%@dayz%'\" -X \\hostname")
                .Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
                .Select(line =>
                {
                    var indexOfFirstSpace = line.IndexOf(" ");
                    var fullIpAddressWithPort = line.Substring(0, indexOfFirstSpace).Split(':');
                    var server = new Server(fullIpAddressWithPort[0], fullIpAddressWithPort[1].TryInt());

                    server.Settings = new SortedDictionary<string, string>
                    {
                        { "hostname", line.Substring(indexOfFirstSpace + 11) }
                    };

                    return server;
                }
                )
                .ToList();
        }
Пример #15
0
        public static void JoinServer(Server server)
        {
            var arguments = new StringBuilder();

            string exePath;

            if(UserSettings.Current.GameOptions.LaunchUsingSteam)
            {
                exePath = Path.Combine(LocalMachineInfo.SteamPath, "steam.exe");
                if(!File.Exists(exePath))
                {
                    MessageBox.Show("Could not find Steam, please adjust your options or check your Steam installation.");
                    return;
                }

                 arguments.Append(" -applaunch 33930");
            }
            else
            {
                exePath = GetArma2OAExe();
            }

            if(UserSettings.Current.GameOptions.MultiGpu)
            {
                arguments.Append(" -winxp");
            }

            if(UserSettings.Current.GameOptions.WindowedMode)
            {
                arguments.Append(" -window");
            }

            if(!string.IsNullOrWhiteSpace(UserSettings.Current.GameOptions.AdditionalStartupParameters))
            {
                arguments.Append(" " + UserSettings.Current.GameOptions.AdditionalStartupParameters);
            }

            arguments.Append(" -noSplash -noFilePatching");
            arguments.Append(" -connect=" + server.IpAddress);
            arguments.Append(" -port=" + server.Port);
            arguments.AppendFormat(" \"-mod={0};expansion;expansion\\beta;expansion\\beta\\expansion;@DayZ\"", GetArma2Path());

            try
            {
                var p = new Process
                            {
                                StartInfo =
                                    {
                                        FileName = exePath,
                                        Arguments = arguments.ToString(),
                                        WorkingDirectory = GetArma2OAPath(),
                                        UseShellExecute = true,
                                    }
                            };
                arguments.Clear();
                p.Start();
            }
            catch(Exception ex)
            {
                var joinServerException = new JoinServerException(exePath, arguments.ToString(), GetArma2OAPath(), ex);
                _logger.Error(joinServerException);
            }
        }
Пример #16
0
		public void SetNotes(Server server, string text)
		{
			var fileName = GetNoteFileName(server);
			if(string.IsNullOrWhiteSpace(text))
			{
				if(File.Exists(fileName))
					File.Delete(fileName);
			}
			else
			{
				File.WriteAllText(fileName, text, Encoding.UTF8);
			}
		}
Пример #17
0
		private static string GetNoteFileName(Server server)
		{
			return Path.Combine(new FileInfo(SettingsPath).Directory.FullName, string.Format("Notes_{0}_{1}.txt", server.IpAddress.Replace(".", "_"), server.Port));
		}
Пример #18
0
		public bool Matches(Server server)
		{
			return server.IpAddress == _ipAddress && server.Port == _port;
		}
Пример #19
0
		public FavoritesUpdated(Server server)
		{
			Server = server;
		}
Пример #20
0
		public bool IsFavorite(Server server)
		{
			return Favorites.Any(f => f.Matches(server));
		}
Пример #21
0
        private bool FilterHandler(Server s)
        {
            if(MaxPing != null && s.Ping > MaxPing)
                return false;

            if(!string.IsNullOrWhiteSpace(Name))
            {
                if(s.Name == null || s.Name.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) == -1)
                    return false;
            }

            if(HideEmpty && s.CurrentPlayers == 0)
                return false;

            if(HideFull && s.FreeSlots == 0)
                return false;

            if(TimeOfDay == "Night only")
            {
                if(s.IsNight == null || s.IsNight == false)
                    return false;
            }

            if(TimeOfDay == "Day only")
            {
                if(s.IsNight == null || s.IsNight == true)
                    return false;
            }

            if(HasArmor != null)
            {
                if(HasArmor == true && !s.Info.Armor.Enabled)
                    return false;
                if(HasArmor == false && s.Info.Armor.Enabled)
                    return false;
            }

            if(HasThirdPerson != null)
            {
                if(HasThirdPerson == true && !s.Info.ThirdPerson.Enabled)
                    return false;
                if(HasThirdPerson == false && s.Info.ThirdPerson.Enabled)
                    return false;
            }

            if(HasTracers != null)
            {
                if(HasTracers == true && !s.Info.Tracers.Enabled)
                    return false;
                if(HasTracers == false && s.Info.Tracers.Enabled)
                    return false;
            }

            if(HasNameplates != null)
            {
                if(HasNameplates == true && !s.Info.Nameplates.Enabled)
                    return false;
                if(HasNameplates == false && s.Info.Nameplates.Enabled)
                    return false;
            }

            if(HasCrosshairs != null)
            {
                if(HasCrosshairs == true && !s.Info.Crosshairs.Enabled)
                    return false;
                if(HasCrosshairs == false && s.Info.Crosshairs.Enabled)
                    return false;
            }

            if(HasDeathMessages != null)
            {
                if(HasDeathMessages == true && !s.Info.DeathMessages.Enabled)
                    return false;
                if(HasDeathMessages == false && s.Info.DeathMessages.Enabled)
                    return false;
            }

            if(HasScores != null)
            {
                if(HasScores == true && !s.Info.Scores.Enabled)
                    return false;
                if(HasScores == false && s.Info.Scores.Enabled)
                    return false;
            }

            if(HideUnresponsive && s.LastException != null)
            {
                return false;
            }

            if(HidePasswordProtected && s.HasPassword)
            {
                return false;
            }

            //								if(HideWrongArma2Version)
            //								{
            //									if(s.Arma2Version == null
            //										|| !LocalMachineInfo.EqualsArma2Version(s.Arma2Version))
            //									{
            //										return false;
            //									}
            //								}
            //
            //								if(HideWrongDayZVersion)
            //								{
            //									if(s.DayZVersion == null || !s.DayZVersion.Equals(LocalMachineInfo.DayZVersion))
            //									{
            //										return false;
            //									}
            //								}

            return true;
        }
Пример #22
0
 public ServerUpdated(Server server)
 {
     Server = server;
 }