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); }
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)))); }
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); }
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); }
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); } }