package de.otto.roboapp.model; import android.widget.ListView; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class DataModel { int tachometer; List<Robo> roboList; List<Player> playerList; Map<Player, Robo> playerToRoboAssignmentMap; List<Player> finishedPlayers; public String currentPlayerName; public List<Player> getFinishedPlayerList() { return finishedPlayers; } RacingData racingData = new RacingData(); /* Array zum abspeichern der verfügbaren Roboter */ public DataModel() { roboList = new ArrayList<Robo>(); playerList = new ArrayList<Player>(); playerToRoboAssignmentMap = new HashMap<Player, Robo>(); finishedPlayers = new ArrayList<Player>(); } public List<Player> getOrderedResultsList() { List<Player> p = getFinishedPlayerList(); Collections.sort(p); return p; } public int getResultTimeByPlayer(Player p) { return p.getResultTime(); } public Map<Player, Robo> getPlayerToRoboAssignmentMap() { return playerToRoboAssignmentMap; } public void clearPlayerList () { playerList.clear(); } public void clearRoboList() { roboList.clear(); } public void clearPlayerToRoboAssignmentMap() { playerToRoboAssignmentMap.clear(); } public void clearFinishedPlayerList() { finishedPlayers.clear(); } public void addPlayerToFinishedPlayerList(Player player) { finishedPlayers.add(player); } /* Füge Player dem Array hinzu */ public void addPlayerToArray(String playername, boolean isReady) { playerList.add(new Player(playername, isReady)); } public void setCurrentPlayerName(String currentPlayerName) { this.currentPlayerName = currentPlayerName; } public void addRoboToArray(String roboname) { roboList.add(new Robo(roboname)); } public void assignPlayerToRobo(String playerName, String roboName){ playerToRoboAssignmentMap.put(getPlayerByName(playerName), getRoboByName(roboName)); System.out.println("Test" + playerToRoboAssignmentMap.isEmpty()); } public Robo getRoboByName(String name) { for (Robo robo : roboList) { if (name.equals(robo.getName())) { return robo; } } return null; } public Player getPlayerByName(String name) { for (Player player : playerList) { if (name.equals(player.getName())) { return player; } } return null; } public List<Player> getUnassignedPlayer() { ArrayList<Player> unassignedPlayerList = new ArrayList<>(); for (Player player : playerList) { if(!playerToRoboAssignmentMap.containsKey(player)) { unassignedPlayerList.add(player); } } return unassignedPlayerList; } public List<Player> getAssignedPlayer() { ArrayList<Player> assignedPlayerList = new ArrayList<>(); for (Player player : playerList) { if(playerToRoboAssignmentMap.containsKey(player)) { assignedPlayerList.add(player); } } return assignedPlayerList; } public List<Robo> getAssignedRobo() { ArrayList<Robo> assignedRoboList = new ArrayList<>(); for (Robo robo : roboList) { if(playerToRoboAssignmentMap.containsValue(robo)) { assignedRoboList.add(robo); } } return assignedRoboList; } public List<Robo> getUnassignedRobos() { ArrayList<Robo> unassignedRoboList = new ArrayList<>(); for (Robo robo : roboList) { if(!playerToRoboAssignmentMap.containsValue(robo)) { unassignedRoboList.add(robo); } } return unassignedRoboList; } /* Robolist Setter */ public void setRoboList(ListView selectRoboList) { } /* RoboList Getter */ public List<Robo> getRoboList() { return roboList; } public List<Player> getPlayerList() { return playerList; } public RacingData getRacingData() { return racingData; } public String getCurrentPlayerName() { return currentPlayerName; } public Robo getMyAssignedRobo() { return playerToRoboAssignmentMap.get(getPlayerByName(currentPlayerName)); } }