mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
Add an extension category filter (#4341)
This commit is contained in:
@@ -124,7 +124,7 @@ describe('gdjs.TileMapCollisionMaskRuntimeObject', function () {
|
||||
index < 200 && tileMap._collisionTileMap.getDimensionX() === 0;
|
||||
index++
|
||||
) {
|
||||
await delay(5);
|
||||
await delay(10);
|
||||
}
|
||||
if (tileMap._collisionTileMap.getDimensionX() === 0) {
|
||||
throw new Error('Timeout reading the tile map JSON file.');
|
||||
|
@@ -28,6 +28,9 @@ type ExtensionStoreState = {|
|
||||
error: ?Error,
|
||||
searchText: string,
|
||||
setSearchText: string => void,
|
||||
allCategories: string[],
|
||||
chosenCategory: string,
|
||||
setChosenCategory: string => void,
|
||||
extensionShortHeadersByName: { [name: string]: ExtensionShortHeader },
|
||||
filtersState: FiltersState,
|
||||
|};
|
||||
@@ -39,6 +42,10 @@ export const ExtensionStoreContext = React.createContext<ExtensionStoreState>({
|
||||
error: null,
|
||||
searchText: '',
|
||||
setSearchText: () => {},
|
||||
allCategories: [],
|
||||
// '' means all categories.
|
||||
chosenCategory: '',
|
||||
setChosenCategory: () => {},
|
||||
extensionShortHeadersByName: {},
|
||||
filtersState: {
|
||||
chosenFilters: new Set(),
|
||||
@@ -67,6 +74,7 @@ export const ExtensionStoreStateProvider = ({
|
||||
const preferences = React.useContext(PreferencesContext);
|
||||
const { showCommunityExtensions } = preferences.values;
|
||||
const [filters, setFilters] = React.useState<?Filters>(null);
|
||||
const [allCategories, setAllCategories] = React.useState<Array<string>>([]);
|
||||
const [firstExtensionIds, setFirstExtensionIds] = React.useState<
|
||||
Array<string>
|
||||
>([]);
|
||||
@@ -76,6 +84,7 @@ export const ExtensionStoreStateProvider = ({
|
||||
const [searchText, setSearchText] = React.useState(
|
||||
defaultSearchText || emptySearchText
|
||||
);
|
||||
const [chosenCategory, setChosenCategory] = React.useState('');
|
||||
const filtersState = useFilters();
|
||||
|
||||
const fetchExtensionsAndFilters = React.useCallback(
|
||||
@@ -91,13 +100,22 @@ export const ExtensionStoreStateProvider = ({
|
||||
|
||||
try {
|
||||
const extensionRegistry: ExtensionsRegistry = await getExtensionsRegistry();
|
||||
const { extensionShortHeaders, allTags } = extensionRegistry;
|
||||
const {
|
||||
extensionShortHeaders,
|
||||
allTags,
|
||||
allCategories,
|
||||
} = extensionRegistry;
|
||||
|
||||
const sortedTags = allTags
|
||||
.slice()
|
||||
.sort((tag1, tag2) =>
|
||||
tag1.toLowerCase().localeCompare(tag2.toLowerCase())
|
||||
);
|
||||
const sortedCategories = allCategories
|
||||
.slice()
|
||||
.sort((tag1, tag2) =>
|
||||
tag1.toLowerCase().localeCompare(tag2.toLowerCase())
|
||||
);
|
||||
|
||||
const extensionShortHeadersByName = {};
|
||||
extensionShortHeaders.forEach(extension => {
|
||||
@@ -115,6 +133,7 @@ export const ExtensionStoreStateProvider = ({
|
||||
defaultTags: sortedTags,
|
||||
tagsTree: [],
|
||||
});
|
||||
setAllCategories(sortedCategories);
|
||||
setFirstExtensionIds(
|
||||
extensionRegistry.views
|
||||
? extensionRegistry.views.default.firstExtensionIds
|
||||
@@ -150,14 +169,14 @@ export const ExtensionStoreStateProvider = ({
|
||||
[fetchExtensionsAndFilters, extensionShortHeadersByName, isLoading]
|
||||
);
|
||||
|
||||
const { chosenCategory, chosenFilters } = filtersState;
|
||||
const searchResults: ?Array<{|
|
||||
item: ExtensionShortHeader,
|
||||
matches: SearchMatch[],
|
||||
|}> = useSearchStructuredItem(extensionShortHeadersByName, {
|
||||
searchText,
|
||||
chosenCategory,
|
||||
chosenFilters,
|
||||
chosenItemCategory: chosenCategory,
|
||||
chosenCategory: filtersState.chosenCategory,
|
||||
chosenFilters: filtersState.chosenFilters,
|
||||
excludedTiers: showCommunityExtensions
|
||||
? noExcludedTiers
|
||||
: excludedCommunityTiers,
|
||||
@@ -169,6 +188,9 @@ export const ExtensionStoreStateProvider = ({
|
||||
searchResults,
|
||||
fetchExtensionsAndFilters,
|
||||
filters,
|
||||
allCategories,
|
||||
chosenCategory,
|
||||
setChosenCategory,
|
||||
error,
|
||||
searchText,
|
||||
setSearchText,
|
||||
@@ -179,6 +201,9 @@ export const ExtensionStoreStateProvider = ({
|
||||
searchResults,
|
||||
error,
|
||||
filters,
|
||||
allCategories,
|
||||
chosenCategory,
|
||||
setChosenCategory,
|
||||
searchText,
|
||||
extensionShortHeadersByName,
|
||||
filtersState,
|
||||
|
@@ -17,7 +17,11 @@ import {
|
||||
import useDismissableTutorialMessage from '../../Hints/useDismissableTutorialMessage';
|
||||
import { t } from '@lingui/macro';
|
||||
import { ColumnStackLayout } from '../../UI/Layout';
|
||||
import { Column } from '../../UI/Grid';
|
||||
import PreferencesContext from '../../MainFrame/Preferences/PreferencesContext';
|
||||
import { ResponsiveLineStackLayout } from '../../UI/Layout';
|
||||
import SearchBarSelectField from '../../UI/SearchBarSelectField';
|
||||
import SelectOption from '../../UI/SelectOption';
|
||||
|
||||
type Props = {|
|
||||
isInstalling: boolean,
|
||||
@@ -48,6 +52,9 @@ export const ExtensionStore = ({
|
||||
filtersState,
|
||||
searchText,
|
||||
setSearchText,
|
||||
allCategories,
|
||||
chosenCategory,
|
||||
setChosenCategory,
|
||||
} = React.useContext(ExtensionStoreContext);
|
||||
|
||||
React.useEffect(
|
||||
@@ -94,14 +101,33 @@ export const ExtensionStore = ({
|
||||
{windowWidth => (
|
||||
<ColumnStackLayout expand noMargin useFullHeight>
|
||||
<ColumnStackLayout>
|
||||
<SearchBar
|
||||
value={searchText}
|
||||
onChange={setSearchText}
|
||||
onRequestSearch={() => {}}
|
||||
tagsHandler={tagsHandler}
|
||||
tags={filters && filters.allTags}
|
||||
placeholder={t`Search extensions`}
|
||||
/>
|
||||
<ResponsiveLineStackLayout noMargin>
|
||||
<SearchBarSelectField
|
||||
value={chosenCategory}
|
||||
onChange={(e, i, value: string) => {
|
||||
setChosenCategory(value);
|
||||
}}
|
||||
>
|
||||
<SelectOption value="" primaryText={t`All categories`} />
|
||||
{allCategories.map(category => (
|
||||
<SelectOption
|
||||
key={category}
|
||||
value={category}
|
||||
primaryText={category}
|
||||
/>
|
||||
))}
|
||||
</SearchBarSelectField>
|
||||
<Column expand noMargin>
|
||||
<SearchBar
|
||||
value={searchText}
|
||||
onChange={setSearchText}
|
||||
onRequestSearch={() => {}}
|
||||
tagsHandler={tagsHandler}
|
||||
tags={filters && filters.allTags}
|
||||
placeholder={t`Search extensions`}
|
||||
/>
|
||||
</Column>
|
||||
</ResponsiveLineStackLayout>
|
||||
<Toggle
|
||||
onToggle={(e, check) =>
|
||||
preferences.setShowCommunityExtensions(check)
|
||||
|
@@ -462,6 +462,7 @@ describe('InstallAsset', () => {
|
||||
mockFn(getExtensionsRegistry).mockImplementationOnce(() => ({
|
||||
version: '1.0.0',
|
||||
allTags: [''],
|
||||
allCategories: [''],
|
||||
extensionShortHeaders: [
|
||||
flashExtensionShortHeader,
|
||||
fireBulletExtensionShortHeader,
|
||||
@@ -481,6 +482,7 @@ describe('InstallAsset', () => {
|
||||
mockFn(getExtensionsRegistry).mockImplementationOnce(() => ({
|
||||
version: '1.0.0',
|
||||
allTags: [''],
|
||||
allCategories: [''],
|
||||
extensionShortHeaders: [
|
||||
flashExtensionShortHeader,
|
||||
fireBulletExtensionShortHeader,
|
||||
@@ -627,6 +629,7 @@ describe('InstallAsset', () => {
|
||||
mockFn(getExtensionsRegistry).mockImplementationOnce(() => ({
|
||||
version: '1.0.0',
|
||||
allTags: [''],
|
||||
allCategories: [''],
|
||||
extensionShortHeaders: [
|
||||
flashExtensionShortHeader,
|
||||
fireBulletExtensionShortHeader,
|
||||
@@ -664,6 +667,7 @@ describe('InstallAsset', () => {
|
||||
mockFn(getExtensionsRegistry).mockImplementationOnce(() => ({
|
||||
version: '1.0.0',
|
||||
allTags: [''],
|
||||
allCategories: [''],
|
||||
extensionShortHeaders: [
|
||||
flashExtensionShortHeader,
|
||||
fireBulletExtensionShortHeader,
|
||||
|
@@ -16,6 +16,7 @@ export type SearchResult<T> = {|
|
||||
|
||||
type SearchOptions = {|
|
||||
searchText: string,
|
||||
chosenItemCategory?: string,
|
||||
chosenCategory: ?ChosenCategory,
|
||||
chosenFilters: Set<string>,
|
||||
excludedTiers: Set<string>,
|
||||
@@ -75,9 +76,11 @@ export const filterSearchResults = <
|
||||
tags: Array<string>,
|
||||
// Some search items can have tiers:
|
||||
+tier?: string,
|
||||
+category?: string,
|
||||
}
|
||||
>(
|
||||
searchResults: ?Array<SearchResult<SearchItem>>,
|
||||
chosenItemCategory: ?string,
|
||||
chosenCategory: ?ChosenCategory,
|
||||
chosenFilters: Set<string>,
|
||||
excludedTiers: Set<string>
|
||||
@@ -86,6 +89,9 @@ export const filterSearchResults = <
|
||||
|
||||
const startTime = performance.now();
|
||||
const filteredSearchResults = searchResults
|
||||
.filter(
|
||||
({ item }) => !chosenItemCategory || item.category === chosenItemCategory
|
||||
)
|
||||
.filter(({ item: { tags } }) => {
|
||||
if (!chosenCategory) return true;
|
||||
|
||||
@@ -136,11 +142,13 @@ export const useSearchStructuredItem = <
|
||||
tags: Array<string>,
|
||||
// Some search items can have tiers:
|
||||
+tier?: string,
|
||||
+category?: string,
|
||||
}
|
||||
>(
|
||||
searchItemsById: ?{ [string]: SearchItem },
|
||||
{
|
||||
searchText,
|
||||
chosenItemCategory,
|
||||
chosenCategory,
|
||||
chosenFilters,
|
||||
excludedTiers,
|
||||
@@ -228,6 +236,7 @@ export const useSearchStructuredItem = <
|
||||
setSearchResults(
|
||||
filterSearchResults(
|
||||
orderedSearchResults,
|
||||
chosenItemCategory,
|
||||
chosenCategory,
|
||||
chosenFilters,
|
||||
excludedTiers
|
||||
@@ -259,6 +268,7 @@ export const useSearchStructuredItem = <
|
||||
item: result.item,
|
||||
matches: tuneMatches(result, searchText),
|
||||
})),
|
||||
chosenItemCategory,
|
||||
chosenCategory,
|
||||
chosenFilters,
|
||||
excludedTiers
|
||||
@@ -276,6 +286,7 @@ export const useSearchStructuredItem = <
|
||||
orderedSearchResults,
|
||||
searchItemsById,
|
||||
searchText,
|
||||
chosenItemCategory,
|
||||
chosenCategory,
|
||||
chosenFilters,
|
||||
searchApi,
|
||||
|
176
newIDE/app/src/UI/SearchBarSelectField.js
Normal file
176
newIDE/app/src/UI/SearchBarSelectField.js
Normal file
@@ -0,0 +1,176 @@
|
||||
// @flow
|
||||
import { t } from '@lingui/macro';
|
||||
import * as React from 'react';
|
||||
import { I18n } from '@lingui/react';
|
||||
import TextField from '@material-ui/core/TextField';
|
||||
import { type MessageDescriptor } from '../Utils/i18n/MessageDescriptor.flow';
|
||||
import { makeStyles } from '@material-ui/core';
|
||||
import GDevelopThemeContext from './Theme/ThemeContext';
|
||||
import Paper from '@material-ui/core/Paper';
|
||||
|
||||
const INVALID_VALUE = '';
|
||||
const stopPropagation = event => event.stopPropagation();
|
||||
|
||||
const useSelectStyles = textAlign =>
|
||||
makeStyles({
|
||||
root: {
|
||||
textAlign: textAlign || 'left',
|
||||
cursor: 'default',
|
||||
},
|
||||
})();
|
||||
|
||||
const styles = {
|
||||
root: {
|
||||
height: 30,
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between',
|
||||
},
|
||||
input: {
|
||||
width: '100%',
|
||||
},
|
||||
searchContainer: {
|
||||
position: 'relative',
|
||||
margin: 'auto 8px',
|
||||
width: '100%',
|
||||
},
|
||||
};
|
||||
|
||||
export type SearchBarSelectFieldInterface = {| focus: () => void |};
|
||||
|
||||
type ValueProps = {|
|
||||
value: number | string,
|
||||
// event and index should not be used, and be removed eventually
|
||||
onChange?: (
|
||||
event: {| target: {| value: string |} |},
|
||||
index: number,
|
||||
text: string // Note that even for number values, a string is returned
|
||||
) => void,
|
||||
|};
|
||||
|
||||
// We support a subset of the props supported by Material-UI v0.x SelectField
|
||||
// They should be self descriptive - refer to Material UI docs otherwise.
|
||||
type Props = {|
|
||||
...ValueProps,
|
||||
fullWidth?: boolean,
|
||||
children: React.Node,
|
||||
disabled?: boolean,
|
||||
stopPropagationOnClick?: boolean,
|
||||
|
||||
style?: {
|
||||
flex?: 1,
|
||||
width?: 'auto',
|
||||
},
|
||||
margin?: 'none' | 'dense',
|
||||
textAlign?: 'center',
|
||||
|
||||
helperMarkdownText?: ?string,
|
||||
|
||||
// If a hint text is specified, will be shown as an option for the empty
|
||||
// value (""), disabled.
|
||||
translatableHintText?: MessageDescriptor,
|
||||
|};
|
||||
|
||||
/**
|
||||
* A select field based on Material-UI select field.
|
||||
* To be used with `SelectOption`.
|
||||
*/
|
||||
const SearchBarSelectField = React.forwardRef<
|
||||
Props,
|
||||
SearchBarSelectFieldInterface
|
||||
>((props, ref) => {
|
||||
const inputRef = React.useRef<?HTMLInputElement>(null);
|
||||
const focus = React.useCallback(
|
||||
() => {
|
||||
if (inputRef.current) {
|
||||
inputRef.current.focus();
|
||||
}
|
||||
},
|
||||
[inputRef]
|
||||
);
|
||||
React.useImperativeHandle(ref, () => ({
|
||||
focus,
|
||||
}));
|
||||
|
||||
const gdevelopTheme = React.useContext(GDevelopThemeContext);
|
||||
const selectStyles = useSelectStyles(props.textAlign);
|
||||
|
||||
const onChange = props.onChange || undefined;
|
||||
|
||||
// Dig into children props to see if the current value is valid or not.
|
||||
let hasValidValue = true;
|
||||
const childrenValues = React.Children.map(props.children, child => {
|
||||
if (child === null || !child.props) return null;
|
||||
|
||||
return child.props.value;
|
||||
});
|
||||
if (!childrenValues) {
|
||||
console.error(
|
||||
'SelectField has been passed no or invalid children. Only SelectOption and null are supported.'
|
||||
);
|
||||
} else {
|
||||
hasValidValue =
|
||||
childrenValues.filter(childValue => childValue === props.value).length !==
|
||||
0;
|
||||
}
|
||||
const displayedValue = hasValidValue ? props.value : INVALID_VALUE;
|
||||
|
||||
return (
|
||||
<I18n>
|
||||
{({ i18n }) => (
|
||||
<Paper
|
||||
style={{
|
||||
backgroundColor: gdevelopTheme.searchBar.backgroundColor,
|
||||
...styles.root,
|
||||
}}
|
||||
square={false}
|
||||
elevation={0}
|
||||
>
|
||||
<div style={styles.searchContainer}>
|
||||
<TextField
|
||||
select
|
||||
color="secondary"
|
||||
disabled={props.disabled}
|
||||
fullWidth={props.fullWidth}
|
||||
value={displayedValue}
|
||||
onClick={
|
||||
props.stopPropagationOnClick ? stopPropagation : undefined
|
||||
}
|
||||
onChange={
|
||||
onChange
|
||||
? event => {
|
||||
onChange(event, -1, event.target.value);
|
||||
}
|
||||
: undefined
|
||||
}
|
||||
InputProps={{
|
||||
style: styles.input,
|
||||
disableUnderline: true,
|
||||
}}
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
SelectProps={{
|
||||
native: true,
|
||||
classes: selectStyles,
|
||||
}}
|
||||
margin="none"
|
||||
style={styles.input}
|
||||
inputRef={inputRef}
|
||||
>
|
||||
{!hasValidValue ? (
|
||||
<option value={INVALID_VALUE} disabled>
|
||||
{props.translatableHintText
|
||||
? i18n._(props.translatableHintText)
|
||||
: i18n._(t`Choose an option`)}
|
||||
</option>
|
||||
) : null}
|
||||
{props.children}
|
||||
</TextField>
|
||||
</div>
|
||||
</Paper>
|
||||
)}
|
||||
</I18n>
|
||||
);
|
||||
});
|
||||
|
||||
export default SearchBarSelectField;
|
@@ -9,6 +9,7 @@ type ExtensionTier = 'community' | 'reviewed';
|
||||
export type ExtensionShortHeader = {|
|
||||
tier: ExtensionTier,
|
||||
shortDescription: string,
|
||||
authorIds: Array<string>,
|
||||
authors?: Array<UserPublicProfile>,
|
||||
extensionNamespace: string,
|
||||
fullName: string,
|
||||
@@ -18,6 +19,7 @@ export type ExtensionShortHeader = {|
|
||||
url: string,
|
||||
headerUrl: string,
|
||||
tags: Array<string>,
|
||||
category: string,
|
||||
previewIconUrl: string,
|
||||
eventsBasedBehaviorsCount: number,
|
||||
eventsFunctionsCount: number,
|
||||
@@ -47,6 +49,7 @@ export type SerializedExtension = {
|
||||
export type ExtensionsRegistry = {
|
||||
version: string,
|
||||
allTags: Array<string>,
|
||||
allCategories: Array<string>,
|
||||
extensionShortHeaders: Array<ExtensionShortHeader>,
|
||||
views?: {
|
||||
default: {
|
||||
|
@@ -1,6 +1,11 @@
|
||||
// @flow
|
||||
import { type ExtensionsRegistry } from '../../Utils/GDevelopServices/Extension';
|
||||
import { type ExtensionShortHeader } from '../../Utils/GDevelopServices/Extension';
|
||||
|
||||
export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
export const fakeExtensionsRegistry: ExtensionsRegistry & {
|
||||
// The service gives CSV but it's converted on the fly to an array.
|
||||
extensionShortHeaders: Array<ExtensionShortHeader & { tags: any }>,
|
||||
} = {
|
||||
version: '0.0.1',
|
||||
allTags: [
|
||||
'ledge tolerance',
|
||||
@@ -424,6 +429,21 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
'sdk',
|
||||
'ads',
|
||||
],
|
||||
allCategories: [
|
||||
'Movement',
|
||||
'Network',
|
||||
'User interface',
|
||||
'General',
|
||||
'Input',
|
||||
'Advanced',
|
||||
'Camera',
|
||||
'Game mechanic',
|
||||
'Visual effect',
|
||||
'Third-party',
|
||||
'Ads',
|
||||
'Audio',
|
||||
'Device',
|
||||
],
|
||||
views: {
|
||||
default: {
|
||||
firstExtensionIds: [
|
||||
@@ -448,13 +468,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/SomeAlreadyInstalledExtension-header.json',
|
||||
tags: 'ledge tolerance,jump,platform',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author' },
|
||||
{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' },
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author', description: '' },
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -470,13 +495,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/AdvancedJump-header.json',
|
||||
tags: 'ledge tolerance,jump,platform',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author' },
|
||||
{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' },
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author', description: '' },
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -493,11 +523,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/AdvancedP2PEventHandling-header.json',
|
||||
tags: 'p2p,performance,advanced',
|
||||
category: 'Network',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Applications and Programming/Applications and Programming_sitemap_map_ux_application.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 1,
|
||||
authors: [{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'community',
|
||||
@@ -512,12 +549,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/AlignObject-header.json',
|
||||
tags: 'align,alignment,center',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/format-vertical-align-center.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 14,
|
||||
authors: [
|
||||
{ id: 'I0kdjvsICFML0APq45CZjZ6PyEQ2', username: 'Fake user #EQ2' },
|
||||
{
|
||||
id: 'I0kdjvsICFML0APq45CZjZ6PyEQ2',
|
||||
username: 'Fake user #EQ2',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -534,11 +576,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/AnimatedBackAndForthMovement-header.json',
|
||||
tags: 'back,forth,movement',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/repeat.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [{ id: 'wWP8BSlAW0UP4NeaHa2LcmmDzmH2', username: '4ian' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'wWP8BSlAW0UP4NeaHa2LcmmDzmH2',
|
||||
username: '4ian',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -554,11 +603,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
'https://resources.gdevelop-app.com/extensions/ArrayTools-header.json',
|
||||
tags:
|
||||
'array,variable,index,tool,math,string,sort,find,slice,cut,random,copy,combine,concat,append,insert',
|
||||
category: 'General',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/code-array.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 31,
|
||||
authors: [{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -573,11 +629,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/AutoTyping-header.json',
|
||||
tags: 'text,bbtext,dialogue,visual novel,autotyping,bitmap',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/typewriter.svg',
|
||||
eventsBasedBehaviorsCount: 3,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [{ id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92', username: 'Bouh' }],
|
||||
authors: [
|
||||
{
|
||||
id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92',
|
||||
username: 'Bouh',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -591,11 +654,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/BackButton-header.json',
|
||||
tags: 'back,mobile,button,input',
|
||||
category: 'Input',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/keyboard-backspace.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 4,
|
||||
authors: [{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -610,12 +680,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/BaseConversion-header.json',
|
||||
tags: 'binary,numbers,number,base,hex,decimal',
|
||||
category: 'Advanced',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/hexadecimal.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 2,
|
||||
authors: [
|
||||
{ id: 'onPsboRtDkUHNOsx7OPr8R8G1oj2', username: 'Fake user #oj2' },
|
||||
{
|
||||
id: 'onPsboRtDkUHNOsx7OPr8R8G1oj2',
|
||||
username: 'Fake user #oj2',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -631,12 +706,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/BehaviorRemapper-header.json',
|
||||
tags: 'remapper,key,bindings,presets,platformer,top-down',
|
||||
category: 'Input',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/alpha-w-box-outline.svg',
|
||||
eventsBasedBehaviorsCount: 2,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'AlZ3D1xkH0QDao7T37VZZUeYNpn1', username: 'Fake user #pn1' },
|
||||
{
|
||||
id: 'AlZ3D1xkH0QDao7T37VZZUeYNpn1',
|
||||
username: 'Fake user #pn1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -654,13 +734,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/BoidsMovement-header.json',
|
||||
tags: 'flock,swarm,boids,crowd,horde',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Restaurant/Restaurant_restaurant_seafood_animal_fish.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 1,
|
||||
authors: [
|
||||
{ id: 'rotBq28wITdtfsrE7McHQri4k2w2', username: 'Fake user #2w2' },
|
||||
{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' },
|
||||
{
|
||||
id: 'rotBq28wITdtfsrE7McHQri4k2w2',
|
||||
username: 'Fake user #2w2',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -676,13 +765,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Boomerang-header.json',
|
||||
tags: 'boomerang,throw,attack,projectile,ricochet,rebound,launch',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/boomerang.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author' },
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author', description: '' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -698,11 +792,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Bounce-header.json',
|
||||
tags: 'bounce,bullet',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/volleyball.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [{ id: 'wWP8BSlAW0UP4NeaHa2LcmmDzmH2', username: '4ian' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'wWP8BSlAW0UP4NeaHa2LcmmDzmH2',
|
||||
username: '4ian',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -720,13 +821,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CameraShake-header.json',
|
||||
tags: 'shaking,camera,effect,screen,shake,zoom,position,rotate',
|
||||
category: 'Camera',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/vector-difference-ab.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 4,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{ id: 'm4hBMBTUilft4s1V4FQQPakVDGx1', username: 'Fake user #Gx1' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'm4hBMBTUilft4s1V4FQQPakVDGx1',
|
||||
username: 'Fake user #Gx1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -745,13 +855,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CameraZoom-header.json',
|
||||
tags: 'Camera,Layer,Zoom',
|
||||
category: 'Camera',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/UI Essentials/UI Essentials_zoom_in_plus.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [
|
||||
{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' },
|
||||
{ id: '30b1QQoYi1gQQHzIjMlNY8aLyYV2', username: 'Fake user #YV2' },
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: '30b1QQoYi1gQQHzIjMlNY8aLyYV2',
|
||||
username: 'Fake user #YV2',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -768,11 +887,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CancellableDraggable-header.json',
|
||||
tags: 'drag,drop',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/step-backward.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -787,12 +913,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Checkbox-header.json',
|
||||
tags: 'checkbox,ui,widget,shape painter,toggle,checkmark',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/checkbox-marked.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -810,13 +941,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Checkpoints-header.json',
|
||||
tags: 'position,checkpoint',
|
||||
category: 'Game mechanic',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/flag-variant.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [
|
||||
{ id: '30b1QQoYi1gQQHzIjMlNY8aLyYV2', username: 'Fake user #YV2' },
|
||||
{ id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92', username: 'Bouh' },
|
||||
{
|
||||
id: '30b1QQoYi1gQQHzIjMlNY8aLyYV2',
|
||||
username: 'Fake user #YV2',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92',
|
||||
username: 'Bouh',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -832,12 +972,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Choose-header.json',
|
||||
tags: 'choose,random',
|
||||
category: 'General',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/dice-multiple.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 2,
|
||||
authors: [
|
||||
{ id: 'ZShmW1xkW7WWl9AkB78VITJMiTw1', username: 'Fake user #Tw1' },
|
||||
{
|
||||
id: 'ZShmW1xkW7WWl9AkB78VITJMiTw1',
|
||||
username: 'Fake user #Tw1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -855,13 +1000,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Clipboard-header.json',
|
||||
tags: 'clipboard,pasteboard,paste,copy,write',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/clipboard-text-multiple-outline.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [
|
||||
{ id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92', username: 'Bouh' },
|
||||
{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' },
|
||||
{
|
||||
id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92',
|
||||
username: 'Bouh',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -881,14 +1035,27 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/ColorConversion-header.json',
|
||||
tags: 'color,conversion,hexadecimal,rgb,hsl,hsv,hsb',
|
||||
category: 'Advanced',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/invert-colors.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 9,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{ id: 'AlZ3D1xkH0QDao7T37VZZUeYNpn1', username: 'Fake user #pn1' },
|
||||
{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'AlZ3D1xkH0QDao7T37VZZUeYNpn1',
|
||||
username: 'Fake user #pn1',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -903,11 +1070,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/Compressor-header.json',
|
||||
tags: 'string,compression,zip',
|
||||
category: 'Advanced',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/folder-zip-outline.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -923,12 +1097,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CopyCameraSettings-header.json',
|
||||
tags: 'camera,clone,zoom,position,layer,angle,copy',
|
||||
category: 'Camera',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/layers-triple-outline.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 1,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -945,12 +1124,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CreateMultipleCopiesOfObject-header.json',
|
||||
tags: 'create,multiple,object,grid,row,column',
|
||||
category: 'Visual effect',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/grid.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 1,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -967,12 +1151,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CurrentGameVersion-header.json',
|
||||
tags: 'version',
|
||||
category: 'Advanced',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/numeric.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 1,
|
||||
authors: [
|
||||
{ id: 'ZShmW1xkW7WWl9AkB78VITJMiTw1', username: 'Fake user #Tw1' },
|
||||
{
|
||||
id: 'ZShmW1xkW7WWl9AkB78VITJMiTw1',
|
||||
username: 'Fake user #Tw1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -988,11 +1177,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CursorMovement-header.json',
|
||||
tags: 'mouse,pointer,cursor',
|
||||
category: 'Input',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Computers and Hardware/Computers and Hardware_mouse_pc.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'community',
|
||||
@@ -1010,13 +1206,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/CursorType-header.json',
|
||||
tags: 'cursor,javascript,desktop',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/cursor-default-outline.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 2,
|
||||
authors: [
|
||||
{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' },
|
||||
{ id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92', username: 'Bouh' },
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: '2OwwM8ToR9dx9RJ2sAKTcrLmCB92',
|
||||
username: 'Bouh',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1032,12 +1237,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DepthEffect-header.json',
|
||||
tags: 'depth,effect,scale,y,text,sprite',
|
||||
category: 'Visual effect',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Virtual Reality/Virtual Reality_vr_computer_3d_cube_screen_tv.svg',
|
||||
eventsBasedBehaviorsCount: 2,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1053,11 +1263,18 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DiscordRichPresence-header.json',
|
||||
tags: 'discord,rich,presence,integration,status',
|
||||
category: 'Third-party',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/discord.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [{ id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1', username: 'arthuro555' }],
|
||||
authors: [
|
||||
{
|
||||
id: 'ZgrsWuRTAkXgeuPV9bo0zuEcA2w1',
|
||||
username: 'arthuro555',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
tier: 'reviewed',
|
||||
@@ -1072,12 +1289,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DoubleClick-header.json',
|
||||
tags: 'double-click,double-tap',
|
||||
category: 'Input',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Computers and Hardware/Computers and Hardware_mouse_wireless_pc.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 3,
|
||||
authors: [
|
||||
{ id: '8Ih1aa8f5gWUp4UB2BdhQ2iXWxJ3', username: 'Fake user #xJ3' },
|
||||
{
|
||||
id: '8Ih1aa8f5gWUp4UB2BdhQ2iXWxJ3',
|
||||
username: 'Fake user #xJ3',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1096,13 +1318,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DragCameraWithPointer-header.json',
|
||||
tags: 'pointer,drag,camera,scroll,gestures',
|
||||
category: 'Camera',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/drag-variant.svg',
|
||||
eventsBasedBehaviorsCount: 0,
|
||||
eventsFunctionsCount: 1,
|
||||
authors: [
|
||||
{ id: 'GfzRsieyUFVnsRR8OZThsPR29oq2', username: 'Fake user #oq2' },
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'GfzRsieyUFVnsRR8OZThsPR29oq2',
|
||||
username: 'Fake user #oq2',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1118,12 +1349,17 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DraggablePhysics-header.json',
|
||||
tags: 'draggable,mouse,touch,physics,object,joint,fling',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Virtual Reality/Virtual Reality_hand_vr_ar_360.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1143,13 +1379,22 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DraggableSliderControl-header.json',
|
||||
tags: 'draggable,slider,shape painter,ui,widget',
|
||||
category: 'User interface',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/UI Essentials/UI Essentials_sliders_options.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [
|
||||
{ id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2', username: 'D8H' },
|
||||
{ id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1', username: 'Fake user #Cg1' },
|
||||
{
|
||||
id: 'IWykYNRvhCZBN3vEgKEbBPOR3Oc2',
|
||||
username: 'D8H',
|
||||
description: '',
|
||||
},
|
||||
{
|
||||
id: 'gqDaZjCfevOOxBYkK6zlhtZnXCg1',
|
||||
username: 'Fake user #Cg1',
|
||||
description: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -1165,11 +1410,14 @@ export const fakeExtensionsRegistry: ExtensionsRegistry = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/DrawPathfinding-header.json',
|
||||
tags: 'pathfinding,debug,shape painter,draw',
|
||||
category: 'Movement',
|
||||
previewIconUrl:
|
||||
'https://resources.gdevelop-app.com/assets/Icons/resistor-nodes.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
authors: [{ id: 'this-is-a-fake-id', username: 'Fake author' }],
|
||||
authors: [
|
||||
{ id: 'this-is-a-fake-id', username: 'Fake author', description: '' },
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
@@ -796,6 +796,7 @@ export const fakeAssetShortHeader1: AssetShortHeader = {
|
||||
|
||||
export const fireBulletExtensionShortHeader: ExtensionShortHeader = {
|
||||
tier: 'reviewed',
|
||||
authorIds: [],
|
||||
shortDescription:
|
||||
'Allow the object to fire bullets, with customizable speed, angle and fire rate.',
|
||||
extensionNamespace: '',
|
||||
@@ -806,6 +807,7 @@ export const fireBulletExtensionShortHeader: ExtensionShortHeader = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/FireBullet-header.json',
|
||||
tags: ['fire', 'bullets', 'spawn', 'firerate'],
|
||||
category: 'Movement',
|
||||
previewIconUrl: 'https://resources.gdevelop-app.com/assets/Icons/repeat.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
@@ -837,6 +839,7 @@ export const alreadyInstalledCommunityExtensionShortHeader: ExtensionShortHeader
|
||||
|
||||
export const flashExtensionShortHeader: ExtensionShortHeader = {
|
||||
tier: 'reviewed',
|
||||
authorIds: [],
|
||||
shortDescription:
|
||||
'Make the object flash (blink) for a period of time, so that it is alternately visible and invisible.\nTrigger the effect by using the Flash action.',
|
||||
extensionNamespace: '',
|
||||
@@ -846,6 +849,7 @@ export const flashExtensionShortHeader: ExtensionShortHeader = {
|
||||
url: 'Extensions/Flash.json',
|
||||
headerUrl: 'Extensions/Flash-header.json',
|
||||
tags: ['flash', 'blink', 'visible', 'invisible', 'hit', 'damage'],
|
||||
category: 'Visual effect',
|
||||
previewIconUrl: 'https://resources.gdevelop-app.com/assets/Icons/repeat.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
@@ -853,6 +857,7 @@ export const flashExtensionShortHeader: ExtensionShortHeader = {
|
||||
|
||||
export const communityTierExtensionShortHeader: ExtensionShortHeader = {
|
||||
tier: 'community',
|
||||
authorIds: [],
|
||||
shortDescription:
|
||||
'This is an example of an extension that is a community extension (not reviewed).',
|
||||
extensionNamespace: '',
|
||||
@@ -864,6 +869,7 @@ export const communityTierExtensionShortHeader: ExtensionShortHeader = {
|
||||
headerUrl:
|
||||
'https://resources.gdevelop-app.com/extensions/FakeCommunityExtension-header.json',
|
||||
tags: ['fire', 'bullets', 'spawn', 'firerate'],
|
||||
category: '',
|
||||
previewIconUrl: 'https://resources.gdevelop-app.com/assets/Icons/repeat.svg',
|
||||
eventsBasedBehaviorsCount: 1,
|
||||
eventsFunctionsCount: 0,
|
||||
|
Reference in New Issue
Block a user