private void InputManager_OnDown(InputSource source, TrackingPoint trackingPoint) { pRectangle rect = new pRectangle(Vector2.Zero, new Vector2(GameBase.NativeSize.Width, GameBase.NativeSize.Height), false, 0.2f, Color4.White); rect.FadeOutFromOne(500); spriteManager.Add(rect); pointAt(trackingPoint.BasePosition / GameBase.InputToFixedWidthAlign); }
public ProgressDisplay() { progressRectBg = new pRectangle(Vector2.Zero, new Vector2(GameBase.BaseSize.X, HEIGHT), true, 0.99f, Color4.Black); progressRectBg.Field = FieldTypes.StandardSnapBottomLeft; progressRectBg.Origin = OriginTypes.BottomLeft; Add(progressRectBg); progressRect = new pRectangle(Vector2.Zero, new Vector2(0, HEIGHT - 1), true, 1, gray_colour); progressRect.Field = FieldTypes.StandardSnapBottomLeft; progressRect.Origin = OriginTypes.BottomLeft; progressRect.Additive = true; Add(progressRect); }
internal void SetProgress(float progress, ScoreChange latestChange) { progressRect.Scale.X = GameBase.BaseSize.X * (progress - lastProgressStart); if (latestChange != lastDisplayedChange) { lastDisplayedChange = latestChange; Color4 displayColour = gray_colour; float heightMultiplier = 1; switch (lastDisplayedChange) { case ScoreChange.Hit300: displayColour = new Color4(255, 156, 55, 255); break; case ScoreChange.Hit100: displayColour = new Color4(117, 204, 65, 255); heightMultiplier = 0.9f; break; case ScoreChange.Hit50: displayColour = new Color4(118, 65, 143, 255); heightMultiplier = 0.8f; break; case ScoreChange.Miss: displayColour = new Color4(144, 0, 16, 255); heightMultiplier = 0.7f; break; } progressRect.FlashColour(Color4.White, 1000); //progressRect.Transform(new TransformationV(TransformationType.VectorScale, new Vector2(progressRect.Scale.X, progressRect.Scale.Y * 2), progressRect.Scale, Clock.ModeTime, Clock.ModeTime + 1000, EasingTypes.In)); progressRect = new pRectangle(new Vector2(progressRect.Scale.X + progressRect.Position.X, 0), new Vector2(0, HEIGHT * heightMultiplier - 1), true, 1, displayColour); progressRect.Field = FieldTypes.StandardSnapBottomLeft; progressRect.Origin = OriginTypes.BottomLeft; Add(progressRect); lastProgressStart = progress; } }
public override void Initialize() { mb = new MenuBackground(); mb.DrawDepth = 0.1f; mb.Position = new Vector2(440, -230); mb.ScaleScalar = 0.5f; osuLogo = new pSprite(TextureManager.Load(OsuTexture.menu_osu), FieldTypes.StandardSnapCentre, OriginTypes.Centre, ClockTypes.Mode, new Vector2(0, 0), 0.9f, true, Color4.White); osuLogo.ScaleScalar = 0.7f; mb.Add(osuLogo); //gloss osuLogoGloss = new pSprite(TextureManager.Load(OsuTexture.menu_gloss), FieldTypes.StandardSnapCentre, OriginTypes.Centre, ClockTypes.Mode, new Vector2(0, 0), 0.91f, true, Color4.White); osuLogoGloss.Additive = true; osuLogoGloss.ScaleScalar = 0.7f; mb.Add(osuLogoGloss); if (DownloadLink != null) { downloadRequest = new DataNetRequest(DownloadLink); downloadRequest.onUpdate += dnr_onUpdate; downloadRequest.onFinish += dnr_onFinish; NetManager.AddRequest(downloadRequest); } else { ShowMetadata(); } GameBase.ShowLoadingOverlay = true; loadingBackground = new pRectangle(Vector2.Zero, new Vector2(GameBase.BaseSize.X + 1, 0), true, 0, new Color4(0, 97, 115, 180)); loadingBackground.Additive = true; loadingBackground.Field = FieldTypes.StandardSnapBottomLeft; loadingBackground.Origin = OriginTypes.BottomLeft; spriteManager.Add(loadingBackground); spriteManager.Add(new BackButton(delegate { Director.ChangeMode(OsuMode.Store); }, false)); }
internal Spinner(HitObjectManager hitObjectManager, int startTime, int endTime, HitObjectSoundType soundType) : base(hitObjectManager, Vector2.Zero, startTime, soundType, true, 0) { if (SpinnerCentre == Vector2.Zero) { SpinnerCentre = GameBase.StandardToGamefield(new Vector2(GameBase.BaseSizeFixedWidth.X / 2, GameBase.BaseSizeFixedWidth.Y - (GameBase.BaseSizeFixedWidth.Y / GameBase.BaseSize.Y) * SpinnerCentreFromBottom.Y)); } Position = SpinnerCentre; EndTime = endTime; Type = HitObjectType.Spinner; Colour = Color4.Gray; Color4 white = Color4.White; //Check for a jpg background for beatmap-based skins (used to reduce filesize), then fallback to png. SpriteBackground = new pSprite(TextureManager.Load(OsuTexture.spinner_background), FieldTypes.StandardSnapBottomCentre, OriginTypes.BottomCentre, ClockTypes.Audio, new Vector2(0, 0), SpriteManager.drawOrderFwdLowPrio(2), false, white); Sprites.Add(SpriteBackground); spriteCircle = new pSprite(TextureManager.Load(OsuTexture.spinner_circle), FieldTypes.StandardSnapBottomCentre, OriginTypes.Centre, ClockTypes.Audio, SpinnerCentreFromBottom, SpriteManager.drawOrderFwdLowPrio(3), false, white) { ExactCoordinates = false }; Sprites.Add(spriteCircle); //todo: possible optimisation by changing the draw method for filling of spinner metres. spriteScoreMetreBackground = new pRectangle(Vector2.Zero, new Vector2(GameBase.BaseSizeFixedWidth.X, GameBase.BaseSize.Y), false, SpriteManager.drawOrderFwdLowPrio(0), new Color4(20, 20, 20, 255)) { Clocking = ClockTypes.Audio, Field = FieldTypes.StandardSnapBottomCentre, Origin = OriginTypes.BottomCentre }; Sprites.Add(spriteScoreMetreBackground); spriteScoreMetreForeground = new pRectangle(Vector2.Zero, new Vector2(GameBase.BaseSizeFixedWidth.X, 0), false, SpriteManager.drawOrderFwdLowPrio(1), Color4.OrangeRed) { Clocking = ClockTypes.Audio, Field = FieldTypes.StandardSnapBottomCentre, Origin = OriginTypes.BottomCentre }; Sprites.Add(spriteScoreMetreForeground); ApproachCircle = new ApproachCircle(SpinnerCentreFromBottom, 1, false, SpriteManager.drawOrderFwdLowPrio(5), new Color4(77 / 255f, 139 / 255f, 217 / 255f, 1)); ApproachCircle.Width = 8; ApproachCircle.Clocking = ClockTypes.Audio; ApproachCircle.Field = FieldTypes.StandardSnapBottomCentre; Sprites.Add(ApproachCircle); spriteBonus = new pSpriteText("", "score", -5, // SkinManager.Current.FontScore, SkinManager.Current.FontScoreOverlap, FieldTypes.StandardSnapBottomCentre, OriginTypes.Centre, ClockTypes.Audio, SpinnerCentreFromBottom - new Vector2(0, 80), SpriteManager.drawOrderFwdLowPrio(6), false, white); spriteBonus.Additive = true; Sprites.Add(spriteBonus); foreach (pDrawable p in Sprites) { p.Transformations.Clear(); p.Transform(new TransformationF(TransformationType.Fade, 0, 1, StartTime - DifficultyManager.FadeIn, StartTime)); p.Transform(new TransformationF(TransformationType.Fade, 1, 0, EndTime, EndTime + (spriteScoreMetreForeground == p ? DifficultyManager.FadeOut / 4 : DifficultyManager.FadeOut / 2))); } SpriteSpin = new pSprite(TextureManager.Load(OsuTexture.spinner_spin), FieldTypes.StandardSnapBottomCentre, OriginTypes.Centre, ClockTypes.Audio, SpinnerCentreFromBottom, SpriteManager.drawOrderFwdLowPrio(5), false, white); SpriteSpin.Transform(new TransformationF(TransformationType.Fade, 0, 1, StartTime - DifficultyManager.FadeIn / 2, StartTime)); SpriteSpin.Transform(new TransformationF(TransformationType.Fade, 1, 0, EndTime - Math.Min(400, endTime - startTime), EndTime)); Sprites.Add(SpriteSpin); ApproachCircle.Transform(new TransformationF(TransformationType.Scale, GameBase.BaseSizeFixedWidth.Y * 0.47f, 0.1f, StartTime, EndTime)); SpriteClear = new pSprite(TextureManager.Load(OsuTexture.spinner_clear), FieldTypes.StandardSnapBottomCentre, OriginTypes.Centre, ClockTypes.Audio, SpinnerCentreFromBottom + new Vector2(0, 80), SpriteManager.drawOrderFwdLowPrio(6), false, white); SpriteClear.Transform(new TransformationF(TransformationType.Fade, 0, 0, startTime, endTime)); Sprites.Add(SpriteClear); currentRotationCount = 0; rotationRequirement = (int)((float)(EndTime - StartTime) / 1000 * DifficultyManager.SpinnerRotationRatio) * sensitivity_modifier; }