Colobot
task_executor_impl.h
1 /*
2  * This file is part of the Colobot: Gold Edition source code
3  * Copyright (C) 2001-2016, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsitec.ch; http://colobot.info; http://github.com/colobot
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see http://gnu.org/licenses
18  */
19 
20 #pragma once
21 
22 #include "object/interface/task_executor_object.h"
23 
24 #include <memory>
25 
26 class CObject;
27 
29 {
30 public:
31  explicit CTaskExecutorObjectImpl(ObjectInterfaceTypes& types, CObject* object);
32  virtual ~CTaskExecutorObjectImpl();
33 
34  bool EventProcess(const Event& event);
35 
36  bool IsForegroundTask() override;
37  bool IsBackgroundTask() override;
38 
41 
42  void StopForegroundTask() override;
43  void StopBackgroundTask() override;
44 
45  Error StartTaskTake() override;
46  Error StartTaskManip(TaskManipOrder order, TaskManipArm arm) override;
47  Error StartTaskFlag(TaskFlagOrder order, int rank) override;
48  Error StartTaskBuild(ObjectType type) override;
49  Error StartTaskSearch() override;
50  Error StartTaskDeleteMark() override;
51  Error StartTaskTerraform() override;
52  Error StartTaskRecover() override;
53  Error StartTaskFire(float delay) override;
54  Error StartTaskFireAnt(Math::Vector impact) override;
55  Error StartTaskSpiderExplo() override;
56  Error StartTaskPen(bool down, TraceColor color = TraceColor::Default) override;
57 
58  Error StartTaskWait(float time) override;
59  Error StartTaskAdvance(float length) override;
60  Error StartTaskTurn(float angle) override;
61  Error StartTaskGoto(Math::Vector pos, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode) override;
62  Error StartTaskInfo(const char *name, float value, float power, bool bSend) override;
63 
64  Error StartTaskShield(TaskShieldMode mode, float delay = 1000.0f) override;
65  Error StartTaskGunGoal(float dirV, float dirH) override;
66 
67 private:
68  Error EndedTask();
69 
70  template<typename TaskType, typename... Args>
71  Error StartForegroundTask(Args&&... args);
72 
73  template<typename TaskType, typename... Args>
74  Error StartBackgroundTask(Args&&... args);
75 
76 protected:
77  std::unique_ptr<CForegroundTask> m_foregroundTask;
78  std::unique_ptr<CBackgroundTask> m_backgroundTask;
79 
80 private:
81  CObject* m_object;
82 };
void StopForegroundTask() override
Stop foreground task.
Definition: task_executor_impl.cpp:89
void StopBackgroundTask() override
Stop background task.
Definition: task_executor_impl.cpp:100
Interface for objects that can execute tasks.
Definition: task_executor_object.h:36
Definition: task_executor_impl.h:28
CForegroundTask * GetForegroundTask() override
Return the foreground task.
Definition: task_executor_impl.cpp:77
bool IsBackgroundTask() override
Is executing background task?
Definition: task_executor_impl.cpp:72
bool IsForegroundTask() override
Is executing foreground task?
Definition: task_executor_impl.cpp:67
Error StartTaskWait(float time) override
Start a foreground task (scriptable tasks, not in UI)
Definition: task_executor_impl.cpp:241
Definition: task.h:94
Error StartTaskTake() override
Start a foreground task.
Definition: task_executor_impl.cpp:180
ObjectType
Type of game object.
Definition: object_type.h:33
Error StartTaskShield(TaskShieldMode mode, float delay=1000.0f) override
Starts a background task.
Definition: task_executor_impl.cpp:267
Definition: task.h:103
3D (3x1) vector
Definition: vector.h:53
CBackgroundTask * GetBackgroundTask() override
Return the background task.
Definition: task_executor_impl.cpp:82
Definition: convert_model.cpp:42
Event sent by system, interface or game.
Definition: event.h:735
Base class for all 3D in-game objects.
Definition: object.h:63