Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2014-06-10 21:14:29 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2014-06-16 15:26:38 (GMT)
commitfe454e524d09d0a2234ea2d3587436480b4d1078 (patch)
tree66baa0896d2f9a33eea081fd11dfbc1711ef2447
parent4c326b1140597b917b644926d92438637fc94b56 (diff)
Change velocity based on the angle, ad stop when game finish
Stop reading the accelerator when the game finish to preserve battery
-rw-r--r--game.py54
1 files changed, 35 insertions, 19 deletions
diff --git a/game.py b/game.py
index 359c971..5648241 100644
--- a/game.py
+++ b/game.py
@@ -88,6 +88,7 @@ class MazeGame(Gtk.DrawingArea):
logging.debug('Starting the game with: %s', state)
self.maze = Maze(**state)
+ self._ebook_mode_detector = sensors.EbookModeDetector()
self.reset()
self.frame = 0
@@ -127,12 +128,10 @@ class MazeGame(Gtk.DrawingArea):
Gdk.EventMask.TOUCH_MASK)
self.set_can_focus(True)
self.grab_focus()
- self._ebook_mode_detector = sensors.EbookModeDetector()
self._accelerometer = sensors.Accelerometer()
self._read_accelerator_id = None
if self._ebook_mode_detector.get_ebook_mode():
- self._read_accelerator_id = GObject.timeout_add(
- 200, self._read_accelerometer)
+ self._start_accelerometer()
self._ebook_mode_detector.connect('changed',
self._ebook_mode_changed_cb)
@@ -179,6 +178,8 @@ class MazeGame(Gtk.DrawingArea):
# self.screen.fill((0, 0, 0))
self.queue_draw()
self.mouse_in_use = 0
+ if self._ebook_mode_detector.get_ebook_mode():
+ self._start_accelerometer()
def __draw_cb(self, widget, ctx):
"""Draw the current state of the game.
@@ -305,15 +306,14 @@ class MazeGame(Gtk.DrawingArea):
def _ebook_mode_changed_cb(self, detector, ebook_mode):
if ebook_mode:
if self._read_accelerator_id is None:
- self._read_accelerator_id = GObject.timeout_add(
- 200, self._read_accelerometer)
+ self._start_accelerometer()
else:
self._read_accelerator_id = None
def _read_accelerometer(self):
x, y, z = self._accelerometer.read_position()
logging.error('read_acceleromter %s', (x, y, z))
- TRIGGER = 150
+ TRIGGER = 100
if abs(x) < TRIGGER:
x = 0
if abs(y) < TRIGGER:
@@ -321,18 +321,22 @@ class MazeGame(Gtk.DrawingArea):
player = self.localplayers[0]
player.hidden = False
- if x > 0:
- # RIGHT
- player.direction = (1, 0)
- if x < 0:
- # LEFT
- player.direction = (-1, 0)
- if y < 0:
- # UP
- player.direction = (0, -1)
- if y > 0:
- # DOWN
- player.direction = (0, 1)
+ if abs(x) > abs(y):
+ if x > 0:
+ # RIGHT
+ player.direction = (1, 0)
+ if x < 0:
+ # LEFT
+ player.direction = (-1, 0)
+ value = abs(x)
+ else:
+ if y < 0:
+ # UP
+ player.direction = (0, -1)
+ if y > 0:
+ # DOWN
+ player.direction = (0, 1)
+ value = abs(y)
if x == 0 and y == 0:
player.direction = (0, 0)
@@ -348,7 +352,19 @@ class MazeGame(Gtk.DrawingArea):
self.maze.GOAL:
self.finish(player)
self.queue_draw()
- return self._read_accelerator_id is not None
+
+ if self._ebook_mode_detector.get_ebook_mode() and \
+ player.elapsed is None:
+ next_read = 200 - int(100 * (float(value - TRIGGER) / 500))
+ if next_read < 20:
+ next_read = 20
+ self._start_accelerometer(delay=next_read)
+
+ return False
+
+ def _start_accelerometer(self, delay=200):
+ self._read_accelerator_id = GObject.timeout_add(
+ delay, self._read_accelerometer)
def __event_cb(self, widget, event):