Exemplo n.º 1
0
 public KevinRefill(Vector2 position)
     : base(position)
 {
     base.Collider = new Hitbox(16f, 16f, -8f, -8f);
     base.Add(new PlayerCollider(OnPlayer, null, null));
     base.Add(outline = new Image(GFX.Game["objects/refill/outline"]));
     outline.CenterOrigin();
     outline.Visible = false;
     base.Add(sprite = new Sprite(GFX.Game, "objects/refill/idle"));
     sprite.AddLoop("idle", "", 0.1f);
     sprite.Play("idle", false, false);
     sprite.CenterOrigin();
     base.Add(flash = new Sprite(GFX.Game, "objects/refill/flash"));
     flash.Add("flash", "", 0.05f);
     flash.OnFinish = delegate
     {
         flash.Visible = false;
     };
     flash.CenterOrigin();
     base.Add(wiggler = Wiggler.Create(1f, 4f, delegate(float v)
     {
         sprite.Scale = (flash.Scale = Vector2.One * (1f + v * 0.2f));
     }, false, false));
     base.Add(new MirrorReflection());
     base.Add(bloom = new BloomPoint(0.8f, 16f));
     base.Add(light = new VertexLight(Color.White, 1f, 16, 48));
     base.Add(sine  = new SineWave(0.6f));
     sine.Randomize();
     UpdateY();
     base.Depth = -100;
 }
        public RustyLamp(Vector2 position, Vector2 offset, string activationId, float initialDelay, string strobePattern, bool startActive) : base()
        {
            Depth    = 8500;
            Position = position + offset;

            Collider = new Hitbox(12, 12, 2, 2);

            Add(Activator          = new FactoryActivator());
            Activator.ActivationId = activationId == string.Empty ? null : activationId;
            Activator.StartOn      = startActive;
            Activator.OnTurnOff    = OnTurnOff;
            Activator.OnTurnOn     = OnTurnOn;
            Activator.OnStartOff   = OnStartOff;
            Activator.OnStartOn    = OnStartOn;

            Add(_steamCollider = new SteamCollider(OnSteamWall));

            _initialDelay = initialDelay;
            Add(_sprite   = new Sprite(GFX.Game, "objects/FactoryHelper/rustyLamp/rustyLamp"));
            _sprite.Add("frames", "");
            _sprite.Play("frames");
            _sprite.Active = false;

            _strobePatternString = strobePattern;

            Add(_light      = new VertexLight(Color, 0f, 128, 128));
            Add(_bloom      = new BloomPoint(0.0f, 16f));
            _light.Position = new Vector2(8, 8);
            _bloom.Position = new Vector2(8, 8);
        }
Exemplo n.º 3
0
        public Lamp(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            flag       = data.Attr("flag", "");
            id         = data.ID;
            baseColor  = ColorHelper.GetColor(data.Attr("baseColor", "White"));
            lightColor = ColorHelper.GetColor(data.Attr("lightColor", "White"));

            Add((Component)(startupSprite = new Sprite(GFX.Game, "objects/pandorasBox/lamp/start")));
            startupSprite.AddLoop("start", "", 0.1f);
            startupSprite.JustifyOrigin(0.5f, 0.5f);
            startupSprite.Play("start");
            startupSprite.OnLastFrame = onLastFrame;
            startupSprite.Stop();

            Add((Component)(idleSprite = new Sprite(GFX.Game, "objects/pandorasBox/lamp/idle")));
            idleSprite.AddLoop("idle", "", 0.125f);
            idleSprite.JustifyOrigin(0.5f, 0.5f);
            idleSprite.Play("idle");
            idleSprite.Visible = false;

            Add((Component)(baseSprite = new Sprite(GFX.Game, "objects/pandorasBox/lamp/base")));
            baseSprite.AddLoop("base", "", 0.1f);
            baseSprite.JustifyOrigin(0.5f, 0.5f);
            baseSprite.Play("base");
            baseSprite.SetColor(baseColor);

            inStartupAnimation = false;

            Add((Component)(bloom = new BloomPoint(0.5f, 8f)));
            Add((Component)(light = new VertexLight(lightColor, 1f, 48, 64)));

            bloom.Visible = light.Visible = false;

            Depth = 5;
        }
