T2DBasicTutorial1 CompleteSourceCode

From TDN

Here is the completed code (torquescript) of the Basic Tutorial (client.cs)

this is for T2D v1.0.2

//-----------------------------------------------------------------------------

// Torque 2D. 

// Copyright (C) GarageGames.com, Inc.

//-----------------------------------------------------------------------------

 

// --------------------------------------------------------------------

// Initialise Client.

// --------------------------------------------------------------------

function initialiseClient()

{

     // Initialise Base Client.

     InitBaseClient();

     

     // Key-Bindings.

     GlobalActionMap.bind(keyboard, tilde, ToggleConsole);

     GlobalActionMap.bindCmd(keyboard, "alt enter", "", "toggleFullScreen();");

     

          

     // Initialise Canvas.

     InitCanvas("T2D");

 

     

     // ************************************************************************

     // Load-up Demo Datablocks.

     // NOTE:- Remove this is you're not interested in running the demos

     //            or any or the default datablocks.

     // ************************************************************************

     exec("./demoDatablocks.cs");

     

     

     

     // Load-up Datablocks.  

     exec("./datablocks.cs");

     // Load-up GUIs.

     exec("./mainScreenGui.gui");

     

     // Set GUI.

     Canvas.setContent(mainScreenGui);

     // Set Cursor.

     Canvas.setCursor(DefaultCursor);

     

   // Setup Scene.

     setupT2DScene();

}

 

 

// --------------------------------------------------------------------

// Destroy Client.

//

// Here we destroy the SceneGraph.

// --------------------------------------------------------------------

function destroyClient()

{

     // Destroy fxSceneGraph2D.

     if ( isObject(t2dSceneGraph) )

          t2dSceneGraph.delete(); 

}

 

 

// --------------------------------------------------------------------

// Setup T2D Scene.

// --------------------------------------------------------------------

function setupT2DScene()

{

     // Create fxSceneGraph2D.

     new fxSceneGraph2D(t2dSceneGraph);

     

     // Associate Scenegraph with Window.

     sceneWindow2D.setSceneGraph( t2dSceneGraph );

     

     // Set Camera Position to be centered on (0,0) with

     // view width/height of (100/80).

     sceneWindow2D.setCurrentCameraPosition( "0 0 100 75" );

 

     

     // ************************************************************************

     //

     // Add your custom code here...

     //

     // ************************************************************************

     

          

     // Set up the images for the game

     SetupImages();

 

     // Set up the player's stuff

     CreatePlayer();

 

 

 

     // Set up the enemy

CreateEnemy();

 

     //Create Tilemap

     CreateTileMap();

}

 

function CreateEnemy()

{

     // Create an enemy ship

     %enemy = new fxStaticSprite2D() { scenegraph = t2dSceneGraph; };

     %enemy.setImageMap( enemyship1ImageMap );

     %enemy.setSize( "14 7" );

     %enemy.setPosition("40" SPC (-30 + (getRandom() * 60)));

     // Move the enemy towards us.

     %enemy.setLinearVelocityX(-20);

     // Create an enemy missile and fire it

     %enemyFire = new fxStaticSprite2D() { scenegraph = t2dSceneGraph; };

     %enemyFire.setPosition( %enemy.getPosition() );

     %enemyFire.setSize( "3 1.5" );

     %enemyFire.setImageMap( enemymissileImageMap );

     %enemyFire.setLinearVelocityX( -35 );

     %enemyFire.setWorldLimit( kill, "-60 -40 60 40" );

 

     //add thrusters

     attachThruster( %enemy, "0.8 -0.12", 180 );

     attachThruster( %enemy, "0.8 0.18", 180 );

 

 

     // Set enemy collision info

     %enemy.setGroup( 2 );

     %enemy.setLayer( 2 );

     %enemy.setCollisionActive( true, true );

     %enemy.setCollisionMaterial( standardMaterial );

     %enemy.setCollisionPolyCustom( 5, "-0.9 0 0 -0.6 1 -0.3 1 0.3 0 0.5" );

     %enemy.setCollisionMasks( BIT(1), BIT(1) );

     %enemy.setCollisionCallback( true );

     // Set up collision info

     %enemyFire.setGroup( 2 );

     %enemyFire.setLayer( 2 );

     %enemyFire.setCollisionActive( true, true );

     %enemyFire.setCollisionMaterial( standardMaterial );

     %enemyFire.setCollisionScale("0.9 0.5");

     %enemyFire.setCollisionMasks( BIT(1), BIT(1) );

     %enemyFire.setCollisionCallback( true );

 

     

     schedule(2000, 0, "CreateEnemy");

}

 

function CreatePlayer()

{

     // Create the player's ship sprite

     $player = new fxStaticSprite2D() { scenegraph = t2dSceneGraph; };

     $player.setPosition("-35 0");

     $player.setSize( "14 7" );

     $player.setImageMap( playershipImageMap );

     $player.fireLinkPoint = $player.addLinkPoint( "0.45 0.2" );

     $player.setWorldLimit( clamp, "-49 -37 40 37" );

 

     //add thruster

     attachThruster( $player, "-0.12 -0.33", 0 );

 

     // Create a new action map.

     new ActionMap(playerMap);

     // Bind keys to actions.

     playerMap.bindCmd(keyboard, "w", "playerUp();", "playerUpStop();");

     playerMap.bindCmd(keyboard, "s", "playerDown();", "playerDownStop();");

     playerMap.bindCmd(keyboard, "a", "playerLeft();", "playerLeftStop();");

     playerMap.bindCmd(keyboard, "d", "playerRight();", "playerRightStop();");

     playerMap.bindCmd(keyboard, "space", "playerFire();", "");

     // Activate the action map.

     playerMap.push();

 

     // Set player's collision info:

$player.setGroup( 1 );

$player.setLayer( 1 );

$player.setCollisionActive( true, true );

$player.setCollisionMaterial( standardMaterial );

$player.setCollisionPolyCustom( 4, "-1 0 -0.1 -0.6 0.98 0.15 -0.1 0.7" );

$player.setCollisionMasks( BIT(2), BIT(2) );

$player.setCollisionCallback( true );

}

 

function SetupImages()

{

     // Create an image for the player ship

     datablock fxImageMapDatablock2D(playershipImageMap)

     {

     mode = full;

     textureName = "~/client/images/playerShip";

     };

          // Create an image for the player's missiles

     datablock fxImageMapDatablock2D(playermissileImageMap)

     {

     mode = full;

     textureName = "~/client/images/playerMissile";

     };

     // Create an image for enemy ships

     datablock fxImageMapDatablock2D(enemyship1ImageMap)

     {

     mode = full;

     textureName = "~/client/images/enemyship1";

     };

     // Create an image for the enemy's missiles

     datablock fxImageMapDatablock2D(enemymissileImageMap)

     {

     mode = full;

     textureName = "~/client/images/enemyMissile";

     };

 

          // Create images for the tilemap

     datablock fxImageMapDatablock2D(bgBlankSkyImageMap)

     {

     mode = full;

     textureName = "~/client/images/bg_blank_sky";

     };

     datablock fxImageMapDatablock2D(bgCloud1ImageMap)

     {

     mode = full;

     textureName = "~/client/images/bg_cloud_1";

     };

     datablock fxImageMapDatablock2D(bgCloud2ImageMap)

     {

     mode = full;

     textureName = "~/client/images/bg_cloud_2";

     };

     datablock fxImageMapDatablock2D(bgCloud3aImageMap)

     {

     mode = full;

     textureName = "~/client/images/bg_cloud_3a";

     };

     datablock fxImageMapDatablock2D(bgCloud3bImageMap)

     {

     mode = full;

     textureName = "~/client/images/bg_cloud_3b";

     };

}

 

 

function playerUp()

{

// Set the player moving up.

$player.setLinearVelocityY( -10 );

}

 

function playerUpStop()

{

$player.setLinearVelocityY( 0 );

}

 

function playerUpStop()

{

// If we're moving up then nullify any upward movement.

if ( $player.getLinearVelocityY() < 0 )

$player.setLinearVelocityY( 0 );

}

 

