Skip to content

Commit c1dfa34

Browse files
authored
Deprecate internal actions and conditions to set and compare property values in extension events (#7405)
- The unified variable action and condition must be used instead.
1 parent cf39de4 commit c1dfa34

File tree

7 files changed

+148
-136
lines changed

7 files changed

+148
-136
lines changed

Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
141141
"res/function32.png")
142142
.AddParameter("functionParameterName", _("Parameter name"), "number,string,boolean")
143143
.SetRelevantForFunctionEventsOnly()
144-
.MarkAsAdvanced();
144+
.MarkAsAdvanced()
145+
.SetHidden();
145146

146147
extension
147148
.AddExpression(
@@ -177,7 +178,8 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
177178
.AddParameter("functionParameterName", _("Parameter name"), "number,string,boolean")
178179
.UseStandardRelationalOperatorParameters(
179180
"number", gd::ParameterOptions::MakeNewOptions())
180-
.SetRelevantForFunctionEventsOnly();
181+
.SetRelevantForFunctionEventsOnly()
182+
.SetHidden();
181183

182184
extension
183185
.AddCondition(
@@ -191,7 +193,8 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
191193
.AddParameter("functionParameterName", _("Parameter name"), "number,string,boolean")
192194
.UseStandardRelationalOperatorParameters(
193195
"string", gd::ParameterOptions::MakeNewOptions())
194-
.SetRelevantForFunctionEventsOnly();
196+
.SetRelevantForFunctionEventsOnly()
197+
.SetHidden();
195198
}
196199

197200
} // namespace gd

Core/GDCore/IDE/PropertyFunctionGenerator.cpp

