mirror of
https://git.leinelab.org/Mal/mr-crocs-adventures.git
synced 2025-09-11 02:57:36 +02:00
Dialogs and function for new terrain.
This commit is contained in:
27
tilorswift/js/dialog/DialogNewTerrain.js
Normal file
27
tilorswift/js/dialog/DialogNewTerrain.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import Dialog from "./Dialog.js";
|
||||
import TilorswiftNewTerrainEvent from "../events/TilorswiftNewTerrainEvent.js";
|
||||
|
||||
export default class DialogNewTerrain extends Dialog
|
||||
{
|
||||
constructor() {
|
||||
super();
|
||||
this.setMessage('Neues Terrain erstellen');
|
||||
this.inputRows = this.createInputNumber('Zeilen');
|
||||
this.inputColumns = this.createInputNumber('Spalten');
|
||||
this.buttonCancel = this.createButton('Abbrechen');
|
||||
this.buttonCreate = this.createButton('Erstellen');
|
||||
|
||||
this.buttonCreate.addEventListener(
|
||||
'click',
|
||||
() => {
|
||||
window.dispatchEvent(
|
||||
new TilorswiftNewTerrainEvent(
|
||||
'/mr-crocs-adventures/graphics/tileset-landscape01.jpg', /* TODO */
|
||||
this.inputColumns.value,
|
||||
this.inputRows.value
|
||||
)
|
||||
)
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,8 @@ const TilorswiftEvent = {
|
||||
ADD_ROWS_CLICKED: 'addRowsClicked',
|
||||
ADD_COLUMNS: 'addColumns',
|
||||
ADD_COLUMNS_CLICKED: 'addColumnsClicked',
|
||||
NEW_TERRAIN: 'newTerrain',
|
||||
NEW_TERRAIN_CLICKED: 'newTerrainClicked',
|
||||
};
|
||||
|
||||
export default TilorswiftEvent;
|
||||
@@ -0,0 +1,8 @@
|
||||
import TilorswiftEvent from "./TilorswiftEvent.js";
|
||||
|
||||
export default class TilorswiftMenuNewTerrainClickedEvent extends Event
|
||||
{
|
||||
constructor() {
|
||||
super(TilorswiftEvent.NEW_TERRAIN_CLICKED);
|
||||
}
|
||||
}
|
||||
13
tilorswift/js/events/TilorswiftNewTerrainEvent.js
Normal file
13
tilorswift/js/events/TilorswiftNewTerrainEvent.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import TilorswiftEvent from "./TilorswiftEvent.js";
|
||||
|
||||
export default class TilorswiftNewTerrainEvent extends Event
|
||||
{
|
||||
constructor(tileset, tilesX, tilesY)
|
||||
{
|
||||
super(TilorswiftEvent.NEW_TERRAIN);
|
||||
this.tileset = tileset;
|
||||
this.tilesX = tilesX;
|
||||
this.tilesY = tilesY;
|
||||
this.backgroundColor = '#6096ff';
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,8 @@ import DialogAddRows from "./dialog/DialogAddRows.js";
|
||||
import DialogAddColumns from "./dialog/DialogAddColumns.js";
|
||||
import TilorswiftAddRowsClickedEvent from "./events/TilorswiftAddRowsClickedEvent.js";
|
||||
import TilorswiftAddColumnsClickedEvent from "./events/TilorswiftAddColumnsClickedEvent.js";
|
||||
import TilorswiftMenuNewTerrainClickedEvent from "./events/TilorswiftMenuNewTerrainClickedEvent.js";
|
||||
import DialogNewTerrain from "./dialog/DialogNewTerrain.js";
|
||||
|
||||
let loader = new FileLoader('../levels/level.json');
|
||||
let terrainData = JSON.parse(loader.getContent());
|
||||
@@ -45,10 +47,8 @@ image.onload = function () {
|
||||
let mainbar = new MainMenu('mainbar');
|
||||
|
||||
let menuFile = new MenuGroup('Datei');
|
||||
menuFile.addMenuEntry(
|
||||
new MainMenuEntry('Speichern', TilorswiftMenuSaveClickedEvent)
|
||||
);
|
||||
|
||||
menuFile.addMenuEntry(new MainMenuEntry('Neu...', TilorswiftMenuNewTerrainClickedEvent));
|
||||
menuFile.addMenuEntry(new MainMenuEntry('Speichern...', TilorswiftMenuSaveClickedEvent));
|
||||
mainbar.addMenuGroup(menuFile);
|
||||
|
||||
let menuEdit = new MenuGroup('Bearbeiten');
|
||||
@@ -99,6 +99,13 @@ image.onload = function () {
|
||||
}
|
||||
);
|
||||
|
||||
window.addEventListener(
|
||||
TilorswiftEvent.NEW_TERRAIN_CLICKED,
|
||||
() => {
|
||||
new DialogNewTerrain();
|
||||
}
|
||||
);
|
||||
|
||||
window.addEventListener(
|
||||
TilorswiftEvent.ADD_ROWS_CLICKED,
|
||||
() => {
|
||||
@@ -127,6 +134,15 @@ image.onload = function () {
|
||||
}
|
||||
);
|
||||
|
||||
window.addEventListener(
|
||||
TilorswiftEvent.NEW_TERRAIN,
|
||||
(event) => {
|
||||
terrain = new Terrain(tileset, event.tilesX, event.tilesY, event.backgroundColor);
|
||||
map.innerHTML = '';
|
||||
map.appendChild(terrain.getElement());
|
||||
}
|
||||
);
|
||||
|
||||
/* Prevents Firefox's annoying default drag and drop behavior for images */
|
||||
document.addEventListener(
|
||||
'dragstart',
|
||||
|
||||
Reference in New Issue
Block a user