private GameObject createTeamBreakdownPanel(string memberKey, TeamMember teamMember)
        {
            //instantiating the new team member panel and adding to the view
            Transform memberPanel = Instantiate(teamMemberPanel, Vector3.zero, Quaternion.identity).transform;

            memberPanel.SetParent(teamMemberView, false);

            //Set the panel title to something meaningful
            string name = PeopleUtil.getRankDetails(teamMember.rank).abbreviation + ". " + teamMember.forename + " " + teamMember.surname;

            memberPanel.Find("Name").GetComponent <Text>().text = name;

            //tting the rank image on the panel
            memberPanel.Find("RankImage").GetComponent <Image>().sprite = rankSprites[teamMember.rank];

            //set the primary weapon text on the panel
            memberPanel.Find("PrimaryWeapon").GetComponent <Text>().text = teamMember.primaryWeapon.name + "\n" + teamMember.primaryWeapon.minimumDamage + " - " + teamMember.primaryWeapon.maximumDamage;

            //set the secondary weapon text on the panel
            memberPanel.Find("SecondaryWeapon").GetComponent <Text>().text = teamMember.secondaryWeapon.name + "\n" + teamMember.secondaryWeapon.minimumDamage + " - " + teamMember.secondaryWeapon.maximumDamage;

            //set the primary weapon text on the panel
            memberPanel.Find("ThrowableWeapon").GetComponent <Text>().text = teamMember.throwableWeapon.name + "\n" + teamMember.throwableWeapon.minimumDamage + " - " + teamMember.throwableWeapon.maximumDamage;

            //set the secondary weapon text on the panel
            memberPanel.Find("Armour").GetComponent <Text>().text = teamMember.armour.name + "\n" + teamMember.armour.minimumDamage + " - " + teamMember.armour.maximumDamage;

            //set the onclick listener for the primary weapon allowing it to be swapped
            memberPanel.Find("SelectButton").GetComponent <Button>().onClick.AddListener(() => { onMemberSelected(memberKey); });

            //return the newly created panel object
            return(memberPanel.gameObject);
        }
        private void initialiseEmployedMembers()
        {
            employedMembers = PeopleUtil.getEmployedMembers();
            mappedPanels    = new Dictionary <string, GameObject>();

            foreach (string memberKey in employedMembers.members.Keys)
            {
                mappedPanels.Add(memberKey, createTeamMemberPanel(memberKey, employedMembers.members[memberKey]));
            }
        }
        private void createTeamPanel(int teamIndex, Team team)
        {
            //instantiating the new team overview panel and adding to the view
            Transform teamPanel;

            if (!team.locked)
            {
                teamPanel = Instantiate(teamOverviewPanel, Vector3.zero, Quaternion.identity).transform;

                //setting details for member 1
                TeamMember member = employedMembers.members[team.teamMemberKeys[0]];
                teamPanel.Find("Member1RankImage").GetComponent <Image>().sprite = rankSprites[member.rank];
                teamPanel.Find("Member1Details").GetComponent <Text>().text      = PeopleUtil.getRankDetails(member.rank).abbreviation + "\n" + member.forename + "\n" + member.surname;

                //setting details for member 2
                if (team.teamMemberKeys.Count > 1)
                {
                    member = employedMembers.members[team.teamMemberKeys[1]];
                    teamPanel.Find("Member2RankImage").GetComponent <Image>().sprite = rankSprites[member.rank];
                    teamPanel.Find("Member2Details").GetComponent <Text>().text      = PeopleUtil.getRankDetails(member.rank).abbreviation + "\n" + member.forename + "\n" + member.surname;
                }

                //setting details for member 3
                if (team.teamMemberKeys.Count > 2)
                {
                    member = employedMembers.members[team.teamMemberKeys[2]];
                    teamPanel.Find("Member3RankImage").GetComponent <Image>().sprite = rankSprites[member.rank];
                    teamPanel.Find("Member3Details").GetComponent <Text>().text      = PeopleUtil.getRankDetails(member.rank).abbreviation + "\n" + member.forename + "\n" + member.surname;
                }

                //setting details for member 4
                if (team.teamMemberKeys.Count > 3)
                {
                    member = employedMembers.members[team.teamMemberKeys[3]];
                    teamPanel.Find("Member4RankImage").GetComponent <Image>().sprite = rankSprites[member.rank];
                    teamPanel.Find("Member4Details").GetComponent <Text>().text      = PeopleUtil.getRankDetails(member.rank).abbreviation + "\n" + member.forename + "\n" + member.surname;
                }

                //add a new listener to the selection button for the panel which calls the onMissionActivated function
                //passing in the mission details for this mission
                Button selectButton = teamPanel.Find("SelectButton").GetComponent <Button>();
                selectButton.onClick.AddListener(() => { onDisplayTeamBreakdown(teamIndex, team); });
                selectButton.interactable = true;
            }
            else
            {
                teamPanel = Instantiate(lockedTeamOverviewPanel, Vector3.zero, Quaternion.identity).transform;
            }
            //set the panel parent
            teamPanel.SetParent(teamScrollView, false);

            //Set the team name
            teamPanel.Find("TeamName").GetComponent <Text>().text = "SG-" + teamIndex;
        }
        private void Start()
        {
            employedMembers = PeopleUtil.getEmployedMembers();
            mappedPanels    = new Dictionary <string, GameObject>();
            teams           = PeopleUtil.getTeams();

            foreach (int teamIndex in teams.teams.Keys)
            {
                Team team = teams.teams[teamIndex];

                createTeamPanel(teamIndex, team);
            }
        }
        public void generateNewTeamMember()
        {
            TeamMember teamMember = PeopleUtil.generateNewTeamMember();

            string memberId = "ID-" + DateTime.UtcNow.ToString() + UnityEngine.Random.Range(0, 1000000000);

            employedMembers.members.Add(memberId, teamMember);

            PeopleUtil.saveNewTeamMember(memberId, teamMember);

            //Debug.Log(teamMember.ToString());

            mappedPanels.Add(memberId, createTeamMemberPanel(memberId, teamMember));
        }