diff options
| author | Julie Lala <jules@okfoc.us> | 2014-04-29 03:47:32 -0400 |
|---|---|---|
| committer | Julie Lala <jules@okfoc.us> | 2014-04-29 03:47:32 -0400 |
| commit | c89f1107041a4ac8a513e4e2e7c1c3da984b1c59 (patch) | |
| tree | bbf94e2d7239193d8339e243d2489bb945cd2baf /assets/javascripts/rectangles/models/wall.js | |
| parent | aca59762480289d1cded7ebb53004b415d8d68ca (diff) | |
dragging between walls
Diffstat (limited to 'assets/javascripts/rectangles/models/wall.js')
| -rw-r--r-- | assets/javascripts/rectangles/models/wall.js | 75 |
1 files changed, 72 insertions, 3 deletions
diff --git a/assets/javascripts/rectangles/models/wall.js b/assets/javascripts/rectangles/models/wall.js index baaac43..97083c7 100644 --- a/assets/javascripts/rectangles/models/wall.js +++ b/assets/javascripts/rectangles/models/wall.js @@ -2,6 +2,7 @@ window.Wall = (function(){ var Wall = function(opt){ this.id = opt.id + this.uid = Uid() this.room = opt.room this.rect = opt.rect || new Rect (0,0,0,0) this.rect.sides = opt.side @@ -32,6 +33,9 @@ window.Wall = (function(){ base.$walls.bind({ mouseover: function(){ }, + mouseenter: function(e){ + scenery.mouse.mouseenter(e, base) + }, mousemove: function(e){ }, mousedown: function(){ @@ -45,17 +49,82 @@ window.Wall = (function(){ return new Rect( new vec2( coord.a + img.width/2, coord.b - img.width/2 ), new vec2( img.height/2, clipper.rooms[this.room].height - img.height/2 ) ) } + Wall.prototype.fits = function(img){ + if (this.side & FRONT_BACK && this.rect.x.length() < img.width) { + return false + } + if (this.side & LEFT_RIGHT && this.rect.y.length() < img.width) { + return false + } + return true + } + + Wall.prototype.center_for = function(img, gravity){ + var left + gravity = gravity || 0 + + var major_axis, minor_axis + if (this.side & FRONT_BACK) { + major_axis = this.rect.x + minor_axis = this.rect.y + } + else { + minor_axis = this.rect.x + major_axis = this.rect.y + } + + // left side addition + if (gravity > 0) { + console.log("gravity left") + left = major_axis.b - img.width/2 + } + // right side addition + else if (gravity < 0) { + console.log("gravity right") + left = major_axis.a + img.width/2 + } + else { + left = major_axis.midpoint() + } + + switch (this.side) { + case FRONT: + x = left + z = minor_axis.a + 10 + break + case BACK: + x = left + z = minor_axis.b - 10 + break + case LEFT: + x = minor_axis.a + 10 + z = left + break + case RIGHT: + x = minor_axis.b - 10 + z = left + break + } + + return new vec2 (x, z) + } Wall.prototype.color = function(color){ this.$walls && this.$walls.css("background-color", color) } - Wall.prototype.randomize_colors = function(){ + Wall.prototype.siblings = function(){ var base = this var match = base.side | base.half_side - var walls = clipper.rooms[this.room].walls.filter(function(w){ return (w.side | w.half_side) & match }) + var walls = clipper.rooms[this.room].walls.filter(function(w){ + return (w.side | w.half_side) & match + }) + return walls; + } + + Wall.prototype.randomize_colors = function(){ var color = choice(window.colors) - walls.forEach(function(w){ w.color(color) }) + this.siblings().forEach(function(w){ w.color(color) }) } return Wall |
