bn::sprite_tiles_ptr class

std::shared_ptr like smart pointer that retains shared ownership of the tiles of a sprite.

Several sprite_tiles_ptr objects may own the same sprite tiles.

The sprite tiles are released when the last remaining sprite_tiles_ptr owning them is destroyed.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

Public static functions

static auto find(const sprite_tiles_item& tiles_item) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles.
static auto find(const sprite_tiles_item& tiles_item, int graphics_index) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles.
static auto create(const sprite_tiles_item& tiles_item) -> sprite_tiles_ptr
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto create(const sprite_tiles_item& tiles_item, int graphics_index) -> sprite_tiles_ptr
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto create_new(const sprite_tiles_item& tiles_item) -> sprite_tiles_ptr
Creates a sprite_tiles_ptr which references the given tiles.
static auto create_new(const sprite_tiles_item& tiles_item, int graphics_index) -> sprite_tiles_ptr
Creates a sprite_tiles_ptr which references the given tiles.
static auto allocate(int tiles_count, bpp_mode bpp) -> sprite_tiles_ptr
Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.
static auto create_optional(const sprite_tiles_item& tiles_item) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto create_optional(const sprite_tiles_item& tiles_item, int graphics_index) -> optional<sprite_tiles_ptr>
Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.
static auto create_new_optional(const sprite_tiles_item& tiles_item) -> optional<sprite_tiles_ptr>
Creates a sprite_tiles_ptr which references the given tiles.
static auto create_new_optional(const sprite_tiles_item& tiles_item, int graphics_index) -> optional<sprite_tiles_ptr>
Creates a sprite_tiles_ptr which references the given tiles.
static auto allocate_optional(int tiles_count, bpp_mode bpp) -> optional<sprite_tiles_ptr>
Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

Constructors, destructors, conversion operators

sprite_tiles_ptr(const sprite_tiles_ptr& other)
Copy constructor.
sprite_tiles_ptr(sprite_tiles_ptr&& other) noexcept
Move constructor.
~sprite_tiles_ptr()
Releases the referenced sprite tiles if no more sprite_tiles_ptr objects reference to them.

Public functions

auto operator=(const sprite_tiles_ptr& other) -> sprite_tiles_ptr&
Copy assignment operator.
auto operator=(sprite_tiles_ptr&& other) -> sprite_tiles_ptr& noexcept
Move assignment operator.
auto id() const -> int
Returns the internal id.
auto tiles_count() const -> int
Returns the referenced number of tiles.
auto compression() const -> compression_type
Returns the compression of the referenced tiles.
auto tiles_ref() const -> optional<span<const tile>>
Returns the referenced tiles unless it was created with allocate or allocate_optional. In that case, it returns bn::nullopt.
void set_tiles_ref(const sprite_tiles_item& tiles_item)
Sets the tiles to handle.
void set_tiles_ref(const sprite_tiles_item& tiles_item, int graphics_index)
Sets the tiles to handle.
void reload_tiles_ref()
Uploads the referenced tiles to VRAM again to make visible the possible changes in them.
auto vram() -> optional<span<tile>>
Returns the allocated memory in VRAM if this sprite_tiles_ptr was created with allocate or allocate_optional; bn::nullopt otherwise.
auto handle() const -> int
Returns the internal handle.
void swap(sprite_tiles_ptr& other)
Exchanges the contents of this sprite_tiles_ptr with those of the other one.

Friends

void swap(sprite_tiles_ptr& a, sprite_tiles_ptr& b)
Exchanges the contents of a sprite_tiles_ptr with those of another one.
auto operator==(const sprite_tiles_ptr& a, const sprite_tiles_ptr& b) -> bool defaulted
Default equal operator.

Function documentation

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::find(const sprite_tiles_item& tiles_item)

Searches for a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to search.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; bn::nullopt otherwise.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::find(const sprite_tiles_item& tiles_item, int graphics_index)

Searches for a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to search.
graphics_index Index of the tile set to search in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it has been found; bn::nullopt otherwise.

static sprite_tiles_ptr bn::sprite_tiles_ptr::create(const sprite_tiles_item& tiles_item)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; otherwise it returns a sprite_tiles_ptr which references them.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static sprite_tiles_ptr bn::sprite_tiles_ptr::create(const sprite_tiles_item& tiles_item, int graphics_index)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
graphics_index Index of the tile set to search in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it has been found; otherwise it returns a sprite_tiles_ptr which references them.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static sprite_tiles_ptr bn::sprite_tiles_ptr::create_new(const sprite_tiles_item& tiles_item)

