Clean up the networking code a bit.
[mudsync.git] / mudsync.scm
1 ;;; Mudsync --- Live hackable MUD
2 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
3 ;;; Copyright © 2012, 2014 Ludovic Courtès <ludo@gnu.org>
4 ;;;
5 ;;; This file is part of Mudsync.
6 ;;;
7 ;;; Mudsync is free software; you can redistribute it and/or modify it
8 ;;; under the terms of the GNU General Public License as published by
9 ;;; the Free Software Foundation; either version 3 of the License, or
10 ;;; (at your option) any later version.
11 ;;;
12 ;;; Mudsync is distributed in the hope that it will be useful, but
13 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 ;;; General Public License for more details.
16 ;;;
17 ;;; You should have received a copy of the GNU General Public License
18 ;;; along with Mudsync.  If not, see <http://www.gnu.org/licenses/>.
19
20 (define-module (mudsync)
21   #:use-module (8sync actors)
22   #:use-module (8sync agenda)
23   #:use-module (ice-9 format)
24   #:use-module (ice-9 match)
25   #:use-module (oop goops))
26
27
28 ;;; Composite model stuff borrowed from Guix.  Thanks, Ludo!
29 (eval-when (eval load compile)
30   (begin
31     (define %public-modules
32       '(game-master
33         gameobj
34         networking
35         command
36         player
37         room
38         run-game
39         thing))
40
41     (for-each (let ((i (module-public-interface (current-module))))
42                 (lambda (m)
43                   (module-use! i (resolve-interface `(mudsync ,m)))))
44               %public-modules)))