GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
RepeatEvent.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-2016 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 
7 #pragma once
8 
9 #include "GDCore/Events/Event.h"
10 #include "GDCore/Events/EventsList.h"
11 #include "GDCore/Project/VariablesContainer.h"
12 namespace gd {
13 class Instruction;
14 class Project;
15 }
16 
17 namespace gd {
18 
22 class GD_CORE_API RepeatEvent : public gd::BaseEvent {
23  public:
24  RepeatEvent();
25  virtual ~RepeatEvent(){};
26  virtual gd::RepeatEvent* Clone() const { return new RepeatEvent(*this); }
27 
28  virtual bool IsExecutable() const { return true; }
29 
30  virtual bool CanHaveSubEvents() const { return true; }
31  virtual const gd::EventsList& GetSubEvents() const { return events; };
32  virtual gd::EventsList& GetSubEvents() { return events; };
33 
34  virtual bool CanHaveVariables() const { return true; }
35  virtual const gd::VariablesContainer& GetVariables() const {
36  return variables;
37  };
38  virtual gd::VariablesContainer& GetVariables() { return variables; };
39 
40  const gd::InstructionsList& GetConditions() const { return conditions; };
41  gd::InstructionsList& GetConditions() { return conditions; };
42 
43  const gd::InstructionsList& GetActions() const { return actions; };
44  gd::InstructionsList& GetActions() { return actions; };
45 
46  virtual gd::InstructionsList* GetInstructionList(const gd::String& label) override;
47  virtual const gd::InstructionsList* GetInstructionList(const gd::String& label) const override;
48 
49  const gd::Expression& GetRepeatExpression() const {
50  return repeatNumberExpression;
51  };
52  void SetRepeatExpressionPlainString(gd::String repeatNumberExpression_) {
53  repeatNumberExpression = gd::Expression(repeatNumberExpression_);
54  };
55 
56  const gd::String& GetLoopIndexVariableName() const { return loopIndexVariableName; }
57  void SetLoopIndexVariableName(const gd::String& name) { loopIndexVariableName = name; }
58 
59  virtual std::vector<gd::InstructionsList*> GetAllConditionsVectors();
60  virtual std::vector<gd::InstructionsList*> GetAllActionsVectors();
61  virtual std::vector<std::pair<gd::Expression*, gd::ParameterMetadata> >
62  GetAllExpressionsWithMetadata();
63 
64  virtual std::vector<const gd::InstructionsList*> GetAllConditionsVectors()
65  const;
66  virtual std::vector<const gd::InstructionsList*> GetAllActionsVectors() const;
67  virtual std::vector<std::pair<const gd::Expression*, const gd::ParameterMetadata> >
68  GetAllExpressionsWithMetadata() const;
69 
70  virtual void SerializeTo(SerializerElement& element) const;
71  virtual void UnserializeFrom(gd::Project& project,
72  const SerializerElement& element);
73 
74  private:
75  gd::Expression repeatNumberExpression;
76  gd::InstructionsList conditions;
77  gd::InstructionsList actions;
78  EventsList events;
79  VariablesContainer variables;
80  gd::String loopIndexVariableName;
81 
82  bool repeatNumberExpressionSelected;
83 };
84 
85 } // namespace gd
Base class defining an event.
Definition: Event.h:43
A list of events.
Definition: EventsList.h:32
Class representing an expression used as a parameter of a gd::Instruction. This class is nothing more...
Definition: Expression.h:30
Definition: InstructionsList.h:25
Base class representing a project (game), including all resources, scenes, objects,...
Definition: Project.h:51
Event being repeated a specified number of times.
Definition: RepeatEvent.h:22
virtual gd::EventsList & GetSubEvents()
Definition: RepeatEvent.h:32
virtual bool CanHaveSubEvents() const
Definition: RepeatEvent.h:30
virtual const gd::EventsList & GetSubEvents() const
Definition: RepeatEvent.h:31
virtual const gd::VariablesContainer & GetVariables() const
Definition: RepeatEvent.h:35
virtual gd::RepeatEvent * Clone() const
Definition: RepeatEvent.h:26
virtual gd::VariablesContainer & GetVariables()
Definition: RepeatEvent.h:38
virtual bool IsExecutable() const
Definition: RepeatEvent.h:28
virtual bool CanHaveVariables() const
Definition: RepeatEvent.h:34
String represents an UTF8 encoded string.
Definition: String.h:33
Class defining a container for gd::Variable.
Definition: VariablesContainer.h:29
Definition: CommonTools.h:24