Board.java

package edu.chl.hajo.monopoly.core;

import edu.chl.hajo.monopoly.core.space.Space;
import java.util.Iterator;
import java.util.List;

/**
 * The board holding spaces
 *
 * @author hajo
 *
 */
public class Board implements Iterable<Space> {

   // private static final int JAIL = 5;  // TODO config??
    private final List<Space> spaces;

    public Board(List<Space> spaces) {
        this.spaces = spaces;
    }

    public int size() {
        return spaces.size();
    }

    // Move to Player generic set position TODO
    /*public void moveToJail(Player player) {
        player.setPosition(spaces.get(JAIL));
    }*/

    
    public Space getStart() {
        return spaces.get(0);
    }

    @Override
    public Iterator<Space> iterator() {
        return spaces.iterator();
    }

    public Space getSpace(String name) {
        for (Space s : spaces) {
            if (s.getName().equals(name)) {
                return s;
            }
        }
        return null;
    }

    public Space getSpace(Space space, int steps) {
        int oldPos = spaces.indexOf(space);
        int newPos = (oldPos + steps) % spaces.size();
        return spaces.get(newPos);
    }

    boolean hasPassedGo(Space oldPos, Space newPos) {
        return spaces.indexOf(oldPos) > spaces.indexOf(newPos);
    }

}