Fix for game crashing sometimes when using MissionController

dev-ui
krzys-h 2013-04-28 20:24:46 +02:00
parent c7d289c00b
commit 5fd64624d3
4 changed files with 97 additions and 1 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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);
};

View File

@ -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);