home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 1.5)
-
- import os
- import cPickle
- import BBLib
- import Bladex
- import Reference
- import Breakings
- import PickInit
- import types
- import ObjStore
- import cStringIO
- PickDataBase = { }
- LoadedPickledData = { }
- aux_dir = '.'
- FixDataBase = []
-
- def LoadGlobalCompVars(filename, dest_dict):
- file = open(filename)
- u = cPickle.Unpickler(file)
- u.persistent_load = persistent_load
- ret = u.load()
- file.close()
- for i in ret.keys():
- dest_dict[i] = ret[i]
-
-
-
- def InitGameState(aux_dir):
- global PickDataBase, PickDataBase
- PickDataBase = { }
- filename = '%s/PickDataBase.dat' % (aux_dir,)
- funcfile = open(filename, 'rt')
- p = cPickle.Unpickler(funcfile)
- PickDataBase = p.load()
- funcfile.close()
- print 'PickDataBase read'
-
-
- def CleanLoadTemp():
- global PickDataBase, LoadedPickledData, LoadedPickledData
- PickDataBase = { }
- LoadedPickledData = { }
- LoadedPickledData = { }
-
-
- def EndGameState(aux_dir):
- filename = '%s/PickDataBase.dat' % (aux_dir,)
- funcfile = open(filename, 'wt')
- p = cPickle.Pickler(funcfile)
- p.dump(PickDataBase)
- funcfile.close()
- print 'PickDataBase written'
-
-
- def persistent_id(obj):
- ret = None
-
- try:
- ret = obj.persistent_id()
- except AttributeError:
- pass
- except Exception:
- exc = None
- print 'GameStateAux.persistent_id()', exc
-
- return ret
-
-
- def persistent_load(obj_id):
- if ObjStore.ObjectsStore.has_key(obj_id):
- return ObjStore.ObjectsStore[obj_id]
- filename = '%s/%s.dat' % ('f', obj_id)
- dat = GetPickledData(filename)
-
- try:
- LoadedPickledData[dat.persistent_id()] = dat
- except KeyError:
- LoadedPickledData[obj_id] = dat
-
- return dat
-
-
-
- def SavePickData(filename, data):
- if PickDataBase.has_key(filename):
- return None
-
- string_file = cStringIO.StringIO()
- p = cPickle.Pickler(string_file)
- p.persistent_id = persistent_id
- p.dump(data)
- PickDataBase[filename] = string_file.getvalue()
-
-
- def GetPickledData(filename):
- string_file = cStringIO.StringIO(PickDataBase[filename])
- u = cPickle.Unpickler(string_file)
- u.persistent_load = persistent_load
- ret = u.load()
- return ret
-
-
- def GetPickledObjects(filename):
- '''Loads the ObjStore file'''
- global FixDataBase
- f = open(filename, 'rt')
- u = cPickle.Unpickler(f)
- ret = u.load()
- f.close()
- for i in FixDataBase:
- func_id = i[0]
- ob_id = func_id[0]
- if ObjStore.ObjectsStore.has_key(ob_id):
- cl = ObjStore.ObjectsStore[ob_id]
- cl_to_assign = ObjStore.ObjectsStore[i[1]]
- exec 'cl_to_assign.' + i[2] + '=cl.' + func_id[1]
- else:
- print "Can't fix FixDataBase.", ob_id, 'Nor found.'
-
- FixDataBase = []
-
-
- def LoadAutoBODs(dir):
- files = os.listdir(dir)
- for i in files:
- pass
-
-
-
- def LoadMMPs(files):
- for i in files:
- BBLib.ReadMMP(i)
-
-
-
- def LoadAlphaBMPs(files):
- for i in files:
- Bladex.ReadAlphaBitMap(i[0], i[1])
-
-
-
- def LoadBMPs(files):
- for i in files:
- Bladex.ReadBitMap(i[0], i[1])
-
-
-
- def LoadBODs(files):
- for i in files:
- BBLib.ReadBOD(i)
-
-
-
- def AddWeaponToInventory(inv, weapon_name):
- object_flag = Reference.GiveObjectFlag(weapon_name)
- if object_flag == Reference.OBJ_BOW:
- inv.AddBow(weapon_name)
- else:
- flag = Reference.GiveWeaponFlag(weapon_name)
- inv.AddWeapon(weapon_name, flag)
-
-
- def LinkRight(weapon_name, inv, owner):
- weapon = Bladex.GetEntity(weapon_name)
- owner.Unlink(weapon)
- inv.LinkRightHand(weapon_name)
-
-
- def LinkLeft(weapon_name, inv, owner):
- weapon = Bladex.GetEntity(weapon_name)
- owner.Unlink(weapon)
- inv.LinkLeftHand(weapon_name)
-
-
- def LinkBack(weapon_name, inv, owner):
- weapon = Bladex.GetEntity(weapon_name)
- owner.Unlink(weapon)
- inv.LinkBack(weapon_name)
-
-
- def LinkLeft2B(weapon_name, inv, owner):
- weapon = Bladex.GetEntity(weapon_name)
- owner.Unlink(weapon)
- inv.LinkLeftHand2(weapon_name)
-
-
- def AddQuiverToInventory(inv, quiver_name):
- obj = Bladex.GetEntity(quiver_name)
- inv.AddQuiver(quiver_name)
-
-
- def SaveFunctionAux(func):
-
- try:
- func_type = type(func)
- if func_type == types.MethodType:
- ob_id = func.im_self.persistent_id()
- return ('m', (ob_id, func.im_func.func_name))
- elif func_type == types.FunctionType:
- return ('f', (func.func_name, GetFunctionFile(func)))
- elif func_type == types.BuiltinFunctionType:
- return ('cf', (func.__name__, 'Builtin has no known lib'))
-
- return ('n', (None, None))
- except Exception:
- exc = None
- print 'Exception in SaveFunctionAux()', exc, ' with function', func
- return ('n', (None, None))
-
-
-
- def LoadFunctionAux(func_id_ex, res_obj = None, res_field = None):
- assign_func = None
- if type(func_id_ex) != types.TupleType:
- print 'LoadFunctionAux() ERROR, invalid parameters', type(func_id_ex)
- return None
-
- func_id = func_id_ex[1]
- func_kind = func_id_ex[0]
- if func_kind == 'm':
- ob_id = func_id[0]
- if ObjStore.ObjectsStore.has_key(ob_id):
- cl = ObjStore.ObjectsStore[ob_id]
- assign_func = eval('cl.' + func_id[1])
- elif res_obj:
- FixDataBase.append((func_id, res_obj.ObjId, res_field, ob_id))
-
- elif func_kind == 'f':
- assign_func = PickInit.ConstFunction(func_id[0], func_id[1])
- elif func_kind == 'cf':
- assign_func = PickInit.ConstCFunction(func_id[0])
- elif func_kind == 'n':
- assign_func = None
-
- if res_obj:
- exec 'res_obj.' + res_field + '=assign_func'
- else:
- return assign_func
-
-
- def SaveEntityAux(ent):
- if ent:
-
- try:
- return ent.Name
- except:
- print 'Error getting entity name', ent
- return None
-
-
- return None
-
-
- def LoadEntityAux(ent_id):
- if ent_id:
- return Bladex.GetEntity(ent_id)
-
- return None
-
-
- def SaveExtraDataAux(file, aux_dir):
-
- try:
- import ExtraData
- filename = '%s/ExtraData.dat' % (aux_dir,)
- if ExtraData.SaveExtraData(filename):
- file.write('try:\n')
- file.write(' GameStateAux.LoadExtraDataAux("%s")\n' % (filename,))
- file.write('except:\n')
- file.write(' print "Can not load ExtraData"\n\n')
- except:
- pass
-
-
-
- def LoadExtraDataAux(filename):
- import ExtraData
- ExtraData.LoadExtraData(filename)
-
-
- def GetAllBases(check_class):
- ret = []
- bases = check_class.__bases__
- for i in bases:
- ret.append(i)
- bases_i = GetAllBases(i)
- for j in bases_i:
- ret.append(j)
-
-
- return ret
-
-
- def GetNewMembers(check_class):
- '''Obtiene los miembros nuevos de la clase y de sus clases base'''
- class_dict = { }
- bases = GetAllBases(check_class.__class__)
- for i in bases:
- class_dict.update(i.__dict__)
-
- class_dict.update(check_class.__class__.__dict__)
- check_dict = check_class.__dict__
- new_members = { }
- for j in check_dict.keys():
- pass
-
- return new_members
-
-
- def SaveNewMembers(check_class):
- if type(check_class) != types.InstanceType:
- return ()
-
- ret = []
- entity_type = type(Bladex.GetEntity(0))
- members = GetNewMembers(check_class)
- members_keys = members.keys()
- for i in members_keys:
- member = members[i]
- member_t = type(member)
- print check_class, i, member_t
- if member_t == types.FunctionType or member_t == types.MethodType:
- ret.append(('Function', i, SaveFunctionAux(member)))
- elif member_t == entity_type:
- ret.append(('Entity', i, SaveEntityAux(member)))
- else:
- ret.append(('Other', i, member))
-
- return tuple(ret)
-
-
- def LoadNewMembers(mod_class, new_members):
-
- try:
- for i in new_members:
- if i[0] == 'Function':
- LoadFunctionAux(i[2], mod_class, i[1])
- elif i[1] == 'Entity':
- mod_class.__dict__[i[1]] = LoadEntityAux(i[2])
- else:
- mod_class.__dict__[i[1]] = i[2]
- except Exception:
- exc = None
- print 'LoadNewMembers() Error', exc, mod_class, new_members
-
-
-
- def GetBaseMethod(check_class, method_name, bases):
- for i in bases:
-
- try:
- tmp_string = "i.__dict__['" + method_name + "']"
- return eval(tmp_string)
- except:
- 0
- bases
-
-
- return None
-
-
- def GetAlteredMethods(check_class):
- '''Obtiene los metodos de una clase y de sus clases base que han sido cambiados'''
- class_dict = { }
- bases = GetAllBases(check_class.__class__)
- for i in bases:
- class_dict.update(i.__dict__)
-
- class_dict.update(check_class.__class__.__dict__)
- altered_beast = { }
- for j in class_dict.keys():
- member = eval('check_class.' + j)
- if type(member) == types.MethodType:
- found_func = eval('member.im_func')
- tmp_string = "check_class.__class__.__dict__['" + j + "']"
-
- try:
- reference_func = eval(tmp_string)
- except:
- 0
- class_dict.keys()
- 0
- reference_func = GetBaseMethod(check_class, j, bases)
-
- if found_func != reference_func:
- altered_beast[j] = member
-
-
-
- return altered_beast
-
-
- def GetFunctionFile(f):
- if not f:
- return 'Error, None is not a function'
-
-
- try:
- import string
- s = str(f.func_code)
- s2 = string.split(s, '"')
- func_path = s2[1]
- import os
- filename = os.path.split(func_path)[1]
- filename_noext = os.path.splitext(filename)[0]
- return filename_noext
- except e:
- print 'Exception in GetFunctionFile', e
- return 'Error getting lib'
-
-
-