Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Alystrasz authored Sep 19, 2024
2 parents b7475c9 + 3e00833 commit 39f6a57
Show file tree
Hide file tree
Showing 4 changed files with 197 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@
"UNAUTHORIZED_PWD" "Неправильный пароль"
"STRYDER_RESPONSE" "Не удалось разобрать ответ Stryder"
"PLAYER_NOT_FOUND" "Не удалось найти аккаунт игрока"
"INVALID_MASTERSERVER_TOKEN" "Некорректный или истёкший токен главного сервера. Перезапустите EA App, чтобы обновить токен."
"INVALID_MASTERSERVER_TOKEN" "Некорректный или истёкший токен главного сервера. Попробуйте перезапустить EA App."
"JSON_PARSE_ERROR" "Ошибка разбора json-ответа"
"UNSUPPORTED_VERSION" "Используемая вами версия больше не поддерживается"
"DISABLE" "Выключить"
Expand Down Expand Up @@ -367,5 +367,12 @@
"MOD_FETCHING_FAILED_GENERAL" "Ошибка распаковки мода. Проверьте файл лога, чтобы узнать подробности."
"MANIFESTO_FETCHING_TEXT" "Скачиваем список проверенных модов..."
"MANIFESTO_FETCHING_TITLE" "Начало загрузки модов"
"MODE_MENU_FFA" "Все против всех"
"MODE_MENU_OTHER" "Другое"
"MODE_MENU_CUSTOM" "Свой"
"MODE_MENU_ALL" "Все"
"MODE_MENU_UNKNOWN" "Неизвестный"
"MODE_MENU_SWITCH" "Фильтр"
"MODE_MENU_TITAN_ONLY" "Только титаны"
}
}
175 changes: 175 additions & 0 deletions Northstar.Client/mod/scripts/vscripts/mp/levels/cl_mp_glitch.nut
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
global function ClientCodeCallback_MapInit
global function AddInWorldMinimapObject

// someday, move this to in world minimap

struct
{
array<var> minimapBGTopos
array<var> minimapTopos
array<var> screens
float mapCornerX
float mapCornerY
float mapScale
float threatMaxDist
} file

void function ClientCodeCallback_MapInit()
{
AddCallback_EntitiesDidLoad( EntitiesDidLoad )
AddCallback_MinimapEntSpawned( AddInWorldMinimapObject )
AddCallback_LocalViewPlayerSpawned( AddInWorldMinimapObject )
}

void function EntitiesDidLoad()
{
InitMinimapScreens()
}

var function AddInWorldMinimapTopo( entity ent, float width, float height )
{
vector ang = ent.GetAngles()
vector right = ( (AnglesToRight( ang )*-1) * width * 0.5 )
vector down = ( (AnglesToUp( ang )*-1) * height * 0.5 )

vector org = ent.GetOrigin()

org = ent.GetOrigin() - right*0.5 - down*0.5

var topo = RuiTopology_CreatePlane( org, right, down, true )
return topo
}

void function InitMinimapScreens()
{
array<entity> screens = GetEntArrayByScriptName( "inworld_minimap" )
foreach ( screen in screens )
{
file.minimapTopos.append( AddInWorldMinimapTopo( screen, 350, 350 ) )
file.minimapBGTopos.append( AddInWorldMinimapTopo( screen, 450, 450 ) )
}

asset mapImage = Minimap_GetAssetForKey( "minimap" )
file.mapCornerX = Minimap_GetFloatForKey( "pos_x" )
file.mapCornerY = Minimap_GetFloatForKey( "pos_y" )
float displayDist = Minimap_GetFloatForKey( "displayDist" )
float threatDistNear = Minimap_GetFloatForKey( "threatNearDist" )
float threatDistFar = Minimap_GetFloatForKey( "threatFarDist" )
file.mapScale = Minimap_GetFloatForKey( "scale" )

file.threatMaxDist = Minimap_GetFloatForKey( "threatMaxDist" )

foreach ( screen in file.minimapBGTopos )
{
entity player = GetLocalViewPlayer()
var rui = RuiCreate( $"ui/in_world_minimap_border.rpak", screen, RUI_DRAW_WORLD, 0 )
string factionChoice = GetFactionChoice( player )
ItemDisplayData displayData = GetItemDisplayData( factionChoice )
asset factionLogo = displayData.image
RuiSetImage( rui, "logo", factionLogo )
RuiSetImage( rui, "basicImage", $"overviews/mp_glitch_wallmap_bracket" )
}
foreach ( screen in file.minimapTopos )
{
var rui = RuiCreate( $"ui/in_world_minimap_base.rpak", screen, RUI_DRAW_WORLD, 0 )
RuiSetImage( rui, "mapImage", $"overviews/mp_glitch_wallmap" )
RuiSetFloat3( rui, "mapCorner", <file.mapCornerX, file.mapCornerY, 0> )
RuiSetFloat( rui, "displayDist", max( file.threatMaxDist, 2200 ) )
RuiSetFloat( rui, "mapScale", file.mapScale )
file.screens.append( rui )
}

foreach ( player in GetPlayerArray() )
{
if ( IsValid( player ) )
AddInWorldMinimapObject( player )
}
}

void function AddInWorldMinimapObject( entity ent ) //TODO: If we want radar jammer boost to hide friendly players we need to be able to get the rui handles back.
{
Assert( IsValid( ent ) )

if ( !ent.IsPlayer() && !ent.IsTitan() )
return

ent.SetDoDestroyCallback( true )

foreach ( screen in file.minimapTopos )
thread AddInWorldMinimapObjectInternal( ent, screen )
}

