public static void executeMoveCommand(Monster monster, MonsterCommand command, Quinoa quinoa) { Region region = quinoa.getCurrentRegionHeader().getRegion(); Direction direction = (Direction) Enum.Parse(typeof(Direction), command.getParameter("direction")); monster.facing = direction; int newX = monster.x; int newY = monster.y; switch(direction) { case Direction.N: newY--; break; case Direction.NE: newY--; newX++; break; case Direction.NW: newY--; newX--; break; case Direction.S: newY++; break; case Direction.SE: newY++; newX++; break; case Direction.SW: newY++; newX--; break; case Direction.E: newX++; break; case Direction.W: newX--; break; } if(newX >= 0 && newX < region.getWidth() && newY >= 0 && newY < region.getHeight()) { Terrain tmpTerrain = region.getTerrain(newX, newY); if (TerrainManager.allowsMonsterToPass(tmpTerrain, monster) && quinoa.getMonster(newX, newY) == null) { monster.setPosition(newX, newY); TerrainManager.step(region.getTerrain(newX, newY), newX, newY, region, quinoa); } else { //Do nothing } } else { //out of bounds, but do not inform the player } }