Creates a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref().

The sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles. If you are not sure if the given tiles are already referenced or not, you should use the static create methods instead.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static sprite_tiles_ptr bn::sprite_tiles_ptr::create_new(const sprite_tiles_item& tiles_item, int graphics_index)

Creates a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.
graphics_index Index of the tile set to reference in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index).

The sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles. If you are not sure if the given tiles are already referenced or not, you should use the static create methods instead.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static sprite_tiles_ptr bn::sprite_tiles_ptr::allocate(int tiles_count, bpp_mode bpp)

Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

Parameters
tiles_count Number of tiles to allocate.
bpp Bits per pixel of the tiles to allocate.
Returns sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::create_optional(const sprite_tiles_item& tiles_item)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it has been found; otherwise it returns a sprite_tiles_ptr which references them if it could be allocated; bn::nullopt otherwise.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::create_optional(const sprite_tiles_item& tiles_item, int graphics_index)

Searches for a sprite_tiles_ptr which references the given tiles. If it is not found, it creates a sprite_tiles_ptr which references them.

Parameters
tiles_item sprite_tiles_item which references the tiles to search or handle.
graphics_index Index of the tile set to search in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it has been found; otherwise it returns a sprite_tiles_ptr which references them if it could be allocated; bn::nullopt otherwise.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::create_new_optional(const sprite_tiles_item& tiles_item)

Creates a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref() if it could be allocated; bn::nullopt otherwise.

The sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles. If you are not sure if the given tiles are already referenced or not, you should use the static create_optional methods instead.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::create_new_optional(const sprite_tiles_item& tiles_item, int graphics_index)

Creates a sprite_tiles_ptr which references the given tiles.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.
graphics_index Index of the tile set to reference in sprite_tiles_item.
Returns sprite_tiles_ptr which references tiles_item.graphics_tiles_ref(graphics_index) if it could be allocated; bn::nullopt otherwise.

The sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles. If you are not sure if the given tiles are already referenced or not, you should use the static create_optional methods instead.

The tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

static optional<sprite_tiles_ptr> bn::sprite_tiles_ptr::allocate_optional(int tiles_count, bpp_mode bpp)

Creates a sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen.

Parameters
tiles_count Number of tiles to allocate.
bpp Bits per pixel of the tiles to allocate.
Returns sprite_tiles_ptr which references a chunk of VRAM tiles not visible on the screen if it could be allocated; bn::nullopt otherwise.

bn::sprite_tiles_ptr::sprite_tiles_ptr(const sprite_tiles_ptr& other)

Copy constructor.

Parameters
other sprite_tiles_ptr to copy.

bn::sprite_tiles_ptr::sprite_tiles_ptr(sprite_tiles_ptr&& other) noexcept

Move constructor.

Parameters
other sprite_tiles_ptr to move.

sprite_tiles_ptr& bn::sprite_tiles_ptr::operator=(const sprite_tiles_ptr& other)

Copy assignment operator.

Parameters
other sprite_tiles_ptr to copy.
Returns Reference to this.

sprite_tiles_ptr& bn::sprite_tiles_ptr::operator=(sprite_tiles_ptr&& other) noexcept

Move assignment operator.

Parameters
other sprite_tiles_ptr to move.
Returns Reference to this.

void bn::sprite_tiles_ptr::set_tiles_ref(const sprite_tiles_item& tiles_item)

Sets the tiles to handle.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.

Remember that the sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles.

Remember also that the tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

void bn::sprite_tiles_ptr::set_tiles_ref(const sprite_tiles_item& tiles_item, int graphics_index)

Sets the tiles to handle.

Parameters
tiles_item sprite_tiles_item which references the tiles to handle.
graphics_index Index of the tile set to reference in sprite_tiles_item.

Remember that the sprite tiles system does not support multiple sprite_tiles_ptr items referencing to the same tiles.

Remember also that the tiles are not copied but referenced, so they should outlive the sprite_tiles_ptr to avoid dangling references.

void bn::sprite_tiles_ptr::swap(sprite_tiles_ptr& other)

Exchanges the contents of this sprite_tiles_ptr with those of the other one.

Parameters
other sprite_tiles_ptr to exchange the contents with.

void swap(sprite_tiles_ptr& a, sprite_tiles_ptr& b)

Exchanges the contents of a sprite_tiles_ptr with those of another one.

Parameters
a First sprite_tiles_ptr to exchange the contents with.
b Second sprite_tiles_ptr to exchange the contents with.