private void InitRandoData(On.Celeste.AreaData.orig_Load orig) { orig(); RandoLogic.ProcessAreas(); if (SavedData.SavedSettings == null) { Settings.SetNormalMaps(); } }
private void InitRandoData(On.Celeste.AreaData.orig_Load orig) { orig(); this.MetaConfig = RandoMetadataFile.LoadAll(); RandoLogic.ProcessAreas(); if (SavedData.SavedSettings == null) { Settings.SetNormalMaps(); } }
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."); }
public void InitRandoData(On.Celeste.AreaData.orig_Load orig) { orig(); RandoLogic.ProcessAreas(); Settings.SetNormalMaps(); }