export class TMRConstants { constructor({ size = 64 }) { // tailles this.size = size this.half = this.size / 2 this.quarter = this.size / 4 this.third = this.size / 3 this.twoThird = this.size * 2 / 3 this.full = this.size // positions this.col1_y = this.half this.col2_y = this.size this.cellw = this.size this.cellh = this.size this.gridx = this.half this.gridy = this.half // decallages this.center = { x: 0, y: 0 } this.top = { x: 0, y: -this.quarter } this.topLeft = { x: -this.quarter, y: -this.quarter } this.left = { x: -this.quarter, y: 0 } this.bottomLeft = { x: -this.quarter, y: this.quarter } this.bottom = { x: 0, y: this.quarter } this.bottomRight = { x: this.quarter, y: this.quarter } this.right = { x: this.quarter, y: 0 } this.topRight = { x: this.quarter, y: -this.quarter } this.marginx = 1 this.marginy = 1 } decallage(x, y) { return { x: x * this.third, y: y * this.third } } computeEventPosition(event) { if (!event.nativeEvent.target.getBoundingClientRect) { return { x: 0, y: 0 } } const canvasRect = event.nativeEvent.target.getBoundingClientRect(); return { x: event.nativeEvent.clientX - canvasRect.left, y: event.nativeEvent.clientY - canvasRect.top } } computeEventOddq(event) { var { x, y } = this.computeEventPosition(event); return this.computeOddq(x, y); } computeOddq(x, y) { const col = Math.floor(x / this.cellw) const decallageColonne = col % 2 == 0 ? this.col1_y : this.col2_y const row = Math.floor((y - decallageColonne) / this.cellh) return { col, row, x, y } } } // couleurs export const tmrColors = { sort: 0xFF8800, tetes: 0xA000FF, souffle: 0x804040, queues: 0xAA4040, trounoir: 0x401060, demireve: 0x00FFEE, rencontre: 0xFF0000, casehumide: 0x1050F0, } export const tmrTokenZIndex = { casehumide: 10, tetes: 20, sort: 30, conquete: 40, rencontre: 50, trounoir: 60, demireve: 70, tooltip: 100, }