182 lines
4.4 KiB
C#
Executable File
182 lines
4.4 KiB
C#
Executable File
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
// Copyright (C) GarageGames.com, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// MainMenuGui is the main Control through which the game shell is viewed.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
function MainMenuGui::onWake(%this)
|
|
{
|
|
%this.pushThread(main_menu_thread);
|
|
BottomDesc.setVisible(false);
|
|
}
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::getThread(%this)
|
|
{
|
|
%top = menu_thread_stack.getCount();
|
|
if (%top > 0)
|
|
return menu_thread_stack.getObject(%top-1);
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::popCurrent(%this)
|
|
{
|
|
if (%thread = %this.getThread())
|
|
{
|
|
Canvas.popDialog(%thread.getObject(%thread.page));
|
|
echo ("POP Current: " @ %thread.getName() @ " page: " @ %thread.page);
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::pushThread(%this, %thread)
|
|
{
|
|
echo ("PushThread: " @ %thread.getname());
|
|
|
|
%this.popCurrent();
|
|
%thread.page = 0;
|
|
menu_thread_stack.add(%thread);
|
|
%this.update();
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::popThread(%this)
|
|
{
|
|
if (%thread = %this.getThread())
|
|
{
|
|
echo ("PopThread: " @ %thread.getname());
|
|
|
|
%this.popCurrent();
|
|
menu_thread_stack.remove(%thread);
|
|
%this.update();
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::isNextPage(%this)
|
|
{
|
|
if ( !(%thread = %this.getThread()) )
|
|
return false;
|
|
echo ("isNext: " @ %thread.page @ " - " @ %thread.getCount());
|
|
return %thread.page < (%thread.getCount() - 1);
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::isPrevPage(%this)
|
|
{
|
|
if ( !(%thread = %this.getThread()) )
|
|
return false;
|
|
return %thread.page > 0;
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::isPrevThread(%this)
|
|
{
|
|
return menu_thread_stack.getCount() > 1;
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::nextPage(%this)
|
|
{
|
|
if (%this.isNextPage())
|
|
{
|
|
%this.popCurrent();
|
|
%thread = %this.getThread();
|
|
%thread.page = (%thread.page+1);
|
|
%this.update();
|
|
}
|
|
else
|
|
%this.popThread();
|
|
}
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::prevPage(%this)
|
|
{
|
|
if (%this.isPrevPage())
|
|
{
|
|
%this.popCurrent();
|
|
%thread = %this.getThread();
|
|
%thread.page = (%thread.page-1);
|
|
%this.update();
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::update(%this)
|
|
{
|
|
if (Canvas.getContent().getName() $= "GuiEditorGui")
|
|
{
|
|
%this.popCurrent();
|
|
Canvas.popdialog(OverlayDlg);
|
|
return;
|
|
}
|
|
|
|
if (%thread = %this.getThread())
|
|
{
|
|
echo ("Update: " @ %thread.getName() @ " page: " @ %thread.page);
|
|
%page = %thread.getObject(%thread.page);
|
|
|
|
// Setup default overlay buttons
|
|
OverlayTitle.setVisible(false);
|
|
OverlayTitle2.setVisible(true);
|
|
OverlayTitle2.setText("<just:left><color:000000>" @ %page.title);
|
|
OverlayDesc.setText("");
|
|
|
|
OverlayNextPage.setVisible(%this.isNextPage() || (%this.isPrevPage() && %this.isPrevThread()));
|
|
OverlayNextPage.command = "MainMenuGui.nextPage();";
|
|
|
|
OverlayPrevPage.setVisible(%this.isPrevPage());
|
|
OverlayPrevPage.command = "MainMenuGui.prevPage();";
|
|
|
|
if (!%this.isPrevPage())
|
|
{
|
|
if (%this.isPrevThread())
|
|
{
|
|
OverlayPrevPage.setVisible(true);
|
|
OverlayPrevPage.command = "MainMenuGui.popThread();";
|
|
}
|
|
}
|
|
|
|
// Push the current page
|
|
Canvas.pushDialog(%page);
|
|
|
|
// make sure The Overlay is on top
|
|
Canvas.popdialog(OverlayDlg);
|
|
Canvas.pushdialog(OverlayDlg);
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::onSleep(%this)
|
|
{
|
|
}
|
|
|
|
//-------------------------------------
|
|
function MainMenuGui::goHome(%this)
|
|
{
|
|
disconnect();
|
|
if (Canvas.getContent() != %this.getId())
|
|
Canvas.pushDialog(%this);
|
|
else {
|
|
while (%this.isPrevThread())
|
|
%this.popThread();
|
|
}
|
|
}
|
|
|
|
|
|
|