dfhack/library/python/c api/buildings.py

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))