diff options
author | Eugene Sandulenko | 2010-07-29 19:53:02 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2010-10-12 21:38:20 +0000 |
commit | a683a420a9e43705c972b5e74d55e319729e1a81 (patch) | |
tree | bde6e4abd417bdfaec120aa951da9a19be36b654 /engines/sword25/fmv/movieplayer_script.cpp | |
parent | 7723d91c957d07205c51be32498d45cd0a78568f (diff) | |
download | scummvm-rg350-a683a420a9e43705c972b5e74d55e319729e1a81.tar.gz scummvm-rg350-a683a420a9e43705c972b5e74d55e319729e1a81.tar.bz2 scummvm-rg350-a683a420a9e43705c972b5e74d55e319729e1a81.zip |
SWORD25: Importing original sources
svn-id: r53171
Diffstat (limited to 'engines/sword25/fmv/movieplayer_script.cpp')
-rwxr-xr-x | engines/sword25/fmv/movieplayer_script.cpp | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/engines/sword25/fmv/movieplayer_script.cpp b/engines/sword25/fmv/movieplayer_script.cpp new file mode 100755 index 0000000000..c5160122d0 --- /dev/null +++ b/engines/sword25/fmv/movieplayer_script.cpp @@ -0,0 +1,187 @@ +// ----------------------------------------------------------------------------- +// This file is part of Broken Sword 2.5 +// Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdörfer +// +// Broken Sword 2.5 is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// Broken Sword 2.5 is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Broken Sword 2.5; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// ----------------------------------------------------------------------------- + +// ----------------------------------------------------------------------------- +// Includes +// ----------------------------------------------------------------------------- + +#include "kernel/common.h" +#include "kernel/kernel.h" +#include "script/script.h" +#include "script/luabindhelper.h" + +#include "movieplayer.h" + +namespace +{ + // ------------------------------------------------------------------------- + + int LoadMovie(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushbooleancpp(L, FMVPtr->LoadMovie(luaL_checkstring(L, 1), lua_gettop(L) == 2 ? static_cast<unsigned int>(luaL_checknumber(L, 2)) : 10)); + + return 1; + } + + // ------------------------------------------------------------------------- + + int UnloadMovie(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushbooleancpp(L, FMVPtr->UnloadMovie()); + + return 1; + } + + // ------------------------------------------------------------------------- + + int Play(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushbooleancpp(L, FMVPtr->Play()); + + return 1; + } + + // ------------------------------------------------------------------------- + + int Pause(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushbooleancpp(L, FMVPtr->Pause()); + + return 1; + } + + // ------------------------------------------------------------------------- + + int Update(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + FMVPtr->Update(); + + return 0; + } + + // ------------------------------------------------------------------------- + + int IsMovieLoaded(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushbooleancpp(L, FMVPtr->IsMovieLoaded()); + + return 1; + } + + // ------------------------------------------------------------------------- + + int IsPaused(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushbooleancpp(L, FMVPtr->IsPaused()); + + return 1; + } + + // ------------------------------------------------------------------------- + + int GetScaleFactor(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushnumber(L, FMVPtr->GetScaleFactor()); + + return 1; + } + + // ------------------------------------------------------------------------- + + int SetScaleFactor(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + FMVPtr->SetScaleFactor(static_cast<float>(luaL_checknumber(L, 1))); + + return 0; + } + + // ------------------------------------------------------------------------- + + int GetTime(lua_State * L) + { + BS_MoviePlayer * FMVPtr = BS_Kernel::GetInstance()->GetFMV(); + BS_ASSERT(FMVPtr); + + lua_pushnumber(L, FMVPtr->GetTime()); + + return 1; + } + + // ------------------------------------------------------------------------- + + const char * LIBRARY_NAME = "Movieplayer"; + + const luaL_reg LIBRARY_FUNCTIONS[] = + { + "LoadMovie", LoadMovie, + "UnloadMovie", UnloadMovie, + "Play", Play, + "Pause", Pause, + "Update", Update, + "IsMovieLoaded", IsMovieLoaded, + "IsPaused", IsPaused, + "GetScaleFactor", GetScaleFactor, + "SetScaleFactor", SetScaleFactor, + "GetTime", GetTime, + 0, 0, + }; +} + +// ----------------------------------------------------------------------------- + +bool BS_MoviePlayer::_RegisterScriptBindings() +{ + BS_Kernel * pKernel = BS_Kernel::GetInstance(); + BS_ASSERT(pKernel); + BS_ScriptEngine * pScript = static_cast<BS_ScriptEngine *>(pKernel->GetService("script")); + BS_ASSERT(pScript); + lua_State * L = static_cast<lua_State *>(pScript->GetScriptObject()); + BS_ASSERT(L); + + if (!BS_LuaBindhelper::AddFunctionsToLib(L, LIBRARY_NAME, LIBRARY_FUNCTIONS)) return false; + + return true; +} |