public void SetCritter(Critter theCritter) { critter = theCritter; if (critter == null) { MakeProgressBarsVisible(false); labelNumber.Text = "000"; labelNumber.Visible = false; labelName.Text = ""; labelName.Visible = false; labelEscaped.Visible = false; labelDead.Visible = false; UpdateScore(0, 0); labelScore.Visible = false; iconSettings.Visible = false; UpdateHealthAndEnergy(0, 0); if (critterImage != null) { spriteEngine.RemoveSprite(critterImage); } checkBoxDebug.Visible = false; } else { labelNumber.Visible = true; labelName.Visible = true; labelScore.Visible = true; iconSettings.Visible = true; checkBoxDebug.Visible = true; checkBoxDebug.Checked = critter.Debugging; critterImage = new PolygonSprite(critter.Model) { Color = critter.Color, Position = new Point(spriteSurfaceCritter.Width / 2, spriteSurfaceCritter.Height / 2) }; spriteEngine.AddSprite(critterImage); labelNumber.Text = critter.Number.ToString(); labelName.Text = critter.NameAndAuthor; MakeProgressBarsVisible(true); spriteSurfaceCritter.Active = true; } }
private void DisplayWanderingCritter() { PolygonSprite wanderer = new PolygonSprite((new CritterBody()).GetBody()); wanderer.Color = Sprite.RandomColor(127); wanderer.Processors += sprite => { if (sprite.Mover is TargetMover spriteMover && (spriteMover.SpeedX != 0 || spriteMover.SpeedY != 0)) { spriteMover.TargetFacingAngle = (int)Sprite.GetAngle(spriteMover.SpeedX, spriteMover.SpeedY) + 90; } }; int margin = 20; int speed = 4; int moveCount = 0; Route route = new Route(wanderer); route.SpriteMoved += (sender, spriteEvent) => { if (moveCount-- == 0) { wanderer.IncrementFrame(); moveCount = 5 - Math.Min(5, speed); } }; route.Add(margin, margin, speed); route.Add(arena.Width - margin, margin, speed); route.Add(arena.Width - margin, arena.Height / 2 - margin, speed); route.Add(margin, arena.Height / 2 - margin, speed); route.Add(margin, arena.Height - margin, speed); route.Add(arena.Width - margin, arena.Height - margin, speed); route.Add(arena.Width - margin, arena.Height / 2 - margin, speed); route.Add(margin, arena.Height / 2 - margin, speed); route.Repeat = true; arena.AddSprite(wanderer); route.Start(); }