Пример #1
0
        private void PoemColor(On.Celeste.Poem.orig_ctor orig, Poem self, string text, int heartindex, float heartalpha)
        {
            orig(self, text, heartindex, heartalpha);

            var settings = this.InRandomizerSettings;

            if (heartindex == 3 || settings == null)
            {
                return;
            }

            Color  color     = Color.White;
            string guiSprite = "";

            switch (settings.Difficulty)
            {
            case Difficulty.Easy:
                color     = Calc.HexToColor("20c020");
                guiSprite = "heartgem0";
                break;

            case Difficulty.Normal:
                color     = Calc.HexToColor("8cc7fa");
                guiSprite = "heartgem0";
                break;

            case Difficulty.Hard:
                color     = Calc.HexToColor("ff668a");
                guiSprite = "heartgem1";
                break;

            case Difficulty.Expert:
                color     = Calc.HexToColor("fffc24");
                guiSprite = "heartgem2";
                break;

            case Difficulty.Master:
                color     = Calc.HexToColor("ff5024");
                guiSprite = "Randomizer_HeartMaster";
                break;

            case Difficulty.Perfect:
                color     = Calc.HexToColor("9B3FB5");
                guiSprite = "Randomizer_HeartPerfect";
                break;
            }

            typeof(Poem).GetProperty("Color").SetValue(self, color);

            self.Heart = GFX.GuiSpriteBank.Create(guiSprite);
            self.Heart.Play("spin");
            self.Heart.Position = new Vector2(1920f, 1080f) * 0.5f;
            self.Heart.Color    = Color.White * heartalpha;
        }
Пример #2
0
        private void SetPoemColour(On.Celeste.Poem.orig_ctor orig, Poem self, string text, int heartIndex, float heartAlpha)
        {
            var data = AreaData.Get((Engine.Scene as Level).Session.Area);
            var m    = GetModeMetaForAltSide(data);

            if (data != null)
            {
                Logger.Log("AltSidesHelper", $"Customising poem UI for \"{data.SID}\".");
            }
            if (!(m?.ShowHeartPoem) ?? false)
            {
                text = null;
            }
            orig(self, text, heartIndex, heartAlpha);
            // customize heart gem icon
            string animId = null;

            // our sprite ID will be "AltSidesHelper_<heart sprite path keyified>"
            // log duplicate entries for a map
            var   sid               = (Engine.Scene as Level).Session.Area.SID;
            Color?color             = null;
            AltSidesHelperMode mode = GetModeMetaForAltSide(AreaData.Get(sid));

            if (mode != null && mode.OverrideHeartTextures)
            {
                animId = mode.ChapterPanelHeartIcon.DialogKeyify();
                if (!mode.HeartColour.Equals(""))
                {
                    color = Calc.HexToColor(mode.HeartColour);
                }
            }

            if (animId != null)
            {
                if (HeartSpriteBank.Has(animId))
                {
                    HeartSpriteBank.CreateOn(self.Heart, animId);
                    self.Heart.Play("spin");
                    self.Heart.CenterOrigin();
                    Logger.Log("AltSidesHelper", $"Changed poem heart sprite for \"{data.SID}\".");
                }
            }
            if (color != null)
            {
                new DynData <Poem>(self)["Color"] = color;
                Logger.Log("AltSidesHelper", $"Changed poem colour for \"{data.SID}\".");
            }
        }
Пример #3
0
        private static void customizePoemDisplay(On.Celeste.Poem.orig_ctor orig, Poem self, string text, int heartIndex, float heartAlpha)
        {
            orig(self, text, heartIndex, heartAlpha);

            string sid = (Engine.Scene as Level).Session.Area.GetSID();

            if (InGameOverworldHelper.HeartSpriteBank.Has("crystalHeart_" + sid.DialogKeyify()))
            {
                // we have a custom heart in our sprite bank, use it.
                InGameOverworldHelper.HeartSpriteBank.CreateOn(self.Heart, "crystalHeart_" + sid.DialogKeyify());
                self.Heart.Play("spin");

                // and adjust the screen color to the heart.
                DynData <Poem> selfData = new DynData <Poem>(self);
                switch (self.Heart.Texture.AtlasPath)
                {
                case "collectables/heartgem/1/spin00":
                    selfData["Color"] = Calc.HexToColor("ff668a");
                    break;

                case "collectables/heartgem/2/spin00":
                    selfData["Color"] = Calc.HexToColor("D2AD01");
                    break;

                case "CollabUtils2/crystalHeart/expert/spin00":
                    selfData["Color"] = Color.Orange;
                    break;

                case "CollabUtils2/crystalHeart/grandmaster/spin00":
                    selfData["Color"] = Calc.HexToColor("d9a2ff");
                    break;

                default:
                    Match match = Regex.Match(self.Heart.Texture.AtlasPath, "poemtextcolor_([0-9a-fA-F]{6})");
                    if (match.Success)
                    {
                        selfData["Color"] = Calc.HexToColor(match.Groups[1].Value);
                    }
                    break;
                }
            }
        }
Пример #4
0
        private void SetPoemColour(On.Celeste.Poem.orig_ctor orig, Poem self, string text, int heartIndex, float heartAlpha)
        {
            orig(self, text, heartIndex, heartAlpha);
            // customize heart gem icon
            string animId = null;

            // our sprite ID will be "AltSidesHelper_<heart sprite path keyified>"
            // log duplicate entries for a map
            var   sid   = (Engine.Scene as Level).Session.Area.SID;
            Color?color = null;
            AltSidesHelperMeta parentHelperMeta = GetMetaForAreaData(AreaData.Get(GetMetaForAreaData(AreaData.Get(sid))?.AltSideData?.For));

            if (parentHelperMeta != null)
            {
                foreach (var mode in parentHelperMeta.Sides)
                {
                    if (mode.Map.Equals(sid))
                    {
                        animId = mode.ChapterPanelHeartIcon.DialogKeyify();
                        if (!mode.PoemDisplayColor.Equals(""))
                        {
                            color = Calc.HexToColor(mode.PoemDisplayColor);
                        }
                    }
                }
            }

            if (animId != null)
            {
                if (HeartSpriteBank.Has(animId))
                {
                    HeartSpriteBank.CreateOn(self.Heart, animId);
                    self.Heart.Play("spin");
                    self.Heart.CenterOrigin();
                }
            }
            if (color != null)
            {
                new DynData <Poem>(self)["Color"] = color;
            }
        }