From 7e5d2f3eace65e3913ff80c2704d3c3eaed73f90 Mon Sep 17 00:00:00 2001 From: Areloch Date: Mon, 27 Mar 2017 00:36:23 -0500 Subject: [PATCH] Additional cleanup and add-in of files that were missed. --- Templates/BaseGame/game/core/main.cs | 3 - Templates/BaseGame/game/core/screenshot.cs | 143 ---------------- Templates/BaseGame/game/data/ui/UI.cs | 7 +- .../game/data/ui/scripts/FileDialog.cs | 2 - .../game/data/ui/scripts/guis/startupGui.gui | 79 +++++++++ .../game/data/ui/scripts/startupGui.cs | 155 ++++++++++++++++++ 6 files changed, 239 insertions(+), 150 deletions(-) delete mode 100644 Templates/BaseGame/game/core/screenshot.cs create mode 100644 Templates/BaseGame/game/data/ui/scripts/guis/startupGui.gui create mode 100644 Templates/BaseGame/game/data/ui/scripts/startupGui.cs diff --git a/Templates/BaseGame/game/core/main.cs b/Templates/BaseGame/game/core/main.cs index 04216e59d..a8a396f41 100644 --- a/Templates/BaseGame/game/core/main.cs +++ b/Templates/BaseGame/game/core/main.cs @@ -83,13 +83,10 @@ exec("./gfxData/water.cs"); exec("./gfxData/scatterSky.cs"); exec("./gfxData/clouds.cs"); -exec("./screenshot.cs"); - // Initialize all core post effects. exec("./postFx.cs"); //VR stuff -exec("./oculusVROverlay.gui"); exec("./oculusVR.cs"); // Seed the random number generator. diff --git a/Templates/BaseGame/game/core/screenshot.cs b/Templates/BaseGame/game/core/screenshot.cs deleted file mode 100644 index 3c78aa2cd..000000000 --- a/Templates/BaseGame/game/core/screenshot.cs +++ /dev/null @@ -1,143 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (c) 2012 GarageGames, LLC -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -// IN THE SOFTWARE. -//----------------------------------------------------------------------------- - -//--------------------------------------------------------------------------------------------- -// formatImageNumber -// Preceeds a number with zeros to make it 6 digits long. -//--------------------------------------------------------------------------------------------- -function formatImageNumber(%number) -{ - if(%number < 10) - %number = "0" @ %number; - if(%number < 100) - %number = "0" @ %number; - if(%number < 1000) - %number = "0" @ %number; - if(%number < 10000) - %number = "0" @ %number; - return %number; -} - -//--------------------------------------------------------------------------------------------- -// formatSessionNumber -// Preceeds a number with zeros to make it 4 digits long. -//--------------------------------------------------------------------------------------------- -function formatSessionNumber(%number) -{ - if(%number < 10) - %number = "0" @ %number; - if(%number < 100) - %number = "0" @ %number; - return %number; -} - -//--------------------------------------------------------------------------------------------- -// recordMovie -// Records a movie file from the Canvas content using the specified fps. -// Possible encoder values are "PNG" and "THEORA" (default). -//--------------------------------------------------------------------------------------------- - -$RecordingMovie = false; - -function recordMovie(%movieName, %fps, %encoder) -{ - // If the canvas doesn't exist yet, setup a flag so it'll - // start capturing as soon as it's created - if (!isObject(Canvas)) - return; - - if (%encoder $= "") - %encoder = "THEORA"; - %resolution = Canvas.getVideoMode(); - - // Start the movie recording - ChatHud.AddLine( "\c4Recording movie file to [\c2" @ %movieName @ "\cr].ogv."); - echo("Recording movie to: " @ %movieName); - startVideoCapture(Canvas, %movieName, %encoder, %fps); - - $RecordingMovie = true; -} - -function stopMovie() -{ - // Stop the current recording - ChatHud.AddLine( "\c4Recording movie file finished."); - echo("Stopped movie recording"); - - stopVideoCapture(); - - $RecordingMovie = false; -} - -/// This is bound in initializeCommon() to take -/// a screenshot on a keypress. -function doScreenShot( %val ) -{ - // This can be bound, so skip key up events. - if ( %val == 0 ) - return; - - _screenShot( 1 ); -} - -/// A counter for screen shots used by _screenShot(). -$screenshotNumber = 0; - -/// Internal function which generates unique filename -/// and triggers a screenshot capture. -function _screenShot( %tiles, %overlap ) -{ - if ( $pref::Video::screenShotSession $= "" ) - $pref::Video::screenShotSession = 0; - - if ( $screenshotNumber == 0 ) - $pref::Video::screenShotSession++; - - if ( $pref::Video::screenShotSession > 999 ) - $pref::Video::screenShotSession = 1; - - %name = "screenshot_" @ formatSessionNumber($pref::Video::screenShotSession) @ "-" @ - formatImageNumber($screenshotNumber); - %name = expandFileName( %name ); - - $screenshotNumber++; - - if ( ( $pref::Video::screenShotFormat $= "JPEG" ) || - ( $pref::video::screenShotFormat $= "JPG" ) ) - screenShot( %name, "JPEG", %tiles, %overlap ); - else - screenShot( %name, "PNG", %tiles, %overlap ); -} - -/// This will close the console and take a large format -/// screenshot by tiling the current backbuffer and save -/// it to the root game folder. -/// -/// For instance a tile setting of 4 with a window set to -/// 800x600 will output a 3200x2400 screenshot. -function tiledScreenShot( %tiles, %overlap ) -{ - // Pop the console off before we take the shot. - Canvas.popDialog( ConsoleDlg ); - - _screenShot( %tiles, %overlap ); -} diff --git a/Templates/BaseGame/game/data/ui/UI.cs b/Templates/BaseGame/game/data/ui/UI.cs index bac90023c..eac7f9232 100644 --- a/Templates/BaseGame/game/data/ui/UI.cs +++ b/Templates/BaseGame/game/data/ui/UI.cs @@ -39,8 +39,9 @@ function UI::create( %this ) exec("./scripts/guis/profiler.gui"); exec("./scripts/guis/netGraphGui.gui"); - exec("./scripts/guis/FilDialog.gui"); + exec("./scripts/guis/FileDialog.gui"); exec("./scripts/guis/guiMusicPlayer.gui"); + exec("./scripts/guis/startupGui.gui"); //Load gui companion scripts exec("./scripts/chooseLevelDlg.cs"); @@ -59,10 +60,12 @@ function UI::create( %this ) exec("./scripts/FileDialog.cs"); exec("./scripts/GuiTreeViewCtrl.cs"); exec("./scripts/guiMusicPlayer.cs"); + exec("./scripts/startupGui.cs"); %dbList = new ArrayObject(LevelFilesList); - Canvas.pushDialog(MainMenuGui); + loadStartup(); + //Canvas.pushDialog(MainMenuGui); } function Game::destroy( %this ) diff --git a/Templates/BaseGame/game/data/ui/scripts/FileDialog.cs b/Templates/BaseGame/game/data/ui/scripts/FileDialog.cs index c5e693a80..4d67fd969 100644 --- a/Templates/BaseGame/game/data/ui/scripts/FileDialog.cs +++ b/Templates/BaseGame/game/data/ui/scripts/FileDialog.cs @@ -1,5 +1,3 @@ -exec("./FileDialog.gui"); - function PlatformFileDialog::buildFilters(%this) { %str = strreplace( %this.data.filters, "|", "\t"); diff --git a/Templates/BaseGame/game/data/ui/scripts/guis/startupGui.gui b/Templates/BaseGame/game/data/ui/scripts/guis/startupGui.gui new file mode 100644 index 000000000..ad7afcf63 --- /dev/null +++ b/Templates/BaseGame/game/data/ui/scripts/guis/startupGui.gui @@ -0,0 +1,79 @@ +//--- OBJECT WRITE BEGIN --- +%guiContent = new GuiFadeinBitmapCtrl(StartupGui) { + canSaveDynamicFields = "0"; + Enabled = "1"; + isContainer = "1"; + Profile = "GuiInputCtrlProfile"; + HorizSizing = "right"; + VertSizing = "bottom"; + position = "0 0"; + Extent = "800 600"; + MinExtent = "8 8"; + canSave = "1"; + Visible = "1"; + tooltipprofile = "GuiToolTipProfile"; + hovertime = "1000"; + bitmap = ""; + wrap = "0"; + fadeinTime = "1000"; + waitTime = "4000"; + fadeoutTime = "1000"; + done = "1"; + + new GuiBitmapButtonCtrl() { + canSaveDynamicFields = "1"; + internalName = "StartupLogo"; + Enabled = "1"; + isContainer = "0"; + Profile = "GuiDefaultProfile"; + HorizSizing = "center"; + VertSizing = "center"; + position = "399 302"; + Extent = "253 253"; + MinExtent = "8 2"; + canSave = "1"; + Visible = "1"; + tooltipprofile = "GuiToolTipProfile"; + hovertime = "1000"; + bitmap = ""; + wrap = "0"; + command = "StartupGui.click();"; + }; + new GuiBitmapButtonCtrl() { + canSaveDynamicFields = "1"; + internalName = "StartupLogoSecondary"; + Enabled = "1"; + isContainer = "0"; + Profile = "GuiDefaultProfile"; + HorizSizing = "left"; + VertSizing = "top"; + position = "275 440"; + Extent = "530 171"; + MinExtent = "8 2"; + canSave = "1"; + Visible = "1"; + tooltipprofile = "GuiToolTipProfile"; + hovertime = "1000"; + bitmap = ""; + wrap = "0"; + command = "StartupGui.click();"; + }; +}; +//--- OBJECT WRITE END --- +//--- OBJECT WRITE BEGIN --- +new GuiFadeinBitmapCtrl(BlankGui) { + profile = "GuiInputCtrlProfile"; + horizSizing = "right"; + vertSizing = "bottom"; + position = "0 0"; + extent = "800 600"; + minExtent = "8 8"; + visible = "1"; + helpTag = "0"; + bitmap = ""; + wrap = "0"; + fadeinTime = "100"; + waitTime = "2000"; + fadeoutTime = "100"; +}; +//--- OBJECT WRITE END --- diff --git a/Templates/BaseGame/game/data/ui/scripts/startupGui.cs b/Templates/BaseGame/game/data/ui/scripts/startupGui.cs new file mode 100644 index 000000000..fc5095c2d --- /dev/null +++ b/Templates/BaseGame/game/data/ui/scripts/startupGui.cs @@ -0,0 +1,155 @@ +//----------------------------------------------------------------------------- +// Copyright (c) 2012 GarageGames, LLC +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// StartupGui is the splash screen that initially shows when the game is loaded +//----------------------------------------------------------------------------- + +function loadStartup() +{ + // The index of the current splash screen + $StartupIdx = 0; + + // A list of the splash screens and logos + // to cycle through. Note that they have to + // be in consecutive numerical order + StartupGui.bitmap[0] = "data/ui/art/background-dark"; + StartupGui.logo[0] = "data/ui/art/Torque-3D-logo"; + StartupGui.logoPos[0] = "178 251"; + StartupGui.logoExtent[0] = "443 139"; + + // Call the next() function to set our firt + // splash screen + StartupGui.next(); + + // Play our startup sound + //SFXPlayOnce(AudioGui, "art/sound/gui/startup");//SFXPlay(startsnd); +} + +function StartupGui::onWake(%this) +{ + $enableDirectInput = "1"; + activateDirectInput(); +} + +function StartupGui::click(%this) +{ + %this.done = true; + %this.onDone(); +} + +function StartupGui::next(%this) +{ + // Set us to a blank screen while we load the next one + Canvas.setContent(BlankGui); + + // Set our bitmap and reset the done variable + %this.setBitmap(%this.bitmap[$StartupIdx]); + %this.done = false; + + // If we have a logo then set it + if (isObject(%this->StartupLogo)) + { + if (%this.logo[$StartupIdx] !$= "") + { + %this->StartupLogo.setBitmap(%this.logo[$StartupIdx]); + + if (%this.logoPos[$StartupIdx] !$= "") + { + %logoPosX = getWord(%this.logoPos[$StartupIdx], 0); + %logoPosY = getWord(%this.logoPos[$StartupIdx], 1); + + %this->StartupLogo.setPosition(%logoPosX, %logoPosY); + } + + if (%this.logoExtent[$StartupIdx] !$= "") + %this->StartupLogo.setExtent(%this.logoExtent[$StartupIdx]); + + %this->StartupLogo.setVisible(true); + } + else + %this->StartupLogo.setVisible(false); + } + + // If we have a secondary logo then set it + if (isObject(%this->StartupLogoSecondary)) + { + if (%this.seclogo[$StartupIdx] !$= "") + { + %this->StartupLogoSecondary.setBitmap(%this.seclogo[$StartupIdx]); + + if (%this.seclogoPos[$StartupIdx] !$= "") + { + %logoPosX = getWord(%this.seclogoPos[$StartupIdx], 0); + %logoPosY = getWord(%this.seclogoPos[$StartupIdx], 1); + + %this->StartupLogoSecondary.setPosition(%logoPosX, %logoPosY); + } + + if (%this.seclogoExtent[$StartupIdx] !$= "") + %this->StartupLogoSecondary.setExtent(%this.seclogoExtent[$StartupIdx]); + + %this->StartupLogoSecondary.setVisible(true); + } + else + %this->StartupLogoSecondary.setVisible(false); + } + + // Increment our screen index for the next screen + $StartupIdx++; + + // Set the Canvas to our newly updated GuiFadeinBitmapCtrl + Canvas.setContent(%this); +} + +function StartupGui::onDone(%this) +{ + // If we have been tagged as done decide if we need + // to end or cycle to the next one + if (%this.done) + { + // See if we have a valid bitmap for the next screen + if (%this.bitmap[$StartupIdx] $= "") + { + // Clear our data and load the main menu + %this.done = true; + + // NOTE: Don't ever ever delete yourself during a callback from C++. + // + // Deleting the whole gui itself seems a bit excessive, what if we want + // to return to the startup gui at a later time? Any bitmaps set on + // the controls should be unloaded automatically if the control is not + // awake, if this is not the case then that's what needs to be fixed. + + //%this.delete(); + //BlankGui.delete(); + //flushTextureCache(); + + Canvas.setContent(MainMenuGui); + } + else + { + // We do have a bitmap so cycle to it + %this.next(); + } + } +}