Skip to content

Commit

Permalink
Juegos Funcionan dentro de la interfaz gtk
Browse files Browse the repository at this point in the history
  • Loading branch information
fdanesse committed Dec 5, 2014
1 parent eff9b39 commit 245e31d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 47 deletions.
81 changes: 35 additions & 46 deletions GameView.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import pygame
from Games.ug1.runme import Escena


class GameView(gtk.EventBox):

def __init__(self):
Expand All @@ -42,69 +43,57 @@ def __init__(self):
self.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"])
self.set_border_width(4)

self.game_widget = GameBox()

self.add(self.game_widget)
self.show_all()

def stop(self):
self.game_widget.stop()
self.hide()

def run(self, topic):
self.show()
self.game_widget.load(topic)


class GameBox(gtk.VBox):
def __init__(self):
gtk.VBox.__init__(self)
self.game = False
self.pump = False

self.pygamecanvas = sugargame2.canvas.PygameCanvas(self)
self.pygamecanvas.set_flags(gtk.EXPAND)
self.pygamecanvas.set_flags(gtk.FILL)

self.connect("visibility-notify-event", self.redraw)
self.pygamecanvas.set_events(gtk.gdk.BUTTON_PRESS_MASK)
self.pygamecanvas.connect("button-press-event", self.pygamecanvas.grab_focus)
self.pygamecanvas.connect(
"button-press-event", self.pygamecanvas.grab_focus)

self.add(self.pygamecanvas)
gobject.timeout_add(300, self.pump)

self.connect("expose-event", self.__redraw)
self.show_all()
self.pygamecanvas.run_pygame(self.run_game)

def redraw(self, *args, **kwargs):
scene = spyral.director.get_scene()
if scene:
scene.redraw()

def pump(self):
# Esto es necesario porque sino pygame acumula demasiados eventos.
pygame.event.pump()
def __redraw(self, widget):
try:
scene = spyral.director.get_scene()
if scene:
scene.redraw()
except:
pass
self.show_all()

def run_game(self):
spyral.director.init((700,700), fullscreen=False, max_fps=30)
def __run_game(self):
rect = self.get_allocation()
spyral.director.init((rect.width, rect.height), fullscreen=False, max_fps=30)
self.game = Escena(self)
spyral.director.push(self.game)
self.start()

def start(self):
if self.pump:
gobject.source_remove(self.pump)
self.pump = False
self.pump = gobject.timeout_add(300, self.__pump)
spyral.director.run(sugar = True)

def load(self, topic):
scene = spyral.director.get_scene()
scene.redraw()
self.show()
def __pump(self):
# FIXME: HACK porque sino pygame acumula demasiados eventos.
pygame.event.pump()
return True

def stop(self):
p = PauseScene()
spyral.director.push(p)
# FIXME: El juego debe detenerse y eliminarse.
if self.pump:
gobject.source_remove(self.pump)
self.pump = False
if self.game:
del(self.game)
self.game = False
self.hide()

class PauseScene(spyral.Scene):
def __init__(self):
spyral.Scene.__init__(self, (700, 700), 20, 20)
self.background = spyral.Image(size=(800, 800)).fill((0, 0, 0))

spyral.event.register("input.keyboard.down.*", spyral.director.pop)
def run(self, topic):
self.pygamecanvas.run_pygame(self.__run_game)
self.show()
2 changes: 1 addition & 1 deletion enfoli.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def __init__(self):
self.videoview.connect("game", self.__play_game)
self.connect("delete-event", self.__salir)

self.resize(700, 700)
self.resize(640, 480)
self.toolbar.buttons[0].set_active(True)

def __play_game(self, widget, topic):
Expand Down

0 comments on commit 245e31d

Please sign in to comment.