mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
Removed ev.py - merged it into evennia.__init__.py.
This commit is contained in:
parent
c7325a5032
commit
096c9a6276
3 changed files with 15 additions and 280 deletions
|
|
@ -409,6 +409,10 @@ def init_game_directory(path):
|
|||
# Add gamedir to python path
|
||||
sys.path.insert(0, GAMEDIR)
|
||||
|
||||
# testing the main library import. If there are errors in importing
|
||||
# the main library, it should show here.
|
||||
importlib.import_module("evennia")
|
||||
|
||||
# test existence of the settings module
|
||||
try:
|
||||
settings = importlib.import_module(SETTINGS_DOTPATH)
|
||||
|
|
@ -419,7 +423,7 @@ def init_game_directory(path):
|
|||
print ERROR_SETTINGS
|
||||
sys.exit()
|
||||
|
||||
# Prepare djangO; set the settings location
|
||||
# Prepare django; set the settings location
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = SETTINGS_DOTPATH
|
||||
import django
|
||||
# required since django1.7.
|
||||
|
|
|
|||
278
ev.py
278
ev.py
|
|
@ -1,278 +0,0 @@
|
|||
"""
|
||||
Central API for the Evennia MUD/MUX/MU* creation system.
|
||||
|
||||
This is a set of shortcuts for accessing common features in src/ with
|
||||
less boiler-plate. Import this from your code, use it with @py from
|
||||
in-game or explore it interactively from a python shell.
|
||||
|
||||
Notes:
|
||||
|
||||
0) Use ev.help, ev.managers.help, ev.default_cmds.help and
|
||||
syscmdkeys.help to view the API structure and explore which
|
||||
variables/methods are available.
|
||||
1) This module holds variables, not modules in their own right. This
|
||||
means you cannot use import dot-notation to import nested things via
|
||||
this API.
|
||||
2) "managers" is a container object that contains shortcuts to
|
||||
initiated versions of Evennia's django database managers (e.g.
|
||||
managers.objects is an alias for ObjectDB.objects). These allow for
|
||||
exploring the database in various ways.
|
||||
3) "syscmdkeys" is a container object holding the names of system
|
||||
commands. the syscmdkeys object.
|
||||
4) You -have- to use the create_* functions (shortcuts to
|
||||
src.utils.create) to create new typeclassed game entities (Objects,
|
||||
Scripts, Channels or Players).
|
||||
5) "settings" links to Evennia's game/settings file. "settings_full"
|
||||
shows all of django's available settings. Note that this is for
|
||||
viewing only - you cannot *change* settings from here in a meaningful
|
||||
way but have to update game/settings.py and restart the server.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
######################################################################
|
||||
# set Evennia version in __version__ property
|
||||
######################################################################
|
||||
|
||||
try:
|
||||
__version__ = "Evennia"
|
||||
with open(os.path.dirname(os.path.abspath(__file__)) + os.sep + "VERSION.txt", 'r') as f:
|
||||
__version__ += " %s" % f.read().strip()
|
||||
rev = (os.popen("git rev-parse --short HEAD").read().strip())
|
||||
__version__ += "-%s" % (rev or "(unknown revision)")
|
||||
except IOError:
|
||||
__version__ += " (unknown version)"
|
||||
|
||||
######################################################################
|
||||
# Stop erroneous direct run (would give a traceback since django is
|
||||
# not yet initialized)
|
||||
######################################################################
|
||||
|
||||
if __name__ == "__main__":
|
||||
print \
|
||||
"""
|
||||
Evennia MU* creation system (%s)
|
||||
|
||||
This module gives access to Evennia's API (Application Programming
|
||||
Interface). It should *not* be run on its own, but be imported and
|
||||
accessed from your code or explored interactively from a Python
|
||||
shell.
|
||||
|
||||
For help configuring and starting the Evennia server, see the
|
||||
INSTALL file. More help can be found at http://www.evennia.com.
|
||||
""" % __version__
|
||||
sys.exit()
|
||||
|
||||
######################################################################
|
||||
# make sure settings is available, also if starting this API stand-alone
|
||||
# make settings available, and also the full django settings
|
||||
######################################################################
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
sys.path.insert(1, os.path.dirname(os.path.abspath(__file__)) + os.path.sep + "game")
|
||||
os.environ["DJANGO_SETTINGS_MODULE"] = "game.settings"
|
||||
del sys, os
|
||||
|
||||
from game import settings
|
||||
from django.conf import settings as settings_full
|
||||
|
||||
try:
|
||||
# test this first import to make sure environment is set up correctly
|
||||
from src.help.models import HelpEntry
|
||||
except AttributeError, e:
|
||||
err = e.message
|
||||
err += "\nError initializing ev.py: Maybe the correct environment variables were not set."
|
||||
err += "\nUse \"python game/manage.py shell\" to start an interpreter"
|
||||
err += " with everything configured correctly."
|
||||
raise AttributeError(err)
|
||||
|
||||
|
||||
######################################################################
|
||||
# Start Evennia API
|
||||
# (easiest is to import this module interactively to explore it)
|
||||
######################################################################
|
||||
|
||||
README = __doc__
|
||||
|
||||
# help entries
|
||||
from src.help.models import HelpEntry
|
||||
|
||||
from src.typeclasses.models import Attribute
|
||||
# players
|
||||
from src.players.player import DefaultPlayer
|
||||
from src.players.models import PlayerDB
|
||||
|
||||
# commands
|
||||
from src.commands.command import Command
|
||||
from src.commands.cmdset import CmdSet
|
||||
# (default_cmds is created below)
|
||||
|
||||
# locks
|
||||
from src.locks import lockfuncs
|
||||
|
||||
# scripts
|
||||
from src.scripts.scripts import Script
|
||||
|
||||
# comms
|
||||
from src.comms.models import Msg, ChannelDB
|
||||
from src.comms.comms import Channel
|
||||
|
||||
# objects
|
||||
from src.objects.objects import DefaultObject, DefaultCharacter, DefaultRoom, DefaultExit
|
||||
|
||||
# utils
|
||||
|
||||
from src.utils.search import *
|
||||
from src.utils.create import *
|
||||
from src.scripts.tickerhandler import TICKER_HANDLER as tickerhandler
|
||||
from src.utils import logger
|
||||
from src.utils import utils
|
||||
from src.utils import gametime
|
||||
from src.utils import ansi
|
||||
from src.utils.spawner import spawn
|
||||
|
||||
|
||||
######################################################################
|
||||
# API containers and helper functions
|
||||
######################################################################
|
||||
|
||||
def help(header=False):
|
||||
"""
|
||||
Main Evennia API.
|
||||
ev.help() views API contents
|
||||
ev.help(True) or ev.README shows module instructions
|
||||
|
||||
See www.evennia.com for the full documentation.
|
||||
"""
|
||||
if header:
|
||||
return __doc__
|
||||
else:
|
||||
import ev
|
||||
names = [str(var) for var in ev.__dict__ if not var.startswith('_')]
|
||||
return ", ".join(names)
|
||||
|
||||
|
||||
class _EvContainer(object):
|
||||
"""
|
||||
Parent for other containers
|
||||
|
||||
"""
|
||||
def _help(self):
|
||||
"Returns list of contents"
|
||||
names = [name for name in self.__class__.__dict__ if not name.startswith('_')]
|
||||
names += [name for name in self.__dict__ if not name.startswith('_')]
|
||||
print self.__doc__ + "-" * 60 + "\n" + ", ".join(names)
|
||||
help = property(_help)
|
||||
|
||||
|
||||
class DBmanagers(_EvContainer):
|
||||
"""
|
||||
Links to instantiated database managers.
|
||||
|
||||
helpentry - HelpEntry.objects
|
||||
players - PlayerDB.objects
|
||||
scripts - ScriptDB.objects
|
||||
msgs - Msg.objects
|
||||
channels - Channel.objects
|
||||
objects - ObjectDB.objects
|
||||
serverconfigs = ServerConfig.objects
|
||||
tags - Tags.objects
|
||||
attributes - Attributes.objects
|
||||
|
||||
"""
|
||||
from src.help.models import HelpEntry
|
||||
from src.players.models import PlayerDB
|
||||
from src.scripts.models import ScriptDB
|
||||
from src.comms.models import Msg, ChannelDB
|
||||
from src.objects.models import ObjectDB
|
||||
from src.server.models import ServerConfig
|
||||
from src.typeclasses.models import Tag, Attribute
|
||||
|
||||
# create container's properties
|
||||
helpentries = HelpEntry.objects
|
||||
players = PlayerDB.objects
|
||||
scripts = ScriptDB.objects
|
||||
msgs = Msg.objects
|
||||
channels = ChannelDB.objects
|
||||
objects = ObjectDB.objects
|
||||
serverconfigs = ServerConfig.objects
|
||||
attributes = Attribute.objects
|
||||
tags = Tag.objects
|
||||
# remove these so they are not visible as properties
|
||||
del HelpEntry, PlayerDB, ScriptDB, Msg, ChannelDB
|
||||
#del ExternalChannelConnection
|
||||
del ObjectDB, ServerConfig, Tag, Attribute
|
||||
|
||||
managers = DBmanagers()
|
||||
del DBmanagers
|
||||
|
||||
|
||||
class DefaultCmds(_EvContainer):
|
||||
"""
|
||||
This container holds direct shortcuts to all default commands in Evennia.
|
||||
|
||||
To access in code, do 'from ev import default_cmds' then
|
||||
access the properties on the imported default_cmds object.
|
||||
|
||||
"""
|
||||
|
||||
from src.commands.default.cmdset_character import CharacterCmdSet
|
||||
from src.commands.default.cmdset_player import PlayerCmdSet
|
||||
from src.commands.default.cmdset_unloggedin import UnloggedinCmdSet
|
||||
from src.commands.default.muxcommand import MuxCommand, MuxPlayerCommand
|
||||
|
||||
def __init__(self):
|
||||
"populate the object with commands"
|
||||
|
||||
def add_cmds(module):
|
||||
"helper method for populating this object with cmds"
|
||||
cmdlist = utils.variable_from_module(module, module.__all__)
|
||||
self.__dict__.update(dict([(c.__name__, c) for c in cmdlist]))
|
||||
|
||||
from src.commands.default import (admin, batchprocess,
|
||||
building, comms, general,
|
||||
player, help, system, unloggedin)
|
||||
add_cmds(admin)
|
||||
add_cmds(building)
|
||||
add_cmds(batchprocess)
|
||||
add_cmds(building)
|
||||
add_cmds(comms)
|
||||
add_cmds(general)
|
||||
add_cmds(player)
|
||||
add_cmds(help)
|
||||
add_cmds(system)
|
||||
add_cmds(unloggedin)
|
||||
default_cmds = DefaultCmds()
|
||||
del DefaultCmds
|
||||
|
||||
|
||||
class SystemCmds(_EvContainer):
|
||||
"""
|
||||
Creating commands with keys set to these constants will make
|
||||
them system commands called as a replacement by the parser when
|
||||
special situations occur. If not defined, the hard-coded
|
||||
responses in the server are used.
|
||||
|
||||
CMD_NOINPUT - no input was given on command line
|
||||
CMD_NOMATCH - no valid command key was found
|
||||
CMD_MULTIMATCH - multiple command matches were found
|
||||
CMD_CHANNEL - the command name is a channel name
|
||||
CMD_LOGINSTART - this command will be called as the very
|
||||
first command when a player connects to
|
||||
the server.
|
||||
|
||||
To access in code, do 'from ev import syscmdkeys' then
|
||||
access the properties on the imported syscmdkeys object.
|
||||
|
||||
"""
|
||||
from src.commands import cmdhandler
|
||||
CMD_NOINPUT = cmdhandler.CMD_NOINPUT
|
||||
CMD_NOMATCH = cmdhandler.CMD_NOMATCH
|
||||
CMD_MULTIMATCH = cmdhandler.CMD_MULTIMATCH
|
||||
CMD_CHANNEL = cmdhandler.CMD_CHANNEL
|
||||
CMD_LOGINSTART = cmdhandler.CMD_LOGINSTART
|
||||
del cmdhandler
|
||||
syscmdkeys = SystemCmds()
|
||||
del SystemCmds
|
||||
del _EvContainer
|
||||
|
|
@ -1,5 +1,15 @@
|
|||
"""
|
||||
Evennia MUD/MUX/MU* creation system
|
||||
|
||||
This is the main top-level API for Evennia. You can also explore the
|
||||
evennia library by accessing evennia.<subpackage> directly.
|
||||
|
||||
For full functionality you need to explore this module via a django-
|
||||
aware shell. Go to your game directory and use the command 'evennia.py shell'
|
||||
to launch such a shell (using python or ipython depending on your install).
|
||||
|
||||
See www.evennia.com for full documentation.
|
||||
|
||||
"""
|
||||
|
||||
######################################################################
|
||||
|
|
@ -12,7 +22,6 @@ try:
|
|||
__version__ += " %s" % f.read().strip()
|
||||
except IOError:
|
||||
__version__ += " (unknown version)"
|
||||
|
||||
del os
|
||||
|
||||
######################################################################
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue