2 new revisions:
Revision: 95a11fb712
Author: Hugo Ruscitti <
hugoru...@gmail.com>
Date: Thu Jul 1 17:46:59 2010
Log: logrando que el personaje hannia le pegue al protagonista cuando
esta ...
http://code.google.com/p/sbfury/source/detail?r=95a11fb712
Revision: 78e1ab5322
Author: Hugo Ruscitti <
hugoru...@gmail.com>
Date: Thu Jul 1 18:44:49 2010
Log: Creando el objeto energy para representar la energia del shaolin.
http://code.google.com/p/sbfury/source/detail?r=78e1ab5322
==============================================================================
Revision: 95a11fb712
Author: Hugo Ruscitti <
hugoru...@gmail.com>
Date: Thu Jul 1 17:46:59 2010
Log: logrando que el personaje hannia le pegue al protagonista cuando esta
cerca. (y creando las imagenes de eso).
http://code.google.com/p/sbfury/source/detail?r=95a11fb712
Added:
/data/enemies/hannia/attack.png
/data/enemies/hannia/attack.xcf
Modified:
/sbfury/config.py
/sbfury/enemies/hannia.py
=======================================
--- /dev/null
+++ /data/enemies/hannia/attack.png Thu Jul 1 17:46:59 2010
Binary file, no diff available.
=======================================
--- /dev/null
+++ /data/enemies/hannia/attack.xcf Thu Jul 1 17:46:59 2010
Binary file, no diff available.
=======================================
--- /sbfury/config.py Sat Jun 19 19:59:58 2010
+++ /sbfury/config.py Thu Jul 1 17:46:59 2010
@@ -19,6 +19,6 @@
SHOW_FRONT_LAYER = True
CAMERA_STEP = 20
SHAOLIN_INITIAL_JUMP_SPEED = 12
-SHOW_COLLISION_BOXES = True
+SHOW_COLLISION_BOXES = False
SHOW_CONTROL_POINTS = False
SOUNDS_ENABLED = True
=======================================
--- /sbfury/enemies/hannia.py Sat Jun 19 19:59:58 2010
+++ /sbfury/enemies/hannia.py Thu Jul 1 17:46:59 2010
@@ -25,8 +25,7 @@
self.position = x, y
self._load_animations()
self.set_ai_states(
- [state.Wait(self, 1), state.PunchToPlayerIfCloser(self)]
- #state.WalkRandom(self, 1)])
+ [state.Wait(self, 1), state.WalkRandom(self, 1),
state.PunchToPlayerIfCloser(self)]
)
self.go_to_next_ai_state()
self.shadow = shadow.Shadow()
@@ -38,7 +37,7 @@
self._animations = {
'stand': Animation('enemies/hannia/stand.png', 1),
'hitstand1': Animation('enemies/hannia/hitstand1.png', 1),
- 'attack': Animation('enemies/hannia/hitstand1.png', 1),
+ 'attack': Animation('enemies/hannia/attack.png', 2),
'hitstand2': Animation('enemies/hannia/hitstand2.png', 1),
'hardhit': Animation('enemies/hannia/hardhit.png', 4),
'ground': Animation('enemies/hannia/ground.png', 1),
==============================================================================
Revision: 78e1ab5322
Author: Hugo Ruscitti <
hugoru...@gmail.com>
Date: Thu Jul 1 18:44:49 2010
Log: Creando el objeto energy para representar la energia del shaolin.
http://code.google.com/p/sbfury/source/detail?r=78e1ab5322
Added:
/doc/source/energia.rst
/sbfury/energy.py
Modified:
/sbfury/cocos/text.py
/sbfury/scene/game.py
/sbfury/shaolin/shaolin.py
/sbfury/shaolin/state.py
=======================================
--- /dev/null
+++ /doc/source/energia.rst Thu Jul 1 18:44:49 2010
@@ -0,0 +1,31 @@
+Energia
+=======
+
+Cada uno de los personajes del juego tiene un atributo que
+indica cual es su nivel de energia.
+
+Cuando la energia de un enemigo llega a cero entonces muere. Mientras
+que el protagonista solo pierde una vida.
+
+
+El objeto EnergyIndicator
+-------------------------
+
+El objeto ``EnergyIndicator`` representa al visualizador de energia. Este
+objeto se instancia dentro de la clase ``game``::
+
+ def _create_player_and_stage(self):
+ """Genera al personaje principal y al objeto Stage.
+
+ [...]
+ # Genera el indicador de energia
+ self.messages.add(energy.EnergyIndicator(shaolin_sprite, 10, 470))
+
+
+y para inicializar el objeto ``EnergyIndicator`` tiene que indicarle
+un sprite para monitorizar. Este sprite se puede cambiar tocando el
+atributo ``target``, pero en principio es buena idea asignarlo en
+el constructor.
+
+EnergyIndicator va a consultar el atributo ``energy`` y ``name`` para
+representar la enegía correctamente.
=======================================
--- /dev/null
+++ /sbfury/energy.py Thu Jul 1 18:44:49 2010
@@ -0,0 +1,34 @@
+# -*- encoding: utf-8 -*-
+# Shaolin's Blind Fury
+#
+# Copyright 2008 - Hugo Ruscitti
+# License: GPLv3 (see
http://www.gnu.org/licenses/gpl.html)
+
+import pyglet
+import common
+
+import cocos
+from cocos.actions import *
+
+
+# Parche para poder cambiar el texto de un nodo Label
+def change_text(self, text):
+ self.element.text= text
+
+cocos.text.Label.change_text = change_text
+
+class EnergyIndicator(cocos.text.Label):
+ """Representa un indicador de enegia, que puede ser del protagonista o
un enemigo.
+
+ Este objeto toma a un personaje de referencia (target) y he intenta
+ mostrar su atributo ``energy`` en pantalla."""
+
+ def __init__(self, target, x, y):
+ self.target = target
+ cocos.text.Label.__init__(self, x=x, y=y, font_size=16,
+ anchor_x='left', anchor_y='top', color=(0,0,0,255))
+ self.schedule(self.update)
+ self.change_text("HOLA")
+
+ def update(self, dt):
+ self.change_text(
self.target.name + ": " + str(self.target.energy))
=======================================
--- /sbfury/cocos/text.py Sat May 29 21:13:43 2010
+++ /sbfury/cocos/text.py Thu Jul 1 18:44:49 2010
@@ -78,7 +78,7 @@
of being of a CocosNode
'''
klass = pyglet.text.Label
-
+
class HTMLLabel(TextElement):
=======================================
--- /sbfury/scene/game.py Sat Jun 19 18:57:57 2010
+++ /sbfury/scene/game.py Thu Jul 1 18:44:49 2010
@@ -15,6 +15,7 @@
import shaolin
import enemies
import scene
+import energy
FINAL_LEVEL = 6
@@ -123,6 +124,9 @@
shaolin_sprite = shaolin.shaolin.Shaolin()
control_layer = control.Control(shaolin_sprite)
+ # Genera el indicador de energia
+ self.messages.add(energy.EnergyIndicator(shaolin_sprite, 10, 470))
+
# Create Stage
self.stage = stage.Stage(self.level,
object_to_follow=shaolin_sprite)
self.add(self.stage)
=======================================
--- /sbfury/shaolin/shaolin.py Sat Jun 19 19:59:58 2010
+++ /sbfury/shaolin/shaolin.py Thu Jul 1 18:44:49 2010
@@ -28,6 +28,8 @@
self.set_state(state.Stand(self))
self.shadow = shadow.Shadow()
self.move(0, 0)
+
self.name = 'shaolin'
+ self.energy = 100
def set_animation(self, id):
self.animation = self._animations[id]
=======================================
--- /sbfury/shaolin/state.py Sat Jun 19 19:59:58 2010
+++ /sbfury/shaolin/state.py Thu Jul 1 18:44:49 2010
@@ -298,6 +298,8 @@
else:
target.set_animation('hitstand2')
+ target.energy -= collision_force * 4
+
def update(self, dt):
if self.target.update_animation(dt):
self.target.set_state(Stand(self.target))