mirror of https://github.com/H-uru/korman.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
7.1 KiB
223 lines
7.1 KiB
# 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 <http://www.gnu.org/licenses/>. |
|
|
|
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 |
|
"""
|
|
|