Exemplo n.º 4
0
        public override void Added(Scene scene)
        {
            base.Added(scene);

            IsGhost = AltSidesHelperModule.AltSidesSaveData.UnlockedAltSideIDs.Contains(altSideToUnlock);
            string path = IsGhost ? "ghost" : "idle";

            sprite = new Sprite(GFX.Game, spritePath);
            sprite.Add("idle", path, 0.07f, "pulse", new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            sprite.Add("spin", path, 0.07f, "spin", new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
            sprite.Add("pulse", path, 0.04f, "idle", new int[] { 13, 14, 15, 16, 17, 18 });
            sprite.CenterOrigin();
            Add(sprite);

            sprite.Play("idle");
            Add(scaleWiggler = Wiggler.Create(0.25f, 4f, delegate(float f) {
                sprite.Scale = Vector2.One * (1f + f * 0.25f);
            }));
            Add(bloom      = new BloomPoint(0.25f, 16f));
            Add(light      = new VertexLight(Color.White, 0.4f, 32, 64));
            Add(hover      = new SineWave(0.5f, 0f));
            hover.OnUpdate = delegate(float f) {
                Sprite      obj         = sprite;
                VertexLight vertexLight = light;
                float       num2        = bloom.Y = f * 2f;
                float       num5        = obj.Y = (vertexLight.Y = num2);
            };
            if (IsGhost)
            {
                sprite.Color = Color.White * 0.8f;
            }
        }
Exemplo n.º 5
0
 private void UpdateY()
 {
     Sprite     obj        = flash;
     Sprite     obj2       = sprite;
     BloomPoint bloomPoint = bloom;
     float      num2       = bloomPoint.Y = sine.Value * 2f;
     float      num5       = obj.Y = (obj2.Y = num2);
 }
        public InvisibleLightSource(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            alpha  = data.Float("alpha", 1f);
            radius = data.Float("radius", 48f);
            color  = ColorHelper.GetColor(data.Attr("color", "White"));

            Add(bloom = new BloomPoint(alpha, radius));
            Add(light = new VertexLight(color, alpha, data.Int("startFade", 24), data.Int("endFade", 48)));
        }
 public RustBerryPoints(Vector2 position, bool ghostberry)
     : base(position)
 {
     Add(_sprite = FactoryHelperModule.SpriteBank.Create("rustBerry"));
     Add(_light  = new VertexLight(Color.RosyBrown, 1f, 16, 24));
     Add(_bloom  = new BloomPoint(1f, 12f));
     Depth       = -2000100;
     Tag         = (Tags.Persistent | Tags.TransitionUpdate | Tags.FrozenUpdate);
     _ghostberry = ghostberry;
 }
        public MultiplayerControlSwitch(Vector2 position)
            : base(position)
        {
            base.Depth             = 2000;
            base.Add(ControlSwitch = new ControlSwitch(false, 0));

            base.Add(new PlayerCollider(OnPlayer, null, new Hitbox(30f, 30f, -15f, -15f)));
            base.Add(icon);
            base.Add(bloom = new BloomPoint(0f, 16f));
            bloom.Alpha    = 0f;
            icon.Add("idle", "", 0f, default(int));
            icon.Add("spin", "", 0.1f, new Chooser <string>("spin", 1f), 0, 1, 2, 3, 4, 5);
            icon.Play("spin", false, false);
            icon.Color = inactiveColor;
            icon.CenterOrigin();
            base.Collider = new Hitbox(16f, 16f, -8f, -8f);
            base.Add(new TheoCrystalCollider(OnTheoCrystal, new Hitbox(20f, 20f, -10f, -10f)));
            base.Add(new SeekerCollider(OnSeeker, new Hitbox(24f, 24f, -12f, -12f)));

            ControlSwitch.OnActivate = delegate
            {
                wiggler.Start();
                for (int i = 0; i < 32; i++)
                {
                    float num = Calc.Random.NextFloat(6.28318548f);
                    //level.Particles.Emit(P_FireWhite, base.Position + Calc.AngleToVector(num, 6f), num);
                }
                icon.Rate = 4f;
            };

            ControlSwitch.OnDeactivate = delegate
            {
                wiggler.StopAndClear();
                icon.Rate = 0.1f;
                icon.Play("spin", false, false);
            };

            ControlSwitch.OnFinish = delegate
            {
                ease = 0f;
            };
            ControlSwitch.OnStartFinished = delegate
            {
                icon.Rate = 0.1f;
                icon.Play("spin", false, false);
                ease = 1f;
            };

            base.Add(wiggler = Wiggler.Create(0.5f, 4f, delegate(float v)
            {
                pulse = Vector2.One * (1f + v * 0.25f);
            }, false, false));
            base.Add(new VertexLight(Color.White, 0.8f, 16, 32));
            base.Add(touchSfx = new SoundSource());
        }
        public TrollZipper(Vector2 position, int width, int height, Vector2 target, Themes theme, int trollOffset, bool trollFixed, bool switchTroll, bool flipDirection)
            : base(position, width, height, safe: false)
        {
            this.flipDirection = flipDirection;
            this.switchTroll   = switchTroll;
            this.trollFixed    = trollFixed;
            this.trollOffset   = trollOffset;
            Depth            = -9999;
            start            = Position;
            this.target      = target;
            maxForwardSpeed  = 360f / Vector2.Distance(start, target);
            maxBackwardSpeed = maxForwardSpeed * 0.4f;
            Direction.X      = Math.Sign(target.X - start.X);
            Direction.Y      = Math.Sign(target.Y - start.Y);
            this.theme       = theme;
            string path;
            string id;
            string key;

            if (theme == Themes.Moon)
            {
                path            = "objects/zipmover/moon/light";
                id              = "objects/zipmover/moon/block";
                key             = "objects/zipmover/moon/innercog";
                drawBlackBorder = false;
            }
            else
            {
                path            = "objects/zipmover/light";
                id              = "objects/zipmover/block";
                key             = "objects/zipmover/innercog";
                drawBlackBorder = true;
            }
            innerCogs       = GFX.Game.GetAtlasSubtextures(key);
            Add(streetlight = new Sprite(GFX.Game, path));
            streetlight.Add("frames", "", 1f);
            streetlight.Play("frames");
            streetlight.Active = false;
            streetlight.SetAnimationFrame(1);
            streetlight.Position = new Vector2(Width / 2f - streetlight.Width / 2f, 0f);
            Add(bloom            = new BloomPoint(1f, 6f));
            bloom.Position       = new Vector2(Width / 2f, 4f);
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    edges[i, j] = GFX.Game[id].GetSubtexture(i * 8, j * 8, 8, 8);
                }
            }
            SurfaceSoundIndex = 7;
            sfx.Position      = new Vector2(Width, Height) / 2f;
            Add(sfx);
            Add(new LightOcclude());
        }
