Difference between revisions of "Adding LuaScriptModule to Sample FirstWindow"
From CEGUI Wiki - Crazy Eddie's GUI System (Open Source)
(→Create a Lua State) |
m (testing obsolete warning) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{VersionBadge|0.3}} | ||
+ | {{ObsoleteWarning}} | ||
+ | |||
This applies to the CEGUI 0.3.0 Release. | This applies to the CEGUI 0.3.0 Release. | ||
== Enable logging == | == Enable logging == | ||
− | Lua scripts get a lot of bugs. | + | Lua scripts get a lot of bugs. Without logging, you will never know why your application simply quits without stepping through every line of code. |
In CEGuiSample.cpp | In CEGuiSample.cpp | ||
+ | <source lang="cpp"> | ||
bool CEGuiSample::initialise() | bool CEGuiSample::initialise() | ||
{ | { | ||
Line 25: | Line 29: | ||
// execute the base application (which sets up the demo via 'this' and runs it. | // execute the base application (which sets up the demo via 'this' and runs it. | ||
if (d_sampleApp->execute(this)) | if (d_sampleApp->execute(this)) | ||
+ | </source> | ||
== Create a Lua State == | == Create a Lua State == | ||
In Sample_FirstWindow.cpp | In Sample_FirstWindow.cpp | ||
+ | <source lang="cpp"> | ||
#include "CEGUI.h" | #include "CEGUI.h" | ||
+ #include "../ScriptingModules/CEGUILua/LuaScriptModule/include/LuaScriptModule.h" | + #include "../ScriptingModules/CEGUILua/LuaScriptModule/include/LuaScriptModule.h" | ||
− | + | </source> | |
In Sample_FirstWindow.cpp | In Sample_FirstWindow.cpp | ||
+ | <source lang="cpp"> | ||
bool FirstWindowSample::initialiseSample() | bool FirstWindowSample::initialiseSample() | ||
{ | { | ||
Line 47: | Line 54: | ||
+ // call a script from our the datafiles | + // call a script from our the datafiles | ||
+ lua->executeScriptFile("../datafiles/scripts/sample.lua", "test"); | + lua->executeScriptFile("../datafiles/scripts/sample.lua", "test"); | ||
− | + | </source> | |
== Create a Lua Script == | == Create a Lua Script == | ||
Line 54: | Line 61: | ||
Create sample.lua | Create sample.lua | ||
+ | <source lang="lua"> | ||
-- get the GUI sheet | -- get the GUI sheet | ||
local sheet = CEGUI.WindowManager:getSingleton():getWindow("Root"); | local sheet = CEGUI.WindowManager:getSingleton():getWindow("Root"); | ||
Line 70: | Line 78: | ||
-- disable user sizing | -- disable user sizing | ||
fw:setProperty("SizingEnabled","False") | fw:setProperty("SizingEnabled","False") | ||
+ | </source> | ||
== Running == | == Running == | ||
Now just compile and run. | Now just compile and run. |
Latest revision as of 00:39, 2 March 2011
Written for CEGUI 0.3
Works with versions 0.3.x (obsolete)
Obsolete warning: This article has been written for an old version of CEGUI and likely doesn't apply to current stable!
This applies to the CEGUI 0.3.0 Release.
Enable logging
Lua scripts get a lot of bugs. Without logging, you will never know why your application simply quits without stepping through every line of code.
In CEGuiSample.cpp
bool CEGuiSample::initialise() { . . . default: // TODO: Throw exception or something! + return false; - break; } + CEGUI::Logger *logger = &CEGUI::Logger::getSingleton(); + logger->setLoggingLevel( CEGUI::Informative ); +#if defined( __WIN32__ ) || defined( _WIN32 ) + logger->setLogFilename( "C:\\Sample_FirstWindow.log", true ); +#elif defined(linux) + logger->setLogFilename( "~/Sample_FirstWindow.log", true ); +#else + logger->setLogFilename( "Sample_FirstWindow.log", true ); +#endif // execute the base application (which sets up the demo via 'this' and runs it. if (d_sampleApp->execute(this))
Create a Lua State
In Sample_FirstWindow.cpp
#include "CEGUI.h" + #include "../ScriptingModules/CEGUILua/LuaScriptModule/include/LuaScriptModule.h"
In Sample_FirstWindow.cpp
bool FirstWindowSample::initialiseSample() { using namespace CEGUI; + // create a lua_state by using [[User:Lindquist|Lindquist]]'s awesome LuaScriptModule + LuaScriptModule* lua = new LuaScriptModule(); + // create the CEGUI namespace in the Lua environment + lua->createBindings(); . . . // DefaultWindow which we will be using as the root of the displayed gui. root->addChildWindow(wnd); + // call a script from our the datafiles + lua->executeScriptFile("../datafiles/scripts/sample.lua", "test");
Create a Lua Script
In the Samples\datafiles directory Create a scripts directory
Create sample.lua
-- get the GUI sheet local sheet = CEGUI.WindowManager:getSingleton():getWindow("Root"); -- create a FrameWindow local fw = CEGUI.WindowManager:getSingleton():createWindow ("TaharezLook/FrameWindow","framewnd"); -- add it to the sheet sheet:addChildWindow(fw) -- set its size and position local sz = CEGUI.Size:new_local(0.5,0.5) local pos = CEGUI.Point:new_local(0.2,0.1) fw:setSize(sz) fw:setPosition(pos) fw:setText("Lua says Hello World!") -- disable user sizing fw:setProperty("SizingEnabled","False")
Running
Now just compile and run.