changeset 81:56b1eb2a3b07

heal as the player explores
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 04 Jan 2014 15:16:40 +0100
parents b94735a56562
children a262de8e390c
files fujo/game.py fujo/items.py fujo/mobs.py fujo/player.py
diffstat 4 files changed, 19 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/fujo/game.py	Sat Jan 04 14:59:24 2014 +0100
+++ b/fujo/game.py	Sat Jan 04 15:16:40 2014 +0100
@@ -6,7 +6,6 @@
 from . import display
 from . import level
 from . import player
-from . import things
 from . import window
 from . import saves
 
@@ -69,9 +68,11 @@
             acted = self.player.act(self.level, self.display)
             self.player.update(self.display)
             if acted:
-                self.level.explore(self.player.pos)
-                self.display.update_explored(self.level)
-                self.display.refresh()
+                explored = self.level.explore(self.player.pos)
+                if explored:
+                    self.player.explored += explored
+                    self.display.update_explored(self.level)
+                    self.display.refresh()
                 for mob in self.level.mobs.values():
                     mob.metabolize(self.level)
                 for mob in self.level.mobs.values():
--- a/fujo/items.py	Sat Jan 04 14:59:24 2014 +0100
+++ b/fujo/items.py	Sat Jan 04 15:16:40 2014 +0100
@@ -51,9 +51,7 @@
         level.player.health = min(
             level.player.health + self.nutrition // 10,
             level.player.max_health)
-        level.player.new_labels.append(
-            window.Label(level.player.rect.midtop,
-                "%d" % (self.nutrition //10), (0x22, 0xff, 0x00)))
+        level.player.label("%d" % (self.nutrition //10), (0x22, 0xff, 0x00))
         return True
 
     def throw(self, level, pos, mob):
--- a/fujo/mobs.py	Sat Jan 04 14:59:24 2014 +0100
+++ b/fujo/mobs.py	Sat Jan 04 15:16:40 2014 +0100
@@ -16,7 +16,7 @@
 COLOR_RED = (0xff, 0x00, 0x00)
 COLOR_WHITE = (0xee, 0xff, 0xff)
 COLOR_ORANGE = (0xff, 0xaa, 0x00)
-
+COLOR_GREEN = (0x22, 0xff, 0x00)
 
 def dpos(pos, direction):
     return pos[0] + DX[direction], pos[1] + DY[direction]
--- a/fujo/player.py	Sat Jan 04 14:59:24 2014 +0100
+++ b/fujo/player.py	Sat Jan 04 15:16:40 2014 +0100
@@ -7,7 +7,7 @@
 
 from . import items
 from . import window
-from .mobs import Mob, DX, DY, COLOR_RED, COLOR_ORANGE, dpos
+from .mobs import Mob, DX, DY, COLOR_RED, COLOR_ORANGE, COLOR_GREEN, dpos
 from .resources import RES
 
 
@@ -21,6 +21,8 @@
     def __init__(self):
         self.max_health = 20
         super(Player, self).__init__(RES.player)
+        self.explored = 0
+        self.next_heal = 100
         self.face = 0
         self.animation = None
         self.level = 0
@@ -72,6 +74,11 @@
                 self.label("1", COLOR_RED, 4)
                 self.hunger = 0
                 self.update_status()
+        if self.explored > self.next_heal:
+            self.next_heal += 100
+            self.health = min(self.max_health, self.health + 1)
+            self.label("1", COLOR_GREEN, 4)
+            self.update_status()
         if self.health <= 0:
             self.die()
 
@@ -257,6 +264,8 @@
             'armor': self.items.index(self.armor) if self.armor else None,
             'items': [item.save() for item in self.items],
             'face': self.face,
+            'explored': self.explored,
+            'next_heal': self.next_heal,
         })
         return data
 
@@ -272,3 +281,5 @@
         self.weapon = self.items[data['weapon']] if data['weapon'] else None
         self.armor = self.items[data['armor']] if data['armor'] else None
         self.face = data['face']
+        self.explored = data['explored']
+        self.next_heal = data['next_heal']