Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Nov 2012
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Exclamation Help with mainmenu.js

    Hi! When I was compiling a program, I got the error message for a file called mainmenu.js and I don't know javascript that well. The error is on line 223 (It's highlighted in red) . I need a solution fast! Thanks!

    btw, this is my first post

    this is the code:
    -------------------------------------------

    var userReportEnabledText; // contains the original version with "$status" placeholder
    var currentSubmenuType; // contains submenu type
    const MARGIN = 4; // menu border size
    const background = "hellenes1"; // Background type. Currently: 'hellenes1', 'persians1'.

    function init(initData)
    {
    initMusic();

    // Play main menu music
    global.music.setState(global.music.states.MENU);

    userReportEnabledText = getGUIObjectByName("userReportEnabledText").caption;

    // initialize currentSubmenuType with placeholder to avoid null when switching
    currentSubmenuType = "submenuSinglePlayer";

    EnableUserReport(Engine.IsUserReportEnabled());

    // Only show splash screen once
    if (initData && initData.isStartup && Engine.IsSplashScreenEnabled())
    Engine.PushGuiPage("page_splashscreen.xml", { "page": "splashscreen" } );
    }

    var t0 = new Date;
    function scrollBackgrounds(background)
    {
    if (background == "hellenes1")
    {
    var layer1 = getGUIObjectByName("backgroundHele1-1");
    var layer2 = getGUIObjectByName("backgroundHele1-2");
    var layer3 = getGUIObjectByName("backgroundHele1-3");

    layer1.hidden = false;
    layer2.hidden = false;
    layer3.hidden = false;

    var screen = layer1.parent.getComputedSize();
    var h = screen.bottom - screen.top; // height of screen
    var w = h*16/9; // width of background image

    // Offset the layers by oscillating amounts
    var t = (t0 - new Date) / 700;
    var speed = 1/20;
    var off1 = 0.02 * w * (1+Math.cos(t*speed));
    var off2 = 0.12 * w * (1+Math.cos(t*speed)) - h*6/9;
    var off3 = 0.16 * w * (1+Math.cos(t*speed));

    var left = screen.right - w * (1 + Math.ceil(screen.right / w));
    layer1.size = new GUISize(left + off1, screen.top, screen.right + off1, screen.bottom);
    layer2.size = new GUISize(screen.right/2 - h + off2, screen.top, screen.right/2 + h + off2, screen.bottom);
    layer3.size = new GUISize(screen.right - h + off3, screen.top, screen.right + off3, screen.bottom);
    }

    if (background == "persians1")
    {
    var layer1 = getGUIObjectByName("backgroundPers1-1");
    var layer2 = getGUIObjectByName("backgroundPers1-2");
    var layer3 = getGUIObjectByName("backgroundPers1-3");
    var layer4 = getGUIObjectByName("backgroundPers1-4");

    layer1.hidden = false;
    layer2.hidden = false;
    layer3.hidden = false;
    layer4.hidden = false;

    var screen = layer1.parent.getComputedSize();
    var h = screen.bottom - screen.top; // height of screen
    var screenWidth = screen.right - screen.left;
    var w = h*16/9;

    var t = (t0 - new Date) / 1000;
    var speed = 1/20;
    var off1 = 0.01 * w * (Math.cos(t*speed));
    var off2 = 0.03 * w * (Math.cos(t*speed));
    var off3 = 0.07 * w * (1+Math.cos(t*speed)) + 0.5 * screenWidth - h*1.1;
    var off4 = 0.16 * w * (1+Math.cos(t*speed)) - h*6/9;

    var left = screen.right - w * (1 + Math.ceil(screen.right / w)) - 0.5 * screenWidth + h;
    layer1.size = new GUISize(left + off1, screen.top, screen.right + off1 + h, screen.bottom);
    layer2.size = new GUISize(left + off2, screen.top, screen.right + off2 + h, screen.bottom);
    layer3.size = new GUISize(screen.left + off3, screen.top, screen.left + 2 * h + off3, screen.bottom);
    layer4.size = new GUISize(screen.left + off4, screen.top, screen.left + 2 * h + off4, screen.bottom);
    }
    }

    function submitUserReportMessage()
    {
    var input = getGUIObjectByName("userReportMessageInput");
    var msg = input.caption;
    if (msg.length)
    Engine.SubmitUserReport("message", 1, msg);
    input.caption = "";
    }

    function formatUserReportStatus(status)
    {
    var d = status.split(/:/, 3);

    if (d[0] == "disabled")
    return "disabled";

    if (d[0] == "connecting")
    return "connecting to server";

    if (d[0] == "sending")
    {
    var done = d[1];
    return "uploading (" + Math.floor(100*done) + "%)";
    }

    if (d[0] == "completed")
    {
    var httpCode = d[1];
    if (httpCode == 200)
    return "upload succeeded";
    else
    return "upload failed (" + httpCode + ")";
    }

    if (d[0] == "failed")
    {
    var errCode = d[1];
    var errMessage = d[2];
    return "upload failed (" + errMessage + ")";
    }

    return "unknown";
    }

    var lastTickTime = new Date;
    function onTick()
    {
    var now = new Date;
    var tickLength = new Date - lastTickTime;
    lastTickTime = now;

    // Animate backgrounds
    scrollBackgrounds(background);

    // Animate submenu
    updateMenuPosition(tickLength);

    // Update music state
    global.music.updateTimer();

    if (Engine.IsUserReportEnabled())
    {
    getGUIObjectByName("userReportEnabledText").caption =
    userReportEnabledText.replace(/\$status/,
    formatUserReportStatus(Engine.GetUserReportStatus()));
    }
    }

    function EnableUserReport(Enabled)
    {
    getGUIObjectByName("userReportDisabled").hidden = Enabled;
    getGUIObjectByName("userReportEnabled").hidden = !Enabled;
    Engine.SetUserReportEnabled(Enabled);
    }


    /*
    * MENU FUNCTIONS
    */

    // Temporarily adding this here
    //const BUTTON_SOUND = "audio/interface/ui/ui_button_longclick.ogg";
    //function playButtonSound()
    //{
    // var buttonSound = new Sound(BUTTON_SOUND);
    // buttonSound.play();
    //}

    // Slide menu
    function updateMenuPosition(dt)
    {
    var submenu = getGUIObjectByName("submenu");

    if (submenu.hidden == false)
    {
    // Number of pixels per millisecond to move
    const SPEED = 1.2;

    var maxOffset = getGUIObjectByName("mainMenu").size.right - submenu.size.left;
    if (maxOffset > 0)
    {
    var offset = Math.min(SPEED * dt, maxOffset);
    var size = submenu.size;
    size.left += offset;
    size.right += offset;
    submenu.size = size;
    }
    }
    }

    // Opens the menu by revealing the screen which contains the menu
    function openMenu(newSubmenu, position, buttonHeight, numButtons)
    {
    // switch to new submenu type
    currentSubmenuType = newSubmenu;
    getGUIObjectByName(currentSubmenuType).hidden = false;

    // set position of new submenu
    var submenu = getGUIObjectByName("submenu");
    var top = position - MARGIN;
    var bottom = position + ((buttonHeight + MARGIN) * numButtons);
    submenu.size = submenu.size.left + " " + top + " " + submenu.size.right + " " + bottom;

    // Blend in right border of main menu into the left border of the submenu
    blendSubmenuIntoMain(top, bottom);

    // Reveal submenu
    getGUIObjectByName("submenu").hidden = false;
    }

    // Closes the menu and resets position
    function closeMenu()
    {
    // playButtonSound();

    // remove old submenu type
    getGUIObjectByName(currentSubmenuType).hidden = true;

    // hide submenu and reset position
    var submenu = getGUIObjectByName("submenu");
    submenu.hidden = true;
    submenu.size = getGUIObjectByName("mainMenu").size;

    // reset main menu panel right border
    getGUIObjectByName("MainMenuPanelRightBorderTop").size = "100%-2 0 100% 100%";
    }

    // Sizes right border on main menu panel to match the submenu
    function blendSubmenuIntoMain(topPosition, bottomPosition)
    {
    var topSprite = getGUIObjectByName("MainMenuPanelRightBorderTop");
    topSprite.size = "100%-2 0 100% " + (topPosition + MARGIN);

    var bottomSprite = getGUIObjectByName("MainMenuPanelRightBorderBottom");
    bottomSprite.size = "100%-2 " + (bottomPosition) + " 100% 100%";
    }

    /*
    * FUNCTIONS BELOW DO NOT WORK YET
    */

    //// Switch to a given options tab window.
    //function openOptionsTab(tabName)
    //{
    // // Hide the other tabs.
    // for (i = 1; i <= 3; i++)
    // {
    // switch (i)
    // {
    // case 1:
    // var tmpName = "pgOptionsAudio";
    // break;
    // case 2:
    // var tmpName = "pgOptionsVideo";
    // break;
    // case 3:
    // var tmpName = "pgOptionsGame";
    // break;
    // default:
    // break;
    // }
    //
    // if (tmpName != tabName)
    // {
    // getGUIObjectByName (tmpName + "Window").hidden = true;
    // getGUIObjectByName (tmpName + "Button").enabled = true;
    // }
    // }
    //
    // // Make given tab visible.
    // getGUIObjectByName (tabName + "Window").hidden = false;
    // getGUIObjectByName (tabName + "Button").enabled = false;
    //}
    //
    //// Move the credits up the screen.
    //function updateCredits()
    //{
    // // If there are still credit lines to remove, remove them.
    // if (getNumItems("pgCredits") > 0)
    // removeItem ("pgCredits", 0);
    // else
    // {
    // // When we've run out of credit,
    //
    // // Stop the increment timer if it's still active.
    // cancelInterval();
    //
    // // Close the credits screen and return.
    // closeMainMenuSubWindow ("pgCredits");
    // guiUnHide ("pg");
    // }
    //}

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,831
    Thanks
    78
    Thanked 4,413 Times in 4,378 Posts
    Can't tell.

    You don't show the code for getGUIObjectByName( ) function.

    I think it must exist because it is called all over the place, but it's not in that code.

    A better way to show this to us is give us a LIVE URL to look at.

    Often just seeing the code out of context shows us nothing useful.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #3
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    18,079
    Thanks
    203
    Thanked 2,542 Times in 2,520 Posts
    Odd - the script seems happy with previous lines

    currentSubmenuType = newSubmenu;
    getGUIObjectByName(currentSubmenuType).hidden = false;

    Try putting in an alert to inspect the value of currentSubmenuType


    It is your responsibility to die() if necessary….. - PHP Manual

    All the code given in this post has been tested and is intended to address the question asked.
    Unless stated otherwise it is not just a demonstration.


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •