boiii-scripts/shared/popups_shared.gsc
2023-04-13 17:30:38 +02:00

912 lines
31 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\callbacks_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\hud_message_shared;
#using scripts\shared\medals_shared;
#using scripts\shared\persistence_shared;
#using scripts\shared\rank_shared;
#using scripts\shared\system_shared;
#using scripts\shared\util_shared;
#using scripts\shared\weapons_shared;
#using scripts\shared\weapons\_weapons;
#precache( "string", "KILLSTREAK_DESTROYED_UAV" );
#precache( "string", "KILLSTREAK_DESTROYED_COUNTERUAV" );
#precache( "string", "KILLSTREAK_DESTROYED_REMOTE_MORTAR" );
#precache( "string", "KILLSTREAK_MP40_INBOUND" );
#precache( "string", "KILLSTREAK_M220_TOW_INBOUND" );
#precache( "string", "KILLSTREAK_MINIGUN_INBOUND" );
#precache( "string", "KILLSTREAK_M202_FLASH_INBOUND" );
#precache( "string", "KILLSTREAK_M32_INBOUND");
#precache( "string", "MP_CAPTURED_THE_FLAG" );
#precache( "string", "MP_KILLED_FLAG_CARRIER" );
#precache( "string", "MP_FRIENDLY_FLAG_DROPPED" );
#precache( "string", "MP_ENEMY_FLAG_DROPPED" );
#precache( "string", "MP_FRIENDLY_FLAG_RETURNED" );
#precache( "string", "MP_ENEMY_FLAG_RETURNED" );
#precache( "string", "MP_FRIENDLY_FLAG_TAKEN" );
#precache( "string", "MP_ENEMY_FLAG_TAKEN" );
#precache( "string", "MP_ENEMY_FLAG_CAPTURED" );
#precache( "string", "MP_FRIENDLY_FLAG_CAPTURED" );
#precache( "string", "MP_EXPLOSIVES_BLOWUP_BY" );
#precache( "string", "MP_EXPLOSIVES_DEFUSED_BY" );
#precache( "string", "MP_EXPLOSIVES_PLANTED_BY" );
#precache( "string", "MP_HQ_DESTROYED_BY" );
#precache( "string", "KILLSTREAK_DESTROYED_HELICOPTER" );
#namespace popups;
// some common functions between all the air kill streaks
function autoexec __init__sytem__() { system::register("popups",&__init__,undefined,undefined); }
function __init__()
{
callback::on_start_gametype( &init );
}
function init()
{
// if the column changes in the medalTable.csv
// these need to be changed too
level.contractSettings = spawnstruct();
level.contractSettings.waitTime = 4.2;
level.killstreakSettings = spawnstruct();
level.killstreakSettings.waitTime = 3;
level.rankSettings = spawnstruct();
level.rankSettings.waitTime = 3;
level.startMessage = spawnstruct();
level.startMessageDefaultDuration = 2.0;
level.endMessageDefaultDuration = 2.0;
level.challengeSettings = spawnstruct();
level.challengeSettings.waitTime = 3;
level.teamMessage = spawnstruct();
level.teamMessage.waittime = 3;
level.regularGameMessages = spawnstruct();
level.regularGameMessages.waittime = 6;
level.wagerSettings = spawnstruct();
level.wagerSettings.waittime = 3;
level.momentumNotifyWaitTime = 0;
level.momentumNotifyWaitLastTime = 0;
level.teamMessageQueueMax = 8;
/#
level thread popupsFromConsole();
// level thread devgui_notif_init(); // do not init here, currently creates 2307 devgui menus
level thread devgui_notif_create_menu_think();
#/
callback::on_connecting( &on_player_connect );
}
function on_player_connect()
{
self.resetGameOverHudRequired = false;
self thread displayPopupsWaiter();
if ( !level.hardcoreMode )
{
self thread displayTeamMessageWaiter();
}
}
/#
//---------------------------------------------------------
// DEVGUI
function devgui_notif_getGunLevelTableName()
{
if ( SessionModeIsCampaignGame() )
{
return "gamedata/weapons/cp/cp_gunlevels.csv";
}
else if ( SessionModeIsZombiesGame() )
{
return "gamedata/weapons/zm/zm_gunlevels.csv";
}
else
{
return "gamedata/weapons/mp/mp_gunlevels.csv";
}
}
function devgui_notif_getChallengesTableCount()
{
if ( SessionModeIsCampaignGame() )
{
return 4;
}
else if ( SessionModeIsZombiesGame() )
{
return 4;
}
else
{
return 6;
}
}
function devgui_notif_getChallengesTableName( tableId )
{
if ( SessionModeIsCampaignGame() )
{
return "gamedata/stats/cp/statsmilestones" + tableId + ".csv";
}
else if ( SessionModeIsZombiesGame() )
{
return "gamedata/stats/zm/statsmilestones" + tableId + ".csv";
}
else
{
return "gamedata/stats/mp/statsmilestones" + tableId + ".csv";
}
}
function set_statstable_id()
{
if ( !isdefined( level.statsTableID ) )
{
level.statsTableID = TableLookupFindCoreAsset( util::getStatsTableName() );
}
}
function devgui_create_weapon_levels_table()
{
level.tbl_weaponIDs = [];
set_statstable_id();
if( !IsDefined( level.statsTableID ) )
{
return;
}
for( i = 0; i < 256; i++ )
{
itemRow = tableLookupRowNum( level.statsTableID, 0, i );
if ( itemRow > -1 )
{
group_s = tableLookupColumnForRow( level.statsTableID, itemRow, 2 );
if ( isSubStr( group_s, "weapon_" ) || group_s == "hero" )
{
reference_s = tableLookupColumnForRow( level.statsTableID, itemRow, 4 );
if( reference_s != "" )
{
weapon = GetWeapon( reference_s );
level.tbl_weaponIDs[i]["reference"] = reference_s;
level.tbl_weaponIDs[i]["group"] = group_s;
level.tbl_weaponIDs[i]["count"] = int( tableLookupColumnForRow( level.statsTableID, itemRow, 5 ) );
level.tbl_weaponIDs[i]["attachment"] = tableLookupColumnForRow( level.statsTableID, itemRow, 8 );
}
}
}
}
}
function devgui_notif_create_menu_think()
{
if ( IsDedicated() )
return;
if ( GetDvarInt( "scr_notif_devgui_create_menu", -999 ) == -999 )
SetDvar( "scr_notif_devgui_create_menu", 0 );
menu_base_path = "UI/Notifications";
util::add_devgui( menu_base_path + "/Add DevGui Cmds", "set " + "scr_notif_devgui_create_menu" + " 1" );
while( 1 )
{
if ( GetDvarInt( "scr_notif_devgui_create_menu", 0 ) > 0 )
{
util::remove_devgui( menu_base_path );
level thread devgui_notif_init();
break;
}
wait 1.0;
}
}
function devgui_notif_init()
{
SetDvar( "scr_notif_devgui_rank", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_xp", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_attachment_index", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_item_index", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_rank_id", 0 );
if( IsDedicated() )
{
return;
}
level thread notif_devgui_rank();
level thread notif_devgui_gun_rank();
if ( !SessionModeIsCampaignGame() )
{
level thread notif_devgui_challenges();
}
}
function notif_devgui_rank()
{
if( !IsDefined( level.rankTable ) )
{
return;
}
notif_rank_devgui_base = "devgui_cmd \"UI/Notifications/Rank/Level ";
for( i = 1; i < level.rankTable.size; i++ )
{
display_level = i + 1;
if( display_level < 10 )
{
display_level = "0" + display_level;
}
AddDebugCommand( notif_rank_devgui_base + display_level + "\" " + "\"" + "scr_notif_devgui_rank" + " " + i + "\" \n" );
if ( ( i % 10 ) == 0 )
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
}
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
level thread notif_devgui_rank_up_think();
}
function notif_devgui_rank_up_think()
{
for( ;; )
{
rank_number = GetDvarInt( "scr_notif_devgui_rank" );
if( rank_number == 0 )
{
{wait(.05);};
continue;
}
level.players[0] rank::CodeCallback_RankUp( rank_number , 0, 1 );
SetDvar( "scr_notif_devgui_rank", 0 );
wait( 1 );
}
}
function notif_devgui_gun_rank()
{
notif_gun_rank_devgui_base = "devgui_cmd \"UI/Notifications/Gun Level/";
GUNLEVEL_RANKID_COL = 0;
GUNLEVEL_GUNREF_COL = 2;
GUNLEVEL_ATTACHMENT_UNLOCK_COL = 3;
GUNLEVEL_XPGAINED_COL = 4;
level flag::wait_till( "all_players_spawned" );
if( !IsDefined( level.tbl_weaponIDs ) )
{
devgui_create_weapon_levels_table();
}
if( !IsDefined( level.tbl_weaponIDs ) )
{
return;
}
a_weapons = [];
a_weapons["assault"] = [];
a_weapons["smg"] = [];
a_weapons["lmg"] = [];
a_weapons["shotgun"] = [];
a_weapons["sniper"] = [];
a_weapons["pistol"] = [];
a_weapons["launcher"] = [];
a_weapons["knife"] = [];
gun_levels_table = devgui_notif_getGunLevelTableName();
foreach( weapon in level.tbl_weaponIDs )
{
gun = [];
gun["ref"] = weapon["reference"];
gun["itemIndex"] = GetItemIndexFromRef( weapon["reference"] );
gun["attachments"] = [];
gun_weapon_attachments = StrTok( weapon["attachment"], " " );
foreach( index, attachment in gun_weapon_attachments )
{
gun["attachments"][attachment] = [];
gun["attachments"][attachment]["itemIndex"] = GetAttachmentTableIndex( attachment );
gun["attachments"][attachment]["rankID"] = TableLookup( gun_levels_table, GUNLEVEL_GUNREF_COL, gun["ref"], GUNLEVEL_ATTACHMENT_UNLOCK_COL, attachment, GUNLEVEL_RANKID_COL );
gun["attachments"][attachment]["xp"] = TableLookup( gun_levels_table, GUNLEVEL_GUNREF_COL, gun["ref"], GUNLEVEL_ATTACHMENT_UNLOCK_COL, attachment, GUNLEVEL_XPGAINED_COL );
}
switch( weapon["group"] )
{
case "weapon_pistol":
if( weapon["reference"] != "weapon_null" )
{
ArrayInsert( a_weapons["pistol"], gun, 0 );
}
break;
case "weapon_launcher":
ArrayInsert( a_weapons["launcher"], gun, 0 );
break;
case "weapon_assault":
ArrayInsert( a_weapons["assault"], gun, 0 );
break;
case "weapon_smg":
ArrayInsert( a_weapons["smg"], gun, 0 );
break;
case "weapon_lmg":
ArrayInsert( a_weapons["lmg"], gun, 0 );
break;
case "weapon_cqb":
ArrayInsert( a_weapons["shotgun"], gun, 0 );
break;
case "weapon_sniper":
ArrayInsert( a_weapons["sniper"], gun, 0 );
break;
case "weapon_knife":
ArrayInsert( a_weapons["knife"], gun, 0 );
break;
default:
break;
}
}
foreach( group_name, gun_group in a_weapons )
{
foreach( gun, attachment_group in gun_group )
{
foreach( attachment, attachment_data in attachment_group["attachments"] )
{
devgui_cmd_gun_path = notif_gun_rank_devgui_base + group_name + "/" + gun_group[gun]["ref"] + "/" + attachment;
AddDebugCommand( devgui_cmd_gun_path + "\" " + "\"" +
";set " + "scr_notif_devgui_gun_lvl_xp" + " " + attachment_data["xp"] +
";set " + "scr_notif_devgui_gun_lvl_attachment_index" + " " + attachment_data["itemIndex"] +
";set " + "scr_notif_devgui_gun_lvl_item_index" + " " + gun_group[gun]["itemIndex"] +
";set " + "scr_notif_devgui_gun_lvl_rank_id" + " " + attachment_data["rankID"] + "\" \n" );
}
}
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
}
level thread notif_devgui_gun_level_think();
}
function notif_devgui_gun_level_think()
{
for( ;; )
{
weapon_item_index = GetDvarInt( "scr_notif_devgui_gun_lvl_item_index" );
if( weapon_item_index == 0 )
{
{wait(.05);};
continue;
}
xp_reward = GetDvarInt( "scr_notif_devgui_gun_lvl_xp" );
attachment_index = GetDvarInt( "scr_notif_devgui_gun_lvl_attachment_index" );
rank_id = GetDvarInt( "scr_notif_devgui_gun_lvl_rank_id" );
level.players[0] persistence::CodeCallback_GunChallengeComplete( xp_reward, attachment_index, weapon_item_index, rank_id );
SetDvar( "scr_notif_devgui_gun_lvl_xp", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_attachment_index", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_item_index", 0 );
SetDvar( "scr_notif_devgui_gun_lvl_rank_id", 0 );
wait( 1 );
}
}
function notif_devgui_challenges()
{
notif_challenges_devgui_base = "devgui_cmd \"UI/Notifications/Challenges/";
for( i = 1; i <= devgui_notif_getChallengesTableCount(); i++ )
{
tableName = devgui_notif_getChallengesTableName(i);
rows = tableLookupRowCount( tableName );
for( j = 1; j < rows; j++ )
{
// only allow valid challenge ids
challengeId = tableLookupColumnForRow( tableName, j, 0 );
if ( challengeId != "" && StrIsInt( tableLookupColumnForRow( tableName, j, 0 ) ) )
{
challengeString = tableLookupColumnForRow( tableName, j, 5 );
type = tableLookupColumnForRow( tableName, j, 3 );
challengeTier = int( tableLookupColumnForRow( tableName, j, 1 ) );
challengeTierString = "" + challengeTier;
if ( challengeTier < 10 )
{
challengeTierString = "0" + challengeTier;
}
name = tableLookupColumnForRow( tableName, j, 5 );
devgui_cmd_challenge_path = notif_challenges_devgui_base + type + "/" + MakeLocalizedString( name ) + "/" + challengeTierString + " - id" + challengeId;
AddDebugCommand( devgui_cmd_challenge_path + "\" " + "\"" +
";set " + "scr_notif_devgui_challenge_row" + " " + j +
";set " + "scr_notif_devgui_challenge_table" + " " + i + "\" \n" );
if ( ( int( challengeId ) % 10 ) == 0 )
{
{wait(.05);}; // so we don't overflow the Cbuf_InsertText()
}
}
}
}
level thread notif_devgui_challenges_think();
}
function notif_devgui_challenges_think()
{
SetDvar( "scr_notif_devgui_challenge_row", 0 );
SetDvar( "scr_notif_devgui_challenge_table", 0 );
for( ;; )
{
row = GetDvarInt( "scr_notif_devgui_challenge_row" );
table = GetDvarInt( "scr_notif_devgui_challenge_table" );
if ( table < 1 || table > devgui_notif_getChallengesTableCount() )
{
{wait(.05);};
continue;
}
tableName = devgui_notif_getChallengesTableName(table);
if ( row < 1 || row > tableLookupRowCount( tableName ) )
{
{wait(.05);};
continue;
}
type = tableLookupColumnForRow( tableName, row, 3 );
itemIndex = 0;
if ( type == "global" )
{
type = 0;
}
else if ( type == "group" )
{
itemIndex = 4; // ITEMGROUP_SNIPER
type = 3;
}
else if ( type == "attachment" )
{
itemIndex = 1; // dual optic
type = 4;
}
else if ( type == "gamemode" )
{
type = 2;
}
else if ( type == "specialist" )
{
type = 5;
}
else
{
itemIndex = 23; // arak
type = 1;
}
xpReward = int( tableLookupColumnForRow( tableName, row, 6 ) );
challengeId = int( tableLookupColumnForRow( tableName, row, 0 ) );
maxValue = int( tableLookupColumnForRow( tableName, row, 2 ) );
level.players[0] persistence::CodeCallback_ChallengeComplete( xpReward, maxValue, row, table-1, type, itemIndex, challengeId );
SetDvar( "scr_notif_devgui_challenge_row", 0 );
SetDvar( "scr_notif_devgui_challenge_table", 0 );
wait( 1 );
}
}
function popupsFromConsole()
{
while (1)
{
timeout = GetDvarFloat( "scr_popuptime", 1.0 );
if ( timeout == 0 )
timeout = 1;
wait (timeout);
medal = GetDvarInt( "scr_popupmedal", 0 );
challenge = GetDvarInt( "scr_popupchallenge", 0 );
rank = GetDvarInt( "scr_popuprank", 0 );
gun = GetDvarInt( "scr_popupgun", 0 );
contractPass = GetDvarInt( "scr_popupcontractpass", 0 ); //sting 01
contractFail = GetDvarInt( "scr_popupcontractfail", 0 ); // Stinger_02
gameModeMsg = GetDvarInt( "scr_gamemodeslideout", 0 );
teamMsg = GetDvarInt( "scr_teamslideout", 0 );
challengeIndex = GetDvarInt( "scr_challengeIndex", 1 );
for ( i = 0 ; i < medal; i++ )
{
level.players[0] medals::CodeCallback_Medal( 86 );
}
for ( i = 0 ; i < challenge; i++ )
{
level.players[0] persistence::CodeCallback_ChallengeComplete( 1000, 10, 19, 0, 0, 0, 18 ); //kill_while_underwater
level.players[0] persistence::CodeCallback_ChallengeComplete( 1000, 1, 21, 0, 0, 0, 20 ); //kill_after_doublejump_out_of_water
//function CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex )
//self LUINotifyEvent( &"challenge_complete", 7, challengeIndex, itemIndex, challengeType, tableNumber, row, maxVal, rewardXP );
//hero weapon kills
rewardXP = 500;
maxVal = 1;
row = 1;
tableNumber = 0;
challengeType = 1;
itemIndex = 111;
challengeIndex = 0;
//level.players[0] persistence::CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex );
//camo unlock
maxVal = 50;
row = 1;
tableNumber = 2;
challengeType = 1;
itemIndex = 20;
challengeIndex = 512;
//level.players[0] persistence::CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex );
//reticle unlock
maxVal = 150;
row = 100;
tableNumber = 2;
challengeType = 4;
itemIndex = 1;
challengeIndex = 611;
level.players[0] persistence::CodeCallback_ChallengeComplete( rewardXP, maxVal, row, tableNumber, challengeType, itemIndex, challengeIndex );
}
for ( i = 0 ; i < rank; i++ )
{
level.players[0] rank::CodeCallback_RankUp( 4, 0, 1 );
}
for ( i = 0 ; i < gun; i++ )
{
level.players[0] persistence::CodeCallback_GunChallengeComplete( 0, 20, 25, 0 );
}
for ( i = 0 ; i < contractPass; i++ )
{
level.players[0] persistence::add_contract_to_queue( 12, 1 );
}
for ( i = 0 ; i < contractFail; i++ )
{
level.players[0] persistence::add_contract_to_queue( 12, 0 );
}
for ( i = 0 ; i < teamMsg; i++ )
{
player = level.players[0];
if ( isdefined ( level.players[1] ) )
player = level.players[1];
level.players[0] DisplayTeamMessageToAll( &"KILLSTREAK_DESTROYED_HELICOPTER", player );
}
reset = GetDvarInt( "scr_popupreset", 1 );
if ( reset )
{
if ( medal )
SetDvar( "scr_popupmedal", 0 );
if ( challenge )
SetDvar( "scr_popupchallenge", 0 );
if ( gun )
SetDvar( "scr_popupgun", 0 );
if ( rank )
SetDvar( "scr_popuprank", 0 );
if ( contractPass )
SetDvar( "scr_popupcontractpass", 0 );
if ( contractFail )
SetDvar( "scr_popupcontractfail", 0 );
if ( gameModeMsg )
SetDvar( "scr_gamemodeslideout", 0 );
if ( teamMsg )
SetDvar( "scr_teamslideout", 0 );
}
}
}
#/
function DisplayKillstreakTeamMessageToAll( killstreak, player )
{
if ( !isdefined ( level.killstreaks[killstreak] ) )
return;
if ( !isdefined ( level.killstreaks[killstreak].inboundText ) )
return;
message = level.killstreaks[killstreak].inboundText;
self DisplayTeamMessageToAll( message, player );
}
function DisplayKillstreakHackedTeamMessageToAll( killstreak, player )
{
if ( !isdefined ( level.killstreaks[killstreak] ) )
return;
if ( !isdefined ( level.killstreaks[killstreak].hackedText ) )
return;
message = level.killstreaks[killstreak].hackedText;
self DisplayTeamMessageToAll( message, player );
}
function shouldDisplayTeamMessages()
{
// level.splitscreen is the local splitscreen mode only
if ( level.hardcoreMode == true || level.splitscreen == true )
return false;
return true;
}
function DisplayTeamMessageToAll( message, player )
{
if ( !shouldDisplayTeamMessages() )
return;
for ( i = 0; i < level.players.size; i++ )
{
cur_player = level.players[i];
if ( cur_player IsEMPJammed() )
continue;
size = cur_player.teamMessageQueue.size;
if ( size >= level.teamMessageQueueMax )
continue;
cur_player.teamMessageQueue[size] = spawnStruct();
cur_player.teamMessageQueue[size].message = message;
cur_player.teamMessageQueue[size].player = player;
cur_player notify ( "received teammessage" );
}
}
function DisplayTeamMessageToTeam( message, player, team )
{
if ( !shouldDisplayTeamMessages() )
return;
for ( i = 0; i < level.players.size; i++ )
{
cur_player = level.players[i];
if ( cur_player.team != team )
continue;
if ( cur_player IsEMPJammed() )
continue;
size = cur_player.teamMessageQueue.size;
if ( size >= level.teamMessageQueueMax )
continue;
cur_player.teamMessageQueue[size] = spawnStruct();
cur_player.teamMessageQueue[size].message = message;
cur_player.teamMessageQueue[size].player = player;
cur_player notify ( "received teammessage" );
}
}
function displayTeamMessageWaiter()
{
if ( !shouldDisplayTeamMessages() )
return;
self endon( "disconnect" );
level endon( "game_ended" );
self.teamMessageQueue = [];
for ( ;; )
{
if ( self.teamMessageQueue.size == 0 )
self waittill( "received teammessage" );
if ( self.teamMessageQueue.size > 0 )
{
nextNotifyData = self.teamMessageQueue[0];
ArrayRemoveIndex( self.teamMessageQueue, 0, false );
if ( !isdefined( nextNotifyData.player ) || !isplayer( nextNotifyData.player ) )
continue;
if ( self IsEMPJammed() )
continue;
self LUINotifyEvent( &"player_callout", 2, nextNotifyData.message, nextNotifyData.player.entnum );
}
wait ( level.teamMessage.waittime );
}
}
function displayPopUpsWaiter()
{
self endon( "disconnect" );
self.rankNotifyQueue = [];
if ( !isdefined( self.pers["challengeNotifyQueue"] ) )
{
self.pers["challengeNotifyQueue"] = [];
}
if ( !isdefined( self.pers["contractNotifyQueue"] ) )
{
self.pers["contractNotifyQueue"] = [];
}
self.messageNotifyQueue = [];
self.startMessageNotifyQueue = [];
self.wagerNotifyQueue = [];
while( isdefined( level ) && isdefined( level.gameEnded ) && !level.gameEnded )
{
if ( !isdefined( self ) || !isdefined( self.startMessageNotifyQueue ) || !isdefined( self.messageNotifyQueue ) )
break;
if ( self.startMessageNotifyQueue.size == 0 && self.messageNotifyQueue.size == 0 )
self waittill( "received award" );
waittillframeend;
if ( !isdefined( level ) )
break;
if ( !isdefined( level.gameEnded ) )
break;
if ( level.gameEnded )
break;
if ( self.startMessageNotifyQueue.size > 0 )
{
nextNotifyData = self.startMessageNotifyQueue[0];
ArrayRemoveIndex( self.startMessageNotifyQueue, 0, false );
if ( isdefined( nextNotifyData.duration ) )
duration = nextNotifyData.duration;
else
duration = level.startMessageDefaultDuration;
self hud_message::showNotifyMessage( nextNotifyData, duration );
wait ( duration );
}
else if ( self.messageNotifyQueue.size > 0 )
{
nextNotifyData = self.messageNotifyQueue[0];
ArrayRemoveIndex( self.messageNotifyQueue, 0, false );
if ( isdefined( nextNotifyData.duration ) )
duration = nextNotifyData.duration;
else
duration = level.regularGameMessages.waittime;
self hud_message::showNotifyMessage( nextNotifyData, duration );
}
else
{
//assertmsg( "displayPopUpsWaiter not handling case" );
wait( 1 );
}
}
}
//displayEndGamePopUps()
//{
// self.postGamePromotion = false;
// self.postGameMilestones = 0;
// self.postGameContracts = 0;
// promoted = 0;
// contract0 = -1;
// contract1 = -1;
// contract2 = -1;
// sendMessage = false;
//
// // This is to display end of game notifications, this will show in the endgame menu after the final kill cam
// if ( self.rankNotifyQueue.size > 0 )
// {
// self.postGamePromotion = true;
// promoted = 1; // endgame promotion
// sendMessage = true;
// }
//
// if ( self.pers["contractNotifyQueue"].size > 0 )
// {
// for( i = 0; i < self.pers["contractNotifyQueue"].size; i++ )
// {
// if ( self.pers["contractNotifyQueue"][0]["passed"] == false )
// {
// for ( i = 1; i < self.pers["contractNotifyQueue"].size; i++ )
// self.pers["contractNotifyQueue"][i-1] = self.pers["contractNotifyQueue"][i];
//
// self.pers["contractNotifyQueue"][i-1] = undefined;
// }
// }
//
// self.postGameContracts = self.pers["contractNotifyQueue"].size;
// if ( isdefined( self.pers["contractNotifyQueue"].size > 0 ) )
// {
// if ( isdefined (self.pers["contractNotifyQueue"][0] ) )
// {
// contract0 = self.pers["contractNotifyQueue"][0]["index"];
// sendMessage = true;
// }
// }
// if ( isdefined( self.pers["contractNotifyQueue"].size > 1 ) )
// {
// if ( isdefined (self.pers["contractNotifyQueue"][1] ) )
// {
// contract1 = self.pers["contractNotifyQueue"][1]["index"];
// sendMessage = true;
// }
// }
// if ( isdefined( self.pers["contractNotifyQueue"].size > 2 ) )
// {
// if ( isdefined (self.pers["contractNotifyQueue"][2] ) )
// {
// contract2 = self.pers["contractNotifyQueue"][2]["index"];
// sendMessage = true;
// }
// }
// }
//
// for ( challengeNotifyCount = 0; challengeNotifyCount < self.pers["challengeNotifyQueue"].size && challengeNotifyCount < 3; challengeNotifyCount++ )
// {
// self.postGameMilestones++;
// tier = self.pers["challengeNotifyQueue"][challengeNotifyCount]["tier"];
// index = self.pers["challengeNotifyQueue"][challengeNotifyCount]["index"];
// itemIndex = self.pers["challengeNotifyQueue"][challengeNotifyCount]["itemIndex"];
// type = self.pers["challengeNotifyQueue"][challengeNotifyCount]["type"];
// self DisplayEndGameMilestone( challengeNotifyCount, tier, index, itemIndex, type );
// }
//}
function milestoneNotify( index, itemIndex, type, tier )
{
level.globalChallenges++;
if ( !isdefined( type ) )
{
type = "global";
}
size = self.pers["challengeNotifyQueue"].size;
self.pers["challengeNotifyQueue"][size] = [];
self.pers["challengeNotifyQueue"][size]["tier"] = tier;
self.pers["challengeNotifyQueue"][size]["index"] = index;
self.pers["challengeNotifyQueue"][size]["itemIndex"] = itemIndex;
self.pers["challengeNotifyQueue"][size]["type"] = type;
self notify( "received award" );
}