[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