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; }
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}\"."); } }
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; } } }
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; } }