ClubOnboarding.cs

Partial MatchController that decides which club help hint to show by checking match, career and menu state, and marks a topic as seen when dismissed. Help topic visibility is stored in GamePreferences.

Rough Code
using Socer;

public sealed partial class MatchController
{
    // Pure, constant-time lookup. A hint never advances the career or pauses a match.
    public ClubHelpTopic ActiveClubHelp
    {
        get
        {
            if(Career==null || !ClubOpen || TutorialStep>=0 || GameSettingsOpen || PreparingMatch ||
                MatchModeSelection || QuickBroadcastOpen || QuickMatchRunning || IsRulesPreview ||
                StrategyLabOpen || RelegationChoiceOpen || Career.HasRelegationChoice || MediaLeagueActive)return ClubHelpTopic.None;
            var topic=ClubHelp.ForPage(ClubPage);
            return GamePreferences.HasSeenClubHelp(topic)?ClubHelpTopic.None:topic;
        }
    }
    public void DismissClubHelp()
    {
        var topic=ActiveClubHelp;
        if(topic!=ClubHelpTopic.None)GamePreferences.MarkClubHelpSeen(topic);
    }
}