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/object/robotmain.cpp | |
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/object/robotmain.cpp')
-rw-r--r-- | src/object/robotmain.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp index 991449e..67d4f44 100644 --- a/src/object/robotmain.cpp +++ b/src/object/robotmain.cpp @@ -811,6 +811,11 @@ CRobotMain::CRobotMain(CApplication* app) CBotProgram::DefineNum("ExploBurn", EXPLO_BURN); CBotProgram::DefineNum("ExploWater", EXPLO_WATER); + CBotProgram::DefineNum("ResultNotEnded", ERR_MISSION_NOTERM); + CBotProgram::DefineNum("ResultLost", INFO_LOST); + CBotProgram::DefineNum("ResultLostQuick", INFO_LOSTq); + CBotProgram::DefineNum("ResultWin", ERR_OK); + CBotProgram::DefineNum("PolskiPortalColobota", 1337); CBotClass* bc; @@ -3896,6 +3901,8 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) m_version = 1; m_retroStyle = false; + + m_missionResult = ERR_MISSION_NOTERM; } char line[500]; @@ -6727,10 +6734,40 @@ void CRobotMain::UpdateAudio(bool frame) } } +void CRobotMain::SetEndMission(Error result, float delay) +{ + if (m_version >= 3) { + m_endTakeWinDelay = delay; + m_endTakeLostDelay = delay; + m_missionResult = result; + } +} + //! Checks if the mission is over Error CRobotMain::CheckEndMission(bool frame) { - if (m_version >= 3) return ERR_MISSION_NOTERM; //disabled. TODO: Control from program + if (m_version >= 3) { + if (m_missionResult == INFO_LOST) { //mission lost? + m_displayText->DisplayError(INFO_LOST, Math::Vector(0.0f,0.0f,0.0f)); + m_winDelay = 0.0f; + if(m_lostDelay == 0) m_lostDelay = m_endTakeLostDelay; + m_displayText->SetEnable(false); + } + if (m_missionResult == INFO_LOSTq) { //mission lost? + m_winDelay = 0.0f; + if(m_lostDelay == 0) m_lostDelay = 0.1f; + m_displayText->SetEnable(false); + } + if (frame && m_base) return ERR_MISSION_NOTERM; + if (m_missionResult == ERR_OK) { //mission win? + if (!(frame && m_base)) m_displayText->DisplayError(INFO_WIN, Math::Vector(0.0f,0.0f,0.0f)); + if(m_winDelay == 0) m_winDelay = m_endTakeWinDelay; + m_lostDelay = 0.0f; + m_displayText->SetEnable(false); + } + if (m_missionResult == ERR_MISSION_NOTERM) m_displayText->SetEnable(true); + return m_missionResult; + } CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); |