示例#1
0
        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;
            }
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        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;
                }
            }
        }