import re

import pygame

import message_center

import text_object

message_center.add_channel("terminal_error")
message_center.add_channel("terminal_info")
## Arg type constants

ARG_OBJECT = 1
ARG_STRING = 2
ARG_NUMBER = 3
ARG_COMMAND = 4
ARG_LIST = 5

default_command_dict = {}


class ArgumentError(Exception):
    pass


class StandardCommandError(Exception):
    pass


import interface_classes
import sys,re,math,string

#from types import ListType, TupleType

import message_center

for channel_name in ["heading","subheading","description","item","success","failure"]:
	message_center.add_channel(channel_name)

import game_state, command_line, xml_content_loader, inspect

id_number = 0
def get_unique_id():
	global id_number
	id_number += 1
	return str(id_number)

######################################
# ITEM MANAGEMENT & CLASSIFICATION
######################################
class MarkerBoundObject:
	def __init__(self, name, use_identifier=None, use_game_state=None):
		self.formatted_name = name.lower().replace(" ", "_")
		self.formatted_name = re.sub(r"\W","",self.formatted_name)
		self.unique_name = self.formatted_name + "_" + str(get_unique_id())

class VisibleObject:
	def __init__(self, description = None):
		self.description = description
	
	def generate_description(self):