Esempio n. 1
0
        private InSongBoard SetupLeaderboardObject()
        {
            GameObject Leaderboard = new GameObject("InSongLeaderboard");
            Canvas     canvas      = Leaderboard.AddComponent <Canvas>();

            canvas.renderMode = RenderMode.WorldSpace;
            CanvasScaler cs = Leaderboard.AddComponent <CanvasScaler>();

            cs.scaleFactor          = 1.0f;
            cs.dynamicPixelsPerUnit = 10f;
            GraphicRaycaster gr = Leaderboard.AddComponent <GraphicRaycaster>();
            // Leaderboard.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f);
            // Leaderboard.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f);

            GameObject            coreGameHUD   = Resources.FindObjectsOfTypeAll <CoreGameHUDController>()?.FirstOrDefault(x => x.isActiveAndEnabled)?.gameObject ?? null;
            FlyingGameHUDRotation flyingGameHUD = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().FirstOrDefault(x => x.isActiveAndEnabled);

            if (coreGameHUD != null)
            {
                Leaderboard.transform.SetParent(coreGameHUD.transform, true);
            }
            //      textObj.transform.position = new Vector3(0, 0f, 0);
            float depth = coreGameHUD != null?coreGameHUD.transform.GetChild(1).transform.position.z : 9f;

            if (flyingGameHUD != null)
            {
                depth = flyingGameHUD.transform.GetChild(0).transform.position.z / 2;
                //  Leaderboard.transform.localPosition = new Vector3(0, 0.75f, 6f);
                Leaderboard.transform.eulerAngles = new Vector3(345f, 0f, 0f);
            }
            Leaderboard.transform.localPosition = new Vector3(PluginConfig.Instance.position.x, PluginConfig.Instance.position.y, depth);
            Leaderboard.transform.localRotation = Quaternion.identity;
            Leaderboard.transform.localScale    = PluginConfig.Instance.scale * new Vector3(0.06f, 0.06f, 0.06f);
            var canvasSettings = Leaderboard.AddComponent <CurvedCanvasSettings>();

            canvasSettings.SetRadius(0);

            var boardHandler = Leaderboard.AddComponent <InSongBoard>();

            BSMLParser.instance.Parse(BeatSaberMarkupLanguage.Utilities.
                                      GetResourceContent(Assembly.GetExecutingAssembly(), "InSongLeaderboard.board.bsml"), Leaderboard, boardHandler);
            return(boardHandler);
        }
        IEnumerator Init()
        {
            yield return(new WaitForSeconds(0.1f));

            GameObject display = new GameObject("GMPDisplay");
            GameObject textObj = new GameObject("GMPDisplayText");

            if (Config.uiOnTop)
            {
                textObj.transform.position    = new Vector3(0.1f, 3f, 7f);
                textObj.transform.localScale *= 1.5f;
            }

            else
            {
                textObj.transform.position    = new Vector3(0.2f, -1f, 7f);
                textObj.transform.localScale *= 2.0f;
            }
            textObj.transform.SetParent(display.transform);

            var counterImage = Resources.FindObjectsOfTypeAll <ScoreMultiplierUIController>().First().
                               GetField <Image, ScoreMultiplierUIController>("_multiplierProgressImage");


            GameObject canvasobj = new GameObject("GMPDisplayCanvas");
            Canvas     canvas    = canvasobj.AddComponent <Canvas>();

            canvas.renderMode = RenderMode.WorldSpace;
            CanvasScaler cs = canvasobj.AddComponent <CanvasScaler>();

            cs.scaleFactor          = 10.0f;
            cs.dynamicPixelsPerUnit = 10f;
            GraphicRaycaster gr = canvasobj.AddComponent <GraphicRaycaster>();

            canvasobj.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f);
            canvasobj.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f);

            GameObject counter = new GameObject("GMPDisplayCounter");

            chargeCounter            = counter.AddComponent <ImageView>();
            counter.transform.parent = canvasobj.transform;
            counter.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0.5f);
            counter.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0.5f);
            counter.transform.localScale = new Vector3(1f, 1f, 1f);

            chargeCounter.sprite        = counterImage.sprite;
            chargeCounter.type          = Image.Type.Filled;
            chargeCounter.fillMethod    = Image.FillMethod.Radial360;
            chargeCounter.fillOrigin    = (int)Image.Origin360.Top;
            chargeCounter.fillClockwise = true;
            chargeCounter.fillAmount    = GameModifiersController.charges / Config.maxCharges;
            chargeCounter.color         = Color.green;

            GameObject background = new GameObject("GMPDisplayBackGround");
            var        bg         = background.AddComponent <ImageView>();

            background.transform.parent = canvasobj.transform;
            background.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0.5f);
            background.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0.5f);
            background.transform.localScale = new Vector3(1f, 1f, 1f);

            bg.sprite = counterImage.sprite;
            bg.CrossFadeAlpha(0.05f, 1f, false);

            canvasobj.GetComponent <RectTransform>().SetParent(textObj.transform, false);
            canvasobj.transform.localPosition = new Vector3(-0.1f, -.1f, 0f);

            chargeText                       = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, "Charges", new Vector2(-0.25f, 0.5f)) as CurvedTextMeshPro;
            chargeText.fontSize              = 3;
            chargeText.transform.localScale *= .08f;
            chargeText.color                 = Color.white;
            //    chargeText.font = Resources.Load<TMP_FontAsset>("Teko-Medium SDF No Glow");
            chargeText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f);
            chargeText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f);
            chargeText.GetComponent <RectTransform>().SetParent(canvas.transform, false);


            chargeCountText                       = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, GameModifiersController.charges.ToString(), new Vector2(0, 0)) as CurvedTextMeshPro;
            chargeCountText.text                  = GameModifiersController.charges.ToString();
            chargeCountText.alignment             = TextAlignmentOptions.Center;
            chargeCountText.transform.localScale *= .08f;
            chargeCountText.fontSize              = 2.5f;
            chargeCountText.color                 = Color.white;
            chargeCountText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 1f);
            chargeCountText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f);
            chargeCountText.GetComponent <RectTransform>().SetParent(canvas.transform, false);
            //   chargeCountText.transform.localPosition = new Vector3(-0.0925f, -.13f, 0f);

            cooldownText                       = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, GameModifiersController.charges.ToString(), new Vector2(-1f, 0.015f)) as CurvedTextMeshPro;
            cooldownText.text                  = "";
            cooldownText.alignment             = TextAlignmentOptions.MidlineRight;
            cooldownText.fontSize              = 2.5f;
            cooldownText.transform.localScale *= .08f;
            cooldownText.color                 = Color.red;
            //     cooldownText.font = Resources.Load<TMP_FontAsset>("Teko-Medium SDF No Glow");
            cooldownText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 10f);
            cooldownText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f);
            cooldownText.GetComponent <RectTransform>().SetParent(canvas.transform, false);

            activeCommandText                       = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(canvas.transform as RectTransform, GameModifiersController.charges.ToString(), new Vector2(1f, 0.015f)) as CurvedTextMeshPro;
            activeCommandText.text                  = "";
            activeCommandText.alignment             = TextAlignmentOptions.MidlineLeft;
            activeCommandText.fontSize              = 2.5f;
            activeCommandText.transform.localScale *= .08f;
            activeCommandText.color                 = Color.yellow;
            //     activeCommandText.font = Resources.Load<TMP_FontAsset>("Teko-Medium SDF No Glow");
            activeCommandText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 10f);
            activeCommandText.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1f);
            activeCommandText.GetComponent <RectTransform>().SetParent(canvas.transform, false);

            GameObject            coreGameHUD   = Resources.FindObjectsOfTypeAll <CoreGameHUDController>()?.FirstOrDefault(x => x.isActiveAndEnabled)?.gameObject ?? null;
            FlyingGameHUDRotation flyingGameHUD = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().FirstOrDefault(x => x.isActiveAndEnabled);

            if (coreGameHUD != null)
            {
                display.transform.SetParent(coreGameHUD.transform, true);
            }
            //      textObj.transform.position = new Vector3(0, 0f, 0);
            display.transform.localPosition = new Vector3(0, 0f, 0f);
            display.transform.localRotation = Quaternion.identity;
            if (flyingGameHUD != null)
            {
                display.transform.localPosition = new Vector3(0, 0.75f, 6f);
                display.transform.eulerAngles   = new Vector3(345f, 0f, 0f);
            }
            var canvasSettings = canvasobj.AddComponent <CurvedCanvasSettings>();

            canvasSettings.SetRadius(0);
            display.SetActive(GMPUI.chatIntegration);
            initialized = true;
        }
