# HG changeset patch # User Jeremy Thurgood # Date 1282654282 -7200 # Node ID 13d8cb1d596251a250f540eca36edd4c811e8243 # Parent 1a55d10c046988b71ca7c478fd29cd98b944b27e Better cursor handling using draw_all() and mouse_delta(). diff -r 1a55d10c0469 -r 13d8cb1d5962 gamelib/cursor.py --- a/gamelib/cursor.py Tue Aug 24 14:45:54 2010 +0200 +++ b/gamelib/cursor.py Tue Aug 24 14:51:22 2010 +0200 @@ -28,8 +28,8 @@ self._cursor_group = RenderUpdates() self._cursor_name = '' - def draw_over(self, _surface): - Widget.draw_over(self, _surface) + def draw_all(self, _surface): + Widget.draw_all(self, _surface) surface = self.get_root().surface if self.rect.collidepoint(mouse.get_pos()): cursor = self.get_sprite_cursor() @@ -45,7 +45,7 @@ self._cursor_group.update() self._cursor_group.draw(surface) - def mouse_move(self, event): + def mouse_delta(self, event): self.invalidate() def get_sprite_cursor(self): diff -r 1a55d10c0469 -r 13d8cb1d5962 gamelib/gamescreen.py --- a/gamelib/gamescreen.py Tue Aug 24 14:45:54 2010 +0200 +++ b/gamelib/gamescreen.py Tue Aug 24 14:51:22 2010 +0200 @@ -20,13 +20,12 @@ from widgets import BoomLabel -class InventoryView(PaletteView, CursorWidget): +class InventoryView(PaletteView): sel_color = Color("yellow") sel_width = 2 def __init__(self, state, handbutton): - CursorWidget.__init__(self) PaletteView.__init__(self, (BUTTON_SIZE, BUTTON_SIZE), 1, 6, scrolling=True) self.state = state self.handbutton = handbutton @@ -38,10 +37,6 @@ item_image = self.state.inventory[item_no].get_inventory_image() surface.blit(item_image, rect, None, BLEND_ADD) - def draw_over(self, surface): - PaletteView.draw_over(self, surface) - CursorWidget.draw_over(self, surface) - def click_item(self, item_no, event): self.state.set_tool(self.state.inventory[item_no]) self.handbutton.unselect() @@ -66,17 +61,14 @@ self.bg_color = (127, 127, 127) self.fg_color = (0, 0, 0) - def draw_over(self, surface): - CursorWidget.draw_over(self, surface) - def mouse_down(self, event): self.dismiss() -class StateWidget(CursorWidget): +class StateWidget(Widget): def __init__(self, state): - CursorWidget.__init__(self, Rect(0, 0, SCENE_SIZE[0], SCENE_SIZE[1])) + Widget.__init__(self, Rect(0, 0, SCENE_SIZE[0], SCENE_SIZE[1])) self.state = state def draw(self, surface): @@ -101,12 +93,11 @@ def mouse_move(self, event): if not self.subwidgets: self.state.mouse_move(event.pos) - CursorWidget.mouse_move(self, event) -class DetailWindow(CursorWidget): +class DetailWindow(Widget): def __init__(self, state): - CursorWidget.__init__(self, Rect(0, 0, SCENE_SIZE[0], SCENE_SIZE[1])) + Widget.__init__(self, Rect(0, 0, SCENE_SIZE[0], SCENE_SIZE[1])) self.state = state self.draw_area = Rect(0, 0, 300, 300) self.draw_area.center = self.center @@ -125,17 +116,16 @@ if self.draw_area.collidepoint(event.pos): # TODO: mouse_move stuff pass - CursorWidget.mouse_move(self, event) -class ToolBar(Row, CursorWidget): +class ToolBar(Row): def __init__(self, items): - CursorWidget.__init__(self) Row.__init__(self, items, spacing=0, width=SCREEN[0]) -class GameScreen(Screen): +class GameScreen(Screen, CursorWidget): def __init__(self, shell): + CursorWidget.__init__(self) Screen.__init__(self, shell) self.running = False @@ -200,8 +190,3 @@ def begin_frame(self): if self.running: self.state_widget.animate() - - def mouse_delta(self, event): - w = self.shell.find_widget(event.pos) - if not isinstance(w, CursorWidget): - mouse.set_visible(1)