/*----
    header file for class: Team

    A Team is a collection of PlayerChar instances.
    The user specifies its name and size (if they would like),
        and they can specify what players make up that team.

    (version created FIRST, before adding
        the needed destructor, copy constructor,
        and overloaded assignment operator)

    by: Sharon Tuttle
    last modified: 2022-10-11
----*/

#ifndef TEAM_H
#define TEAM_H

#include <string>
#include "PlayerChar.h"
using namespace std;

class Team
{
    public:
        // constructors

        Team();
        Team(string init_name, int desired_size);

        // accessors

        string get_name() const;
        int get_size() const;

        PlayerChar get_player(int position) const;

        // mutators

        void set_name(string new_name);
        void set_player(PlayerChar a_player, int position);

        // other methods

        /*---
          signature: display: void -> void
          purpose: expects nothing, has the side-effect of
              printing to the screen the team's name,
              size, and player details, and returns nothing
        ---*/

        void display() const;

        /*---
            signature: is_bigger_than: Team -> bool
            purpose: expects a Team object, and returns
                whether the calling team has more team
                members than the given team
        ---*/

        bool is_bigger_than(Team another_team) const;

    private:
       // data fields

       string      name;
       int         size;
       PlayerChar *players;

       static const int DEFAULT_SIZE = 4;
};

#endif