Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion Core/GDCore/Project/BehaviorConfigurationContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ class GD_CORE_API BehaviorConfigurationContainer {
void RemoveProperty(const gd::String &name) {
content.RemoveChild(name);
content.RemoveAttribute(name);
auto uncapitalizedName = name.UncapitalizeFirstLetter();
content.RemoveChild(uncapitalizedName);
content.RemoveAttribute(uncapitalizedName);
};

/**
Expand All @@ -114,7 +117,12 @@ class GD_CORE_API BehaviorConfigurationContainer {
* \see gd::InitialInstance
*/
bool HasPropertyValue(const gd::String name) const {
return content.HasChild(name) || content.HasAttribute(name);
if (content.HasChild(name) || content.HasAttribute(name)) {
return true;
}
auto uncapitalizedName = name.UncapitalizeFirstLetter();
return content.HasChild(uncapitalizedName) ||
content.HasAttribute(uncapitalizedName);
}

/**
Expand Down
5 changes: 5 additions & 0 deletions Core/GDCore/String.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,11 @@ String String::CapitalizeFirstLetter() const
return size() < 1 ? *this : substr(0, 1).UpperCase() + substr(1);
}

String String::UncapitalizeFirstLetter() const
{
return size() < 1 ? *this : substr(0, 1).LowerCase() + substr(1);
}

String String::FindAndReplace(String search, String replacement, bool all) const
{
gd::String result(*this);
Expand Down
5 changes: 5 additions & 0 deletions Core/GDCore/String.h
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,11 @@ class GD_CORE_API String
*/
String CapitalizeFirstLetter() const;

/**
* \brief Returns the string with the first letter in lower case.
*/
String UncapitalizeFirstLetter() const;

/**
* \brief Searches a string for a specified substring and returns a new string where all occurrences of this substring is replaced.
* \param search The string that will be replaced by the new string.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,6 @@ type Props = {|
historyHandler?: HistoryHandler,
tileMapTileSelection: ?TileMapTileSelection,
onSelectTileMapTile: (?TileMapTileSelection) => void,
canOverrideBehaviorProperties: boolean,
|};

export const CompactInstancePropertiesEditor = ({
Expand All @@ -146,7 +145,6 @@ export const CompactInstancePropertiesEditor = ({
projectScopedContainersAccessor,
tileMapTileSelection,
onSelectTileMapTile,
canOverrideBehaviorProperties,
}: Props): null | React.Node => {
const forceUpdate = useForceUpdate();
const instance = instances[0];
Expand All @@ -159,6 +157,7 @@ export const CompactInstancePropertiesEditor = ({
* obviously plus instance-wise variables with same name).
*/
const shouldDisplayVariablesList = instances.length === 1;
const shouldDisplayBehaviorsList = instances.length === 1;
const variablesContainer = shouldDisplayVariablesList
? exceptionallyGuardAgainstDeadObject(instance.getVariables())
: null;
Expand Down Expand Up @@ -385,7 +384,7 @@ export const CompactInstancePropertiesEditor = ({
</Column>
</>
)}
{object && canOverrideBehaviorProperties ? (
{object && shouldDisplayBehaviorsList ? (
<TopLevelCollapsibleSection
title={<Trans>Behaviors</Trans>}
isFolded={isBehaviorsFolded}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ export const CompactBehaviorPropertiesEditor = ({
layersContainer,
visibility: 'All',
showcaseNonDefaultValues: true,
hideResourceProperties: true,
});
}
const behaviorMetadataProperties = behaviorMetadata.getProperties();
Expand Down
20 changes: 15 additions & 5 deletions newIDE/app/src/PropertiesEditor/PropertiesMapToSchema.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ const createField = (
defaultValue: string | null,
layers: gdLayersContainer | null,
object: ?gdObject,
showcaseNonDefaultValues: boolean
showcaseNonDefaultValues: boolean,
hideResourceProperties: boolean
): ?Field => {
const propertyName = property.getLabel();
const getLabel = (instance: Instance) => {
Expand Down Expand Up @@ -272,6 +273,9 @@ const createField = (
isHighlighted: isHighlightedForString,
};
} else if (valueType === 'resource') {
if (hideResourceProperties) {
return null;
}
// Resource is a "string" (with a selector in the UI)
const extraInfos = property.getExtraInfo().toJSArray();
// $FlowFixMe[incompatible-type] - assume the passed resource kind is always valid.
Expand Down Expand Up @@ -522,14 +526,15 @@ type CommonProps = {|
visibility?: 'All' | 'Basic' | 'Advanced' | 'Deprecated' | 'Basic-Quick',
quickCustomizationVisibilities?: gdQuickCustomizationVisibilitiesContainer,
showcaseNonDefaultValues?: boolean,
hideResourceProperties?: boolean,
|};

export const effectPropertiesMapToSchema = ({
defaultValueProperties,
object,
visibility = 'All',
quickCustomizationVisibilities,
showcaseNonDefaultValues,
hideResourceProperties,
}: {
...CommonProps,
defaultValueProperties: gdMapStringPropertyDescriptor,
Expand All @@ -541,7 +546,7 @@ export const effectPropertiesMapToSchema = ({
layersContainer: null,
visibility,
quickCustomizationVisibilities,
showcaseNonDefaultValues,
hideResourceProperties,
getNumberValue: (instance: Instance, propertyName: string): number =>
instance.hasDoubleParameter(propertyName)
? instance.getDoubleParameter(propertyName)
Expand Down Expand Up @@ -593,6 +598,7 @@ const propertiesMapToSchema = ({
visibility = 'All',
quickCustomizationVisibilities,
showcaseNonDefaultValues,
hideResourceProperties,
}: {
...CommonProps,
getPropertyValue: (instance: Instance, propertyName: string) => string,
Expand All @@ -612,6 +618,7 @@ const propertiesMapToSchema = ({
visibility,
quickCustomizationVisibilities,
showcaseNonDefaultValues,
hideResourceProperties,
getNumberValue: (instance: Instance, propertyName: string): number => {
// Consider a missing value as 0 to avoid propagating NaN.
return parseFloat(getPropertyValue(instance, propertyName)) || 0;
Expand Down Expand Up @@ -642,6 +649,7 @@ const adaptablePropertiesMapToSchema = ({
visibility = 'All',
quickCustomizationVisibilities,
showcaseNonDefaultValues,
hideResourceProperties,
getNumberValue,
getStringValue,
getBooleanValue,
Expand Down Expand Up @@ -776,7 +784,8 @@ const adaptablePropertiesMapToSchema = ({
rowPropertyDefaultValue,
layersContainer,
object,
!!showcaseNonDefaultValues
!!showcaseNonDefaultValues,
!!hideResourceProperties
);

if (field) {
Expand Down Expand Up @@ -815,7 +824,8 @@ const adaptablePropertiesMapToSchema = ({
: null,
layersContainer,
object,
!!showcaseNonDefaultValues
!!showcaseNonDefaultValues,
!!hideResourceProperties
);
}
if (field) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,6 @@ export const InstanceOrObjectPropertiesEditorContainer: React.ComponentType<{
resourceManagementProps={resourceManagementProps}
unsavedChanges={unsavedChanges}
i18n={i18n}
canOverrideBehaviorProperties={!!eventsFunctionsExtension}
/>
) : !!objects.length && lastSelectionType === 'object' ? (
<CompactObjectPropertiesEditor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ export const InstanceSprite2d = (): React.Node => (
)}
tileMapTileSelection={null}
onSelectTileMapTile={() => {}}
canOverrideBehaviorProperties={true}
resourceManagementProps={fakeResourceManagementProps}
/>
</SerializedObjectDisplay>
Expand Down Expand Up @@ -74,7 +73,6 @@ export const InstanceCube3d = (): React.Node => (
)}
tileMapTileSelection={null}
onSelectTileMapTile={() => {}}
canOverrideBehaviorProperties={true}
resourceManagementProps={fakeResourceManagementProps}
/>
</SerializedObjectDisplay>
Expand Down Expand Up @@ -106,7 +104,6 @@ export const InstanceTextInput = (): React.Node => (
)}
tileMapTileSelection={null}
onSelectTileMapTile={() => {}}
canOverrideBehaviorProperties={true}
resourceManagementProps={fakeResourceManagementProps}
/>
</SerializedObjectDisplay>
Expand Down
Loading