Esempio n. 3
0
        public static Canvas CreateCanvas(Vector3 Position, bool floatingHUD = false, float CanvasScaleFactor = 10)
        {
            Canvas     canvas;
            GameObject CanvasGO = new GameObject("Counters+ | Counters Canvas");

            canvas = CanvasGO.AddComponent <Canvas>();
            System.DateTime date = System.DateTime.Now;
            if (date.Month == 4 && date.Day == 1 && CountersController.settings.AprilFoolsTomfoolery)
            {
                CanvasGO.AddComponent <OopsAllAprilFools>();
            }
            canvas.renderMode             = RenderMode.WorldSpace;
            CanvasGO.transform.localScale = Vector3.one / CanvasScaleFactor;
            CanvasGO.transform.position   = Position;
            CanvasGO.transform.rotation   = Quaternion.Euler(CountersController.settings.hudConfig.HUDRotation);

            GameObject            coreGameHUD   = Resources.FindObjectsOfTypeAll <CoreGameHUDController>()?.FirstOrDefault(x => x.isActiveAndEnabled)?.gameObject ?? null;
            FlyingGameHUDRotation flyingGameHUD = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().FirstOrDefault(x => x.isActiveAndEnabled);
            bool attachToHUD = flyingGameHUD != null && CountersController.settings.hudConfig.AttachToBaseGameHUDFor360;

            if (CountersController.settings.hudConfig.AttachBaseGameHUD && !attachToHUD && coreGameHUD != null)
            {
                coreGameHUD.transform.SetParent(CanvasGO.transform, true);
                coreGameHUD.transform.localScale    = Vector3.one * 10;
                coreGameHUD.transform.localPosition = Vector3.zero;
                coreGameHUD.transform.localRotation = Quaternion.identity;
                foreach (Transform children in coreGameHUD.transform)
                {
                    if (children.Find("BG"))
                    {
                        children.Find("BG").gameObject.SetActive(false);
                    }
                    if (children.Find("Top"))
                    {
                        children.Find("Top").gameObject.SetActive(false);
                    }
                    children.localPosition = new Vector3(children.localPosition.x, children.localPosition.y, 0);
                }
                if (flyingGameHUD != null)
                {
                    Object.Destroy(coreGameHUD.GetComponent <FlyingGameHUDRotation>());
                    Transform container = coreGameHUD.transform.GetChild(0);
                    container.localPosition = new Vector3(0, 1.8f, 0);
                    container.localRotation = Quaternion.identity;
                    foreach (Transform children in container)
                    {
                        switch (children.name)
                        {
                        default: break;

                        case "EnergyPanel":
                            children.localPosition = new Vector3(0, -120, 0);
                            break;

                        case "ComboPanel":
                            children.localPosition = new Vector3(-160, -57.5f, 0);
                            break;

                        case "MultiplierCanvas":
                            children.localPosition = new Vector3(160, 0, 0);
                            break;
                        }
                    }
                }
            }
            else if (attachToHUD)
            {
                CanvasGO.transform.SetParent(coreGameHUD.transform.GetChild(0), false);
                CanvasGO.transform.localPosition = Vector3.down * 70;
                CanvasGO.transform.localRotation = Quaternion.identity;
                CanvasGO.transform.localScale    = Vector3.one * 4;
            }

            if (floatingHUD && !attachToHUD)
            {
                CanvasGO.AddComponent <AssignedFloatingWindow>();
            }

            return(canvas);
        }