/// <summary>
 /// Set-up the pop-up for displaying the given CrewMember
 /// </summary>
 public void SetUpDisplay(CrewMember crewMember, string source)
 {
     //do not display if the season has finished
     if (!GameManagement.SeasonOngoing)
     {
         return;
     }
     //Change the opinion icon dictionary from the available array if not already done
     if (_opinionIconDict == null)
     {
         _opinionIconDict = _opinionIcons.ToDictionary(o => o.name.Replace("Icon_Box_", string.Empty), o => o);
     }
     _currentMember = crewMember;
     //ensure that the crew member is visible on the crew container at the bottom
     UIManagement.TeamSelection.EnsureVisible(_currentMember);
     //make pop-up visible and firing warning not visible
     gameObject.Active(true);
     _fireWarningPopUp.Active(false);
     //disable opinion images on CrewMember UI objects
     ResetOpinionIcons();
     TrackerEventSender.SendEvent(new TraceEvent("CrewMemberPopUpOpened", TrackerAsset.Verb.Accessed, new Dictionary <TrackerContextKey, object>
     {
         { TrackerContextKey.CrewMemberName, crewMember.Name },
         { TrackerContextKey.CurrentTalkTime, GameManagement.ActionAllowance },
         { TrackerContextKey.CurrentSession, GameManagement.CurrentSessionString },
         { TrackerContextKey.CrewMemberPosition, crewMember.BoatPosition() },
         { TrackerContextKey.SizeOfTeam, GameManagement.CrewCount },
         { TrackerContextKey.TriggerUI, source },
         { TrackerContextKey.CrewMemberSessionsInTeam, crewMember.SessionsIncluded() }
     }, AccessibleTracker.Accessible.Screen));
     SUGARManager.GameData.Send("View Crew Member Screen", crewMember.Name);
     Display();
     //set the order of the pop-ups and pop-up blockers and set-up the click event for the blocker
     transform.EnableSmallBlocker(() => CloseCrewMemberPopUp(TrackerTriggerSource.PopUpBlocker.ToString()));
 }
    /// <summary>
    /// Populate the information required in the pop-up
    /// </summary>
    public void Display()
    {
        if (!gameObject.activeInHierarchy)
        {
            return;
        }
        //ActionAllowance display
        _allowanceBar.fillAmount = GameManagement.ActionAllowancePercentage;
        _allowanceText.text      = GameManagement.ActionAllowance.ToString();
        //CrewMember avatar
        var mood = _currentMember.GetMood();

        _avatarDisplay.SetAvatar(_currentMember.Avatar, mood);
        _avatarDisplay.GetComponent <Image>().color          = new UnityEngine.Color(0, 1, 1);
        _avatarDisplay.Parent().GetComponent <Image>().color = AvatarDisplay.MoodColor(mood);
        //CrewMember information
        var currentRole = _currentMember.BoatPosition();

        _nameText.text = _currentMember.Name;
        _ageText.text  = _currentMember.Age.ToString();
        //set up button if CrewMember is positioned, hide if not
        _roleButton.gameObject.Active(currentRole != Position.Null);
        if (currentRole != Position.Null)
        {
            _roleButton.onClick.RemoveAllListeners();
            _roleButton.onClick.AddListener(() => UIManagement.PositionDisplay.SetUpDisplay(currentRole, TrackerTriggerSource.TeamManagementScreen.ToString()));
            _roleButton.transform.FindImage("Image").sprite = UIManagement.TeamSelection.RoleLogos[currentRole.ToString()];
        }
        //set stat bar fill amount (foreground) and sprite (background)
        foreach (var skill in _skills)
        {
            var skillvalue = _currentMember.RevealedSkills[(Skill)Enum.Parse(typeof(Skill), skill.name)];
            skill.FindImage("Foreground Bar").fillAmount = skillvalue * 0.1f;
            skill.FindImage("Hidden Image").enabled      = skillvalue == 0;
            skill.FindImage("Skill Image").enabled       = skillvalue != 0;
        }
        foreach (var question in _questions)
        {
            var configKey = (ConfigKey)Enum.Parse(typeof(ConfigKey), $"{question.name}Cost");
            question.FindText("Cost/Amount").text         = configKey.ValueString(true, _currentMember);
            question.GetComponent <Button>().interactable = configKey.Affordable(_currentMember);
        }
        _fireButton.transform.FindText("Cost/Amount").text = ConfigKey.FiringCost.ValueString();
        _fireButton.interactable = GameManagement.CanRemoveFromCrew;
        if (!_fireButton.interactable)
        {
            if (!ConfigKey.FiringCost.Affordable())
            {
                FeedbackHoverOver("FIRE_BUTTON_HOVER_ALLOWANCE");
            }
            else if (!GameManagement.CrewEditAllowed)
            {
                FeedbackHoverOver(Localization.GetAndFormat("FIRE_BUTTON_HOVER_LIMIT", false, GameManagement.StartingCrewEditAllowance));
            }
            else if (!GameManagement.Team.CanRemoveFromCrew())
            {
                FeedbackHoverOver("FIRE_BUTTON_HOVER_CREW_LIMIT");
            }
            else if (GameManagement.ShowTutorial)
            {
                FeedbackHoverOver("FIRE_BUTTON_HOVER_TUTORIAL");
            }
        }
        else
        {
            FeedbackHoverOver();
        }
        //display revealed opinions for each other active CrewMember
        DisplayOpinions();
        var managerOpinionImage = transform.FindComponentInChildren <Image>("Manager Opinion");
        var managerOpinion      = _currentMember.RevealedCrewOpinions[GameManagement.ManagerName];

        managerOpinionImage.sprite = GetOpinionIcon(managerOpinion);
        OnLanguageChange();
    }