public ChangelogOverlay(Game game, bool fullscreen = false) : base(game) { if (fullscreen) { Width = GameBase.WindowManager.WidthScaled; Height = 226; startHeight = 0; } area = new pScrollableArea(new Rectangle(0, GameBase.WindowManager.HeightScaled - Height, Width, Height), Vector2.Zero, true); area.HeaderHeight = startHeight; int year = General.VERSION / 10000; int month = General.VERSION / 100 - year * 100; int day = General.VERSION - year * 10000 - month * 100; int version_dated = Int32.Parse(new DateTime(year, month, day).AddDays(-14).ToString("yyyyMMdd")); int version_current = Int32.Parse(new DateTime(year, month, day).ToString("yyyyMMdd")); pWebRequest snr = new pWebRequest(General.WEB_ROOT + "/p/changelog?updater=3" + (!string.IsNullOrEmpty(General.SUBVERSION) ? "&test=1" : "¤t=" + version_current + "&from=" + version_dated)); snr.Finished += snr_onFinish; snr.Perform(); pSprite bg = new pSprite(GameBase.WhitePixel, Vector2.Zero, 0.5f, true, Color.Black); bg.Scale = 1.6f; bg.ViewOffsetImmune = true; bg.VectorScale = new Vector2(Width, Height); bg.Alpha = 0.5f; area.ContentSpriteManager.Add(bg); if (!fullscreen) { pText t = new pText(LocalisationManager.GetString(OsuString.Update_RecentChanges), 10, new Vector2(3, 3), Vector2.Zero, 0.9992f, true, Color.White, false); t.ViewOffsetImmune = true; t.TextBold = true; area.ContentSpriteManager.Add(t); bg = new pSprite(GameBase.WhitePixel, Vector2.Zero, 0.9991f, true, SkinManager.NEW_SKIN_COLOUR_SECONDARY); bg.Scale = 1.6f; bg.ViewOffsetImmune = true; bg.VectorScale = new Vector2(Width, startHeight); bg.Alpha = 0.8f; bg.HandleInput = true; bg.HoverEffect = new Transformation(Color.DarkBlue, Color.LightBlue, 0, 50); bg.OnClick += delegate { area.ContentSpriteManager.SpriteList.ForEach(s => s.FadeOut(100)); GameBase.Scheduler.AddDelayed(delegate { area.Hide(); }, 100); }; area.ContentSpriteManager.Add(bg); } }
internal TournamentLobby(Tournament tournament, SpriteManager spriteManager, float depth) { this.tournament = tournament; Vector2 pos = tournament.ControlPanelLocation; pText tmp; spriteManager.Add(tmp = new pText(LocalisationManager.GetString(OsuString.Tournament_MakeAMultiplayerRoomWithFormat), 10, new Vector2(0, pos.Y), depth, true, Color.White)); pos.Y += (int)tmp.MeasureText().Y; spriteManager.Add(tmp = new pText(acronym + @": (team 1 name) vs (team 2 name)", 10, new Vector2(0, pos.Y), depth, true, Color.White) { TextBold = true }); // Splitter between text and matches pos.Y += (int)tmp.MeasureText().Y; spriteManager.Add(new pSprite(GameBase.WhitePixel, Fields.TopLeft, Origins.TopLeft, Clocks.Game, new Vector2(0, pos.Y), depth, true, new Color(255, 255, 255, 127)) { VectorScale = new Vector2(300 * 1.6f, 1) }); pos.Y += 3; matchesArea = new pScrollableArea(new Rectangle(0, (int)pos.Y, 300, (int)(480 - pos.Y)), Vector2.Zero, true); matchesArea.SetContentDimensions(new Vector2(300, 0)); requestMatchInfo(); updateMatches(); }
internal ChatManager(Tournament tournament, SpriteManager spriteManager, float depth) { this.tournament = tournament; this.spriteManager = spriteManager; float scale = TournamentLayout.ClientScale * GameBase.WindowManager.Ratio; spriteManager.Add(titleNormal = new pSprite(TextureManager.Load(Path.Combine(Tournament.SkinDirectory, @"tourney-title"), SkinSource.Skin), Fields.TopCentre, Origins.BottomCentre, Clocks.Game, new Vector2(0, 1080 / scale), depth, true, Color.White)); titleNormal.ScaleToScreen(false, true); spriteManager.Add(titleActive = new pSprite(TextureManager.Load(Path.Combine(Tournament.SkinDirectory, @"tourney-title-chat"), SkinSource.Skin), Fields.TopRight, Origins.BottomRight, Clocks.Game, new Vector2(0, 1080 / scale), depth + 0.0001f, true, Color.White) { Alpha = 0 }); //Todo: Downscale float yPos = TournamentLayout.ClientBoxLeft.Bottom / GameBase.WindowManager.Ratio; float xPos = (GameBase.WindowManager.WidthScaled - CHAT_WIDTH) / 2f; float height = TournamentLayout.Height / GameBase.WindowManager.Ratio - yPos; float offset = 5; chatArea = new pScrollableArea(new RectangleF(xPos + offset, yPos + offset, CHAT_WIDTH - 2 * offset, height - 2 * offset), new Vector2(CHAT_WIDTH - 2 * offset, 0), true) { ScrollDragger = false, AllowContentDragging = false }; spriteManager.Add(chatBg = new pSprite(GameBase.WhitePixel, Fields.TopCentre, Origins.BottomCentre, Clocks.Game, new Vector2(0, 1080 / scale), depth + 0.0002f, true, new Color(0, 0, 0, 200)) { VectorScale = new Vector2(CHAT_WIDTH, height) * 1.6f, Alpha = 0 }); ChatEngine.OnNewMessage += handleMessage; }
internal ChannelListDialog() : base(LocalisationManager.GetString(OsuString.ChannelListDialog_SelectAnyChannelYouWishToJoin), true) { channelButtonList = new pScrollableArea(new Rectangle(0, 60, 550, 321), Vector2.Zero, false, 0, defaultTargetType); currentVerticalSpace = 400; AddOption(LocalisationManager.GetString(OsuString.General_Close), SkinManager.NEW_SKIN_COLOUR_MAIN, null, true); }
internal SpriteImportDialog() : base("Sprite Library", true) { spriteList = new pScrollableArea(new Rectangle(0, 50, 640, 360), new Vector2(640, 480), false, 0, defaultTargetType); if (BeatmapManager.Current.InOszContainer) { BeatmapManager.Current.Osz2ExtractSafe(); Folder = BeatmapManager.Current.ExtractionFolder; } else { Folder = BeatmapManager.Current.ContainingFolderAbsolute; } files = new List <string>(); pButton pb = new pButton("Cancel", new Vector2(40, 440), new Vector2(240, 30), 1, Color.Gray, delegate { Close(); }); spriteManager.Add(pb.SpriteCollection); pb = new pButton("Browse...", new Vector2(360, 440), new Vector2(240, 30), 1, Color.Orange, delegate { BrowseForFile(); }); spriteManager.Add(pb.SpriteCollection); string[] pngFiles = Directory.GetFiles(Folder, "*.png", SearchOption.AllDirectories); files.AddRange(pngFiles); string[] jpgFiles = Directory.GetFiles(Folder, "*.jpg", SearchOption.AllDirectories); files.AddRange(jpgFiles); }
public override void Initialize() { //background baseSpriteManager.Add(new pSprite(GameBase.WhitePixel, Fields.Native, Origins.TopLeft, Clocks.Game, Vector2.Zero, 0, true, c_background) { VectorScale = new Vector2(GameBase.WindowManager.Width, GameBase.WindowManager.Height) }); //header pText textCharts = new pText("Charts" + @" /", 28, new Vector2(PADDING, 60), 1, true, Color.White) { Origin = Origins.BottomLeft }; baseSpriteManager.Add(textCharts); t_currentCategory = new pText("All Charts", 20, new Vector2(120f, 58), 1, true, new Color(254, 220, 97)) { Origin = Origins.BottomLeft }; baseSpriteManager.Add(t_currentCategory); searchBox = new pSearchBox(18, new Vector2(PADDING, 33), 20, Graphics.Renderers.TextAlignment.Right); searchBox.OnChange += searchBox_OnChange; baseSpriteManager.Add(searchBox.SpriteCollection); baseSpriteManager.Add(new pBox(new Vector2(PADDING, 62), new Vector2(GameBase.WindowManager.WidthScaled - (PADDING * 2), 1), 1, Color.White)); t_categorySelection = new pText("All / Monthly / Themed / Special", 14, new Vector2(PADDING, 70), 1, true, Color.White) { Origin = Origins.TopLeft }; baseSpriteManager.Add(t_categorySelection); //list sa_chartList = new pScrollableArea(new RectangleF(PADDING / 2, 90, GameBase.WindowManager.WidthScaled - PADDING, GameBase.WindowManager.HeightScaled - PADDING - 90), Vector2.Zero, true); pWebRequest req = new pWebRequest("https://osu.ppy.sh/web/osu-getcharts.php?u={0}&h={1}", ConfigManager.sUsername, ConfigManager.sPassword); req.Finished += delegate(pWebRequest r, Exception e) { charts = JsonConvert.DeserializeObject <List <Chart> >(r.ResponseString); DoLayout(); }; req.Perform(); //footer backButton = new BackButton(delegate { GameBase.ChangeMode(OsuModes.Menu); }); spriteManagerTop.Add(backButton.SpriteCollection); KeyboardHandler.OnKeyPressed += onKeyPressed; base.Initialize(); }
public JumpTo() : base(LocalisationManager.GetString(OsuString.JumpToDialog_Title), true) { spriteManager.Add(new pBox(new Vector2(PADDING, 79), new Vector2(GameBase.WindowManager.WidthScaled - (PADDING * 2), 1), 1, Color.White)); spriteManager.Add(new pBox(new Vector2(PADDING, 440), new Vector2(GameBase.WindowManager.WidthScaled - (PADDING * 2), 1), 1, Color.White)); Rectangle scrollableArea = new Rectangle(PADDING, 80, (int)(640 * GameBase.WindowManager.WidthWidescreenRatio) - (PADDING * 2), 360); scrollableView = new pScrollableArea(scrollableArea, Vector2.Zero, true, 0, defaultTargetType); mapManager = new SpriteManager(true); topLayer = new SpriteManager(true); mapManager.SetWidescreen(GameBase.WindowManager.IsWidescreen); collectionLabel = new pText(LocalisationManager.GetString(OsuString.SongSelection_Collections) + ":", 20, new Vector2(PADDING, 30), 2, true, new Color(254, 220, 97)); collections = new pDropdown(topLayer, "All", new Vector2(PADDING, 55), 140, 3); searchBox = new pSearchBox(20, new Vector2(PADDING, 50), 20, Graphics.Renderers.TextAlignment.Right); searchTime = -1; spriteManager.Add(searchBox.SpriteCollection); spriteManager.Add(collectionLabel); scrollableView.AddChild(mapManager); searchBox.OnChange += delegate(pTextBox sender, bool newText) { if (!newText) { return; } if (searchBox.IsDefault && searchBox.textBeforeCommit.Length == 1) { searchTime = GameBase.Time; } else if (!searchBox.IsDefault) { searchTime = GameBase.Time + 300; } }; Closed += delegate { MusicControl.ClearPool(); }; collections.AddOption("All", "All"); collections.SetSelected("All", true); foreach (string c in CollectionManager.Collections.Keys) { collections.AddOption(c, c); } collections.OnSelect += collections_OnSelect; SelectedMap = BeatmapManager.Current; layout(); }
internal CollectionDialog(EventHandler onClose) : base(LocalisationManager.GetString(OsuString.CollectionDialog_Collection), true) { channelButtonList = new pScrollableArea(new Rectangle(0, 60, 550, 250), Vector2.Zero, false, 0, defaultTargetType); instance = this; Closed += onClose; closeAction = onClose; currentVerticalSpace = 320; AddOption(LocalisationManager.GetString(OsuString.CollectionDialog_DeleteCollection), Color.Red, del_OnClick); AddOption(LocalisationManager.GetString(OsuString.General_Close), Color.Gray, null, true); Collections = new List <CollectionSprites>(); foreach (KeyValuePair <string, List <string> > pair in CollectionManager.Collections) { Collections.Add(new CollectionSprites(pair.Key)); } refresh(); }
public OptionsBindingDialog() : base(LocalisationManager.GetString(OsuString.Options_Input_KeyBindings), false) { pa = new pScrollableArea(new Rectangle(110, 30, 420, 420), Vector2.Zero, false, 0, defaultTargetType); }
public OnlineSelection(Game game) : base(game) { if (AudioEngine.AudioState == AudioStates.Playing) { wasPlayingAudio = true; AudioEngine.TogglePause(); } spriteManager = new SpriteManager(true); resultsPane = new pScrollableArea(new Rectangle(0, 82, GameBase.WindowManager.WidthScaled - 4 - OsuDirect.WIDTH, 350), Vector2.Zero, true); spriteManagerFg = new SpriteManager(true); searchInfo = new pText("Type a search to begin.", 11, new Vector2(20, 40), 1, true, Color.YellowGreen); searchInfo.TextBold = true; spriteManager.Add(searchInfo); results = new pText("", 16, new Vector2(20, 80), 1, true, Color.White); spriteManager.Add(results); searchTextBox = new pTextBoxOmniscient(18, new Vector2(20, 20), 300, false, 1.1f); searchTextBox.OnChange += delegate { nextSearchUpdate = GameBase.Time + 600; }; spriteManagerFg.Add(searchTextBox.SpriteCollection); loadingText = new pSprite(TextureManager.Load(@"searching", SkinSource.Osu), new Vector2(320, 240), 1f, true, Color.TransparentWhite); loadingText.Origin = Origins.Centre; loadingText.UpdateTextureAlignment(); GameBase.spriteManager.Add(loadingText); backButton = new BackButton(delegate { GameBase.ChangeMode(OsuModes.Menu); }); spriteManagerFg.Add(backButton.SpriteCollection); int xPos = 330; pButton pb = new pButton("Newest Maps", new Vector2(xPos, 20), new Vector2(100, 20), 1, Color.Orange, delegate { lastSearch = "Newest"; searchTextBox.SetToDefault(); displayModeDropdown.SetSelected(0, false); }); spriteManager.Add(pb.SpriteCollection); xPos += 105; pb = new pButton("Top Rated", new Vector2(xPos, 20), new Vector2(100, 20), 1, Color.OrangeRed, delegate { lastSearch = "Top Rated"; searchTextBox.SetToDefault(); displayModeDropdown.SetSelected(0, false); }); spriteManager.Add(pb.SpriteCollection); xPos += 105; pb = new pButton("Most Played", new Vector2(xPos, 20), new Vector2(100, 20), 1, Color.SkyBlue, delegate { lastSearch = "Most Played"; searchTextBox.SetToDefault(); displayModeDropdown.SetSelected(0, false); }); spriteManager.Add(pb.SpriteCollection); pText t = new pText("Display:", 11, new Vector2(5, 55), 1, true, Color.White); t.TextBold = true; spriteManager.Add(t); displayExisting = new pCheckbox("Show already downloaded maps", 0.88f, new Vector2(320, 54), 1, false); spriteManager.Add(displayExisting.SpriteCollection); displayExisting.OnCheckChanged += displayExisting_OnCheckChanged; displayModeDropdown = new pDropdown(spriteManagerFg, "", new Vector2(50, 54)); displayModeDropdown.AddOption("All", 4); displayModeDropdown.AddOption("Ranked", 0); displayModeDropdown.AddOption("Ranked (Played)", 7); displayModeDropdown.AddOption("Qualified", 3); displayModeDropdown.AddOption("Pending/Help", 2); displayModeDropdown.AddOption("Graveyard", 5); displayModeDropdown.SetSelected(4, true); displayModeDropdown.OnSelect += pd_OnSelect; t = new pText("Mode:", 11, new Vector2(180, 55), 1, true, Color.White); t.TextBold = true; spriteManager.Add(t); displayOsuModeDropdown = new pDropdown(spriteManagerFg, "", new Vector2(220, 54), 85, 1); displayOsuModeDropdown.AddOption(@"All", -1); displayOsuModeDropdown.AddOption(@"osu!", 0); displayOsuModeDropdown.AddOption(@"Taiko", 1); displayOsuModeDropdown.AddOption(@"Catch the Beat", 2); displayOsuModeDropdown.AddOption(@"osu!mania", 3); displayOsuModeDropdown.SetSelected(-1, true); displayOsuModeDropdown.OnSelect += mode_OnSelect; KeyboardHandler.OnKeyRepeat += KeyboardHandler_OnKeyRepeat; }
public override void Initialize() { if (Player.currentScore == null && InputManager.ReplayScore == null) { GameBase.ChangeModeInstant(OsuModes.Menu, true); return; } spriteManagerWideBelow = new SpriteManager(true); InitializeLocalScore(); if (score == null) { GameBase.ChangeModeInstant(OsuModes.Menu, true); return; } if (BeatmapManager.Current == null || (!string.IsNullOrEmpty(score.FileChecksum) && BeatmapManager.Current.BeatmapChecksum != score.FileChecksum)) { Beatmap lookup = BeatmapManager.GetBeatmapByChecksum(score.FileChecksum); if (lookup != null) { BeatmapManager.Current = lookup; } } if (BeatmapManager.Current == null) { GameBase.ChangeModeInstant(OsuModes.Menu, true); return; } scrollableArea = new pScrollableArea(new Rectangle(0, 0, GameBase.WindowManager.WidthScaled, GameBase.WindowManager.HeightScaled), new Vector2(GameBase.WindowManager.WidthScaled, GameBase.WindowManager.HeightScaled * (rankingDialog != null ? 1.875f : 1) - 60), true, 60); spriteManagerWideScrolling = scrollableArea.ContentSpriteManager; //if (rankingDialog != null) rankingDialog.spriteManager = spriteManagerWide; spriteManagerWideAbove = new SpriteManager(true); BackButton back = new BackButton(delegate { Exit(); }); spriteManagerWideAbove.Add(back.SpriteCollection); bool Spectating = InputManager.ReplayStreaming; lock (StreamingManager.LockReplayScore) { InputManager.ReplayMode = false; InputManager.ReplayStreaming = false; InputManager.ReplayStartTime = 0; } startTime = GameBase.Time + 300; KeyboardHandler.OnKeyPressed += GameBase_OnKeyPressed; InputManager.Bind(InputEventType.OnClick, onClick); backgroundOverlay = new pSprite(TextureManager.Load(@"ranking-background-overlay", SkinSource.Osu), Fields.TopRight, Origins.Centre, Clocks.Game, new Vector2(180, SkinManager.UseNewLayout ? 200 : 170), 0.05f, true, Color.White); backgroundOverlay.Additive = true; backgroundOverlay.Transformations.Add(new Transformation(TransformationType.Rotation, 0, (float)(2 * Math.PI), GameBase.Time, GameBase.Time + 20000)); backgroundOverlay.Transformations[0].Loop = true; spriteManagerWideBelow.Add(backgroundOverlay); pSprite p = new pSprite(TextureManager.Load(@"ranking-title"), Fields.TopRight, Origins.TopRight, Clocks.Game, new Vector2(20, 0), 0.991F, true, Color.White); p.ViewOffsetImmune = SkinManager.UseNewLayout; spriteManagerWideScrolling.Add(p); InitializeRankingPanel(); stringTotalScore = String.Format(@"{0:00000000}", score.TotalScore); pSprite detailsBack = new pSprite(GameBase.WhitePixel, Fields.TopLeft, Origins.TopLeft, Clocks.Game, new Vector2(0, 0), 0.99F, true, Color.Black); detailsBack.Alpha = 0.8f; detailsBack.VectorScale = new Vector2(GameBase.WindowManager.WidthScaled * 1.6f, 60 * 1.6f); detailsBack.ViewOffsetImmune = true; spriteManagerWideScrolling.Add(detailsBack); InitializeSpecifics(); LoadScore(score); base.Initialize(); if (!ReplayMode) { PopupRecord(); } if (ReplayMode && !Spectating) { Progress(false); } else if (score.SectionResults.FindAll(t => t).Count > score.SectionResults.FindAll(t => !t).Count) { ApplauseChannel = AudioEngine.PlaySample(@"applause", 100, SkinSource.All); } }