diff options
author | krzys-h <krzys_h@interia.pl> | 2013-04-30 21:43:59 +0200 |
---|---|---|
committer | krzys-h <krzys_h@interia.pl> | 2013-04-30 21:43:59 +0200 |
commit | 643153d64dd25cb27fae76c9cc22e9bdaa2e352e (patch) | |
tree | f7b252a8595c85efb39fd851c025ae9d4ee84011 /src/script | |
parent | a06397d1af8128b3da45778216bd21db0bf630fc (diff) | |
download | colobot-643153d64dd25cb27fae76c9cc22e9bdaa2e352e.tar.gz colobot-643153d64dd25cb27fae76c9cc22e9bdaa2e352e.tar.bz2 colobot-643153d64dd25cb27fae76c9cc22e9bdaa2e352e.zip |
Added function endmission()
Works only with MissionFile version=3
Created for MissionController, but works on any bot
- 1st parameter:
* ResultWin - win mission
* ResultLost - lost mission
* ResultLostQuick - lost mission (Me died)
- 2nd parameter: win/lost delay, like in mission file. Doesn't work for ResultLostQuick.
Please don't use for cheating =)
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/script.cpp | 31 | ||||
-rw-r--r-- | src/script/script.h | 2 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/script/script.cpp b/src/script/script.cpp index 9f002a7..a9cebe6 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -313,6 +313,35 @@ bool CScript::rAbs(CBotVar* var, CBotVar* result, int& exception, void* user) return true; } +// Compilation of the instruction "endmission(result)" + +CBotTypResult CScript::cEndMission(CBotVar* &var, void* user) +{ + if ( var == 0 ) return CBotTypResult(CBotErrLowParam); + if ( var->GetType() > CBotTypDouble ) 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 "endmission(result)" + +bool CScript::rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user) +{ + Error ended; + float delay; + + ended = static_cast<Error>(var->GetValFloat()); + var = var->GetNext(); + + delay = var->GetValFloat(); + + CRobotMain::GetInstancePointer()->SetEndMission(ended, delay); + return true; +} // Compilation of the instruction "retobject(rank)". @@ -2950,6 +2979,8 @@ void CScript::InitFonctions() CBotProgram::AddFunction("rand", rRand, CScript::cNull); CBotProgram::AddFunction("abs", rAbs, CScript::cOneFloat); + CBotProgram::AddFunction("endmission",rEndMission,CScript::cEndMission); + CBotProgram::AddFunction("retobject", rGetObject, CScript::cGetObject); CBotProgram::AddFunction("destroy", rDestroy, CScript::cDestroy); CBotProgram::AddFunction("search", rSearch, CScript::cSearch); diff --git a/src/script/script.h b/src/script/script.h index 702138b..956aca6 100644 --- a/src/script/script.h +++ b/src/script/script.h @@ -99,6 +99,7 @@ private: static CBotTypResult cOneFloat(CBotVar* &var, void* user); static CBotTypResult cTwoFloat(CBotVar* &var, void* user); static CBotTypResult cString(CBotVar* &var, void* user); + static CBotTypResult cEndMission(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); @@ -134,6 +135,7 @@ private: static bool rPow(CBotVar* var, CBotVar* result, int& exception, void* user); 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 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); |