private static void ctor(On.Celeste.Player.orig_ctor orig, Celeste.Player self, Vector2 position, PlayerSpriteMode spriteMode)
        {
            orig(self, position, spriteMode);
            var conveyorMover = new ConveyorMover();

            conveyorMover.OnMove = (amount) =>
            {
                if (self.StateMachine.State != 1)
                {
                    self.MoveH(amount * Engine.DeltaTime);
                }
            };
            self.Add(conveyorMover);
        }
예제 #2
0
        public ThrowBox(Vector2 position, bool isMetal, bool tutorial = false, bool isSpecial = false, bool isCrucial = false) : base(position)
        {
            Position        -= DISPLACEMENT;
            _starterPosition = Position;
            Depth            = 100;
            Collider         = new Hitbox(8f, 10f, 4f + DISPLACEMENT.X, 6f + DISPLACEMENT.Y);
            _isMetal         = isMetal;
            IsSpecial        = isSpecial;
            _isCrucial       = isCrucial;
            _tutorial        = tutorial;
            string pathString = isMetal ? "crate_metal0" : "crate0";

            Add(_image       = new Image(GFX.Game[$"objects/FactoryHelper/crate/{pathString}"]));
            _image.Position += DISPLACEMENT;

            if (_isCrucial)
            {
                Add(_warningImage       = new Image(GFX.Game["objects/FactoryHelper/crate/crucial"]));
                _warningImage.Position += DISPLACEMENT;
            }

            Add(Hold            = new Holdable(0.1f));
            Hold.PickupCollider = new Hitbox(16f, 16f, DISPLACEMENT.X, DISPLACEMENT.Y);
            Hold.SlowFall       = false;
            Hold.SlowRun        = true;
            Hold.OnPickup       = OnPickup;
            Hold.OnRelease      = OnRelease;
            Hold.OnHitSpring    = HitSpring;
            Hold.OnHitSpinner   = OnHitSpinner;
            Hold.SpeedGetter    = (() => Speed);

            Add(_transitionListener        = new TransitionListener());
            _transitionListener.OnOutBegin = () => _isCrucial = false;

            Add(ConveyorMover    = new ConveyorMover());
            ConveyorMover.OnMove = MoveOnConveyor;

            Add(new SteamCollider(OnSteamWall));

            LiftSpeedGraceTime = 0.1f;

            Add(new LightOcclude(0.2f));
            Add(new MirrorReflection());
        }