void function AddInWorldMinimapObjectInternal( entity ent, var screen )
{
printt( "AddInWorldMinimapObject" )
printt( screen )
printt( ent )

bool isNPCTitan = ent.IsNPC() && ent.IsTitan()
bool isPetTitan = ent == GetLocalViewPlayer().GetPetTitan()
bool isLocalPlayer = ent == GetLocalViewPlayer()
int customState = ent.Minimap_GetCustomState()
asset minimapAsset = $"ui/in_world_minimap_player.rpak"
if ( isNPCTitan )
{
minimapAsset = $"ui/in_world_minimap_object.rpak"
}

int zOrder = ent.Minimap_GetZOrder()
entity viewPlayer = GetLocalViewPlayer()

var rui = RuiCreate( minimapAsset, screen, RUI_DRAW_WORLD, MINIMAP_Z_BASE + zOrder )

//RuiTrackGameTime( rui, "lastFireTime", ent, RUI_TRACK_LAST_FIRED_TIME )

RuiSetFloat3( rui, "mapCorner", <file.mapCornerX,file.mapCornerY,0.0> )
RuiSetFloat( rui, "mapScale", file.mapScale )

RuiTrackFloat3( rui, "objectPos", ent, RUI_TRACK_ABSORIGIN_FOLLOW )
RuiTrackFloat3( rui, "objectAngles", ent, RUI_TRACK_EYEANGLES_FOLLOW )
RuiTrackInt( rui, "objectFlags", ent, RUI_TRACK_MINIMAP_FLAGS )
RuiTrackInt( rui, "customState", ent, RUI_TRACK_MINIMAP_CUSTOM_STATE )
RuiSetFloat( rui, "displayDist", max( file.threatMaxDist, 2200 ) )

if ( isLocalPlayer )
RuiSetBool( rui, "isLocalPlayer", isLocalPlayer )

// MinimapPackage_PlayerInit( ent, rui )

if ( isPetTitan )
{
RuiSetBool( rui, "useTeamColor", false )
RuiSetFloat3( rui, "iconColor", TEAM_COLOR_YOU / 255.0 )
}

OnThreadEnd(
function() : ( rui )
{
RuiDestroy( rui )
}
)

ent.EndSignal( "OnDestroy" )

if ( ent.IsPlayer() )
{
while ( IsValid( ent ) )
{
WaitSignal( ent, "SettingsChanged", "OnDeath" )
}
}
else
{
ent.WaitSignal( "OnDestroy" )
}
}

void function MinimapPackage_PlayerInit( entity ent, var rui )
{
RuiTrackGameTime( rui, "lastFireTime", ent, RUI_TRACK_LAST_FIRED_TIME )
if ( !IsFFAGame() ) //JFS: Too much work to get FFA to work correctly with Minimap logic, so disabling it for FFA
{
RuiTrackFloat( rui, "sonarDetectedFrac", ent, RUI_TRACK_STATUS_EFFECT_SEVERITY, eStatusEffect.sonar_detected )
RuiTrackFloat( rui, "maphackDetectedFrac", ent, RUI_TRACK_STATUS_EFFECT_SEVERITY, eStatusEffect.maphack_detected )
}
}
16 changes: 13 additions & 3 deletions Northstar.Client/mod/scripts/vscripts/presence/cl_presence.nut
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,21 @@ GameStateStruct function DiscordRPC_GenerateGameState( GameStateStruct gs )
gs.mapDisplayname = Localize(GetMapDisplayName(GetMapName()))

gs.playlist = GetCurrentPlaylistName()
gs.playlistDisplayname = Localize(GetCurrentPlaylistVarString("name", GetCurrentPlaylistName()))
gs.playlistDisplayname = Localize( GetCurrentPlaylistVarString( "name", GetCurrentPlaylistName() ) )

gs.currentPlayers = GetPlayerArray().len()
gs.maxPlayers = GetCurrentPlaylistVarInt( "maxPlayers", -1 )
int reservedCount = GetTotalPendingPlayersReserved()
int connectingCount = GetTotalPendingPlayersConnecting()
int loadingCount = GetTotalPendingPlayersLoading()
int connectedCount = GetPlayerArray().len()
int allKnownPlayersCount = reservedCount + connectingCount + loadingCount + connectedCount

gs.currentPlayers = allKnownPlayersCount
gs.maxPlayers = GetCurrentPlaylistVarInt( "max_players", 16 )

if ( IsValid( GetLocalClientPlayer() ) )
gs.ownScore = GameRules_GetTeamScore( GetLocalClientPlayer().GetTeam() )

#if MP
if ( GameRules_GetGameMode() == FD )
{
gs.playlist = "fd" // So it returns only one thing to the plugin side instead of the 5 separate difficulties FD have
Expand All @@ -41,6 +48,9 @@ GameStateStruct function DiscordRPC_GenerateGameState( GameStateStruct gs )
else
gs.fd_waveNumber = -1 // Tells plugin it's on Wave Break
}
#else
gs.fd_waveNumber = -1 // Unecessary for campaign so return -1
#endif

gs.serverGameState = GetGameState() == -1 ? 0 : GetGameState()
gs.otherHighestScore = gs.ownScore == highestScore ? secondHighest : highestScore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ void function UpdateVisibleModes()
if( blockedModes.contains( file.sortedModes[ modeIndex ] ) )
Hud_SetLocked( button, true )

if ( !PrivateMatch_IsValidMapModeCombo( PrivateMatch_GetSelectedMap(), mode ) )
if ( PrivateMatch_IsValidMapModeCombo( PrivateMatch_GetSelectedMap(), mode ) )
{
Hud_SetLocked( button, true )
SetButtonRuiText( button, mode )
Expand Down

0 comments on commit 39f6a57

Please sign in to comment.