[nostalgia/core] Fix TileSheet validation/repair to ensure pixels gets cleared if there are subsheets
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (push) Successful in 3m10s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (push) Successful in 3m10s
				
			This commit is contained in:
		| @@ -237,7 +237,9 @@ struct TileSheetV4 { | ||||
| [[nodiscard]] | ||||
| constexpr bool valid(TileSheetV4::SubSheet const&ss, int bpp) noexcept { | ||||
| 	auto const bytes = static_cast<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1); | ||||
| 	return ox::all_of(ss.subsheets.begin(), ss.subsheets.end(), | ||||
| 	return | ||||
| 		(ss.pixels.empty() || ss.subsheets.empty()) && | ||||
| 		ox::all_of(ss.subsheets.begin(), ss.subsheets.end(), | ||||
| 				[bpp, bytes](TileSheetV4::SubSheet const&s) { | ||||
| 			return bytes == s.pixels.size() && valid(s, bpp); | ||||
| 		}); | ||||
| @@ -249,8 +251,14 @@ constexpr bool valid(TileSheetV4 const&ts) noexcept { | ||||
| } | ||||
|  | ||||
| constexpr void repair(TileSheetV4::SubSheet &ss, int bpp) noexcept { | ||||
| 	if (ss.subsheets.empty()) { | ||||
| 		auto const bytes = static_cast<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1); | ||||
| 		ss.pixels.resize(bytes); | ||||
| 	} else { | ||||
| 		ss.pixels.clear(); | ||||
| 		ss.columns = -1; | ||||
| 		ss.rows = -1; | ||||
| 	} | ||||
| 	for (auto &s : ss.subsheets) { | ||||
| 		repair(s, bpp); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user