From 34a008a49d31e0efc3cc2235aab898946c863cdf Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 02:32:41 +0100 Subject: [PATCH 1/8] Additional parameter for function aim(x, y). --- src/script/script.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/script/script.cpp b/src/script/script.cpp index 50ce8306..ab8a1c13 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -2186,12 +2186,29 @@ bool CScript::rFire(CBotVar* var, CBotVar* result, int& exception, void* user) return Process(script, result, exception); } +// Compilation of the instruction "aim(x, y)". + +CBotTypResult cAim(CBotVar* &var, void* user) +{ + if ( var == 0 ) return CBotTypResult(CBotErrLowParam); + if ( var->GivType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); + var = var->GivNext(); + + if ( var == 0 ) return CBotTypResult(CBotTypFloat); + if ( var->GivType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); + var = var->GivNext(); + + if ( var != 0 ) return CBotTypResult(CBotErrOverParam); + + return CBotTypResult(CBotTypFloat); +} + // Instruction "aim(dir)". bool CScript::rAim(CBotVar* var, CBotVar* result, int& exception, void* user) { CScript* script = (static_cast(user))->GetRunScript(); - float value; + float x, y; Error err; exception = 0; @@ -2199,8 +2216,10 @@ bool CScript::rAim(CBotVar* var, CBotVar* result, int& exception, void* user) if ( script->m_primaryTask == 0 ) // no task in progress? { script->m_primaryTask = new CTaskManager(script->m_iMan, script->m_object); - value = var->GetValFloat(); - err = script->m_primaryTask->StartTaskGunGoal(value*Math::PI/180.0f, 0.0f); + x = var->GivValFloat(); + var = var->GivNext(); + var == 0 ? y=0.0f : y=var->GivValFloat(); + err = script->m_primaryTask->StartTaskGunGoal(x*Math::PI/180.0f, y*Math::PI/180.0f); if ( err != ERR_OK ) { delete script->m_primaryTask; @@ -2731,7 +2750,7 @@ void CScript::InitFonctions() CBotProgram::AddFunction("recycle", rRecycle, CScript::cNull); CBotProgram::AddFunction("shield", rShield, CScript::cShield); CBotProgram::AddFunction("fire", rFire, CScript::cFire); - CBotProgram::AddFunction("aim", rAim, CScript::cOneFloat); + CBotProgram::AddFunction("aim", rAim, CScript::cAim); CBotProgram::AddFunction("motor", rMotor, CScript::cMotor); CBotProgram::AddFunction("jet", rJet, CScript::cOneFloat); CBotProgram::AddFunction("topo", rTopo, CScript::cTopo); From c26c063c5f3c0f45fd4ef3e717979768e7834780 Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 02:36:20 +0100 Subject: [PATCH 2/8] Additional parameter for function aim(x, y). --- src/script/cbottoken.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/script/cbottoken.cpp b/src/script/cbottoken.cpp index 0bb368c2..06d36e16 100644 --- a/src/script/cbottoken.cpp +++ b/src/script/cbottoken.cpp @@ -476,7 +476,7 @@ const char* GetHelpText(const char *token) if ( strcmp(token, "shield" ) == 0 ) return "shield ( oper, radius );"; if ( strcmp(token, "fire" ) == 0 ) return "fire ( time );"; if ( strcmp(token, "antfire" ) == 0 ) return "antfire ( );"; - if ( strcmp(token, "aim" ) == 0 ) return "aim ( angle );"; + if ( strcmp(token, "aim" ) == 0 ) return "aim ( angle, angle );"; if ( strcmp(token, "motor" ) == 0 ) return "motor ( left, right );"; if ( strcmp(token, "jet" ) == 0 ) return "jet ( power );"; if ( strcmp(token, "topo" ) == 0 ) return "topo ( position );"; From 34e758a9dae489f838360a6a8105b4008b91d62f Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 02:44:43 +0100 Subject: [PATCH 3/8] Additional parameter for function aim(x, y) --- src/graphics/engine/camera.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp index e5dd1e55..80263027 100644 --- a/src/graphics/engine/camera.cpp +++ b/src/graphics/engine/camera.cpp @@ -328,8 +328,8 @@ void CCamera::SetType(CameraType type) if ( oType == OBJECT_HUSTON ) m_backMin = 80.0f; } - if ( type != CAM_TYPE_ONBOARD && m_cameraObj != 0 ) - m_cameraObj->SetGunGoalH(0.0f); // puts the cannon right + //if ( type != CAM_TYPE_ONBOARD && m_cameraObj != 0 ) + // m_cameraObj->SetGunGoalH(0.0f); // puts the cannon right if ( type == CAM_TYPE_ONBOARD ) m_focus = 1.50f; // Wide From 551d6c4d95182b8574e9d237fc26400414a609f2 Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 02:59:40 +0100 Subject: [PATCH 4/8] Additional parameter for function aim(x, y). --- src/object/object.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object/object.cpp b/src/object/object.cpp index e2830c5d..317775d5 100644 --- a/src/object/object.cpp +++ b/src/object/object.cpp @@ -6617,7 +6617,7 @@ void CObject::SetSelect(bool bMode, bool bDisplayError) if ( !m_bSelect ) { - SetGunGoalH(0.0f); // puts the cannon right + //SetGunGoalH(0.0f); // puts the cannon right return; // selects if not finished } From f25aed44d28f97d900bb9f4857cfcf282b80737c Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 13:48:56 +0100 Subject: [PATCH 5/8] aim(x,y) - "Giv" to "Get" --- src/script/script.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/script/script.cpp b/src/script/script.cpp index ab8a1c13..252f2cb3 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -2216,9 +2216,9 @@ bool CScript::rAim(CBotVar* var, CBotVar* result, int& exception, void* user) if ( script->m_primaryTask == 0 ) // no task in progress? { script->m_primaryTask = new CTaskManager(script->m_iMan, script->m_object); - x = var->GivValFloat(); - var = var->GivNext(); - var == 0 ? y=0.0f : y=var->GivValFloat(); + x = var->GetValFloat(); + var = var->GetNext(); + var == 0 ? y=0.0f : y=var->GetValFloat(); err = script->m_primaryTask->StartTaskGunGoal(x*Math::PI/180.0f, y*Math::PI/180.0f); if ( err != ERR_OK ) { From bcd06bd0e863648bf2850ef9257374085c735c97 Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 13:56:50 +0100 Subject: [PATCH 6/8] Function aim(x, y) - "Giv" to "Get" --- src/script/script.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/script/script.cpp b/src/script/script.cpp index 252f2cb3..c73a88f2 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -2191,12 +2191,12 @@ bool CScript::rFire(CBotVar* var, CBotVar* result, int& exception, void* user) CBotTypResult cAim(CBotVar* &var, void* user) { if ( var == 0 ) return CBotTypResult(CBotErrLowParam); - if ( var->GivType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); - var = var->GivNext(); + if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); + var = var->GetNext(); if ( var == 0 ) return CBotTypResult(CBotTypFloat); - if ( var->GivType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); - var = var->GivNext(); + if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); + var = var->GetNext(); if ( var != 0 ) return CBotTypResult(CBotErrOverParam); From 4128383ee1a0d171a9f2bcfa66f30661b64b178e Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 14:04:24 +0100 Subject: [PATCH 7/8] Update src/script/script.cpp --- src/script/script.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/script/script.cpp b/src/script/script.cpp index c73a88f2..fc34af07 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -2188,7 +2188,7 @@ bool CScript::rFire(CBotVar* var, CBotVar* result, int& exception, void* user) // Compilation of the instruction "aim(x, y)". -CBotTypResult cAim(CBotVar* &var, void* user) +CBotTypResult CScript::cAim(CBotVar* &var, void* user) { if ( var == 0 ) return CBotTypResult(CBotErrLowParam); if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum); From 86b302eb1728efecbecd8c8de6005758fdbce78d Mon Sep 17 00:00:00 2001 From: PaweX Date: Wed, 13 Feb 2013 16:20:35 +0100 Subject: [PATCH 8/8] Added cAim(CBotVar* &var, void* user) --- src/script/script.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/script/script.h b/src/script/script.h index dbd66a27..674a67e4 100644 --- a/src/script/script.h +++ b/src/script/script.h @@ -117,6 +117,7 @@ private: static CBotTypResult cTestInfo(CBotVar* &var, void* user); static CBotTypResult cShield(CBotVar* &var, void* user); static CBotTypResult cFire(CBotVar* &var, void* user); + static CBotTypResult cAim(CBotVar* &var, void* user); static CBotTypResult cMotor(CBotVar* &var, void* user); static CBotTypResult cTopo(CBotVar* &var, void* user); static CBotTypResult cMessage(CBotVar* &var, void* user);