65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
|
|
/*
|
|
|
|
We call displacement to the offset we can produce to the object which the displcement object is is a child from.
|
|
The displacement is a vector that displaces everything static drawn on on the context of the parent object.
|
|
|
|
*/
|
|
|
|
function newDisplacement () {
|
|
let displacement = {
|
|
containerName: '', // This is for debugging purposes only.
|
|
parentDisplacement: undefined, // Here we store the displacement object of the parent cointainer, if exists.
|
|
container: undefined,
|
|
x: 0, // This is the actual x displacement.
|
|
y: 0, // This is the actual y displacement.
|
|
displace: displace,
|
|
undisplaceThisPoint: undisplaceThisPoint,
|
|
displaceThisPoint: displaceThisPoint
|
|
}
|
|
|
|
return displacement
|
|
|
|
function displace (amountX, amountY) {
|
|
/* First we check if by allowing this displacement we would produce the current frame to be beyond its limit. */
|
|
|
|
tempDisplacement = newDisplacement()
|
|
tempDisplacement.x = amountX
|
|
tempDisplacement.y = amountY
|
|
|
|
if (this.container.frame.canYouMoveHere(tempDisplacement)) {
|
|
/* Now we displace */
|
|
|
|
displacement.x = displacement.x + amountX
|
|
displacement.y = displacement.y + amountY
|
|
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
function displaceThisPoint (point) {
|
|
if (this.parentDisplacement !== undefined) {
|
|
point = this.parentDisplacement.displaceThisPoint(point)
|
|
}
|
|
|
|
point.x = point.x + displacement.x
|
|
point.y = point.y + displacement.y
|
|
|
|
return point
|
|
}
|
|
|
|
function undisplaceThisPoint (point) {
|
|
if (this.parentDisplacement !== undefined) {
|
|
point = this.parentDisplacement.undisplaceThisPoint(point)
|
|
}
|
|
|
|
point.x = point.x - displacement.x
|
|
point.y = point.y - displacement.y
|
|
|
|
return point
|
|
}
|
|
}
|
|
|