# This file is part of Korman. # # Korman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Korman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Korman. If not, see . very_very_special_python = """ from Plasma import * from PlasmaTypes import * class {age_name}(ptResponder): def __init__(self): ptResponder.__init__(self) self.id = -1 self.version = 0 """ very_very_special_sdl = """ #============================================================== # This VeryVerySpecial SDL File was automatically generated # by Korman. Have a nice day! # # READ: When modifying an SDL record, do *not* modify the # existing record. You must copy and paste a new version # below the current one and make your changes there. #============================================================== STATEDESC {age_name} {{ VERSION 0 }} """ # Copypasta (with small fixes for str.format) of glue.py from CWE's moul-scripts plasma_python_glue = """ glue_cl = None glue_inst = None glue_params = None glue_paramKeys = None try: x = glue_verbose except NameError: glue_verbose = 0 def glue_getClass(): global glue_cl if glue_cl == None: try: cl = globals()[glue_name] if issubclass(cl,ptModifier): glue_cl = cl else: if glue_verbose: print "Class %s is not derived from modifier" % (cl.__name__) except: if glue_verbose: try: print "Could not find class %s" % (glue_name) except NameError: print "Filename/classname not set!" return glue_cl def glue_getInst(): global glue_inst if type(glue_inst) == type(None): cl = glue_getClass() if cl != None: glue_inst = cl() return glue_inst def glue_delInst(): global glue_inst global glue_cl global glue_params global glue_paramKeys if type(glue_inst) != type(None): del glue_inst glue_cl = None glue_params = None glue_paramKeys = None def glue_getVersion(): inst = glue_getInst() ver = inst.version glue_delInst() return ver def glue_findAndAddAttribs(obj, glue_params): if isinstance(obj,ptAttribute): if glue_params.has_key(obj.id): if glue_verbose: print "WARNING: Duplicate attribute ids!" print "%s has id %d which is already defined in %s" % (obj.name, obj.id, glue_params[obj.id].name) else: glue_params[obj.id] = obj elif type(obj) == type([]): for o in obj: glue_findAndAddAttribs(o, glue_params) elif type(obj) == type(dict()): for o in obj.values(): glue_findAndAddAttribs(o, glue_params) elif type(obj) == type( () ): for o in obj: glue_findAndAddAttribs(o, glue_params) def glue_getParamDict(): global glue_params global glue_paramKeys if type(glue_params) == type(None): glue_params = dict() gd = globals() for obj in gd.values(): glue_findAndAddAttribs(obj, glue_params) # rebuild the parameter sorted key list glue_paramKeys = glue_params.keys() glue_paramKeys.sort() glue_paramKeys.reverse() return glue_params def glue_getClassName(): cl = glue_getClass() if cl != None: return cl.__name__ if glue_verbose: print "Class not found in %s.py" % (glue_name) return None def glue_getBlockID(): inst = glue_getInst() if inst != None: return inst.id if glue_verbose: print "Instance could not be created in %s.py" % (glue_name) return None def glue_getNumParams(): pd = glue_getParamDict() if pd != None: return len(pd) if glue_verbose: print "No attributes found in %s.py" % (glue_name) return 0 def glue_getParam(number): global glue_paramKeys pd = glue_getParamDict() if pd != None: # see if there is a paramKey list if type(glue_paramKeys) == type([]): if number >= 0 and number < len(glue_paramKeys): return pd[glue_paramKeys[number]].getdef() else: print "glue_getParam: Error! %d out of range of attribute list" % (number) else: pl = pd.values() if number >= 0 and number < len(pl): return pl[number].getdef() else: if glue_verbose: print "glue_getParam: Error! %d out of range of attribute list" % (number) if glue_verbose: print "GLUE: Attribute list error" return None def glue_setParam(id,value): pd = glue_getParamDict() if pd != None: if pd.has_key(id): try: pd[id].__setvalue__(value) except AttributeError: if isinstance(pd[id],ptAttributeList): try: if type(pd[id].value) != type([]): pd[id].value = [] except AttributeError: pd[id].value = [] pd[id].value.append(value) else: pd[id].value = value else: if glue_verbose: print "setParam: can't find id=",id else: print "setParma: Something terribly has gone wrong. Head for the cover." def glue_isNamedAttribute(id): pd = glue_getParamDict() if pd != None: try: if isinstance(pd[id],ptAttribNamedActivator): return 1 if isinstance(pd[id],ptAttribNamedResponder): return 2 except KeyError: if glue_verbose: print "Could not find id=%d attribute" % (id) return 0 def glue_isMultiModifier(): inst = glue_getInst() if isinstance(inst,ptMultiModifier): return 1 return 0 def glue_getVisInfo(number): global glue_paramKeys pd = glue_getParamDict() if pd != None: # see if there is a paramKey list if type(glue_paramKeys) == type([]): if number >= 0 and number < len(glue_paramKeys): return pd[glue_paramKeys[number]].getVisInfo() else: print "glue_getVisInfo: Error! %d out of range of attribute list" % (number) else: pl = pd.values() if number >= 0 and number < len(pl): return pl[number].getVisInfo() else: if glue_verbose: print "glue_getVisInfo: Error! %d out of range of attribute list" % (number) if glue_verbose: print "GLUE: Attribute list error" return None """