From c686ad55aca4f689c1859a93ded2b270b44be8ac Mon Sep 17 00:00:00 2001 From: Joonas Reynders Date: Sun, 13 May 2012 21:26:42 +0300 Subject: [PATCH] Mutable point --- src/main/scala/grambers/Observer.scala | 14 ++++++++++---- src/main/scala/grambers/Shape.scala | 8 ++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/scala/grambers/Observer.scala b/src/main/scala/grambers/Observer.scala index a4e0ca2..2b6737f 100755 --- a/src/main/scala/grambers/Observer.scala +++ b/src/main/scala/grambers/Observer.scala @@ -1,9 +1,7 @@ package grambers -import java.lang.System._ import javax.swing._ import java.awt._ -import java.awt.image._ import Util.log class Camera { @@ -66,6 +64,8 @@ class Observer (var w: Int, var h: Int, val universe : Universe, var thingInFocu } } + var centerPoint = new Point(0, 0) + def drawUniverse(g2 : Graphics2D) { if (Config.limitFps) @@ -77,8 +77,14 @@ class Observer (var w: Int, var h: Int, val universe : Universe, var thingInFocu log.warn("bgImage width " + bgImage.image.getWidth + " is not window width " + w) g2.drawImage(bgImage.image, 0, 0, null) - universe.staticThings.foreach(thing => thing.draw(g2, thing.center + Point(xViewTranslation, yViewTranslation))) - universe.movingThings.foreach(thing => thing.draw(g2, thing.center + Point(xViewTranslation, yViewTranslation))) + + universe.staticThings.foreach{ thing => + thing.draw(g2, centerPoint.set(thing.center.x + xViewTranslation, thing.center.y + yViewTranslation)) + } + + universe.movingThings.foreach{ thing => + thing.draw(g2, centerPoint.set(thing.center.x + xViewTranslation, thing.center.y + yViewTranslation)) + } Config.fps += 1 } diff --git a/src/main/scala/grambers/Shape.scala b/src/main/scala/grambers/Shape.scala index 31cab3b..6f616a0 100755 --- a/src/main/scala/grambers/Shape.scala +++ b/src/main/scala/grambers/Shape.scala @@ -12,7 +12,7 @@ abstract class Shape(val center : Point) { def this(x : Int, y : Int) = this(new Point(x, y)) } -class Point(val x : Int, val y : Int) { +class Point(var x : Int, var y : Int) { def +(i : Int) : Point = { return(Point(x + i, y + i)) @@ -30,7 +30,11 @@ class Point(val x : Int, val y : Int) { return(Point(x - other.x, y - other.y)) } - implicit def IntToPoint(i:Int) : Point = new Point(i, i) + def set(fromX : Int, fromY : Int) : Point = { + this.x = fromX; + this.y = fromY; + this + } override def equals(that : Any) = that match { case point : Point => (this.x == point.x && this.y == point.y)