Exemplo n.º 10
0
        public FlagTouchSwitch(EntityData data, Vector2 offset)
            : base(data.Position + offset)
        {
            Depth = 2000;

            id         = data.ID;
            flag       = data.Attr("flag");
            persistent = data.Bool("persistent", false);

            inactiveColor = Calc.HexToColor(data.Attr("inactiveColor", "5FCDE4"));
            activeColor   = Calc.HexToColor(data.Attr("activeColor", "FFFFFF"));
            finishColor   = Calc.HexToColor(data.Attr("finishColor", "F141DF"));

            hitSound = data.Attr("hitSound", "event:/game/general/touchswitch_any");
            completeSoundFromSwitch = data.Attr("completeSoundFromSwitch", "event:/game/general/touchswitch_last_cutoff");
            completeSoundFromScene  = data.Attr("completeSoundFromScene", "event:/game/general/touchswitch_last_oneshot");

            inverted     = data.Bool("inverted", false);
            allowDisable = data.Bool("allowDisable", false);

            smoke = data.Bool("smoke", true);

            P_RecoloredFire = new ParticleType(TouchSwitch.P_Fire)
            {
                Color = finishColor
            };

            // set up collision
            Collider = new Hitbox(16f, 16f, -8f, -8f);
            Add(new PlayerCollider(onPlayer, null, new Hitbox(30f, 30f, -15f, -15f)));
            Add(new HoldableCollider(onHoldable, new Hitbox(20f, 20f, -10f, -10f)));
            Add(new SeekerCollider(onSeeker, new Hitbox(24f, 24f, -12f, -12f)));

            // set up the icon
            string iconAttribute = data.Attr("icon", "vanilla");

            icon = new Sprite(GFX.Game, iconAttribute == "vanilla" ? "objects/touchswitch/icon" : $"objects/MaxHelpingHand/flagTouchSwitch/{iconAttribute}/icon");
            Add(icon);
            icon.Add("idle", "", 0f, default(int));
            icon.Add("spin", "", 0.1f, new Chooser <string>("spin", 1f), 0, 1, 2, 3, 4, 5);
            icon.Play("spin");
            icon.Color = inactiveColor;
            icon.CenterOrigin();

            Add(bloom   = new BloomPoint(0f, 16f));
            bloom.Alpha = 0f;

            Add(wiggler = Wiggler.Create(0.5f, 4f, v => {
                pulse = Vector2.One * (1f + v * 0.25f);
            }));

            Add(new VertexLight(Color.White, 0.8f, 16, 32));
            Add(touchSfx = new SoundSource());
        }
Exemplo n.º 11
0
 public override void Update()
 {
     if (!_collected)
     {
         _wobble += Engine.DeltaTime * 4f;
         Sprite     obj         = _sprite;
         BloomPoint bloomPoint  = _bloom;
         float      num2        = _light.Y = (float)Math.Sin(_wobble) * 2f;
         float      num5        = obj.Y = (bloomPoint.Y = num2);
         int        followIndex = Follower.FollowIndex;
         if (Follower.Leader != null && Follower.DelayTimer <= 0f)
         {
             Player player     = Follower.Leader.Entity as Player;
             bool   canCollect = false;
             if (player != null && player.Scene != null && !player.StrawberriesBlocked)
             {
                 if (player.OnSafeGround && player.StateMachine.State != 13)
                 {
                     canCollect = true;
                 }
             }
             if (canCollect)
             {
                 _collectTimer += Engine.DeltaTime;
                 if (_collectTimer > 0.15f)
                 {
                     OnCollect();
                 }
             }
             else
             {
                 _collectTimer = Math.Min(_collectTimer, 0f);
             }
         }
         else
         {
             if (followIndex > 0)
             {
                 _collectTimer = -0.15f;
             }
         }
     }
     base.Update();
     if (Follower.Leader != null && base.Scene.OnInterval(0.08f))
     {
         ParticleType type = _isGhostBerry ? P_GhostGlow : P_Glow;
         SceneAs <Level>().ParticlesFG.Emit(type, Position + Calc.Random.Range(-Vector2.One * 6f, Vector2.One * 6f));
     }
 }
Exemplo n.º 12
0
        public LaserEmitter(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            Add((Component)(startupSprite = new Sprite(GFX.Game, "objects/pandorasBox/laser/emitter/start")));
            startupSprite.AddLoop("start", "", 0.1f);
            startupSprite.JustifyOrigin(0.5f, 1f);
            startupSprite.Play("start");
            startupSprite.OnLastFrame = onLastFrame;
            startupSprite.Stop();

            Add((Component)(idleSprite = new Sprite(GFX.Game, "objects/pandorasBox/laser/emitter/idle")));
            idleSprite.AddLoop("idle", "", 0.125f);
            idleSprite.JustifyOrigin(0.5f, 1f);
            idleSprite.Play("idle");
            idleSprite.Visible = false;

            flag         = data.Attr("flag", "");
            direction    = data.Attr("direction", "");
            beamDuration = data.Int("beamDuration", -1);
            inverted     = Boolean.Parse(data.Attr("inverted", "false"));
            id           = data.ID;
            color        = ColorHelper.GetColor(data.Attr("color", "White"));

            inStartupAnimation = false;

            Collider = new Hitbox(16f, 32f, -8f, -32f);

            Depth = 50;

            Add((Component)(bloom = new BloomPoint(new Vector2(0, -24), 0.3f, 4f)));
            Add((Component)(light = new VertexLight(new Vector2(0, -24), Color.White, 1f, 48, 64)));

            Add(new StaticMover
            {
                SolidChecker    = new Func <Solid, bool>(IsRiding),
                JumpThruChecker = new Func <JumpThru, bool>(IsRiding),
                OnMove          = delegate(Vector2 v)
                {
                    if (laserbeam != null)
                    {
                        laserbeam.Position += v;
                    }
                },
                OnDestroy = delegate()
                {
                    RemoveSelf();
                }
            });
        }
 public BadelineBoostDown(Vector2[] nodes)
     : base(nodes[0])
 {
     Depth      = -1000000;
     this.nodes = nodes;
     Collider   = new Circle(16f);
     Add(new PlayerCollider(OnPlayer));
     Add(sprite      = GFX.SpriteBank.Create("badelineBoost"));
     Add(stretch     = new Image(GFX.Game["objects/badelineboost/stretch"]));
     stretch.Visible = false;
     stretch.CenterOrigin();
     Add(light   = new VertexLight(Color.White, 0.7f, 12, 20));
     Add(bloom   = new BloomPoint(0.5f, 12f));
     Add(wiggler = Wiggler.Create(0.4f, 3f,
                                  f => sprite.Scale = Vector2.One * (float)(1.0 + (double)wiggler.Value * 0.400000005960464)));
     Add(relocateSfx = new SoundSource());
 }
Exemplo n.º 14
0
        public GenericCustomBooster(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            Depth    = -8500;
            Collider = new Circle(10f, 0f, 2f);
            sprite   = new Sprite(GFX.Game, data.Attr("directory", "objects/FrostHelper/blueBooster/"))
            {
                Visible = true
            };
            sprite.CenterOrigin();
            sprite.Justify = new Vector2(0.5f, 0.5f);
            sprite.AddLoop("loop", "booster", 0.1f, 0, 1, 2, 3, 4);
            sprite.AddLoop("inside", "booster", 0.1f, 5, 6, 7, 8);
            sprite.AddLoop("spin", "booster", 0.06f, 18, 19, 20, 21, 22, 23, 24, 25);
            sprite.Add("pop", "booster", 0.08f, 9, 10, 11, 12, 13, 14, 15, 16, 17);
            sprite.Play("loop", false);
            Add(sprite);

            Add(new PlayerCollider(new Action <Player>(OnPlayer), null, null));
            Add(light   = new VertexLight(Color.White, 1f, 16, 32));
            Add(bloom   = new BloomPoint(0.1f, 16f));
            Add(wiggler = Wiggler.Create(0.5f, 4f, delegate(float f)
            {
                sprite.Scale = Vector2.One * (1f + f * 0.25f);
            }, false, false));
            Add(dashRoutine = new Coroutine(false));

            Add(dashListener    = new DashListener());
            dashListener.OnDash = new Action <Vector2>(OnPlayerDashed);

            Add(new MirrorReflection());
            Add(loopingSfx = new SoundSource());

            Red          = data.Bool("red", false);
            particleType = Red ? Booster.P_BurstRed : Booster.P_Burst;

            RespawnTime   = data.Float("respawnTime", 1f);
            BoostTime     = data.Float("boostTime", 0.3f);
            ParticleColor = ColorHelper.GetColor(data.Attr("particleColor", "Yellow"));
            reappearSfx   = data.Attr("reappearSfx", "event:/game/04_cliffside/greenbooster_reappear");
            enterSfx      = data.Attr("enterSfx", "event:/game/04_cliffside/greenbooster_enter");
            boostSfx      = data.Attr("boostSfx", "event:/game/04_cliffside/greenbooster_dash");
            endSfx        = data.Attr("releaseSfx", "event:/game/04_cliffside/greenbooster_end");
        }
Exemplo n.º 15
0
 public override void Added(Scene scene)
 {
     base.Added(scene);
     Add(_wiggler = Wiggler.Create(0.4f, 4f, delegate(float v)
     {
         _sprite.Scale = Vector2.One * (1f + v * 0.35f);
     }));
     Add(_rotateWiggler = Wiggler.Create(0.5f, 4f, delegate(float v)
     {
         _sprite.Rotation = v * 30f * ((float)Math.PI / 180f);
     }));
     Add(_bloom      = new BloomPoint(_isGhostBerry ? 0.5f : 1f, 12f));
     Add(_light      = new VertexLight(Color.RosyBrown, 1f, 16, 24));
     Add(_lightTween = _light.CreatePulseTween());
     if ((scene as Level).Session.BloomBaseAdd > 0.1f)
     {
         _bloom.Alpha *= 0.5f;
     }
 }
Exemplo n.º 16
0
 public ColdBumper(Vector2 position, Vector2?node)
     : base(position)
 {
     base.Collider = new Circle(12f);
     Add(new PlayerCollider(OnPlayer));
     Add(sine           = new SineWave(0.44f, 0f).Randomize());
     Add(sprite         = GFX.SpriteBank.Create("bumper"));
     Add(spriteEvil     = GFX.SpriteBank.Create("bumper_evil"));
     spriteEvil.Visible = false;
     Add(light          = new VertexLight(Color.Teal, 1f, 16, 32));
     Add(bloom          = new BloomPoint(0.5f, 16f));
     this.node          = node;
     anchor             = Position;
     if (node.HasValue)
     {
         Vector2 start = Position;
         Vector2 end   = node.Value;
         Tween   tween = Tween.Create(Tween.TweenMode.Looping, Ease.CubeInOut, 1.81818187f, start: true);
         tween.OnUpdate = delegate(Tween t)
         {
             if (goBack)
             {
                 anchor = Vector2.Lerp(end, start, t.Eased);
             }
             else
             {
                 anchor = Vector2.Lerp(start, end, t.Eased);
             }
         };
         tween.OnComplete = delegate
         {
             goBack = !goBack;
         };
         Add(tween);
     }
     UpdatePosition();
     Add(hitWiggler = Wiggler.Create(1.2f, 2f, delegate
     {
         spriteEvil.Position = hitDir * hitWiggler.Value * 8f;
     }));
     Add(new CoreModeListener(OnChangeMode));
 }
Exemplo n.º 17
0
        public override void Added(Scene scene)
        {
            base.Added(scene);

            var berrySet = GrabbedLifeBerries;

            if (!this.Follower.HasLeader && berrySet.TakenIDs.Contains(this.ID))
            {
                this.RemoveSelf();
                return;
            }

            this.Add(this.Sprite      = GFX.SpriteBank.Create("strawberry"));
            this.Sprite.OnFrameChange = this.OnAnimate;
            this.Add(this.Wiggler     = Wiggler.Create(0.4f, 4f, v => this.Sprite.Scale = Vector2.One * (float)(1.0 + (double)v * 0.3499999940395355)));
            this.Add(Wiggler.Create(0.5f, 4f, v => this.Sprite.Rotation = (float)((double)v * 30.0 * (Math.PI / 180.0))));
            this.Add(this.Bloom      = new BloomPoint(1f, 12f));
            this.Add(this.Light      = new VertexLight(Color.White, 1f, 16, 24));
            this.Add(this.LightTween = this.Light.CreatePulseTween());
        }
Exemplo n.º 18
0
        public AirBubbles(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            oneUse = data.Bool("oneUse");

            Collider = new Hitbox(16f, 16f, -8f, -8f);
            Add(new PlayerCollider(OnPlayer));

            Add(outline = new Image(GFX.Game["objects/pandorasBox/airBubbles/outline"]));
            outline.CenterOrigin();
            outline.Visible = false;

            Add(sprite = new Sprite(GFX.Game, "objects/pandorasBox/airBubbles/idle"));
            sprite.AddLoop("idle", "", 0.1f);
            sprite.Play("idle");
            sprite.CenterOrigin();

            Add(flash = new Sprite(GFX.Game, "objects/pandorasBox/airBubbles/flash"));
            flash.Add("flash", "", 0.05f);
            flash.OnFinish = delegate
            {
                flash.Visible = false;
            };
            flash.CenterOrigin();

            Add(wiggler = Wiggler.Create(1f, 4f, delegate(float v)
            {
                sprite.Scale = (flash.Scale = Vector2.One * (1f + v * 0.2f));
            }));

            Add(new MirrorReflection());

            Add(bloom = new BloomPoint(0.8f, 16f));
            Add(light = new VertexLight(Color.White, 1f, 16, 48));

            Add(sine = new SineWave(0.6f, 0f));
            sine.Randomize();

            UpdateY();

            base.Depth = -100;
        }
Exemplo n.º 19
0
 public Shield(Vector2 position) : base(position)
 {
     Collider = new Circle(10f);
     Add(new PlayerCollider(OnPlayer));
     Add(sprite = GFX.SpriteBank.Create("flyFeather"));
     Add(Wiggler.Create(1f, 4f,
                        v => sprite.Scale = Vector2.One * (float)(1.0 + (double)v * 0.2)));
     Add(bloom   = new BloomPoint(0.5f, 20f));
     Add(light   = new VertexLight(Color.White, 1f, 16, 48));
     Add(sine    = new SineWave(0.6f, 0.0f).Randomize());
     Add(outline = new Image(GFX.Game["objects/flyFeather/outline"]));
     outline.CenterOrigin();
     outline.Visible    = false;
     sprite.Visible     = false;
     shieldRadiusWiggle = Wiggler.Create(0.5f, 4f);
     Add(shieldRadiusWiggle);
     moveWiggle           = Wiggler.Create(0.8f, 2f);
     moveWiggle.StartZero = true;
     Add(moveWiggle);
     UpdateY();
 }
Exemplo n.º 20
0
        public GenericStrawberrySeed(IStrawberrySeeded strawberry, Vector2 position, int index, bool ghost)
            : base(position)
        {
            Strawberry = strawberry;
            Depth      = Depths.Pickups;
            start      = Position;
            Collider   = new Hitbox(12f, 12f, -6f, -6f);
            this.index = index;
            this.ghost = ghost;

            Add(follower              = new Follower(OnGainLeader, OnLoseLeader));
            follower.FollowDelay      = 0.2f;
            follower.PersistentFollow = false;

            Add(new StaticMover {
                SolidChecker = solid => solid.CollideCheck(this),
                OnAttach     = platform => {
                    Depth    = Depths.Top;
                    Collider = new Hitbox(24f, 24f, -12f, -12f);
                    attached = platform;
                    start    = Position - platform.Position;
                }
            });
            Add(new PlayerCollider(OnPlayer));

            Add(wiggler = Wiggler.Create(0.5f, 4f, v => {
                sprite.Scale = Vector2.One * (1f + 0.2f * v);
            }, false, false));
            Add(sine       = new SineWave(0.5f, 0f).Randomize());
            Add(shaker     = new Shaker(false, null));
            Add(bloom      = new BloomPoint(1f, 12f));
            Add(light      = new VertexLight(Color.White, 1f, 16, 24));
            Add(lightTween = light.CreatePulseTween());

            if (P_Burst == null)
            {
                P_Burst = StrawberrySeed.P_Burst;
            }
        }
Exemplo n.º 21
0
        public PowerRefill(Vector2 position, bool oneUse)
            : base(position)
        {
            base.Collider = new Hitbox(16f, 16f, -8f, -8f);
            Add(new BatteryCollider(OnBattery));
            this.oneUse = oneUse;
            string str;

            str         = "batteries/power_refill/";
            p_shatter   = P_Shatter;
            p_regen     = P_Regen;
            p_glow      = P_Glow;
            Add(outline = new Image(GFX.Game[str + "outline"]));
            outline.CenterOrigin();
            outline.Visible = false;
            Add(sprite      = new Sprite(GFX.Game, str + "idle"));
            sprite.AddLoop("idle", "", 0.1f);
            sprite.Play("idle");
            sprite.CenterOrigin();
            Add(flash = new Sprite(GFX.Game, str + "flash"));
            flash.Add("flash", "", 0.05f);
            flash.OnFinish = delegate
            {
                flash.Visible = false;
            };
            flash.CenterOrigin();
            Add(wiggler = Wiggler.Create(1f, 4f, delegate(float v)
            {
                sprite.Scale = (flash.Scale = Vector2.One * (1f + v * 0.2f));
            }));
            Add(new MirrorReflection());
            Add(bloom = new BloomPoint(0.8f, 16f));
            Add(light = new VertexLight(Color.White, 1f, 16, 48));
            Add(sine  = new SineWave(0.6f, 0f));
            sine.Randomize();
            UpdateY();
            base.Depth = -100;
        }
Exemplo n.º 22
0
        public override void Added(Scene scene)
        {
            base.Added(scene);

            if (!SceneAs <Level>().Session.GetFlag("Machine_Heart_Destroyed"))
            {
                _backSprite.Play("idle");
                Add(_frontSprite = FactoryHelperModule.SpriteBank.Create("machineHeart_front"));
                _frontSprite.Play("idle");
                OnDashCollide  = DashCollide;
                Add(_light     = new VertexLight(Color.Red, 1f, 32, 64));
                _light.Visible = false;
                Add(_bloom     = new BloomPoint(0.8f, 8f));
            }
            else
            {
                _backSprite.Play("destroyed");
                _stage     = 3;
                Collidable = false;
                Depth      = 8000;
                Add(new Coroutine(SpawnSteam()));
            }
        }
