X-Git-Url: http://nitlanguage.org diff --git a/lib/bucketed_game.nit b/lib/bucketed_game.nit index eba5d69..b5542e4 100644 --- a/lib/bucketed_game.nit +++ b/lib/bucketed_game.nit @@ -14,24 +14,30 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Provides basic game logic utilities using buckets to coordinate and -# optimize actions on game turn ends. Supports both action at each -# end of turn as well as actions on some end of turns. +# Game framework with an emphasis on efficient event coordination # -# Allows for fast support of a large number of entities with rare actions, -# such as a forest with many individual trees. -module bucketed_game +# Provides basic game logic entities to manage a game where the logic is executed by turns: +# `Game`, `GameTurn`, `GameEvent`, `Turnable`. +# Also offers a bucket system to plan future events at a known number of turns in the future: +# `Bucketable` and the services `act_next` and `act_in`. +# +# Efficiently support large number of entities with rare or sparse actions, +# such as a forest with many individual trees growing slowly. +module bucketed_game is serialize + +import serialization # Something acting on the game -class Turnable[G: Game] +abstract class Turnable[G: Game] # Execute `turn` for this instance. fun do_turn(turn: GameTurn[G]) is abstract end # Something acting on the game from time to time -class Bucketable[G: Game] +abstract class Bucketable[G: Game] super Turnable[G] + private var act_at: nullable Int = null # Cancel the previously registered acting turn @@ -129,8 +135,8 @@ class ThinGameTurn[G: ThinGame] # Game tick when `self` should act. var tick: Int is protected writable - # List of game events occured for `self`. - var events = new List[GameEvent] is protected writable + # Game events occurred for `self`. + var events = new Array[GameEvent] is protected writable end # Game turn on the full logic