Added interface button for AlienSpider explosion

Issue #142
dev-ui
krzys-h 2013-03-26 15:33:54 +01:00
parent 43c39f60cd
commit df5edc703c
4 changed files with 66 additions and 30 deletions

View File

@ -444,6 +444,7 @@ enum EventType
EVENT_OBJECT_TERRAFORM = 1201,
EVENT_OBJECT_FIRE = 1202,
EVENT_OBJECT_FIREANT = 1203,
EVENT_OBJECT_SPIDEREXPLO= 1204,
EVENT_OBJECT_RECOVER = 1220,
EVENT_OBJECT_BEGSHIELD = 1221,
EVENT_OBJECT_ENDSHIELD = 1222,

View File

@ -352,6 +352,7 @@ void InitializeRestext()
stringsEvent[EVENT_OBJECT_SEARCH] = "Sniff (\\key action;)";
stringsEvent[EVENT_OBJECT_TERRAFORM] = "Thump (\\key action;)";
stringsEvent[EVENT_OBJECT_FIRE] = "Shoot (\\key action;)";
stringsEvent[EVENT_OBJECT_SPIDEREXPLO] = "Explode (\\key action;)";
stringsEvent[EVENT_OBJECT_RECOVER] = "Recycle (\\key action;)";
stringsEvent[EVENT_OBJECT_BEGSHIELD] = "Extend shield (\\key action;)";
stringsEvent[EVENT_OBJECT_ENDSHIELD] = "Withdraw shield (\\key action;)";

View File

