コード例 #1
0
ファイル: OldManRoom.cs プロジェクト: tesfabpel/BurningKnight
        public override void Paint(Level level)
        {
            base.Paint(level);

            Painter.Rect(level, this, 1, Tile.EvilWall);
            Painter.Fill(level, this, 2, Tile.EvilFloor);

            PaintTunnel(level, Tile.EvilFloor, GetCenterRect(), false, false, false);

            var dm = new DarkMage();

            level.Area.Add(dm);

            var w = new Vector2(GetCenterVector().X, (Top + 3) * 16);

            dm.BottomCenter = w;

            for (var i = 0; i < 2; i++)
            {
                var campfire = new Campfire();
                level.Area.Add(campfire);
                campfire.BottomCenter = w + new Vector2(24 * (i == 0 ? -1 : 1), 0);
            }

            var count = Math.Ceiling((GetWidth() - 6) / 2f);
            var pool  = Items.GeneratePool(Items.GetPool(ItemPool.OldMan));

            for (var i = 0; i < count; i++)
            {
                var stand = new DarkMageStand();
                level.Area.Add(stand);
                stand.Center = new Vector2(Left + 3.5f + i * 2, Top + 4.5f) * 16;

                stand.SetItem(Items.CreateAndAdd(Items.GenerateAndRemove(pool), level.Area, false), null);
            }
        }
コード例 #2
0
ファイル: BkHead.cs プロジェクト: tesfabpel/BurningKnight
        protected override void CreateGore(DiedEvent d)
        {
            base.CreateGore(d);

            if (saved)
            {
                return;
            }

            var heinur = new Heinur();

            Area.Add(heinur);
            heinur.Center = Center - new Vector2(0, 32);

            var g = heinur.GetComponent <BkGraphicsComponent>();

            g.Scale = Vector2.Zero;

            Timer.Add(() => {
                Tween.To(1, 0, x => g.Scale.X = x, 3f);
                Tween.To(1, 0, x => g.Scale.Y = x, 3f);
            }, 1f);

            var dm = new DarkMage();

            Area.Add(dm);

            dm.Center = Center + new Vector2(0, 32);
            dm.GetComponent <AnimationComponent>().Animate();

            AnimationUtil.Poof(dm.Center);

            var dmDialog     = dm.GetComponent <DialogComponent>();
            var heinurDialog = heinur.GetComponent <DialogComponent>();

            foreach (var p in Area.Tagged[Tags.Player])
            {
                p.RemoveComponent <PlayerInputComponent>();
            }

            Camera.Instance.Targets.Clear();
            Camera.Instance.Follow(dm, 1f);
            Camera.Instance.Follow(heinur, 1f);

            dmDialog.Start("dm_5", null, () => Timer.Add(() => {
                dmDialog.Close();
                Camera.Instance.Targets.Clear();
                Camera.Instance.Follow(dm, 1f);
                Camera.Instance.Follow(heinur, 1f);

                heinurDialog.Start("heinur_0", null, () => Timer.Add(() => {
                    heinurDialog.Close();
                    heinur.Attract = true;
                    Camera.Instance.Targets.Clear();
                    Camera.Instance.Follow(dm, 1f);
                    Camera.Instance.Follow(heinur, 1f);

                    heinur.Callback = () => {
                        Camera.Instance.Targets.Clear();
                        Camera.Instance.Follow(dm, 1f);

                        foreach (var p in Area.Tagged[Tags.Player])
                        {
                            p.GetComponent <PlayerGraphicsComponent>().Hidden = true;
                        }

                        var bk = new bk.BurningKnight()
                        {
                            Passive = true
                        };

                        Area.Add(bk);
                        bk.Center = Center;

                        bk.GetComponent <BkGraphicsComponent>().Animate();
                        Camera.Instance.Follow(bk, 1f);

                        dmDialog.Start("dm_6", null, () => Timer.Add(() => {
                            dmDialog.Close();
                            Camera.Instance.Targets.Clear();
                            Camera.Instance.Follow(bk, 1f);

                            var nbkDialog = bk.GetComponent <DialogComponent>();

                            nbkDialog.Start("nbk_0", null, () => Timer.Add(() => {
                                nbkDialog.Close();
                                Camera.Instance.Targets.Clear();
                                Camera.Instance.Follow(bk, 1f);
                                Run.Win();
                            }, 2f));
                        }, 2f));
                    };
                }, 1f));
            }, 1f));
        }