mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-21 13:26:10 +00:00
don't render territory on drag to make it smoother
This commit is contained in:
@@ -8,7 +8,7 @@ import { Layer } from "./Layer";
|
|||||||
import { TransformHandler } from "../TransformHandler";
|
import { TransformHandler } from "../TransformHandler";
|
||||||
import { EventBus } from "../../../core/EventBus";
|
import { EventBus } from "../../../core/EventBus";
|
||||||
import { initRemoteSender } from "../../../core/Consolex";
|
import { initRemoteSender } from "../../../core/Consolex";
|
||||||
import { AlternateViewEvent } from "../../InputHandler";
|
import { AlternateViewEvent, DragEvent, MouseDownEvent } from "../../InputHandler";
|
||||||
import { GameView } from "../../../core/GameView";
|
import { GameView } from "../../../core/GameView";
|
||||||
|
|
||||||
export class TerritoryLayer implements Layer {
|
export class TerritoryLayer implements Layer {
|
||||||
@@ -25,6 +25,8 @@ export class TerritoryLayer implements Layer {
|
|||||||
private highlightContext: CanvasRenderingContext2D
|
private highlightContext: CanvasRenderingContext2D
|
||||||
|
|
||||||
private alternativeView = false
|
private alternativeView = false
|
||||||
|
private lastDragTime = 0
|
||||||
|
private nodrawDragDuration = 200
|
||||||
|
|
||||||
|
|
||||||
constructor(private game: GameView, private eventBus: EventBus) {
|
constructor(private game: GameView, private eventBus: EventBus) {
|
||||||
@@ -67,6 +69,7 @@ export class TerritoryLayer implements Layer {
|
|||||||
init() {
|
init() {
|
||||||
this.eventBus.on(TileEvent, e => this.tileUpdate(e))
|
this.eventBus.on(TileEvent, e => this.tileUpdate(e))
|
||||||
this.eventBus.on(AlternateViewEvent, e => { this.alternativeView = e.alternateView })
|
this.eventBus.on(AlternateViewEvent, e => { this.alternativeView = e.alternateView })
|
||||||
|
this.eventBus.on(DragEvent, e => { this.lastDragTime = Date.now() })
|
||||||
this.redraw()
|
this.redraw()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,8 +105,10 @@ export class TerritoryLayer implements Layer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderLayer(context: CanvasRenderingContext2D) {
|
renderLayer(context: CanvasRenderingContext2D) {
|
||||||
this.renderTerritory()
|
if (Date.now() > this.lastDragTime + this.nodrawDragDuration) {
|
||||||
this.context.putImageData(this.imageData, 0, 0);
|
this.renderTerritory()
|
||||||
|
this.context.putImageData(this.imageData, 0, 0);
|
||||||
|
}
|
||||||
if (this.alternativeView) {
|
if (this.alternativeView) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -136,7 +141,6 @@ export class TerritoryLayer implements Layer {
|
|||||||
numToRender--
|
numToRender--
|
||||||
const tile = this.tileToRenderQueue.pop().tile
|
const tile = this.tileToRenderQueue.pop().tile
|
||||||
this.paintTerritory(tile)
|
this.paintTerritory(tile)
|
||||||
tile.neighbors().forEach(t => this.paintTerritory(t))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user