/// <summary> /// 停止播放背景音乐 /// </summary> public void StopBackgroundMusic() { if (BackgroundSource.isPlaying) { BackgroundSource.Stop(); } }
/// <summary> /// 播放背景音乐 /// </summary> /// <param name="clip">音乐剪辑</param> public void PlayBackgroundMusic(AudioClip clip) { if (BackgroundSource.isPlaying) { BackgroundSource.Stop(); } BackgroundSource.clip = clip; BackgroundSource.Play(); }
public UniversalSteamMetadataSettings(UniversalSteamMetadata plugin) { this.plugin = plugin; var savedSettings = plugin.LoadPluginSettings <UniversalSteamMetadataSettings>(); if (savedSettings != null) { DownloadVerticalCovers = savedSettings.DownloadVerticalCovers; BackgroundSource = savedSettings.BackgroundSource; } }
/// <summary> /// 播放背景音乐 /// </summary> /// <param name="clip">音乐剪辑</param> /// <param name="isLoop">是否循环</param> /// <param name="speed">播放速度</param> public void PlayBackgroundMusic(AudioClip clip, bool isLoop = true, float speed = 1) { if (BackgroundSource.isPlaying) { BackgroundSource.Stop(); } BackgroundSource.clip = clip; BackgroundSource.loop = isLoop; BackgroundSource.pitch = speed; BackgroundSource.Play(); }
public void TestBackgroundDoesntReloadOnNoChange(BackgroundSource source, Type backgroundType) { setSourceMode(source); setSupporter(true); if (source == BackgroundSource.Skin) { setCustomSkin(); } AddUntilStep("wait for beatmap background to be loaded", () => (getCurrentBackground())?.GetType() == backgroundType); AddAssert("next doesn't load new background", () => screen.Next() == false); }
/// <summary> /// 播放背景音乐 /// </summary> /// <param name="clip">音乐剪辑</param> public void PlayBackgroundMusic(AudioClip clip) { BackgroundSource.DOKill(); if (BackgroundSource.isPlaying) { BackgroundSource.Stop(); } BackgroundSource.clip = clip; BackgroundSource.volume = BackgroundVolume; BackgroundSource.Play(); }
public override int GetHashCode() { unchecked { int hash = 17; hash = (hash * 23) + TintColor.GetHashCode(); hash = (hash * 23) + TintOpacity.GetHashCode(); hash = (hash * 23) + BackgroundSource.GetHashCode(); hash = (hash * 23) + FallbackColor.GetHashCode(); hash = (hash * 23) + MaterialColor.GetHashCode(); return(hash); } }
/// <summary> /// 恢复播放背景音乐 /// </summary> /// <param name="isGradual">是否渐进式</param> public void ResumeBackgroundMusic(bool isGradual = true) { BackgroundSource.DOKill(); if (isGradual) { BackgroundSource.volume = 0; BackgroundSource.UnPause(); BackgroundSource.DOFade(BackgroundVolume, 2); } else { BackgroundSource.UnPause(); BackgroundSource.volume = BackgroundVolume; } }
public void TestBackgroundDoesntReloadOnNoChange(BackgroundSource source, Type backgroundType) { Graphics.Backgrounds.Background last = null; setSourceMode(source); setSupporter(true); if (source == BackgroundSource.Skin) { setCustomSkin(); } AddUntilStep("wait for beatmap background to be loaded", () => (last = getCurrentBackground())?.GetType() == backgroundType); AddAssert("next doesn't load new background", () => screen.Next() == false); // doesn't really need to be checked but might as well. AddWaitStep("wait a bit", 5); AddUntilStep("ensure same background instance", () => last == getCurrentBackground()); }
/// <summary> /// 暂停播放背景音乐 /// </summary> /// <param name="isGradual">是否渐进式</param> public void PauseBackgroundMusic(bool isGradual = true) { BackgroundSource.DOKill(); if (isGradual) { BackgroundSource.DOFade(0, 2).OnComplete(() => { BackgroundSource.Pause(); BackgroundSource.volume = BackgroundVolume; }); } else { BackgroundSource.Pause(); BackgroundSource.volume = BackgroundVolume; } }
/// <summary> /// 播放背景音乐 /// </summary> /// <param name="clip">音乐剪辑</param> /// <param name="isLoop">是否循环</param> /// <param name="speed">播放速度</param> public void PlayBackgroundMusic(AudioClip clip, bool isLoop = true, float speed = 1) { if (clip == null) { return; } BackgroundSource.DOKill(); if (BackgroundSource.isPlaying) { BackgroundSource.Stop(); } BackgroundSource.clip = clip; BackgroundSource.loop = isLoop; BackgroundSource.pitch = speed; BackgroundSource.volume = BackgroundVolume; BackgroundSource.Play(); }
/// <summary> /// 恢复播放背景音乐 /// </summary> /// <param name="isGradual">是否渐进式</param> public void UnPauseBackgroundMusic(bool isGradual = true) { if (_bgPauseTweener != null) { _bgPauseTweener.Kill(); _bgPauseTweener = null; } if (isGradual) { BackgroundSource.volume = 0; BackgroundSource.UnPause(); _bgPauseTweener = BackgroundSource.DOFade(BackgroundVolume, 2).OnComplete(() => { _bgPauseTweener = null; }); } else { BackgroundSource.UnPause(); BackgroundSource.volume = BackgroundVolume; } }
public SteamGameMetadata GetGameMetadata( uint appId, BackgroundSource backgroundSource, bool downloadVerticalCovers) { var downloadedMetadata = DownloadGameMetadata(appId, backgroundSource, downloadVerticalCovers); var gameInfo = new GameInfo { Name = downloadedMetadata.ProductDetails?["common"]["name"]?.Value ?? downloadedMetadata.StoreDetails?.name, Links = new List <Link>() { new Link(ResourceProvider.GetString("LOCSteamLinksCommunityHub"), $"https://steamcommunity.com/app/{appId}"), new Link(ResourceProvider.GetString("LOCSteamLinksDiscussions"), $"https://steamcommunity.com/app/{appId}/discussions/"), new Link(ResourceProvider.GetString("LOCSteamLinksGuides"), $"https://steamcommunity.com/app/{appId}/guides/"), new Link(ResourceProvider.GetString("LOCCommonLinksNews"), $"https://store.steampowered.com/news/?appids={appId}"), new Link(ResourceProvider.GetString("LOCCommonLinksStorePage"), $"https://store.steampowered.com/app/{appId}"), new Link("PCGamingWiki", $"https://pcgamingwiki.com/api/appid.php?appid={appId}") } }; downloadedMetadata.GameInfo = gameInfo; var metadata = new GameMetadata() { GameInfo = gameInfo, Icon = downloadedMetadata.Icon, CoverImage = downloadedMetadata.CoverImage, BackgroundImage = downloadedMetadata.BackgroundImage }; if (downloadedMetadata.StoreDetails?.categories?.FirstOrDefault(a => a.id == 22) != null) { gameInfo.Links.Add(new Link(ResourceProvider.GetString("LOCCommonLinksAchievements"), GetAchievementsUrl(appId))); } if (downloadedMetadata.StoreDetails?.categories?.FirstOrDefault(a => a.id == 30) != null) { gameInfo.Links.Add(new Link(ResourceProvider.GetString("LOCSteamLinksWorkshop"), GetWorkshopUrl(appId))); } if (downloadedMetadata.StoreDetails != null) { gameInfo.Description = ParseDescription(downloadedMetadata.StoreDetails.detailed_description); var cultInfo = new CultureInfo("en-US", false).TextInfo; gameInfo.ReleaseDate = downloadedMetadata.StoreDetails.release_date.date; gameInfo.CriticScore = downloadedMetadata.StoreDetails.metacritic?.score; if (downloadedMetadata.UserReviewDetails != null) { gameInfo.CommunityScore = CalculateUserScore(downloadedMetadata.UserReviewDetails); } if (downloadedMetadata.StoreDetails.publishers.HasNonEmptyItems()) { gameInfo.Publishers = new List <string>(downloadedMetadata.StoreDetails.publishers); } if (downloadedMetadata.StoreDetails.developers.HasNonEmptyItems()) { gameInfo.Developers = new List <string>(downloadedMetadata.StoreDetails.developers); } if (downloadedMetadata.StoreDetails.categories.HasItems()) { gameInfo.Features = new List <string>(); foreach (var category in downloadedMetadata.StoreDetails.categories) { // Ignore VR category, will be set from appinfo if (category.id == 31) { continue; } if (category.description == "Steam Cloud") { category.description = "Cloud Saves"; } gameInfo.Features.Add(cultInfo.ToTitleCase(category.description.Replace("steam", "", StringComparison.OrdinalIgnoreCase).Trim())); } } if (downloadedMetadata.StoreDetails.genres.HasItems()) { gameInfo.Genres = new List <string>(downloadedMetadata.StoreDetails.genres.Select(a => a.description)); } } if (downloadedMetadata.ProductDetails != null) { var tasks = new List <GameAction>(); var launchList = downloadedMetadata.ProductDetails["config"]["launch"].Children; foreach (var task in launchList.Skip(1)) { var properties = task["config"]; if (properties.Name != null) { if (properties["oslist"].Name != null) { if (properties["oslist"].Value != "windows") { continue; } } } // Ignore action without name - shoudn't be visible to end user if (task["description"].Name != null) { var newTask = new GameAction() { Name = task["description"].Value, Arguments = task["arguments"].Value ?? string.Empty, Path = task["executable"].Value, IsHandledByPlugin = false, WorkingDir = ExpandableVariables.InstallationDirectory }; tasks.Add(newTask); } } var manual = downloadedMetadata.ProductDetails["extended"]["gamemanualurl"]; if (manual.Name != null) { tasks.Add((new GameAction() { Name = "Manual", Type = GameActionType.URL, Path = manual.Value, IsHandledByPlugin = false })); } gameInfo.OtherActions = tasks; // VR features var vrSupport = false; foreach (var vrArea in downloadedMetadata.ProductDetails["common"]["playareavr"].Children) { if (vrArea.Name == "seated" && vrArea.Value == "1") { gameInfo.Features.Add("VR Seated"); vrSupport = true; } else if (vrArea.Name == "standing" && vrArea.Value == "1") { gameInfo.Features.Add("VR Standing"); vrSupport = true; } if (vrArea.Name.Contains("roomscale")) { gameInfo.Features.AddMissing("VR Room-Scale"); vrSupport = true; } } foreach (var vrArea in downloadedMetadata.ProductDetails["common"]["controllervr"].Children) { if (vrArea.Name == "kbm" && vrArea.Value == "1") { gameInfo.Features.Add("VR Keyboard / Mouse"); vrSupport = true; } else if (vrArea.Name == "xinput" && vrArea.Value == "1") { gameInfo.Features.Add("VR Gamepad"); vrSupport = true; } if ((vrArea.Name == "oculus" && vrArea.Value == "1") || (vrArea.Name == "steamvr" && vrArea.Value == "1")) { gameInfo.Features.Add("VR Motion Controllers"); vrSupport = true; } } if (vrSupport) { gameInfo.Features.Add("VR"); } } return(downloadedMetadata); }
void Awake() { instance = this; backgroundSource = GetComponent<AudioSource> (); }
private void setSourceMode(BackgroundSource source) => AddStep($"set background mode to {source}", () => config.SetValue(OsuSetting.MenuBackgroundSource, source));
internal SteamGameMetadata DownloadGameMetadata(uint appId, BackgroundSource backgroundSource) { var metadata = new SteamGameMetadata(); var productInfo = GetAppInfo(appId); metadata.ProductDetails = productInfo; try { metadata.StoreDetails = GetStoreData(appId); } catch (Exception e) { logger.Error(e, $"Failed to download Steam store metadata {appId}"); } // Icon if (productInfo != null) { var iconRoot = @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.ico"; var icon = productInfo["common"]["clienticon"]; var iconUrl = string.Empty; if (!string.IsNullOrEmpty(icon.Value)) { iconUrl = string.Format(iconRoot, appId, icon.Value); } else { var newIcon = productInfo["common"]["icon"]; if (!string.IsNullOrEmpty(newIcon.Value)) { iconRoot = @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.jpg"; iconUrl = string.Format(iconRoot, appId, newIcon.Value); } } // There might be no icon assigned to game if (!string.IsNullOrEmpty(iconUrl)) { metadata.Icon = new MetadataFile(iconUrl); } } // Image var imageRoot = @"https://steamcdn-a.akamaihd.net/steam/apps/{0}/header.jpg"; var imageUrl = string.Format(imageRoot, appId); if (HttpDownloader.GetResponseCode(imageUrl) == HttpStatusCode.OK) { metadata.CoverImage = new MetadataFile(imageUrl); } else { if (productInfo != null) { imageRoot = @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.jpg"; var image = productInfo["common"]["logo"]; if (!string.IsNullOrEmpty(image.Value)) { imageUrl = string.Format(imageRoot, appId, image.Value); metadata.CoverImage = new MetadataFile(imageUrl); } } } // Background Image switch (backgroundSource) { case BackgroundSource.Image: metadata.BackgroundImage = new MetadataFile(GetGameBackground(appId)); break; case BackgroundSource.StoreScreenshot: if (metadata.StoreDetails != null) { metadata.BackgroundImage = new MetadataFile(Regex.Replace(metadata.StoreDetails.screenshots.First().path_full, "\\?.*$", "")); } break; case BackgroundSource.StoreBackground: metadata.BackgroundImage = new MetadataFile(string.Format(@"https://steamcdn-a.akamaihd.net/steam/apps/{0}/page_bg_generated_v6b.jpg", appId)); break; default: break; } return(metadata); }
public static void SetBackgroundSource(BindableObject view, BackgroundSource value) => view.SetValue(BackgroundSourceProperty, value);
internal SteamGameMetadata DownloadGameMetadata(uint appId, BackgroundSource backgroundSource) { var metadata = new SteamGameMetadata(); var productInfo = GetAppInfo(appId); metadata.ProductDetails = productInfo; metadata.StoreDetails = GetStoreData(appId); // Icon if (productInfo != null) { var iconRoot = @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.ico"; var icon = productInfo["common"]["clienticon"]; var iconUrl = string.Empty; if (!string.IsNullOrEmpty(icon.Value)) { iconUrl = string.Format(iconRoot, appId, icon.Value); } else { var newIcon = productInfo["common"]["icon"]; if (!string.IsNullOrEmpty(newIcon.Value)) { iconRoot = @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.jpg"; iconUrl = string.Format(iconRoot, appId, newIcon.Value); } } // There might be no icon assigned to game if (!string.IsNullOrEmpty(iconUrl)) { var iconName = Path.GetFileName(new Uri(iconUrl).AbsolutePath); var iconData = HttpDownloader.DownloadData(iconUrl); metadata.Icon = new MetadataFile(iconName, iconData); } } // Image var imageRoot = @"http://cdn.akamai.steamstatic.com/steam/apps/{0}/header.jpg"; var imageUrl = string.Format(imageRoot, appId); byte[] imageData = null; try { imageData = HttpDownloader.DownloadData(imageUrl); } catch (WebException e) { var response = (HttpWebResponse)e.Response; if (response.StatusCode == HttpStatusCode.NotFound) { if (productInfo != null) { imageRoot = @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.jpg"; var image = productInfo["common"]["logo"]; if (!string.IsNullOrEmpty(image.Value)) { imageUrl = string.Format(imageRoot, appId, image.Value); imageData = HttpDownloader.DownloadData(imageUrl); } } } else { throw; } } if (imageData != null) { var imageName = Path.GetFileName(new Uri(imageUrl).AbsolutePath); metadata.Image = new MetadataFile(imageName, imageData); } // Background Image switch (backgroundSource) { case BackgroundSource.Image: metadata.BackgroundImage = GetGameBackground(appId); break; case BackgroundSource.StoreScreenshot: metadata.BackgroundImage = Regex.Replace(metadata.StoreDetails.screenshots.First().path_full, "\\?.*$", ""); break; case BackgroundSource.StoreBackground: metadata.BackgroundImage = string.Format(@"https://steamcdn-a.akamaihd.net/steam/apps/{0}/page_bg_generated_v6b.jpg", appId); break; default: break; } return(metadata); }
void Awake() { instance = this; backgroundSource = GetComponent <AudioSource> (); }