summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2013-04-28 20:24:46 +0200
committerkrzys-h <krzys_h@interia.pl>2013-04-28 20:24:46 +0200
commit5fd64624d34e9332b726ecaffecbcbd6686a7d2e (patch)
treee60eb5a9b318a9fd54d4866b28485eb54f443198
parentc7d289c00bc60d366f8c5c1016fb30717a228495 (diff)
downloadcolobot-5fd64624d34e9332b726ecaffecbcbd6686a7d2e.tar.gz
colobot-5fd64624d34e9332b726ecaffecbcbd6686a7d2e.tar.bz2
colobot-5fd64624d34e9332b726ecaffecbcbd6686a7d2e.zip
Fix for game crashing sometimes when using MissionController
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/object/motion/motiondummy.cpp62
-rw-r--r--src/object/motion/motiondummy.h32
-rw-r--r--src/object/object.cpp3
4 files changed, 97 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 26c02bc..f4305df 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -120,6 +120,7 @@ object/mainmovie.cpp
object/motion/motion.cpp
object/motion/motionant.cpp
object/motion/motionbee.cpp
+object/motion/motiondummy.cpp
object/motion/motionhuman.cpp
object/motion/motionmother.cpp
object/motion/motionspider.cpp
diff --git a/src/object/motion/motiondummy.cpp b/src/object/motion/motiondummy.cpp
new file mode 100644
index 0000000..68827ff
--- /dev/null
+++ b/src/object/motion/motiondummy.cpp
@@ -0,0 +1,62 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+
+#include "object/motion/motiondummy.h"
+
+#include "graphics/engine/modelmanager.h"
+
+#include <stdio.h>
+#include <string.h>
+
+
+
+
+
+// Object's constructor.
+
+CMotionDummy::CMotionDummy(CObject* object) : CMotion(object)
+{
+}
+
+// Object's destructor.
+
+CMotionDummy::~CMotionDummy()
+{
+}
+
+
+// Removes an object.
+
+void CMotionDummy::DeleteObject(bool bAll)
+{
+}
+
+
+// Creates a Dummy traveling any lands on the ground.
+
+bool CMotionDummy::Create(Math::Vector pos, float angle, ObjectType type,
+ float power)
+{
+ m_object->SetType(type);
+
+ // Creates the main base.
+ int rank = m_engine->CreateObject();
+ m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object
+ m_object->SetObjectRank(0, rank);
+
+ return true;
+} \ No newline at end of file
diff --git a/src/object/motion/motiondummy.h b/src/object/motion/motiondummy.h
new file mode 100644
index 0000000..744df2f
--- /dev/null
+++ b/src/object/motion/motiondummy.h
@@ -0,0 +1,32 @@
+// * This file is part of the COLOBOT source code
+// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
+// *
+// * This program is free software: you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with this program. If not, see http://www.gnu.org/licenses/.
+
+// motiondummy.h
+
+#pragma once
+
+
+#include "object/motion/motion.h"
+
+class CMotionDummy : public CMotion
+{
+public:
+ CMotionDummy(CObject* object);
+ ~CMotionDummy();
+
+ void DeleteObject(bool bAll=false);
+ bool Create(Math::Vector pos, float angle, ObjectType type, float power);
+}; \ No newline at end of file
diff --git a/src/object/object.cpp b/src/object/object.cpp
index ce79e34..3459644 100644
--- a/src/object/object.cpp
+++ b/src/object/object.cpp
@@ -64,6 +64,7 @@
#include "object/motion/motion.h"
#include "object/motion/motionant.h"
#include "object/motion/motionbee.h"
+#include "object/motion/motiondummy.h"
#include "object/motion/motionhuman.h"
#include "object/motion/motionmother.h"
#include "object/motion/motionspider.h"
@@ -2146,7 +2147,7 @@ bool CObject::CreateVehicle(Math::Vector pos, float angle, ObjectType type,
m_motion = new CMotionHuman(this);
}
else if ( type == OBJECT_CONTROLLER ) {
- m_motion = new CMotion(this); //dummy object
+ m_motion = new CMotionDummy(this); //dummy object
}
else {
m_motion = new CMotionVehicle(this);