コード例 #1
0
        private void updateBackgroundAlignment(pSprite s, AlignmentMode alignmentMode, BackgroundAdjustmentDelegate backgroundAdjustment)
        {
            if (s == null || BackgroundTexture == null)
            {
                return;
            }

            if ((alignmentMode & AlignmentMode.Storyboard) != 0)
            {
                s.ScaleToScreen((alignmentMode & AlignmentMode.Widescreen) != 0);
            }
            else
            {
                //first align based on height
                s.Scale = (float)GameBase.WindowManager.SpriteRes / BackgroundTexture.DisplayHeight;

                //if it isn't wide enough, let's make it so.
                if (s.Width * s.Scale * GameBase.WindowManager.RatioInverse < GameBase.WindowManager.Width)
                {
                    s.Scale = GameBase.WindowManager.Width / ((float)s.Width * GameBase.WindowManager.RatioInverse);
                }
            }

            if (backgroundAdjustment != null)
            {
                backgroundAdjustment(BackgroundSprite);
            }

            currentAlignmentMode        = alignmentMode;
            currentBackgroundAdjustment = backgroundAdjustment;
        }
コード例 #2
0
ファイル: ChatManager.cs プロジェクト: notperry1234567890/osu
        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;
        }
コード例 #3
0
        internal BackgroundManager(Tournament tournament, SpriteManager spriteManager, float depth)
        {
            this.tournament = tournament;

            var remoteBackgroundSprite = new pSpriteDynamic(Tournament.Config.GetValue(@"background", @"https://osu.ppy.sh/images/tournament/default.png"), null, 0, Vector2.Zero, 0.1f)
            {
                AlwaysDraw = true,
                Alpha      = 0
            };

            remoteBackgroundSprite.OnTextureLoaded += () => remoteBackgroundSprite.ScaleToScreen(false, true);
            spriteManager.Add(remoteBackgroundSprite);

            foreach (string bg in backgroundNames)
            {
                var tex = TextureManager.Load(Path.Combine(Tournament.SkinDirectory, bg));
                if (tex != null)
                {
                    var bgSprite = new pSprite(tex, Fields.TopLeft, Origins.TopLeft, Clocks.Game, Vector2.Zero, depth, true, Color.White)
                    {
                        Alpha = 0
                    };
                    bgSprite.ScaleToScreen(false, true);

                    modeBackgroundSprites.Add(bg, bgSprite);
                    spriteManager.Add(bgSprite);
                }

                var tempVideo = new pVideo(Path.Combine(Tournament.SkinDirectory, bg), SkinSource.Skin, Clocks.Game);
                if (tempVideo.Texture != null)
                {
                    tempVideo.Field  = Fields.TopLeft;
                    tempVideo.Origin = Origins.TopLeft;
                    // Make sure videos are above backgrounds in all cases
                    tempVideo.Depth = depth + 0.0001f;
                    tempVideo.Alpha = 0;
                    tempVideo.Loop  = true;
                    tempVideo.ScaleToScreen(false, true);
                    tempVideo.UpdateTextureAlignment();

                    modeBackgroundVideos.Add(bg, tempVideo);
                    spriteManager.Add(tempVideo);
                }

                depth += 0.00001f;
            }

            if (!modeBackgroundSprites.ContainsKey(backgroundNames[0]))
            {
                modeBackgroundSprites.Add(backgroundNames[0], remoteBackgroundSprite);
            }

            loadBackground(@"background");
        }