@ -602,6 +602,11 @@ bool CBrain::EventProcess(const Event &event)
//? err = StartTaskFireAnt();
}
if ( action == EVENT_OBJECT_SPIDEREXPLO && m_primaryTask == 0 )
{
err = StartTaskSpiderExplo();
}
if ( action == EVENT_OBJECT_PEN0 ) // up
{
err = StartTaskPen(false, m_object->GetTraceColor());
@ -1077,6 +1082,24 @@ Error CBrain::StartTaskFire(float delay)
return err;
}
// Explodes spider.
Error CBrain::StartTaskSpiderExplo()
{
Error err;
if ( m_primaryTask != 0 )
{
delete m_primaryTask; // stops the current task
m_primaryTask = 0;
}
m_primaryTask = new CTaskManager(m_object);
err = m_primaryTask->StartTaskSpiderExplo();
UpdateInterface();
return err;
}
// Shoots to the ant.
Error CBrain::StartTaskFireAnt(Math::Vector impact)
@ -1580,6 +1603,15 @@ bool CBrain::CreateInterface(bool bSelect)
//? pw->CreateButton(pos, dim, 41, EVENT_OBJECT_LIMIT);
}
if ( type == OBJECT_SPIDER )
{
pos.x = ox+sx*7.7f;
pos.y = oy+sy*0.5f;
pb = pw->CreateButton(pos, dim, 42, EVENT_OBJECT_SPIDEREXPLO);
pb->SetImmediat(true);
DefaultEnter(pw, EVENT_OBJECT_SPIDEREXPLO);
}
if ( type == OBJECT_MOBILEdr &&
m_object->GetManual() ) // scribbler in manual mode?
{
@ -2136,37 +2168,38 @@ void CBrain::UpdateInterface()
bEnable = ( m_primaryTask == 0 && m_program == -1 );
EnableInterface(pw, EVENT_OBJECT_PROGEDIT, (m_primaryTask == 0 && !m_bTraceRecord));
EnableInterface(pw, EVENT_OBJECT_PROGLIST, bEnable && !m_bTraceRecord);
EnableInterface(pw, EVENT_OBJECT_LEFT, bEnable);
EnableInterface(pw, EVENT_OBJECT_RIGHT, bEnable);
EnableInterface(pw, EVENT_OBJECT_UP, bEnable);
EnableInterface(pw, EVENT_OBJECT_DOWN, bEnable);
EnableInterface(pw, EVENT_OBJECT_HTAKE, bEnable);
EnableInterface(pw, EVENT_OBJECT_MTAKE, bEnable);
EnableInterface(pw, EVENT_OBJECT_MBACK, bEnable);
EnableInterface(pw, EVENT_OBJECT_MPOWER, bEnable);
EnableInterface(pw, EVENT_OBJECT_MFRONT, bEnable);
EnableInterface(pw, EVENT_OBJECT_GFLAT, bEnable);
EnableInterface(pw, EVENT_OBJECT_FCREATE, bEnable);
EnableInterface(pw, EVENT_OBJECT_FDELETE, bEnable);
EnableInterface(pw, EVENT_OBJECT_SEARCH, bEnable);
EnableInterface(pw, EVENT_OBJECT_TERRAFORM, bEnable);
EnableInterface(pw, EVENT_OBJECT_RECOVER, bEnable);
EnableInterface(pw, EVENT_OBJECT_FIRE, bEnable);
EnableInterface(pw, EVENT_OBJECT_RESET, bEnable);
EnableInterface(pw, EVENT_OBJECT_PROGEDIT, (m_primaryTask == 0 && !m_bTraceRecord));
EnableInterface(pw, EVENT_OBJECT_PROGLIST, bEnable && !m_bTraceRecord);
EnableInterface(pw, EVENT_OBJECT_LEFT, bEnable);
EnableInterface(pw, EVENT_OBJECT_RIGHT, bEnable);
EnableInterface(pw, EVENT_OBJECT_UP, bEnable);
EnableInterface(pw, EVENT_OBJECT_DOWN, bEnable);
EnableInterface(pw, EVENT_OBJECT_HTAKE, bEnable);
EnableInterface(pw, EVENT_OBJECT_MTAKE, bEnable);
EnableInterface(pw, EVENT_OBJECT_MBACK, bEnable);
EnableInterface(pw, EVENT_OBJECT_MPOWER, bEnable);
EnableInterface(pw, EVENT_OBJECT_MFRONT, bEnable);
EnableInterface(pw, EVENT_OBJECT_GFLAT, bEnable);
EnableInterface(pw, EVENT_OBJECT_FCREATE, bEnable);
EnableInterface(pw, EVENT_OBJECT_FDELETE, bEnable);
EnableInterface(pw, EVENT_OBJECT_SEARCH, bEnable);
EnableInterface(pw, EVENT_OBJECT_TERRAFORM, bEnable);
EnableInterface(pw, EVENT_OBJECT_RECOVER, bEnable);
EnableInterface(pw, EVENT_OBJECT_FIRE, bEnable);
EnableInterface(pw, EVENT_OBJECT_SPIDEREXPLO, bEnable);
EnableInterface(pw, EVENT_OBJECT_RESET, bEnable);
#if _TEEN
EnableInterface(pw, EVENT_OBJECT_PEN0, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN1, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN2, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN3, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN4, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN5, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN6, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN7, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN8, bEnable);
EnableInterface(pw, EVENT_OBJECT_REC, bEnable);
EnableInterface(pw, EVENT_OBJECT_STOP, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN0, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN1, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN2, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN3, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN4, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN5, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN6, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN7, bEnable);
EnableInterface(pw, EVENT_OBJECT_PEN8, bEnable);
EnableInterface(pw, EVENT_OBJECT_REC, bEnable);
EnableInterface(pw, EVENT_OBJECT_STOP, bEnable);
#endif
if ( type == OBJECT_HUMAN ) // builder?

View File

@ -133,6 +133,7 @@ public:
Error StartTaskShield(TaskShieldMode mode);
Error StartTaskFire(float delay);
Error StartTaskFireAnt(Math::Vector impact);
Error StartTaskSpiderExplo();
Error StartTaskGunGoal(float dirV, float dirH);
Error StartTaskReset(Math::Vector goal, Math::Vector angle);