/* 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() { var 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; } }