private static void customizeCrystalHeart(OuiChapterPanel panel) { // customize heart gem icon string animId = null; string sid = panel.Area.GetSID(); string mapName = sid.DialogKeyify(); string mapLevelSet = AreaData.Get(sid)?.GetLevelSet().DialogKeyify(); if (HeartSpriteBank.Has("crystalHeart_" + mapName)) { // this map has a custom heart registered: use it. animId = "crystalHeart_" + mapName; } else if (HeartSpriteBank.Has("crystalHeart_" + mapLevelSet)) { // this level set has a custom heart registered: use it. animId = "crystalHeart_" + mapLevelSet; } if (animId != null) { Sprite heartSprite = HeartSpriteBank.Create(animId); new DynData <OuiChapterPanel>(panel).Get <HeartGemDisplay>("heart").Sprites[0] = heartSprite; heartSprite.Play("spin"); new DynData <OuiChapterPanel>(panel)["heartDirty"] = true; } }
private static void CustomizeCrystalHeart(OuiChapterPanel panel) { // customize heart gem icon string animId = null; // our sprite ID will be "AltSidesHelper_<heart sprite path keyified>" var data = AreaData.Get(panel.Area); AltSidesHelperMode mode = GetModeMetaForAltSide(data); if (mode != null) { Logger.Log("AltSidesHelper", $"Found meta for \"{data.SID}\" when customising UI heart."); if (mode.OverrideHeartTextures) { animId = mode.ChapterPanelHeartIcon.DialogKeyify(); Logger.Log("AltSidesHelper", $"Will change UI heart sprite for \"{data.SID}\"."); } } if (animId != null) { if (HeartSpriteBank.Has(animId)) { Logger.Log("AltSidesHelper", $"Replacing UI heart sprite for \"{data.SID}\"."); Sprite heartSprite = HeartSpriteBank.Create(animId); var selfdata = new DynData <OuiChapterPanel>(panel); var oldheart = selfdata.Get <HeartGemDisplay>("heart"); bool prevVisible = oldheart.Sprites[0].Visible; oldheart.Sprites[0] = heartSprite; heartSprite.CenterOrigin(); heartSprite.Play("spin"); heartSprite.Visible = prevVisible || oldheart.Sprites[1].Visible || oldheart.Sprites[2].Visible; selfdata["AsHeartDirty"] = true; } } }
private static void CustomizeCrystalHeart(OuiChapterPanel panel) { // customize heart gem icon string animId = null; // our sprite ID will be "AltSidesHelper_<heart sprite path keyified>" // log duplicate entries for a map AltSidesHelperMeta parentHelperMeta = GetMetaForAreaData(AreaData.Get(GetMetaForAreaData(AreaData.Get(panel.Area))?.AltSideData?.For)); if (parentHelperMeta != null) { foreach (var mode in parentHelperMeta.Sides) { if (mode.Map.Equals(panel.Area.SID)) { animId = mode.ChapterPanelHeartIcon.DialogKeyify(); } } } if (animId != null) { if (HeartSpriteBank.Has(animId)) { Sprite heartSprite = HeartSpriteBank.Create(animId); var selfdata = new DynData <OuiChapterPanel>(panel); var oldheart = selfdata.Get <HeartGemDisplay>("heart"); bool prevVisible = oldheart.Sprites[0].Visible; oldheart.Sprites[0] = heartSprite; heartSprite.CenterOrigin(); heartSprite.Play("spin"); heartSprite.Visible = prevVisible; selfdata["AsHeartDirty"] = true; } } }