MissionController improved
parent
c2932f4ee3
commit
75950c55ba
|
@ -1309,7 +1309,8 @@ bool CBrain::CreateInterface(bool bSelect)
|
||||||
type == OBJECT_ANT ||
|
type == OBJECT_ANT ||
|
||||||
type == OBJECT_SPIDER ||
|
type == OBJECT_SPIDER ||
|
||||||
type == OBJECT_BEE ||
|
type == OBJECT_BEE ||
|
||||||
type == OBJECT_WORM ) // vehicle?
|
type == OBJECT_WORM ||
|
||||||
|
type == OBJECT_CONTROLLER) // vehicle?
|
||||||
{
|
{
|
||||||
if (!(m_main->GetRetroMode())) {
|
if (!(m_main->GetRetroMode())) {
|
||||||
ddim.x = dim.x*5.1f;
|
ddim.x = dim.x*5.1f;
|
||||||
|
@ -1334,7 +1335,8 @@ bool CBrain::CreateInterface(bool bSelect)
|
||||||
type == OBJECT_MOBILEfi ||
|
type == OBJECT_MOBILEfi ||
|
||||||
type == OBJECT_MOBILEfs ||
|
type == OBJECT_MOBILEfs ||
|
||||||
type == OBJECT_MOBILEft ||
|
type == OBJECT_MOBILEft ||
|
||||||
type == OBJECT_BEE ) // driving?
|
type == OBJECT_BEE ||
|
||||||
|
type == OBJECT_CONTROLLER) // driving?
|
||||||
{
|
{
|
||||||
pos.x = ox+sx*6.4f;
|
pos.x = ox+sx*6.4f;
|
||||||
pos.y = oy+sy*0;
|
pos.y = oy+sy*0;
|
||||||
|
@ -1346,8 +1348,9 @@ bool CBrain::CreateInterface(bool bSelect)
|
||||||
pb = pw->CreateButton(pos, dim, 28, EVENT_OBJECT_GASUP);
|
pb = pw->CreateButton(pos, dim, 28, EVENT_OBJECT_GASUP);
|
||||||
pb->SetImmediat(true);
|
pb->SetImmediat(true);
|
||||||
|
|
||||||
if ( type != OBJECT_HUMAN ||
|
if ( (type != OBJECT_HUMAN &&
|
||||||
m_object->GetOption() != 2 )
|
type != OBJECT_CONTROLLER) ||
|
||||||
|
m_object->GetOption() != 2 )
|
||||||
{
|
{
|
||||||
pos.x = ox+sx*15.3f;
|
pos.x = ox+sx*15.3f;
|
||||||
pos.y = oy+sy*0;
|
pos.y = oy+sy*0;
|
||||||
|
@ -2305,7 +2308,8 @@ void CBrain::UpdateInterface()
|
||||||
type == OBJECT_ANT ||
|
type == OBJECT_ANT ||
|
||||||
type == OBJECT_SPIDER ||
|
type == OBJECT_SPIDER ||
|
||||||
type == OBJECT_BEE ||
|
type == OBJECT_BEE ||
|
||||||
type == OBJECT_WORM ) // vehicle?
|
type == OBJECT_WORM ||
|
||||||
|
type == OBJECT_CONTROLLER) // vehicle?
|
||||||
{
|
{
|
||||||
bRun = false;
|
bRun = false;
|
||||||
if ( m_script[m_selScript] != 0 )
|
if ( m_script[m_selScript] != 0 )
|
||||||
|
|
|
@ -17,16 +17,12 @@
|
||||||
|
|
||||||
|
|
||||||
#include "object/motion/motiondummy.h"
|
#include "object/motion/motiondummy.h"
|
||||||
|
#include "physics/physics.h"
|
||||||
#include "graphics/engine/modelmanager.h"
|
#include "graphics/engine/modelmanager.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Object's constructor.
|
// Object's constructor.
|
||||||
|
|
||||||
CMotionDummy::CMotionDummy(CObject* object) : CMotion(object)
|
CMotionDummy::CMotionDummy(CObject* object) : CMotion(object)
|
||||||
|
@ -59,5 +55,30 @@ bool CMotionDummy::Create(Math::Vector pos, float angle, ObjectType type,
|
||||||
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
|
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
|
||||||
m_object->SetObjectRank(0, rank);
|
m_object->SetObjectRank(0, rank);
|
||||||
|
|
||||||
|
// Movement
|
||||||
|
m_physics->SetType(TYPE_FLYING);
|
||||||
|
|
||||||
|
m_physics->SetLinMotionX(MO_ADVSPEED, 50.0f);
|
||||||
|
m_physics->SetLinMotionX(MO_RECSPEED, 50.0f);
|
||||||
|
m_physics->SetLinMotionX(MO_ADVACCEL, 20.0f);
|
||||||
|
m_physics->SetLinMotionX(MO_RECACCEL, 20.0f);
|
||||||
|
m_physics->SetLinMotionX(MO_STOACCEL, 20.0f);
|
||||||
|
m_physics->SetLinMotionX(MO_TERSLIDE, 5.0f);
|
||||||
|
m_physics->SetLinMotionZ(MO_TERSLIDE, 5.0f);
|
||||||
|
m_physics->SetLinMotionX(MO_TERFORCE, 50.0f);
|
||||||
|
m_physics->SetLinMotionZ(MO_TERFORCE, 50.0f);
|
||||||
|
m_physics->SetLinMotionZ(MO_MOTACCEL, 40.0f);
|
||||||
|
m_physics->SetLinMotionY(MO_ADVSPEED, 60.0f);
|
||||||
|
m_physics->SetLinMotionY(MO_RECSPEED, 60.0f);
|
||||||
|
m_physics->SetLinMotionY(MO_ADVACCEL, 20.0f);
|
||||||
|
m_physics->SetLinMotionY(MO_RECACCEL, 50.0f);
|
||||||
|
m_physics->SetLinMotionY(MO_STOACCEL, 50.0f);
|
||||||
|
|
||||||
|
m_physics->SetCirMotionY(MO_ADVSPEED, 0.4f*Math::PI);
|
||||||
|
m_physics->SetCirMotionY(MO_RECSPEED, 0.4f*Math::PI);
|
||||||
|
m_physics->SetCirMotionY(MO_ADVACCEL, 2.0f);
|
||||||
|
m_physics->SetCirMotionY(MO_RECACCEL, 2.0f);
|
||||||
|
m_physics->SetCirMotionY(MO_STOACCEL, 2.0f);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
|
@ -656,6 +656,7 @@ CRobotMain::CRobotMain(CApplication* app)
|
||||||
m_terrainCreate = false;
|
m_terrainCreate = false;
|
||||||
|
|
||||||
m_version = 1;
|
m_version = 1;
|
||||||
|
m_controller = nullptr;
|
||||||
m_retroStyle = false;
|
m_retroStyle = false;
|
||||||
m_immediatSatCom = false;
|
m_immediatSatCom = false;
|
||||||
m_beginSatCom = false;
|
m_beginSatCom = false;
|
||||||
|
@ -1791,6 +1792,23 @@ void CRobotMain::ExecuteCmd(char *cmd)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp(cmd, "controller") == 0)
|
||||||
|
{
|
||||||
|
if (m_controller != nullptr) {
|
||||||
|
// Don't use SelectObject because it checks if the object is selectable
|
||||||
|
if (m_camera->GetType() == Gfx::CAM_TYPE_VISIT)
|
||||||
|
StopDisplayVisit();
|
||||||
|
|
||||||
|
CObject* prev = DeselectAll();
|
||||||
|
if (prev != nullptr && prev != m_controller)
|
||||||
|
m_controller->AddDeselList(prev);
|
||||||
|
|
||||||
|
SelectOneObject(m_controller, true);
|
||||||
|
m_short->UpdateShortcuts();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(cmd, "photo1") == 0)
|
if (strcmp(cmd, "photo1") == 0)
|
||||||
{
|
{
|
||||||
m_freePhoto = !m_freePhoto;
|
m_freePhoto = !m_freePhoto;
|
||||||
|
@ -3839,6 +3857,8 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
|
||||||
m_mapImage = false;
|
m_mapImage = false;
|
||||||
m_mapFilename[0] = 0;
|
m_mapFilename[0] = 0;
|
||||||
|
|
||||||
|
m_controller = nullptr;
|
||||||
|
|
||||||
m_colorRefBot.r = 10.0f/256.0f;
|
m_colorRefBot.r = 10.0f/256.0f;
|
||||||
m_colorRefBot.g = 166.0f/256.0f;
|
m_colorRefBot.g = 166.0f/256.0f;
|
||||||
m_colorRefBot.b = 254.0f/256.0f; // blue
|
m_colorRefBot.b = 254.0f/256.0f; // blue
|
||||||
|
@ -4358,14 +4378,15 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CObject* obj = CreateObject(Math::Vector(0.0f, 0.0f, 0.0f), 0.0f, 1.0f, 0.0f, OBJECT_CONTROLLER, 100.0f, false, false, 0);
|
m_controller = CreateObject(Math::Vector(0.0f, 0.0f, 0.0f), 0.0f, 1.0f, 0.0f, OBJECT_CONTROLLER, 100.0f, false, false, 0);
|
||||||
CBrain* brain = obj->GetBrain();
|
m_controller->SetMagnifyDamage(100.0f);
|
||||||
|
CBrain* brain = m_controller->GetBrain();
|
||||||
if (brain != nullptr)
|
if (brain != nullptr)
|
||||||
{
|
{
|
||||||
OpString(line, "script", name);
|
OpString(line, "script", name);
|
||||||
if (name[0] != 0)
|
if (name[0] != 0)
|
||||||
brain->SetScriptName(1, name);
|
brain->SetScriptName(0, name);
|
||||||
brain->SetScriptRun(1);
|
brain->SetScriptRun(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -469,6 +469,8 @@ protected:
|
||||||
int m_delayWriteMessage;
|
int m_delayWriteMessage;
|
||||||
int m_movieInfoIndex;
|
int m_movieInfoIndex;
|
||||||
|
|
||||||
|
CObject* m_controller;
|
||||||
|
|
||||||
//Level Checker flags
|
//Level Checker flags
|
||||||
bool m_beginObject;
|
bool m_beginObject;
|
||||||
bool m_terrainGenerate;
|
bool m_terrainGenerate;
|
||||||
|
|
|
@ -1455,7 +1455,7 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir)
|
||||||
|
|
||||||
// The worm goes everywhere and through everything!
|
// The worm goes everywhere and through everything!
|
||||||
iType = m_object->GetType();
|
iType = m_object->GetType();
|
||||||
if ( iType == OBJECT_WORM ) return;
|
if ( iType == OBJECT_WORM || iType == OBJECT_CONTROLLER ) return;
|
||||||
|
|
||||||
m_object->GetCrashSphere(0, iPos, iRadius);
|
m_object->GetCrashSphere(0, iPos, iRadius);
|
||||||
gDist = Math::Distance(iPos, m_goal);
|
gDist = Math::Distance(iPos, m_goal);
|
||||||
|
|
|
@ -794,7 +794,8 @@ void CPhysics::MotorUpdate(float aTime, float rTime)
|
||||||
type == OBJECT_BEE ||
|
type == OBJECT_BEE ||
|
||||||
type == OBJECT_WORM ||
|
type == OBJECT_WORM ||
|
||||||
type == OBJECT_APOLLO2 ||
|
type == OBJECT_APOLLO2 ||
|
||||||
type == OBJECT_MOBILEdr )
|
type == OBJECT_MOBILEdr ||
|
||||||
|
type == OBJECT_CONTROLLER)
|
||||||
{
|
{
|
||||||
power = 0;
|
power = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -401,6 +401,7 @@ ObjectType GetTypeObject(char *line, int rank, ObjectType def)
|
||||||
if ( Cmd(p, "ApolloAntenna" ) ) return OBJECT_APOLLO5;
|
if ( Cmd(p, "ApolloAntenna" ) ) return OBJECT_APOLLO5;
|
||||||
if ( Cmd(p, "Me" ) ) return OBJECT_HUMAN;
|
if ( Cmd(p, "Me" ) ) return OBJECT_HUMAN;
|
||||||
if ( Cmd(p, "Tech" ) ) return OBJECT_TECH;
|
if ( Cmd(p, "Tech" ) ) return OBJECT_TECH;
|
||||||
|
if ( Cmd(p, "MissionController" ) ) return OBJECT_CONTROLLER;
|
||||||
|
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
@ -647,6 +648,7 @@ const char* GetTypeObject(ObjectType type)
|
||||||
if ( type == OBJECT_APOLLO5 ) return "ApolloAntenna";
|
if ( type == OBJECT_APOLLO5 ) return "ApolloAntenna";
|
||||||
if ( type == OBJECT_HUMAN ) return "Me";
|
if ( type == OBJECT_HUMAN ) return "Me";
|
||||||
if ( type == OBJECT_TECH ) return "Tech";
|
if ( type == OBJECT_TECH ) return "Tech";
|
||||||
|
if ( type == OBJECT_CONTROLLER ) return "MissionController";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -668,7 +668,7 @@ bool CScript::rRadar(CBotVar* var, CBotVar* result, int& exception, void* user)
|
||||||
if ( pObj->GetProxyActivate() ) continue;
|
if ( pObj->GetProxyActivate() ) continue;
|
||||||
|
|
||||||
oType = pObj->GetType();
|
oType = pObj->GetType();
|
||||||
if ( oType == OBJECT_TOTO ) continue;
|
if ( oType == OBJECT_TOTO || oType == OBJECT_CONTROLLER ) continue;
|
||||||
|
|
||||||
if ( oType == OBJECT_RUINmobilew2 ||
|
if ( oType == OBJECT_RUINmobilew2 ||
|
||||||
oType == OBJECT_RUINmobilet1 ||
|
oType == OBJECT_RUINmobilet1 ||
|
||||||
|
|
Loading…
Reference in New Issue