added everything
26
example/tutorial.base/client/audioProfiles.cs
Executable file
@ -0,0 +1,26 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Channel assignments (channel 0 is unused in-game).
|
||||
|
||||
$GuiAudioType = 1;
|
||||
$SimAudioType = 2;
|
||||
$MessageAudioType = 3;
|
||||
|
||||
new AudioDescription(AudioGui)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = $GuiAudioType;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioMessage)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = $MessageAudioType;
|
||||
};
|
BIN
example/tutorial.base/client/audioProfiles.cs.dso
Executable file
233
example/tutorial.base/client/default.bind.cs
Executable file
@ -0,0 +1,233 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Key bindings for the in-game action Map
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
if ( isObject( moveMap ) )
|
||||
moveMap.delete();
|
||||
new ActionMap(moveMap);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Misc. in-game keys
|
||||
|
||||
function escapeFromGame()
|
||||
{
|
||||
if ( $Server::ServerType $= "SinglePlayer" )
|
||||
MessageBoxYesNo( "Quit Mission", "Exit from this Mission?", "disconnect();", "");
|
||||
else
|
||||
MessageBoxYesNo( "Disconnect", "Disconnect from the server?", "disconnect();", "");
|
||||
}
|
||||
|
||||
moveMap.bindCmd(keyboard, "escape", "", "escapeFromGame();");
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Movement Keys
|
||||
|
||||
$movementSpeed = 1; // m/s
|
||||
|
||||
function setSpeed(%speed)
|
||||
{
|
||||
if(%speed)
|
||||
$movementSpeed = %speed;
|
||||
}
|
||||
|
||||
function moveleft(%val)
|
||||
{
|
||||
$mvLeftAction = %val * $movementSpeed;
|
||||
}
|
||||
|
||||
function moveright(%val)
|
||||
{
|
||||
$mvRightAction = %val * $movementSpeed;
|
||||
}
|
||||
|
||||
function moveforward(%val)
|
||||
{
|
||||
$mvForwardAction = %val * $movementSpeed;
|
||||
}
|
||||
|
||||
function movebackward(%val)
|
||||
{
|
||||
$mvBackwardAction = %val * $movementSpeed;
|
||||
}
|
||||
|
||||
function moveup(%val)
|
||||
{
|
||||
$mvUpAction = %val * $movementSpeed;
|
||||
}
|
||||
|
||||
function movedown(%val)
|
||||
{
|
||||
$mvDownAction = %val * $movementSpeed;
|
||||
}
|
||||
|
||||
function turnLeft( %val )
|
||||
{
|
||||
$mvYawRightSpeed = %val ? $Pref::Input::KeyboardTurnSpeed : 0;
|
||||
}
|
||||
|
||||
function turnRight( %val )
|
||||
{
|
||||
$mvYawLeftSpeed = %val ? $Pref::Input::KeyboardTurnSpeed : 0;
|
||||
}
|
||||
|
||||
function panUp( %val )
|
||||
{
|
||||
$mvPitchDownSpeed = %val ? $Pref::Input::KeyboardTurnSpeed : 0;
|
||||
}
|
||||
|
||||
function panDown( %val )
|
||||
{
|
||||
$mvPitchUpSpeed = %val ? $Pref::Input::KeyboardTurnSpeed : 0;
|
||||
}
|
||||
|
||||
function getMouseAdjustAmount(%val)
|
||||
{
|
||||
// based on a default camera fov of 90'
|
||||
return(%val * ($cameraFov / 90) * 0.01);
|
||||
}
|
||||
|
||||
function yaw(%val)
|
||||
{
|
||||
$mvYaw += getMouseAdjustAmount(%val);
|
||||
}
|
||||
|
||||
function pitch(%val)
|
||||
{
|
||||
$mvPitch += getMouseAdjustAmount(%val);
|
||||
}
|
||||
|
||||
function jump(%val)
|
||||
{
|
||||
$mvTriggerCount2++;
|
||||
}
|
||||
|
||||
function mouseTrigger(%val)
|
||||
{
|
||||
$mvTriggerCount0++;
|
||||
}
|
||||
|
||||
moveMap.bind( keyboard, a, moveleft );
|
||||
moveMap.bind( keyboard, d, moveright );
|
||||
moveMap.bind( keyboard, w, moveforward );
|
||||
moveMap.bind( keyboard, s, movebackward );
|
||||
moveMap.bind( keyboard, space, jump );
|
||||
|
||||
moveMap.bind( mouse, xaxis, yaw );
|
||||
moveMap.bind( mouse, yaxis, pitch );
|
||||
moveMap.bind( mouse, button0, mouseTrigger );
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Camera & View functions
|
||||
|
||||
function toggleFreeLook( %val )
|
||||
{
|
||||
if ( %val )
|
||||
$mvFreeLook = true;
|
||||
else
|
||||
$mvFreeLook = false;
|
||||
}
|
||||
|
||||
$firstPerson = true;
|
||||
function toggleFirstPerson(%val)
|
||||
{
|
||||
if (%val)
|
||||
{
|
||||
$firstPerson = !$firstPerson;
|
||||
ServerConnection.setFirstPerson($firstPerson);
|
||||
}
|
||||
}
|
||||
|
||||
function toggleCamera(%val)
|
||||
{
|
||||
if (%val)
|
||||
commandToServer('ToggleCamera');
|
||||
}
|
||||
|
||||
moveMap.bind( keyboard, z, toggleFreeLook );
|
||||
moveMap.bind(keyboard, tab, toggleFirstPerson );
|
||||
moveMap.bind(keyboard, "alt c", toggleCamera);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Helper functions used by the mission editor
|
||||
|
||||
function dropCameraAtPlayer(%val)
|
||||
{
|
||||
if (%val)
|
||||
commandToServer('dropCameraAtPlayer');
|
||||
}
|
||||
|
||||
function dropPlayerAtCamera(%val)
|
||||
{
|
||||
if (%val)
|
||||
commandToServer('DropPlayerAtCamera');
|
||||
}
|
||||
|
||||
moveMap.bind(keyboard, "F8", dropCameraAtPlayer);
|
||||
moveMap.bind(keyboard, "F7", dropPlayerAtCamera);
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Key bindings for the Global action map available everywhere
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Misc.
|
||||
|
||||
GlobalActionMap.bind(keyboard, "tilde", toggleConsole);
|
||||
GlobalActionMap.bindCmd(keyboard, "alt k", "cls();","");
|
||||
GlobalActionMap.bindCmd(keyboard, "alt enter", "", "toggleFullScreen();");
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Dubuging Functions
|
||||
|
||||
$MFDebugRenderMode = 0;
|
||||
function cycleDebugRenderMode(%val)
|
||||
{
|
||||
if (!%val)
|
||||
return;
|
||||
|
||||
if (getBuildString() $= "Debug")
|
||||
{
|
||||
if($MFDebugRenderMode == 0)
|
||||
{
|
||||
// Outline mode, including fonts so no stats
|
||||
$MFDebugRenderMode = 1;
|
||||
GLEnableOutline(true);
|
||||
}
|
||||
else if ($MFDebugRenderMode == 1)
|
||||
{
|
||||
// Interior debug mode
|
||||
$MFDebugRenderMode = 2;
|
||||
GLEnableOutline(false);
|
||||
setInteriorRenderMode(7);
|
||||
showInterior();
|
||||
}
|
||||
else if ($MFDebugRenderMode == 2)
|
||||
{
|
||||
// Back to normal
|
||||
$MFDebugRenderMode = 0;
|
||||
setInteriorRenderMode(0);
|
||||
GLEnableOutline(false);
|
||||
show();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("Debug render modes only available when running a Debug build.");
|
||||
}
|
||||
}
|
||||
|
||||
GlobalActionMap.bind(keyboard, "F9", cycleDebugRenderMode);
|
||||
|
||||
|
||||
|
BIN
example/tutorial.base/client/default.bind.cs.dso
Executable file
63
example/tutorial.base/client/defaults.cs
Executable file
@ -0,0 +1,63 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// The master server is declared with the server defaults, which is
|
||||
// loaded on both clients & dedicated servers. If the server mod
|
||||
// is not loaded on a client, then the master must be defined.
|
||||
//$pref::Master[0] = "2:v12master.dyndns.org:28002";
|
||||
|
||||
$pref::Player::Name = "Test Guy";
|
||||
$pref::Player::defaultFov = 90;
|
||||
$pref::Player::zoomSpeed = 0;
|
||||
|
||||
$pref::Net::LagThreshold = 400;
|
||||
|
||||
$pref::shadows = "2";
|
||||
$pref::HudMessageLogSize = 40;
|
||||
$pref::ChatHudLength = 1;
|
||||
|
||||
$pref::Input::LinkMouseSensitivity = 1;
|
||||
// DInput keyboard, mouse, and joystick prefs
|
||||
$pref::Input::KeyboardEnabled = 1;
|
||||
$pref::Input::MouseEnabled = 1;
|
||||
$pref::Input::JoystickEnabled = 0;
|
||||
$pref::Input::KeyboardTurnSpeed = 0.1;
|
||||
|
||||
$pref::sceneLighting::cacheSize = 20000;
|
||||
$pref::sceneLighting::purgeMethod = "lastCreated";
|
||||
$pref::sceneLighting::cacheLighting = 1;
|
||||
$pref::sceneLighting::terrainGenerateLevel = 1;
|
||||
|
||||
$pref::Terrain::DynamicLights = 1;
|
||||
$pref::Interior::TexturedFog = 0;
|
||||
|
||||
$pref::Video::displayDevice = "OpenGL";
|
||||
$pref::Video::allowOpenGL = 1;
|
||||
$pref::Video::allowD3D = 1;
|
||||
$pref::Video::preferOpenGL = 1;
|
||||
$pref::Video::appliedPref = 0;
|
||||
$pref::Video::disableVerticalSync = 1;
|
||||
$pref::Video::monitorNum = 0;
|
||||
$pref::Video::windowedRes = "800 600";
|
||||
$pref::Video::screenShotFormat = "PNG";
|
||||
|
||||
$pref::OpenGL::force16BitTexture = "0";
|
||||
$pref::OpenGL::forcePalettedTexture = "0";
|
||||
$pref::OpenGL::maxHardwareLights = 3;
|
||||
$pref::VisibleDistanceMod = 1.0;
|
||||
|
||||
$pref::Audio::driver = "OpenAL";
|
||||
$pref::Audio::forceMaxDistanceUpdate = 0;
|
||||
$pref::Audio::environmentEnabled = 0;
|
||||
$pref::Audio::masterVolume = 0.8;
|
||||
$pref::Audio::channelVolume1 = 0.8;
|
||||
$pref::Audio::channelVolume2 = 0.8;
|
||||
$pref::Audio::channelVolume3 = 0.8;
|
||||
$pref::Audio::channelVolume4 = 0.8;
|
||||
$pref::Audio::channelVolume5 = 0.8;
|
||||
$pref::Audio::channelVolume6 = 0.8;
|
||||
$pref::Audio::channelVolume7 = 0.8;
|
||||
$pref::Audio::channelVolume8 = 0.8;
|
||||
|
BIN
example/tutorial.base/client/defaults.cs.dso
Executable file
36
example/tutorial.base/client/loadingGui.cs
Executable file
@ -0,0 +1,36 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function LoadingGui::onAdd(%this)
|
||||
{
|
||||
%this.qLineCount = 0;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function LoadingGui::onWake(%this)
|
||||
{
|
||||
// Play sound...
|
||||
CloseMessagePopup();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
function LoadingGui::onSleep(%this)
|
||||
{
|
||||
// Clear the load info:
|
||||
if ( %this.qLineCount !$= "" )
|
||||
{
|
||||
for ( %line = 0; %line < %this.qLineCount; %line++ )
|
||||
%this.qLine[%line] = "";
|
||||
}
|
||||
%this.qLineCount = 0;
|
||||
|
||||
LOAD_MapName.setText( "" );
|
||||
LOAD_MapDescription.setText( "" );
|
||||
LoadingProgress.setValue( 0 );
|
||||
LoadingProgressTxt.setValue( "WAITING FOR SERVER" );
|
||||
|
||||
// Stop sound...
|
||||
}
|
BIN
example/tutorial.base/client/loadingGui.cs.dso
Executable file
146
example/tutorial.base/client/missionDownload.cs
Executable file
@ -0,0 +1,146 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Mission Loading & Mission Info
|
||||
// The mission loading server handshaking is handled by the
|
||||
// common/client/missingLoading.cs. This portion handles the interface
|
||||
// with the game GUI.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Loading Phases:
|
||||
// Phase 1: Download Datablocks
|
||||
// Phase 2: Download Ghost Objects
|
||||
// Phase 3: Scene Lighting
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Phase 1
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function onMissionDownloadPhase1(%missionName, %musicTrack)
|
||||
{
|
||||
// Close and clear the message hud (in case it's open)
|
||||
//cls();
|
||||
|
||||
// Reset the loading progress controls:
|
||||
LoadingProgress.setValue(0);
|
||||
LoadingProgressTxt.setValue("LOADING DATABLOCKS");
|
||||
}
|
||||
|
||||
function onPhase1Progress(%progress)
|
||||
{
|
||||
LoadingProgress.setValue(%progress);
|
||||
Canvas.repaint();
|
||||
}
|
||||
|
||||
function onPhase1Complete()
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Phase 2
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function onMissionDownloadPhase2()
|
||||
{
|
||||
// Reset the loading progress controls:
|
||||
LoadingProgress.setValue(0);
|
||||
LoadingProgressTxt.setValue("LOADING OBJECTS");
|
||||
Canvas.repaint();
|
||||
}
|
||||
|
||||
function onPhase2Progress(%progress)
|
||||
{
|
||||
LoadingProgress.setValue(%progress);
|
||||
Canvas.repaint();
|
||||
}
|
||||
|
||||
function onPhase2Complete()
|
||||
{
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Phase 3
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function onMissionDownloadPhase3()
|
||||
{
|
||||
LoadingProgress.setValue(0);
|
||||
LoadingProgressTxt.setValue("LIGHTING MISSION");
|
||||
Canvas.repaint();
|
||||
}
|
||||
|
||||
function onPhase3Progress(%progress)
|
||||
{
|
||||
LoadingProgress.setValue(%progress);
|
||||
}
|
||||
|
||||
function onPhase3Complete()
|
||||
{
|
||||
LoadingProgress.setValue( 1 );
|
||||
$lightingMission = false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Mission loading done!
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function onMissionDownloadComplete()
|
||||
{
|
||||
// Client will shortly be dropped into the game, so this is
|
||||
// good place for any last minute gui cleanup.
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Before downloading a mission, the server transmits the mission
|
||||
// information through these messages.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
addMessageCallback( 'MsgLoadInfo', handleLoadInfoMessage );
|
||||
addMessageCallback( 'MsgLoadDescripition', handleLoadDescriptionMessage );
|
||||
addMessageCallback( 'MsgLoadInfoDone', handleLoadInfoDoneMessage );
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function handleLoadInfoMessage( %msgType, %msgString, %mapName ) {
|
||||
|
||||
// Need to pop up the loading gui to display this stuff.
|
||||
Canvas.setContent("LoadingGui");
|
||||
|
||||
// Clear all of the loading info lines:
|
||||
for( %line = 0; %line < LoadingGui.qLineCount; %line++ )
|
||||
LoadingGui.qLine[%line] = "";
|
||||
LoadingGui.qLineCount = 0;
|
||||
|
||||
//
|
||||
LOAD_MapName.setText( %mapName );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function handleLoadDescriptionMessage( %msgType, %msgString, %line )
|
||||
{
|
||||
LoadingGui.qLine[LoadingGui.qLineCount] = %line;
|
||||
LoadingGui.qLineCount++;
|
||||
|
||||
// Gather up all the previous lines, append the current one
|
||||
// and stuff it into the control
|
||||
%text = "<spush><font:Arial:16>";
|
||||
|
||||
for( %line = 0; %line < LoadingGui.qLineCount - 1; %line++ )
|
||||
%text = %text @ LoadingGui.qLine[%line] @ " ";
|
||||
%text = %text @ LoadingGui.qLine[%line] @ "<spop>";
|
||||
|
||||
LOAD_MapDescription.setText( %text );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
function handleLoadInfoDoneMessage( %msgType, %msgString )
|
||||
{
|
||||
// This will get called after the last description line is sent.
|
||||
}
|
BIN
example/tutorial.base/client/missionDownload.cs.dso
Executable file
318
example/tutorial.base/client/optionsDlg.cs
Executable file
@ -0,0 +1,318 @@
|
||||
function optionsDlg::setPane(%this, %pane)
|
||||
{
|
||||
OptAudioPane.setVisible(false);
|
||||
OptGraphicsPane.setVisible(false);
|
||||
OptNetworkPane.setVisible(false);
|
||||
("Opt" @ %pane @ "Pane").setVisible(true);
|
||||
}
|
||||
|
||||
function OptionsDlg::onWake(%this)
|
||||
{
|
||||
OptGraphicsButton.performClick();
|
||||
%buffer = getDisplayDeviceList();
|
||||
%count = getFieldCount( %buffer );
|
||||
OptGraphicsDriverMenu.clear();
|
||||
OptScreenshotMenu.init();
|
||||
OptScreenshotMenu.setValue($pref::Video::screenShotFormat);
|
||||
for(%i = 0; %i < %count; %i++)
|
||||
OptGraphicsDriverMenu.add(getField(%buffer, %i), %i);
|
||||
%selId = OptGraphicsDriverMenu.findText( $pref::Video::displayDevice );
|
||||
if ( %selId == -1 )
|
||||
%selId = 0; // How did THAT happen?
|
||||
OptGraphicsDriverMenu.setSelected( %selId );
|
||||
OptGraphicsDriverMenu.onSelect( %selId, "" );
|
||||
|
||||
// Audio
|
||||
OptAudioUpdate();
|
||||
OptAudioVolumeMaster.setValue($pref::Audio::masterVolume);
|
||||
OptAudioVolumeShell.setValue( $pref::Audio::channelVolume[$GuiAudioType]);
|
||||
OptAudioVolumeSim.setValue( $pref::Audio::channelVolume[$SimAudioType]);
|
||||
OptAudioDriverList.clear();
|
||||
OptAudioDriverList.add("OpenAL", 1);
|
||||
OptAudioDriverList.add("none", 2);
|
||||
%selId = OptAudioDriverList.findText($pref::Audio::driver);
|
||||
if ( %selId == -1 )
|
||||
%selId = 0; // How did THAT happen?
|
||||
OptAudioDriverList.setSelected( %selId );
|
||||
OptAudioDriverList.onSelect( %selId, "" );
|
||||
}
|
||||
|
||||
function OptionsDlg::onSleep(%this)
|
||||
{
|
||||
}
|
||||
|
||||
function OptGraphicsDriverMenu::onSelect( %this, %id, %text )
|
||||
{
|
||||
// Attempt to keep the same res and bpp settings:
|
||||
if ( OptGraphicsResolutionMenu.size() > 0 )
|
||||
%prevRes = OptGraphicsResolutionMenu.getText();
|
||||
else
|
||||
%prevRes = getWords( $pref::Video::resolution, 0, 1 );
|
||||
|
||||
// Check if this device is full-screen only:
|
||||
if ( isDeviceFullScreenOnly( %this.getText() ) )
|
||||
{
|
||||
OptGraphicsFullscreenToggle.setValue( true );
|
||||
OptGraphicsFullscreenToggle.setActive( false );
|
||||
OptGraphicsFullscreenToggle.onAction();
|
||||
}
|
||||
else
|
||||
OptGraphicsFullscreenToggle.setActive( true );
|
||||
|
||||
if ( OptGraphicsFullscreenToggle.getValue() )
|
||||
{
|
||||
if ( OptGraphicsBPPMenu.size() > 0 )
|
||||
%prevBPP = OptGraphicsBPPMenu.getText();
|
||||
else
|
||||
%prevBPP = getWord( $pref::Video::resolution, 2 );
|
||||
}
|
||||
|
||||
// Fill the resolution and bit depth lists:
|
||||
OptGraphicsResolutionMenu.init( %this.getText(), OptGraphicsFullscreenToggle.getValue() );
|
||||
OptGraphicsBPPMenu.init( %this.getText() );
|
||||
|
||||
// Try to select the previous settings:
|
||||
%selId = OptGraphicsResolutionMenu.findText( %prevRes );
|
||||
if ( %selId == -1 )
|
||||
%selId = 0;
|
||||
OptGraphicsResolutionMenu.setSelected( %selId );
|
||||
|
||||
if ( OptGraphicsFullscreenToggle.getValue() )
|
||||
{
|
||||
%selId = OptGraphicsBPPMenu.findText( %prevBPP );
|
||||
if ( %selId == -1 )
|
||||
%selId = 0;
|
||||
OptGraphicsBPPMenu.setSelected( %selId );
|
||||
OptGraphicsBPPMenu.setText( OptGraphicsBPPMenu.getTextById( %selId ) );
|
||||
}
|
||||
else
|
||||
OptGraphicsBPPMenu.setText( "Default" );
|
||||
|
||||
}
|
||||
|
||||
function OptGraphicsResolutionMenu::init( %this, %device, %fullScreen )
|
||||
{
|
||||
%this.clear();
|
||||
%resList = getResolutionList( %device );
|
||||
%resCount = getFieldCount( %resList );
|
||||
%deskRes = getDesktopResolution();
|
||||
|
||||
%count = 0;
|
||||
for ( %i = 0; %i < %resCount; %i++ )
|
||||
{
|
||||
%res = getWords( getField( %resList, %i ), 0, 1 );
|
||||
|
||||
if ( !%fullScreen )
|
||||
{
|
||||
if ( firstWord( %res ) >= firstWord( %deskRes ) )
|
||||
continue;
|
||||
if ( getWord( %res, 1 ) >= getWord( %deskRes, 1 ) )
|
||||
continue;
|
||||
}
|
||||
|
||||
// Only add to list if it isn't there already:
|
||||
if ( %this.findText( %res ) == -1 )
|
||||
{
|
||||
%this.add( %res, %count );
|
||||
%count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function OptGraphicsFullscreenToggle::onAction(%this)
|
||||
{
|
||||
Parent::onAction();
|
||||
%prevRes = OptGraphicsResolutionMenu.getText();
|
||||
|
||||
// Update the resolution menu with the new options
|
||||
OptGraphicsResolutionMenu.init( OptGraphicsDriverMenu.getText(), %this.getValue() );
|
||||
|
||||
// Set it back to the previous resolution if the new mode supports it.
|
||||
%selId = OptGraphicsResolutionMenu.findText( %prevRes );
|
||||
if ( %selId == -1 )
|
||||
%selId = 0;
|
||||
OptGraphicsResolutionMenu.setSelected( %selId );
|
||||
}
|
||||
|
||||
|
||||
function OptGraphicsBPPMenu::init( %this, %device )
|
||||
{
|
||||
%this.clear();
|
||||
|
||||
if ( %device $= "Voodoo2" )
|
||||
%this.add( "16", 0 );
|
||||
else
|
||||
{
|
||||
%resList = getResolutionList( %device );
|
||||
%resCount = getFieldCount( %resList );
|
||||
%count = 0;
|
||||
for ( %i = 0; %i < %resCount; %i++ )
|
||||
{
|
||||
%bpp = getWord( getField( %resList, %i ), 2 );
|
||||
|
||||
// Only add to list if it isn't there already:
|
||||
if ( %this.findText( %bpp ) == -1 )
|
||||
{
|
||||
%this.add( %bpp, %count );
|
||||
%count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function OptScreenshotMenu::init( %this )
|
||||
{
|
||||
if( %this.findText("PNG") == -1 )
|
||||
%this.add("PNG", 0);
|
||||
if( %this.findText("JPEG") == - 1 )
|
||||
%this.add("JPEG", 1);
|
||||
}
|
||||
|
||||
function optionsDlg::applyGraphics( %this )
|
||||
{
|
||||
%newDriver = OptGraphicsDriverMenu.getText();
|
||||
%newRes = OptGraphicsResolutionMenu.getText();
|
||||
%newBpp = OptGraphicsBPPMenu.getText();
|
||||
%newFullScreen = OptGraphicsFullscreenToggle.getValue();
|
||||
$pref::Video::screenShotFormat = OptScreenshotMenu.getText();
|
||||
|
||||
if ( %newDriver !$= $pref::Video::displayDevice )
|
||||
{
|
||||
setDisplayDevice( %newDriver, firstWord( %newRes ), getWord( %newRes, 1 ), %newBpp, %newFullScreen );
|
||||
//OptionsDlg::deviceDependent( %this );
|
||||
}
|
||||
else
|
||||
setScreenMode( firstWord( %newRes ), getWord( %newRes, 1 ), %newBpp, %newFullScreen );
|
||||
}
|
||||
|
||||
// Audio
|
||||
function OptAudioUpdate()
|
||||
{
|
||||
// set the driver text
|
||||
%text = "Vendor: " @ alGetString("AL_VENDOR") @
|
||||
"\nVersion: " @ alGetString("AL_VERSION") @
|
||||
"\nRenderer: " @ alGetString("AL_RENDERER") @
|
||||
"\nExtensions: " @ alGetString("AL_EXTENSIONS");
|
||||
OptAudioInfo.setText(%text);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Channel 0 is unused in-game, but is used here to test master volume.
|
||||
|
||||
new AudioDescription(AudioChannel0)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 0;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel1)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 1;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel2)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 2;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel3)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 3;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel4)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 4;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel5)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 5;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel6)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 6;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel7)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 7;
|
||||
};
|
||||
|
||||
new AudioDescription(AudioChannel8)
|
||||
{
|
||||
volume = 1.0;
|
||||
isLooping= false;
|
||||
is3D = false;
|
||||
type = 8;
|
||||
};
|
||||
|
||||
$AudioTestHandle = 0;
|
||||
|
||||
function OptAudioUpdateMasterVolume(%volume)
|
||||
{
|
||||
if (%volume == $pref::Audio::masterVolume)
|
||||
return;
|
||||
alxListenerf(AL_GAIN_LINEAR, %volume);
|
||||
$pref::Audio::masterVolume = %volume;
|
||||
if (!alxIsPlaying($AudioTestHandle))
|
||||
{
|
||||
$AudioTestHandle = alxCreateSource("AudioChannel0", expandFilename("~/sounds/testing.wav"));
|
||||
alxPlay($AudioTestHandle);
|
||||
}
|
||||
}
|
||||
|
||||
function OptAudioUpdateChannelVolume(%channel, %volume)
|
||||
{
|
||||
if (%channel < 1 || %channel > 8)
|
||||
return;
|
||||
|
||||
if (%volume == $pref::Audio::channelVolume[%channel])
|
||||
return;
|
||||
|
||||
alxSetChannelVolume(%channel, %volume);
|
||||
$pref::Audio::channelVolume[%channel] = %volume;
|
||||
if (!alxIsPlaying($AudioTestHandle))
|
||||
{
|
||||
$AudioTestHandle = alxCreateSource("AudioChannel"@%channel, expandFilename("~/sounds/testing.wav"));
|
||||
alxPlay($AudioTestHandle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function OptAudioDriverList::onSelect( %this, %id, %text )
|
||||
{
|
||||
if (%text $= "")
|
||||
return;
|
||||
|
||||
if ($pref::Audio::driver $= %text)
|
||||
return;
|
||||
|
||||
$pref::Audio::driver = %text;
|
||||
OpenALInit();
|
||||
}
|
BIN
example/tutorial.base/client/optionsDlg.cs.dso
Executable file
25
example/tutorial.base/client/playGui.cs
Executable file
@ -0,0 +1,25 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// PlayGui is the main TSControl through which the game is viewed.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function PlayGui::onWake(%this)
|
||||
{
|
||||
// Turn off any shell sounds...
|
||||
// alxStop( ... );
|
||||
$enableDirectInput = "1";
|
||||
activateDirectInput();
|
||||
|
||||
// Activate the game's action map
|
||||
moveMap.push();
|
||||
}
|
||||
|
||||
function PlayGui::onSleep(%this)
|
||||
{
|
||||
// Pop the keymap
|
||||
moveMap.pop();
|
||||
}
|
BIN
example/tutorial.base/client/playGui.cs.dso
Executable file
164
example/tutorial.base/client/serverConnection.cs
Executable file
@ -0,0 +1,164 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Functions dealing with connecting to a server
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Server messages
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function onServerMessage(%mesg)
|
||||
{
|
||||
// Server message text which includes chat from other players.
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Server connection error
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
addMessageCallback( 'MsgConnectionError', handleConnectionErrorMessage );
|
||||
|
||||
function handleConnectionErrorMessage(%msgType, %msgString, %msgError)
|
||||
{
|
||||
// On connect the server transmits a message to display if there
|
||||
// are any problems with the connection. Most connection errors
|
||||
// are game version differences, so hopefully the server message
|
||||
// will tell us where to get the latest version of the game.
|
||||
$ServerConnectionErrorMessage = %msgError;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// GameConnection client callbacks
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function GameConnection::initialControlSet(%this)
|
||||
{
|
||||
echo ("*** Initial Control Object");
|
||||
|
||||
// The first control object has been set by the server
|
||||
// and we are now ready to go.
|
||||
|
||||
// first check if the editor is active
|
||||
if (!Editor::checkActiveLoadDone())
|
||||
{
|
||||
if (Canvas.getContent() != PlayGui.getId())
|
||||
Canvas.setContent(PlayGui);
|
||||
}
|
||||
}
|
||||
|
||||
function GameConnection::setLagIcon(%this, %state)
|
||||
{
|
||||
if (%this.getAddress() $= "local")
|
||||
return;
|
||||
// Called when the server lag state changes state = true/false
|
||||
}
|
||||
|
||||
function GameConnection::onConnectionAccepted(%this)
|
||||
{
|
||||
// Called on the new connection object after connect() succeeds.
|
||||
}
|
||||
|
||||
function GameConnection::onConnectionTimedOut(%this)
|
||||
{
|
||||
// Called when an established connection times out
|
||||
disconnectedCleanup();
|
||||
MessageBoxOK( "TIMED OUT", "The server connection has timed out.");
|
||||
}
|
||||
|
||||
function GameConnection::onConnectionDropped(%this, %msg)
|
||||
{
|
||||
// Established connection was dropped by the server
|
||||
disconnectedCleanup();
|
||||
MessageBoxOK( "DISCONNECT", "The server has dropped the connection: " @ %msg);
|
||||
}
|
||||
|
||||
function GameConnection::onConnectionError(%this, %msg)
|
||||
{
|
||||
// General connection error, usually raised by ghosted objects
|
||||
// initialization problems, such as missing files. We'll display
|
||||
// the server's connection error message.
|
||||
disconnectedCleanup();
|
||||
MessageBoxOK( "DISCONNECT", $ServerConnectionErrorMessage @ " (" @ %msg @ ")" );
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Connection Failed Events
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
function GameConnection::onConnectRequestRejected( %this, %msg )
|
||||
{
|
||||
switch$(%msg)
|
||||
{
|
||||
case "CR_INVALID_PROTOCOL_VERSION":
|
||||
%error = "Incompatible protocol version: Your game version is not compatible with this server.";
|
||||
case "CR_INVALID_CONNECT_PACKET":
|
||||
%error = "Internal Error: badly formed network packet";
|
||||
case "CR_YOUAREBANNED":
|
||||
%error = "You are not allowed to play on this server.";
|
||||
case "CR_SERVERFULL":
|
||||
%error = "This server is full.";
|
||||
case "CHR_PASSWORD":
|
||||
// XXX Should put up a password-entry dialog.
|
||||
if ($Client::Password $= "")
|
||||
MessageBoxOK( "REJECTED", "That server requires a password.");
|
||||
else {
|
||||
$Client::Password = "";
|
||||
MessageBoxOK( "REJECTED", "That password is incorrect.");
|
||||
}
|
||||
return;
|
||||
case "CHR_PROTOCOL":
|
||||
%error = "Incompatible protocol version: Your game version is not compatible with this server.";
|
||||
case "CHR_CLASSCRC":
|
||||
%error = "Incompatible game classes: Your game version is not compatible with this server.";
|
||||
case "CHR_INVALID_CHALLENGE_PACKET":
|
||||
%error = "Internal Error: Invalid server response packet";
|
||||
default:
|
||||
%error = "Connection error. Please try another server. Error code: (" @ %msg @ ")";
|
||||
}
|
||||
disconnectedCleanup();
|
||||
MessageBoxOK( "REJECTED", %error);
|
||||
}
|
||||
|
||||
function GameConnection::onConnectRequestTimedOut(%this)
|
||||
{
|
||||
disconnectedCleanup();
|
||||
MessageBoxOK( "TIMED OUT", "Your connection to the server timed out." );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Disconnect
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function disconnect()
|
||||
{
|
||||
// Delete the connection if it's still there.
|
||||
if (isObject(ServerConnection))
|
||||
ServerConnection.delete();
|
||||
disconnectedCleanup();
|
||||
|
||||
// Call destroyServer in case we're hosting
|
||||
destroyServer();
|
||||
}
|
||||
|
||||
function disconnectedCleanup()
|
||||
{
|
||||
// Terminate all playing sounds
|
||||
alxStopAll();
|
||||
if (isObject(MusicPlayer))
|
||||
MusicPlayer.stop();
|
||||
|
||||
// Back to the launch screen
|
||||
Canvas.setContent(MainMenuGui);
|
||||
|
||||
// Dump anything we're not using
|
||||
clearTextureHolds();
|
||||
purgeResources();
|
||||
}
|
||||
|
BIN
example/tutorial.base/client/serverConnection.cs.dso
Executable file
BIN
example/tutorial.base/client/ui/PlayGui.gui.dso
Executable file
BIN
example/tutorial.base/client/ui/background.png
Executable file
After Width: | Height: | Size: 20 KiB |
BIN
example/tutorial.base/client/ui/buttons/console_h.png
Executable file
After Width: | Height: | Size: 2.5 KiB |
BIN
example/tutorial.base/client/ui/buttons/console_n.png
Executable file
After Width: | Height: | Size: 2.0 KiB |
BIN
example/tutorial.base/client/ui/buttons/exit_h.png
Executable file
After Width: | Height: | Size: 2.8 KiB |
BIN
example/tutorial.base/client/ui/buttons/exit_n.png
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
example/tutorial.base/client/ui/buttons/forum_h.png
Executable file
After Width: | Height: | Size: 3.2 KiB |
BIN
example/tutorial.base/client/ui/buttons/forum_n.png
Executable file
After Width: | Height: | Size: 2.1 KiB |
BIN
example/tutorial.base/client/ui/buttons/gui_h.png
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
example/tutorial.base/client/ui/buttons/gui_n.png
Executable file
After Width: | Height: | Size: 1.5 KiB |
BIN
example/tutorial.base/client/ui/buttons/help_h.png
Executable file
After Width: | Height: | Size: 1.7 KiB |
BIN
example/tutorial.base/client/ui/buttons/help_n.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
example/tutorial.base/client/ui/buttons/map_h.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
example/tutorial.base/client/ui/buttons/map_n.png
Executable file
After Width: | Height: | Size: 3.0 KiB |
BIN
example/tutorial.base/client/ui/buttons/news_h.png
Executable file
After Width: | Height: | Size: 2.7 KiB |
BIN
example/tutorial.base/client/ui/buttons/news_n.png
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
example/tutorial.base/client/ui/buttons/options_h.png
Executable file
After Width: | Height: | Size: 2.7 KiB |
BIN
example/tutorial.base/client/ui/buttons/options_n.png
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
example/tutorial.base/client/ui/buttons/tdn_h.png
Executable file
After Width: | Height: | Size: 2.9 KiB |
BIN
example/tutorial.base/client/ui/buttons/tdn_n.png
Executable file
After Width: | Height: | Size: 2.6 KiB |
BIN
example/tutorial.base/client/ui/buttons/tutorial_h.png
Executable file
After Width: | Height: | Size: 1.8 KiB |
BIN
example/tutorial.base/client/ui/buttons/tutorial_n.png
Executable file
After Width: | Height: | Size: 1.4 KiB |
BIN
example/tutorial.base/client/ui/gameonebg.jpg
Executable file
After Width: | Height: | Size: 68 KiB |
BIN
example/tutorial.base/client/ui/gray_bar.png
Executable file
After Width: | Height: | Size: 1.6 KiB |
96
example/tutorial.base/client/ui/loadingGui.gui
Executable file
@ -0,0 +1,96 @@
|
||||
new GuiControlProfile ("LoadingGuiContentProfile")
|
||||
{
|
||||
opaque = true;
|
||||
fillColor = "200 200 200";
|
||||
border = true;
|
||||
borderColor = "0 0 0";
|
||||
};
|
||||
|
||||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiChunkedBitmapCtrl(LoadingGui) {
|
||||
profile = "GuiContentProfile";
|
||||
horizSizing = "width";
|
||||
vertSizing = "height";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
bitmap = "./background.jpg";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
|
||||
new GuiControl() {
|
||||
profile = "LoadingGuiContentProfile";
|
||||
horizSizing = "center";
|
||||
vertSizing = "center";
|
||||
position = "30 110";
|
||||
extent = "455 308";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiTextCtrl(LOAD_MapName) {
|
||||
profile = "GuiMediumTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "7 6";
|
||||
extent = "100 28";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "Map Name";
|
||||
maxLength = "255";
|
||||
};
|
||||
new GuiMLTextCtrl(LOAD_MapDescription) {
|
||||
profile = "GuiMLTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "7 62";
|
||||
extent = "303 16";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
};
|
||||
new GuiProgressCtrl(LoadingProgress) {
|
||||
profile = "GuiProgressProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "top";
|
||||
position = "128 262";
|
||||
extent = "262 25";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiTextCtrl(LoadingProgressTxt) {
|
||||
profile = "GuiProgressTextProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "-4 3";
|
||||
extent = "262 20";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
helpTag = "0";
|
||||
text = "LOADING MISSION";
|
||||
maxLength = "255";
|
||||
};
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
profile = "GuiButtonProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "top";
|
||||
position = "58 262";
|
||||
extent = "65 25";
|
||||
minExtent = "20 20";
|
||||
visible = "1";
|
||||
command = "disconnect();";
|
||||
accelerator = "escape";
|
||||
helpTag = "0";
|
||||
text = "CANCEL";
|
||||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
BIN
example/tutorial.base/client/ui/loadingGui.gui.dso
Executable file
312
example/tutorial.base/client/ui/mainMenuGui.gui
Executable file
@ -0,0 +1,312 @@
|
||||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiChunkedBitmapCtrl(MainMenuGui) {
|
||||
Profile = "GuiContentProfile";
|
||||
HorizSizing = "width";
|
||||
VertSizing = "height";
|
||||
position = "0 0";
|
||||
Extent = "640 480";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
bitmap = "./background";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiChunkedBitmapCtrl() {
|
||||
Profile = "GuiDefaultProfile";
|
||||
HorizSizing = "center";
|
||||
VertSizing = "bottom";
|
||||
position = "42 0";
|
||||
Extent = "555 55";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
bitmap = "./gray_bar";
|
||||
useVariable = "0";
|
||||
tile = "0";
|
||||
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "left";
|
||||
VertSizing = "top";
|
||||
position = "516 5";
|
||||
Extent = "31 43";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "quit();";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Close down the engine";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/exit";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "314 6";
|
||||
Extent = "40 43";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "gotoWebpage(\"http://www.garagegames.com/mg/forums/result.area.php?qa=10\");";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Talk to fellow Torque developers on the private Torque owner\'s forum";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/forum";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "left";
|
||||
VertSizing = "top";
|
||||
position = "465 6";
|
||||
Extent = "41 42";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "Canvas.pushDialog(optionsDlg);";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Adjust basic video, sound and other options";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/options";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "9 10";
|
||||
Extent = "54 38";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "GuiEdit();";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Open the GUI Editor, which helps you create graphical user interfaces for your games";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/gui";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "68 3";
|
||||
Extent = "73 45";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "toggleEditor(1);";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Open the World Editor, which provides tools for creating and editing your game worlds";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/map";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "226 4";
|
||||
Extent = "32 44";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "gotoWebpage(\"http://www.garagegames.com/index.php?sec=mg&mod=resource&page=result&qrt=News&qrf=tska&qsf=posted&qsd=desc\");";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Get the latest Torque news";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/news";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "274 17";
|
||||
Extent = "26 31";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "gotoWebpage(\"http://www.garagegames.com/developer/torque/tge/\");";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "See the Torque Tutorials homepage and learn more about how to use the engine";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/help";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "359 8";
|
||||
Extent = "35 42";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "gotoWebpage(\"http://tdn.garagegames.com/\");";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Go to the Torque Developer Network, a community-oriented site for Torque documentation";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/tdn";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "143 7";
|
||||
Extent = "41 43";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "ToggleConsole(1);";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "View the scripting Console, which allows you to enter TorqueScript commands on the fly";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/console";
|
||||
};
|
||||
new GuiBitmapButtonCtrl() {
|
||||
Profile = "GuiBorderButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "top";
|
||||
position = "398 7";
|
||||
Extent = "46 42";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
Command = "MessageBoxOK(\"Tutorial\", \"Note: In order to get to the tutorial right now, you need to go to your SDK install directory, then open the example folder and double-click 'GettingStarted.pdf'.\");";
|
||||
tooltipprofile = "GuiToolTipProfile";
|
||||
tooltip = "Read the Basic Getting Started Tutorial and learn the first steps of using some of Torque\'s tools";
|
||||
text = "Button";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
bitmap = "./buttons/tutorial";
|
||||
};
|
||||
};
|
||||
new GuiMLTextCtrl(RSSFeedMLText) {
|
||||
Profile = "GuiMLTextProfile";
|
||||
HorizSizing = "width";
|
||||
VertSizing = "top";
|
||||
position = "4 390";
|
||||
Extent = "326 94";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
||||
|
||||
// RSS ticker configuration:
|
||||
$RSSFeed::serverName = "feeds.feedburner.com";
|
||||
$RSSFeed::serverPort = 80;
|
||||
$RSSFeed::serverURL = "/garagegames/rss/product/tge/oobe";
|
||||
$RSSFeed::userAgent = "Torque/1.5";
|
||||
|
||||
function RSSFeedObject::onConnected(%this)
|
||||
{
|
||||
echo("RSS Feed");
|
||||
echo(" - Requesting RSS data at URL: " @ $RSSFeed::serverURL );
|
||||
|
||||
// Reset some useful state information.
|
||||
$RSSFeed::lineCount = 0;
|
||||
$RSSFeed::requestResults = "";
|
||||
|
||||
// Request our RSS.
|
||||
%this.send("GET " @ $RSSFeed::serverURL @ " HTTP/1.0\nHost: " @ $RSSFeed::serverName @ "\nUser-Agent: " @ $RSSFeed::userAgent @ "\n\r\n\r\n");
|
||||
}
|
||||
|
||||
function RSSFeedObject::onLine(%this, %line)
|
||||
{
|
||||
// Collate info.
|
||||
$RSSFeed::lineCount++;
|
||||
$RSSFeed::requestResults = $RSSFeed::requestResults @ %line;
|
||||
}
|
||||
|
||||
function RSSFeedObject::getTagContents(%this, %string, %tag, %startChar)
|
||||
{
|
||||
// This function occasionally makes Torque hard crash. It doesn't
|
||||
// seem to do it anymore but be careful!
|
||||
|
||||
// Ok, get thing between <%tag> and </%tag> after char #
|
||||
// %startChar in the passed string.
|
||||
|
||||
%startTag = "<" @ %tag @ ">";
|
||||
%endTag = "</" @ %tag @ ">";
|
||||
|
||||
%startTagOffset = strpos(%string, %startTag, %startChar);
|
||||
|
||||
// Compensate for presence of start tag.
|
||||
%startOffset = %startTagOffset + strlen(%startTag);
|
||||
|
||||
// Ok, now look for end tag.
|
||||
%endTagOffset = strpos(%string, %endTag, %startOffset - 1);
|
||||
|
||||
// If we didn't find it, bail.
|
||||
if(%endTagOffset < 0)
|
||||
return "";
|
||||
|
||||
// Evil hack - store last found item in a global.
|
||||
%this.lastOffset = %endTagOffset;
|
||||
|
||||
// And get & return the substring between the tags.
|
||||
%result = getSubStr(%string, %startOffset, %endTagOffset - %startOffset);
|
||||
|
||||
// Do a little mojo to deal with " and some other htmlentities.
|
||||
%result = strreplace(%result, """, "\"");
|
||||
%result = strreplace(%result, "&", "&");
|
||||
|
||||
return %result;
|
||||
}
|
||||
|
||||
function RSSFeedObject::onDisconnect(%this)
|
||||
{
|
||||
// Ok, we have a full buffer now, hopefully. Let's process it.
|
||||
echo(" - Got " @ $RSSFeed::lineCount @ " lines.");
|
||||
|
||||
// We want the feed title and the first three headlines + links.
|
||||
|
||||
// Feed title - get the first <title> occurence in the string.
|
||||
%title = %this.getTagContents($RSSFeed::requestResults, "title", 0);
|
||||
%titleLink = %this.getTagContents($RSSFeed::requestResults, "link", 0);
|
||||
|
||||
echo(" - Feed title: '" @ %title @ "'");
|
||||
echo(" - Feed link: '" @ %titleLink @ "'");
|
||||
|
||||
// Ok, get the first three headlines, if any...
|
||||
for(%i = 0; %i<3; %i++)
|
||||
{
|
||||
%headline[%i] = %this.getTagContents($RSSFeed::requestResults, "title", %this.lastOffset);
|
||||
%headlineLink[%i] = %this.getTagContents($RSSFeed::requestResults, "link", %this.lastOffset);
|
||||
|
||||
// Skip the content - it's not going to do anything but confuse us.
|
||||
%garbage = %this.getTagContents($RSSFeed::requestResults, "content:encoded", %this.lastOffset);
|
||||
|
||||
// And debug spam...
|
||||
echo(" - Headline #" @ %i @ " : '" @ %headline[%i] @ "'");
|
||||
echo(" - Headline Link #" @ %i @ " : '" @ %headlineLink[%i] @ "'");
|
||||
}
|
||||
|
||||
// Generate contents for our ML control.
|
||||
RSSFeedMLText.setText("<lmargin%:2><font:Arial Bold:20>" @ %title @ "<font:Arial:14>\n");
|
||||
for(%i=0; %i<3; %i++)
|
||||
RSSFeedMLText.addText("<a:" @ getSubstr(%headlineLink[%i], 7, 1000) @ ">" @ %headline[%i] @ "</a>\n", false);
|
||||
RSSFeedMLText.addText("<just:right><a:" @ getSubstr(%titleLink, 7, 1000) @ ">" @ "[ Read more... ]" @ "</a>", true);
|
||||
|
||||
}
|
||||
|
||||
function kickOffRSS()
|
||||
{
|
||||
new TCPObject(RSSFeedObject);
|
||||
RSSFeedObject.connect($RSSFeed::serverName @ ":" @ $RSSFeed::serverPort);
|
||||
}
|
||||
|
||||
function MainMenuGui::onWake(%this)
|
||||
{
|
||||
// Kick off an update on next tick.
|
||||
if(!$pref::RSS::disableFeedCheck)
|
||||
schedule(50, 0, kickOffRSS);
|
||||
}
|
BIN
example/tutorial.base/client/ui/mainMenuGui.gui.dso
Executable file
368
example/tutorial.base/client/ui/optionsDlg.gui
Executable file
@ -0,0 +1,368 @@
|
||||
//--- OBJECT WRITE BEGIN ---
|
||||
new GuiControl(optionsDlg) {
|
||||
Profile = "GuiDefaultProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "0 0";
|
||||
Extent = "800 600";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiWindowCtrl() {
|
||||
Profile = "GuiWindowProfile";
|
||||
HorizSizing = "center";
|
||||
VertSizing = "center";
|
||||
position = "211 148";
|
||||
Extent = "377 303";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Options";
|
||||
maxLength = "255";
|
||||
resizeWidth = "0";
|
||||
resizeHeight = "0";
|
||||
canMove = "1";
|
||||
canClose = "1";
|
||||
canMinimize = "0";
|
||||
canMaximize = "0";
|
||||
MinSize = "50 50";
|
||||
closeCommand = "Canvas.popDialog(optionsDlg);";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiButtonCtrl() {
|
||||
Profile = "GuiButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "305 270";
|
||||
Extent = "60 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Command = "Canvas.popDialog(optionsDlg);";
|
||||
text = "OK";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiButtonCtrl(optGraphicsButton) {
|
||||
Profile = "GuiButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "9 28";
|
||||
Extent = "175 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Command = "optionsDlg.setPane(Graphics);";
|
||||
text = "Graphics";
|
||||
groupNum = "-1";
|
||||
buttonType = "RadioButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
Profile = "GuiButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "189 28";
|
||||
Extent = "175 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Command = "optionsDlg.setPane(Audio);";
|
||||
text = "Audio";
|
||||
groupNum = "-1";
|
||||
buttonType = "RadioButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiControl(OptGraphicsPane) {
|
||||
Profile = "GuiWindowProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "9 55";
|
||||
Extent = "357 208";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "21 10";
|
||||
Extent = "70 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Display Driver:";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "21 34";
|
||||
Extent = "53 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Resolution:";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiCheckBoxCtrl(OptGraphicsFullscreenToggle) {
|
||||
Profile = "GuiCheckBoxProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "21 120";
|
||||
Extent = "137 25";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Variable = "$pref::Video::fullScreen";
|
||||
text = "Fullscreen Video";
|
||||
groupNum = "-1";
|
||||
buttonType = "ToggleButton";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiButtonCtrl() {
|
||||
Profile = "GuiButtonProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "149 171";
|
||||
Extent = "78 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Command = "optionsDlg.applyGraphics();";
|
||||
text = "Apply";
|
||||
groupNum = "-1";
|
||||
buttonType = "PushButton";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiPopUpMenuCtrl(OptGraphicsDriverMenu) {
|
||||
Profile = "GuiPopUpMenuProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "113 10";
|
||||
Extent = "130 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
maxLength = "255";
|
||||
maxPopupHeight = "200";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiPopUpMenuCtrl(OptGraphicsResolutionMenu) {
|
||||
Profile = "GuiPopUpMenuProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "113 36";
|
||||
Extent = "130 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
maxLength = "255";
|
||||
maxPopupHeight = "200";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "21 60";
|
||||
Extent = "46 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Bit Depth:";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiPopUpMenuCtrl(OptGraphicsBPPMenu) {
|
||||
Profile = "GuiPopUpMenuProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "113 62";
|
||||
Extent = "130 23";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
maxLength = "255";
|
||||
maxPopupHeight = "200";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "21 86";
|
||||
Extent = "59 18";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
text = "Screenshot:";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiPopUpMenuCtrl(OptScreenshotMenu) {
|
||||
Profile = "GuiPopUpMenuProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "113 88";
|
||||
Extent = "130 23";
|
||||
MinExtent = "8 2";
|
||||
Visible = "1";
|
||||
maxLength = "255";
|
||||
maxPopupHeight = "200";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiCheckBoxCtrl(OptRSSToggle) {
|
||||
Profile = "GuiCheckBoxProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "21 141";
|
||||
Extent = "137 25";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Variable = "$pref::RSS::disableFeedCheck";
|
||||
text = "Disable News Feed";
|
||||
tooltipprofile = "GuiTooltipProfile";
|
||||
tooltip = "Check this box to disable the live newsfeed on the main menu.";
|
||||
groupNum = "-1";
|
||||
buttonType = "ToggleButton";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
};
|
||||
new GuiControl(OptNetworkPane) {
|
||||
Profile = "GuiWindowProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "9 55";
|
||||
Extent = "357 208";
|
||||
MinExtent = "8 8";
|
||||
Visible = "0";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiControl(OptAudioPane) {
|
||||
Profile = "GuiWindowProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "9 55";
|
||||
Extent = "357 208";
|
||||
MinExtent = "8 8";
|
||||
Visible = "0";
|
||||
helpTag = "0";
|
||||
|
||||
new GuiSliderCtrl(OptAudioVolumeSim) {
|
||||
Profile = "GuiSliderProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "107 172";
|
||||
Extent = "240 34";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Variable = "value";
|
||||
AltCommand = "OptAudioUpdateChannelVolume($SimAudioType, OptAudioVolumeSim.value);";
|
||||
range = "0 1";
|
||||
ticks = "8";
|
||||
value = "0.8";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "11 94";
|
||||
Extent = "72 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Master Volume";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "22 132";
|
||||
Extent = "62 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Shell Volume";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "28 169";
|
||||
Extent = "56 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Sim Volume";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiSliderCtrl(OptAudioVolumeMaster) {
|
||||
Profile = "GuiSliderProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "106 98";
|
||||
Extent = "240 34";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Variable = "value";
|
||||
AltCommand = "OptAudioUpdateMasterVolume(OptAudioVolumeMaster.value);";
|
||||
range = "0 1";
|
||||
ticks = "8";
|
||||
value = "0.8";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiSliderCtrl(OptAudioVolumeShell) {
|
||||
Profile = "GuiSliderProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "106 135";
|
||||
Extent = "240 34";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
Variable = "value";
|
||||
AltCommand = "OptAudioUpdateChannelVolume($GuiAudioType, OptAudioVolumeShell.value);";
|
||||
range = "0 1";
|
||||
ticks = "8";
|
||||
value = "0.8";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiMLTextCtrl(OptAudioInfo) {
|
||||
Profile = "GuiMLTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "149 10";
|
||||
Extent = "190 112";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
lineSpacing = "2";
|
||||
allowColorChars = "0";
|
||||
maxChars = "-1";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiPopUpMenuCtrl(OptAudioDriverList) {
|
||||
Profile = "GuiPopUpMenuProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "10 32";
|
||||
Extent = "120 20";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
maxLength = "255";
|
||||
maxPopupHeight = "200";
|
||||
helpTag = "0";
|
||||
};
|
||||
new GuiTextCtrl() {
|
||||
Profile = "GuiTextProfile";
|
||||
HorizSizing = "right";
|
||||
VertSizing = "bottom";
|
||||
position = "11 9";
|
||||
Extent = "63 18";
|
||||
MinExtent = "8 8";
|
||||
Visible = "1";
|
||||
text = "Audio Driver:";
|
||||
maxLength = "255";
|
||||
helpTag = "0";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|
BIN
example/tutorial.base/client/ui/optionsDlg.gui.dso
Executable file
16
example/tutorial.base/client/ui/playGui.gui
Executable file
@ -0,0 +1,16 @@
|
||||
//--- OBJECT WRITE BEGIN ---
|
||||
new GameTSCtrl(PlayGui) {
|
||||
canSaveDynamicFields = "1";
|
||||
profile = "GuiContentProfile";
|
||||
horizSizing = "right";
|
||||
vertSizing = "bottom";
|
||||
position = "0 0";
|
||||
extent = "640 480";
|
||||
minExtent = "8 8";
|
||||
visible = "1";
|
||||
cameraZRot = "0";
|
||||
forceFOV = "0";
|
||||
noCursor = "1";
|
||||
helpTag = "0";
|
||||
};
|
||||
//--- OBJECT WRITE END ---
|