[colobot] 63/100: Add Barricade objects
Didier Raboud
odyx at moszumanska.debian.org
Thu Jun 1 18:10:19 UTC 2017
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository colobot.
commit 8948da0612766234c673a3585325de3ef80b44f6
Author: krzys-h <krzys_h at interia.pl>
Date: Fri May 19 15:33:44 2017 +0200
Add Barricade objects
---
data | 2 +-
src/level/parser/parserparam.cpp | 4 ++++
src/object/object_factory.cpp | 44 ++++++++++++++++++++++++++++++++++++++++
src/object/object_manager.cpp | 4 +++-
src/object/object_type.h | 2 ++
src/object/old_object.cpp | 12 ++++++++++-
src/object/old_object.h | 6 ++++++
7 files changed, 71 insertions(+), 3 deletions(-)
diff --git a/data b/data
index 3b99a62..41c03fd 160000
--- a/data
+++ b/data
@@ -1 +1 @@
-Subproject commit 3b99a62185c4aba3c6c7507dfbbbcf5bcbce3ba2
+Subproject commit 41c03fda84e6eab6cd105fffd77a26cde4c1fe12
diff --git a/src/level/parser/parserparam.cpp b/src/level/parser/parserparam.cpp
index fb3c82f..37773ef 100644
--- a/src/level/parser/parserparam.cpp
+++ b/src/level/parser/parserparam.cpp
@@ -467,6 +467,8 @@ ObjectType CLevelParserParam::ToObjectType(std::string value)
if (value == "Barrier1" ) return OBJECT_BARRIER1;
if (value == "Barrier2" ) return OBJECT_BARRIER2;
if (value == "Barrier3" ) return OBJECT_BARRIER3;
+ if (value == "Barricade0" ) return OBJECT_BARRICADE0;
+ if (value == "Barricade1" ) return OBJECT_BARRICADE1;
if (value == "Teen0" ) return OBJECT_TEEN0;
if (value == "Teen1" ) return OBJECT_TEEN1;
if (value == "Teen2" ) return OBJECT_TEEN2;
@@ -662,6 +664,8 @@ const std::string CLevelParserParam::FromObjectType(ObjectType value)
if (value == OBJECT_BARRIER1 ) return "Barrier1";
if (value == OBJECT_BARRIER2 ) return "Barrier2";
if (value == OBJECT_BARRIER3 ) return "Barrier3";
+ if (value == OBJECT_BARRICADE0 ) return "Barricade0";
+ if (value == OBJECT_BARRICADE1 ) return "Barricade1";
if (value == OBJECT_TEEN0 ) return "Teen0";
if (value == OBJECT_TEEN1 ) return "Teen1";
if (value == OBJECT_TEEN2 ) return "Teen2";
diff --git a/src/object/object_factory.cpp b/src/object/object_factory.cpp
index 76e9d59..0b16e17 100644
--- a/src/object/object_factory.cpp
+++ b/src/object/object_factory.cpp
@@ -149,6 +149,8 @@ CObjectUPtr CObjectFactory::CreateObject(const ObjectCreateParams& params)
case OBJECT_BARRIER1:
case OBJECT_BARRIER2:
case OBJECT_BARRIER3:
+ case OBJECT_BARRICADE0:
+ case OBJECT_BARRICADE1:
return CreateBarrier(params);
case OBJECT_PLANT0:
@@ -579,6 +581,48 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
obj->CreateShadowCircle(10.0f, 0.5f, Gfx::ENG_SHADOW_WORM);
}
+ if ( type == OBJECT_BARRICADE0 )
+ {
+ int rank = m_engine->CreateObject();
+ m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
+ obj->SetObjectRank(0, rank);
+ m_oldModelManager->AddModelReference("barricade0.mod", false, rank, obj->GetTeam());
+ obj->SetPosition(pos);
+ obj->SetRotationY(angle);
+
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+
+ obj->CreateShadowCircle(6.0f, 0.5f, Gfx::ENG_SHADOW_WORM);
+ }
+
+ if ( type == OBJECT_BARRICADE1 )
+ {
+ int rank = m_engine->CreateObject();
+ m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX);
+ obj->SetObjectRank(0, rank);
+ m_oldModelManager->AddModelReference("barricade1.mod", false, rank, obj->GetTeam());
+ obj->SetPosition(pos);
+ obj->SetRotationY(angle);
+
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector(-8.5f, 3.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 8.5f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 3.5f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector( 0.0f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector(-3.5f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+ obj->AddCrashSphere(CrashSphere(Math::Vector(-8.5f, 6.0f, 0.0f), 0.7f, SOUND_BOUMm, 0.45f));
+
+ obj->CreateShadowCircle(12.0f, 0.5f, Gfx::ENG_SHADOW_WORM);
+ }
+
pos = obj->GetPosition();
obj->SetPosition(pos); // to display the shadows immediately
diff --git a/src/object/object_manager.cpp b/src/object/object_manager.cpp
index 9483936..a33a89f 100644
--- a/src/object/object_manager.cpp
+++ b/src/object/object_manager.cpp
@@ -311,7 +311,9 @@ std::vector<CObject*> CObjectManager::RadarAll(CObject* pThis, Math::Vector this
}
if ( oType == OBJECT_BARRIER2 ||
- oType == OBJECT_BARRIER3 ) // barriers?
+ oType == OBJECT_BARRIER3 ||
+ oType == OBJECT_BARRICADE0 ||
+ oType == OBJECT_BARRICADE1 ) // barriers?
{
oType = OBJECT_BARRIER1; // any barrier
}
diff --git a/src/object/object_type.h b/src/object/object_type.h
index 11d5763..88c9587 100644
--- a/src/object/object_type.h
+++ b/src/object/object_type.h
@@ -146,6 +146,8 @@ enum ObjectType
OBJECT_BARRIER1 = 401, //!< Barrier1
OBJECT_BARRIER2 = 402, //!< Barrier2
OBJECT_BARRIER3 = 403, //!< Barrier3
+ OBJECT_BARRICADE0 = 410, //!< Barricade0
+ OBJECT_BARRICADE1 = 411, //!< Barricade1
OBJECT_MOTHER = 500, //!< AlienQueen
OBJECT_EGG = 501, //!< AlienEgg
OBJECT_ANT = 502, //!< AlienAnt
diff --git a/src/object/old_object.cpp b/src/object/old_object.cpp
index fb510d8..0930f02 100644
--- a/src/object/old_object.cpp
+++ b/src/object/old_object.cpp
@@ -1047,7 +1047,7 @@ void COldObject::Read(CLevelParserLine* line)
if (line->GetParam("pyro")->IsDefined())
m_engine->GetPyroManager()->Create(line->GetParam("pyro")->AsPyroType(), this);
- SetBulletWall(line->GetParam("bulletWall")->AsBool(false));
+ SetBulletWall(line->GetParam("bulletWall")->AsBool(IsBulletWallByDefault(m_type)));
SetProxyActivate(line->GetParam("proxyActivate")->AsBool(false));
SetProxyDistance(line->GetParam("proxyDistance")->AsFloat(15.0f)*g_unit);
@@ -3212,3 +3212,13 @@ bool COldObject::IsBulletWall()
{
return m_bulletWall;
}
+
+bool COldObject::IsBulletWallByDefault(ObjectType type)
+{
+ if ( type == OBJECT_BARRICADE0 ||
+ type == OBJECT_BARRICADE1 )
+ {
+ return true;
+ }
+ return false;
+}
diff --git a/src/object/old_object.h b/src/object/old_object.h
index bc2d0b0..697e05d 100644
--- a/src/object/old_object.h
+++ b/src/object/old_object.h
@@ -311,6 +311,12 @@ protected:
*/
static bool IsSelectableByDefault(ObjectType type);
+ /**
+ * \brief Check if given object type should have bulletWall enabled by default
+ * \note This is a default value for the bulletWall= parameter and can still be overriden in the scene file
+ */
+ static bool IsBulletWallByDefault(ObjectType type);
+
protected:
Gfx::CEngine* m_engine;
Gfx::CLightManager* m_lightMan;
--
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