1 ;;; Mudsync --- Live hackable MUD
2 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
4 ;;; This file is part of Mudsync.
6 ;;; Mudsync is free software; you can redistribute it and/or modify it
7 ;;; under the terms of the GNU General Public License as published by
8 ;;; the Free Software Foundation; either version 3 of the License, or
9 ;;; (at your option) any later version.
11 ;;; Mudsync is distributed in the hope that it will be useful, but
12 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 ;;; General Public License for more details.
16 ;;; You should have received a copy of the GNU General Public License
17 ;;; along with Mudsync. If not, see <http://www.gnu.org/licenses/>.
22 (define-module (mudsync gameobj)
23 #:use-module (8sync systems actors)
24 #:use-module (8sync agenda)
25 #:use-module (oop goops)
35 ;;; *all* game components that talk to players should somehow
36 ;;; derive from this class.
37 ;;; And all of them need a GM!
39 (define-class <gameobj> (<actor>)
42 #:accessor gameobj-loc)
44 (gm #:init-keyword #:gm
46 ;; a name to be known by
47 (name #:init-keyword #:name
48 #:accessor gameobj-name)
50 ;; how to print our name
51 (name-f #:init-keyword #:name-f
52 #:getter gameobj-name-f
53 #:init-value (wrap gameobj-simple-name-f))
56 (aliases #:init-keyword #:aliases
59 ;; Commands we can handle
60 (dirobj-commands #:init-value '())
61 (indirobj-commands #:init-value '())
63 ;; Commands we can handle by being something's container
64 (contain-commands #:init-value #f))
67 (define (gameobj-simple-name-f gameobj)
68 "Simplest version: return ourselves for our name."
69 (gameobj-name gameobj))