Exemplo n.º 23
0
 public override void Added(Scene scene)
 {
     base.Added(scene);
     Add(sprite = GFX.SpriteBank.Create("strawberry"));
     if (Winged)
     {
         sprite.Play("flap", false, false);
     }
     sprite.OnFrameChange = new Action <string>(OnAnimate);
     Add(wiggler          = Wiggler.Create(0.4f, 4f, delegate(float v) {
         sprite.Scale = Vector2.One * (1f + v * 0.35f);
     }, false, false));
     Add(rotateWiggler = Wiggler.Create(0.5f, 4f, delegate(float v) {
         sprite.Rotation = v * 30f * 0.0174532924f;
     }, false, false));
     Add(bloom      = new BloomPoint(1f, 12f));
     Add(light      = new VertexLight(Color.White, 1f, 16, 24));
     Add(lightTween = light.CreatePulseTween());
     if ((scene as Level).Session.BloomBaseAdd > 0.1f)
     {
         bloom.Alpha *= 0.5f;
     }
 }
Exemplo n.º 24
0
        public CustomPoints(Vector2 position, bool ghostberry, string text, bool moonberry, bool narrated = false, string narrator = "madeline", int portrait = 0) : base(position)
        {
            sprites = new Sprite[text.Length];
            for (int i = 0; i < text.Length; i++)
            {
                base.Add(this.sprites[i] = GFX.SpriteBank.Create("customPoints"));
            }
            textWidth = sprites.Sum(sprite => sprite.Width);

            //Celeste graphics stuff??
            base.Add(this.light = new VertexLight(Color.White, 1f, 16, 24));
            base.Add(this.bloom = new BloomPoint(1f, 12f));
            base.Depth          = -2000100;
            //I should learn about these sometime
            base.Tag = (Tags.Persistent | Tags.TransitionUpdate | Tags.FrozenUpdate);

            this.ghostberry = ghostberry;
            this.moonberry  = moonberry;
            this.text       = text;
            this.narrated   = narrated;
            this.narrator   = narrator;
            this.portrait   = portrait;
        }
Exemplo n.º 25
0
        public static void CustomFeatherBegin()
        {
            Player           player  = FrostModule.StateGetPlayer();
            DynData <Player> data    = new DynData <Player>(player);
            CustomFeather    feather = (CustomFeather)data["fh.customFeather"];

            player.Sprite.Play("startStarFly", false, false);
            data["starFlyTransforming"] = true;
            data["starFlyTimer"]        = feather.FlyTime;
            data["starFlySpeedLerp"]    = 0f;
            data["jumpGraceTimer"]      = 0f;
            BloomPoint starFlyBloom = (BloomPoint)data["starFlyBloom"];

            if (starFlyBloom == null)
            {
                player.Add(starFlyBloom = new BloomPoint(new Vector2(0f, -6f), 0f, 16f));
            }
            starFlyBloom.Visible = true;
            starFlyBloom.Alpha   = 0f;
            data["starFlyBloom"] = starFlyBloom;
            player.Collider      = (Hitbox)data["starFlyHitbox"];
            data["hurtbox"]      = data["starFlyHurtbox"];
            SoundSource starFlyLoopSfx    = (SoundSource)data["starFlyLoopSfx"];
            SoundSource starFlyWarningSfx = (SoundSource)data["starFlyWarningSfx"];

            if (starFlyLoopSfx == null)
            {
                player.Add(starFlyLoopSfx             = new SoundSource());
                starFlyLoopSfx.DisposeOnTransition    = false;
                player.Add(starFlyWarningSfx          = new SoundSource());
                starFlyWarningSfx.DisposeOnTransition = false;
            }
            starFlyLoopSfx.Play("event:/game/06_reflection/feather_state_loop", "feather_speed", 1f);
            starFlyWarningSfx.Stop(true);
            data["starFlyLoopSfx"]    = starFlyLoopSfx;
            data["starFlyWarningSfx"] = starFlyWarningSfx;
        }
Exemplo n.º 26
0
        public Lamp(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            id               = data.ID;
            flag             = data.Attr("flag", "");
            baseColor        = ColorHelper.GetColor(data.Attr("baseColor", "White"));
            lightColor       = ColorHelper.GetColor(data.Attr("lightColor", "White"));
            lightStartRadius = data.Int("lightStartRadius", 48);
            lightEndRadius   = data.Int("lightEndRadius", 64);
            inverted         = data.Bool("inverted", false);

            Add((Component)(startupSprite = new Sprite(GFX.Game, "objects/pandorasBox/lamp/start")));
            startupSprite.AddLoop("start", "", startupAnimationDelay);
            startupSprite.JustifyOrigin(0.5f, 0.5f);
            startupSprite.Play("start");
            startupSprite.OnLastFrame = onLastFrame;
            startupLerpTotal          = startupAnimationDelay * startupSprite.CurrentAnimationTotalFrames;
            startupSprite.Stop();

            Add((Component)(idleSprite = new Sprite(GFX.Game, "objects/pandorasBox/lamp/idle")));
            idleSprite.AddLoop("idle", "", 0.125f);
            idleSprite.JustifyOrigin(0.5f, 0.5f);
            idleSprite.Play("idle");
            idleSprite.Visible = false;

            Add((Component)(baseSprite = new Sprite(GFX.Game, "objects/pandorasBox/lamp/base")));
            baseSprite.AddLoop("base", "", 0.1f);
            baseSprite.JustifyOrigin(0.5f, 0.5f);
            baseSprite.Play("base");
            baseSprite.SetColor(baseColor);

            inStartupAnimation = false;

            Add((Component)(bloom = new BloomPoint(0.5f, 8f)));
            Add((Component)(light = new VertexLight(lightColor, 1f, lightStartRadius, lightEndRadius)));

            Depth = 5;
        }
            public Gem(string id, Vector2 position)
                : base(position)
            {
                ID    = id;
                Index = Calc.Clamp(int.Parse(id.Substring(id.LastIndexOf('/') + 1)), 0, 7);
                Depth = Depths.FGTerrain - 10;

                // Will probably be implemented as Decals
                //Add(Bg = new Image(GFX.Game["collectables/summitgems/" + id + "/bg"]));
                //Bg.CenterOrigin();

                if (GFX.Game.Has("collectables/summitgems/" + id + "/gem00"))
                {
                    Add(Sprite = new Sprite(GFX.Game, "collectables/summitgems/" + id + "/gem"));
                }
                else
                {
                    Add(Sprite = new Sprite(GFX.Game, "collectables/summitgems/" + Index + "/gem"));
                }
                Sprite.AddLoop("idle", "", 0.05f, 1);
                Sprite.Add("spin", "", 0.05f, "idle");
                Sprite.Play("idle");
                Sprite.CenterOrigin();

                Add(Bloom = new BloomPoint(0f, 20f));

                if (Everest.Content.TryGet(GFX.Game.RelativeDataPath + "collectables/summitgems/" + id + "/gem.meta", out ModAsset asset) &&
                    asset.TryDeserialize(out CustomSummitGem.ColorMeta meta))
                {
                    ParticleColor = Calc.HexToColor(meta.Color);
                }
                else
                {
                    ParticleColor = CustomSummitGem.GemColors[Index];
                }
            }
