PDA

View Full Version : How to put list items in a Tab-4 menu



Salmo
Nov-09-2013, 06:09
I have a string list (List<string> menu) containing information for radar contacts & I want to put up to the first 9 elements of the list into a Tab-4 custom menu (see SetAircraftContacts routine below). No matter how I change things around, I continue to get a "null object object not set to instance of an object" error in the console window & the menu does not show up. Clearly, I've got some syntax wrong, can anyone offer suggestions?



public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex)
{
base.OnOrderMissionMenuSelected(player, ID, menuItemIndex);

if (player != null)
{
switch (ID)
#region TAB-4 main menu
{
case 0: // MAIN MENU
switch (menuItemIndex)
{
case 1:
setSubMenu1(player); // ground control
break;
case 2:
setBattleStats(player); // battle status
break;
case 3:
//setSubMenu3(player);
break;
case 0:
setMainMenu(player);
break;
}
break;
#endregion

#region MAIN MENU OPTION 1
case 2: // MAIN MENU OPTION 1 - Ground control
switch (menuItemIndex)
{
case 1: // weather report
ShowWeatherReport(player);
setMainMenu(player);
break;
case 2: // Blue vector to nearest bomber group for escort
ShowNearestBlueBombers(player);
setMainMenu(player);
break;
case 3: // request escort
ShowRequestEscort(player);
//SetRadarContacts(player);
setMainMenu(player);
break;
case 4:
SetAircraftContacts(player);
break;
case 0:
setMainMenu(player);
break;
}
break;

#endregion

#region MAIN MENU OPTION 2
case 3: // MAIN MENU OPTION 2 - Battle status
switch (menuItemIndex)
{
case 1: // personal stats
ShowPersonalStatistics(player);
setMainMenu(player);
break;

case 2: // Number of players
ShowNumberOfPlayers(player);
setMainMenu(player);
break;

case 3: // aircraft lossess
ShowAircraftLosses(player);
setMainMenu(player);
break;

case 4: // aircrew lossess
ShowAircrewLosses(player);
setMainMenu(player);
break;

case 5:
ShowMissionObjectives(player);
setMainMenu(player);
break;
case 0:
setMainMenu(player);
break;
}
break;

#region radar menu
case 4: // radar menu
switch (menuItemIndex)
{
case 1: //
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
//SetAircraftContacts(player);
//break;
case 0:
setMainMenu(player);
break;
}
break;

#endregion

#endregion

}

}
}

private void setMainMenu(Player player)
{
GamePlay.gpSetOrderMissionMenu(player, false, 0, new string[] { "Ground control", "Battle Statistics" }, new bool[] { true, true });
}

private void setSubMenu1(Player player)
{
// show nearest bomber
string bomberprompt = null;
//PrepareContactsList(1);
if (player.Army() == 1) bomberprompt = "Request LW bomber contacts";
if (player.Army() == 2) bomberprompt = "LW bombers needing escort";

// call for escort prompt
string escortprompt = null;
AiActor aiActor = player.Place();
AiAircraft aircraft = aiActor as AiAircraft;
if (aircraft != null && player.Army() == 2 && IsBomber(aircraft)) escortprompt = "Request bomber escort";

GamePlay.gpSetOrderMissionMenu(player, true, 2, new string[]
{
"Weather report",
bomberprompt,
escortprompt,
"List contacts"

}, new bool[] { true, true, true, true });

}

public void SetAircraftContacts(Player player)
{
List<string> menu = null;
if (RadarContactMenuRed.Count > 0)
{
foreach (var pair in RadarContactMenuRed)
{
menu.Add(pair.Value);
}
}
else
{
menu.Add("No contacts ... ");
}

while (menu.Count < 9) menu.Add("");
GamePlay.gpSetOrderMissionMenu(player, true, 4, new string[]
{
menu[0],
menu[1],
menu[2],
menu[3],
menu[4],
menu[5],
menu[6],
menu[7],
menu[8]

}, new bool[] { true, true, true, true, true, true, true, true, true });
}

