def _setstate_old(self, state: Any) -> None: self._random = state[0] self.noise_c = ffi.new("struct TCOD_Noise*") self.noise_c.ndim = state[3] ffi.buffer(self.noise_c.map)[:] = state[4] ffi.buffer(self.noise_c.buffer)[:] = state[5] self.noise_c.H = state[6] self.noise_c.lacunarity = state[7] ffi.buffer(self.noise_c.exponent)[:] = state[8] if state[9]: # high change of this being prematurely garbage collected! self.__waveletTileData = ffi.new("float[]", 32 * 32 * 32) ffi.buffer(self.__waveletTileData)[:] = state[9] self.noise_c.noise_type = state[10] self._tdl_noise_c = ffi.new( "TDLNoise*", (self.noise_c, self.noise_c.ndim, state[1], state[2]))
def __new__(cls, image: Any) -> "_ImageBufferArray": size = image.height * image.width self = np.frombuffer(ffi.buffer(lib.TCOD_image_get_colors()[size]), np.uint8) self = self.reshape((image.height, image.width, 3)).view(cls) self._image_c = image.cdata return self # type: ignore
def _init_setup_console_data(self, order: str = "C") -> None: """Setup numpy arrays over libtcod data buffers.""" global _root_console self._key_color = None if self.console_c == ffi.NULL: _root_console = self self._console_data = lib.TCOD_ctx.root else: self._console_data = ffi.cast("struct TCOD_Console*", self.console_c) self._tiles = np.frombuffer( ffi.buffer(self._console_data.tiles[0:self.width * self.height]), dtype=self.DTYPE, ).reshape((self.height, self.width)) self._order = tcod._internal.verify_order(order)
def _compile_cost_edges(edge_map: Any) -> Tuple[Any, int]: """Return an edge_cost array using an integer map.""" edge_map = np.copy(edge_map) if edge_map.ndim != 2: raise ValueError("edge_map must be 2 dimensional. (Got %i)" % edge_map.ndim) edge_center = edge_map.shape[0] // 2, edge_map.shape[1] // 2 edge_map[edge_center] = 0 edge_map[edge_map < 0] = 0 edge_nz = edge_map.nonzero() edge_array = np.transpose(edge_nz) edge_array -= edge_center c_edges = ffi.new("int[]", len(edge_array) * 3) edges = np.frombuffer(ffi.buffer(c_edges), dtype=np.intc).reshape(len(edge_array), 3) edges[:, :2] = edge_array edges[:, 2] = edge_map[edge_nz] return c_edges, len(edge_array)