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); }
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; }
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; } }
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()); }
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()); }
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)); } }
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()); }
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"); }
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; } }
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)); }
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()); }
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; }
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(); }
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; } }
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; }
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())); } }
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; } }
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; }
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; }
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]; } }
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; }
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 }; }
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); }