48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from ctypes import *
|
|
from pydftypes import *
|
|
import util
|
|
|
|
libdfhack.Buildings_GetCustomWorkshopType.argtypes = [ c_void_p, POINTER(CustomWorkshop) ]
|
|
|
|
def Buildings(object):
|
|
def __init__(self, ptr):
|
|
self._b_ptr = ptr
|
|
|
|
def start(self):
|
|
num = c_uint()
|
|
|
|
if libdfhack.Buildings_Start(self._b_ptr, byref(num)) > 0:
|
|
return int(num.value)
|
|
else:
|
|
return -1
|
|
|
|
def finish(self):
|
|
return libdfhack.Buildings_Finish(self._b_ptr) > 0
|
|
|
|
def read(self, index):
|
|
b = Building()
|
|
|
|
if libdfhack.Buildings_Read(self._b_ptr, c_uint(index), byref(b)) > 0:
|
|
return b
|
|
else:
|
|
return None
|
|
|
|
def read_custom_workshop_types(self):
|
|
def read_callback(count):
|
|
allocated = util._allocate_array(CustomWorkshop, count)
|
|
|
|
workshop_types = allocated[0]
|
|
|
|
return allocated[1]
|
|
|
|
workshop_types = None
|
|
callback = _arr_create_func(read_callback)
|
|
|
|
if libdfhack.Buildings_ReadCustomWorkshopTypes(self._b_ptr, callback) > 0:
|
|
return workshop_types
|
|
else:
|
|
return None
|
|
|
|
def get_custom_workshop_type(self, custom_workshop):
|
|
return libdfhack.Buildings_GetCustomWorkshopType(self._b_ptr, byref(custom_workshop))
|