From fb5d14dddf180a369617968bc3b14492ded329af Mon Sep 17 00:00:00 2001 From: krzys-h Date: Wed, 1 May 2013 22:11:08 +0200 Subject: Functions playmusic(filename, repeat) and stopmusic() for MissionController Parameter repeat can be 0 or 1 --- src/script/script.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- src/script/script.h | 3 +++ 2 files changed, 51 insertions(+), 2 deletions(-) (limited to 'src/script') diff --git a/src/script/script.cpp b/src/script/script.cpp index 5c430d7..d108c7a 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -39,6 +39,8 @@ #include "script/cbottoken.h" +#include "sound/sound.h" + #include "ui/interface.h" #include "ui/edit.h" #include "ui/list.h" @@ -313,7 +315,7 @@ bool CScript::rAbs(CBotVar* var, CBotVar* result, int& exception, void* user) return true; } -// Compilation of the instruction "endmission(result)" +// Compilation of the instruction "endmission(result, delay)" CBotTypResult CScript::cEndMission(CBotVar* &var, void* user) { @@ -327,7 +329,7 @@ CBotTypResult CScript::cEndMission(CBotVar* &var, void* user) return CBotTypResult(CBotTypFloat); } -// Instruction "endmission(result)" +// Instruction "endmission(result, delay)" bool CScript::rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user) { @@ -343,6 +345,48 @@ bool CScript::rEndMission(CBotVar* var, CBotVar* result, int& exception, void* u return true; } +// Compilation of the instruction "playmusic(filename, repeat)" + +CBotTypResult CScript::cPlayMusic(CBotVar* &var, void* user) +{ + if ( var == 0 ) return CBotTypResult(CBotErrLowParam); + if ( var->GetType() != CBotTypString ) return CBotTypResult(CBotErrBadNum); + var = var->GetNext(); + if ( var == 0 ) return CBotTypResult(CBotErrLowParam); + if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); + var = var->GetNext(); + if ( var != 0 ) return CBotTypResult(CBotErrOverParam); + return CBotTypResult(CBotTypFloat); +} + +// Instruction "playmusic(filename, repeat)" + +bool CScript::rPlayMusic(CBotVar* var, CBotVar* result, int& exception, void* user) +{ + std::string filename; + CBotString cbs; + bool repeat; + + cbs = var->GetValString(); + filename = std::string(cbs); + var = var->GetNext(); + + repeat = var->GetValInt(); + + CApplication::GetInstancePointer()->GetSound()->StopMusic(); + CApplication::GetInstancePointer()->GetSound()->PlayMusic(filename, repeat); + return true; +} + +// Instruction "stopmusic()" + +bool CScript::rStopMusic(CBotVar* var, CBotVar* result, int& exception, void* user) +{ + CApplication::GetInstancePointer()->GetSound()->StopMusic(); + return true; +} + + // Compilation of the instruction "retobject(rank)". CBotTypResult CScript::cGetObject(CBotVar* &var, void* user) @@ -2982,6 +3026,8 @@ void CScript::InitFonctions() CBotProgram::AddFunction("abs", rAbs, CScript::cOneFloat); CBotProgram::AddFunction("endmission",rEndMission,CScript::cEndMission); + CBotProgram::AddFunction("playmusic", rPlayMusic ,CScript::cPlayMusic); + CBotProgram::AddFunction("stopmusic", rStopMusic ,CScript::cNull); CBotProgram::AddFunction("retobject", rGetObject, CScript::cGetObject); CBotProgram::AddFunction("destroy", rDestroy, CScript::cDestroy); diff --git a/src/script/script.h b/src/script/script.h index 956aca6..535b974 100644 --- a/src/script/script.h +++ b/src/script/script.h @@ -100,6 +100,7 @@ private: static CBotTypResult cTwoFloat(CBotVar* &var, void* user); static CBotTypResult cString(CBotVar* &var, void* user); static CBotTypResult cEndMission(CBotVar* &var, void* user); + static CBotTypResult cPlayMusic(CBotVar* &var, void* user); static CBotTypResult cGetObject(CBotVar* &var, void* user); static CBotTypResult cDestroy(CBotVar* &var, void* user); static CBotTypResult cSearch(CBotVar* &var, void* user); @@ -136,6 +137,8 @@ private: static bool rRand(CBotVar* var, CBotVar* result, int& exception, void* user); static bool rAbs(CBotVar* var, CBotVar* result, int& exception, void* user); static bool rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user); + static bool rPlayMusic(CBotVar* var, CBotVar* result, int& exception, void* user); + static bool rStopMusic(CBotVar* var, CBotVar* result, int& exception, void* user); static bool rGetObject(CBotVar* var, CBotVar* result, int& exception, void* user); static bool rDestroy(CBotVar* var, CBotVar* result, int& exception, void* user); static bool rSearch(CBotVar* var, CBotVar* result, int& exception, void* user); -- cgit v1.2.3-1-g7c22