mirror of
https://git.leinelab.org/Mal/mr-crocs-adventures.git
synced 2025-09-11 02:57:36 +02:00
Intelligent graphic sets implemented
This commit is contained in:
@@ -26,6 +26,7 @@ import DialogAddColumns from "./dialog/DialogAddColumns.js";
|
||||
import Terrain from "./Terrain.js";
|
||||
import TilorswiftSavedEvent from "./events/TilorswiftSavedEvent.js";
|
||||
import Level from "../../js/Level.js";
|
||||
import {IntelligentBrushSwitch} from "./menu/IntelligentBrushSwitch.js";
|
||||
|
||||
export default class Tilorswift
|
||||
{
|
||||
@@ -37,6 +38,8 @@ export default class Tilorswift
|
||||
this.widgetBar = new WidgetBar('widget-bar');
|
||||
this.tilesetPicker = new TilesetPickerWidget(this.tileset, this.brush);
|
||||
this.widgetBar.addWidget(this.tilesetPicker);
|
||||
this.intelligentBrushSwitch = new IntelligentBrushSwitch(this.tilesetPicker, this.brush);
|
||||
this.widgetBar.addWidget(this.intelligentBrushSwitch);
|
||||
this.entrancePicker = new EntrancePointWidget(this.widgetBar, this.brush);
|
||||
this.widgetBar.addWidget(this.entrancePicker);
|
||||
this.targetPicker = new TargetPointWidget(this.widgetBar, this.brush);
|
||||
@@ -124,6 +127,8 @@ export default class Tilorswift
|
||||
this.map.innerHTML = '';
|
||||
this.map.appendChild(this.level.terrain.getElement());
|
||||
this.tilesetPicker.reloadTileset(this.tileset);
|
||||
|
||||
this.initializeIntelligentBrushWidget();
|
||||
}
|
||||
|
||||
saveLevelToFile()
|
||||
@@ -155,6 +160,63 @@ export default class Tilorswift
|
||||
return true;
|
||||
}
|
||||
|
||||
initializeIntelligentBrushWidget()
|
||||
{
|
||||
if (this.tileset.hasExtendedTiles()) {
|
||||
this.intelligentBrushSwitch.enable();
|
||||
this.intelligentBrushSwitch.switchOn();
|
||||
} else {
|
||||
this.intelligentBrushSwitch.switchOff();
|
||||
this.intelligentBrushSwitch.disable();
|
||||
}
|
||||
}
|
||||
|
||||
createNewTerrain(tilesetIndex, tilesX, tilesY)
|
||||
{
|
||||
this.tileset = new Tileset(tilesetIndex);
|
||||
this.level.terrain = new Terrain(this.tileset, tilesX, tilesY, GraphicSet[tilesetIndex].backgroundColor);
|
||||
|
||||
document.body.style.backgroundColor = this.level.getBackgroundColor();
|
||||
|
||||
if (GraphicSet[tilesetIndex].backgroundImage !== null) {
|
||||
document.body.style.backgroundImage = 'url("../' + Setting.GRAPHICS_LOCATION + GraphicSet[tilesetIndex].backgroundImage + '")';
|
||||
} else {
|
||||
document.body.style.backgroundImage = 'none';
|
||||
}
|
||||
|
||||
this.map.innerHTML = '';
|
||||
this.map.appendChild(this.level.terrain.getElement());
|
||||
|
||||
this.tilesetPicker.reloadTileset(this.tileset);
|
||||
|
||||
this.initializeIntelligentBrushWidget();
|
||||
}
|
||||
|
||||
addTerrain(field)
|
||||
{
|
||||
if (this.brush.isIntelligent) {
|
||||
const index = this.level.terrain.brushTileIndex + this.tileset.primaryTiles * this.tileset.getTileIndexFactor(
|
||||
this.level.terrain.getFieldNeighbourCode(field)
|
||||
);
|
||||
|
||||
field.setIndex(index % this.tileset.tiles);
|
||||
|
||||
for (const neighbour of this.level.terrain.getFieldNeighbours(field)) {
|
||||
if (neighbour.index === -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const neighbourIndex = (neighbour.index % this.tileset.primaryTiles) + this.tileset.primaryTiles * this.tileset.getTileIndexFactor(
|
||||
this.level.terrain.getFieldNeighbourCode(neighbour)
|
||||
);
|
||||
|
||||
neighbour.setIndex(neighbourIndex);
|
||||
}
|
||||
} else {
|
||||
field.setIndex(this.level.terrain.brushTileIndex);
|
||||
}
|
||||
}
|
||||
|
||||
addEventListeners()
|
||||
{
|
||||
window.addEventListener(
|
||||
@@ -163,7 +225,7 @@ export default class Tilorswift
|
||||
if (this.brush.mode === BrushMode.TERRAIN && !event.getField().isEntrancePoint) {
|
||||
switch (event.button) {
|
||||
case 0:
|
||||
event.getField().setIndex(this.level.terrain.brushTileIndex);
|
||||
this.addTerrain(event.getField());
|
||||
break;
|
||||
case 2:
|
||||
event.getField().setIndex(-1);
|
||||
@@ -198,7 +260,7 @@ export default class Tilorswift
|
||||
TilorswiftEvent.FIELD_ENTERED,
|
||||
(event) => {
|
||||
if (this.mouse.isPressedLeft) {
|
||||
event.getField().setIndex(this.level.terrain.brushTileIndex);
|
||||
this.addTerrain(event.getField());
|
||||
} else if (this.mouse.isPressedRight) {
|
||||
event.getField().setIndex(-1);
|
||||
}
|
||||
@@ -257,19 +319,7 @@ export default class Tilorswift
|
||||
window.addEventListener(
|
||||
TilorswiftEvent.NEW_TERRAIN,
|
||||
(event) => {
|
||||
this.tileset = new Tileset(event.tilesetIndex);
|
||||
this.level.terrain = new Terrain(this.tileset, event.tilesX, event.tilesY, GraphicSet[event.tilesetIndex].backgroundColor);
|
||||
|
||||
document.body.style.backgroundColor = this.level.getBackgroundColor();
|
||||
|
||||
if (GraphicSet[event.tilesetIndex].backgroundImage !== null) {
|
||||
document.body.style.backgroundImage = 'url("../' + Setting.GRAPHICS_LOCATION + GraphicSet[event.tilesetIndex].backgroundImage + '")';
|
||||
} else {
|
||||
document.body.style.backgroundImage = 'none';
|
||||
}
|
||||
this.map.innerHTML = '';
|
||||
this.map.appendChild(this.level.terrain.getElement());
|
||||
this.tilesetPicker.reloadTileset(this.tileset);
|
||||
this.createNewTerrain(event.tilesetIndex, event.tilesX, event.tilesY);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user