contrib/nitrpg: move statistics to GameEntity.
authorAlexandre Terrasa <alexandre@moz-code.org>
Tue, 10 Feb 2015 21:38:06 +0000 (22:38 +0100)
committerAlexandre Terrasa <alexandre@moz-code.org>
Mon, 23 Feb 2015 11:00:17 +0000 (12:00 +0100)
So even players can have stats.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

contrib/nitrpg/src/statistics.nit

index 39c05af..dfdb3ba 100644 (file)
@@ -26,6 +26,9 @@ import counter
 
 redef class GameEntity
 
+       # Statistics for this entity.
+       fun stats: GameStats is abstract
+
        # Load statistics for this `MEntity` if any.
        fun load_statistics: nullable GameStats do
                var key = self.key / "statistics"
@@ -33,23 +36,17 @@ redef class GameEntity
                var json = game.store.load_object(key)
                return new GameStats.from_json(game, json)
        end
-
-       # Save statistics under this `MEntity`.
-       fun save_statistics(stats: GameStats) do
-               game.store.store_object(key / stats.key, stats.to_json)
-       end
 end
 
 redef class Game
 
-       # Statistics for this game instance.
-       var stats: GameStats is lazy do
+       redef var stats is lazy do
                return load_statistics or else new GameStats(game)
        end
 
        redef fun save do
                super
-               save_statistics(stats)
+               stats.save_in(self)
        end
 
        redef fun pretty do
@@ -63,14 +60,13 @@ end
 
 redef class Player
 
-       # Statistics for this player.
-       var stats: GameStats is lazy do
+       redef var stats is lazy do
                return load_statistics or else new GameStats(game)
        end
 
        redef fun save do
                super
-               save_statistics(stats)
+               stats.save_in(self)
        end
 
        redef fun pretty do
@@ -125,9 +121,7 @@ end
 class StatisticsReactor
        super GameReactor
 
-       redef fun react_event(game, e) do
-               e.react_stats_event(game)
-       end
+       redef fun react_event(game, e) do e.react_stats_event(game)
 end
 
 redef class GithubEvent