Add Barricade objects

master
krzys-h 2017-05-19 15:33:44 +02:00
parent 327eafddb7
commit 8948da0612
7 changed files with 71 additions and 3 deletions

2
data

@ -1 +1 @@
Subproject commit 3b99a62185c4aba3c6c7507dfbbbcf5bcbce3ba2 Subproject commit 41c03fda84e6eab6cd105fffd77a26cde4c1fe12

View File

@ -467,6 +467,8 @@ ObjectType CLevelParserParam::ToObjectType(std::string value)
if (value == "Barrier1" ) return OBJECT_BARRIER1; if (value == "Barrier1" ) return OBJECT_BARRIER1;
if (value == "Barrier2" ) return OBJECT_BARRIER2; if (value == "Barrier2" ) return OBJECT_BARRIER2;
if (value == "Barrier3" ) return OBJECT_BARRIER3; 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 == "Teen0" ) return OBJECT_TEEN0;
if (value == "Teen1" ) return OBJECT_TEEN1; if (value == "Teen1" ) return OBJECT_TEEN1;
if (value == "Teen2" ) return OBJECT_TEEN2; 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_BARRIER1 ) return "Barrier1";
if (value == OBJECT_BARRIER2 ) return "Barrier2"; if (value == OBJECT_BARRIER2 ) return "Barrier2";
if (value == OBJECT_BARRIER3 ) return "Barrier3"; 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_TEEN0 ) return "Teen0";
if (value == OBJECT_TEEN1 ) return "Teen1"; if (value == OBJECT_TEEN1 ) return "Teen1";
if (value == OBJECT_TEEN2 ) return "Teen2"; if (value == OBJECT_TEEN2 ) return "Teen2";

View File

@ -149,6 +149,8 @@ CObjectUPtr CObjectFactory::CreateObject(const ObjectCreateParams& params)
case OBJECT_BARRIER1: case OBJECT_BARRIER1:
case OBJECT_BARRIER2: case OBJECT_BARRIER2:
case OBJECT_BARRIER3: case OBJECT_BARRIER3:
case OBJECT_BARRICADE0:
case OBJECT_BARRICADE1:
return CreateBarrier(params); return CreateBarrier(params);
case OBJECT_PLANT0: case OBJECT_PLANT0:
@ -579,6 +581,48 @@ CObjectUPtr CObjectFactory::CreateBarrier(const ObjectCreateParams& params)
obj->CreateShadowCircle(10.0f, 0.5f, Gfx::ENG_SHADOW_WORM); 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(); pos = obj->GetPosition();
obj->SetPosition(pos); // to display the shadows immediately obj->SetPosition(pos); // to display the shadows immediately

View File

@ -311,7 +311,9 @@ std::vector<CObject*> CObjectManager::RadarAll(CObject* pThis, Math::Vector this
} }
if ( oType == OBJECT_BARRIER2 || if ( oType == OBJECT_BARRIER2 ||
oType == OBJECT_BARRIER3 ) // barriers? oType == OBJECT_BARRIER3 ||
oType == OBJECT_BARRICADE0 ||
oType == OBJECT_BARRICADE1 ) // barriers?
{ {
oType = OBJECT_BARRIER1; // any barrier oType = OBJECT_BARRIER1; // any barrier
} }

View File

@ -146,6 +146,8 @@ enum ObjectType
OBJECT_BARRIER1 = 401, //!< Barrier1 OBJECT_BARRIER1 = 401, //!< Barrier1
OBJECT_BARRIER2 = 402, //!< Barrier2 OBJECT_BARRIER2 = 402, //!< Barrier2
OBJECT_BARRIER3 = 403, //!< Barrier3 OBJECT_BARRIER3 = 403, //!< Barrier3
OBJECT_BARRICADE0 = 410, //!< Barricade0
OBJECT_BARRICADE1 = 411, //!< Barricade1
OBJECT_MOTHER = 500, //!< AlienQueen OBJECT_MOTHER = 500, //!< AlienQueen
OBJECT_EGG = 501, //!< AlienEgg OBJECT_EGG = 501, //!< AlienEgg
OBJECT_ANT = 502, //!< AlienAnt OBJECT_ANT = 502, //!< AlienAnt

View File

@ -1047,7 +1047,7 @@ void COldObject::Read(CLevelParserLine* line)
if (line->GetParam("pyro")->IsDefined()) if (line->GetParam("pyro")->IsDefined())
m_engine->GetPyroManager()->Create(line->GetParam("pyro")->AsPyroType(), this); 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)); SetProxyActivate(line->GetParam("proxyActivate")->AsBool(false));
SetProxyDistance(line->GetParam("proxyDistance")->AsFloat(15.0f)*g_unit); SetProxyDistance(line->GetParam("proxyDistance")->AsFloat(15.0f)*g_unit);
@ -3212,3 +3212,13 @@ bool COldObject::IsBulletWall()
{ {
return m_bulletWall; return m_bulletWall;
} }
bool COldObject::IsBulletWallByDefault(ObjectType type)
{
if ( type == OBJECT_BARRICADE0 ||
type == OBJECT_BARRICADE1 )
{
return true;
}
return false;
}

View File

@ -311,6 +311,12 @@ protected:
*/ */
static bool IsSelectableByDefault(ObjectType type); 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: protected:
Gfx::CEngine* m_engine; Gfx::CEngine* m_engine;
Gfx::CLightManager* m_lightMan; Gfx::CLightManager* m_lightMan;