colobot/src/object/task/taskbuild.h

92 lines
3.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* This file is part of the Colobot: Gold Edition source code
* Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam
* http://epsiteс.ch; http://colobot.info; http://github.com/colobot
*
* 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://gnu.org/licenses
*/
// taskbuild.h
#pragma once
#include "object/task/task.h"
#include "object/object_type.h"
#include "math/vector.h"
class CObject;
const float BUILDMARGIN = 16.0f;
const int TBMAXLIGHT = 4;
enum TaskBuildPhase
{
TBP_TURN = 1, // turns
TBP_MOVE = 2, // forward/backward
TBP_TAKE = 3, // takes gun
TBP_PREP = 4, // prepares
TBP_BUILD = 5, // builds
TBP_TERM = 6, // ends
TBP_RECEDE = 7, // back terminal
};
class CTaskBuild : public CTask
{
public:
CTaskBuild(COldObject* object);
~CTaskBuild();
bool EventProcess(const Event &event);
Error Start(ObjectType type);
Error IsEnded();
bool Abort();
protected:
Error FlatFloor();
bool CreateBuilding(Math::Vector pos, float angle);
void CreateLight();
void BlackLight();
CObject* SearchMetalObject(float &angle, float dMin, float dMax, float aLimit, Error &err);
void DeleteMark(Math::Vector pos, float radius);
protected:
ObjectType m_type; // type of construction
CObject* m_metal; // transforms metal object
CObject* m_power; // the vehicle battery
CObject* m_building; // building built
TaskBuildPhase m_phase; // phase of the operation
bool m_bError; // true -> operation impossible
bool m_bBuild; // true -> building built
bool m_bBlack; // true -> lights black -> white
float m_time; // absolute time
float m_lastParticle; // time of generation last particle
float m_progress; // progression (0..1)
float m_speed; // speed of progression
float m_angleY; // rotation angle of the vehicle
float m_angleZ; // angle of rotation of the gun
Math::Vector m_buildingPos; // initial position of the building
float m_buildingHeight; // height of the building
int m_lightRank[TBMAXLIGHT]; // lights for the effects
int m_soundChannel;
};