[colobot] 253/390: Fixed #424, #423 and probably #421

Didier Raboud odyx at moszumanska.debian.org
Fri Jun 12 14:21:51 UTC 2015


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch upstream/latest
in repository colobot.

commit 61b186343f506a5c702c0004636e0e90c1a60a47
Author: krzys-h <krzys_h at interia.pl>
Date:   Thu Jan 8 18:56:26 2015 +0100

    Fixed #424, #423 and probably #421
---
 src/object/auto/autofactory.cpp | 44 +++++++++++++++++++++++++++++++++++++++--
 src/object/objman.h             |  2 +-
 src/object/task/taskgoto.cpp    |  2 +-
 src/object/task/taskrecover.cpp |  2 +-
 src/script/scriptfunc.cpp       |  4 ++--
 5 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/src/object/auto/autofactory.cpp b/src/object/auto/autofactory.cpp
index 5d3b7d3..8cc43f7 100644
--- a/src/object/auto/autofactory.cpp
+++ b/src/object/auto/autofactory.cpp
@@ -552,7 +552,26 @@ bool CAutoFactory::Read(CLevelParserLine* line)
 
 CObject* CAutoFactory::SearchFret()
 {
-    return CObjectManager::GetInstancePointer()->FindNearest(nullptr, m_fretPos, OBJECT_METAL, 8.0f/g_unit);
+    CObject*    pObj;
+    Math::Vector    oPos;
+    ObjectType  type;
+    float       dist;
+    
+    for(auto it : CObjectManager::GetInstancePointer()->GetAllObjects())
+    {
+        pObj = it.second;
+        
+        type = pObj->GetType();
+        if ( type != OBJECT_METAL )  continue;
+        if ( pObj->GetTruck() != 0 )  continue;
+        
+        oPos = pObj->GetPosition(0);
+        dist = Math::Distance(oPos, m_fretPos);
+        
+        if ( dist < 8.0f )  return pObj;
+    }
+    
+    return 0;
 }
 
 // Search if a vehicle is too close.
@@ -674,7 +693,28 @@ bool CAutoFactory::CreateVehicle()
 
 CObject* CAutoFactory::SearchVehicle()
 {    
-    return CObjectManager::GetInstancePointer()->FindNearest(nullptr, m_fretPos, m_type, 8.0f/g_unit);
+    CObject*    pObj;
+    Math::Vector    oPos;
+    ObjectType  type;
+    float       dist;
+    
+    for(auto it : CObjectManager::GetInstancePointer()->GetAllObjects())
+    {
+        pObj = it.second;
+        
+        if ( !pObj->GetLock() )  continue;
+        
+        type = pObj->GetType();
+        if ( type != m_type )  continue;
+        if ( pObj->GetTruck() != 0 )  continue;
+        
+        oPos = pObj->GetPosition(0);
+        dist = Math::Distance(oPos, m_fretPos);
+        
+        if ( dist < 8.0f )  return pObj;
+    }
+    
+    return 0;
 }
 
 // Creates all the interface when the object is selected.
diff --git a/src/object/objman.h b/src/object/objman.h
index 5616879..059492c 100644
--- a/src/object/objman.h
+++ b/src/object/objman.h
@@ -28,7 +28,7 @@
 
 #include "common/singleton.h"
 
-#include <unordered_map>
+#include <map>
 
 /**
  * \class ObjectManager
diff --git a/src/object/task/taskgoto.cpp b/src/object/task/taskgoto.cpp
index b5bb78b..56bcf74 100644
--- a/src/object/task/taskgoto.cpp
+++ b/src/object/task/taskgoto.cpp
@@ -1031,7 +1031,7 @@ Error CTaskGoto::IsEnded()
 
 CObject* CTaskGoto::SearchTarget(Math::Vector pos, float margin)
 {
-    return CObjectManager::GetInstancePointer()->FindNearest(nullptr, pos, OBJECT_NULL, margin);;
+    return CObjectManager::GetInstancePointer()->FindNearest(nullptr, pos, OBJECT_NULL, margin/g_unit);
 }
 
 // Adjusts the target as a function of the object.
diff --git a/src/object/task/taskrecover.cpp b/src/object/task/taskrecover.cpp
index d22faeb..ea5e904 100644
--- a/src/object/task/taskrecover.cpp
+++ b/src/object/task/taskrecover.cpp
@@ -384,6 +384,6 @@ bool CTaskRecover::Abort()
 
 CObject* CTaskRecover::SearchRuin()
 {
-    return CObjectManager::GetInstancePointer()->FindNearest(nullptr, m_recoverPos, {OBJECT_RUINmobilew1, OBJECT_RUINmobilew2, OBJECT_RUINmobilet1, OBJECT_RUINmobilet2, OBJECT_RUINmobiler1, OBJECT_RUINmobiler2}, 10.0f);
+    return CObjectManager::GetInstancePointer()->FindNearest(nullptr, m_recoverPos, {OBJECT_RUINmobilew1, OBJECT_RUINmobilew2, OBJECT_RUINmobilet1, OBJECT_RUINmobilet2, OBJECT_RUINmobiler1, OBJECT_RUINmobiler2}, 40.0f/g_unit);
 }
 
diff --git a/src/script/scriptfunc.cpp b/src/script/scriptfunc.cpp
index a0e3f5c..4942069 100644
--- a/src/script/scriptfunc.cpp
+++ b/src/script/scriptfunc.cpp
@@ -1186,12 +1186,12 @@ bool CScriptFunctions::rRadar(CBotVar* var, CBotVar* result, int& exception, voi
                 var = var->GetNext();
                 if ( var != 0 )
                 {
-                    minDist = var->GetValFloat()*g_unit;
+                    minDist = var->GetValFloat();
                     
                     var = var->GetNext();
                     if ( var != 0 )
                     {
-                        maxDist = var->GetValFloat()*g_unit;
+                        maxDist = var->GetValFloat();
                         
                         var = var->GetNext();
                         if ( var != 0 )

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git



More information about the Pkg-games-commits mailing list