Files
GDevelop/Extensions/Function/FunctionEvent.h
T
Florian Rival a8559bfbbc Add clang-format to format (C++) source files automatically (#491)
* Update all CMakeLists of extensions to use clang-format
* Run clang-format on all Extensions
* Update GDCore CMakeLists.txt to add clang-format
* Run clang-format on GDCore files
* Update GDJS and GDCpp CMakeLists.txt to add clang-format
* Run clang-format on GDCpp and GDJS files
2018-05-09 15:57:38 -07:00

135 lines
3.9 KiB
C++

/**
GDevelop - Function Extension
Copyright (c) 2008-2016 Florian Rival (Florian.Rival@gmail.com)
This project is released under the MIT License.
*/
#if defined(GD_IDE_ONLY)
#ifndef FUNCTIONEVENT_H
#define FUNCTIONEVENT_H
#include "GDCore/Events/Event.h"
#include "GDCore/Events/EventsList.h"
#include "GDCpp/Runtime/CommonTools.h"
#include "GDCpp/Runtime/SceneNameMangler.h"
class RuntimeScene;
namespace gd {
class Instruction;
}
namespace gd {
class SerializerElement;
}
namespace gd {
class EventsEditorItemsAreas;
}
namespace gd {
class EventsEditorSelection;
}
namespace gd {
class Layout;
}
namespace gd {
class MainFrameWrapper;
}
class wxWindow;
/**
* Function event is an event which is executed by an action ( This action can
* pass to the function parameters and objects concerned ) Functions are
* referenced in a (static) std::map so as to let action call them.
*/
class GD_EXTENSION_API FunctionEvent : public gd::BaseEvent {
public:
FunctionEvent();
virtual ~FunctionEvent(){};
virtual FunctionEvent* Clone() const { return new FunctionEvent(*this); }
virtual bool IsExecutable() const { return true; }
virtual bool CanHaveSubEvents() const { return true; }
virtual const gd::EventsList& GetSubEvents() const { return events; };
virtual gd::EventsList& GetSubEvents() { return events; };
const gd::InstructionsList& GetConditions() const { return conditions; };
gd::InstructionsList& GetConditions() { return conditions; };
const gd::InstructionsList& GetActions() const { return actions; };
gd::InstructionsList& GetActions() { return actions; };
gd::String GetName() const { return name; };
void SetName(gd::String name_) { name = name_; };
const gd::String& GetObjectsPassedAsArgument() const {
return objectsPassedAsArgument;
};
void SetObjectsPassedAsArgument(const gd::String& objects) {
objectsPassedAsArgument = objects;
};
virtual std::vector<gd::InstructionsList*> GetAllConditionsVectors();
virtual std::vector<gd::InstructionsList*> GetAllActionsVectors();
virtual std::vector<const gd::InstructionsList*> GetAllConditionsVectors()
const;
virtual std::vector<const gd::InstructionsList*> GetAllActionsVectors() const;
virtual void SerializeTo(gd::SerializerElement& element) const;
virtual void UnserializeFrom(gd::Project& project,
const gd::SerializerElement& element);
/**
* Called by event editor to draw the event.
*/
virtual void Render(wxDC& dc,
int x,
int y,
unsigned int width,
gd::EventsEditorItemsAreas& areas,
gd::EventsEditorSelection& selection,
const gd::Platform& platform);
/**
* Must return the height of the event when rendered
*/
virtual unsigned int GetRenderedHeight(unsigned int width,
const gd::Platform& platform) const;
/**
* Called when the user want to edit the event
*/
virtual EditEventReturnType EditEvent(
wxWindow* parent_,
gd::Project& game_,
gd::Layout& scene_,
gd::MainFrameWrapper& mainFrameWrapper_);
/**
* \brief Tool function to generate an unique C++ name for a function used
* inside a layout.
*/
static gd::String MangleFunctionName(const gd::Layout& layout,
const FunctionEvent& functionEvent);
/**
* \brief Tool function to search for a function event in an event list.
* \return NULL if the function was not found.
*/
static const FunctionEvent* SearchForFunctionInEvents(
const gd::Project& project,
const gd::EventsList& events,
const gd::String& functionName);
private:
gd::String name;
gd::String objectsPassedAsArgument;
gd::InstructionsList conditions;
gd::InstructionsList actions;
gd::EventsList events;
bool nameSelected;
};
#endif // FUNCTIONEVENT_H
#endif