GDevelop JS Platform
Platform for developing HTML5/Javascript based games with GDevelop
ObjectCodeGenerator.h
1 /*
2  * GDevelop JS Platform
3  * Copyright 2008-2016 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #pragma once
7 
8 #include <map>
9 #include <set>
10 #include <string>
11 #include <vector>
12 
13 #include "GDCore/Project/Project.h"
14 
15 namespace gd {
16 class NamedPropertyDescriptor;
17 class EventsBasedObject;
18 }
19 
20 namespace gdjs {
21 
29  public:
30  ObjectCodeGenerator(gd::Project& project_) : project(project_){};
31 
37  const gd::EventsFunctionsExtension& eventsFunctionsExtension,
38  const gd::EventsBasedObject& eventsBasedObject,
39  const gd::String& codeNamespace,
40  const std::map<gd::String, gd::String>& objectMethodMangledNames,
41  std::set<gd::String>& includeFiles,
42  bool compilationForRuntime = false);
43 
48  static gd::String GetObjectPropertyGetterName(
49  const gd::String& propertyName) {
50  return "_get" + propertyName;
51  }
52 
57  static gd::String GetObjectPropertySetterName(
58  const gd::String& propertyName) {
59  return "_set" + propertyName;
60  }
61 
67  const gd::String &propertyName) {
68  return "_toggle" + propertyName;
69  }
70 
71  private:
72  gd::String GenerateRuntimeObjectTemplateCode(
73  const gd::String& extensionName,
74  const gd::EventsBasedObject& eventsBasedObject,
75  const gd::String& codeNamespace,
76  std::function<gd::String()> generateInitializePropertiesCode,
77  std::function<gd::String()> generateMethodsCode,
78  std::function<gd::String()> generatePropertiesCode,
79  std::function<gd::String()> generateUpdateFromObjectDataCode,
80  std::function<gd::String()> generateInitializeAnimatableCode,
81  std::function<gd::String()> generateAnimatableCode,
82  std::function<gd::String()> generateTextContainerCode);
83 
84  gd::String GenerateRuntimeObjectPropertyTemplateCode(
85  const gd::EventsBasedObject& eventsBasedObject,
86  const gd::NamedPropertyDescriptor& property);
87 
88  gd::String GenerateToggleBooleanPropertyTemplateCode(
89  const gd::String &toggleName, const gd::String &getterName,
90  const gd::String &setterName);
91 
92  gd::String GenerateInitializePropertyFromDataCode(
93  const gd::NamedPropertyDescriptor& property);
94 
95  gd::String GenerateInitializePropertyFromDefaultValueCode(
96  const gd::NamedPropertyDescriptor& property);
97 
98  gd::String GeneratePropertyValueCode(const gd::PropertyDescriptor& property);
99 
100  gd::String GenerateUpdatePropertyFromObjectDataCode(
101  const gd::EventsBasedObject& eventsBasedObject,
102  const gd::NamedPropertyDescriptor& property);
103 
104  gd::String GenerateObjectOnDestroyToDeprecatedOnOwnerRemovedFromScene(
105  const gd::EventsBasedObject& eventsBasedObject,
106  const gd::String& codeNamespace);
107 
108  gd::String GenerateDefaultDoStepPreEventsFunctionCode(
109  const gd::EventsBasedObject& eventsBasedObject,
110  const gd::String& codeNamespace);
111 
112  gd::String GenerateDoStepPreEventsPreludeCode(
113  const gd::EventsBasedObject& eventsBasedObject);
114 
115  gd::Project& project;
116 
117  static gd::String onCreatedFunctionName;
118  static gd::String doStepPreEventsFunctionName;
119 };
120 
121 } // namespace gdjs
The class being responsible for generating JavaScript code for EventsBasedObject.
Definition: ObjectCodeGenerator.h:28
gd::String GenerateRuntimeObjectCompleteCode(const gd::EventsFunctionsExtension &eventsFunctionsExtension, const gd::EventsBasedObject &eventsBasedObject, const gd::String &codeNamespace, const std::map< gd::String, gd::String > &objectMethodMangledNames, std::set< gd::String > &includeFiles, bool compilationForRuntime=false)
Generate the complete JS class (gdjs.CustomRuntimeObject) for the object.
Definition: ObjectCodeGenerator.cpp:20
static gd::String GetObjectPropertySetterName(const gd::String &propertyName)
Generate the name of the method to set the value of the property of a object.
Definition: ObjectCodeGenerator.h:57
static gd::String GetObjectPropertyGetterName(const gd::String &propertyName)
Generate the name of the method to get the value of the property of a object.
Definition: ObjectCodeGenerator.h:48
static gd::String GetObjectPropertyToggleFunctionName(const gd::String &propertyName)
Generate the name of the method to toggle the value of the boolean property of a behavior.
Definition: ObjectCodeGenerator.h:66