mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-24 20:05:39 -04:00
a8559bfbbc
* 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
135 lines
3.9 KiB
C++
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
|