2016-09-22 15:21:59 +08:00
|
|
|
const AutoLayout = {
|
2016-09-13 21:01:36 +08:00
|
|
|
nextX: 0,
|
|
|
|
nextY: 0,
|
|
|
|
sideLength: 1,
|
|
|
|
turnCount: 0,
|
|
|
|
nextXshift: 1,
|
|
|
|
nextYshift: 0,
|
|
|
|
timeToTurn: 0,
|
|
|
|
|
|
|
|
getNextCoord: function () {
|
|
|
|
var self = Metamaps.AutoLayout
|
|
|
|
var nextX = self.nextX
|
|
|
|
var nextY = self.nextY
|
|
|
|
|
|
|
|
var DISTANCE_BETWEEN = 120
|
|
|
|
|
|
|
|
self.nextX = self.nextX + DISTANCE_BETWEEN * self.nextXshift
|
|
|
|
self.nextY = self.nextY + DISTANCE_BETWEEN * self.nextYshift
|
|
|
|
|
|
|
|
self.timeToTurn += 1
|
|
|
|
// if true, it's time to turn
|
|
|
|
if (self.timeToTurn === self.sideLength) {
|
|
|
|
self.turnCount += 1
|
|
|
|
// if true, it's time to increase side length
|
|
|
|
if (self.turnCount % 2 === 0) {
|
|
|
|
self.sideLength += 1
|
|
|
|
}
|
|
|
|
self.timeToTurn = 0
|
|
|
|
|
|
|
|
// going right? turn down
|
|
|
|
if (self.nextXshift == 1 && self.nextYshift == 0) {
|
|
|
|
self.nextXshift = 0
|
|
|
|
self.nextYshift = 1
|
|
|
|
}
|
|
|
|
// going down? turn left
|
|
|
|
else if (self.nextXshift == 0 && self.nextYshift == 1) {
|
|
|
|
self.nextXshift = -1
|
|
|
|
self.nextYshift = 0
|
|
|
|
}
|
|
|
|
// going left? turn up
|
|
|
|
else if (self.nextXshift == -1 && self.nextYshift == 0) {
|
|
|
|
self.nextXshift = 0
|
|
|
|
self.nextYshift = -1
|
|
|
|
}
|
|
|
|
// going up? turn right
|
|
|
|
else if (self.nextXshift == 0 && self.nextYshift == -1) {
|
|
|
|
self.nextXshift = 1
|
|
|
|
self.nextYshift = 0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
x: nextX,
|
|
|
|
y: nextY
|
|
|
|
}
|
|
|
|
},
|
|
|
|
resetSpiral: function () {
|
|
|
|
var self = Metamaps.AutoLayout
|
|
|
|
self.nextX = 0
|
|
|
|
self.nextY = 0
|
|
|
|
self.nextXshift = 1
|
|
|
|
self.nextYshift = 0
|
|
|
|
self.sideLength = 1
|
|
|
|
self.timeToTurn = 0
|
|
|
|
self.turnCount = 0
|
|
|
|
}
|
|
|
|
}
|
2016-09-22 15:21:59 +08:00
|
|
|
|
|
|
|
export default AutoLayout
|