Example #1
0
    void updateCrystalColor(CrystalColor color)
    {
        int crystal_id = (int)color;

        if (obtainCrystal.ContainsKey(color))
        {
            crystalPlace [crystal_id].sprite2D = crystalColors [crystal_id];
        }
        else
        {
            crystalPlace [crystal_id].sprite2D = crystalNotFound;
        }
    }
        public override void Awake(Scene scene)
        {
            if ((int)color == -1)
            {
                Add(new CoreModeListener(this));
                if ((scene as Level).CoreMode == Session.CoreModes.Cold)
                {
                    color = CrystalColor.Blue;
                }
                else
                {
                    color = CrystalColor.Red;
                }
            }

            orig_Awake(scene);
        }
Example #3
0
 // クリスタルを接続したときの処理
 public void ConnectCrystal(CrystalColor crystalColor)
 {
     connectedNum++;
     // 馬を生成する
     spawner.Spawn();
     // 青クリスタルを接続したらゲーム開始
     if (crystalColor == CrystalColor.Blue)
     {
         // ゲーム開始
         GameStart();
     }
     else
     {
         // クリスタルをカウントする
         CountCrystal();
     }
 }
Example #4
0
 public void addCrystal(CrystalColor color)
 {
     obtainedCrystal [color] = true;
     this.refreshCrystals();
 }
 public void ctor(EntityData data, Vector2 offset, CrystalColor color)
 {
     orig_ctor(data, offset, color);
     ID = data.ID;
 }
 public extern void orig_ctor(EntityData data, Vector2 offset, CrystalColor color);
 public patch_CrystalStaticSpinner(Vector2 position, bool attachToSolid, CrystalColor color)
     : base(position, attachToSolid, color)
 {
     // no-op. MonoMod ignores this - we only need this to make the compiler shut up.
 }
