Beispiel #1
0
        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" : "&current=" + 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();
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
 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);
 }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        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();
        }
Beispiel #8
0
        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);
 }
Beispiel #10
0
        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;
        }
Beispiel #11
0
        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);
            }
        }