diff options
author | Live System User <liveuser@localhost.localdomain> | 2009-03-02 05:57:53 (GMT) |
---|---|---|
committer | Live System User <liveuser@localhost.localdomain> | 2009-03-02 05:57:53 (GMT) |
commit | 01587d01b7f1a0402f4fa660f9a15e11cb476ae1 (patch) | |
tree | b04902a8d0916a77a46dd2befd0b21b012239673 | |
parent | f2d678e4cf858499aa5585f2c1f295f005b15df9 (diff) |
Fix #205. Minor code cleanups.
-rw-r--r-- | bounce.py | 81 | ||||
-rwxr-xr-x | setup.py | 2 |
2 files changed, 53 insertions, 30 deletions
@@ -1,18 +1,23 @@ +# Copyright 2009 by Wade Brainerd.
+# This file is part of Bounce.
+#
+# Bounce is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Bounce is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Bounce. If not, see <http://www.gnu.org/licenses/>.
#!/usr/bin/env python
"""Bounce - 3D action game by Wade Brainerd <wadetb@gmail.com>."""
-from gettext import gettext as _
-
-# This section can be modified to change the default stages that are built into the activity.
-default_stage_descs = [
- { 'Name': _('practice'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 2, 'PaddleWidth': 20, 'PaddleHeight': 20, 'AISpeed': 1, 'AIRecenter': 1, },
- { 'Name': _('gravity'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0.5, 'BallSize': 1, 'BallSpeed': 2, 'PaddleWidth': 20, 'PaddleHeight': 20, 'AISpeed': 2, 'AIRecenter': 1, },
- { 'Name': _('wide'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0.5, 'BallSize': 1, 'BallSpeed': 3, 'PaddleWidth': 50, 'PaddleHeight': 15, 'AISpeed': 3, 'AIRecenter': 1, },
- { 'Name': _('deep'), 'StageDepth': 500, 'StageXGravity': 0, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 10, 'PaddleWidth': 25, 'PaddleHeight': 25, 'AISpeed': 2.5, 'AIRecenter': 0, },
- { 'Name': _('rotate'), 'StageDepth': 160, 'StageXGravity': 0.5, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 5, 'PaddleWidth': 25, 'PaddleHeight': 20, 'AISpeed': 3, 'AIRecenter': 1, },
-]
-
import logging, os, time, math, threading, random, time
+from gettext import gettext as _
try:
import json
@@ -44,6 +49,18 @@ log.setLevel(logging.DEBUG) logging.basicConfig()
gtk.add_log_handlers()
+# This section can be modified to change the default stages that are built into the activity.
+DEFAULT_STAGE_DESCS = [
+ { 'Name': _('practice'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 2, 'PaddleWidth': 20, 'PaddleHeight': 20, 'AISpeed': 1, 'AIRecenter': 1, },
+ { 'Name': _('gravity'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0.5, 'BallSize': 1, 'BallSpeed': 2, 'PaddleWidth': 20, 'PaddleHeight': 20, 'AISpeed': 2, 'AIRecenter': 1, },
+ { 'Name': _('wide'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0.5, 'BallSize': 1, 'BallSpeed': 3, 'PaddleWidth': 50, 'PaddleHeight': 15, 'AISpeed': 3, 'AIRecenter': 1, },
+ { 'Name': _('deep'), 'StageDepth': 500, 'StageXGravity': 0, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 10, 'PaddleWidth': 25, 'PaddleHeight': 25, 'AISpeed': 2.5, 'AIRecenter': 0, },
+ { 'Name': _('rotate'), 'StageDepth': 160, 'StageXGravity': 0.5, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 5, 'PaddleWidth': 25, 'PaddleHeight': 20, 'AISpeed': 3, 'AIRecenter': 1, },
+]
+
+# These are the settings that will be applied when a new stage is created using the editor.
+NEW_STAGE = { 'Name': _('new stage'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 3, 'PaddleWidth': 20, 'PaddleHeight': 20, 'AISpeed': 1, 'AIRecenter': 1, }
+
def clamp(a, b, c):
if (a<b): return b
elif (a>c): return c
@@ -902,7 +919,7 @@ class Game: self.mousedown = 0
# Default stages.
- self.stage_descs = default_stage_descs
+ self.stage_descs = DEFAULT_STAGE_DESCS
# Scores.
self.scores = []
@@ -1124,6 +1141,10 @@ class EditorPanel(gtk.EventBox): desc['PaddleHeight'] = self.paddlesize_y_adjust.get_value()
desc['AISpeed'] = self.aispeed_adjust.get_value()
+ def update_step_btns(self):
+ self.prevbtn.set_sensitive(self.step > 0)
+ self.nextbtn.set_sensitive(self.step < EditorPanel.STEP_MAX-1)
+
def on_prev (self, btn):
if self.step > 0:
self.set_step(self.step-1)
@@ -1138,6 +1159,8 @@ class EditorPanel(gtk.EventBox): self.step = step
+ self.update_step_btns()
+
if self.step == EditorPanel.STEP_STAGENAME:
self.propbox.pack_start(self.stage_label, False, False)
self.propbox.pack_start(self.separator, False, False)
@@ -1476,35 +1499,36 @@ class BounceActivity(activity.Activity): game.set_sequence(EditSequence())
self.queue_draw()
+ def edit_stage(self, stage_num):
+ game.set_level(stage_num)
+ self.editor.copy_from_desc(game.stage_descs[stage_num])
+ self.queue_draw()
+ self.prevstagebtn.set_sensitive(stage_num > 0)
+ self.nextstagebtn.set_sensitive(stage_num < len(game.stage_descs)-1)
+
def on_edit_prevstage (self, button):
if game.curlevel > 0:
- game.set_level(game.curlevel-1)
- self.editor.copy_from_desc(game.stage_descs[game.curlevel])
- self.queue_draw()
+ self.edit_stage(game.curlevel-1)
def on_edit_nextstage (self, button):
if game.curlevel < len(game.stage_descs)-1:
- game.set_level(game.curlevel+1)
- self.editor.copy_from_desc(game.stage_descs[game.curlevel])
- self.queue_draw()
+ self.edit_stage(game.curlevel+1)
def on_edit_addstage (self, button):
- desc = { 'Name': _('new stage'), 'StageDepth': 160, 'StageXGravity': 0, 'StageYGravity': 0, 'BallSize': 1, 'BallSpeed': 3, 'PaddleWidth': 20, 'PaddleHeight': 20, 'AISpeed': 1, 'AIRecenter': 1, }
- game.stage_descs.append(desc)
+ game.stage_descs.append(NEW_STAGE.copy())
- game.set_level(len(game.stage_descs)-1)
- self.editor.copy_from_desc(game.stage_descs[game.curlevel])
- self.queue_draw()
+ self.edit_stage(len(game.stage_descs)-1)
def on_edit_deletestage (self, button):
if len(game.stage_descs) <= 1:
return
+
del game.stage_descs[game.curlevel]
+
if game.curlevel > len(game.stage_descs)-1:
- game.curlevel = len(game.stage_descs)-1
- game.set_level(game.curlevel)
- self.editor.copy_from_desc(game.stage_descs[game.curlevel])
- self.queue_draw()
+ self.edit_stage(len(game.stage_descs)-1)
+ else:
+ self.edit_stage(game.curlevel)
#-----------------------------------------------------------------------------------------------------------------
# DrawArea event handlers - Drawing, resizing, etc.
@@ -1579,9 +1603,8 @@ class BounceActivity(activity.Activity): self.tbox.add_toolbar(_("Edit"), self.editbox)
self.editbox.show_all()
self.tbox.set_current_toolbar(1)
- self.editor.copy_from_desc(game.stage_descs[game.curlevel])
- game.set_level(game.curlevel)
+ self.edit_stage(game.curlevel)
self.pause_game(True)
self.editor.show_all()
@@ -1,5 +1,5 @@ #!/usr/bin/env python from sugar.activity import bundlebuilder if __name__ == "__main__": - bundlebuilder.start("Bounce") + bundlebuilder.start() |