Exemplo n.º 28
0
        public void Initialize(bool fromcctor)
        {
            if (!fromcctor)
            {
                SceneAs <Level>().ParticlesFG.Emit(Refill.P_Regen, 5, Center, Vector2.One * 4f, particleColor);
                SceneAs <Level>().ParticlesFG.Emit(Refill.P_Regen, 5, Center, Vector2.One * 4f, particleColor);
            }
            Collider = new Hitbox(16f, 16f, -8f, -8f);
            Add(new PlayerCollider(new Action <Player>(OnPlayer), null, null));
            Add(outline = new Image(GFX.Game[spritepath + "/outline"]));
            outline.CenterOrigin();
            outline.Visible = false;
            Add(sprite      = new Sprite(GFX.Game, spritepath + "/idle"));
            sprite.AddLoop("idle", "", 0.1f);
            sprite.Play("idle", false, false);
            sprite.CenterOrigin();
            Add(flash = new Sprite(GFX.Game, spritepath + "/flash"));
            flash.Add("flash", "", 0.05f);
            flash.OnFinish = delegate(string anim)
            {
                flash.Visible = false;
            };
            flash.CenterOrigin();
            Add(wiggler = Wiggler.Create(1f, 4f, delegate(float v)
            {
                sprite.Scale = flash.Scale = Vector2.One * (1f + v * 0.2f);
            }, false, false));
            Add(new MirrorReflection());
            Add(bloom = new BloomPoint(0.8f, 16f));
            Add(light = new VertexLight(Color.White, 1f, 16, 40));
            Add(sine  = new SineWave(0.6f));
            sine.Randomize();
            UpdateY();

            Depth = Depths.DreamBlocks - 1;
        }
Exemplo n.º 29
0
        public CustomFeather(EntityData data, Vector2 offset) : base(data.Position + offset)
        {
            shielded     = data.Bool("shielded", false);
            singleUse    = data.Bool("singleUse", false);
            RespawnTime  = data.Float("respawnTime", 3f);
            FlyColor     = ColorHelper.GetColor(data.Attr("flyColor", "ffd65c"));
            FlyTime      = data.Float("flyTime", 2f);
            MaxSpeed     = data.Float("maxSpeed", 190f);
            LowSpeed     = data.Float("lowSpeed", 140f);
            NeutralSpeed = data.Float("neutralSpeed", 91f);
            Collider     = new Hitbox(20f, 20f, -10f, -10f);
            Add(new PlayerCollider(new Action <Player>(OnPlayer), null, null));
            string path = data.Attr("spritePath", "objects/flyFeather/").Replace('\\', '/');

            if (path[path.Length - 1] != '/')
            {
                path += '/';
            }
            sprite = new Sprite(GFX.Game, path)
            {
                Visible = true
            };
            sprite.CenterOrigin();
            sprite.Color   = ColorHelper.GetColor(data.Attr("spriteColor", "White"));
            sprite.Justify = new Vector2(0.5f, 0.5f);
            sprite.Add("loop", "idle", 0.06f, "flash");
            sprite.Add("flash", "flash", 0.06f, "loop");
            sprite.Play("loop");
            Add(sprite);

            Add(wiggler = Wiggler.Create(1f, 4f, delegate(float v)
            {
                sprite.Scale = Vector2.One * (1f + v * 0.2f);
            }, false, false));
            Add(bloom   = new BloomPoint(0.5f, 20f));
            Add(light   = new VertexLight(Color.White, 1f, 16, 48));
            Add(sine    = new SineWave(0.6f, 0f).Randomize());
            Add(outline = new Image(GFX.Game[data.Attr("outlinePath", "objects/flyFeather/outline")]));
            outline.CenterOrigin();
            outline.Visible    = false;
            shieldRadiusWiggle = Wiggler.Create(0.5f, 4f, null, false, false);
            Add(shieldRadiusWiggle);
            moveWiggle           = Wiggler.Create(0.8f, 2f, null, false, false);
            moveWiggle.StartZero = true;
            Add(moveWiggle);
            UpdateY();

            P_Collect = new ParticleType(FlyFeather.P_Collect)
            {
                ColorMode = ParticleType.ColorModes.Static,
                Color     = FlyColor
            };
            P_Flying = new ParticleType(FlyFeather.P_Flying)
            {
                ColorMode = ParticleType.ColorModes.Static,
                Color     = FlyColor
            };
            P_Boost = new ParticleType(FlyFeather.P_Boost)
            {
                ColorMode = ParticleType.ColorModes.Static,
                Color     = FlyColor
            };
        }
