mirror of
https://git.leinelab.org/Mal/mr-crocs-adventures.git
synced 2025-09-11 02:57:36 +02:00
Graveyard terrain and background tiles implemented
This commit is contained in:
@@ -5,6 +5,7 @@ import Brush from "./Brush.js";
|
||||
import Tileset from "./Tileset.js";
|
||||
import WidgetBar from "./menu/WidgetBar.js";
|
||||
import TilesetPickerWidget from "./menu/TilesetPickerWidget.js";
|
||||
import BackgroundPickerWidget from "./menu/BackgroundPickerWidget.js";
|
||||
import EntrancePointWidget from "./menu/EntrancePointWidget.js";
|
||||
import TargetPointWidget from "./menu/TargetPointWidget.js";
|
||||
import Mouse from "./Mouse.js";
|
||||
@@ -38,8 +39,8 @@ export default class Tilorswift
|
||||
{
|
||||
static EFFECT_NAMES = {
|
||||
[SnowEffect.NAME]: 'Schnee',
|
||||
[RainEffect.NAME]: 'Regen',
|
||||
[ThunderstormEffect.NAME]: 'Gewitter',
|
||||
[RainEffect.NAME]: 'Regen',
|
||||
[ThunderstormEffect.NAME]: 'Gewitter',
|
||||
}
|
||||
|
||||
constructor(level) {
|
||||
@@ -52,6 +53,8 @@ export default class Tilorswift
|
||||
this.widgetBar.addWidget(this.tilesetPicker);
|
||||
this.intelligentBrushSwitch = new IntelligentBrushSwitch(this.tilesetPicker, this.brush);
|
||||
this.widgetBar.addWidget(this.intelligentBrushSwitch);
|
||||
this.backgroundPicker = new BackgroundPickerWidget(this.tileset, this.brush);
|
||||
this.widgetBar.addWidget(this.backgroundPicker);
|
||||
this.entrancePicker = new EntrancePointWidget(this.widgetBar, this.brush);
|
||||
this.widgetBar.addWidget(this.entrancePicker);
|
||||
this.targetPicker = new TargetPointWidget(this.widgetBar, this.brush);
|
||||
@@ -77,7 +80,7 @@ export default class Tilorswift
|
||||
|
||||
const menuLevel = new MenuGroup('Level');
|
||||
menuLevel.addMenuEntry(new MainMenuEntry('Gravitation...', TilorswiftMenuGravityClickedEvent));
|
||||
menuLevel.addMenuEntry(new MainMenuEntry('Effekte...', TilorswiftMenuEffectsClickedEvent));
|
||||
menuLevel.addMenuEntry(new MainMenuEntry('Effekte...', TilorswiftMenuEffectsClickedEvent));
|
||||
this.mainbar.addMenuGroup(menuLevel);
|
||||
|
||||
document.body.appendChild(this.mainbar.getElement());
|
||||
@@ -109,7 +112,7 @@ export default class Tilorswift
|
||||
targetY: this.level.getTargetY(),
|
||||
gravity: this.level.gravity,
|
||||
matrix: matrix,
|
||||
effects: this.level.fullscreenEffects.map((effect) => {return effect.getName()}),
|
||||
effects: this.level.fullscreenEffects.map((effect) => {return effect.getName()}),
|
||||
};
|
||||
|
||||
return JSON.stringify(data);
|
||||
@@ -119,7 +122,6 @@ export default class Tilorswift
|
||||
{
|
||||
const dialog = new LoadLevelDialog();
|
||||
dialog.onLoad = (json) => {
|
||||
console.log(json);
|
||||
this.tileset = new Tileset(JSON.parse(json).tileset);
|
||||
this.level = Level.createFromJson(json);
|
||||
this.loadLevel();
|
||||
@@ -142,6 +144,7 @@ export default class Tilorswift
|
||||
this.map.innerHTML = '';
|
||||
this.map.appendChild(this.level.terrain.getElement());
|
||||
this.tilesetPicker.reloadTileset(this.tileset);
|
||||
this.backgroundPicker.reloadTileset(this.tileset);
|
||||
|
||||
this.initializeIntelligentBrushWidget();
|
||||
}
|
||||
@@ -222,10 +225,15 @@ export default class Tilorswift
|
||||
}
|
||||
}
|
||||
|
||||
addBackground(field)
|
||||
{
|
||||
field.setIndex(this.level.terrain.brushTileIndex);
|
||||
}
|
||||
|
||||
updateNeighbours(field)
|
||||
{
|
||||
for (const neighbour of this.level.terrain.getFieldNeighbours(field)) {
|
||||
if (neighbour.index === -1) {
|
||||
if (neighbour.index <= -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -262,15 +270,24 @@ export default class Tilorswift
|
||||
this.removeTerrain(event.getField());
|
||||
break;
|
||||
}
|
||||
} else if (this.brush.mode === BrushMode.BACKGROUND && !event.getField().isEntrancePoint) {
|
||||
switch (event.button) {
|
||||
case 0:
|
||||
this.addBackground(event.getField());
|
||||
break;
|
||||
case 2:
|
||||
this.removeTerrain(event.getField());
|
||||
break;
|
||||
}
|
||||
} else if (this.brush.mode === BrushMode.ENTRANCE) {
|
||||
if (event.getField().index === -1) {
|
||||
if (event.getField().index < 0) {
|
||||
const coordinates = this.level.terrain.getFieldCoordinates(event.getField());
|
||||
this.level.terrain.setEntrancePoint(coordinates.x, coordinates.y);
|
||||
this.brush.mode = BrushMode.TERRAIN;
|
||||
this.widgetBar.enableWidgets();
|
||||
}
|
||||
} else if (this.brush.mode === BrushMode.EXIT) {
|
||||
if (event.getField().index === -1) {
|
||||
if (event.getField().index < 0) {
|
||||
const coordinates = this.level.terrain.getFieldCoordinates(event.getField());
|
||||
this.level.terrain.setTargetPoint(coordinates.x, coordinates.y);
|
||||
this.brush.mode = BrushMode.TERRAIN;
|
||||
@@ -291,7 +308,14 @@ export default class Tilorswift
|
||||
TilorswiftEvent.FIELD_ENTERED,
|
||||
(event) => {
|
||||
if (this.mouse.isPressedLeft) {
|
||||
this.addTerrain(event.getField());
|
||||
switch (this.brush.mode) {
|
||||
case BrushMode.TERRAIN:
|
||||
this.addTerrain(event.getField());
|
||||
break;
|
||||
case BrushMode.BACKGROUND:
|
||||
this.addBackground(event.getField());
|
||||
break;
|
||||
}
|
||||
} else if (this.mouse.isPressedRight) {
|
||||
event.getField().setIndex(-1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user