Add Heavy and Amphibious trainer bots

modernize-cmake-1
Fiftytwo 2018-12-23 07:04:06 +01:00
parent 3f04654cd3
commit 723c552783
25 changed files with 177 additions and 46 deletions

View File

@ -521,6 +521,8 @@ void InitializeRestext()
stringsObject[OBJECT_MOBILEtt] = TR("Practice bot");
stringsObject[OBJECT_MOBILEwt] = TR("Practice bot");
stringsObject[OBJECT_MOBILEit] = TR("Practice bot");
stringsObject[OBJECT_MOBILErp] = TR("Practice bot");
stringsObject[OBJECT_MOBILEst] = TR("Practice bot");
stringsObject[OBJECT_MOBILEfa] = TR("Winged grabber");
stringsObject[OBJECT_MOBILEta] = TR("Tracked grabber");
stringsObject[OBJECT_MOBILEwa] = TR("Wheeled grabber");

View File

@ -1285,6 +1285,8 @@ void CPyro::DisplayError(PyroType type, CObject* obj)
oType == OBJECT_MOBILEtt ||
oType == OBJECT_MOBILEft ||
oType == OBJECT_MOBILEit ||
oType == OBJECT_MOBILErp ||
oType == OBJECT_MOBILEst ||
oType == OBJECT_MOBILEdr )
{
err = ERR_DELETEMOBILE;
@ -2053,11 +2055,14 @@ void CPyro::BurnStart()
m_burnType == OBJECT_MOBILEtc ||
m_burnType == OBJECT_MOBILEti ||
m_burnType == OBJECT_MOBILEts ||
m_burnType == OBJECT_MOBILEtt ||
m_burnType == OBJECT_MOBILErt ||
m_burnType == OBJECT_MOBILErc ||
m_burnType == OBJECT_MOBILErr ||
m_burnType == OBJECT_MOBILErs ||
m_burnType == OBJECT_MOBILErp ||
m_burnType == OBJECT_MOBILEsa ||
m_burnType == OBJECT_MOBILEst ||
m_burnType == OBJECT_MOBILEdr ) // caterpillars?
{
pos.x = 0.0f;
@ -2102,7 +2107,8 @@ void CPyro::BurnStart()
m_burnType == OBJECT_MOBILEib ||
m_burnType == OBJECT_MOBILEic ||
m_burnType == OBJECT_MOBILEii ||
m_burnType == OBJECT_MOBILEis ) // legs?
m_burnType == OBJECT_MOBILEis ||
m_burnType == OBJECT_MOBILEit ) // legs?
{
for (int i = 0; i < 6; i++)
{

View File

@ -592,6 +592,8 @@ float CWater::GetLevel(CObject* object)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr )
{
return m_level-2.0f;

View File

@ -343,6 +343,8 @@ ObjectType CLevelParserParam::ToObjectType(std::string value)
if (value == "TrackedTrainer" ) return OBJECT_MOBILEtt;
if (value == "WheeledTrainer" ) return OBJECT_MOBILEwt;
if (value == "LeggedTrainer" ) return OBJECT_MOBILEit;
if (value == "HeavyTrainer" ) return OBJECT_MOBILErp;
if (value == "AmphibiousTrainer" ) return OBJECT_MOBILEst;
if (value == "WingedGrabber" ) return OBJECT_MOBILEfa;
if (value == "TrackedGrabber" ) return OBJECT_MOBILEta;
if (value == "WheeledGrabber" ) return OBJECT_MOBILEwa;
@ -551,6 +553,8 @@ const std::string CLevelParserParam::FromObjectType(ObjectType value)
if (value == OBJECT_MOBILEft ) return "WingedTrainer";
if (value == OBJECT_MOBILEtt ) return "TrackedTrainer";
if (value == OBJECT_MOBILEit ) return "LeggedTrainer";
if (value == OBJECT_MOBILErp ) return "HeavyTrainer";
if (value == OBJECT_MOBILEst ) return "AmphibiousTrainer";
if (value == OBJECT_MOBILEfa ) return "WingedGrabber";
if (value == OBJECT_MOBILEta ) return "TrackedGrabber";
if (value == OBJECT_MOBILEwa ) return "WheeledGrabber";
@ -764,12 +768,13 @@ ObjectType CLevelParserParam::AsObjectType(ObjectType def)
DriveType CLevelParserParam::ToDriveType(std::string value)
{
if (value == "Wheeled") return DriveType::Wheeled;
if (value == "Tracked") return DriveType::Tracked;
if (value == "Winged" ) return DriveType::Winged;
if (value == "Legged" ) return DriveType::Legged;
if (value == "BigTracked") return DriveType::BigTracked;
if (value == "Other" ) return DriveType::Other;
if (value == "Wheeled" ) return DriveType::Wheeled;
if (value == "Tracked" ) return DriveType::Tracked;
if (value == "Winged" ) return DriveType::Winged;
if (value == "Legged" ) return DriveType::Legged;
if (value == "Heavy" ) return DriveType::Heavy;
if (value == "Amphibious") return DriveType::Amphibious;
if (value == "Other" ) return DriveType::Other;
return static_cast<DriveType>(Cast<int>(value, "drive"));
}

View File

@ -1839,6 +1839,8 @@ void CRobotMain::SelectOneObject(CObject* obj, bool displayError)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr ||
type == OBJECT_APOLLO2 )
{
@ -2225,6 +2227,8 @@ void CRobotMain::ChangeCamera()
oType != OBJECT_MOBILEtt &&
oType != OBJECT_MOBILEwt &&
oType != OBJECT_MOBILEit &&
oType != OBJECT_MOBILErp &&
oType != OBJECT_MOBILEst &&
oType != OBJECT_MOBILEdr &&
oType != OBJECT_APOLLO2 ) return;
@ -5734,13 +5738,14 @@ Error CRobotMain::CanFactoryError(ObjectType type, int team)
if (drive == DriveType::Tracked && !IsResearchDone(RESEARCH_TANK, team)) return ERR_BUILD_RESEARCH;
if (drive == DriveType::Winged && !IsResearchDone(RESEARCH_FLY, team)) return ERR_BUILD_RESEARCH;
if (drive == DriveType::Legged && !IsResearchDone(RESEARCH_iPAW, team)) return ERR_BUILD_RESEARCH;
if (drive == DriveType::BigTracked && !IsResearchDone(RESEARCH_TANK, team)) return ERR_BUILD_RESEARCH; // NOTE: Subber is not BigTracked! It currently counts as Other
if (drive == DriveType::Heavy && !IsResearchDone(RESEARCH_TANK, team)) return ERR_BUILD_RESEARCH;
if (type == OBJECT_MOBILErt && !IsResearchDone(RESEARCH_THUMP, team)) return ERR_BUILD_RESEARCH;
if (type == OBJECT_MOBILErc && !IsResearchDone(RESEARCH_PHAZER, team)) return ERR_BUILD_RESEARCH;
if (type == OBJECT_MOBILErr && !IsResearchDone(RESEARCH_RECYCLER, team)) return ERR_BUILD_RESEARCH;
if (type == OBJECT_MOBILErs && !IsResearchDone(RESEARCH_SHIELD, team)) return ERR_BUILD_RESEARCH;
if (type == OBJECT_MOBILEsa && !IsResearchDone(RESEARCH_SUBM, team)) return ERR_BUILD_DISABLED; // Can be only researched manually in Scene file
if (type == OBJECT_MOBILEst && !IsResearchDone(RESEARCH_SUBM, team)) return ERR_BUILD_DISABLED;
if (type == OBJECT_MOBILEtg && !IsResearchDone(RESEARCH_TARGET, team)) return ERR_BUILD_RESEARCH;
return ERR_OK;

View File

@ -618,6 +618,8 @@ bool CAutoFactory::NearestVehicle()
type != OBJECT_MOBILEtt &&
type != OBJECT_MOBILEwt &&
type != OBJECT_MOBILEit &&
type != OBJECT_MOBILErp &&
type != OBJECT_MOBILEst &&
type != OBJECT_MOBILEdr &&
type != OBJECT_MOTHER &&
type != OBJECT_ANT &&

View File

@ -262,6 +262,8 @@ bool CAutoMush::SearchTarget()
type != OBJECT_MOBILEtt &&
type != OBJECT_MOBILEwt &&
type != OBJECT_MOBILEit &&
type != OBJECT_MOBILErp &&
type != OBJECT_MOBILEst &&
type != OBJECT_MOBILEdr &&
type != OBJECT_DERRICK &&
type != OBJECT_STATION &&

View File

@ -371,6 +371,8 @@ bool CAutoNuclearPlant::SearchVehicle()
type != OBJECT_MOBILEtt &&
type != OBJECT_MOBILEwt &&
type != OBJECT_MOBILEit &&
type != OBJECT_MOBILErp &&
type != OBJECT_MOBILEst &&
type != OBJECT_MOBILEdr &&
type != OBJECT_MOTHER &&
type != OBJECT_ANT &&

View File

@ -434,6 +434,8 @@ bool CAutoPowerPlant::SearchVehicle()
type != OBJECT_MOBILEtt &&
type != OBJECT_MOBILEwt &&
type != OBJECT_MOBILEit &&
type != OBJECT_MOBILErp &&
type != OBJECT_MOBILEst &&
type != OBJECT_MOBILEdr &&
type != OBJECT_MOTHER &&
type != OBJECT_ANT &&

View File

@ -278,6 +278,8 @@ CObject* CAutoPowerStation::SearchVehicle()
type != OBJECT_MOBILEtt &&
type != OBJECT_MOBILEwt &&
type != OBJECT_MOBILEit &&
type != OBJECT_MOBILErp &&
type != OBJECT_MOBILEst &&
type != OBJECT_MOBILEtg &&
type != OBJECT_MOBILEdr ) continue;

