// This is general class to replicate all ScrN settings from server to clients
// In the future ScrnBalance class will be server-side only and all replication info
// will be moved here

class ScrnSrvReplInfo extends ReplicationInfo;

var private transient ScrnSrvReplInfo Me;

var bool bForceSteamNames;


replication
{
    // flags to replicate config variables
    reliable if ( bNetInitial && Role == ROLE_Authority )
        bForceSteamNames;
}


static final function ScrnSrvReplInfo Instance()
{
    return class'ScrnSrvReplInfo'.default.Me;
}

simulated function PostBeginPlay()
{
    super.PostBeginPlay();
    
    // ScrnSrvReplInfo is supposed to be a singleton
    if ( class'ScrnSrvReplInfo'.default.Me != none && class'ScrnSrvReplInfo'.default.Me != self )
        class'ScrnSrvReplInfo'.default.Me.Destroy();

    if ( Role == ROLE_Authority )
    {
        class'ScrnSrvReplInfo'.default.Me = self;
        Me = self;
    }
    else 
    {
        // need to wait until initial replication before this class can be used
        class'ScrnSrvReplInfo'.default.Me = none;
        Me = none;
    }
}

simulated function PostNetBeginPlay()
{
    super.PostNetBeginPlay();
    
    if ( Role == ROLE_Authority ) 
        return; 
        
    class'ScrnSrvReplInfo'.default.Me = self;
    Me = self;   
    
    SetTimer(2.0, false);
}

simulated function Timer()
{
    local ScrnPlayerController PC;

    PC = ScrnPlayerController(Level.GetLocalPlayerController());
    if ( PC != none ) {
        if ( PC.PlayerName != "" )
            PC.SetName(PC.PlayerName);
    }
}

simulated function Destroyed()
{
    if ( class'ScrnSrvReplInfo'.default.Me == self ) {
        class'ScrnSrvReplInfo'.default.Me = none;
    }
    super.Destroyed();
}

defaultproperties
{
     bForceSteamNames=True
}