+36-54
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
4242
const gd::NamedPropertyDescriptor &property, const gd::String &objectType,
4343
bool isBehavior, bool isSharedProperties) {
4444
auto &propertyName = property.GetName();
45+
const auto &primitiveType = gd::ValueTypeMetadata::GetPrimitiveValueType(
46+
gd::ValueTypeMetadata::ConvertPropertyTypeToValueType(
47+
property.GetType()));
4548
auto &functionsContainer = eventsBasedEntity.GetEventsFunctions();
4649
gd::String capitalizedName = CapitalizeFirstLetter(property.GetName());
4750
gd::String setterName = "Set" + capitalizedName;
@@ -59,9 +62,9 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
5962
property.GetLabel().empty() ? property.GetName() : property.GetLabel();
6063

6164
gd::String descriptionSubject =
62-
(property.GetType() == "Boolean" ? "if " : "the ") +
65+
(primitiveType == "boolean" ? "if " : "the ") +
6366
UnCapitalizeFirstLetter(propertyLabel) +
64-
(isSharedProperties || property.GetType() == "Boolean"
67+
(isSharedProperties || primitiveType == "boolean"
6568
? "."
6669
: " of the object.") +
6770
(property.GetDescription().empty() ? ""
@@ -71,19 +74,7 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
7174
"objects using the behavior."
7275
: "");
7376

74-
gd::String propertyGetterName =
75-
(isSharedProperties ? "SharedProperty" : "Property") + property.GetName();
76-
gd::String getterType =
77-
gd::PlatformExtension::GetBehaviorEventsFunctionFullType(
78-
extension.GetName(), eventsBasedEntity.GetName(), propertyGetterName);
79-
gd::String setterType =
80-
gd::PlatformExtension::GetBehaviorEventsFunctionFullType(
81-
extension.GetName(), eventsBasedEntity.GetName(),
82-
"Set" + propertyGetterName);
83-
8477
gd::String getterName = capitalizedName;
85-
gd::String numberOrString =
86-
property.GetType() == "Number" ? "Number" : "String";
8778

8879
if (!functionsContainer.HasEventsFunctionNamed(getterName)) {
8980
auto &getter = functionsContainer.InsertNewEventsFunction(
@@ -99,7 +90,7 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
9990
.SetName(legacyExpressionType)
10091
.SetExtraInfo(GetStringifiedExtraInfo(property));
10192
getter.SetFullName(propertyLabel).SetGroup(functionGroupName);
102-
if (property.GetType() == "Boolean") {
93+
if (primitiveType == "boolean") {
10394
getter.SetFunctionType(gd::EventsFunction::Condition)
10495
.SetDescription("Check " + descriptionSubject)
10596
.SetSentence("_PARAM0_ " + UnCapitalizeFirstLetter(propertyLabel));
@@ -112,13 +103,12 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
112103
auto &event =
113104
dynamic_cast<gd::StandardEvent &>(getter.GetEvents().InsertNewEvent(
114105
project, "BuiltinCommonInstructions::Standard", 0));
115-
if (property.GetType() == "Boolean") {
106+
if (primitiveType == "boolean") {
116107
gd::Instruction condition;
117-
condition.SetType(getterType);
118-
condition.AddParameter("Object");
119-
if (isBehavior) {
120-
condition.AddParameter("Behavior");
121-
}
108+
condition.SetType("BooleanVariable");
109+
condition.AddParameter(propertyName);
110+
condition.AddParameter("True");
111+
condition.AddParameter("");
122112
event.GetConditions().Insert(condition, 0);
123113

124114
gd::Instruction action;
@@ -127,6 +117,8 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
127117
event.GetActions().Insert(action, 0);
128118
} else {
129119
gd::Instruction action;
120+
gd::String numberOrString =
121+
primitiveType == "number" ? "Number" : "String";
130122
action.SetType("SetReturn" + numberOrString);
131123
action.AddParameter(property.GetName());
132124
event.GetActions().Insert(action, 0);
@@ -136,7 +128,7 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
136128
if (!functionsContainer.HasEventsFunctionNamed(setterName)) {
137129
auto &setter = functionsContainer.InsertNewEventsFunction(
138130
setterName, functionsContainer.GetEventsFunctionsCount());
139-
if (property.GetType() == "Boolean") {
131+
if (primitiveType == "boolean") {
140132
setter.SetFunctionType(gd::EventsFunction::Action)
141133
.SetFullName(propertyLabel)
142134
.SetGroup(functionGroupName)
@@ -177,26 +169,24 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
177169
setter.SetGetterName(getterName);
178170
}
179171

180-
if (property.GetType() == "Boolean") {
172+
if (primitiveType == "boolean") {
181173
{
182174
auto &event =
183175
dynamic_cast<gd::StandardEvent &>(setter.GetEvents().InsertNewEvent(
184176
project, "BuiltinCommonInstructions::Standard", 0));
185177

186178
gd::Instruction condition;
187-
condition.SetType("GetArgumentAsBoolean");
188-
condition.AddParameter("\"Value\"");
179+
condition.SetType("BooleanVariable");
180+
condition.AddParameter("Value");
181+
condition.AddParameter("True");
182+
condition.AddParameter("");
189183
event.GetConditions().Insert(condition, 0);
190184

191185
gd::Instruction action;
192-
action.SetType(setterType);
193-
action.AddParameter("Object");
194-
if (isBehavior) {
195-
action.AddParameter("Behavior");
196-
action.AddParameter("yes");
197-
} else {
198-
action.AddParameter("yes");
199-
}
186+
action.SetType("SetBooleanVariable");
187+
action.AddParameter(propertyName);
188+
action.AddParameter("True");
189+
action.AddParameter("");
200190
event.GetActions().Insert(action, 0);
201191
}
202192
{
@@ -205,20 +195,17 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
205195
project, "BuiltinCommonInstructions::Standard", 0));
206196

207197
gd::Instruction condition;
208-
condition.SetType("GetArgumentAsBoolean");
209-
condition.AddParameter("\"Value\"");
210-
condition.SetInverted(true);
198+
condition.SetType("BooleanVariable");
199+
condition.AddParameter("Value");
200+
condition.AddParameter("False");
201+
condition.AddParameter("");
211202
event.GetConditions().Insert(condition, 0);
212203

213204
gd::Instruction action;
214-
action.SetType(setterType);
215-
action.AddParameter("Object");
216-
if (isBehavior) {
217-
action.AddParameter("Behavior");
218-
action.AddParameter("no");
219-
} else {
220-
action.AddParameter("no");
221-
}
205+
action.SetType("SetBooleanVariable");
206+
action.AddParameter(propertyName);
207+
action.AddParameter("False");
208+
action.AddParameter("");
222209
event.GetActions().Insert(action, 0);
223210
}
224211
} else {
@@ -227,16 +214,11 @@ void PropertyFunctionGenerator::GenerateGetterAndSetter(
227214
project, "BuiltinCommonInstructions::Standard", 0));
228215

229216
gd::Instruction action;
230-
action.SetType(setterType);
231-
action.AddParameter("Object");
232-
if (isBehavior) {
233-
action.AddParameter("Behavior");
234-
action.AddParameter("=");
235-
action.AddParameter("Value");
236-
} else {
237-
action.AddParameter("=");
238-
action.AddParameter("Value");
239-
}
217+
action.SetType(primitiveType == "number" ? "SetNumberVariable"
218+
: "SetStringVariable");
219+
action.AddParameter(propertyName);
220+
action.AddParameter("=");
221+
action.AddParameter("Value");
240222
event.GetActions().Insert(action, 0);
241223
}
242224
}

Core/GDCore/IDE/PropertyFunctionGenerator.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
* Copyright 2008-2022 Florian Rival (Florian.Rival@gmail.com). All rights
44
* reserved. This project is released under the MIT License.
55
*/
6-
#ifndef GDCORE_PROPERTYFUNCTIONGENERATOR_H
7-
#define GDCORE_PROPERTYFUNCTIONGENERATOR_H
6+
#pragma once
87

98
namespace gd {
109
class String;
@@ -73,5 +72,3 @@ class GD_CORE_API PropertyFunctionGenerator {
7372
};
7473

7574
} // namespace gd
76-
77-
#endif // GDCORE_PROPERTYFUNCTIONGENERATOR_H

0 commit comments

Comments
 (0)