Salmo
Nov-12-2013, 15:08
Anyone?


I have a string list (List<string> menu) containing information for radar contacts & I want to put up to the first 9 elements of the list into a Tab-4 custom menu (see SetAircraftContacts routine below). No matter how I change things around, I continue to get a "null object object not set to instance of an object" error in the console window & the menu does not show up. Clearly, I've got some syntax wrong, can anyone offer suggestions?



public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex)
{
base.OnOrderMissionMenuSelected(player, ID, menuItemIndex);

if (player != null)
{
switch (ID)
#region TAB-4 main menu
{
case 0: // MAIN MENU
switch (menuItemIndex)
{
case 1:
setSubMenu1(player); // ground control
break;
case 2:
setBattleStats(player); // battle status
break;
case 3:
//setSubMenu3(player);
break;
case 0:
setMainMenu(player);
break;
}
break;
#endregion

#region MAIN MENU OPTION 1
case 2: // MAIN MENU OPTION 1 - Ground control
switch (menuItemIndex)
{
case 1: // weather report
ShowWeatherReport(player);
setMainMenu(player);
break;
case 2: // Blue vector to nearest bomber group for escort
ShowNearestBlueBombers(player);
setMainMenu(player);
break;
case 3: // request escort
ShowRequestEscort(player);
//SetRadarContacts(player);
setMainMenu(player);
break;
case 4:
SetAircraftContacts(player);
break;
case 0:
setMainMenu(player);
break;
}
break;

#endregion

#region MAIN MENU OPTION 2
case 3: // MAIN MENU OPTION 2 - Battle status
switch (menuItemIndex)
{
case 1: // personal stats
ShowPersonalStatistics(player);
setMainMenu(player);
break;

case 2: // Number of players
ShowNumberOfPlayers(player);
setMainMenu(player);
break;

case 3: // aircraft lossess
ShowAircraftLosses(player);
setMainMenu(player);
break;

case 4: // aircrew lossess
ShowAircrewLosses(player);
setMainMenu(player);
break;

case 5:
ShowMissionObjectives(player);
setMainMenu(player);
break;
case 0:
setMainMenu(player);
break;
}
break;

#region radar menu
case 4: // radar menu
switch (menuItemIndex)
{
case 1: //
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
//SetAircraftContacts(player);
//break;
case 0:
setMainMenu(player);
break;
}
break;

#endregion

#endregion

}

}
}

private void setMainMenu(Player player)
{
GamePlay.gpSetOrderMissionMenu(player, false, 0, new string[] { "Ground control", "Battle Statistics" }, new bool[] { true, true });
}

private void setSubMenu1(Player player)
{
// show nearest bomber
string bomberprompt = null;
//PrepareContactsList(1);
if (player.Army() == 1) bomberprompt = "Request LW bomber contacts";
if (player.Army() == 2) bomberprompt = "LW bombers needing escort";

// call for escort prompt
string escortprompt = null;
AiActor aiActor = player.Place();
AiAircraft aircraft = aiActor as AiAircraft;
if (aircraft != null && player.Army() == 2 && IsBomber(aircraft)) escortprompt = "Request bomber escort";

GamePlay.gpSetOrderMissionMenu(player, true, 2, new string[]
{
"Weather report",
bomberprompt,
escortprompt,
"List contacts"

}, new bool[] { true, true, true, true });

}

public void SetAircraftContacts(Player player)
{
List<string> menu = null;
if (RadarContactMenuRed.Count > 0)
{
foreach (var pair in RadarContactMenuRed)
{
menu.Add(pair.Value);
}
}
else
{
menu.Add("No contacts ... ");
}

while (menu.Count < 9) menu.Add("");
GamePlay.gpSetOrderMissionMenu(player, true, 4, new string[]
{
menu[0],
menu[1],
menu[2],
menu[3],
menu[4],
menu[5],
menu[6],
menu[7],
menu[8]

}, new bool[] { true, true, true, true, true, true, true, true, true });
}