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
3 changes: 3 additions & 0 deletions Core/GDCore/Extensions/Metadata/ValueTypeMetadata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ const gd::String ValueTypeMetadata::leaderboardIdValueType = "leaderboardId";
const gd::String ValueTypeMetadata::objectAnimationNameValueType = "objectAnimationName";
const gd::String ValueTypeMetadata::objectSkinNameValueType = "objectSkinName";
const gd::String ValueTypeMetadata::keyboardKeyValueType = "keyboardKey";
const gd::String ValueTypeMetadata::layerValueType = "layer";

const gd::String &ValueTypeMetadata::ConvertPropertyTypeToValueType(
const gd::String &propertyType) {
Expand All @@ -145,6 +146,8 @@ const gd::String &ValueTypeMetadata::ConvertPropertyTypeToValueType(
return objectAnimationNameValueType;
} else if (propertyType == "KeyboardKey") {
return keyboardKeyValueType;
} else if (propertyType == "Layer") {
return layerValueType;
}
// For "String", "Resource", "MultilineString" or default
return stringValueType;
Expand Down
1 change: 1 addition & 0 deletions Core/GDCore/Extensions/Metadata/ValueTypeMetadata.h
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,7 @@ class GD_CORE_API ValueTypeMetadata {
static const gd::String objectAnimationNameValueType;
static const gd::String objectSkinNameValueType;
static const gd::String keyboardKeyValueType;
static const gd::String layerValueType;
};

} // namespace gd
3 changes: 2 additions & 1 deletion newIDE/app/src/BehaviorsEditor/BehaviorsEditorService.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// @flow
import BehaviorPropertiesEditor from './Editors/BehaviorPropertiesEditor';
import { type BehaviorEditorProps } from './Editors/BehaviorEditorProps.flow';
import Physics2Editor from './Editors/Physics2Editor';
import Physics3DEditor from './Editors/Physics3DEditor';
import AnchorBehaviorEditor from './Editors/AnchorBehaviorEditor';
Expand All @@ -8,7 +9,7 @@ import AnchorBehaviorEditor from './Editors/AnchorBehaviorEditor';
* A service returning editor components for each behavior type.
*/
const BehaviorsEditorService = {
getEditor(behaviorType: string): any {
getEditor(behaviorType: string): React.ComponentType<BehaviorEditorProps> {
// $FlowFixMe[object-this-reference]
if (!this.components[behaviorType]) {
return BehaviorPropertiesEditor; // Default properties editor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ const AnchorBehaviorEditor = ({
project,
behavior,
object,
layersContainer,
onBehaviorUpdated,
resourceManagementProps,
projectScopedContainersAccessor,
Expand Down Expand Up @@ -351,6 +352,7 @@ const AnchorBehaviorEditor = ({
project={project}
object={object}
behavior={behavior}
layersContainer={layersContainer}
onBehaviorUpdated={_onBehaviorUpdated}
resourceManagementProps={resourceManagementProps}
projectScopedContainersAccessor={projectScopedContainersAccessor}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export type BehaviorEditorProps = {|
project: gdProject,
projectScopedContainersAccessor: ProjectScopedContainersAccessor,
object: gdObject,
layersContainer: gdLayersContainer,
resourceManagementProps: ResourceManagementProps,
onBehaviorUpdated: () => void,
isAdvancedSectionInitiallyUncollapsed?: boolean,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const BehaviorPropertiesEditor = ({
project,
behavior,
object,
layersContainer,
onBehaviorUpdated,
resourceManagementProps,
projectScopedContainersAccessor,
Expand All @@ -39,9 +40,10 @@ const BehaviorPropertiesEditor = ({
instance.updateProperty(name, value);
},
object,
layersContainer,
visibility: 'All',
}),
[behavior, behaviorMetadata, object]
[behavior, behaviorMetadata, layersContainer, object]
);

return (
Expand Down
6 changes: 6 additions & 0 deletions newIDE/app/src/BehaviorsEditor/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ type BehaviorConfigurationEditorProps = {|
behaviorName: string
) => void,
isListLocked: boolean,
layersContainer: gdLayersContainer,
|};

const BehaviorConfigurationEditor = React.forwardRef<
Expand All @@ -111,6 +112,7 @@ const BehaviorConfigurationEditor = React.forwardRef<
openExtension,
openBehaviorPropertiesQuickCustomizationDialog,
isListLocked,
layersContainer,
},
ref
) => {
Expand Down Expand Up @@ -286,6 +288,7 @@ const BehaviorConfigurationEditor = React.forwardRef<
behavior={behavior}
project={project}
object={object}
layersContainer={layersContainer}
resourceManagementProps={resourceManagementProps}
projectScopedContainersAccessor={
projectScopedContainersAccessor
Expand Down Expand Up @@ -633,6 +636,7 @@ type Props = {|
project: gdProject,
eventsFunctionsExtension: gdEventsFunctionsExtension | null,
object: gdObject,
layersContainer: gdLayersContainer,
isChildObject: boolean,
onUpdateBehaviorsSharedData: () => void,
onSizeUpdated?: ?() => void,
Expand Down Expand Up @@ -660,6 +664,7 @@ const BehaviorsEditor = (props: Props): React.Node => {
isChildObject,
project,
eventsFunctionsExtension,
layersContainer,
onSizeUpdated,
onBehaviorsUpdated,
onUpdateBehaviorsSharedData,
Expand Down Expand Up @@ -810,6 +815,7 @@ const BehaviorsEditor = (props: Props): React.Node => {
key={behaviorName}
project={project}
object={object}
layersContainer={layersContainer}
isChildObject={isChildObject}
behavior={behavior}
copyBehavior={copyBehavior}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import AdvancedIcon from '../../UI/CustomSvgIcons/AddCircle';
import BehaviorIcon from '../../UI/CustomSvgIcons/Behavior';
import SceneIcon from '../../UI/CustomSvgIcons/Scene';
import ResourceIcon from '../../UI/CustomSvgIcons/ProjectResources';
import LayerIcon from '../../UI/CustomSvgIcons/Layers';
import VariableStringIcon from '../../VariablesList/Icons/VariableStringIcon';
import VariableNumberIcon from '../../VariablesList/Icons/VariableNumberIcon';
import VariableBooleanIcon from '../../VariablesList/Icons/VariableBooleanIcon';
Expand Down Expand Up @@ -81,6 +82,9 @@ const renderValueTypeIcon = (type: string, className: string): React.Node => {
case 'Resource':
return <ResourceIcon className={className} />;

case 'Layer':
return <LayerIcon className={className} />;

default:
return null;
}
Expand Down Expand Up @@ -508,6 +512,12 @@ export const EventsBasedBehaviorPropertiesEditor: React.ComponentType<{
value="Resource"
label={t`Resource`}
/>
{eventsBasedBehavior && (
<SelectOption
value="Layer"
label={t`Layer (text)`}
/>
)}
{eventsBasedBehavior &&
!isSharedProperties && (
<SelectOption
Expand Down Expand Up @@ -576,7 +586,8 @@ export const EventsBasedBehaviorPropertiesEditor: React.ComponentType<{
property.getType() === 'Number' ||
property.getType() === 'ObjectAnimationName' ||
property.getType() === 'KeyboardKey' ||
property.getType() === 'MultilineString') && (
property.getType() === 'MultilineString' ||
property.getType() === 'Layer') && (
<CompactPropertiesEditorRowField
label={i18n._(t`Default value`)}
field={
Expand Down
9 changes: 7 additions & 2 deletions newIDE/app/src/EventsSheet/InlineParameterEditor.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// @flow
import * as React from 'react';
import InlinePopover from './InlinePopover';
import ParameterRenderingService from './ParameterRenderingService';
import ParameterRenderingService, {
type ParameterField,
} from './ParameterRenderingService';
import { type ResourceManagementProps } from '../ResourcesList/ResourceSource';
import { type EventsScope } from '../InstructionOrExpression/EventsScope';
import { setupInstructionParameters } from '../InstructionOrExpression/SetupInstructionParameters';
Expand Down Expand Up @@ -65,7 +67,10 @@ const InlineParameterEditor = ({
instructionMetadata,
setInstructionMetadata,
] = React.useState<?gdInstructionMetadata>(null);
const [ParameterComponent, setParameterComponent] = React.useState(null);
const [
ParameterComponent,
setParameterComponent,
] = React.useState<ParameterField | null>(null);
const field = React.useRef<?ParameterFieldInterface>(null);

const softKeyboardBottomOffset = useSoftKeyboardBottomOffset();
Expand Down
4 changes: 2 additions & 2 deletions newIDE/app/src/EventsSheet/ParameterFields/LayerField.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// @flow
import React from 'react';
import { Trans, t } from '@lingui/macro';
import { mapFor } from '../../Utils/MapFor';
import { mapReverseFor } from '../../Utils/MapFor';
import {
type ParameterFieldProps,
type ParameterFieldInterface,
Expand Down Expand Up @@ -39,7 +39,7 @@ export default (React.forwardRef<ParameterFieldProps, ParameterFieldInterface>(
const layersSource = layout || eventsBasedObject;
const layersContainer = layersSource ? layersSource.getLayers() : null;
const layerNames = layersContainer
? mapFor(0, layersContainer.getLayersCount(), i => {
? mapReverseFor(0, layersContainer.getLayersCount(), i => {
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great!

const layer = layersContainer.getLayerAt(i);
return layer.getName();
})
Expand Down
15 changes: 13 additions & 2 deletions newIDE/app/src/EventsSheet/ParameterRenderingService.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,21 @@ import TilemapResourceField from './ParameterFields/TilemapResourceField';
import TilesetResourceField from './ParameterFields/TilesetResourceField';
import Model3DResourceField from './ParameterFields/Model3DResourceField';
import AtlasResourceField from './ParameterFields/AtlasResourceField';
import {
type ParameterFieldProps,
type ParameterFieldInterface,
} from './ParameterFields/ParameterFieldCommons';

const gd: libGDevelop = global.gd;

const components = {
export type ParameterField = React.ComponentType<{
...ParameterFieldProps,
+ref?: React.RefSetter<ParameterFieldInterface>,
}>;

const components: {
[string]: ParameterField,
} = {
default: DefaultField,
mouse: MouseField,
mouseButton: MouseButtonField,
Expand Down Expand Up @@ -208,7 +219,7 @@ const userFriendlyTypeName: { [string]: MessageDescriptor } = {

const ParameterRenderingService = {
components,
getParameterComponent: (rawType: string): any => {
getParameterComponent: (rawType: string): ParameterField => {
const fieldType = gd.ParameterMetadata.isObject(rawType)
? 'object'
: rawType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ export const CompactInstancePropertiesEditor = ({
globalObjectsContainer || objectsContainer,
objectsContainer
),
layersContainer,
});

const reorderedInstanceSchemaForCustomProperties = reorderInstanceSchemaForCustomProperties(
Expand Down Expand Up @@ -449,6 +450,7 @@ export const CompactInstancePropertiesEditor = ({
behavior={behavior}
behaviorOverriding={behaviorOverriding}
object={object}
layersContainer={layersContainer}
initialInstance={instance}
onBehaviorUpdated={() => {
if (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ export const ChildObjectPropertiesEditor = ({
onUpdateProperty: ({ object, objectConfiguration }, name, value) =>
objectConfiguration.updateProperty(name, value),
visibility: 'All',
layersContainer: null,
});
},
[schemaRecomputeTrigger, childObjectConfigurationAsGd]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const CompactAnchorBehaviorEditor = ({
project,
behavior,
object,
layersContainer,
behaviorMetadata,
behaviorOverriding,
initialInstance,
Expand Down Expand Up @@ -60,6 +61,7 @@ const CompactAnchorBehaviorEditor = ({
<CompactBehaviorPropertiesEditor
project={project}
object={object}
layersContainer={layersContainer}
behavior={behavior}
behaviorMetadata={behaviorMetadata}
behaviorOverriding={behaviorOverriding}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export const CompactBehaviorPropertiesEditor = ({
behaviorMetadata,
behavior,
object,
layersContainer,
behaviorOverriding,
initialInstance,
onOpenFullEditor,
Expand Down Expand Up @@ -149,6 +150,7 @@ export const CompactBehaviorPropertiesEditor = ({
initialInstance
),
object,
layersContainer,
visibility: 'All',
showcaseNonDefaultValues: true,
});
Expand All @@ -166,15 +168,17 @@ export const CompactBehaviorPropertiesEditor = ({
instance.updateProperty(name, value);
},
object,
layersContainer,
visibility: 'All',
});
},
[
schemaRecomputeTrigger,
initialInstance,
behavior,
behaviorMetadata,
object,
layersContainer,
behavior,
project,
]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export type CompactBehaviorPropertiesEditorProps = {|
behaviorMetadata: gdBehaviorMetadata,
behavior: gdBehavior,
object: gdObject,
layersContainer: gdLayersContainer,
behaviorOverriding: gdBehavior | null,
initialInstance: gdInitialInstance | null,
onOpenFullEditor?: () => void,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
// @flow
import { CompactBehaviorPropertiesEditor } from './CompactBehaviorPropertiesEditor';
import { type CompactBehaviorPropertiesEditorProps } from './CompactBehaviorPropertiesEditorProps.flow';
import CompactAnchorBehaviorEditor from './CompactAnchorBehaviorEditor';

/**
* A service returning editor components for each behavior type.
*/
const CompactBehaviorsEditorService = {
getEditor(behaviorType: string): any {
getEditor(
behaviorType: string
): React.ComponentType<CompactBehaviorPropertiesEditorProps> {
// $FlowFixMe[object-this-reference]
if (!this.components[behaviorType]) {
return CompactBehaviorPropertiesEditor; // Default properties editor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,7 @@ export const CompactObjectPropertiesEditor = ({
onObjectsModified([object]);
},
object,
layersContainer,
visibility: 'All',
});

Expand All @@ -573,6 +574,7 @@ export const CompactObjectPropertiesEditor = ({
objectConfigurationAsGd,
customObjectEventsBasedObject,
object,
layersContainer,
layout,
onObjectsModified,
i18n,
Expand Down Expand Up @@ -824,6 +826,7 @@ export const CompactObjectPropertiesEditor = ({
behaviorOverriding={null}
initialInstance={null}
object={object}
layersContainer={layersContainer}
onBehaviorUpdated={() => {}}
resourceManagementProps={resourceManagementProps}
onOpenFullEditor={() =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,7 @@ const CustomObjectPropertiesEditor = (props: Props): React.Node => {
},
object,
visibility: 'All',
layersContainer: null,
}),
[customObjectConfiguration, customObjectEventsBasedObject, object]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ const ObjectPropertiesEditor = (props: Props): React.Node => {
.getValue(),
onUpdateProperty: (object, name, value) =>
object.updateProperty(name, value),
layersContainer: null,
});

const extraInformation = getExtraObjectsInformation()[
Expand Down
Loading
Loading