View File

@ -55,12 +55,15 @@ DriveType GetDriveFromObject(ObjectType type)
case OBJECT_MOBILEib:
return DriveType::Legged;
case OBJECT_MOBILErp:
case OBJECT_MOBILErt:
case OBJECT_MOBILErc:
case OBJECT_MOBILErr:
case OBJECT_MOBILErs:
// NOTE: Subber is not BigTracked!
return DriveType::BigTracked;
return DriveType::Heavy;
case OBJECT_MOBILEsa:
return DriveType::Amphibious;
default:
return DriveType::Other;

View File

@ -28,7 +28,8 @@ enum class DriveType : unsigned int
Tracked,
Winged,
Legged,
BigTracked,
Heavy,
Amphibious
};
DriveType GetDriveFromObject(ObjectType type);

View File

@ -360,6 +360,8 @@ bool CMotionToto::EventFrame(const Event &event)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEft ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEtg ||
type == OBJECT_MOBILEdr ) ) // vehicle?
{

View File

@ -100,11 +100,23 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
m_object->SetObjectRank(0, rank);
if (m_object->GetTrainer() ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEft ||
type == OBJECT_MOBILEit)
if ((m_object->GetTrainer() && type == OBJECT_MOBILEsa) || type == OBJECT_MOBILEst)
{
modelManager->AddModelReference("trainers.mod", false, rank, m_object->GetTeam());
}
else if ((m_object->GetTrainer() &&
( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs)) || type == OBJECT_MOBILErp)
{
modelManager->AddModelReference("trainerr.mod", false, rank, m_object->GetTeam());
}
else if (m_object->GetTrainer() ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEft ||
type == OBJECT_MOBILEit)
{
modelManager->AddModelReference("trainer.mod", false, rank, m_object->GetTeam());
}
@ -201,14 +213,15 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
modelManager->AddModelReference("trainera.mod", false, rank, m_object->GetTeam());
}
}
else if (type == OBJECT_MOBILErt ||
else if (!m_object->GetTrainer() &&
(type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs)
type == OBJECT_MOBILErs))
{
modelManager->AddModelReference("roller1.mod", false, rank, m_object->GetTeam());
}
else if (type == OBJECT_MOBILEsa)
else if (type == OBJECT_MOBILEsa && !m_object->GetTrainer())
{
modelManager->AddModelReference("subm1.mod", false, rank, m_object->GetTeam());
}
@ -265,12 +278,14 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs)
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp)
{
m_object->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 4.0f, 0.0f), 6.5f, SOUND_BOUMm, 0.45f));
m_object->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 7.0f));
}
else if (type == OBJECT_MOBILEsa)
else if (type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst)
{
m_object->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 3.0f, 0.0f), 4.5f, SOUND_BOUMm, 0.45f));
m_object->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 6.0f));
@ -548,7 +563,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs) // large caterpillars?
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp) // large caterpillars?
{
// Creates the right caterpillar.
rank = m_engine->CreateObject();
@ -567,7 +583,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
m_object->SetPartPosition(7, Math::Vector(0.0f, 2.0f, 3.0f));
}
if (type == OBJECT_MOBILEsa) // underwater caterpillars?
if (type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst) // underwater caterpillars?
{
// Creates the right caterpillar.
rank = m_engine->CreateObject();
@ -978,7 +995,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
if (type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs)
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp)
{
m_object->CreateShadowCircle(6.0f, 1.0f);
}
@ -988,7 +1006,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
type == OBJECT_MOBILEti ||
type == OBJECT_MOBILEts ||
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEsa)
type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst)
{
m_object->CreateShadowCircle(5.0f, 1.0f);
}
@ -1225,7 +1244,8 @@ void CMotionVehicle::CreatePhysics(ObjectType type)
if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs ) // large caterpillars?
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp) // large caterpillars?
{
character->wheelFront = 5.0f;
character->wheelBack = 5.0f;
@ -1251,7 +1271,8 @@ void CMotionVehicle::CreatePhysics(ObjectType type)
m_physics->SetCirMotionY(MO_STOACCEL, 4.0f);
}
if ( type == OBJECT_MOBILEsa )
if ( type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst )
{
character->wheelFront = 4.0f;
character->wheelBack = 4.0f;
@ -1541,7 +1562,9 @@ bool CMotionVehicle::EventFrame(const Event &event)
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr ) // caterpillars?
{
s = m_physics->GetLinMotionX(MO_MOTSPEED)*0.7f;
@ -1573,7 +1596,8 @@ bool CMotionVehicle::EventFrame(const Event &event)
limit[0] = 8.0f*Math::PI/180.0f;
limit[1] = -12.0f*Math::PI/180.0f;
}
else if ( type == OBJECT_MOBILEsa )
else if ( type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst )
{
limit[0] = 15.0f*Math::PI/180.0f;
limit[1] = -15.0f*Math::PI/180.0f;

View File

@ -309,6 +309,8 @@ CObjectUPtr CObjectFactory::CreateObject(const ObjectCreateParams& params)
case OBJECT_MOBILEtt:
case OBJECT_MOBILEwt:
case OBJECT_MOBILEit:
case OBJECT_MOBILErp:
case OBJECT_MOBILEst:
case OBJECT_MOBILEdr:
case OBJECT_APOLLO2:
case OBJECT_CONTROLLER:

View File

@ -105,6 +105,8 @@ enum ObjectType
OBJECT_MOBILEtt = 101, //!< TrackedTrainer
OBJECT_MOBILEft = 102, //!< WingedTrainer
OBJECT_MOBILEit = 103, //!< LeggedTrainer
OBJECT_MOBILErp = 104, //!< HeavyTrainer
OBJECT_MOBILEst = 105, //!< AmphibiousTrainer
OBJECT_MOBILEwa = 110, //!< WheeledGrabber
OBJECT_MOBILEta = 111, //!< TrackedGrabber
OBJECT_MOBILEfa = 112, //!< WingedGrabber

View File

@ -742,6 +742,8 @@ void COldObject::SetType(ObjectType type)
m_type == OBJECT_MOBILEtt ||
m_type == OBJECT_MOBILEwt ||
m_type == OBJECT_MOBILEit ||
m_type == OBJECT_MOBILErp ||
m_type == OBJECT_MOBILEst ||
m_type == OBJECT_TOWER ||
m_type == OBJECT_RESEARCH ||
m_type == OBJECT_ENERGY ||
@ -807,6 +809,8 @@ void COldObject::SetType(ObjectType type)
m_type == OBJECT_MOBILEtt ||
m_type == OBJECT_MOBILEwt ||
m_type == OBJECT_MOBILEit ||
m_type == OBJECT_MOBILErp ||
m_type == OBJECT_MOBILEst ||
m_type == OBJECT_FACTORY ||
m_type == OBJECT_REPAIR ||
m_type == OBJECT_DESTROYER||
@ -911,6 +915,8 @@ void COldObject::SetType(ObjectType type)
m_type == OBJECT_MOBILEtt ||
m_type == OBJECT_MOBILEwt ||
m_type == OBJECT_MOBILEit ||
m_type == OBJECT_MOBILErp ||
m_type == OBJECT_MOBILEst ||
m_type == OBJECT_MOBILEtg ||
m_type == OBJECT_MOBILEdr ||
m_type == OBJECT_APOLLO2 ||
@ -2312,7 +2318,8 @@ void COldObject::AdjustCamera(Math::Vector &eye, float &dirH, float &dirV,
}
else if ( m_type == OBJECT_MOBILErt ||
m_type == OBJECT_MOBILErr ||
m_type == OBJECT_MOBILErs )
m_type == OBJECT_MOBILErs ||
m_type == OBJECT_MOBILErp )
{
eye.x = -1.1f; // on the cap
eye.y = 7.9f;
@ -2354,7 +2361,8 @@ void COldObject::AdjustCamera(Math::Vector &eye, float &dirH, float &dirV,
eye.y = 11.0f;
eye.z = 0.0f;
}
else if ( m_type == OBJECT_MOBILEsa )
else if ( m_type == OBJECT_MOBILEsa ||
m_type == OBJECT_MOBILEst )
{
eye.x = 3.0f;
eye.y = 4.5f;
@ -2901,6 +2909,8 @@ void COldObject::CreateSelectParticle()
m_type == OBJECT_MOBILEtt ||
m_type == OBJECT_MOBILEwt ||
m_type == OBJECT_MOBILEit ||
m_type == OBJECT_MOBILErp ||
m_type == OBJECT_MOBILEst ||
m_type == OBJECT_MOBILEdr ) // vehicle?
{
pos = Math::Vector(0.0f, 0.0f, 0.0f);
@ -2937,14 +2947,16 @@ void COldObject::UpdateSelectParticle()
if ( m_type == OBJECT_MOBILErt ||
m_type == OBJECT_MOBILErc ||
m_type == OBJECT_MOBILErr ||
m_type == OBJECT_MOBILErs ) // large caterpillars?
m_type == OBJECT_MOBILErs ||
m_type == OBJECT_MOBILErp ) // large caterpillars?
{
pos[0] = Math::Vector(4.2f, 2.8f, 1.5f);
pos[1] = Math::Vector(4.2f, 2.8f, -1.5f);
dim[0].x = 1.5f;
dim[1].x = 1.5f;
}
else if ( m_type == OBJECT_MOBILEsa ) // submarine?
else if ( m_type == OBJECT_MOBILEsa ||
m_type == OBJECT_MOBILEst ) // submarine?
{
pos[0] = Math::Vector(3.6f, 4.0f, 2.0f);
pos[1] = Math::Vector(3.6f, 4.0f, -2.0f);
@ -3027,12 +3039,14 @@ void COldObject::UpdateSelectParticle()
if ( m_type == OBJECT_MOBILErt ||
m_type == OBJECT_MOBILErc ||
m_type == OBJECT_MOBILErr ||
m_type == OBJECT_MOBILErs ) // large caterpillars?
m_type == OBJECT_MOBILErs ||
m_type == OBJECT_MOBILErp ) // large caterpillars?
{
pos[2] = Math::Vector(-5.0f, 5.2f, 2.5f);
pos[3] = Math::Vector(-5.0f, 5.2f, -2.5f);
}
if ( m_type == OBJECT_MOBILEsa ) // submarine?
if ( m_type == OBJECT_MOBILEsa ||
m_type == OBJECT_MOBILEst ) // submarine?
{
pos[2] = Math::Vector(-3.6f, 4.0f, 2.0f);
pos[3] = Math::Vector(-3.6f, 4.0f, -2.0f);
@ -3276,6 +3290,8 @@ float COldObject::GetLightningHitProbability()
m_type == OBJECT_MOBILEtt ||
m_type == OBJECT_MOBILEwt ||
m_type == OBJECT_MOBILEit ||
m_type == OBJECT_MOBILErp ||
m_type == OBJECT_MOBILEst ||
m_type == OBJECT_MOBILEtg ||
m_type == OBJECT_MOBILEdr ) // robot?
{

View File

@ -582,6 +582,8 @@ CObject* CTaskGoto::WormSearch(Math::Vector &impact)
oType != OBJECT_MOBILEtt &&
oType != OBJECT_MOBILEwt &&
oType != OBJECT_MOBILEit &&
oType != OBJECT_MOBILErp &&
oType != OBJECT_MOBILEst &&
oType != OBJECT_MOBILEdr &&
oType != OBJECT_DERRICK &&
oType != OBJECT_STATION &&
@ -725,7 +727,8 @@ Error CTaskGoto::Start(Math::Vector goal, float altitude,
type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs )
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp )
{
m_bApprox = true;
}
@ -1194,6 +1197,8 @@ bool CTaskGoto::AdjustTarget(CObject* pObj, Math::Vector &pos, float &distance)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr )
{
assert(pObj->Implements(ObjectInterfaceType::Powered));
@ -1996,12 +2001,14 @@ void CTaskGoto::BitmapTerrain(int minx, int miny, int maxx, int maxy)
if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs ) // large caterpillars?
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp ) // large caterpillars?
{
aLimit = 35.0f*Math::PI/180.0f;
}
if ( type == OBJECT_MOBILEsa ) // submarine caterpillars?
if ( type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst ) // submarine caterpillars?
{
aLimit = 35.0f*Math::PI/180.0f;
bAcceptWater = true;

View File

@ -380,6 +380,8 @@ CObject* CTaskTake::SearchFriendObject(float &angle,
type != OBJECT_MOBILEtt &&
type != OBJECT_MOBILEwt &&
type != OBJECT_MOBILEit &&
type != OBJECT_MOBILErp &&
type != OBJECT_MOBILEst &&
type != OBJECT_TOWER &&
type != OBJECT_RESEARCH &&
type != OBJECT_ENERGY &&

View File

@ -1828,6 +1828,7 @@ void CPhysics::WaterFrame(float aTime, float rTime)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEdr ||
type == OBJECT_APOLLO2 )
{
@ -1877,7 +1878,8 @@ void CPhysics::SoundMotorFull(float rTime, ObjectType type)
return;
}
if ( type == OBJECT_MOBILEsa )
if ( type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst )
{
sound = SOUND_MOTORs;
amplitude = 0.6f;
@ -1886,7 +1888,8 @@ void CPhysics::SoundMotorFull(float rTime, ObjectType type)
else if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs )
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp )
{
sound = SOUND_MOTORr;
amplitude = 1.0f;
@ -1979,7 +1982,8 @@ void CPhysics::SoundMotorSlow(float rTime, ObjectType type)
return;
}
if ( type == OBJECT_MOBILEsa )
if ( type == OBJECT_MOBILEsa ||
type == OBJECT_MOBILEst )
{
sound = SOUND_MOTORs;
amplitude = 0.4f;
@ -1987,7 +1991,8 @@ void CPhysics::SoundMotorSlow(float rTime, ObjectType type)
else if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs )
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp )
{
sound = SOUND_MOTORr;
amplitude = 0.9f;
@ -2046,7 +2051,8 @@ void CPhysics::SoundMotorSlow(float rTime, ObjectType type)
if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs )
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp )
{
m_soundTimePshhh -= rTime;
@ -2777,7 +2783,9 @@ bool CPhysics::ExploOther(ObjectType iType,
oType == OBJECT_MOBILEwt ||
oType == OBJECT_MOBILEtt ||
oType == OBJECT_MOBILEft ||
oType == OBJECT_MOBILEit ) // vehicle?
oType == OBJECT_MOBILEit ||
oType == OBJECT_MOBILErp ||
oType == OBJECT_MOBILEst ) // vehicle?
{
assert(pObj->Implements(ObjectInterfaceType::Damageable));
// TODO: implement "killer"?
@ -2843,6 +2851,8 @@ int CPhysics::ExploHimself(ObjectType iType, ObjectType oType, float force)
iType == OBJECT_MOBILEtt ||
iType == OBJECT_MOBILEft ||
iType == OBJECT_MOBILEit ||
iType == OBJECT_MOBILErp ||
iType == OBJECT_MOBILEst ||
iType == OBJECT_MOBILEdr ||
iType == OBJECT_APOLLO2 ) // vehicle?
{
@ -3182,7 +3192,8 @@ void CPhysics::MotorParticle(float aTime, float rTime)
if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs ) // large caterpillars?
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp ) // large caterpillars?
{
if ( aTime-m_lastSlideParticle >= m_engine->ParticleAdapt(0.05f) )
{
@ -3456,7 +3467,7 @@ void CPhysics::MotorParticle(float aTime, float rTime)
}
}
if ( type == OBJECT_MOBILEsa && m_bSwim )
if ( (type == OBJECT_MOBILEsa || type == OBJECT_MOBILEst) && m_bSwim )
{
h = Math::Mod(aTime, 3.0f);
if ( h < 1.5f && ( h < 0.5f || h > 0.9f ) ) return;
@ -3490,7 +3501,8 @@ void CPhysics::MotorParticle(float aTime, float rTime)
if ( type == OBJECT_MOBILErt ||
type == OBJECT_MOBILErc ||
type == OBJECT_MOBILErr ||
type == OBJECT_MOBILErs )
type == OBJECT_MOBILErs ||
type == OBJECT_MOBILErp )
{
if ( !m_bMotor ) return;

View File

@ -86,6 +86,8 @@ const char* GetObjectName(ObjectType type)
if ( type == OBJECT_MOBILEtt ) return "TrackedTrainer";
if ( type == OBJECT_MOBILEft ) return "WingedTrainer";
if ( type == OBJECT_MOBILEit ) return "LeggedTrainer";
if ( type == OBJECT_MOBILErp ) return "HeavyTrainer";
if ( type == OBJECT_MOBILEst ) return "AmphibiousTrainer";
if ( type == OBJECT_MOBILEwa ) return "WheeledGrabber";
if ( type == OBJECT_MOBILEta ) return "TrackedGrabber";
if ( type == OBJECT_MOBILEfa ) return "WingedGrabber";
@ -217,6 +219,8 @@ std::string GetHelpFilename(ObjectType type)
if ( type == OBJECT_MOBILEtt ) helpfile = "object/bottr";
if ( type == OBJECT_MOBILEft ) helpfile = "object/bottr";
if ( type == OBJECT_MOBILEit ) helpfile = "object/bottr";
if ( type == OBJECT_MOBILErp ) helpfile = "object/bottr";
if ( type == OBJECT_MOBILEst ) helpfile = "object/bottr";
if ( type == OBJECT_MOBILEtg ) helpfile = "object/bottarg";
if ( type == OBJECT_MOBILEdr ) helpfile = "object/botdraw";
if ( type == OBJECT_MOBILEpr ) helpfile = "object/bottr";

View File

@ -815,6 +815,8 @@ bool runSearch(CBotVar* var, Math::Vector pos, int& exception, std::function<boo
type_v.push_back(OBJECT_MOBILEtt);
type_v.push_back(OBJECT_MOBILEft);
type_v.push_back(OBJECT_MOBILEit);
type_v.push_back(OBJECT_MOBILErp);
type_v.push_back(OBJECT_MOBILEst);
}
type_v.push_back(static_cast<ObjectType>(array->GetValInt()));
array = array->GetNext();
@ -832,6 +834,8 @@ bool runSearch(CBotVar* var, Math::Vector pos, int& exception, std::function<boo
type_v.push_back(OBJECT_MOBILEtt);
type_v.push_back(OBJECT_MOBILEft);
type_v.push_back(OBJECT_MOBILEit);
type_v.push_back(OBJECT_MOBILErp);
type_v.push_back(OBJECT_MOBILEst);
}
}
@ -1004,6 +1008,8 @@ bool runRadar(CBotVar* var, std::function<bool(std::vector<ObjectType>, float, f
type_v.push_back(OBJECT_MOBILEtt);
type_v.push_back(OBJECT_MOBILEft);
type_v.push_back(OBJECT_MOBILEit);
type_v.push_back(OBJECT_MOBILErp);
type_v.push_back(OBJECT_MOBILEst);
}
type_v.push_back(static_cast<ObjectType>(array->GetValInt()));
array = array->GetNext();
@ -1021,6 +1027,8 @@ bool runRadar(CBotVar* var, std::function<bool(std::vector<ObjectType>, float, f
type_v.push_back(OBJECT_MOBILEtt);
type_v.push_back(OBJECT_MOBILEft);
type_v.push_back(OBJECT_MOBILEit);
type_v.push_back(OBJECT_MOBILErp);
type_v.push_back(OBJECT_MOBILEst);
}
}
@ -1189,6 +1197,8 @@ bool CScriptFunctions::rDetect(CBotVar* var, CBotVar* result, int& exception, vo
type_v.push_back(OBJECT_MOBILEtt);
type_v.push_back(OBJECT_MOBILEft);
type_v.push_back(OBJECT_MOBILEit);
type_v.push_back(OBJECT_MOBILErp);
type_v.push_back(OBJECT_MOBILEst);
}
type_v.push_back(static_cast<ObjectType>(array->GetValInt()));
array = array->GetNext();
@ -1206,6 +1216,8 @@ bool CScriptFunctions::rDetect(CBotVar* var, CBotVar* result, int& exception, vo
type_v.push_back(OBJECT_MOBILEtt);
type_v.push_back(OBJECT_MOBILEft);
type_v.push_back(OBJECT_MOBILEit);
type_v.push_back(OBJECT_MOBILErp);
type_v.push_back(OBJECT_MOBILEst);
}
}

