summaryrefslogtreecommitdiffstats
path: root/src/object/auto/autofactory.cpp
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2013-05-19 16:25:53 +0200
committerkrzys-h <krzys_h@interia.pl>2013-05-19 16:27:33 +0200
commitb9d0ee034e1e0b78cbca137cc2f39930fb7ad127 (patch)
tree4185c45cb5afaefb6e681409662e8f0f9d64661e /src/object/auto/autofactory.cpp
parent7662f312b399b58faf20db4a850a2b0298d659df (diff)
downloadcolobot-b9d0ee034e1e0b78cbca137cc2f39930fb7ad127.tar.gz
colobot-b9d0ee034e1e0b78cbca137cc2f39930fb7ad127.tar.bz2
colobot-b9d0ee034e1e0b78cbca137cc2f39930fb7ad127.zip
Running program in robots created using object.factory()
Diffstat (limited to 'src/object/auto/autofactory.cpp')
-rw-r--r--src/object/auto/autofactory.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/object/auto/autofactory.cpp b/src/object/auto/autofactory.cpp
index 6aca426..fb82497 100644
--- a/src/object/auto/autofactory.cpp
+++ b/src/object/auto/autofactory.cpp
@@ -24,6 +24,7 @@
#include "math/geometry.h"
#include "object/robotmain.h"
+#include "object/brain.h"
#include "physics/physics.h"
@@ -103,6 +104,8 @@ void CAutoFactory::Init()
m_fretPos = m_object->GetPosition(0);
+ m_program = nullptr;
+
CAuto::Init();
}
@@ -149,6 +152,15 @@ Error CAutoFactory::StartAction(int param)
}
+// Sets program for created robot
+
+void CAutoFactory::SetProgram(const char* program)
+{
+ m_program = new char[strlen(program)+1];
+ strcpy(m_program, program);
+}
+
+
// Management of an event.
bool CAutoFactory::EventProcess(const Event &event)
@@ -377,7 +389,7 @@ bool CAutoFactory::EventProcess(const Event &event)
delete fret;
}
- vehicle = SearchVehicle();
+ m_vehicle = vehicle = SearchVehicle();
if ( vehicle != 0 )
{
physics = vehicle->GetPhysics();
@@ -476,6 +488,17 @@ bool CAutoFactory::EventProcess(const Event &event)
m_object->SetZoomZ(10+i, 0.30f);
}
+ if ( m_program != nullptr )
+ {
+ CBrain* brain = m_vehicle->GetBrain();
+ if ( brain != nullptr )
+ {
+ brain->SendProgram(0, const_cast<const char*>(m_program));
+ brain->SetScriptRun(0);
+ brain->RunProgram(0);
+ }
+ }
+
SetBusy(false);
UpdateInterface();