summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/graphics/engine/camera.cpp4
-rw-r--r--src/object/object.cpp2
-rw-r--r--src/script/cbottoken.cpp2
-rw-r--r--src/script/script.cpp27
-rw-r--r--src/script/script.h1
5 files changed, 28 insertions, 8 deletions
diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp
index e5dd1e5..8026302 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
diff --git a/src/object/object.cpp b/src/object/object.cpp
index e2830c5..317775d 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
}
diff --git a/src/script/cbottoken.cpp b/src/script/cbottoken.cpp
index 0bb368c..06d36e1 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 );";
diff --git a/src/script/script.cpp b/src/script/script.cpp
index 50ce830..fc34af0 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 CScript::cAim(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(CBotTypFloat);
+ if ( var->GetType() > CBotTypDouble ) return CBotTypResult(CBotErrBadNum);
+ var = var->GetNext();
+
+ 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<CObject *>(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->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 )
{
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);
diff --git a/src/script/script.h b/src/script/script.h
index dbd66a2..674a67e 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);