Exemple #1
0
        public FancyFinalBossMovingBlock(EntityData data, Vector2 offset)
            : base(data.NodesWithPosition(offset), data.Width, data.Height, data.Int("nodeIndex", 0))
        {
            baseData = new DynData <FinalBossMovingBlock>(this);
            Remove(baseData.Get <TileGrid>("sprite"));
            Remove(baseData.Get <TileGrid>("highlight"));
            Remove(Get <TileInterceptor>());
            badLightOcclude = Get <LightOcclude>();

            tileMap            = GenerateTileMap(data.Attr("tileData", ""));
            tileMapHighlighted = GenerateTileMap(data.Attr("tileDataHighlight", ""));

            int newSeed = Calc.Random.Next();

            Calc.PushRandom(newSeed);
            baseData["sprite"] = GFX.FGAutotiler.GenerateMap(tileMap, default(Autotiler.Behaviour)).TileGrid;
            Add(baseData.Get <TileGrid>("sprite"));
            Calc.PopRandom();
            Calc.PushRandom(newSeed);
            TileGrid highlight = GFX.FGAutotiler.GenerateMap(tileMapHighlighted, default(Autotiler.Behaviour)).TileGrid;

            highlight.Alpha       = 0f;
            baseData["highlight"] = highlight;
            Add(baseData.Get <TileGrid>("highlight"));
            Calc.PopRandom();

            Add(new TileInterceptor(baseData.Get <TileGrid>("sprite"), false));


            highlightCollider = GenerateBetterColliderGrid(tileMapHighlighted, 8, 8);
            collider          = GenerateBetterColliderGrid(tileMap, 8, 8);
            AddLightOcclude(this, collider);
            Collider = collider;
        }
Exemple #2
0
        public void DeactivateNoRoutine()
        {
            if (playerHasDreamDash)
            {
                playerHasDreamDash = false;

                Setup();

                if (occlude == null)
                {
                    occlude = new LightOcclude(1f);
                }
                Add(occlude);

                whiteHeight = 1f;
                whiteFill   = 0f;

                if (shaker != null)
                {
                    shaker.On = false;
                }

                SurfaceSoundIndex = 11;
            }
        }
Exemple #3
0
        public FancyFallingBlock(EntityData data, Vector2 offset)
            : base(data.Position + offset, '3', data.Width, data.Height, data.Bool("finalBoss", false), data.Bool("behind", false), data.Bool("climbFall", true))
        {
            baseData = new DynData <FallingBlock>(this);
            Remove(baseData.Get <TileGrid>("tiles"));
            Remove(Get <TileInterceptor>());
            badLightOcclude = Get <LightOcclude>();

            int newSeed = Calc.Random.Next();

            Calc.PushRandom(newSeed);
            tileMap = GenerateTileMap(data.Attr("tileData", ""));
            Autotiler.Generated generated = GFX.FGAutotiler.GenerateMap(tileMap, default(Autotiler.Behaviour));
            baseData["tiles"] = generated.TileGrid;
            Add(baseData.Get <TileGrid>("tiles"));
            Add(animatedTiles = generated.SpriteOverlay);
            Calc.PopRandom();

            if (data.Bool("finalBoss", false))
            {
                VirtualMap <char> tileMapHighlighted = GenerateTileMap(data.Attr("tileDataHighlight", ""));
                Calc.PushRandom(newSeed);
                TileGrid highlight = GFX.FGAutotiler.GenerateMap(tileMapHighlighted, default(Autotiler.Behaviour)).TileGrid;
                highlight.Alpha       = 0f;
                baseData["highlight"] = highlight;
                Add(baseData.Get <TileGrid>("highlight"));
                Calc.PopRandom();
            }

            ColliderList colliders = GenerateBetterColliderGrid(tileMap, 8, 8);

            AddLightOcclude(this, colliders);
            Collider = colliders;
            Add(new TileInterceptor(baseData.Get <TileGrid>("tiles"), false));
        }
        public override void Added(Scene scene)
        {
            base.Added(scene);

            DynData <CrumblePlatform> self = new DynData <CrumblePlatform>(this);

            outlineFader = self.Get <Coroutine>("outlineFader");
            falls        = self.Get <List <Coroutine> >("falls");
            fallOrder    = self.Get <List <int> >("fallOrder");
            shaker       = self.Get <ShakerList>("shaker");
            occluder     = self.Get <LightOcclude>("occluder");
            images       = self.Get <List <Image> >("images");

            foreach (Component component in this)
            {
                if (component is Coroutine coroutine && coroutine != outlineFader && !falls.Contains(coroutine))
                {
                    // this coroutine is the sequence! hijack it
                    coroutine.RemoveSelf();
                    Add(new Coroutine(customSequence()));
                    break;
                }
            }

            if (oneUse)
            {
                // prevent the outline from appearing.
                outlineFader.RemoveSelf();
            }
        }
        public FancyFloatySpaceBlock(EntityData data, Vector2 offset)
            : base(data.Position + offset, data.Width, data.Height, data.Char("connectsTo", '3'), data.Bool("disableSpawnOffset", false))
        {
            badLightOcclude = Get <LightOcclude>();

            tileMap = GenerateTileMap(data.Attr("tileData", ""));
            ColliderList colliders = GenerateBetterColliderGrid(tileMap, 8, 8);

            Collider = colliders;
            AddLightOcclude(this, colliders);
        }
 public DoorRusty(EntityData data, Vector2 offset)
     : base(data.Position + offset)
 {
     base.Depth = 8499;
     Add(sprite = FactoryHelperModule.SpriteBank.Create("rusty_metal_door"));
     openSfx    = "event:/game/03_resort/door_metal_open";
     closeSfx   = "event:/game/03_resort/door_metal_close";
     sprite.Play("idle");
     base.Collider = new Hitbox(12f, 22f, -6f, -23f);
     Add(occlude   = new LightOcclude(new Rectangle(-1, -24, 2, 24)));
     Add(new PlayerCollider(HitPlayer));
 }
 public override void Added(Scene scene)
 {
     base.Added(scene);
     playerHasDreamDash = SceneAs <Level>().Session.Inventory.DreamDash;
     // Handle moving
     if (playerHasDreamDash && node != null)
     {
         Vector2 start = Position;
         Vector2 end   = node.Value;
         float   num   = Vector2.Distance(start, end) / 12f;
         bool    flag2 = fastMoving;
         if (flag2)
         {
             num /= 3f;
         }
         Tween tween = Tween.Create(Tween.TweenMode.YoyoLooping, Ease.SineInOut, num, true);
         tween.OnUpdate = delegate(Tween t)
         {
             bool collidable = Collidable;
             if (collidable)
             {
                 MoveTo(Vector2.Lerp(start, end, t.Eased));
             }
             else
             {
                 MoveToNaive(Vector2.Lerp(start, end, t.Eased));
             }
         };
         Add(tween);
     }
     if (!playerHasDreamDash)
     {
         Add(occlude = new LightOcclude(1f));
     }
     Setup();
 }
