Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   FMB, Mission & Campaign builder Discussions (http://forum.fulqrumpublishing.com/forumdisplay.php?f=203)
-   -   Mission menu (http://forum.fulqrumpublishing.com/showthread.php?t=32667)

moggel 06-15-2012 09:03 AM

Mission menu
 
Hi again,

I'm currently fiddling with the mission menu and most if what I need works fine but I have a couple of questions:

1. Is there a way to "persist" a player's menu state?
2. How do I close the menu (from code)?

Guess the first question needs some explaining: If I call the gpSetOrderMissionMenu() method the whole menu seems to be replaced. I assume I'd need to make sure any state related to the pilot needs to be tracked by my own script but, before I spend time writing that code, is there any support for this built in?

The seconds question is hopefully a bit clearer: When the pilot selects one of the options I've presented to him/her the menu should disappear. I've tried sending in empty arrays and null values to the gpSetOrderMissionMenu() method but that actually makes the whole sim take a dive.

Thanks,
Mog

moggel 06-16-2012 02:40 PM

Hm. No replies in two days? Guess I need to try and figure this out myself then ... ;)

hc_wolf 06-16-2012 11:59 PM

Some of us just busy. Many have decided not to read this forum till the patch comes.

salmo 06-17-2012 12:13 AM

Construct a pilot-specific mission menu using SetMainMenu & OnOrderMissionMenuSelected calls. Here's an example:

Code:

public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex)
    #region custom menu actions
    {
        if (ID == 0)    // main menu
        {

        }

        if (ID == 2)    // blue army mission menu
        {
            switch (menuItemIndex)
            {
                case 0:
                    SetMainMenu(player);
                    break;
                case 1: // Spawn Ju87 flight to Dover
                    BlueMissionTimer.Restart();
                    NextBlueMission = m_random.Next(20, 25 + 1);
                    // blue missions
                    switch (m_random.Next(1, 2 + 1))
                    {
                        case 1: // stuka staffel
                            #region stuka staffel
                            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/Ju87_a.mis");
                            sendScreenMessageTo(2, "Stuka staffel activated", null);
                            break;
                            #endregion
                        case 2: //stuka staffel
                            #region Stuka staffel
                            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/Ju87_c.mis");
                            sendScreenMessageTo(2, "Stuka staffel activated", null);
                            break;
                            #endregion
                        default: // stuka staffel
                            #region Stuka staffel
                            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/Ju87_c.mis");
                            sendScreenMessageTo(2, "Stuka staffel activated", null);
                            break;
                            #endregion
                    }
                    sayMessageTo(2, "Stukas");
                    sayMessageTo(2, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'Spawn Ju87 flight to Dover' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                case 2:
                    #region Heinkel staffel
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/Heinkels_c.mis");
                    sendScreenMessageTo(2, "Heinkel staffel activated", null);
                    sayMessageTo(2, "Heinkel");
                    sayMessageTo(2, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'Heinkel staffel' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                    #endregion
                case 3: // Spawn Ju87 flight to Hawkinge
                    #region Stuka staffel
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/Ju87_hawkinge.mis");
                    sendScreenMessageTo(2, "Stuka staffel activated", null);
                    sayMessageTo(2, "Stukas");
                    sayMessageTo(2, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'Spawn Ju87 flight to Hawkinge' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                    #endregion
                case 4: // FW200 recon Dover & Ramsgate
                    #region FW200 recon
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/FW200_recon.mis");
                    sendScreenMessageTo(2, "FW200 Condor reconnaissance flight activated", null);
                    sayMessageTo(2, "Condor");
                    sayMessageTo(2, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'FW200 recon Dover & Ramsgate' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                    #endregion
                case 5: // Dorniers bomb Manston airfield
                    #region Dorniers bomb Manston airfield
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/blue/Do17_Manston.mis");
                    sendScreenMessageTo(2, "Dornier staffel activated", null);
                    sayMessageTo(2, "Dornier");
                    sayMessageTo(2, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'Dorniers bomb Manston airfield' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                    #endregion
                case 6:
                    PrintIndexAndKeysAndValues(KilledAircraft);

                    break;
                default:

                    break;
            }
        }

        if (ID == 1)    // red army mission menu
        {
            switch (menuItemIndex)
            {
                case 1: // spawn hurricane squadron
                    RedMissionTimer.Restart();
                    NextRedMission = m_random.Next(20, 25 + 1);
                    switch (m_random.Next(1, 2 + 1))
                    {
                        case 1: // hurricane squadron
                            #region hurricane squadron
                        GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/red/hurricane_a.mis");
                        sendScreenMessageTo(1, "Hurricane squadron activated", null);
                       

                        //                    sayMessageTo(1, "Prepare_For_Takeoff");
                        //                    //sayMessageTo(1, "Dover_Control_this_is_Villa_Leader_We_are_taking_off_to_intercept_now");
                        //                    Timeout(5, () =>      // wait 5 seconds
                        //                    {
                        //                        sayMessageTo(1, "Prepare_For_Takeoff");
                        //                        //sayMessageTo(1, "Understood_Villa_Leader_Hostiles_continue_approaching_your_sector");
                        //                    }
                        //                    );

                        break;
                        #endregion
                        case 2: // hurricane squadron
                            #region hurricane squadron
                            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/red/hurricane_b.mis");
                            sendScreenMessageTo(1, "Hurricane squadron activated", null);
                            break;
                            #endregion
                        default: // hurricane squadron
                            #region hurricane squadron
                            GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/red/hurricane_b.mis");
                            sendScreenMessageTo(1, "Hurricane squadron activated", null);
                            break;
                    }
                        #endregion
                    //GamePlay.gpPostMissionLoad(CreateAIHurricaneFlight(player));
                    sayMessageTo(1, "Hurricane");
                    sayMessageTo(1, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'hurricane squadron' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                case 2: // send bombers to Calais France
                    #region Blenheim squadron
                    GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/aus3/red/Blenheim_Mk1.mis");
                    sendScreenMessageTo(1, "Blenheim squadron activated at Canterbury", null);
                    sayMessageTo(1, "Blenheims");
                    sayMessageTo(1, "Takeoff");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write(player.Name() + " ordered 'send bombers to Calais France' flight (OnOrderMissionMenuSelected)" + "\r\n");
                    Console.ResetColor();
                    Timeout(15 * 60, () =>      // reset menu in 15 minutes
                    {
                        SetMainMenu(player);
                    }
                    );
                    break;
                    #endregion
                case 3:
                    PrintIndexAndKeysAndValues(KilledAircraft);

                    break;
                case 4:
                    PrintIndexAndKeysAndValues(KilledAircraft);

                    break;
                case 5: // number of red AI planes in battle
                    {
                        AiAircraft a = player as AiAircraft;
                        if (a != null)
                        {
                            sendScreenMessageToPilot(a, " red aircraft in the battle", null);
                        }
                        break;
                    }

                case 0:
                    SetMainMenu(player);
                    break;
                default:
                    SetMainMenu(player);
                    break;
            }
        }
    }
    #endregion

    public void SetMainMenu(Player player)
    #region create custom menu for player
    {
        if (player.Army() == 2) // blue side
            GamePlay.gpSetOrderMissionMenu(player, true, 2, new string[]
            {
                "Order Ju87 staffel to bomb Dover",
                "Order Heinkel staffel to bomb Dover",
                "Order Ju87 staffel to bomb Hawkinge airfield",
                "Order FW200 to recon Dover & Ramsgate",
                "Order Dorniers to bomb Marston airfield",
                "."
            }, new bool[] { true, true, true, true, true, true });
        else  // red side
            GamePlay.gpSetOrderMissionMenu(player, true, 1, new string[]
            {
                "Order hurricane sqdn to patrol Dover",
                "Order blenheim sqdn to bomb Calais",
                "."
                //"Show number of allied planes in battle"
            },
                new bool[] { true, true, true });
       
    }
    #endregion


FG28_Kodiak 06-17-2012 03:48 AM

to 2: seems not possible, i am found no trick to do that, also. But feel free to correct me. ;)


All times are GMT. The time now is 01:33 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.