function playerDown()

{

// Set the player moving down.

$player.setLinearVelocityY( 10 );

}

function playerDownStop()

{

// If we're moving down then nullify any downward movement.

if ( $player.getLinearVelocityY() > 0 )

$player.setLinearVelocityY( 0 );

}

function playerLeft()

{

// Set the player moving left.

$player.setLinearVelocityX( -10 );

}

function playerLeftStop()

{

// If we're moving left then nullify any leftward movement.

if ( $player.getLinearVelocityX() < 0 )

$player.setLinearVelocityX( 0 );

}

function playerRight()

{

// Set the player moving right.

$player.setLinearVelocityX( 10 );

}

function playerRightStop()

{

// If we're moving right then nullify any rightward movement.

if ( $player.getLinearVelocityX() > 0 )

$player.setLinearVelocityX( 0 );

}

 

 

function playerFire()

{

     // Create player projectile.

     %projectile = new fxStaticSprite2D() { scenegraph = t2dSceneGraph; };

     %projectile.setPosition( $player.getLinkPoint($player.fireLinkPoint) );

     %projectile.setSize( "3 1.5" );

     %projectile.setImageMap( playermissileImageMap );

     %projectile.setWorldLimit( kill, "-52 -40 52 40" );

     %projectile.setLinearVelocityX( 35 );

     // Setup collision info

     %projectile.setGroup( 1 );

     %projectile.setLayer( 1 );

     %projectile.setCollisionActive(true, true);

     %projectile.setCollisionMaterial(projectileMaterial);

     %projectile.setCollisionScale("0.9 0.5");

     %projectile.setCollisionMasks( BIT(2), BIT(2));

     %projectile.setCollisionCallback( true );

}

 

function KillPlayer()

{

     $player.setVisible( false );

     playerMap.pop();

     schedule(2000, 0, "ResetPlayer");

}

 

function ResetPlayer()

{

     $player.setPosition("-35 0");

     $player.setVisible(true);

     playerMap.push();

}

 

function fxSceneObject2D::onCollision( %srcObj, %dstObj, %srcRef, %dstRef, %time, %normal, %contactCount, %contacts )

{

     // Create an explosion for the collision that just occurred

     createExplosion( %dstObj );

     if (%srcObj == $player)

     {

     KillPlayer();

     %dstObj.safeDelete();

     }

     else if (%dstObj == $player)

     {

     KillPlayer();

     %srcObj.safeDelete();

     }

     else

     {

     %srcObj.safeDelete();

     %dstObj.safeDelete();

     }

}

 

function CreateTileMap()

{

     // Create tile-map.

     %scrollerMap = new fxTileMap2D() { scenegraph = t2dSceneGraph; };

     // Load saved tile-map file.

     %scrollerMap.loadTileMap("~/client/maps/scroller.map");

     // Load tile layer from tile-map

     %skyLayer = %scrollerMap.getTileLayer( 0 );

     // Generate Scrolling Sky, re-size to fill the whole screen

     %skyLayer.setPosition( "0 -10" );

     %skyLayer.setTileSize( "25 25" );

     %skyLayer.setWrap( true, false );

     %skyLayer.setAutoPan( "10 0" );

}

 

function attachThruster(%mountObj, %mountPosition, %angle)

{

     // Create Player Thruster.

     %thruster = new fxParticleEffect2D() { scenegraph = t2dSceneGraph; };

     %thruster.loadEffect("~/client/effects/smallThruster.eff");

     %thruster.mount( %mountObj, %mountPosition, 0, false );

     %thruster.setRotation( %angle );

     %thruster.playEffect();

}

 

function createExplosion( %object )

{

     // Ignore if object not around anymore.

     if ( !isObject(%object) )

     return;

     // Shockwave Explosion.

     %explosion = new fxParticleEffect2D() { scenegraph = t2dSceneGraph; };

     %explosion.loadEffect("t2d/client/effects/shockwave_burst.eff");

     %explosion.setPosition( %object.getPosition() );

     %explosion.setEffectLifeMode( kill, 0.1 );

     %explosion.playEffect();

}