public LaserSensor(EntityData data, Vector2 offset) : base(data.Position + offset) { active = false; flag = data.Attr("flag", ""); mode = data.Attr("mode", "Continuous"); blockLight = bool.Parse(data.Attr("blockLight", "true")); activationColor = ColorHelper.GetColor(data.Attr("color", "#87CEFA")); id = data.ID; orbSprite = new Monocle.Image(GFX.Game["objects/pandorasBox/laser/sensor/orb"]); orbSprite.Origin = new Vector2(orbSprite.Width / 2f, orbSprite.Height / 2f); orbEntity = new Entity(Position); orbEntity.Add(orbSprite); orbEntity.Depth = 50; metalRingSprite = new Monocle.Image(GFX.Game["objects/pandorasBox/laser/sensor/metal_ring"]); metalRingSprite.Origin = new Vector2(metalRingSprite.Width / 2f, metalRingSprite.Height / 2f); lightRingSprite = new Monocle.Image(GFX.Game["objects/pandorasBox/laser/sensor/light_ring"]); lightRingSprite.Origin = new Vector2(lightRingSprite.Width / 2f, lightRingSprite.Height / 2f); lightRingSprite.SetColor(activationColor); Add(metalRingSprite); Add(lightRingSprite); Depth = 200; LaserDetectionCollider = new Hitbox(8f, 8f, -4f, -4f); if (blockLight) { LaserBlockingCollider = new Hitbox(4f, 4f, -2f, -2f); } }
public DreamDashController(EntityData data, Vector2 offset) : base(data.Position + offset) { AllowSameDirectionDash = data.Bool("allowSameDirectionDash", false); AllowDreamDashRedirection = data.Bool("allowDreamDashRedirect", true); OverrideDreamDashSpeed = data.Bool("overrideDreamDashSpeed", false); OverrideColors = data.Bool("overrideColors", false); NeverSlowDown = data.Bool("neverSlowDown", false); UseEntrySpeedAngle = data.Bool("useEntrySpeedAngle", false); BounceOnCollision = data.Bool("bounceOnCollision", false); CollideStickToWalls = data.Bool("stickOnCollision", false); sameDirectionSpeedMultiplier = data.Float("sameDirectionSpeedMultiplier", 1.0f); dreamDashSpeed = data.Float("dreamDashSpeed", 240f); activeBackColor = ColorHelper.GetColor(data.Attr("activeBackColor", "Black")); disabledBackColor = ColorHelper.GetColor(data.Attr("disabledBackColor", "1f2e2d")); activeLineColor = ColorHelper.GetColor(data.Attr("activeLineColor", "White")); disabledLineColor = ColorHelper.GetColor(data.Attr("disabledLineColor", "6a8480")); particleLayerColors = new List <List <Color> > { ColorHelper.GetColors(data.Attr("particleLayer0Colors", "ffef11,ff00d0,08a310")), ColorHelper.GetColors(data.Attr("particleLayer1Colors", "5fcde4,7fb25e,e0564c")), ColorHelper.GetColors(data.Attr("particleLayer2Colors", "5b6ee1,CC3B3B,7daa64")) }; addedColors = false; }
public TimeField(EntityData data, Vector2 offset) : base(data.Position + offset) { lerp = 0f; start = data.Float("start", 0.2f); stop = data.Float("stop", 1f); startTime = data.Float("stopTime", 1.0f); stopTime = data.Float("startTime", 3.0f); animRate = data.Float("animRate", 6.0f); render = data.Bool("render", true); playerAffected = data.Bool("playerAffected", false); lingering = data.Bool("lingering", false); respectOtherTimeRates = data.Bool("respectOtherTimeRates", false); String rawColor = data.Attr("color", "teal"); tint = ColorHelper.GetColor(rawColor); base.Add(new PlayerCollider(new Action <Player>(this.OnPlayer), null, null)); base.Collider = (Collider) new Hitbox(data.Width, data.Height, 0, 0); this.particleTextures = new MTexture[4] { GFX.Game["objects/pandorasBox/timefields/particles"].GetSubtexture(24, 0, 8, 8, null), GFX.Game["objects/pandorasBox/timefields/particles"].GetSubtexture(0, 0, 8, 8, null), GFX.Game["objects/pandorasBox/timefields/particles"].GetSubtexture(8, 0, 8, 8, null), GFX.Game["objects/pandorasBox/timefields/particles"].GetSubtexture(16, 0, 8, 8, null) }; }
public ColoredWaterfall(EntityData data, Vector2 offset) : base(data.Position + offset) { baseColor = ColorHelper.GetColor(data.Attr("color", "#87CEFA")); surfaceColor = baseColor * 0.8f; fillColor = baseColor * 0.3f; rayTopColor = baseColor * 0.6f; }
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 ColoredWater(EntityData data, Vector2 offset) : base(data, offset) { baseColor = ColorHelper.GetColor(data.Attr("color", "#87CEFA")); surfaceColor = baseColor * 0.8f; fillColor = baseColor * 0.3f; rayTopColor = baseColor * 0.6f; fixedSurfaces = false; }
public static List <Color> GetColors(String rawColors, Char sep = ',') { List <Color> colors = new List <Color>(); foreach (String s in rawColors.Split(sep)) { colors.Add(ColorHelper.GetColor(s)); } return(colors); }
public ColoredWater(EntityData data, Vector2 offset) : base(data.Position + offset, data.Bool("hasTop", true), data.Bool("hasBottom"), data.Width, data.Height) { baseColor = ColorHelper.GetColor(data.Attr("color", "#87CEFA")); surfaceColor = baseColor * 0.8f; fillColor = baseColor * 0.3f; rayTopColor = baseColor * 0.6f; hasLeftSurface = data.Bool("hasLeft"); hasRightSurface = data.Bool("hasRight"); waterFill = (Rectangle)fillField.GetValue(this); interactionContains = (HashSet <WaterInteraction>)containsField.GetValue(this); }
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 PropellerBox(EntityData data, Vector2 offset) : base(data.Position + offset) { Depth = 100; Collider = new Hitbox(8f, 10f, -4f, -10f); MaxCharges = data.Int("maxCharges", 3); Charges = MaxCharges; texture = data.Attr("texture", "default"); flashUseColor = ColorHelper.GetColor(data.Attr("flashUseColor", "#3F437C")); flashRechargedColor = ColorHelper.GetColor(data.Attr("flashChargeColor", "#5A1C1C")); glideMode = data.Attr("glideMode", "AfterUse"); rechargeOnGround = data.Bool("rechargeOnGround", true); chargeSprites = new List <Sprite>(); for (int i = 0; i <= MaxCharges; i++) { addChargeSprite(i); } Add(flashOverlaySprite = new Sprite(GFX.Game, $"objects/pandorasBox/propellerBox/{texture}/flash_overlay")); flashOverlaySprite.Add("flash_overlay", "", 0.045f); flashOverlaySprite.Justify = new Vector2(0.5f, 1f); Add(Hold = new Holdable()); Hold.PickupCollider = new Hitbox(16f, 22f, -8f, -16f); Hold.OnPickup = OnPickup; Hold.OnRelease = OnRelease; Hold.DangerousCheck = DangerousCheck; Hold.OnHitSpring = HitSpring; Hold.SpeedGetter = (() => Speed); Hold.SlowFall = glideMode == "Always"; onCollideH = OnCollideH; onCollideV = OnCollideV; LiftSpeedGraceTime = 0.1f; Add(new VertexLight(base.Collider.Center, Color.White, 1f, 32, 64)); Add(new WindMover(WindMode)); updateChargeSpriteVisibility(); base.Tag = Tags.TransitionUpdate; }
public DustSpriteColorController(EntityData data, Vector2 offset) : base(data.Position + offset) { eyeColor = ColorHelper.GetColor(data.Attr("eyeColor", "Red")); eyeTexture = data.Attr("eyeTexture", "danger/dustcreature/eyes"); String rawColor = data.Attr("borderColor", "Green"); List <Vector3> colors = new List <Vector3>(); foreach (String s in rawColor.Split(',')) { colors.Add(ColorHelper.GetColor(s).ToVector3()); } borderColors = colors.ToArray(); style = new DustStyles.DustStyle { EdgeColors = borderColors, EyeColor = eyeColor, EyeTextures = eyeTexture }; }
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 CircularResortPlatform(EntityData data, Vector2 offset) : this(data.Position + offset, data.Width, data.Nodes[0] + offset, data.Attr("texture", ""), data.Bool("clockwise", true), data.Float("speed", 1500f), data.Bool("particles", true), data.Bool("attachToSolid", true), data.Bool("renderRail", true), ColorHelper.GetColor(data.Attr("lineFillColor", "160b12")), ColorHelper.GetColor(data.Attr("lineEdgeColor", "2a1923")), data.Bool("rotationFix", false)) { }
public ColoredBigWaterfall(EntityData data, Vector2 offset) : base(data, offset) { baseColor = ColorHelper.GetColor(data.Attr("color", "#87CEFA")); }
public MarioShell(EntityData data, Vector2 offset) : base(data.Position + offset) { colors = new List <Color>(); timeAcc = 0; bool lights = data.Bool("lights", false); texture = data.Attr("texture", "koopa"); dangerous = data.Bool("dangerous", dangerousTextures.ContainsKey(texture) && dangerousTextures[texture]); disco = data.Bool("disco", false); grabbable = data.Bool("grabbable", true); String rawColor = data.Attr("color", "Green"); colorSpeed = data.Float("colorSpeed", 0.8f); foreach (String s in rawColor.Split(',')) { colors.Add(ColorHelper.GetColor(s)); } int direction = Math.Sign(data.Int("direction", 0)); Speed = new Vector2(baseSpeed * direction, 0f); grace = 0f; prevLiftspeed = Vector2.Zero; pickupIdleCollider = new Hitbox(18f, 18f, -9, -9); pickupMovingCollider = new Hitbox(0f, 0f, 0f, 0f); shellHeldCollider = new Hitbox(8f, 14f, -4f, -7f); shellNotHeldCollider = new Hitbox(14f, 14f, -7f, -7f); Add(new PlayerCollider(new Action <Player>(OnPlayer))); Collider = shellNotHeldCollider; onCollideH = new Collision(OnCollideH); onCollideV = new Collision(OnCollideV); Add((Component)(decorationIdle = new Sprite(GFX.Game, $"objects/pandorasBox/shells/{texture}/deco_idle"))); decorationIdle.AddLoop("deco_idle", "", 0.1f); decorationIdle.Play("deco_idle", true, false); decorationIdle.CenterOrigin(); Add((Component)(shellIdle = new Sprite(GFX.Game, $"objects/pandorasBox/shells/{texture}/shell_idle"))); shellIdle.AddLoop("shell_idle", "", 0.1f); shellIdle.Play("shell_idle", true, false); shellIdle.CenterOrigin(); shellIdle.Color = colors[0]; Add((Component)(decorationMoving = new Sprite(GFX.Game, $"objects/pandorasBox/shells/{texture}/deco_moving"))); decorationMoving.AddLoop("deco_moving", "", 0.1f); decorationMoving.Play("deco_moving", true, false); decorationMoving.CenterOrigin(); Add((Component)(shellMoving = new Sprite(GFX.Game, $"objects/pandorasBox/shells/{texture}/shell_moving"))); shellMoving.AddLoop("shell_moving", "", 0.1f); shellMoving.Play("shell_moving", true, false); shellMoving.CenterOrigin(); shellMoving.Color = colors[0]; Add((Component)(Hold = new Holdable())); Hold.PickupCollider = new Hitbox(18f, 18f, -9, -9); Hold.OnPickup = new Action(OnPickup); Hold.OnRelease = new Action <Vector2>(OnRelease); Hold.SpeedGetter = () => Speed; Hold.DangerousCheck = DangerousCheck; Hold.OnHitSpring = HitSpring; decorationMoving.Visible = shellMoving.Visible = false; id = data.ID; if (lights) { Add((Component)(bloom = new BloomPoint(1f, 16f))); Add((Component)(light = new VertexLight(Collider.Center, Color.White, 1f, 8, 24))); bloom.Visible = light.Visible = true; } }