Exemple #1
0
        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();
        }