From 8f7882815b0e3ae486f06f9e0d8a14b3841a5fdb Mon Sep 17 00:00:00 2001 From: Agustin Zubiaga Date: Tue, 09 Oct 2012 21:26:39 +0000 Subject: Update glucosa Signed-off-by: Agustin Zubiaga --- diff --git a/glucosa.py b/glucosa.py index 978206b..303479b 100644 --- a/glucosa.py +++ b/glucosa.py @@ -363,7 +363,7 @@ class Sprite(gobject.GObject): x = property(get_x, set_x, doc="Define la posicion horizonal") y = property(get_y, set_y, doc="Define la posicion vertical") - + def get_left(self): return self.x - (self.image.width * self.scale / 2) @@ -393,8 +393,8 @@ class Sprite(gobject.GObject): top = property(get_top, set_top, doc="Define la posición superior del Sprite") bottom = property(get_bottom, set_bottom, doc="Define la posición inferior del Sprite") - - + + class Text: """Muestra un texto en la pantalla. @@ -479,17 +479,17 @@ class Events(gobject.GObject): """ - # No funciona con gobject: + # No funciona con gobject: # Solo puede existir una instancia de este objeto en el programa. #__metaclass__ = Singleton __gsignals__ = {'mouse-moved': (gobject.SIGNAL_RUN_FIRST, None, [object]), - 'mouse-button-pressed': (gobject.SIGNAL_RUN_FIRST, None, [object]), - 'mouse-button-released': (gobject.SIGNAL_RUN_FIRST, None, [object]), - 'mouse-scroll-up': (gobject.SIGNAL_RUN_FIRST, None, [object]), - 'mouse-scroll-down': (gobject.SIGNAL_RUN_FIRST, None, [object]), - 'key-pressed': (gobject.SIGNAL_RUN_FIRST, None, []), - 'key-released': (gobject.SIGNAL_RUN_FIRST, None, [])} + 'mouse-button-pressed': (gobject.SIGNAL_RUN_FIRST, None, [object]), + 'mouse-button-released': (gobject.SIGNAL_RUN_FIRST, None, [object]), + 'mouse-scroll-up': (gobject.SIGNAL_RUN_FIRST, None, [object]), + 'mouse-scroll-down': (gobject.SIGNAL_RUN_FIRST, None, [object]), + 'key-pressed': (gobject.SIGNAL_RUN_FIRST, None, []), + 'key-released': (gobject.SIGNAL_RUN_FIRST, None, [])} def __init__(self, widget): gobject.GObject.__init__(self) @@ -497,17 +497,17 @@ class Events(gobject.GObject): self._widget = widget # Conectamos los eventos de GTK. - self._widget.area.connect('motion-notify-event', + self._widget.connect('motion-notify-event', self._mouse_move) - self._widget.area.connect('button-press-event', + self._widget.connect('button-press-event', self._mouse_button_press) - self._widget.area.connect('button-release-event', + self._widget.connect('button-release-event', self._mouse_button_released) - self._widget.area.connect('key-press-event', + self._widget.connect('key-press-event', self._key_pressed) - self._widget.area.connect('key-release-event', + self._widget.connect('key-release-event', self._key_released) - self._widget.area.connect('scroll-event', + self._widget.connect('scroll-event', self._mouse_scroll) self._keys_pressed = [] @@ -736,8 +736,7 @@ class Pencil: context.stroke() - -class GameArea(gtk.Fixed): +class GameArea(gtk.DrawingArea): """Es el area donde el juego se dibujará Permite ser embebida en cualquier contenedor de gtk, ya que es un @@ -755,38 +754,32 @@ class GameArea(gtk.Fixed): } def __init__(self): - gtk.Fixed.__init__(self) + gtk.DrawingArea.__init__(self) self.sprites = [] self._timeout = None - self.background = gtk.Image() - self.add(self.background) + self._backgroud = None - self.area = gtk.DrawingArea() - self.add(self.area) - - self.area.connect("expose-event", self._on_draw) + self.connect("expose-event", self._on_draw) - self.area.set_events(gtk.gdk.BUTTON_PRESS_MASK + self.set_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.KEY_RELEASE_MASK | gtk.gdk.KEY_PRESS_MASK | gtk.gdk.POINTER_MOTION_MASK) - self.area.set_flags(gtk.CAN_FOCUS) - - self.show_all() + self.set_flags (gtk.CAN_FOCUS) def add_sprite(self, sprite): """Agrega un sprite a el area de juego""" self.sprites.append(sprite) sprite.connect('update', self._update) - - def set_background(self, path, width, height): + + def set_background(self, background): """Define el fondo del area de juego""" - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(path, width, height) - self.background.set_from_pixbuf(pixbuf) + self._background = background + self.queue_draw() def set_update_loop(self, fps=60): """Define un bucle de actualizacion si fps = -1 el bucle se detendra @@ -805,7 +798,7 @@ class GameArea(gtk.Fixed): for sprite in self.sprites: sprite.update() - gobject.idle_add(self.area.queue_draw) + gobject.idle_add(self.queue_draw) return True def _on_draw(self, widget, event): @@ -813,6 +806,11 @@ class GameArea(gtk.Fixed): window_size = self.get_window().get_size() fill(context, (50,50,50), window_size) + # Dibuja el fondo + if self._backgroud: + self._backgroud.blit(context, 0, 0, scale=1, rotation=0, anchor_x=0, + anchor_y=0, flip=False) + # Se encarga de dibujar los sprites for sprite in self.sprites: sprite.draw(context) -- cgit v0.9.1