Added docstrings and more comments in the main directory.
[realism.git] / realism.py
blob37a2129112d7eaa07e3bd2bd12eb113eb5ca4200
1 #!/usr/bin/env python
2 # This file is part of Realism, which is Copyright FunnyMan3595 (Charlie Nolan)
3 # and licensed under the GNU GPL v3. For more details, see LICENSE in the main
4 # Realism directory.
6 '''The main file of the Realism RPG engine. Runs the main game, or whatever mod is specified.'''
8 # Realism separates the code into three main pieces: UI, engine, and game/mod.
9 # The ui used will be one of the modules in the ui subdirectory. It handles all
10 # direct interaction with the user.
11 # The engine is stored in the engine subdirectory and consistes of all of the
12 # generic code that doesn't deal directly with the game and its story, such as
13 # the combat mechanics. It also has virtual modules that load data from the
14 # game and mod.
15 # Everything that can be changed by a mod is stored in the main_game
16 # subdirectory. This includes monsters, spells, maps, and items. Actual mods
17 # can be put in a mods subdirectory of Realism's main directory, or in the
18 # user's home directory (as explained below).
21 # We allow mods to exist in the user's home directory, path:
22 # ~/.realism-rpg/mods/<modname>/
23 # On Windows XP, this translates to:
24 # <drive>:\Documents and Settings\<user>\.realism-rpg\mods\<modname>\
25 import sys
26 from os import makedirs
27 from os.path import join, expanduser, isdir
28 user_dir = join(expanduser('~'),'.realism-rpg')
29 if not isdir(user_dir):
30 makedirs(user_dir)
31 sys.path.append(user_dir)
33 from game import game
35 # Initialize the party.
36 from engine.party import HeroParty
37 game.party = HeroParty()
39 # Initialize the UI.
40 from ui.zork_ui import ZorkUI
41 game.ui = ui = ZorkUI()
43 # Import the maps, register the game object with them, and validate them.
44 from engine.maps import maps
45 for game_map in maps.values():
46 game_map.validate()
48 try:
49 from engine.maps import start_map
50 except ImportError:
51 if "start_map" not in maps.keys():
52 print "No start map found. Realism will exit."
53 sys.exit()
55 # maps["start"] guaranteed to exist.
56 start_map = maps["start_map"]
58 # start_map guaranteed to exist
60 # Tell the UI to use start_map.
61 ui.map_mode(start_map)
63 # Start the UI.
64 ui.main_loop()