Example #8
0
        /// <summary>
        /// Search for a custom entity that matches the <see cref="EntityData.Name"/>.<br/>
        /// To register a custom entity, use <see cref="CustomEntityAttribute"/> or <see cref="Everest.Events.Level.OnLoadEntity"/>.<br/>
        /// <seealso href="https://github.com/EverestAPI/Resources/wiki/Custom-Entities-and-Triggers">Read More</seealso>.
        /// </summary>
        /// <param name="entityData"></param>
        /// <param name="level">The level to add the entity to.</param>
        /// <returns></returns>
        public static bool LoadCustomEntity(EntityData entityData, Level level)
        {
            LevelData levelData = level.Session.LevelData;
            Vector2   offset    = new Vector2(levelData.Bounds.Left, levelData.Bounds.Top);

            if (Everest.Events.Level.LoadEntity(level, levelData, offset, entityData))
            {
                return(true);
            }

            if (EntityLoaders.TryGetValue(entityData.Name, out EntityLoader loader))
            {
                Entity loaded = loader(level, levelData, offset, entityData);
                if (loaded != null)
                {
                    level.Add(loaded);
                    return(true);
                }
            }

            if (entityData.Name == "everest/spaceController")
            {
                level.Add(new SpaceController());
                return(true);
            }

            // The following entities have hardcoded "attributes."
            // Everest allows custom maps to set them.

            if (entityData.Name == "spinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustStaticSpinner(entityData, offset));
                    return(true);
                }

                CrystalColor color = CrystalColor.Blue;
                if (level.Session.Area.ID == 5)
                {
                    color = CrystalColor.Red;
                }
                else if (level.Session.Area.ID == 6)
                {
                    color = CrystalColor.Purple;
                }
                else if (level.Session.Area.ID == 10)
                {
                    color = CrystalColor.Rainbow;
                }
                else if ("core".Equals(entityData.Attr("color"), StringComparison.InvariantCultureIgnoreCase))
                {
                    color = (CrystalColor)(-1);
                }
                else if (!Enum.TryParse(entityData.Attr("color"), true, out color))
                {
                    color = CrystalColor.Blue;
                }

                level.Add(new CrystalStaticSpinner(entityData, offset, color));
                return(true);
            }

            if (entityData.Name == "trackSpinner")
            {
                if (level.Session.Area.ID == 10 ||
                    entityData.Bool("star"))
                {
                    level.Add(new StarTrackSpinner(entityData, offset));
                    return(true);
                }
                else if (level.Session.Area.ID == 3 ||
                         (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                         entityData.Bool("dust"))
                {
                    level.Add(new DustTrackSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeTrackSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "rotateSpinner")
            {
                if (level.Session.Area.ID == 10 ||
                    entityData.Bool("star"))
                {
                    level.Add(new StarRotateSpinner(entityData, offset));
                    return(true);
                }
                else if (level.Session.Area.ID == 3 ||
                         (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                         entityData.Bool("dust"))
                {
                    level.Add(new DustRotateSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeRotateSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "checkpoint" &&
                entityData.Position == Vector2.Zero &&
                !entityData.Bool("allowOrigin"))
            {
                // Workaround for mod levels with old versions of Ahorn containing a checkpoint at (0, 0):
                // Create the checkpoint and avoid the start position update in orig_Load.
                level.Add(new Checkpoint(entityData, offset));
                return(true);
            }

            if (entityData.Name == "cloud")
            {
                patch_Cloud cloud = new Cloud(entityData, offset) as patch_Cloud;
                if (entityData.Has("small"))
                {
                    cloud.Small = entityData.Bool("small");
                }
                level.Add(cloud);
                return(true);
            }

            if (entityData.Name == "cobweb")
            {
                patch_Cobweb cobweb = new Cobweb(entityData, offset) as patch_Cobweb;
                if (entityData.Has("color"))
                {
                    cobweb.OverrideColors = entityData.Attr("color")?.Split(',').Select(s => Calc.HexToColor(s)).ToArray();
                }
                level.Add(cobweb);
                return(true);
            }

            if (entityData.Name == "movingPlatform")
            {
                patch_MovingPlatform platform = new MovingPlatform(entityData, offset) as patch_MovingPlatform;
                if (entityData.Has("texture"))
                {
                    platform.OverrideTexture = entityData.Attr("texture");
                }
                level.Add(platform);
                return(true);
            }

            if (entityData.Name == "sinkingPlatform")
            {
                patch_SinkingPlatform platform = new SinkingPlatform(entityData, offset) as patch_SinkingPlatform;
                if (entityData.Has("texture"))
                {
                    platform.OverrideTexture = entityData.Attr("texture");
                }
                level.Add(platform);
                return(true);
            }

            if (entityData.Name == "crumbleBlock")
            {
                patch_CrumblePlatform platform = new CrumblePlatform(entityData, offset) as patch_CrumblePlatform;
                if (entityData.Has("texture"))
                {
                    platform.OverrideTexture = entityData.Attr("texture");
                }
                level.Add(platform);
                return(true);
            }

            if (entityData.Name == "wire")
            {
                Wire wire = new Wire(entityData, offset);
                if (entityData.Has("color"))
                {
                    wire.Color = entityData.HexColor("color");
                }
                level.Add(wire);
                return(true);
            }

            if (!_LoadStrings.Contains(entityData.Name))
            {
                Logger.Log(LogLevel.Warn, "LoadLevel", $"Failed loading entity {entityData.Name}");
            }

            return(false);
        }
Example #9
0
 public void addCrystals(CrystalColor color)
 {
     crystals.addCrystal(color);
 }
Example #10
0
        // Called from LoadLevel, patched via MonoModRules.PatchLevelLoader
        public static bool LoadCustomEntity(EntityData entityData, Level level)
        {
            LevelData levelData = level.Session.LevelData;
            Vector2   offset    = new Vector2(levelData.Bounds.Left, levelData.Bounds.Top);

            if (Everest.Events.Level.LoadEntity(level, levelData, offset, entityData))
            {
                return(true);
            }

            // Everest comes with a few core utility entities out of the box.

            if (entityData.Name == "everest/spaceController")
            {
                level.Add(new SpaceController());
                return(true);
            }
            if (entityData.Name == "everest/spaceControllerBlocker")
            {
                level.Add(new SpaceControllerBlocker());
                return(true);
            }

            if (entityData.Name == "everest/flagTrigger")
            {
                level.Add(new FlagTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/changeInventoryTrigger")
            {
                level.Add(new ChangeInventoryTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/coreMessage")
            {
                level.Add(new CustomCoreMessage(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/memorial")
            {
                level.Add(new CustomMemorial(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/npc")
            {
                level.Add(new CustomNPC(entityData, offset, new EntityID(levelData.Name, entityData.ID)));
                return(true);
            }

            if (entityData.Name == "everest/dialogTrigger" ||
                entityData.Name == "dialog/dialogtrigger" ||
                entityData.Name == "cavern/dialogtrigger")
            {
                level.Add(new DialogCutsceneTrigger(entityData, offset, new EntityID(levelData.Name, entityData.ID)));
                return(true);
            }

            if (entityData.Name == "everest/crystalShatterTrigger" ||
                entityData.Name == "outback/destroycrystalstrigger")
            {
                level.Add(new CrystalShatterTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/completeAreaTrigger" ||
                entityData.Name == "outback/completeareatrigger")
            {
                level.Add(new CompleteAreaTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/lavaBlockerTrigger" ||
                entityData.Name == "cavern/lavablockertrigger")
            {
                level.Add(new LavaBlockerTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/coreModeTrigger" ||
                entityData.Name == "cavern/coremodetrigger")
            {
                level.Add(new CoreModeTrigger(entityData, offset));
                return(true);
            }

            // The following entities have hardcoded "attributes."
            // Everest allows custom maps to set them.

            if (entityData.Name == "spinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustStaticSpinner(entityData, offset));
                    return(true);
                }

                CrystalColor color = CrystalColor.Blue;
                if (level.Session.Area.ID == 5)
                {
                    color = CrystalColor.Red;
                }
                else if (level.Session.Area.ID == 6)
                {
                    color = CrystalColor.Purple;
                }
                else if ("core".Equals(entityData.Attr("color"), StringComparison.InvariantCultureIgnoreCase))
                {
                    color = (CrystalColor)(-1);
                }
                else if (!Enum.TryParse(entityData.Attr("color"), true, out color))
                {
                    color = CrystalColor.Blue;
                }

                level.Add(new CrystalStaticSpinner(entityData, offset, color));
                return(true);
            }

            if (entityData.Name == "trackSpinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustTrackSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeTrackSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "rotateSpinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustRotateSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeRotateSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "checkpoint" &&
                entityData.Position == Vector2.Zero &&
                !entityData.Bool("allowOrigin"))
            {
                // Workaround for mod levels with old versions of Ahorn containing a checkpoint at (0, 0):
                // Create the checkpoint and avoid the start position update in orig_Load.
                level.Add(new Checkpoint(entityData, offset));
                return(true);
            }

            if (entityData.Name == "triggerSpikesOriginalUp")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Up));
                return(true);
            }
            if (entityData.Name == "triggerSpikesOriginalDown")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Down));
                return(true);
            }
            if (entityData.Name == "triggerSpikesOriginalLeft")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Left));
                return(true);
            }
            if (entityData.Name == "triggerSpikesOriginalRight")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Right));
                return(true);
            }

            if (entityData.Name == "darkChaserEnd")
            {
                level.Add(new BadelineOldsiteEnd(entityData, offset));
                return(true);
            }

            if (entityData.Name == "cloud")
            {
                patch_Cloud cloud = new Cloud(entityData, offset) as patch_Cloud;
                if (entityData.Has("small"))
                {
                    cloud.Small = entityData.Bool("small");
                }
                level.Add(cloud);
                return(true);
            }

            if (entityData.Name == "cobweb")
            {
                patch_Cobweb cobweb = new Cobweb(entityData, offset) as patch_Cobweb;
                if (entityData.Has("color"))
                {
                    cobweb.OverrideColor = entityData.HexColor("color");
                }
                level.Add(cobweb);
                return(true);
            }

            if (entityData.Name == "movingPlatform")
            {
                patch_MovingPlatform platform = new MovingPlatform(entityData, offset) as patch_MovingPlatform;
                if (entityData.Has("texture"))
                {
                    platform.OverrideTexture = entityData.Attr("texture");
                }
                level.Add(platform);
                return(true);
            }

            if (entityData.Name == "sinkingPlatform")
            {
                patch_SinkingPlatform platform = new SinkingPlatform(entityData, offset) as patch_SinkingPlatform;
                if (entityData.Has("texture"))
                {
                    platform.OverrideTexture = entityData.Attr("texture");
                }
                level.Add(platform);
                return(true);
            }

            if (entityData.Name == "crumbleBlock")
            {
                patch_CrumblePlatform platform = new CrumblePlatform(entityData, offset) as patch_CrumblePlatform;
                if (entityData.Has("texture"))
                {
                    platform.OverrideTexture = entityData.Attr("texture");
                }
                level.Add(platform);
                return(true);
            }

            if (entityData.Name == "wire")
            {
                Wire wire = new Wire(entityData, offset);
                if (entityData.Has("color"))
                {
                    wire.Color = entityData.HexColor("color");
                }
                level.Add(wire);
                return(true);
            }

            return(false);
        }
Example #11
0
 public bool getCrystal(CrystalColor color)
 {
     return(obtainCrystal.ContainsKey(color));
 }
Example #12
0
 public ChangeColorComponent(CrystalStaticSpinner spinner, CrystalColor newColor)
     : base(true, false)
 {
     this.spinner  = spinner;
     this.newColor = newColor;
 }
Example #13
0
 public void addCrystal(CrystalColor color)
 {
     obtainCrystal [color] = true;
     this.reloadCrystals();
 }
Example #14
0
        // Called from LoadLevel, patched via MonoModRules.PatchLevelLoader
        public static bool LoadCustomEntity(EntityData entityData, Level level)
        {
            LevelData levelData = level.Session.LevelData;
            Vector2   offset    = new Vector2(levelData.Bounds.Left, levelData.Bounds.Top);

            // Everest comes with a few core utility entities out of the box.

            if (entityData.Name == "levelFlagTrigger")
            {
                level.Add(new LevelFlagTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "customCoreMessage")
            {
                level.Add(new CustomCoreMessage(entityData, offset));
                return(true);
            }

            if (entityData.Name == "customMemorial")
            {
                level.Add(new CustomMemorial(entityData, offset));
                return(true);
            }

            // The following entities have hardcoded "attributes."
            // Everest allows custom maps to set them.

            if (entityData.Name == "spinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustStaticSpinner(entityData, offset));
                    return(true);
                }

                CrystalColor color = CrystalColor.Blue;
                if (level.Session.Area.ID == 5)
                {
                    color = CrystalColor.Red;
                }
                else if (level.Session.Area.ID == 6)
                {
                    color = CrystalColor.Purple;
                }
                else if (!Enum.TryParse(entityData.Attr("color"), true, out color))
                {
                    color = CrystalColor.Blue;
                }

                level.Add(new CrystalStaticSpinner(entityData, offset, color));
                return(true);
            }

            if (entityData.Name == "trackSpinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustTrackSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeTrackSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "rotateSpinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustRotateSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeRotateSpinner(entityData, offset));
                return(true);
            }

            return(Everest.Events.Level.LoadEntity(level, levelData, offset, entityData));
        }
Example #15
0
 public void addCrystal(CrystalColor color)
 {
     crystalPanel.addCrystal(color);
 }
Example #16
0
        // Called from LoadLevel, patched via MonoModRules.PatchLevelLoader
        public static bool LoadCustomEntity(EntityData entityData, Level level)
        {
            LevelData levelData = level.Session.LevelData;
            Vector2   offset    = new Vector2(levelData.Bounds.Left, levelData.Bounds.Top);

            if (Everest.Events.Level.LoadEntity(level, levelData, offset, entityData))
            {
                return(true);
            }

            // Everest comes with a few core utility entities out of the box.

            if (entityData.Name == "everest/spaceController")
            {
                level.Add(new SpaceController());
                return(true);
            }
            if (entityData.Name == "everest/spaceControllerBlocker")
            {
                level.Add(new SpaceControllerBlocker());
                return(true);
            }

            if (entityData.Name == "everest/flagTrigger")
            {
                level.Add(new FlagTrigger(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/coreMessage")
            {
                level.Add(new CustomCoreMessage(entityData, offset));
                return(true);
            }

            if (entityData.Name == "everest/memorial")
            {
                level.Add(new CustomMemorial(entityData, offset));
                return(true);
            }

            // The following entities have hardcoded "attributes."
            // Everest allows custom maps to set them.

            if (entityData.Name == "spinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustStaticSpinner(entityData, offset));
                    return(true);
                }

                CrystalColor color = CrystalColor.Blue;
                if (level.Session.Area.ID == 5)
                {
                    color = CrystalColor.Red;
                }
                else if (level.Session.Area.ID == 6)
                {
                    color = CrystalColor.Purple;
                }
                else if ("core".Equals(entityData.Attr("color"), StringComparison.InvariantCultureIgnoreCase))
                {
                    color = (CrystalColor)(-1);
                }
                else if (!Enum.TryParse(entityData.Attr("color"), true, out color))
                {
                    color = CrystalColor.Blue;
                }

                level.Add(new CrystalStaticSpinner(entityData, offset, color));
                return(true);
            }

            if (entityData.Name == "trackSpinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustTrackSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeTrackSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "rotateSpinner")
            {
                if (level.Session.Area.ID == 3 ||
                    (level.Session.Area.ID == 7 && level.Session.Level.StartsWith("d-")) ||
                    entityData.Bool("dust"))
                {
                    level.Add(new DustRotateSpinner(entityData, offset));
                    return(true);
                }

                level.Add(new BladeRotateSpinner(entityData, offset));
                return(true);
            }

            if (entityData.Name == "checkpoint" &&
                entityData.Position == Vector2.Zero &&
                !entityData.Bool("allowOrigin"))
            {
                // Workaround for mod levels with old versions of Ahorn containing a checkpoint at (0, 0):
                // Create the checkpoint and avoid the start position update in orig_Load.
                level.Add(new Checkpoint(entityData, offset));
                return(true);
            }

            if (entityData.Name == "triggerSpikesOriginalUp")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Up));
                return(true);
            }
            if (entityData.Name == "triggerSpikesOriginalDown")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Down));
                return(true);
            }
            if (entityData.Name == "triggerSpikesOriginalLeft")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Left));
                return(true);
            }
            if (entityData.Name == "triggerSpikesOriginalRight")
            {
                level.Add(new TriggerSpikesOriginal(entityData, offset, TriggerSpikesOriginal.Directions.Right));
                return(true);
            }

            if (entityData.Name == "darkChaserEnd")
            {
                level.Add(new BadelineOldsiteEnd(entityData, offset));
                return(true);
            }

            if (entityData.Name == "cloud")
            {
                patch_Cloud cloud = new Cloud(entityData, offset) as patch_Cloud;
                if (entityData.Has("small"))
                {
                    cloud.Small = entityData.Bool("small");
                }
                level.Add(cloud);
                return(true);
            }

            return(false);
        }
 private void CrystalStaticSpinner_ctor(On.Celeste.CrystalStaticSpinner.orig_ctor_Vector2_bool_CrystalColor orig, CrystalStaticSpinner self, Vector2 position, bool attachToSolid, CrystalColor color)
 {
     if (Settings.SimplifiedGraphics)
     {
         color = CrystalColor.Blue;
     }
     orig(self, position, attachToSolid, color);
 }
Example #18
0
        private static void ChangeColor(On.Celeste.CrystalStaticSpinner.orig_ctor_EntityData_Vector2_CrystalColor orig,
                                        CrystalStaticSpinner self, EntityData data, Vector2 offset, CrystalColor color)
        {
            var savedColor = GetColorFromSession();

            if (savedColor != null)
            {
                orig(self, data, offset, (CrystalColor)savedColor);
            }
            else
            {
                orig(self, data, offset, color);
            }

            self.SetExtendedDataValue("color", (CrystalColor?)color);
        }