Skip to content
Open
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
567 changes: 567 additions & 0 deletions Extensions/TileMap/AbstractTileMapRuntimeObject.ts

Large diffs are not rendered by default.

411 changes: 402 additions & 9 deletions Extensions/TileMap/JsExtension.js

Large diffs are not rendered by default.

231 changes: 231 additions & 0 deletions Extensions/TileMap/TileMapBehavior.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
/*
* GDevelop JS Platform
* Copyright 2013-2023 Florian Rival (Florian.Rival@gmail.com). All rights reserved.
* This project is released under the MIT License.
*/
namespace gdjs {
/** @category Objects > Tile Map */
export interface TileMap {
getSceneXCoordinateOfTileCenter(
columnIndex: integer,
rowIndex: integer
): float;

getSceneYCoordinateOfTileCenter(
columnIndex: integer,
rowIndex: integer
): float;

getColumnIndexAtPosition(x: float, y: float): integer;

getRowIndexAtPosition(x: float, y: float): integer;

getTileAtPosition(x: float, y: float): integer;

getTileAtGridCoordinates(columnIndex: integer, rowIndex: integer): integer;

setTileAtPosition(tileId: number, x: float, y: float): void;

setTileAtGridCoordinates(
tileId: number,
columnIndex: integer,
rowIndex: integer
): void;

flipTileOnYAtPosition(x: float, y: float, flip: boolean): void;

flipTileOnXAtPosition(x: float, y: float, flip: boolean): void;

flipTileOnYAtGridCoordinates(
columnIndex: integer,
rowIndex: integer,
flip: boolean
): void;

flipTileOnXAtGridCoordinates(
columnIndex: integer,
rowIndex: integer,
flip: boolean
): void;

isTileFlippedOnXAtPosition(x: float, y: float): boolean;

isTileFlippedOnXAtGridCoordinates(
columnIndex: integer,
rowIndex: integer
): boolean;

isTileFlippedOnYAtPosition(x: float, y: float): boolean;

isTileFlippedOnYAtGridCoordinates(
columnIndex: integer,
rowIndex: integer
): boolean;

removeTileAtPosition(x: float, y: float): void;

removeTileAtGridCoordinates(columnIndex: integer, rowIndex: integer): void;

setGridRowCount(targetRowCount: integer): void;

setGridColumnCount(targetColumnCount: integer): void;

getGridRowCount(): integer;

getGridColumnCount(): integer;
}

/**
* A behavior that forwards the Resizable interface to its object.
* @category Behaviors > Default behaviors
*/
export class TileMapBehavior extends gdjs.RuntimeBehavior implements TileMap {
private object: gdjs.RuntimeObject & TileMap;

constructor(
instanceContainer: gdjs.RuntimeInstanceContainer,
behaviorData,
owner: gdjs.RuntimeObject & TileMap
) {
super(instanceContainer, behaviorData, owner);
this.object = owner;
}

usesLifecycleFunction(): boolean {
return false;
}

override applyBehaviorOverriding(behaviorData): boolean {
// Nothing to update.
return true;
}

onDeActivate() {}

onDestroy() {}

doStepPreEvents(instanceContainer: gdjs.RuntimeInstanceContainer) {}

doStepPostEvents(instanceContainer: gdjs.RuntimeInstanceContainer) {}

getSceneXCoordinateOfTileCenter(
columnIndex: integer,
rowIndex: integer
): float {
return this.object.getSceneXCoordinateOfTileCenter(columnIndex, rowIndex);
}

getSceneYCoordinateOfTileCenter(
columnIndex: integer,
rowIndex: integer
): float {
return this.object.getSceneYCoordinateOfTileCenter(columnIndex, rowIndex);
}

getColumnIndexAtPosition(x: float, y: float): integer {
return this.object.getColumnIndexAtPosition(x, y);
}

getRowIndexAtPosition(x: float, y: float): integer {
return this.object.getRowIndexAtPosition(x, y);
}

getTileAtPosition(x: float, y: float): integer {
return this.object.getTileAtPosition(x, y);
}

getTileAtGridCoordinates(columnIndex: integer, rowIndex: integer): integer {
return this.object.getTileAtGridCoordinates(columnIndex, rowIndex);
}

setTileAtPosition(tileId: number, x: float, y: float): void {
this.object.setTileAtPosition(tileId, x, y);
}

setTileAtGridCoordinates(
tileId: number,
columnIndex: integer,
rowIndex: integer
): void {
this.object.setTileAtGridCoordinates(tileId, columnIndex, rowIndex);
}

flipTileOnYAtPosition(x: float, y: float, flip: boolean): void {
this.object.flipTileOnYAtPosition(x, y, flip);
}

flipTileOnXAtPosition(x: float, y: float, flip: boolean): void {
this.object.flipTileOnXAtPosition(x, y, flip);
}

flipTileOnYAtGridCoordinates(
columnIndex: integer,
rowIndex: integer,
flip: boolean
): void {
this.object.flipTileOnYAtGridCoordinates(columnIndex, rowIndex, flip);
}

flipTileOnXAtGridCoordinates(
columnIndex: integer,
rowIndex: integer,
flip: boolean
): void {
this.object.flipTileOnXAtGridCoordinates(columnIndex, rowIndex, flip);
}

isTileFlippedOnXAtPosition(x: float, y: float): boolean {
return this.object.isTileFlippedOnXAtPosition(x, y);
}

isTileFlippedOnXAtGridCoordinates(
columnIndex: integer,
rowIndex: integer
): boolean {
return this.object.isTileFlippedOnXAtGridCoordinates(
columnIndex,
rowIndex
);
}

isTileFlippedOnYAtPosition(x: float, y: float): boolean {
return this.object.isTileFlippedOnYAtPosition(x, y);
}

isTileFlippedOnYAtGridCoordinates(
columnIndex: integer,
rowIndex: integer
): boolean {
return this.object.isTileFlippedOnYAtGridCoordinates(
columnIndex,
rowIndex
);
}

removeTileAtPosition(x: float, y: float): void {
this.object.removeTileAtPosition(x, y);
}

removeTileAtGridCoordinates(columnIndex: integer, rowIndex: integer): void {
this.object.removeTileAtGridCoordinates(columnIndex, rowIndex);
}

setGridRowCount(targetRowCount: integer): void {
this.object.setGridRowCount(targetRowCount);
}

setGridColumnCount(targetColumnCount: integer): void {
this.object.setGridColumnCount(targetColumnCount);
}

getGridRowCount(): integer {
return this.object.getGridRowCount();
}

getGridColumnCount(): integer {
return this.object.getGridColumnCount();
}
}

gdjs.registerBehavior('TileMap::TileMapBehavior', gdjs.TileMapBehavior);
}
2 changes: 1 addition & 1 deletion Extensions/TileMap/helper/TileMapHelper.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Extensions/TileMap/helper/TileMapHelper.js.map

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ export declare const extractTileUidFlippedStates: (
* @return the tile identifier.
*/
export declare function getTileIdFromTiledGUI(
tiledGUI: number | undefined
tiledGUI: number
): number | undefined;
//# sourceMappingURL=TiledTileMapLoaderHelper.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions Extensions/TileMap/helper/dts/model/TileMapModel.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
* This allows to support new file format with only a new parser.
*/
export declare class EditableTileMap {
private _backgroundResourceName?;
private _backgroundResourceName;
private _tileSet;
private _layers;
/**
Expand Down Expand Up @@ -51,6 +51,7 @@ export declare class EditableTileMap {
dimY: integer,
tileSet: Map<integer, TileDefinition>
);
clone(): EditableTileMap;
/**
* Loads EditableTileMap from serialized data.
* Uses object configuration as the source of truth as the serialized data
Expand Down Expand Up @@ -145,7 +146,7 @@ export declare class EditableTileMap {
/**
* @returns The resource name of the background
*/
getBackgroundResourceName(): string;
getBackgroundResourceName(): string | null;
/**
* @returns All the layers of the tile map.
*/
Expand Down Expand Up @@ -204,6 +205,7 @@ declare abstract class AbstractEditableLayer {
* @param id The layer identifier.
*/
constructor(tileMap: EditableTileMap, id: integer);
abstract clone(tileMap: EditableTileMap, id: integer): AbstractEditableLayer;
setVisible(visible: boolean): void;
toJSObject(): EditableTileMapLayerAsJsObject;
/**
Expand All @@ -222,6 +224,7 @@ export declare class EditableObjectLayer extends AbstractEditableLayer {
* @param id The layer identifier.
*/
constructor(tileMap: EditableTileMap, id: integer);
clone(tileMap: EditableTileMap, id: integer): EditableObjectLayer;
add(object: TileObject): void;
isEmpty(): boolean;
}
Expand Down Expand Up @@ -278,7 +281,7 @@ export declare class EditableTileMapLayer extends AbstractEditableLayer {
* @param id The layer identifier.
*/
constructor(tileMap: EditableTileMap, id: integer);
buildEmptyLayer(dimensionX: number, dimensionY: number): void;
clone(tileMap: EditableTileMap, id: integer): EditableTileMapLayer;
static from(
editableTileMapLayerAsJsObject: EditableTileMapLayerAsJsObject,
tileMap: EditableTileMap,
Expand Down
Loading
Loading