tge/example/demo/client/scripts/mainMenuGui.cs
2017-04-17 06:17:10 -06:00

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();
}
}