87 lines
2.0 KiB
JavaScript
87 lines
2.0 KiB
JavaScript
|
|
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,
|
|
}
|
|
|