2017-04-17 06:17:10 -06:00

135 lines
3.3 KiB
C#
Executable File

//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// PageGui is the main TSControl through which the game is viewed.
// The PageGui also contains the hud controls.
//-----------------------------------------------------------------------------
function PageGui::onWake(%this)
{
%this.pageNumber = 0;
}
function PageGui::onSleep(%this)
{
}
function PageGui::pageName(%this, %index)
{
if (%index $= "")
{
%index = %this.pageNumber;
echo ("PAGE: " @ %this.pageNumber);
}
return %this.thread @ "_page" @ %index;
}
function PageGui::isNextPage(%this)
{
for (%num = %this.pageNumber + 1; !isObject(%this.pageName(%num)); %num += 1)
if (%num > 100)
return false;
return true;
}
function PageGui::isPrevPage(%this)
{
for (%num = %this.pageNumber - 1; !isObject(%this.pageName(%num)); %num -= 1)
if (%num < 0)
return false;
return true;
}
function PageGui::pushThread(%this, %thread)
{
if (%this.thread !$= "" )
%this.threadStack = %this.thread @ " " @ %this.pageNUmber @ " " @ %this.threadStack;
%this.popPage();
%this.thread = %thread;
%this.pushPage(1);
%this.status();
}
function PageGui::popThread(%this)
{
if (%this.threadStack !$= "" )
{
%this.popPage();
%this.thread = firstWord(%this.threadStack);
%this.threadStack = removeWord(%this.threadStack, 0);
%this.pageNumber = firstWord(%this.threadStack);
%this.threadStack = removeWord(%this.threadStack, 0);
}
else
%this.thread = "";
%this.status();
}
function PageGui::status(%this)
{
echo ("----------------------");
echo ("THREADSTACK: " @ %this.threadStack);
echo ("THREAD: " @ %this.thread);
echo ("PAGE: " @ %this.pageNumber);
}
function PageGui::popPage(%this)
{
echo ("POP: " @ %this.pageName());
if (%this.pageNumber > 0)
Canvas.popDialog(%this.pageName());
}
function PageGui::pushPage(%this, %pageNumber)
{
// Load up the new page
%this.pageNumber = %pageNumber;
%page = %this.pageName();
Canvas.pushDialog(%page);
// Update the arrows to reflect next/prev page availabilty
PageGuiNextPage.setVisible(%this.isNextPage());
//PageGuiPrevPage.setVisible(%this.isPrevPage());
// Extract demo text from page object
PageGuiTitle.setText(
"<font:Arial Bold:32><color:ffffff><just:right>" @
%page.title);
%this.status();
}
function PageGui::setPageNumber(%this,%pageNumber)
{
// Pop off any current page...
%this.popPage();
// Load up the new page
%this.pushPage(%pageNumber);
}
function PageGui::nextPage(%this)
{
if (%this.isNextPage())
%this.setPageNumber(%this.pageNumber + 1);
}
function PageGui::prevPage(%this)
{
if (%this.isPrevPage())
%this.setPageNumber(%this.pageNumber - 1);
else
{
%this.popThread();
if (%this.thread !$= "")
%this.pushPage(%this.pageNumber);
else
Canvas.setContent(mainMenuGui);
}
}