public void Update(MsRegisterServerMsgData msg) { InternalEndpoint = msg.InternalEndpoint; InternalEndpoint6 = msg.InternalEndpoint6; LastRegisterTime = LunaNetworkTime.UtcNow.Ticks; Cheats = msg.Cheats; Password = msg.Password; ServerVersion = msg.ServerVersion; ServerName = msg.ServerName.Length > 30 ? msg.ServerName.Substring(0, 30) : msg.ServerName; Description = msg.Description.Length > 200 ? msg.Description.Substring(0, 200) : msg.Description; if (!string.IsNullOrEmpty(msg.CountryCode) && CountryCodes.Contains(msg.CountryCode.ToUpper())) { Country = msg.CountryCode.ToUpper(); } Website = msg.Website.Length > 60 ? msg.Website.Substring(0, 60) : msg.Website; WebsiteText = msg.WebsiteText.Length > 15 ? msg.WebsiteText.Substring(0, 15) : msg.WebsiteText; RainbowEffect = msg.RainbowEffect; Array.Copy(msg.Color, Color, 3); GameMode = msg.GameMode; MaxPlayers = msg.MaxPlayers; ModControl = msg.ModControl; DedicatedServer = DedicatedServerRetriever.IsDedicatedServer(ExternalEndpoint); PlayerCount = msg.PlayerCount; WarpMode = msg.WarpMode; TerrainQuality = msg.TerrainQuality; if (string.IsNullOrEmpty(Country)) { SetCountryFromEndpoint(this, ExternalEndpoint); } if (!Website.Contains("://")) { Website = "http://" + Website; } if (string.IsNullOrEmpty(WebsiteText) && !string.IsNullOrEmpty(Website)) { WebsiteText = "URL"; } }
/// <summary> /// Gets the alternate resource data from the given filename and put it in a valid order. /// </summary> public static ConfigurationQualifiers Parse(string resourceFile) { var result = new ConfigurationQualifiers(); if (string.IsNullOrEmpty(resourceFile)) { return(result); } var name = GetFileNameWithoutExtension(resourceFile); var index = name.IndexOf('-'); if (index < 0) { // No alternate resource directory return(result); } name = name.Substring(index + 1).ToLower(); var parts = name.Split('-').ToList(); // Detect all allowed qualifiers in order string option; var number = 0; // Mobile Country Code option = parts.FirstOrDefault(x => IsNumberQualifier(x, "mcc", null, out number)); if (option != null) { result.MobileCountryCode = number; parts.Remove(option); } // Mobile Network Carrier option = parts.FirstOrDefault(x => IsNumberQualifier(x, "mnc", null, out number)); if (option != null) { result.MobileNetworkCarrier = number; parts.Remove(option); } // Country code option = parts.FirstOrDefault(x => (x.Length == 2) && CountryCodes.Contains(x)); if (option != null) { result.Language = option; parts.Remove(option); } // Region code option = parts.FirstOrDefault(x => (x.Length == 3) && (x[0] == 'r') && RegionCodes.Contains(x.Substring(1).ToUpper())); if (option != null) { result.Region = option.Substring(1).ToUpper(); parts.Remove(option); } // SmallestWidth option = parts.FirstOrDefault(x => IsNumberQualifier(x, "sw", "dp", out number)); if (option != null) { result.SmallestWidth = number; parts.Remove(option); } // Available Width option = parts.FirstOrDefault(x => IsNumberQualifier(x, "w", "dp", out number)); if (option != null) { result.AvailableWidth = number; parts.Remove(option); } // Available height option = parts.FirstOrDefault(x => IsNumberQualifier(x, "h", "dp", out number)); if (option != null) { result.AvailableHeight = number; parts.Remove(option); } // Screen size option = parts.FirstOrDefault(x => ScreenSizeOptions.Contains(x)); if (option != null) { result.ScreenSize = ScreenSizeOptions.GetValue(option); parts.Remove(option); } // Screen aspect option = parts.FirstOrDefault(x => ScreenAspectOptions.Contains(x)); if (option != null) { result.ScreenAspect = ScreenAspectOptions.GetValue(option); parts.Remove(option); } // Screen orientations option = parts.FirstOrDefault(x => ScreenOrientationOptions.Contains(x)); if (option != null) { result.ScreenOrientation = ScreenOrientationOptions.GetValue(option); parts.Remove(option); } // UI Modes option = parts.FirstOrDefault(x => UIModeOptions.Contains(x)); if (option != null) { result.UIMode = UIModeOptions.GetValue(option); parts.Remove(option); } // Night mode option = parts.FirstOrDefault(x => NightModeOptions.Contains(x)); if (option != null) { result.NightMode = NightModeOptions.GetValue(option); parts.Remove(option); } // Screen pixel density option = parts.FirstOrDefault(x => ScreenPixelDensityOptions.Contains(x)); if (option != null) { result.ScreenPixelDensity = ScreenPixelDensityOptions.GetValue(option); parts.Remove(option); } // Touch screen type option = parts.FirstOrDefault(x => TouchScreenTypeOptions.Contains(x)); if (option != null) { result.TouchScreenType = TouchScreenTypeOptions.GetValue(option); parts.Remove(option); } // Keyboard availability option = parts.FirstOrDefault(x => KeyboardAvailabilityOptions.Contains(x)); if (option != null) { result.KeyboardAvailability = KeyboardAvailabilityOptions.GetValue(option); parts.Remove(option); } // Primary text input method option = parts.FirstOrDefault(x => PrimaryTextInputMethodOptions.Contains(x)); if (option != null) { result.PrimaryTextInputMethod = PrimaryTextInputMethodOptions.GetValue(option); parts.Remove(option); } // Navigation key availability option = parts.FirstOrDefault(x => NavigationKeyAvailabilityOptions.Contains(x)); if (option != null) { result.NavigationKeyAvailability = NavigationKeyAvailabilityOptions.GetValue(option); parts.Remove(option); } // Primary non-touch navigation method option = parts.FirstOrDefault(x => PrimaryNonTouchNavigationMethodOptions.Contains(x)); if (option != null) { result.PrimaryNonTouchNavigationMethod = PrimaryNonTouchNavigationMethodOptions.GetValue(option); parts.Remove(option); } // Platform version option = parts.FirstOrDefault(x => IsNumberQualifier(x, "v", null, out number)); if (option != null) { result.PlatformVersion = number; parts.Remove(option); } return(result); }