Codechange: Replace pointer to Sprite array with reference to SpriteCollection. (#11580)
Add `SpriteLoader::SpriteCollection` type which is an array of `SpriteLoad::Sprite`. This removes the ambiguity of what `SpriteLoader::Sprite *` is pointing to, and cleans up mismatches using both dereference -> and array access [] for the same object.
This commit is contained in:
		| @@ -215,7 +215,7 @@ bool DecodeSingleSprite(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t f | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
| uint8_t LoadSpriteV1(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp) | ||||
| uint8_t LoadSpriteV1(SpriteLoader::SpriteCollection &sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp) | ||||
| { | ||||
| 	/* Check the requested colour depth. */ | ||||
| 	if (load_32bpp) return 0; | ||||
| @@ -252,7 +252,7 @@ uint8_t LoadSpriteV1(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| uint8_t LoadSpriteV2(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) | ||||
| uint8_t LoadSpriteV2(SpriteLoader::SpriteCollection &sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) | ||||
| { | ||||
| 	static const ZoomLevel zoom_lvl_map[6] = {ZOOM_LVL_OUT_4X, ZOOM_LVL_NORMAL, ZOOM_LVL_OUT_2X, ZOOM_LVL_OUT_8X, ZOOM_LVL_OUT_16X, ZOOM_LVL_OUT_32X}; | ||||
|  | ||||
| @@ -350,7 +350,7 @@ uint8_t LoadSpriteV2(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file | ||||
| 	return loaded_sprites; | ||||
| } | ||||
|  | ||||
| uint8_t SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) | ||||
| uint8_t SpriteLoaderGrf::LoadSprite(SpriteLoader::SpriteCollection &sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) | ||||
| { | ||||
| 	if (this->container_ver >= 2) { | ||||
| 		return LoadSpriteV2(sprite, file, file_pos, sprite_type, load_32bpp, control_flags); | ||||
|   | ||||
| @@ -17,7 +17,7 @@ class SpriteLoaderGrf : public SpriteLoader { | ||||
| 	byte container_ver; | ||||
| public: | ||||
| 	SpriteLoaderGrf(byte container_ver) : container_ver(container_ver) {} | ||||
| 	uint8_t LoadSprite(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) override; | ||||
| 	uint8_t LoadSprite(SpriteLoader::SpriteCollection &sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) override; | ||||
| }; | ||||
|  | ||||
| #endif /* SPRITELOADER_GRF_HPP */ | ||||
|   | ||||
| @@ -65,6 +65,11 @@ public: | ||||
| 		static ReusableBuffer<SpriteLoader::CommonPixel> buffer[ZOOM_LVL_END]; | ||||
| 	}; | ||||
|  | ||||
| 	/** | ||||
| 	 * Type defining a collection of sprites, one for each zoom level. | ||||
| 	 */ | ||||
| 	using SpriteCollection = std::array<Sprite, ZOOM_LVL_END>; | ||||
|  | ||||
| 	/** | ||||
| 	 * Load a sprite from the disk and return a sprite struct which is the same for all loaders. | ||||
| 	 * @param[out] sprite The sprites to fill with data. | ||||
| @@ -75,7 +80,7 @@ public: | ||||
| 	 * @param control_flags Control flags, see SpriteCacheCtrlFlags. | ||||
| 	 * @return Bit mask of the zoom levels successfully loaded or 0 if no sprite could be loaded. | ||||
| 	 */ | ||||
| 	virtual uint8_t LoadSprite(SpriteLoader::Sprite *sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) = 0; | ||||
| 	virtual uint8_t LoadSprite(SpriteLoader::SpriteCollection &sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, byte control_flags) = 0; | ||||
|  | ||||
| 	virtual ~SpriteLoader() = default; | ||||
| }; | ||||
| @@ -94,7 +99,7 @@ public: | ||||
| 	/** | ||||
| 	 * Convert a sprite from the loader to our own format. | ||||
| 	 */ | ||||
| 	virtual Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0; | ||||
| 	virtual Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) = 0; | ||||
|  | ||||
| 	/** | ||||
| 	 * Get the value which the height and width on a sprite have to be aligned by. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Peter Nelson
					Peter Nelson