View File

@ -880,6 +880,8 @@ void CMap::DrawObjectIcon(Math::Point pos, Math::Point dim, MapColor color,
case OBJECT_MOBILEtt: icon = 5; break;
case OBJECT_MOBILEwt: icon = 30; break;
case OBJECT_MOBILEit: icon = 7; break;
case OBJECT_MOBILErp: icon = 9; break;
case OBJECT_MOBILEst: icon = 10; break;
case OBJECT_MOBILEtg: icon = 45; break;
case OBJECT_MOBILEdr: icon = 48; break;
case OBJECT_APOLLO2: icon = 49; break;
@ -903,6 +905,8 @@ void CMap::DrawObjectIcon(Math::Point pos, Math::Point dim, MapColor color,
case OBJECT_MOBILEft:
case OBJECT_MOBILEtt:
case OBJECT_MOBILEit:
case OBJECT_MOBILErp:
case OBJECT_MOBILEst:
m_engine->SetTexture("textures/interface/button4.png"); break;
default: ; // button3.png
}
@ -1277,6 +1281,8 @@ void CMap::UpdateObject(CObject* pObj)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEft ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr ||
type == OBJECT_APOLLO2 ) // moving vehicle?
{

View File

@ -238,6 +238,8 @@ int CMainShort::GetShortcutIcon(ObjectType type)
case OBJECT_MOBILEtt: icon = 5; break;
case OBJECT_MOBILEwt: icon = 30; break;
case OBJECT_MOBILEit: icon = 7; break;
case OBJECT_MOBILErp: icon = 9; break;
case OBJECT_MOBILEst: icon = 10; break;
case OBJECT_MOBILEtg: icon = 45; break;
case OBJECT_MOBILEdr: icon = 48; break;
case OBJECT_APOLLO2: icon = 49; break;
@ -254,6 +256,8 @@ int CMainShort::GetShortcutIcon(ObjectType type)
case OBJECT_MOBILEft:
case OBJECT_MOBILEtt:
case OBJECT_MOBILEit:
case OBJECT_MOBILErp:
case OBJECT_MOBILEst:
return 192+icon;
default:
return 128+icon;

View File

@ -875,6 +875,8 @@ bool CObjectInterface::CreateInterface(bool bSelect)
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr ||
type == OBJECT_MOTHER ||
type == OBJECT_ANT ||
@ -1920,6 +1922,8 @@ void CObjectInterface::UpdateInterface()
type == OBJECT_MOBILEtt ||
type == OBJECT_MOBILEwt ||
type == OBJECT_MOBILEit ||
type == OBJECT_MOBILErp ||
type == OBJECT_MOBILEst ||
type == OBJECT_MOBILEdr ||
type == OBJECT_MOTHER ||
type == OBJECT_ANT ||