diff options
Diffstat (limited to 'Northstar.Client/mod/scripts/vscripts/presence')
-rw-r--r-- | Northstar.Client/mod/scripts/vscripts/presence/cl_presence.nut | 60 | ||||
-rw-r--r-- | Northstar.Client/mod/scripts/vscripts/presence/ui_presence.nut | 38 |
2 files changed, 98 insertions, 0 deletions
diff --git a/Northstar.Client/mod/scripts/vscripts/presence/cl_presence.nut b/Northstar.Client/mod/scripts/vscripts/presence/cl_presence.nut new file mode 100644 index 00000000..755396e3 --- /dev/null +++ b/Northstar.Client/mod/scripts/vscripts/presence/cl_presence.nut @@ -0,0 +1,60 @@ +untyped +globalize_all_functions + +struct { + int highestScore = 0 + int secondHighestScore = 0 +} file + +void function OnPrematchStart() +{ + if ( GetServerVar( "roundBased" ) ) + NSUpdateTimeInfo( level.nv.roundEndTime - Time() ) + else + NSUpdateTimeInfo( level.nv.gameEndTime - Time() ) +} + +void function NSUpdateGameStateClientStart() +{ + #if MP + AddCallback_GameStateEnter( eGameState.Prematch, OnPrematchStart ) + #endif + + thread NSUpdateGameStateLoopClient() + OnPrematchStart() +} + +void function NSUpdateGameStateLoopClient() +{ + while ( true ) + { + if ( IsSingleplayer() ) + { + NSUpdateGameStateClient( GetPlayerArray().len(), GetCurrentPlaylistVarInt( "max_players", 65535 ), 1, 1, 1, GetServerVar( "roundBased" ), 1 ) + wait 1.0 + } + else + { + foreach ( player in GetPlayerArray() ) + { + if ( GameRules_GetTeamScore( player.GetTeam() ) >= file.highestScore ) + { + file.highestScore = GameRules_GetTeamScore( player.GetTeam() ) + } + else if ( GameRules_GetTeamScore( player.GetTeam() ) > file.secondHighestScore ) + { + file.secondHighestScore = GameRules_GetTeamScore( player.GetTeam() ) + } + } + + int ourScore = 0 + if ( IsValid( GetLocalClientPlayer() ) ) + ourScore = GameRules_GetTeamScore( GetLocalClientPlayer().GetTeam() ) + + int limit = IsRoundBased() ? GetCurrentPlaylistVarInt( "roundscorelimit", 0 ) : GetCurrentPlaylistVarInt( "scorelimit", 0 ) + NSUpdateGameStateClient( GetPlayerArray().len(), GetCurrentPlaylistVarInt( "max_players", 65535 ), ourScore, file.secondHighestScore, file.highestScore, GetServerVar( "roundBased" ), limit ) + OnPrematchStart() + wait 1.0 + } + } +} diff --git a/Northstar.Client/mod/scripts/vscripts/presence/ui_presence.nut b/Northstar.Client/mod/scripts/vscripts/presence/ui_presence.nut new file mode 100644 index 00000000..5f42cc7d --- /dev/null +++ b/Northstar.Client/mod/scripts/vscripts/presence/ui_presence.nut @@ -0,0 +1,38 @@ +untyped +globalize_all_functions + +void function NSUpdateGameStateUIStart() +{ + thread NSUpdateGameStateLoopUI() +} + +void function NSUpdateGameStateLoopUI() +{ + while ( true ) + { + wait 1.0 + + if ( uiGlobal.loadedLevel == "" ) + { + if ( uiGlobal.isLoading ) + NSSetLoading( true ) + else + { + NSSetLoading( false ) + NSUpdateGameStateUI( "", "", "", "", true, false ) + } + + continue + } + + NSSetLoading( false ) + if( GetConVarString( "mp_gamemode" ) == "solo" ) + { + NSUpdateGameStateUI( "northstar", Localize( GetMapDisplayName( GetActiveLevel() + "_CAMPAIGN_NAME" ) ), "Campaign", "Campaign", IsFullyConnected(), false ) + } + else + { + NSUpdateGameStateUI( GetActiveLevel(), Localize( GetMapDisplayName( GetActiveLevel() ) ), GetConVarString( "mp_gamemode" ), Localize( GetPlaylistDisplayName( GetConVarString( "mp_gamemode" ) ) ), IsFullyConnected(), false ) + } + } +} |