Exemplo n.º 30
0
        public static int StarFlyUpdate()
        {
            Player           player     = FrostModule.StateGetPlayer();
            Level            level      = player.SceneAs <Level>();
            DynData <Player> data       = new DynData <Player>(player);
            BloomPoint       bloomPoint = (BloomPoint)data["starFlyBloom"];
            CustomFeather    feather    = (CustomFeather)data["fh.customFeather"];
            // 2f -> StarFlyTime
            float StarFlyTime = feather.FlyTime;

            bloomPoint.Alpha     = Calc.Approach(bloomPoint.Alpha, 0.7f, Engine.DeltaTime * StarFlyTime);
            data["starFlyBloom"] = bloomPoint;
            Input.Rumble(RumbleStrength.Climb, RumbleLength.Short);
            if ((bool)data["starFlyTransforming"])
            {
                player.Speed = Calc.Approach(player.Speed, Vector2.Zero, 1000f * Engine.DeltaTime);
            }
            else
            {
                Vector2 aimValue  = Input.Aim.Value;
                bool    notAiming = false;
                bool    flag3     = aimValue == Vector2.Zero;
                if (flag3)
                {
                    notAiming = true;
                    aimValue  = (Vector2)data["starFlyLastDir"];
                }
                Vector2 lastSpeed = player.Speed.SafeNormalize(Vector2.Zero);
                bool    flag4     = lastSpeed == Vector2.Zero;
                if (flag4)
                {
                    lastSpeed = aimValue;
                }
                else
                {
                    lastSpeed = lastSpeed.RotateTowards(aimValue.Angle(), 5.58505344f * Engine.DeltaTime);
                }
                data["starFlyLastDir"] = lastSpeed;
                float target;
                if (notAiming)
                {
                    data["starFlySpeedLerp"] = 0f;
                    target = feather.NeutralSpeed; // was 91f
                }
                else
                {
                    bool flag6 = lastSpeed != Vector2.Zero && Vector2.Dot(lastSpeed, aimValue) >= 0.45f;
                    if (flag6)
                    {
                        data["starFlySpeedLerp"] = Calc.Approach((float)data["starFlySpeedLerp"], 1f, Engine.DeltaTime / 1f);
                        target = MathHelper.Lerp(feather.LowSpeed, feather.MaxSpeed, (float)data["starFlySpeedLerp"]);
                    }
                    else
                    {
                        data["starFlySpeedLerp"] = 0f;
                        target = 140f;
                    }
                }
                SoundSource ss = (SoundSource)data["starFlyLoopSfx"];
                ss.Param("feather_speed", notAiming ? 0 : 1);
                data["starFlyLoopSfx"] = ss;

                float num = player.Speed.Length();
                num          = Calc.Approach(num, target, 1000f * Engine.DeltaTime);
                player.Speed = lastSpeed * num;
                bool flag7 = level.OnInterval(0.02f);
                if (flag7)
                {
                    level.Particles.Emit(feather.P_Flying, 1, player.Center, Vector2.One * 2f, feather.FlyColor, (-player.Speed).Angle());
                }
                bool pressed = Input.Jump.Pressed;
                if (pressed)
                {
                    bool flag8 = player.OnGround(3);
                    if (flag8)
                    {
                        player.Jump(true, true);
                        return(0);
                    }
                    bool flag9 = (bool)player_WallJumpCheck.Invoke(player, new object[] { -1 });
                    if (flag9)
                    {
                        player_WallJump.Invoke(player, new object[] { 1 });
                        return(0);
                    }
                    bool flag10 = (bool)player_WallJumpCheck.Invoke(player, new object[] { 1 });
                    if (flag10)
                    {
                        player_WallJump.Invoke(player, new object[] { -1 });
                        return(0);
                    }
                }
                bool check = Input.Grab.Check;
                if (check)
                {
                    bool flag11 = false;
                    int  dir    = 0;
                    bool flag12 = Input.MoveX.Value != -1 && player.ClimbCheck(1, 0);
                    if (flag12)
                    {
                        player.Facing = Facings.Right;
                        dir           = 1;
                        flag11        = true;
                    }
                    else
                    {
                        bool flag13 = Input.MoveX.Value != 1 && player.ClimbCheck(-1, 0);
                        if (flag13)
                        {
                            player.Facing = Facings.Left;
                            dir           = -1;
                            flag11        = true;
                        }
                    }
                    bool flag14 = flag11;
                    if (flag14)
                    {
                        bool noGrabbing = Celeste.SaveData.Instance.Assists.NoGrabbing;
                        if (noGrabbing)
                        {
                            player.Speed = Vector2.Zero;
                            player.ClimbTrigger(dir);
                            return(0);
                        }
                        return(1);
                    }
                }
                bool canDash = player.CanDash;
                if (canDash)
                {
                    return(player.StartDash());
                }
                float starFlyTimer = (float)data["starFlyTimer"];
                starFlyTimer        -= Engine.DeltaTime;
                data["starFlyTimer"] = starFlyTimer;
                bool flag15 = starFlyTimer <= 0f;
                if (flag15)
                {
                    bool flag16 = Input.MoveY.Value == -1;
                    if (flag16)
                    {
                        player.Speed.Y = -100f;
                    }
                    bool flag17 = Input.MoveY.Value < 1;
                    if (flag17)
                    {
                        data["varJumpSpeed"] = player.Speed.Y;
                        player.AutoJump      = true;
                        player.AutoJumpTimer = 0f;
                        data["varJumpTimer"] = 0.2f;
                    }
                    bool flag18 = player.Speed.Y > 0f;
                    if (flag18)
                    {
                        player.Speed.Y = 0f;
                    }
                    bool flag19 = Math.Abs(player.Speed.X) > 140f;
                    if (flag19)
                    {
                        player.Speed.X = 140f * Math.Sign(player.Speed.X);
                    }
                    Input.Rumble(RumbleStrength.Medium, RumbleLength.Medium);
                    return(0);
                }
                bool flag20 = starFlyTimer < 0.5f && player.Scene.OnInterval(0.05f);
                if (flag20)
                {
                    Color starFlyColor = feather.FlyColor;
                    if (player.Sprite.Color == starFlyColor)
                    {
                        player.Sprite.Color = Player.NormalHairColor;
                    }
                    else
                    {
                        player.Sprite.Color = starFlyColor;
                    }
                }
            }
            return(CustomFeatherState);
        }