142 lines
4.1 KiB
Python
142 lines
4.1 KiB
Python
from ctypes import *
|
|
from dftypes import libdfhack
|
|
from util import *
|
|
|
|
_get_arg_types = [ c_void_p, _arr_create_func ]
|
|
|
|
libdfhack.Materials_getInorganic.argtypes = _get_arg_types
|
|
libdfhack.Materials_getOrganic.argtypes = _get_arg_types
|
|
libdfhack.Materials_getTree.argtypes = _get_arg_types
|
|
libdfhack.Materials_getPlant.argtypes = _get_arg_types
|
|
libdfhack.Materials_getRace.argtypes = _get_arg_types
|
|
#libdfhack.Materials_getRaceEx.argtypes = _get_arg_types
|
|
libdfhack.Materials_getColor.argtypes = _get_arg_types
|
|
libdfhack.Materials_getOther.argtypes = _get_arg_types
|
|
|
|
class Materials(object):
|
|
def __init__(self, ptr):
|
|
self._mat_ptr = ptr
|
|
|
|
self.inorganic = None
|
|
self.organic = None
|
|
self.tree = None
|
|
self.plant = None
|
|
self.race = None
|
|
self.race_ex = None
|
|
self.color = None
|
|
self.other = None
|
|
|
|
def read_inorganic(self):
|
|
return libdfhack.Materials_ReadInorganicMaterials(self._mat_ptr)
|
|
|
|
def read_organic(self):
|
|
return libdfhack.Materials_ReadOrganicMaterials(self._mat_ptr)
|
|
|
|
def read_wood(self):
|
|
return libdfhack.Materials_ReadWoodMaterials(self._mat_ptr)
|
|
|
|
def read_plant(self):
|
|
return libdfhack.Materials_ReadPlantMaterials(self._mat_ptr)
|
|
|
|
def read_creature_types(self):
|
|
return libdfhack.Materials_ReadCreatureTypes(self._mat_ptr)
|
|
|
|
def read_creature_types_ex(self):
|
|
return libdfhack.Materials_ReadCreatureTypesEx(self._mat_ptr)
|
|
|
|
def read_descriptor_colors(self):
|
|
return libdfhack.Materials_ReadDescriptorColors(self._mat_ptr)
|
|
|
|
def read_others(self):
|
|
return libdfhack.Materials_ReadOthers(self._mat_ptr)
|
|
|
|
def read_all(self):
|
|
libdfhack.Materials_ReadAllMaterials(self._mat_ptr)
|
|
|
|
def get_description(self, material):
|
|
return libdfhack.Materials_getDescription(self._mat_ptr, byref(material))
|
|
|
|
def update_inorganic_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(Matgloss, count)
|
|
|
|
self.inorganic = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getInorganic(self._mat_ptr, callback)
|
|
|
|
def update_organic_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(Matgloss, count)
|
|
|
|
self.organic = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getOrganic(self._mat_ptr, callback)
|
|
|
|
def update_tree_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(Matgloss, count)
|
|
|
|
self.tree = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getTree(self._mat_ptr, callback)
|
|
|
|
def update_plant_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(Matgloss, count)
|
|
|
|
self.plant = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getPlant(self._mat_ptr, callback)
|
|
|
|
def update_race_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(Matgloss, count)
|
|
|
|
self.race = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getRace(self._mat_ptr, callback)
|
|
|
|
def update_color_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(DescriptorColor, count)
|
|
|
|
self.color = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getColor(self._mat_ptr, callback)
|
|
|
|
def update_other_cache(self):
|
|
def update_callback(count):
|
|
allocated = _allocate_array(MatglossOther, count)
|
|
|
|
self.other = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
callback = _arr_create_func(update_callback)
|
|
|
|
return libdfhack.Materials_getOther(self._mat_ptr, callback)
|