public override void Update(float dt) { base.Update(dt); if (Target != null) { GraphicsComponent.Flipped = Target.CenterX < CenterX; } lastFadingParticle -= dt; if (lastFadingParticle <= 0) { lastFadingParticle = 0.2f; var particle = new FadingParticle(GetComponent <MobAnimationComponent>().Animation.GetCurrentTexture(), tint); Area.Add(particle); particle.Depth = Depth - 1; particle.Center = Center; } }
private void SetupSpawn() { busy = true; var torches = GetComponent <RoomComponent>().Room.Tagged[Tags.Torch]; target = new Vector2(CenterX, Y - 4); foreach (var t in torches) { var tr = (Torch)t; tr.XSpread = 1; tr.On = true; tr.Target = target; } Timer.Add(() => { var bk = new entity.creature.bk.BurningKnight(); Area.Add(bk); bk.Center = target.Value; Camera.Instance.Targets.Clear(); Camera.Instance.Follow(bk, 0.1f); Timer.Add(() => { ((InGameState)Engine.Instance.State).ResetFollowing(); }, 2f); Camera.Instance.Shake(10); foreach (var t in torches) { t.Done = true; } Done = true; }, 2f); }
public static void Hook(Area area) { area.Add(new RenderTrigger(() => { var state = Engine.Instance.StateRenderer; state.End(); var b = state.BlendState; state.BlendState = BlendState.Additive; state.Begin(); foreach (var e in area.Tagged[Tags.FireParticle]) { ((FireParticle)e).ActuallyRender(); } Graphics.Color = ColorUtils.WhiteColor; state.End(); state.BlendState = b; state.Begin(); }, Layers.WindFx)); }
public override void Load(FileReader stream) { base.Load(stream); if (dontSaveItem) { return; } if (stream.ReadBoolean()) { var item = new Item(); Area.Add(item, false); item.Load(stream); item.LoadedSelf = false; item.PostInit(); SetItem(item, null); } }
public override void AddComponents() { base.AddComponents(); AlwaysActive = true; Height = 21; if (tile == null) { tile = CommonAse.Props.GetSlice("spikes_base"); } Area.Add(new RenderTrigger(this, RenderBase, Layers.Entrance)); AddComponent(new StateComponent()); AddComponent(new AnimationComponent("spikes")); AddComponent(new ShadowComponent(RenderShadow)); AddComponent(new AudioEmitterComponent()); AddComponent(new RectBodyComponent(3, 5, 10, 10, BodyType.Static, true)); GetComponent <StateComponent>().Become <HiddenState>(); }
public override void Update(float dt) { base.Update(dt); if (charge) { sinceLastDamage += dt; if (sinceLastDamage >= ChangeDelay) { var health = entity.GetComponent <HealthComponent>(); var h = health.Health; var s = (lastChange - h) / health.MaxHealth * fill.Width; var p = new ParticleEntity(new Particle(new HealthParticleController(), new HealthParticleRenderer(damage, s))); p.Particle.Position = Position + barOffset + new Vector2((float)h / health.MaxHealth * fill.Width, 0); p.Position = p.Particle.Position; p.AlwaysActive = true; p.AlwaysVisible = true; Area.Add(p); p.Depth = Depth + 1; Tween.To(h, lastChange, x => lastChange = x, 0.3f); charge = false; } } if (entity.Awoken && !showedUp) { showedUp = true; Tween.To(0, Y, x => Y = x, 0.3f); } if (showedUp && (!entity.Awoken || (entity.Done && !tweened))) { Remove(); } }
public override void PostInit() { base.PostInit(); UpdateSprite(); if (!Broken) { Area.Add(fea = new FireEmitter { Depth = Depth + 1, Position = new Vector2(X + 11, Y + 15), Scale = 0.8f }); Area.Add(feb = new FireEmitter { Depth = Depth + 1, Position = new Vector2(X + 4, Y + 15), Scale = 0.8f }); AddComponent(new LightComponent(this, 32f, new Color(1f, 0.5f, 0f, 1f))); } }
private void FirstPart() { var dadDialog = dad.GetComponent <DialogComponent>(); var sonDialog = baby.GetComponent <DialogComponent>(); dadDialog.Dialog.AlwaysShowArrow = true; sonDialog.Dialog.AlwaysShowArrow = true; Start(dadDialog, "dad_0", () => { dadDialog.Close(); Start(sonDialog, "son_0", () => { sonDialog.Close(); Start(dadDialog, "dad_1", () => { dadDialog.Close(); dad.GraphicsComponent.Flipped = false; dad.GetComponent <AnimationComponent>().Animation.Tag = "run"; dad.RunAway = true; Timer.Add(() => { State.Say(Locale.Get("20_years_later"), () => { dad.Done = true; gobbo = new Gobbo(); Area.Add(gobbo); gobbo.BottomCenter = dadStart; gobbo.GraphicsComponent.Flipped = true; Timer.Add(() => { SecondPart(); }, 1f); }); }, 2f); }); }); }); }
public override void PostInit() { base.PostInit(); var p = GetPad(); if (p != null) { pad = CommonAse.Props.GetSlice(p); Area.Add(new RenderTrigger(this, () => { Graphics.Render(pad, Position); }, -1)); } var b = GetBar(); if (b == null) { return; } bar = CommonAse.Props.GetSlice(b); Area.Add(new RenderTrigger(this, () => RenderFrame(false), Layers.FlyingMob)); }
public virtual void PlaceRewards() { var exit = new Exit(); Area.Add(exit); exit.To = Run.Depth + 1; var center = GetComponent <RoomComponent>().Room.Center; var x = (int)Math.Floor(center.X / 16); var y = (int)Math.Floor(center.Y / 16); var p = new Vector2(x * 16 + 8, y * 16 + 8); exit.Center = p; Painter.Fill(Run.Level, x - 1, y - 1, 3, 3, Tiles.RandomFloor()); Painter.Fill(Run.Level, x - 1, y - 3, 3, 3, Tiles.RandomFloor()); Run.Level.ReTileAndCreateBodyChunks(x - 1, y - 1, 3, 7); var w = p - new Vector2(0, 32f); if (!(this is DM || this is BkHead || Run.Type == RunType.BossRush)) { var stand = new BossStand(); Area.Add(stand); stand.Center = w; stand.SetItem(Items.CreateAndAdd(Items.Generate(ItemPool.Boss), Area), null); } var rewards = new List <string>(); var c = Run.Type == RunType.BossRush ? 2 : Rnd.Int(2, 10); if (Run.Type != RunType.BossRush && !(this is DM || this is BkHead)) { for (var i = 0; i < c; i++) { rewards.Add("bk:emerald"); } var q = Rnd.Int(4, 10); for (var i = 0; i < q; i++) { rewards.Add("bk:copper_coin"); } } if (Run.Type != RunType.BossRush) { var cn = Rnd.Int(0, 3); for (var i = 0; i < cn; i++) { rewards.Add("bk:heart"); } } else { var cn = Rnd.Int(20, 30); for (var i = 0; i < cn; i++) { rewards.Add("bk:coin"); } } var j = 0; foreach (var reward in rewards) { var item = Items.CreateAndAdd(reward, Area); item.Center = w + MathUtils.CreateVector(j / ((float)rewards.Count) * Math.PI * 2 + Rnd.Float(-0.1f, 0.1f), Rnd.Float(12, 18)); j++; } }
public override void Update(float dt) { base.Update(dt); if (Died) { if (!cleared) { cleared = true; GetComponent <DialogComponent>().Close(); foreach (var p in Area.Tagged[Tags.Projectile]) { AnimationUtil.Poof(p.Center); ((Projectile)p).Break(null); } try { var a = GetComponent <RoomComponent>().Room.Tagged[Tags.MustBeKilled].ToArray(); foreach (var p in a) { if (!(p is Boss)) { AnimationUtil.Poof(p.Center); ((Creature)p).Kill(this); } } } catch (Exception e) { Log.Error(e); } } if (deathTimer >= 3f && !Placed) { Placed = true; CreateGore(null); if (this is bk.BurningKnight) { } else { HandleEvent(new DefeatedEvent { Boss = this }); } var player = LocalPlayer.Locate(Area); var doors = new List <DoorTile>(); if (player != null) { var stats = player.GetComponent <StatsComponent>(); var e = new DealChanceCalculateEvent(); if (!stats.TookDamageInRoom) { Achievements.Unlock("bk:dodge_master"); } e.GrannyStartChance = stats.SawDeal && !stats.TookDeal ? stats.GrannyChance : 0; e.GrannyChance = e.GrannyStartChance; e.DmStartChance = stats.DMChance; e.DmChance = e.DmStartChance; player.HandleEvent(e); var gr = Rnd.Chance(e.GrannyChance * 100); var dm = Rnd.Chance(e.DmChance * 100); if (gr || (dm && e.OpenBoth)) { foreach (var r in Area.Tagged[Tags.Room]) { var room = (Room)r; if (room.Type == RoomType.Granny) { room.OpenHiddenDoors(); foreach (var d in room.Doors) { doors.Add(new DoorTile { Door = d, Tile = Tile.GrannyFloor }); } break; } } } if (dm || (gr && e.OpenBoth)) { foreach (var r in Area.Tagged[Tags.Room]) { var room = (Room)r; if (room.Type == RoomType.OldMan) { room.OpenHiddenDoors(); foreach (var d in room.Doors) { doors.Add(new DoorTile { Door = d, Tile = Tile.EvilFloor }); } break; } } } } if (doors.Count > 0) { var rm = GetComponent <RoomComponent>().Room; var level = Run.Level; var cx = rm.MapX + rm.MapW / 2f; var cy = rm.MapY + rm.MapH / 2f; var grannyDoors = new List <Door>(); var evilDoors = new List <Door>(); foreach (var d in doors) { if (d.Tile == Tile.GrannyFloor) { grannyDoors.Add(d.Door); } else { evilDoors.Add(d.Door); } } rm.PaintTunnel(grannyDoors, Tile.GrannyFloor); rm.PaintTunnel(evilDoors, Tile.EvilFloor); rm.ApplyToEachTile((x, y) => { var t = level.Get(x, y); if (t == Tile.GrannyFloor || t == Tile.EvilFloor) { level.Set(x, y, Tile.FloorA); Timer.Add(() => { var part = new TileParticle(); part.Top = t == Tile.GrannyFloor ? Tilesets.Biome.GrannyFloor[0] : Tilesets.Biome.EvilFloor[0]; part.TopTarget = Run.Level.Tileset.WallTopADecor; part.Side = Run.Level.Tileset.FloorSidesD[0]; part.Sides = Run.Level.Tileset.WallSidesA[2]; part.Tile = t; part.X = x * 16; part.Y = y * 16; part.Target.X = x * 16; part.Target.Y = y * 16; part.TargetZ = -8f; Area.Add(part); }, 1f + Rnd.Float(0.2f) + MathUtils.Distance(x - cx, y - cy) / 6f); } }, -1); level.TileUp(); level.CreateBody(); } Done = true; PlaceRewards(); if (ResetCam) { Timer.Add(() => { ((InGameState)Engine.Instance.State).ResetFollowing(); }, 0.5f); } } else { deathTimer += dt; lastExplosion -= dt; if (lastExplosion <= 0) { lastExplosion = 0.3f; AnimationUtil.Explosion(Center + new Vector2(Rnd.Float(-16, 16), Rnd.Float(-16, 16))); Camera.Instance.Shake(10); Audio.PlaySfx($"level_explosion_{Rnd.Int(1, 4)}"); } if (deathTimer > 2.5f) { Engine.Instance.FlashColor = new Color(1f, 1f, 1f, (deathTimer - 2.5f) * 2f); Engine.Instance.Flash = 0.01f; } } return; } if (!(GetComponent <StateComponent>().StateInstance is FriendlyState) && HasHealthbar && HealthBar == null) { HealthBar = new HealthBar(this); Engine.Instance.State.Ui.Add(HealthBar); AddPhases(); Engine.Instance.State.Ui.Add(new UiBanner(Locale.Get(GetId()))); } }
protected void Build() { var Builder = GetBuilder(); var Rooms = CreateRooms(); Rooms = (List <RoomDef>)Rooms.Shuffle(Rnd.Generator); var Attempt = 0; do { Log.Info($"Generating (attempt {Attempt}, seed {Rnd.Seed})..."); foreach (var Room in Rooms) { Room.Connected.Clear(); Room.Neighbours.Clear(); } var Rm = new List <RoomDef>(); Rm.AddRange(Rooms); rooms = Builder.Build(Rm); var a = rooms == null; var b = false; if (!a) { foreach (var r in Rm) { if (r.IsEmpty()) { Log.Error("Found an empty room!"); b = true; break; } } } if (a || b) { rooms = null; Log.Error($"Failed! {Builder.GetType().Name}"); Area.Destroy(); Area.Add(Run.Level); LevelSave.FailedAttempts++; Builder = GetBuilder(); if (Attempt >= 10) { Log.Error("Too many attempts to generate a level! Trying a different room set!"); Attempt = 0; Rooms = CreateRooms(); Rooms = (List <RoomDef>)Rooms.Shuffle(Rnd.Generator); } Attempt++; } } while (rooms == null); }
private bool Interact(Entity e) { if (Broken || busy) { return(true); } Run.AddScourge(true); if (trigger != null) { trigger.Interrupted = true; } HandleEvent(new BrokenEvent { BurningStatue = this }); XSpread = 1; Tween.To(1f, Camera.Instance.Zoom, xx => Camera.Instance.Zoom = xx, 0.2f); Tween.To(1.4f, Camera.Instance.TextureZoom, xx => Camera.Instance.TextureZoom = xx, 0.5f); Camera.Instance.GetComponent <ShakeComponent>().Amount = 0; GameSave.Put("statue_broken", true); var torches = GetComponent <RoomComponent>().Room.Tagged[Tags.Torch]; foreach (var t in torches) { var tr = (Torch)t; tr.XSpread = 0.1f; tr.On = true; } Timer.Add(() => { for (var i = 0; i < torches.Count; i++) { var i1 = i; Timer.Add(() => { var t = (Torch)torches[i1]; t.Break(); Camera.Instance.Shake(5); }, i); } Timer.Add(() => { Particles.BreakSprite(Area, GetComponent <InteractableSliceComponent>().Sprite, Position); Broken = true; Camera.Instance.Unfollow(this); Camera.Instance.Shake(10); Timer.Add(() => { Camera.Instance.GetComponent <ShakeComponent>().Amount = 0; }, 0.5f); Camera.Instance.Targets.Clear(); Camera.Instance.Follow(this, 0.5f); UpdateSprite(); RemoveComponent <LightComponent>(); var exit = new Exit(); Area.Add(exit); exit.To = Run.Depth + 1; var x = (int)Math.Floor(CenterX / 16); var y = (int)Math.Floor(Bottom / 16 + 0.6f); var p = new Vector2(x * 16 + 8, y * 16 + 8); exit.Center = p; Painter.Fill(Run.Level, x - 1, y - 1, 3, 3, Tiles.RandomFloor()); Painter.Fill(Run.Level, x - 1, y - 3, 3, 3, Tiles.RandomFloor()); Run.Level.TileUp(); Run.Level.CreateBody(); Timer.Add(() => { Tween.To(1f, Camera.Instance.TextureZoom, xx => Camera.Instance.TextureZoom = xx, 0.8f); ((InGameState)BK.Instance.State).ResetFollowing(); }, 1f); }, torches.Count + 1); }, 1f); return(true); }
private void AddArtifact(Item item) { if (item.Hide || multiplayer) { return; } UiItem old = null; foreach (var i in items) { if (i.Id == item.Id) { old = i; break; } } if (old == null) { var x = Display.UiWidth - 8f; if (items.Count > 0) { x = items[items.Count - 1].X - 8; } old = new UiItem(); old.Id = item.Id; old.Scourged = item.Scourged; Area.Add(old); items.Add(old); old.Right = x; old.Bottom = Display.UiHeight - 8f; if (items.Count > 6) { more.Label = $"+{items.Count - 6}"; more.Enabled = true; more.Right = Display.UiWidth - 8; more.Bottom = Display.UiHeight - 5f; for (var i = 0; i < items.Count - 6; i++) { var it = items[i]; it.X = Display.UiWidth + 32; } var ps = Display.UiWidth - 8f; ps -= more.Width + 8; for (var i = items.Count - 6; i < items.Count; i++) { var it = items[i]; it.Right = ps; ps -= 8 + it.Width; } } } else { old.Count++; } }
public override bool HandleEvent(Event e) { if (e is LostSupportEvent) { if (GetComponent <HealthComponent>().Unhittable) { return(true); } if (!GetComponent <BuffsComponent>().PitImmunity) { GetComponent <HealthComponent>().ModifyHealth(-1, Run.Level); } for (var i = 0; i < 4; i++) { var part = new ParticleEntity(Particles.Dust()); part.Position = Center; part.Particle.Scale = Rnd.Float(0.4f, 0.8f); Area.Add(part); } } else if (e is RoomChangedEvent c) { if (c.New == null || Run.Level == null || Camera.Instance == null) { return(base.HandleEvent(e)); } if (c.New.Tagged[Tags.MustBeKilled].Count > 0) { Audio.PlaySfx("level_door_shut"); foreach (var p in Area.Tagged[Tags.Player]) { if (p.GetComponent <RoomComponent>().Room != c.New) { AnimationUtil.Poof(p.Center); p.Center = Center; AnimationUtil.Poof(p.Center); } } } ((InGameState)Engine.Instance.State).ResetFollowing(); var pr = (PixelPerfectGameRenderer)Engine.Instance.StateRenderer; if (c.Old != null) { if (Scourge.IsEnabled(Scourge.OfLost)) { c.Old.Hide(); } if (c.Old.Type == RoomType.DarkMarket || c.Old.Type == RoomType.Hidden) { pr.EnableClip = false; c.Old.Hide(true); InBuilding = false; ((InGameState)Engine.Instance.State).UpdateRainVolume(); } } if (c.New.Type == RoomType.DarkMarket) { Achievements.Unlock("bk:dark_market"); } if (c.New.Type == RoomType.DarkMarket || c.New.Type == RoomType.Hidden) { pr.EnableClip = true; pr.ClipPosition = new Vector2(c.New.X + 16, c.New.Y + 16); pr.ClipSize = new Vector2(c.New.Width - 16, c.New.Height - 32); InBuilding = true; ((InGameState)Engine.Instance.State).UpdateRainVolume(); } else { pr.EnableClip = false; } if (c.New.Type == RoomType.Shop) { Audio.PlaySfx("level_door_bell"); } c.New.Discover(); var level = Run.Level; if (InGameState.Ready) { switch (c.New.Type) { case RoomType.Secret: case RoomType.Special: case RoomType.Shop: case RoomType.SubShop: case RoomType.Treasure: { foreach (var door in c.New.Doors) { if (door.TryGetComponent <LockComponent>(out var component) && component.Lock is GoldLock) { if (!(c.New.Type == RoomType.Shop && ((door.Rooms[0] != null && door.Rooms[0].Type == RoomType.SubShop) || (door.Rooms[1] != null && door.Rooms[1].Type == RoomType.SubShop)))) { component.Lock.SetLocked(false, this); } } } break; } case RoomType.OldMan: case RoomType.Granny: { if (c.New.Type == RoomType.OldMan) { GetComponent <StatsComponent>().SawDeal = true; } c.New.OpenHiddenDoors(); foreach (var r in Area.Tagged[Tags.Room]) { var room = (Room)r; if (room.Type == (c.New.Type == RoomType.OldMan ? RoomType.Granny : RoomType.OldMan)) { room.CloseHiddenDoors(); break; } } break; } } if (c.New.Type == RoomType.Secret) { ExplosionMaker.CheckForCracks(level, c.New, this); } } if (c.Old != null) { if (c.Old.Type == RoomType.OldMan) { var found = false; foreach (var p in c.Old.Tagged[Tags.Player]) { if (p != this && p is Player) { found = true; break; } } if (!found) { c.Old.CloseHiddenDoors(); } } else if (c.Old.Type == RoomType.Treasure && Run.Type != RunType.BossRush && !Rnd.Chance(5)) { var found = false; foreach (var p in c.Old.Tagged[Tags.Player]) { if (p != this && p is Player) { found = true; break; } } if (!found) { foreach (var door in c.Old.Doors) { var x = (int)Math.Floor(door.CenterX / 16); var y = (int)Math.Floor(door.Bottom / 16); var t = level.Get(x, y); if (level.Get(x, y).Matches(TileFlags.Passable)) { var index = level.ToIndex(x, y); level.Set(index, level.Biome is IceBiome ? Tile.WallB : Tile.WallA); level.UpdateTile(x, y); level.ReCreateBodyChunk(x, y); level.LoadPassable(); Camera.Instance.Shake(10); } } c.Old.ApplyToEachTile((x, y) => { if (Run.Level.Get(x, y).IsWall()) { return; } Timer.Add(() => { var part = new TileParticle(); part.Top = Run.Level.Tileset.WallTopADecor; part.TopTarget = Run.Level.Tileset.WallTopADecor; part.Side = Run.Level.Tileset.FloorSidesD[0]; part.Sides = Run.Level.Tileset.WallSidesA[2]; part.Tile = Tile.WallA; part.X = x * 16; part.Y = y * 16; part.Target.X = x * 16; part.Target.Y = y * 16; part.TargetZ = -8f; Area.Add(part); }, Rnd.Float(0.5f)); }); foreach (var d in c.Old.Doors) { d.Done = true; } c.Old.Done = true; } } } // Darken the lighting in evil rooms if (c.New.Type == RoomType.OldMan || c.New.Type == RoomType.Spiked) { Tween.To(0.7f, Lights.RadiusMod, x => Lights.RadiusMod = x, 0.3f); } else if (c.Old != null && (c.Old.Type == RoomType.OldMan || c.Old.Type == RoomType.Spiked)) { Tween.To(1f, Lights.RadiusMod, x => Lights.RadiusMod = x, 0.3f); } } else if (e is HealthModifiedEvent hm) { if (hm.Amount < 0) { if ((hm.From is Mob m && m.HasPrefix) || (hm.From is creature.bk.BurningKnight k && k.InFight) || hm.From is BkOrbital) { hm.Amount = Math.Min(hm.Amount, -2); } else if (hm.Type != DamageType.Custom && hm.Type != DamageType.Explosive) { hm.Amount = Math.Max(-1, hm.Amount); } } }
public void AddBox(double boxId) { Area.Add(boxId); }
public override void Update(float dt) { base.Update(dt); if (prefix != null) { prefix.Update(dt); lastParticle -= dt; if (lastParticle <= 0) { lastParticle = Rnd.Float(0.05f, 0.3f); for (var i = 0; i < Rnd.Int(0, 3); i++) { var part = new ParticleEntity(Particles.Scourge()); part.Position = Center + Rnd.Vector(-4, 4); part.Particle.Scale = Rnd.Float(0.5f, 1.2f); Area.Add(part); part.Depth = 1; } } } if (Target == null) { FindTarget(); } else if (Target.Done || Target.GetComponent <RoomComponent>().Room != GetComponent <RoomComponent>().Room || (Target is Creature c && c.IsFriendly() == IsFriendly()) || (Target.TryGetComponent <BuffsComponent>(out var b) && b.Has <InvisibleBuff>())) { var old = Target; HandleEvent(new MobTargetChange { Mob = this, New = null, Old = old }); FindTarget(); } if (TouchDamage == 0) { return; } var raging = GetComponent <BuffsComponent>().Has <RageBuff>(); for (var i = CollidingToHurt.Count - 1; i >= 0; i--) { var entity = CollidingToHurt[i]; if (entity.Done) { CollidingToHurt.RemoveAt(i); continue; } if ((!(entity is Creature c) || c.IsFriendly() != IsFriendly())) { if (entity.GetComponent <HealthComponent>().ModifyHealth(-TouchDamage * (raging ? 2 : 1), this, DamageType.Contact)) { OnHit(entity); } } } if (GetComponent <RoomComponent>().Room == null) { Kill(null); } }
private void InitializeChart() { this.tChart1.Aspect.Elevation = 350; this.tChart1.Aspect.ElevationFloat = 350D; this.tChart1.Aspect.Perspective = 55; this.tChart1.Aspect.View3D = false; this.tChart1.Axes.Bottom.Grid.Color = Color.FromArgb((byte)(255), (byte)(221), (byte)(221), (byte)(221)); this.tChart1.Axes.Bottom.Grid.Visible = false; this.tChart1.Axes.Bottom.MinorTicks.Visible = false; this.tChart1.Axes.Bottom.Ticks.Color = Color.FromArgb((byte)(255), (byte)(128), (byte)(128), (byte)(128)); this.tChart1.Axes.Bottom.Title.Caption = "Days"; this.tChart1.Axes.Bottom.Title.Font.Brush.Color = Colors.Gray; this.tChart1.Axes.Bottom.Title.Font.Name = "Segoe UI"; this.tChart1.Axes.Bottom.Title.Lines = new string[] { "Days" }; this.tChart1.Axes.Depth.Title.Font.Name = "Roboto Th"; this.tChart1.Axes.DepthTop.Title.Font.Name = "Roboto Th"; this.tChart1.Axes.Left.Grid.Color = Color.FromArgb((byte)(255), (byte)(221), (byte)(221), (byte)(221)); this.tChart1.Axes.Left.MinorTicks.Visible = false; this.tChart1.Axes.Left.Ticks.Color = Color.FromArgb((byte)(255), (byte)(128), (byte)(128), (byte)(128)); this.tChart1.Axes.Left.Ticks.Length = 7; this.tChart1.Axes.Left.Title.Font.Name = "Roboto Th"; this.tChart1.Axes.Right.Grid.Visible = false; this.tChart1.Axes.Right.MinorTicks.Visible = false; this.tChart1.Axes.Right.Ticks.Visible = false; this.tChart1.Axes.Right.Title.Font.Name = "Roboto Th"; this.tChart1.Axes.Top.Title.Font.Name = "Roboto Th"; this.tChart1.Footer.Font.Brush.Color = Colors.Blue; this.tChart1.Header.Alignment = TextAlignment.Left; this.tChart1.Header.Font.Bold = true; this.tChart1.Header.Font.Brush.Color = Colors.Black; this.tChart1.Header.Font.Italic = true; this.tChart1.Header.Font.Name = "Roboto Lt"; this.tChart1.Header.Font.Shadow.Brush.Color = Colors.Gray; this.tChart1.Header.Font.Shadow.SmoothBlur = 2; this.tChart1.Header.Font.Size = 14; this.tChart1.Header.Lines = new string[] { "Vegetation growth" }; this.tChart1.Legend.Alignment = LegendAlignments.Top; this.tChart1.Legend.Font.Name = "Roboto Th"; this.tChart1.Legend.Font.Size = 14; this.tChart1.Legend.Shadow.Visible = false; this.tChart1.Panel.Bevel.Outer = BevelStyles.None; this.tChart1.Panel.Bevel.Width = 2; this.tChart1.Panel.BevelWidth = 2; this.tChart1.Panel.Brush.Color = Colors.White; this.tChart1.Panel.Brush.Gradient.EndColor = Colors.White; this.tChart1.Panel.Brush.Gradient.StartColor = Colors.White; this.tChart1.Panel.Brush.Gradient.UseMiddle = false; this.tChart1.Walls.Back.Brush.Gradient.EndColor = Colors.White; this.tChart1.Walls.Back.Pen.Visible = false; this.tChart1.Walls.Back.Visible = false; this.tChart1.Walls.Bottom.Brush.Gradient.EndColor = Colors.Silver; this.tChart1.Walls.Bottom.Brush.Gradient.StartColor = Colors.Gray; this.tChart1.Walls.Bottom.Brush.Gradient.Visible = true; this.tChart1.Walls.Bottom.Pen.Color = Colors.Gray; this.tChart1.Walls.Bottom.Transparent = true; this.tChart1.Walls.Left.Brush.Color = Colors.White; this.tChart1.Walls.Left.Brush.Gradient.EndColor = Colors.Silver; this.tChart1.Walls.Left.Brush.Gradient.StartColor = Colors.Gray; this.tChart1.Walls.Left.Brush.Gradient.Visible = true; this.tChart1.Walls.Left.Pen.Color = Colors.Gray; this.tChart1.Walls.Left.Transparent = true; this.tChart1.Walls.Right.Transparent = true; this.tChart1.Series.Add(area1); //this.area1.AreaBrush.Color = Color.FromArgb((byte)(92), (byte)(255), (byte)(153), (byte)(102)); //this.area1.Gradient.StartColor = Color.FromArgb((byte)(255), (byte)(68), (byte)(102), (byte)(163)); //this.area1.AreaLines.Color = Color.FromArgb((byte)(255), (byte)(41), (byte)(61), (byte)(98)); //this.area1.AreaLines.Transparency = 64; this.area1.AreaLines.Visible = false; //this.area1.Brush.Color = Color.FromArgb((byte)(92), (byte)(255), (byte)(153), (byte)(102)); //this.area1.TopGradient.Transparency = 64; this.area1.Color = Color.FromArgb((byte)(175), (byte)(255), (byte)(153), (byte)(102)); this.area1.ColorEach = false; //this.area1.LinePen.Color = Color.FromArgb((byte)(255), (byte)(0), (byte)(128), (byte)(255)); //this.area1.LinePen.Transparency = 64; this.area1.LinePen.Visible = false; this.area1.Marks.Arrow.Transparency = 64; this.area1.Marks.Arrow.Visible = false; this.area1.Marks.ArrowLength = 0; this.area1.Marks.Brush.Color = Color.FromArgb((byte)(92), (byte)(255), (byte)(255), (byte)(255)); this.area1.Marks.Brush.Gradient.Transparency = 64; this.area1.Marks.Clip = true; this.area1.Marks.Font.Brush.Color = Color.FromArgb((byte)(92), (byte)(0), (byte)(0), (byte)(0)); this.area1.Marks.Font.Brush.Gradient.Transparency = 64; this.area1.Marks.Font.Name = "Roboto Th"; this.area1.Marks.Pen.Transparency = 64; this.area1.Marks.Shadow.Brush.Color = Color.FromArgb((byte)(92), (byte)(255), (byte)(255), (byte)(255)); this.area1.Marks.Shadow.Brush.Gradient.Transparency = 64; this.area1.Marks.Transparent = true; this.area1.OriginalCursor = null; //this.area1.Pointer.Brush.Color = Color.FromArgb((byte)(92), (byte)(255), (byte)(255), (byte)(255)); //this.area1.Pointer.Brush.Gradient.Transparency = 64; //this.area1.Pointer.Pen.Transparency = 64; //this.area1.Pointer.SizeDouble = 0D; //this.area1.Pointer.SizeUnits = PointerSizeUnits.Pixels; this.area1.Title = "With nutrient"; //this.area1.Transparency = 34; this.area1.XValues.Order = ValueListOrder.Ascending; this.tChart1.Series.Add(area2); //this.area2.AreaBrush.Color = Color.FromArgb((byte)(76), (byte)(128), (byte)(255), (byte)(255)); //this.area2.Gradient.StartColor = Color.FromArgb((byte)(255), (byte)(68), (byte)(102), (byte)(163)); //this.area2.AreaLines.Color = Color.FromArgb((byte)(255), (byte)(41), (byte)(61), (byte)(98)); //this.area2.AreaLines.Transparency = 70; this.area2.AreaLines.Visible = false; //this.area2.Brush.Color = Color.FromArgb((byte)(76), (byte)(128), (byte)(255), (byte)(255)); //this.area2.TopGradient.Transparency = 70; this.area2.Color = Color.FromArgb((byte)(175), (byte)(128), (byte)(255), (byte)(255)); this.area2.ColorEach = false; //this.area2.LinePen.Color = Colors.Purple; //this.area2.LinePen.Transparency = 70; this.area2.LinePen.Visible = false; this.area2.Marks.Arrow.Transparency = 70; this.area2.Marks.Arrow.Visible = false; this.area2.Marks.ArrowLength = 0; this.area2.Marks.Brush.Color = Color.FromArgb((byte)(76), (byte)(255), (byte)(255), (byte)(255)); this.area2.Marks.Brush.Gradient.Transparency = 70; this.area2.Marks.Font.Brush.Color = Color.FromArgb((byte)(76), (byte)(0), (byte)(0), (byte)(0)); this.area2.Marks.Font.Brush.Gradient.Transparency = 70; this.area2.Marks.Font.Name = "Roboto Th"; this.area2.Marks.Pen.Transparency = 70; this.area2.Marks.Shadow.Brush.Color = Color.FromArgb((byte)(76), (byte)(128), (byte)(128), (byte)(128)); this.area2.Marks.Shadow.Brush.Gradient.Transparency = 70; this.area2.Marks.Transparent = true; this.area2.OriginalCursor = null; this.area2.Title = "No added nutrient"; this.area2.XValues.Order = ValueListOrder.Ascending; this.tChart1.Series.Add(area3); this.area3.AreaLines.Visible = false; this.area3.Color = Color.FromArgb(((int)(((byte)(175)))), ((int)(((byte)(255)))), ((int)(((byte)(153)))), ((int)(((byte)(102))))); this.area3.ColorEach = false; this.area3.LinePen.Visible = false; this.area3.Marks.Arrow.Transparency = 47; this.area3.Marks.Arrow.Visible = false; this.area3.Marks.ArrowLength = 0; this.area3.Marks.Brush.Color = Color.FromArgb(((int)(((byte)(135)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(224))))); this.area3.Marks.Brush.Gradient.Transparency = 47; this.area3.Marks.Font.Brush.Color = Color.FromArgb(((int)(((byte)(135)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); this.area3.Marks.Font.Brush.Gradient.Transparency = 47; this.area3.Marks.Font.Name = "Roboto Th"; this.area3.Marks.Pen.Transparency = 47; this.area3.Marks.Shadow.Brush.Color = Color.FromArgb(((int)(((byte)(135)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.area3.Marks.Shadow.Brush.Gradient.Transparency = 47; this.area3.Marks.Transparent = true; this.area3.OriginalCursor = null; this.area3.Title = "Series2"; this.area3.Visible = false; this.area3.XValues.Order = ValueListOrder.Ascending; Random rnd1 = new Random(); Random rnd2 = new Random(); Random rnd3 = new Random(); for (int t = 0; t < 15; t++) { area1.Add(rnd1.Next(100)); area2.Add(rnd1.Next(60)); area3.Add(rnd1.Next(30)); } area1.Smoothed = true; area2.Smoothed = true; area3.Smoothed = true; tChart1.Axes.Bottom.Increment = 3; tChart1.Panel.Gradient.Visible = false; }
protected override void CreateGore(DiedEvent d) { base.CreateGore(d); if (saved) { return; } var heinur = new Heinur(); Area.Add(heinur); heinur.Center = Center - new Vector2(0, 32); var g = heinur.GetComponent <BkGraphicsComponent>(); g.Scale = Vector2.Zero; Timer.Add(() => { Tween.To(1, 0, x => g.Scale.X = x, 3f); Tween.To(1, 0, x => g.Scale.Y = x, 3f); }, 1f); var dm = new DarkMage(); Area.Add(dm); dm.Center = Center + new Vector2(0, 32); dm.GetComponent <AnimationComponent>().Animate(); AnimationUtil.Poof(dm.Center); var dmDialog = dm.GetComponent <DialogComponent>(); var heinurDialog = heinur.GetComponent <DialogComponent>(); foreach (var p in Area.Tagged[Tags.Player]) { p.RemoveComponent <PlayerInputComponent>(); } Camera.Instance.Targets.Clear(); Camera.Instance.Follow(dm, 1f); Camera.Instance.Follow(heinur, 1f); dmDialog.Start("dm_5", null, () => Timer.Add(() => { dmDialog.Close(); Camera.Instance.Targets.Clear(); Camera.Instance.Follow(dm, 1f); Camera.Instance.Follow(heinur, 1f); heinurDialog.Start("heinur_0", null, () => Timer.Add(() => { heinurDialog.Close(); heinur.Attract = true; Camera.Instance.Targets.Clear(); Camera.Instance.Follow(dm, 1f); Camera.Instance.Follow(heinur, 1f); heinur.Callback = () => { Camera.Instance.Targets.Clear(); Camera.Instance.Follow(dm, 1f); foreach (var p in Area.Tagged[Tags.Player]) { p.GetComponent <PlayerGraphicsComponent>().Hidden = true; } var bk = new bk.BurningKnight() { Passive = true }; Area.Add(bk); bk.Center = Center; bk.GetComponent <BkGraphicsComponent>().Animate(); Camera.Instance.Follow(bk, 1f); dmDialog.Start("dm_6", null, () => Timer.Add(() => { dmDialog.Close(); Camera.Instance.Targets.Clear(); Camera.Instance.Follow(bk, 1f); var nbkDialog = bk.GetComponent <DialogComponent>(); nbkDialog.Start("nbk_0", null, () => Timer.Add(() => { nbkDialog.Close(); Camera.Instance.Targets.Clear(); Camera.Instance.Follow(bk, 1f); Run.Win(); }, 2f)); }, 2f)); }; }, 1f)); }, 1f)); }
private void ChangeupRoom() { foreach (var p in Area.Tagged[Tags.Player]) { Timer.Add(() => { AnimationUtil.TeleportAway(p, () => { }); }, 0.5f); } Camera.Instance.Shake(6); AnimationUtil.TeleportAway(this, () => { GetComponent <RoomComponent>().Room.Hide(); Timer.Add(() => { foreach (var r in Area.Tagged[Tags.Room]) { var room = (Room)r; if (room.Type != RoomType.Boss) { room.Done = true; } } foreach (var d in Area.Tagged[Tags.Door]) { d.Done = true; } foreach (var e in Area.Entities.Entities) { if (e is WallTorch || e is Torch || e is Prop || e is Entrance || (e is Creature && !(e is Player || e is Boss)) || e is Turret || e is SpawnPoint || e is Projectile || e is MovingPlatform || e is RoomControllable || e is Gore) { e.Done = true; } } var rm = GetComponent <RoomComponent>().Room; var level = Run.Level; Type type; if (GetComponent <HealthComponent>().Health <= 0) { type = typeof(DmEndRoom); } else { var arr = DmRoomRegistry.Rooms.ToList(); foreach (var t in did) { arr.Remove(t); } type = arr[Rnd.Int(arr.Count)]; did.Add(type); } for (var i = rm.Controllers.Count - 1; i >= 0; i--) { if (!(rm.Controllers[i] is BossRoomController)) { rm.Controllers.RemoveAt(i); } } var rmdef = (DmRoom)Activator.CreateInstance(type); rm.Parent = rmdef; rm.MapW = Math.Min(Rnd.Int(rmdef.GetMinWidth(), rmdef.GetMaxWidth()), level.Width - 2); rm.MapH = Math.Min(Rnd.Int(rmdef.GetMinHeight(), rmdef.GetMaxHeight()), level.Height - 2); rm.MapX = (int)Math.Ceiling((level.Width - rm.MapW) / 2f); rm.MapY = (int)Math.Ceiling((level.Height - rm.MapH) / 2f); rm.UpdateSize(); rmdef.Set(rm.MapX, rm.MapY, rm.MapX + rm.MapW - 1, rm.MapY + rm.MapH - 1); Painter.Fill(level, new Rect(0, 0, level.Width, level.Height), Tile.WallA); Painter.Fill(level, rmdef, 1, Tile.FloorA); rmdef.PaintFloor(level); rmdef.Paint(level, rm); rmdef.PlaceMage(rm, this); foreach (var p in Area.Tagged[Tags.Player]) { var s = new SpawnPoint(); Area.Add(s); rmdef.PlacePlayer(rm, (Player)p); s.Center = p.Center; AnimationUtil.TeleportIn(p); } Painter.ReplaceTiles(level, rmdef); Painter.UpdateTransition(level); level.TileUp(); level.RecreateBody(); Engine.Instance.Flash = 2f; for (var i = 0; i < level.Size; i++) { level.Light[i] = 1f; } AnimationUtil.TeleportIn(this); }, 1f); }); }
public override void Update(float dt) { base.Update(dt); if (!did && Triggered) { Camera.Instance.Shake(0.5f); t += dt; if (t >= 1f) { did = true; var r = (int)Math.Ceiling(Math.Sqrt((RoomWidth + 1) * (RoomWidth + 1) + (RoomHeight + 1) * (RoomHeight + 1))); Camera.Instance.Targets.Clear(); Camera.Instance.Follow(this, 3f); Tween.To(0.5f, Camera.Instance.Zoom, x => Camera.Instance.Zoom = x, 0.3f); for (var j = 1; j < r; j++) { var level = Run.Level; var j1 = j; Timer.Add(() => { if (Interrupted) { level.CreateBody(); return; } for (var y = 0; y < RoomHeight; y++) { for (var x = 0; x < RoomWidth; x++) { var dx = x - RoomWidth / 2f; var dy = y - RoomHeight / 2f; if (Math.Sqrt(dx * dx + dy * dy) > j1) { continue; } var i = x + y * RoomWidth; if (Tiles[i] == 255) { continue; } var li = level.ToIndex(RoomX + x, RoomY + y); if (level.Get(li).IsWall()) { level.Variants[li] = 0; } // tmp Area.Add(new TileFx { X = (RoomX + x) * 16, Y = (RoomY + y) * 16 - 8 }); level.ReCreateBodyChunk(RoomX + x, RoomY + y); level.Tiles[li] = Tiles[i]; level.Liquid[li] = Liquid[i]; Tiles[i] = 255; // Mark as already checked; } } for (var y = -1; y < RoomHeight + 1; y++) { for (var x = -1; x < RoomWidth + 1; x++) { LevelTiler.TileUp(level, level.ToIndex(RoomX + x, RoomY + y)); } } Camera.Instance.Shake(2); }, j * 0.05f); } Timer.Add(() => { if (Interrupted) { return; } Tween.To(1f, Camera.Instance.Zoom, x => Camera.Instance.Zoom = x, 0.3f); Timer.Add(() => { if (Interrupted) { return; } Done = true; ReadyToSpawn = true; }, 1f); }, r * 0.05f + 1f); } } }
public override void Update(float dt) { base.Update(dt); if (!On) { ResetTimer(); return; } else { var room = GetComponent <RoomComponent>().Room; if (room.Tagged[Tags.Player].Count == 0 || room.Tagged[Tags.MustBeKilled].Count == 0) { ResetTimer(); return; } } timer += dt; if (flaming) { if (timer <= 0.3f) { lastParticle -= dt; if (lastParticle <= 0) { lastParticle = 0.1f; Area.Add(new FireParticle { Position = new Vector2(CenterX, CenterY), XChange = 0.1f, Scale = 0.3f, Vy = 8, Mod = 2 }); } } else if (timer >= 1.5f) { lastParticle -= dt; Hurt(); if (lastParticle <= 0) { lastParticle = 0.15f; Area.Add(new FireParticle { Position = new Vector2(CenterX, CenterY), XChange = 0.1f, Scale = 0.3f, Vy = 8, Mod = 4 }); } if (timer >= 5f) { timer = 0; flaming = false; } } } else { if (timer >= 5f) { timer = 0; flaming = true; lastParticle = 0; } } }
public VegetationGrowth() { this.Title = "Vegetation Growth"; tChart1 = new ChartView(); tChart1.WidthRequest = 400; tChart1.HeightRequest = 300; area1 = new Area(); area2 = new Area(); area3 = new Area(); this.tChart1.Chart.Aspect.Elevation = 350; this.tChart1.Chart.Aspect.ElevationFloat = 350D; this.tChart1.Chart.Aspect.Perspective = 55; this.tChart1.Chart.Aspect.View3D = false; this.tChart1.Chart.Aspect.ZoomText = true; this.tChart1.Chart.Panning.Active = true; this.tChart1.Chart.Zoom.Active = true; this.tChart1.Chart.Axes.Bottom.Grid.Color = Color.FromRgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221))))); this.tChart1.Chart.Axes.Bottom.Grid.Visible = false; this.tChart1.Chart.Axes.Bottom.MinorTicks.Visible = false; this.tChart1.Chart.Axes.Bottom.Ticks.Color = Color.FromRgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.tChart1.Chart.Axes.Bottom.Title.Caption = "Days"; this.tChart1.Chart.Axes.Bottom.Title.Font.Brush.Color = Color.Gray; this.tChart1.Chart.Axes.Bottom.Title.Font.Name = "Segoe UI"; this.tChart1.Chart.Axes.Bottom.Title.Lines = new string[] { "Days" }; this.tChart1.Chart.Axes.Depth.Title.Font.Name = "Segoe UI"; this.tChart1.Chart.Axes.DepthTop.Title.Font.Name = "Segoe UI"; this.tChart1.Chart.Axes.Left.Grid.Color = Color.FromRgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221))))); this.tChart1.Chart.Axes.Left.MinorTicks.Visible = false; this.tChart1.Chart.Axes.Left.Ticks.Color = Color.FromRgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); this.tChart1.Chart.Axes.Left.Ticks.Length = 7; this.tChart1.Chart.Axes.Left.Title.Font.Name = "Segoe UI"; this.tChart1.Chart.Axes.Right.Grid.Visible = false; this.tChart1.Chart.Axes.Right.MinorTicks.Visible = false; this.tChart1.Chart.Axes.Right.Ticks.Visible = false; this.tChart1.Chart.Axes.Right.Title.Font.Name = "Segoe UI"; this.tChart1.Chart.Axes.Top.Title.Font.Name = "Segoe UI"; this.tChart1.Chart.Header.Alignment = TextAlignment.Center; this.tChart1.Chart.Header.Font.Bold = true; this.tChart1.Chart.Header.Font.Brush.Color = Color.Black; this.tChart1.Chart.Header.Font.Italic = true; this.tChart1.Chart.Header.Font.Name = "Segoe UI"; this.tChart1.Chart.Header.Font.Shadow.Brush.Color = Color.Gray; this.tChart1.Chart.Header.Font.Shadow.SmoothBlur = 2; this.tChart1.Chart.Header.Font.Size = 14; this.tChart1.Chart.Header.Lines = new string[] { "Vegetation growth" }; this.tChart1.Chart.Legend.Alignment = Steema.TeeChart.LegendAlignments.Top; this.tChart1.Chart.Legend.Font.Name = "Segoe UI"; this.tChart1.Chart.Legend.Font.Size = 14; this.tChart1.Chart.Legend.Pen.Visible = false; this.tChart1.Chart.Legend.Shadow.Visible = false; this.tChart1.Chart.Panel.Bevel.Outer = Steema.TeeChart.Drawing.BevelStyles.None; this.tChart1.Chart.Panel.Bevel.Width = 2; this.tChart1.Chart.Panel.BevelWidth = 2; this.tChart1.Chart.Panel.Brush.Color = Color.White; this.tChart1.Chart.Panel.Brush.Gradient.Visible = false; this.tChart1.Chart.Series.Add(this.area1); this.tChart1.Chart.Series.Add(this.area2); this.tChart1.Chart.Series.Add(this.area3); this.tChart1.Chart.Walls.Back.Brush.Gradient.EndColor = Color.White; this.tChart1.Chart.Walls.Back.Pen.Visible = false; this.tChart1.Chart.Walls.Back.Visible = false; this.tChart1.Chart.Walls.Bottom.Brush.Gradient.Visible = false; this.tChart1.Chart.Walls.Bottom.Pen.Color = Color.Gray; this.tChart1.Chart.Walls.Bottom.Transparent = true; this.tChart1.Chart.Walls.Left.Brush.Color = Color.White; this.tChart1.Chart.Walls.Left.Brush.Gradient.Visible = false; this.tChart1.Chart.Walls.Left.Pen.Color = Color.Gray; this.tChart1.Chart.Walls.Left.Transparent = true; this.tChart1.Chart.Walls.Right.Transparent = true; // area1 this.area1.AreaBrush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(153)))), ((int)(((byte)(102)))), ((int)(((byte)(92))))); this.area1.Gradient.StartColor = Color.FromRgb(((int)(((byte)(68)))), ((int)(((byte)(102)))), ((int)(((byte)(163))))); this.area1.AreaLines.Color = Color.FromRgb(((int)(((byte)(41)))), ((int)(((byte)(61)))), ((int)(((byte)(98))))); this.area1.AreaLines.Transparency = 64; this.area1.AreaLines.Visible = false; this.area1.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(153)))), ((int)(((byte)(102)))), ((int)(((byte)(92))))); this.area1.TopGradient.Transparency = 64; this.area1.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(153)))), ((int)(((byte)(102)))), ((int)(((byte)(92))))); this.area1.ColorEach = false; this.area1.LinePen.Color = Color.FromRgb(((int)(((byte)(0)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); this.area1.LinePen.Transparency = 64; this.area1.LinePen.Visible = false; this.area1.Marks.Arrow.Transparency = 64; this.area1.Marks.Arrow.Visible = false; this.area1.Marks.ArrowLength = 0; this.area1.Marks.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(92))))); this.area1.Marks.Brush.Gradient.Transparency = 64; this.area1.Marks.Clip = true; this.area1.Marks.Font.Brush.Color = Color.FromRgba(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(92))))); this.area1.Marks.Font.Brush.Gradient.Transparency = 64; this.area1.Marks.Font.Name = "Segoe UI"; this.area1.Marks.Pen.Transparency = 64; this.area1.Marks.Shadow.Brush.Color = Color.FromRgba(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(92))))); this.area1.Marks.Shadow.Brush.Gradient.Transparency = 64; this.area1.Marks.Transparent = true; this.area1.Pointer.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(92))))); this.area1.Pointer.Brush.Gradient.Transparency = 64; this.area1.Pointer.Pen.Transparency = 64; this.area1.Pointer.SizeDouble = 0D; this.area1.Pointer.SizeUnits = Steema.TeeChart.Styles.PointerSizeUnits.Pixels; this.area1.Title = "With nutrient"; this.area1.Transparency = 64; this.area1.XValues.Order = Steema.TeeChart.Styles.ValueListOrder.Ascending; // area2 this.area2.AreaBrush.Color = Color.FromRgba(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(76))))); this.area2.Gradient.StartColor = Color.FromRgb(((int)(((byte)(68)))), ((int)(((byte)(102)))), ((int)(((byte)(163))))); this.area2.AreaLines.Color = Color.FromRgb(((int)(((byte)(41)))), ((int)(((byte)(61)))), ((int)(((byte)(98))))); this.area2.AreaLines.Transparency = 70; this.area2.AreaLines.Visible = false; this.area2.Brush.Color = Color.FromRgba(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(76))))); this.area2.TopGradient.Transparency = 70; this.area2.Color = Color.FromRgba(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(76))))); this.area2.ColorEach = false; this.area2.LinePen.Color = Color.Purple; this.area2.LinePen.Transparency = 70; this.area2.LinePen.Visible = false; this.area2.Marks.Arrow.Transparency = 70; this.area2.Marks.Arrow.Visible = false; this.area2.Marks.ArrowLength = 0; this.area2.Marks.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(76))))); this.area2.Marks.Brush.Gradient.Transparency = 70; this.area2.Marks.Font.Brush.Color = Color.FromRgba(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(76))))); this.area2.Marks.Font.Brush.Gradient.Transparency = 70; this.area2.Marks.Font.Name = "Segoe UI"; this.area2.Marks.Pen.Transparency = 70; this.area2.Marks.Shadow.Brush.Color = Color.FromRgba(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(76))))); this.area2.Marks.Shadow.Brush.Gradient.Transparency = 70; this.area2.Marks.Transparent = true; this.area2.Pointer.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(76))))); this.area2.Pointer.Brush.Gradient.Transparency = 70; this.area2.Pointer.Pen.Transparency = 70; this.area2.Pointer.SizeDouble = 0D; this.area2.Pointer.SizeUnits = Steema.TeeChart.Styles.PointerSizeUnits.Pixels; this.area2.Title = "No added nutrient"; this.area2.Transparency = 70; this.area2.XValues.Order = Steema.TeeChart.Styles.ValueListOrder.Ascending; // area3 this.area3.AreaBrush.Color = Color.FromRgb(((int)(((byte)(68)))), ((int)(((byte)(102)))), ((int)(((byte)(163))))); this.area3.Gradient.StartColor = Color.FromRgb(((int)(((byte)(68)))), ((int)(((byte)(102)))), ((int)(((byte)(163))))); this.area3.AreaLines.Color = Color.FromRgb(((int)(((byte)(41)))), ((int)(((byte)(61)))), ((int)(((byte)(98))))); this.area3.AreaLines.Transparency = 47; this.area3.AreaLines.Visible = false; this.area3.Brush.Color = Color.FromRgba(((int)(((byte)(135)))), ((int)(((byte)(255)))), ((int)(((byte)(153)))), ((int)(((byte)(102))))); this.area3.TopGradient.Transparency = 47; this.area3.Color = Color.FromRgba(((int)(((byte)(135)))), ((int)(((byte)(255)))), ((int)(((byte)(153)))), ((int)(((byte)(102))))); this.area3.ColorEach = false; this.area3.LinePen.Color = Color.FromRgb(((int)(((byte)(0)))), ((int)(((byte)(128)))), ((int)(((byte)(64))))); this.area3.LinePen.Transparency = 47; this.area3.LinePen.Visible = false; this.area3.Marks.Arrow.Transparency = 47; this.area3.Marks.Arrow.Visible = false; this.area3.Marks.ArrowLength = 0; this.area3.Marks.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(135))))); this.area3.Marks.Brush.Gradient.Transparency = 47; this.area3.Marks.Font.Brush.Color = Color.FromRgba(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(135))))); this.area3.Marks.Font.Brush.Gradient.Transparency = 47; this.area3.Marks.Font.Name = "Segoe UI"; this.area3.Marks.Pen.Transparency = 47; this.area3.Marks.Shadow.Brush.Color = Color.FromRgba(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(135))))); this.area3.Marks.Shadow.Brush.Gradient.Transparency = 47; this.area3.Marks.Transparent = true; this.area3.Pointer.Brush.Color = Color.FromRgba(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(135))))); this.area3.Pointer.Brush.Gradient.Transparency = 47; this.area3.Pointer.Pen.Transparency = 47; this.area3.Pointer.SizeDouble = 0D; this.area3.Pointer.SizeUnits = Steema.TeeChart.Styles.PointerSizeUnits.Pixels; this.area3.Title = "Series2"; this.area3.Transparency = 47; this.area3.Visible = false; this.area3.XValues.Order = Steema.TeeChart.Styles.ValueListOrder.Ascending; Random rnd1 = new Random(); Random rnd2 = new Random(); Random rnd3 = new Random(); for (int t = 0; t < 15; t++) { area1.Add(rnd1.Next(100)); area2.Add(rnd1.Next(60)); area3.Add(rnd1.Next(30)); } area1.Smoothed = true; area2.Smoothed = true; area3.Smoothed = true; tChart1.Chart.Axes.Bottom.Increment = 3; tChart1.Chart.Panel.Gradient.Visible = false; tChart1.Chart.Axes.Left.StartPosition = 0; Label l = new Label(); l.Text = "hello"; tChart1.InvalidateDisplay(); tChart1.Chart.Invalidate(); Content = new StackLayout { Children = { tChart1 }, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, }; }
public void MoveTo(Point position) { Path.Push(position); AllPositions.Add(position); CurrentPosition = position; }
// Constructor public StackAreaChartFeatures(ChartView BaseChart) { // Inicializar variables area1 = new Area(); area2 = new Area(); var = new Variables.Variables(); tool_dataPointSelect = new DataPointSelection(BaseChart); // Propiedades del "Chart" base BaseChart.Chart.Series.Add(area2); BaseChart.Chart.Series.Add(area1); BaseChart.Chart.Legend.Visible = true; BaseChart.Chart.Header.Text = "Mensual sells by two companies"; BaseChart.Chart.Axes.Bottom.LabelsOnAxis = true; // Propiedades de la "area1" area1.Title = "Company 1"; area1.SeriesColor = var.GetPaletteBasic[0]; area1.Chart.Zoom.Allow = false; area1.Chart.Panning.Allow = ScrollModes.None; area1.RecalcOptions = RecalcOptions.OnModify; area1.DefaultNullValue = 0; area1.ClickableLine = true; area1.AreaLines.Visible = false; area1.LinePen.Width = 5; area1.Pointer.Visible = true; area1.Pointer.Style = PointerStyles.Nothing; area1.Pointer.InflateMargins = false; area1.LinePen.Style = DashStyle.Solid; area1.LinePen.EndCap = PenLineCap.Flat; area1.LinePen.DashCap = PenLineCap.Flat; area1.LinePen.Color = var.GetPaletteBasic[0].AddLuminosity(-0.2); area1.ClickTolerance = 30; area1.ClickPointer += tool_dataPointSelect.PointValue_Click; area1.GetSeriesMark += tool_dataPointSelect.Serie_GetSeriesMark; for (int i = 0; i < var.GetValorArea1.Length; i++) { area1.Add(var.GetValorArea1[i], var.GetValorAreaX[i]); } area1.VertAxis = VerticalAxis.Both; area1.HorizAxis = HorizontalAxis.Both; area1.Marks.OnTop = true; // Propiedades de la "area2" area2.Title = "Company 2"; area2.SeriesColor = var.GetPaletteBasic[1]; area2.Chart.Zoom.Allow = false; area2.Chart.Panning.Allow = ScrollModes.None; area2.RecalcOptions = RecalcOptions.OnModify; area2.DefaultNullValue = 0; area2.ClickableLine = true; area2.ClickTolerance = 30; area2.Pointer.Visible = true; area2.Pointer.Style = PointerStyles.Nothing; area2.LinePen.Style = DashStyle.Solid; area2.LinePen.EndCap = PenLineCap.Flat; area2.LinePen.DashCap = PenLineCap.Flat; area2.LinePen.Color = var.GetPaletteBasic[0].AddLuminosity(-0.2); area2.LinePen.Color = var.GetPaletteBasic[1].AddLuminosity(-0.2); area2.AreaLines.Visible = false; area2.LinePen.Width = 5; area2.ClickPointer += tool_dataPointSelect.PointValue_Click; area2.GetSeriesMark += tool_dataPointSelect.Serie_GetSeriesMark; for (int i = 0; i < var.GetValorArea2.Length; i++) { area2.Add(var.GetValorArea2[i], var.GetValorAreaX[i]); } area2.VertAxis = VerticalAxis.Both; area2.HorizAxis = HorizontalAxis.Both; area2.Marks.OnTop = true; area1.Stacked = CustomStack.Stack; area2.Stacked = CustomStack.Stack; area1.StackGroup = 1; area2.StackGroup = 1; // Propieades de los ejes del "Chart" base BaseChart.Chart.Axes.Left.SetMinMax(BaseChart.Chart.Axes.Left.MinYValue, BaseChart.Chart.Axes.Left.MaxYValue + 20); BaseChart.Chart.Axes.Bottom.SetMinMax(BaseChart.Chart.Axes.Bottom.MinXValue, BaseChart.Chart.Axes.Bottom.MaxXValue); BaseChart.Chart.Axes.Left.Labels.ValueFormat = "0"; BaseChart.Chart.Axes.Bottom.Labels.ValueFormat = "0"; BaseChart.Chart.Axes.Bottom.Labels.TextAlign = Xamarin.Forms.TextAlignment.Start; BaseChart.Chart.Axes.Left.Visible = true; BaseChart.Chart.Axes.Left.Increment = 20; BaseChart.Chart.Axes.Left.Title.Visible = false; BaseChart.Chart.Axes.Left.Ticks = new Axis.TicksPen { Width = 2, Visible = true, Color = Color.FromArgb(200, 200, 200), EndCap = PenLineCap.Flat, Style = DashStyle.Solid, Length = 10 }; BaseChart.Chart.Axes.Left.LabelsOnAxis = true; BaseChart.Chart.Axes.Left.Labels.CustomSize = 10; BaseChart.Chart.Axes.Bottom.Title.Visible = false; BaseChart.Chart.Axes.Left.AxisPen.Visible = true; BaseChart.Chart.Axes.Left.Grid.Visible = false; BaseChart.Chart.Axes.Bottom.Grid.Visible = false; BaseChart.Chart.Legend.LegendStyle = LegendStyles.Series; BaseChart.Chart.Panel.MarginRight = 5; BaseChart.Chart.ClickSeries += null; BaseChart.Chart.Panel.MarginLeft = 4; // Themes Marks Themes.AplicarMarksTheme1(BaseChart); area1.Marks.Width = 82; area2.Marks.Width = 82; //area2.Marks. //area1.Marks.ZPosition = 1; }
public override bool HandleEvent(Event e) { if (e is BurningStatue.BrokenEvent) { Interrupted = true; Done = true; return(base.HandleEvent(e)); } if (Triggered) { return(base.HandleEvent(e)); } if (e is CollisionStartedEvent cse) { if (cse.Entity is Player p) { Timer.Add(() => { Triggered = true; }, 1f); var xx = (int)Math.Floor(CenterX / 16); var xy = (int)Math.Floor(CenterY / 16); Painter.Rect(Run.Level, xx - 3, xy - 3, 6, 6, Tile.Chasm); var torches = GetComponent <RoomComponent>().Room.Tagged[Tags.Torch]; foreach (var t in torches) { ((Torch)t).On = false; } Timer.Add(() => { if (Interrupted) { return; } foreach (var t in torches) { var tr = (Torch)t; tr.On = true; tr.XSpread = 0.1f; } }, 3f); HandleEvent(new TriggeredEvent { Trigger = this, Who = p }); for (var x = X - 16; x < X + Width + 16; x += 16) { for (var i = 0; i < Rnd.Int(3, 9); i++) { Area.Add(new FireParticle { Position = new Vector2(x + Rnd.Float(-2, 18), Y - 16 + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); Area.Add(new FireParticle { Position = new Vector2(x + Rnd.Float(-2, 18), Y + Height + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); Area.Add(new TileFx { Position = new Vector2(x, Y - 16) }); Area.Add(new TileFx { Position = new Vector2(x, Y + Height) }); } } for (var y = Y; y < Y + Height; y += 16) { for (var i = 0; i < Rnd.Int(3, 9); i++) { Area.Add(new FireParticle { Position = new Vector2(X + Rnd.Float(-2, 18) - 16, y + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); Area.Add(new FireParticle { Position = new Vector2(X + Width + Rnd.Float(-2, 18), y + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); Area.Add(new TileFx { Position = new Vector2(X - 16, y) }); Area.Add(new TileFx { Position = new Vector2(X + Width, y) }); } } } } return(base.HandleEvent(e)); }
public PercentStdFunctionsChart(ChartView BaseChart) { percentFunction = new Steema.TeeChart.Functions.PercentChange(); area = new Area(); thePercentLine = new Line(); var = new Variables.Variables(); for (int i = 0; i < var.GetValorStdPercent1.Length; i++) { area.Add(i, var.GetValorStdPercent1[i]); } BaseChart.Chart.Series.Add(area); BaseChart.Chart.Series.Add(thePercentLine); thePercentLine.Function = percentFunction; thePercentLine.DataSource = new object[] { area }; area.SeriesColor = var.GetPaletteBasic[0]; thePercentLine.SeriesColor = var.GetPaletteBasic[2]; area.Title = "Data"; area.Smoothed = true; thePercentLine.Title = "Percent Change"; thePercentLine.LinePen.Width = 6; thePercentLine.Pointer.Visible = false; thePercentLine.Marks.Visible = false; thePercentLine.VertAxis = VerticalAxis.Right; thePercentLine.LinePen.DashCap = PenLineCap.Round; thePercentLine.LinePen.EndCap = PenLineCap.Round; BaseChart.Chart.Axes.Left.SetMinMax(BaseChart.Chart.Axes.Left.MinYValue, BaseChart.Chart.Axes.Left.MaxYValue + 2); BaseChart.Chart.Axes.Bottom.SetMinMax(BaseChart.Chart.Axes.Bottom.MinXValue, BaseChart.Chart.Axes.Bottom.MaxXValue); BaseChart.Chart.Axes.Left.Increment = 3; BaseChart.Chart.Axes.Bottom.Labels.Visible = false; BaseChart.Chart.Axes.Left.Grid.Visible = false; BaseChart.Chart.Axes.Left.AxisPen.Visible = true; BaseChart.Chart.Header.Visible = false; Themes.AplicarMarksTheme1(BaseChart); BaseChart.Chart.Series[0].Marks.Font.Size = 14; BaseChart.Chart.Series[1].Marks.Font.Size = 14; area.Marks.Pen.Visible = false; area.Marks.TailStyle = MarksTail.None; area.Transparency = 50; area.AreaLines.Visible = false; area.LinePen.Color = area.Color.AddLuminosity(-0.2); area.LinePen.Width = 5; area.LinePen.Transparency = 50; area.AreaLines.Width = 0; area.AreaLines.Transparency = 100; area.AreaLinesPen.Width = 1; area.AreaLinesPen.Visible = true; BaseChart.Chart.Series[0].Marks.TextAlign = TextAlignment.Center; BaseChart.Chart.Series[0].Marks.AutoSize = true; BaseChart.Chart.Series[0].Marks.Color = Xamarin.Forms.Color.Transparent; //BaseChart.Chart.Series[1].Marks.ShapeBounds = new Xamarin.Forms.Rectangle { Width = 85, Height = 40 }; BaseChart.Chart.Series[1].Marks.TailStyle = MarksTail.None; BaseChart.Chart.Panel.MarginLeft = 3; }
public override void Init() { base.Init(); description = new UiString(Font.Small); ((InGameState)Engine.Instance.State).TopUi.Add(description); ((InGameState)Engine.Instance.State).TopUi.Add(new RenderTrigger(RenderTop, 10)); description.DisableRender = true; Area.Add(activeSlot); if (weaponSlot != null) { Area.Add(weaponSlot); } Area.Add(activeWeaponSlot); var anim = Animations.Get("ui"); ItemSlot = anim.GetSlice("item_slot"); UseSlot = new TextureRegion(); UseSlot.Set(ItemSlot); question = anim.GetSlice("question"); bomb = anim.GetSlice("bomb"); key = anim.GetSlice("key"); coin = anim.GetSlice("coin"); pointer = anim.GetSlice("pointer"); exitPointer = anim.GetSlice("exit_pointer"); Heart = anim.GetSlice("heart"); HalfHeart = anim.GetSlice("half_heart"); HeartBackground = anim.GetSlice("heart_bg"); changedHeartBackground = anim.GetSlice("heart_hurt_bg"); halfHeartBackground = anim.GetSlice("half_heart_bg"); changedHalfHeartBackground = anim.GetSlice("half_heart_hurt"); veganHeart = anim.GetSlice("vegan"); veganHalfHeart = anim.GetSlice("half_vegan"); veganHeartBackground = anim.GetSlice("vegan_bg"); veganchangedHeartBackground = anim.GetSlice("vegan_hurt_bg"); veganhalfHeartBackground = anim.GetSlice("half_vegan_bg"); veganchangedHalfHeartBackground = anim.GetSlice("half_vegan_hurt_bg"); Bomb = anim.GetSlice("bmb"); BombBg = anim.GetSlice("bmb_bg"); ChangedBombBg = anim.GetSlice("bmb_hurt"); Mana = anim.GetSlice("mana"); HalfMana = anim.GetSlice("half_mana"); ManaBackground = anim.GetSlice("mana_bg"); ChangedManaBackground = anim.GetSlice("mana_hurt_bg"); ShieldBackground = anim.GetSlice("shield_bg"); changedShieldBackground = anim.GetSlice("shield_hurt"); halfShieldBackground = anim.GetSlice("half_shield_bg"); changedHalfShieldBackground = anim.GetSlice("half_shield_hurt"); if (Player != null) { var component = Player.GetComponent <ConsumablesComponent>(); coins = component.Coins; keys = component.Keys; bombs = component.Bombs; var area = Player.Area; Subscribe <ConsumableAddedEvent>(area); Subscribe <ConsumableRemovedEvent>(area); Subscribe <ItemUsedEvent>(area); Subscribe <ItemAddedEvent>(area); Subscribe <ItemRemovedEvent>(area); Subscribe <RerollItemsOnPlayerUse.RerolledEvent>(area); more = new UiButton(); more.Font = Font.Small; more.Click = (b) => { var state = (InGameState)Engine.Instance.State; state.OnPauseCallback = state.GoToInventory; state.Paused = true; }; more.Enabled = false; Area.Add(more); more.Right = Display.UiWidth - 8; more.Bottom = Display.UiHeight - 5; var inventory = Player.GetComponent <InventoryComponent>(); foreach (var item in inventory.Items) { AddArtifact(item); } } }
public override bool HandleEvent(Event e) { if (e is ItemTakenEvent && !triggered) { Timer.Add(() => { triggered = true; }, 1f); Camera.Instance.Shake(12); var xx = (int)Math.Floor(CenterX / 16) * 16; var xy = (int)Math.Floor(CenterY / 16) * 16; var p = 32; var torches = GetComponent <RoomComponent>().Room.Tagged[Tags.Torch]; foreach (var t in torches) { ((Torch)t).On = false; } Timer.Add(() => { foreach (var t in torches) { var tr = (Torch)t; tr.On = true; tr.XSpread = 0.1f; } }, 3f); for (var x = xx - p; x < xx + Width + p; x += 16) { for (var i = 0; i < Rnd.Int(3, 9); i++) { Area.Add(new FireParticle { Position = new Vector2(x + Rnd.Float(-2, 18), xy - p + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); Area.Add(new FireParticle { Position = new Vector2(x + Rnd.Float(-2, 18), xy + Height + p - 16 + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); } } for (var y = xy; y < xy + Height; y += 16) { for (var i = 0; i < Rnd.Int(3, 9); i++) { Area.Add(new FireParticle { Position = new Vector2(xx + Rnd.Float(-2, 18) - p, y + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); Area.Add(new FireParticle { Position = new Vector2(xx + Width + p - 16 + Rnd.Float(-2, 18), y + Rnd.Float(-2, 18)), Delay = Rnd.Float(0.5f), XChange = 0.1f, Scale = 0.3f, Vy = 8, T = 0.5f, B = 0 }); } } } return(base.HandleEvent(e)); }
public override void Generate(Area area) { if (Run.Depth < -2) // Cutscenes { return; } var player = new LocalPlayer(); area.Add(player); var input = player.GetComponent <InputComponent>(); input.Index = 0; input.KeyboardEnabled = true; input.GamepadEnabled = Run.NumPlayers <= 1; for (var i = 1; i < Run.NumPlayers; i++) { input = area.Add(new LocalPlayer()).GetComponent <InputComponent>(); input.Index = (byte)i; input.KeyboardEnabled = false; input.GamepadEnabled = true; } Run.NumPlayers = 0; if (Run.Depth > 0) { if (Run.Type == RunType.Challenge) { var c = ChallengeRegistry.Get(Run.ChallengeId); try { c?.Apply(player); } catch (Exception e) { Log.Error(e); } } else if (Run.Type == RunType.Daily) { Rnd.Seed = Run.Seed; var count = Rnd.Int(1, 4); var pool = Items.GeneratePool(Items.GetPool(ItemPool.Treasure), i => i.Type == ItemType.Artifact); Log.Debug($"Pool count: {pool.Count}"); Player.DailyItems = new List <string>(); for (var i = 0; i < count; i++) { Player.DailyItems.Add(Items.GenerateAndRemove(pool)); } var si = Rnd.Chance(70) ? Items.Generate(ItemType.Active) : null; var sw = Items.Generate(ItemPool.Weapon); var sl = Items.Generate(ItemType.Lamp); for (var i = 0; i < Player.MaxPlayers; i++) { Player.StartingItems[i] = si; Player.StartingWeapons[i] = sw; Player.StartingLamps[i] = sl; } } area.Add(new RunStatistics()); area.Add(new entity.creature.bk.BurningKnight()); } else if (Run.Depth == -2) { area.Add(new RunStatistics()); } }