import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;

/**
 * Class that models a Team of basketball players (and their stats).
 *   @author Dave Reed
 *   @version 2/10/17
 */
public class Team {
    private String teamName;
    private Map<Integer, Player> players;
    
    public Team(String name) {
        this.teamName = name;
        this.players = new TreeMap<Integer, Player>();
    }
    
    public void recordMake(int number, int shot) {
        if (!this.players.containsKey(number)) {
            this.players.put(number, new Player(number));
        }
        this.players.get(number).recordMake(shot);
    }
    
    public void recordMiss(int number, int shot) {
        if (!this.players.containsKey(number)) {
            this.players.put(number, new Player(number));
        }
        this.players.get(number).recordMiss(shot);
    }    
    
    public String toString() {
        int score = 0;
        int[] made = {0, 0, 0, 0};
        int[] taken = {0, 0, 0, 0};
        
        int highScore = 0;
        
        for (Integer num : this.players.keySet()) {
            Player p = this.players.get(num);
            score += p.getPoints();
            for (int i = 1; i <=3; i++) {
                made[i] += p.getMakes(i);
                taken[i] += p.getTaken(i);
            }
            if (p.getPoints() > highScore) {
                highScore = p.getPoints();
            }
        }
        
        String message = this.teamName + " (" + score + " PTS) ("+ 
                         (made[2]+made[3]) +
                         "/" + (taken[2]+taken[3]) + " FG) (" +
                         made[3] + "/" + taken[3] + " 3FG) (" +
                         made[1] + "/" + taken[1] + " FT)\nHigh scorer(s):\n"; 
        
        for (Integer num : this.players.keySet()) {
            Player p = this.players.get(num);
            if (p.getPoints() == highScore) {
                message += "  " + this.players.get(num).toString() + "\n";
            }
        }
        return message;
    }
    
//    public static void main(String[] args) {
//        Team t = new Team("HOME");
//        
//        t.recordMake(10, 2);
//        t.recordMake(24, 3);
//        t.recordMiss(10, 2);
//        t.recordMiss(10, 3);
//        t.recordMake(24, 1);
//        t.recordMake(10, 2);
//        t.recordMake(10, 3);
//        t.recordMake(24, 1);  
//        t.recordMake(24, 2);
//        t.recordMake(55, 1);
//        
//        System.out.println(t);
//        
//    }
}
