public override int Execute(Stack <string> context)
        {
            int size = 20;
            int posX = param2.Execute(context);
            int posY = param3.Execute(context);

            GameObject obj = null;

            switch (param1.Execute(context))
            {
            case 1:
                obj = new OutlineObstacle(new Tree(new Obstacle(posX, posY, size, size)));
                break;

            case 2:
                obj = new OutlineObstacle(new Wall(new Obstacle(posX, posY, size, size)));
                break;

            case 3:
                obj = new OutlineObstacle(new Boulder(new Obstacle(posX, posY, size, size)));
                break;

            case 4:
                obj = new OutlineObstacle(new Water(new Obstacle(posX, posY, size, size)));
                break;
            }

            if (obj != null)
            {
                obj.Decorate();
                GameObject.Instantiate(obj);
            }

            return(0);
        }
Beispiel #2
0
        public void TestDecoratorToMakeObstacle()
        {
            GameObject obstacle = new DamageObstacle(baseObject);

            obstacle.Decorate();

            Assert.IsTrue(obstacle.damage > 0);

            obstacle = new Tree(obstacle);
            obstacle.Decorate();

            Assert.IsTrue(obstacle.shape == Shape.Ellipse);
            Assert.IsTrue(obstacle.brush == Brushes.DarkGreen);

            obstacle = new Wall(obstacle);
            obstacle.Decorate();

            Assert.IsTrue(obstacle.shape == Shape.Rectangle);
            Assert.IsTrue(obstacle.brush == Brushes.DarkGray);

            obstacle = new Water(obstacle);
            obstacle.Decorate();

            Assert.IsTrue(obstacle.shape == Shape.Rectangle);
            Assert.IsTrue(obstacle.brush == Brushes.DarkSlateBlue);

            obstacle = new Boulder(obstacle);
            obstacle.Decorate();

            Assert.IsTrue(obstacle.shape == Shape.Ellipse);
            Assert.IsTrue(obstacle.brush == Brushes.Gray);

            obstacle = new OutlineObstacle(obstacle);
            obstacle.Decorate();

            Color color = (obstacle.brush as SolidBrush).Color;

            Assert.IsTrue(obstacle.outlinePen.Color.Equals(color.Tint(Color.FromArgb(64, Color.Black))));
        }
Beispiel #3
0
        public void Visit(Desert desert)
        {
            // Horizontal borders

            GameObject gameObject = new OutlineObstacle(new Water(new Obstacle(desert.levelWidth / 2, desert.blockHeight / 2, desert.levelWidth, desert.blockHeight)));

            gameObject.Decorate();
            desert.AddStuff(gameObject);

            gameObject = new OutlineObstacle(new Water(new Obstacle(desert.levelWidth / 2, desert.levelHeight - desert.blockHeight + desert.blockHeight / 2, desert.levelWidth, desert.blockHeight)));
            gameObject.Decorate();
            desert.AddStuff(gameObject);

            // Vertical borders

            gameObject = new OutlineObstacle(new Water(new Obstacle(desert.blockWidth / 2, desert.levelHeight / 2, desert.blockWidth, desert.levelHeight)));
            gameObject.Decorate();
            desert.AddStuff(gameObject);

            gameObject = new OutlineObstacle(new Water(new Obstacle(desert.levelWidth - desert.blockWidth + desert.blockWidth / 2, desert.levelHeight / 2, desert.blockWidth, desert.levelHeight)));
            gameObject.Decorate();
            desert.AddStuff(gameObject);
        }
Beispiel #4
0
        public void Visit(Forest forest)
        {
            // Horizontal borders

            GameObject gameObject = new OutlineObstacle(new Water(new Obstacle(forest.levelWidth / 2, forest.blockHeight / 2, forest.levelWidth, forest.blockHeight)));

            gameObject.Decorate();
            forest.AddStuff(gameObject);

            gameObject = new OutlineObstacle(new Water(new Obstacle(forest.levelWidth / 2, forest.levelHeight - forest.blockHeight + forest.blockHeight / 2, forest.levelWidth, forest.blockHeight)));
            gameObject.Decorate();
            forest.AddStuff(gameObject);

            // Vertical borders

            gameObject = new OutlineObstacle(new Water(new Obstacle(forest.blockWidth / 2, forest.levelHeight / 2, forest.blockWidth, forest.levelHeight)));
            gameObject.Decorate();
            forest.AddStuff(gameObject);

            gameObject = new OutlineObstacle(new Water(new Obstacle(forest.levelWidth - forest.blockWidth + forest.blockWidth / 2, forest.levelHeight / 2, forest.blockWidth, forest.levelHeight)));
            gameObject.Decorate();
            forest.AddStuff(gameObject);
        }
Beispiel #5
0
        public void Visit(Cave cave)
        {
            for (float x = cave.blockWidth / 2; x < cave.levelWidth; x += cave.blockWidth)
            {
                GameObject gameObject = new OutlineObstacle(new Boulder(new Obstacle(x, cave.blockHeight / 2, cave.blockWidth, cave.blockHeight)));
                gameObject.Decorate();
                cave.AddStuff(gameObject);

                gameObject = new OutlineObstacle(new Boulder(new Obstacle(x, cave.levelHeight - cave.blockHeight / 2, cave.blockWidth, cave.blockHeight)));
                gameObject.Decorate();
                cave.AddStuff(gameObject);
            }

            for (float y = cave.blockHeight + cave.blockHeight / 2; y < cave.levelHeight - cave.blockHeight; y += cave.blockHeight)
            {
                GameObject gameObject = new OutlineObstacle(new Boulder(new Obstacle(cave.blockWidth / 2, y, cave.blockWidth, cave.blockHeight)));
                gameObject.Decorate();
                cave.AddStuff(gameObject);

                gameObject = new OutlineObstacle(new Boulder(new Obstacle(cave.levelWidth - cave.blockWidth / 2, y, cave.blockWidth, cave.blockHeight)));
                gameObject.Decorate();
                cave.AddStuff(gameObject);
            }
        }