fix click detection

This commit is contained in:
dank074 2021-12-04 22:42:48 -06:00
parent aac2c49469
commit a33f06ad27
2 changed files with 14 additions and 17 deletions

View File

@ -6,7 +6,7 @@
width: 100%; width: 100%;
height: 300px; height: 300px;
min-height: 300px; min-height: 300px;
overflow-x: scroll; overflow: scroll;
} }
.color { .color {

View File

@ -43,7 +43,7 @@ export class FloorplanEditor extends PixiApplicationProxy
this._width = 0; this._width = 0;
this._height = 0; this._height = 0;
this._isHolding = false; this._isHolding = false;
this._lastUsedTile = new NitroPoint(-1,-1); this._lastUsedTile = new NitroPoint(-1, -1);
this._actionSettings = new ActionSettings(); this._actionSettings = new ActionSettings();
} }
@ -52,7 +52,7 @@ export class FloorplanEditor extends PixiApplicationProxy
if(!this._isInitialized) if(!this._isInitialized)
{ {
this.loader.add('tiles', GetConfiguration<string>('floorplan.tile.url')); this.loader.add('tiles', GetConfiguration<string>('floorplan.tile.url'));
this.loader.load((_, resources) => this.loader.load((_, resources) =>
{ {
this._tilemapRenderer = new NitroTilemap(resources['tiles'].spritesheet.baseTexture); this._tilemapRenderer = new NitroTilemap(resources['tiles'].spritesheet.baseTexture);
@ -127,9 +127,8 @@ export class FloorplanEditor extends PixiApplicationProxy
const bufIndex = j + bufSize; const bufIndex = j + bufSize;
const data = buffer.slice(j, bufIndex); const data = buffer.slice(j, bufIndex);
const width = data[4]; const width = TILE_SIZE;
const height = data[5]; const height = TILE_SIZE / 2;
const mousePositionX = Math.floor(tempPoint.x); const mousePositionX = Math.floor(tempPoint.x);
const mousePositionY = Math.floor(tempPoint.y); const mousePositionY = Math.floor(tempPoint.y);
@ -137,12 +136,11 @@ export class FloorplanEditor extends PixiApplicationProxy
const tileStartX = data[2]; const tileStartX = data[2];
const tileStartY = data[3]; const tileStartY = data[3];
const centreX = tileStartX + (width / 2); const centreX = tileStartX + (width / 2);
const centreY = tileStartY + (height / 2); const centreY = tileStartY + (height / 2);
const dx = Math.abs(mousePositionX - centreX - 2); const dx = Math.abs(mousePositionX - centreX);
const dy = Math.abs(mousePositionY - centreY - 2); const dy = Math.abs(mousePositionY - centreY);
const solution = (dx / (width * 0.5) + dy / (height * 0.5) <= 1);//todo: improve this const solution = (dx / (width * 0.5) + dy / (height * 0.5) <= 1);//todo: improve this
if(solution) if(solution)
@ -171,7 +169,6 @@ export class FloorplanEditor extends PixiApplicationProxy
return false; return false;
} }
private onClick(x: number, y: number): void private onClick(x: number, y: number): void
{ {
const tile = this._tilemap[y][x]; const tile = this._tilemap[y][x];
@ -212,7 +209,7 @@ export class FloorplanEditor extends PixiApplicationProxy
{ {
if((x + 1) > this._width) this._width = x + 1; if((x + 1) > this._width) this._width = x + 1;
if( (y + 1) > this._height) this._height = y + 1; if((y + 1) > this._height) this._height = y + 1;
} }
const newHeight = HEIGHT_SCHEME[futureHeightIndex]; const newHeight = HEIGHT_SCHEME[futureHeightIndex];
@ -229,7 +226,7 @@ export class FloorplanEditor extends PixiApplicationProxy
public renderTiles(): void public renderTiles(): void
{ {
this.tilemapRenderer.clear(); this.tilemapRenderer.clear();
for(let y = 0; y < this._tilemap.length; y++) for(let y = 0; y < this._tilemap.length; y++)
{ {
for(let x = 0; x < this.tilemap[y].length; x++) for(let x = 0; x < this.tilemap[y].length; x++)
@ -237,13 +234,13 @@ export class FloorplanEditor extends PixiApplicationProxy
const tile = this.tilemap[y][x]; const tile = this.tilemap[y][x];
let assetName = tile.height; let assetName = tile.height;
if(this._doorLocation.x === x && this._doorLocation.y === y) if(this._doorLocation.x === x && this._doorLocation.y === y)
assetName = FloorplanEditor.TILE_DOOR; assetName = FloorplanEditor.TILE_DOOR;
if(tile.isBlocked) assetName = FloorplanEditor.TILE_BLOCKED; if(tile.isBlocked) assetName = FloorplanEditor.TILE_BLOCKED;
//if((tile.height === 'x') || tile.height === 'X') continue; //if((tile.height === 'x') || tile.height === 'X') continue;
const [positionX, positionY ] = getScreenPositionForTile(x, y); const [positionX, positionY] = getScreenPositionForTile(x, y);
this._tilemapRenderer.tile(`${assetName}.png`, positionX, positionY); this._tilemapRenderer.tile(`${assetName}.png`, positionX, positionY);
} }
} }
@ -337,10 +334,10 @@ export class FloorplanEditor extends PixiApplicationProxy
if(tile.height !== 'x') if(tile.height !== 'x')
{ {
if( (x + 1) > this._width) if((x + 1) > this._width)
this._width = x + 1; this._width = x + 1;
if( (y + 1) > this._height) if((y + 1) > this._height)
this._height = y + 1; this._height = y + 1;
} }
} }