<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="../../../../coverage.css"/> <title> cc/journeyman/the_great_game/agent/agent.clj </title> </head> <body> <span class="covered" title="1 out of 1 forms covered"> 001 (ns cc.journeyman.the-great-game.agent.agent </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 002 "Anything in the game world with agency; primarily but not exclusively </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 003 characters." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 004 (:require [cc.journeyman.the-great-game.objects.game-object :refer [ProtoObject]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 005 [cc.journeyman.the-great-game.objects.container :refer [ProtoContainer]])) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 006 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 007 ;;; hierarchy of needs probably gets implemented here </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 008 ;;; I'm probably going to want to defprotocol stuff, to define the hierarchy </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 009 ;;; of things in the gameworld; either that or drop to Java, wich I'd rather not do. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 010 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 011 (defprotocol ProtoAgent </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 012 "An object which can act in the world" </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 013 (act </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 014 [actor world circle] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 015 "Allow `actor` to do something in this `world`, in the context of this </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 016 `circle`; return the new state of the actor if something was done, `nil` </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 017 if nothing was done. Circle is expected to be one of </span><br/> <span class="blank" title="0 out of 0 forms covered"> 018 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 019 * `:active` - actors within visual/audible range of the player </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 020 character; </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 021 * `:pending` - actors not in the active circle, but sufficiently close </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 022 to it that they may enter the active circle within a short period; </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 023 * `:background` - actors who are active in the background in order to </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 024 handle trade, news, et cetera; </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 025 * `other` - actors who are not members of any other circle, although </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 026 I'm not clear whether it would ever be appropriate to invoke an </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 027 `act` method on them. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 028 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 029 The `act` method *must not* have side effects; it must *only* return a </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 030 new state. If the actor's intention is to seek to change the state of </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 031 something else in the game world, it must add a representation of that </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 032 intention to the sequence which will be returned by its </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 033 `pending-intentions` method.") </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 034 (pending-intentions </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 035 [actor] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 036 "Returns a sequence of effects an actor intends, as a consequence of </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 037 acting. The encoding of these is not yet defined.")) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 038 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 039 (defrecord Agent </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 040 ;; "A default agent." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 041 [name craft home culture] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 042 ProtoObject </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 043 ProtoContainer </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 044 ProtoAgent </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 045 ) </span><br/> </body> </html>