Ejemplo n.º 1
0
 private void InitRandoData(On.Celeste.AreaData.orig_Load orig)
 {
     orig();
     RandoLogic.ProcessAreas();
     if (SavedData.SavedSettings == null)
     {
         Settings.SetNormalMaps();
     }
 }
Ejemplo n.º 2
0
 private void InitRandoData(On.Celeste.AreaData.orig_Load orig)
 {
     orig();
     this.MetaConfig = RandoMetadataFile.LoadAll();
     RandoLogic.ProcessAreas();
     if (SavedData.SavedSettings == null)
     {
         Settings.SetNormalMaps();
     }
 }
Ejemplo n.º 3
0
        private void PostAreaLoad(On.Celeste.AreaData.orig_Load orig)
        {
            orig();
            var heartTextures = new HashSet <string>();
            int altsides      = 0;

            foreach (var map in AreaData.Areas)
            {
                // Load "mapdir/mapname.altsideshelper.meta.yaml" as a AltSidesHelperMeta
                AltSidesHelperMeta meta;
                if (Everest.Content.TryGet("Maps/" + map.Mode[0].Path + ".altsideshelper.meta", out ModAsset metadata) && metadata.TryDeserialize(out meta))
                {
                    foreach (var mode in meta.Sides)
                    {
                        mode.ApplyPreset();
                        altsides++;
                        heartTextures.Add(mode.ChapterPanelHeartIcon);
                        if (mode.OverrideVanillaSideData)
                        {
                            Logger.Log(LogLevel.Info, "AltSidesHelper", $"Will customise A-Side for \"{map.SID}\".");
                        }
                    }
                    // Attach the meta to the AreaData
                    AltSidesMetadata[map] = meta;
                    if (meta.AltSideData.IsAltSide)
                    {
                        var aside = AreaData.Get(meta.AltSideData.For);
                        if (meta.AltSideData.CopyEndScreenData)
                        {
                            map.Meta.CompleteScreen = aside.Meta.CompleteScreen;
                        }
                        map.Meta.Mountain       = aside.Meta.Mountain;
                        map.MountainCursor      = aside.MountainCursor;
                        map.MountainCursorScale = aside.MountainCursorScale;
                        map.MountainIdle        = aside.MountainIdle;
                        map.MountainSelect      = aside.MountainSelect;
                        map.MountainState       = aside.MountainState;
                        map.MountainZoom        = aside.MountainZoom;
                        map.TitleAccentColor    = aside.TitleAccentColor;
                        map.TitleBaseColor      = aside.TitleBaseColor;
                        map.TitleTextColor      = aside.TitleTextColor;
                        map.Name = aside.Name;
                    }
                }
            }

            // sort alt-sides to the end
            AreaData.Areas.Sort(typeof(AreaData).GetMethod("AreaComparison", BindingFlags.NonPublic | BindingFlags.Static).CreateDelegate <Comparison <AreaData> >());

            Logger.Log(LogLevel.Info, "AltSidesHelper", $"Loaded {altsides} alt-sides!");

            SpriteBank crystalHeartSwaps = new SpriteBank(GFX.Gui, "Graphics/AltSidesHelper/Empty.xml");

            // TODO: allow using XMLs too - load them and copy them in
            Dictionary <string, Sprite> sprites = new Dictionary <string, Sprite>();

            foreach (var heart in heartTextures)
            {
                // our sprite ID will be "<heart sprite path keyified>"
                // we're talking along the lines of "collectables/heartgem/0/spin"
                // use the last part of the name as the loop paths, and the rest as element path

                var    parts    = heart.Split('/');
                var    loopPath = parts[parts.Length - 1];
                string elemPath = heart.Substring(0, heart.Length - loopPath.Length);

                var sprite = new Sprite(GFX.Gui, elemPath);
                sprite.AddLoop("idle", loopPath, 0, new int[] { 0 });
                sprite.AddLoop("spin", loopPath, 0.08f, new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
                sprite.AddLoop("fastspin", loopPath, 0.08f, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
                sprite.Play("idle");
                sprite.CenterOrigin();
                sprites.Add(heart.DialogKeyify(), sprite);
            }

            int hearts = 0;

            foreach (var kvp in sprites)
            {
                hearts++;
                crystalHeartSwaps.SpriteData[kvp.Key] = new SpriteData(GFX.Gui)
                {
                    Sprite = kvp.Value
                };
            }

            HeartSpriteBank = crystalHeartSwaps;
            Logger.Log(LogLevel.Info, "AltSidesHelper", $"Loaded {hearts} crystal heart UI textures.");
        }
Ejemplo n.º 4
0
 public void InitRandoData(On.Celeste.AreaData.orig_Load orig)
 {
     orig();
     RandoLogic.ProcessAreas();
     Settings.SetNormalMaps();
 }