From: Alexandre Terrasa Date: Thu, 25 Jun 2015 02:39:46 +0000 (-0400) Subject: nitrpg: events and achievements have owners X-Git-Tag: v0.8~72^2~1 X-Git-Url: http://nitlanguage.org nitrpg: events and achievements have owners Signed-off-by: Alexandre Terrasa --- diff --git a/contrib/nitrpg/src/achievements.nit b/contrib/nitrpg/src/achievements.nit index 6bb26d8..24b50ad 100644 --- a/contrib/nitrpg/src/achievements.nit +++ b/contrib/nitrpg/src/achievements.nit @@ -77,6 +77,12 @@ class Achievement redef var game + redef var key is lazy do + var owner = self.owner + if owner == null then return id + return "{owner.key}-{id}" + end + # Uniq ID for this achievement. var id: String @@ -92,6 +98,9 @@ class Achievement # Is this achievement unlocked by somebody? var is_unlocked: Bool is lazy do return not load_events.is_empty + # Game entity this achievement is about. + var owner: nullable GameEntity = null + # Init `self` from a `json` object. # # Used to load achievements from storage. @@ -105,6 +114,8 @@ class Achievement json["name"] = name json["desc"] = desc json["reward"] = reward + json["game"] = game.key + if owner != null then json["owner"] = owner.key return json end end diff --git a/contrib/nitrpg/src/events.nit b/contrib/nitrpg/src/events.nit index a233573..bd1ee58 100644 --- a/contrib/nitrpg/src/events.nit +++ b/contrib/nitrpg/src/events.nit @@ -24,8 +24,10 @@ import game redef class GameEntity - # Saves `event` in `self`. - fun add_event(event: GameEvent) do event.save_in(self.key) + fun add_event(event: GameEvent) do + event.owner = self + event.save + end # List all events registered in this entity. # @@ -64,6 +66,9 @@ class GameEvent redef var game + # Entity this event belongs to. + var owner: nullable GameEntity = null + # String used to dissociate events in the display. var kind: String @@ -101,6 +106,8 @@ class GameEvent json["kind"] = kind json["time"] = time.to_s json["data"] = data + json["game"] = game.key + if owner != null then json["owner"] = owner.key return json end end