diff options
author | krzys-h <krzys_h@interia.pl> | 2013-05-19 16:25:53 +0200 |
---|---|---|
committer | krzys-h <krzys_h@interia.pl> | 2013-05-19 16:27:33 +0200 |
commit | b9d0ee034e1e0b78cbca137cc2f39930fb7ad127 (patch) | |
tree | 4185c45cb5afaefb6e681409662e8f0f9d64661e /src/object/auto/autofactory.cpp | |
parent | 7662f312b399b58faf20db4a850a2b0298d659df (diff) | |
download | colobot-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.cpp | 25 |
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(); |