Prepare for v1.0.0 release (#2)
* Replace sh_stats.gnut with pulse.gnut * Add menu_stats_utility.nut * Add menu_stats_overview.nut --------- Co-authored-by: legonzaur <legonzaur@live.fr>
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
//TODO: Kills Per Minute stat
|
||||
|
||||
global function InitViewStatsWeaponsMenu
|
||||
|
||||
struct
|
||||
{
|
||||
var menu
|
||||
GridMenuData gridData
|
||||
bool isGridInitialized = false
|
||||
array<ItemDisplayData> allPilotWeapons
|
||||
} file
|
||||
|
||||
void function InitViewStatsWeaponsMenu()
|
||||
{
|
||||
var menu = GetMenu( "ViewStats_Weapons_Menu" )
|
||||
file.menu = menu
|
||||
|
||||
Hud_SetText( Hud_GetChild( file.menu, "MenuTitle" ), "#STATS_PILOT_WEAPONS" )
|
||||
|
||||
file.gridData.rows = 5
|
||||
file.gridData.columns = 1
|
||||
//file.gridData.numElements // Set in OnViewStatsWeapons_Open after itemdata exists
|
||||
file.gridData.pageType = eGridPageType.VERTICAL
|
||||
file.gridData.tileWidth = 224
|
||||
file.gridData.tileHeight = 112
|
||||
file.gridData.paddingVert = 6
|
||||
file.gridData.paddingHorz = 6
|
||||
|
||||
Grid_AutoAspectSettings( menu, file.gridData )
|
||||
|
||||
file.gridData.initCallback = WeaponButton_Init
|
||||
file.gridData.getFocusCallback = WeaponButton_GetFocus
|
||||
//file.gridData.clickCallback = WeaponButton_Activate
|
||||
|
||||
AddMenuEventHandler( file.menu, eUIEvent.MENU_OPEN, OnViewStatsWeapons_Open )
|
||||
|
||||
AddMenuFooterOption( file.menu, BUTTON_B, "#B_BUTTON_BACK", "#BACK" )
|
||||
}
|
||||
|
||||
void function OnViewStatsWeapons_Open()
|
||||
{
|
||||
//UI_SetPresentationType( ePresentationType.NO_MODELS )
|
||||
UI_SetPresentationType( ePresentationType.STORE_WEAPON_SKINS )
|
||||
|
||||
// Get Pilot weapon list
|
||||
file.allPilotWeapons = GetVisibleItemsOfType( eItemTypes.PILOT_PRIMARY )
|
||||
file.allPilotWeapons.extend( GetVisibleItemsOfType( eItemTypes.PILOT_SECONDARY ) )
|
||||
file.allPilotWeapons.sort( SortItemsAlphabetically )
|
||||
//file.allPilotWeapons.extend( GetVisibleItemsOfType( eItemTypes.PILOT_ORDNANCE ) )
|
||||
//file.allPilotWeapons.extend( GetVisibleItemsOfType( eItemTypes.PILOT_SPECIAL ) )
|
||||
|
||||
file.gridData.numElements = file.allPilotWeapons.len()
|
||||
|
||||
if ( !file.isGridInitialized )
|
||||
{
|
||||
GridMenuInit( file.menu, file.gridData )
|
||||
file.isGridInitialized = true
|
||||
}
|
||||
|
||||
file.gridData.currentPage = 0
|
||||
|
||||
Grid_InitPage( file.menu, file.gridData )
|
||||
Hud_SetFocused( Grid_GetButtonForElementNumber( file.menu, 0 ) )
|
||||
UpdateStatsForWeapon( file.allPilotWeapons[ 0 ].ref )
|
||||
}
|
||||
|
||||
bool function WeaponButton_Init( var button, int elemNum )
|
||||
{
|
||||
string ref = file.allPilotWeapons[ elemNum ].ref
|
||||
int itemType = GetItemType( ref )
|
||||
|
||||
var rui = Hud_GetRui( button )
|
||||
asset image = GetImage( itemType, ref )
|
||||
RuiSetImage( rui, "buttonImage", image )
|
||||
|
||||
Hud_SetEnabled( button, true )
|
||||
Hud_SetVisible( button, true )
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
void function WeaponButton_GetFocus( var button, int elemNum )
|
||||
{
|
||||
//if ( IsControllerModeActive() )
|
||||
UpdateStatsForWeapon( file.allPilotWeapons[ elemNum ].ref )
|
||||
}
|
||||
|
||||
//void function WeaponButton_Activate( var button, int elemNum )
|
||||
//{
|
||||
// if ( !IsControllerModeActive() )
|
||||
// UpdateStatsForWeapon( file.allPilotWeapons[ elemNum ].ref )
|
||||
//}
|
||||
|
||||
void function UpdateStatsForWeapon( string weaponRef )
|
||||
{
|
||||
//Sliced names are to be removed afterwards
|
||||
string slicedName = ""
|
||||
if(weaponRef.find("mp_weapon")){
|
||||
slicedName = weaponRef.slice(10)
|
||||
}
|
||||
entity player = GetUIPlayer()
|
||||
if ( player == null )
|
||||
return
|
||||
|
||||
RunMenuClientFunction( "UpdateStoreWeaponModelSkin", weaponRef, 0 )
|
||||
|
||||
// Name
|
||||
Hud_SetText( Hud_GetChild( file.menu, "WeaponName" ), GetItemName( weaponRef ) )
|
||||
|
||||
// Locked info
|
||||
var lockLabel = GetElementsByClassname( file.menu, "LblWeaponLocked" )[0]
|
||||
|
||||
if ( IsItemLocked( player, weaponRef ) )
|
||||
{
|
||||
Hud_SetText( lockLabel, "#LOUADOUT_UNLOCK_REQUIREMENT_LEVEL", GetUnlockLevelReq( weaponRef ) )
|
||||
Hud_Show( lockLabel )
|
||||
}
|
||||
else
|
||||
{
|
||||
Hud_Hide( lockLabel )
|
||||
}
|
||||
|
||||
// Get required data needed for some calculations
|
||||
//float hoursUsed = GetPlayerStatFloat( player, "weapon_stats", "hoursUsed", weaponRef )
|
||||
string timeUsed = StatToTimeString( "weapon_stats", "hoursUsed", weaponRef )
|
||||
int shotsHit = GetPlayerStatInt( player, "weapon_stats", "shotsHit", weaponRef )
|
||||
int headshots = GetPlayerStatInt( player, "weapon_stats", "headshots", weaponRef )
|
||||
int crits = GetPlayerStatInt( player, "weapon_stats", "critHits", weaponRef )
|
||||
|
||||
string headShotsValue = Localize( "#STATS_NOT_APPLICABLE" )
|
||||
bool headshotWeapon = GetWeaponInfoFileKeyField_Global( weaponRef, "allow_headshots" ) == true
|
||||
if ( headshotWeapon )
|
||||
headShotsValue = string( headshots )
|
||||
|
||||
string critHitsValue = Localize( "#STATS_NOT_APPLICABLE" )
|
||||
bool critHitWeapon = GetWeaponInfoFileKeyField_Global( weaponRef, "critical_hit" ) == true
|
||||
if ( critHitWeapon )
|
||||
critHitsValue = string( crits )
|
||||
|
||||
SetStatBoxDisplay( Hud_GetChild( file.menu, "Stat0" ), Localize( "#STATS_HEADER_TIME_USED" ), timeUsed )
|
||||
SetStatBoxDisplay( Hud_GetChild( file.menu, "Stat1" ), Localize( "#STATS_HEADER_SHOTS_HIT" ), string( shotsHit ) )
|
||||
SetStatBoxDisplay( Hud_GetChild( file.menu, "Stat2" ), Localize( "#STATS_HEADER_HEADSHOTS" ), headShotsValue )
|
||||
SetStatBoxDisplay( Hud_GetChild( file.menu, "Stat3" ), Localize( "#STATS_HEADER_CRITICAL_HITS" ), critHitsValue )
|
||||
|
||||
string nextUnlockRef = GetNextUnlockForWeaponLevel( player, weaponRef, WeaponGetRawLevel( player, weaponRef ) + 1 )
|
||||
if ( nextUnlockRef != "" )
|
||||
{
|
||||
var rui = Hud_GetRui( Hud_GetChild( file.menu, "NextUnlock" ) )
|
||||
|
||||
if ( nextUnlockRef == "random" )
|
||||
{
|
||||
RuiSetString( rui, "unlockName", "" )
|
||||
RuiSetImage( rui, "unlockImage", $"rui/menu/common/unlock_random" )
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemDisplayData displayData
|
||||
if ( IsSubItemType( GetItemType( nextUnlockRef ) ) )
|
||||
displayData = GetItemDisplayData( nextUnlockRef, weaponRef )
|
||||
else
|
||||
displayData = GetItemDisplayData( nextUnlockRef )
|
||||
|
||||
RuiSetString( rui, "unlockName", displayData.name )
|
||||
RuiSetImage( rui, "unlockImage", displayData.image )
|
||||
|
||||
vector aspect = GetItemImageAspect( nextUnlockRef )
|
||||
|
||||
float mult = 1.0
|
||||
if ( aspect.x > aspect.y )
|
||||
mult = 120.0 / aspect.x
|
||||
else
|
||||
mult = 120.0 / aspect.y
|
||||
|
||||
aspect.x *= mult
|
||||
aspect.y *= mult
|
||||
|
||||
RuiSetFloat2( rui, "unlockImageSize", aspect )
|
||||
}
|
||||
//printt( displayData.image )
|
||||
}
|
||||
|
||||
// Total Kills Stats
|
||||
SetStatsLabelValue( file.menu, "KillsValue0", getWeaponKillsFromToneApi(weaponRef) )
|
||||
SetStatsLabelValue( file.menu, "KillsValue1", getWeaponKillsFromToneApi(weaponRef) )
|
||||
SetStatsLabelValue( file.menu, "KillsValue2", GetPlayerStatInt( player, "weapon_kill_stats", "titansTotal", weaponRef ) )
|
||||
SetStatsLabelValue( file.menu, "KillsValue3", GetPlayerStatInt( player, "weapon_kill_stats", "ai", weaponRef ) )
|
||||
}
|
||||
Reference in New Issue
Block a user