Exemple #8
0
        public override void Added(Scene scene)
        {
            AreaData areaData     = AreaData.Get(scene);
            string   crumbleBlock = areaData.CrumbleBlock;

            if (overrideTexture != null)
            {
                areaData.CrumbleBlock = overrideTexture;
            }
            base.Added(scene);
            MTexture mTexture = GFX.Game["objects/crumbleBlock/outline"];

            outline = new List <Image>();
            if (base.Width <= 8f)
            {
                Image image = new Image(mTexture.GetSubtexture(24, 0, 8, 8));
                image.Color = Color.White * 0f;
                Add(image);
                outline.Add(image);
            }
            else
            {
                for (int i = 0; (float)i < base.Width; i += 8)
                {
                    int   num    = (i != 0) ? ((i > 0 && (float)i < base.Width - 8f) ? 1 : 2) : 0;
                    Image image2 = new Image(mTexture.GetSubtexture(num * 8, 0, 8, 8));
                    image2.Position = new Vector2(i, 0f);
                    image2.Color    = Color.White * 0f;
                    Add(image2);
                    outline.Add(image2);
                }
            }
            Add(outlineFader = new Coroutine());
            outlineFader.RemoveOnComplete = false;
            images    = new List <Image>();
            falls     = new List <Coroutine>();
            fallOrder = new List <int>();
            MTexture mTexture2 = GFX.Game["objects/crumbleBlock/" + AreaData.Get(scene).CrumbleBlock];

            for (int j = 0; (float)j < base.Width; j += 8)
            {
                int   num2   = (int)((Math.Abs(base.X) + (float)j) / 8f) % 4;
                Image image3 = new Image(mTexture2.GetSubtexture(num2 * 8, 0, 8, 8));
                image3.Position = new Vector2(4 + j, 4f);
                image3.CenterOrigin();
                Add(image3);
                images.Add(image3);
                Coroutine coroutine = new Coroutine();
                coroutine.RemoveOnComplete = false;
                falls.Add(coroutine);
                Add(coroutine);
                fallOrder.Add(j / 8);
            }
            fallOrder.Shuffle();
            Add(new Coroutine(Sequence()));
            Add(shaker = new ShakerList(images.Count, false, delegate(Vector2[] v) {
                for (int k = 0; k < images.Count; k++)
                {
                    images[k].Position = new Vector2(4 + k * 8, 4f) + v[k];
                }
            }));
            Add(occluder          = new LightOcclude(0.2f));
            areaData.CrumbleBlock = crumbleBlock;
        }