afagit a param el color de la camiseta per defecte

This commit is contained in:
2025-08-17 13:25:10 +02:00
parent 1c058694fd
commit fe0083abd4
6 changed files with 100 additions and 37 deletions

View File

@@ -554,49 +554,52 @@ void Resource::createPlayerTextures() {
}
}
// Crear variante con paleta original (pal0) - usar la textura ya cargada
auto base_texture = getTexture(player.base_texture);
// Crear las 4 texturas con sus respectivas paletas
for (int palette_idx = 0; palette_idx < 4; ++palette_idx) {
std::shared_ptr<Texture> texture;
base_texture->setPaletteColor(0, 56, param.player.outline_color[player_idx].TO_UINT32());
base_texture->setPalette(0);
if (palette_idx == 0) {
// Textura 0 - usar la ya cargada y modificar solo paleta 0 (default_shirt)
texture = getTexture(player.base_texture);
texture->setPaletteColor(0, 16, param.player.default_shirt[player_idx].darkest.TO_UINT32());
texture->setPaletteColor(0, 17, param.player.default_shirt[player_idx].dark.TO_UINT32());
texture->setPaletteColor(0, 18, param.player.default_shirt[player_idx].base.TO_UINT32());
texture->setPaletteColor(0, 19, param.player.default_shirt[player_idx].light.TO_UINT32());
texture->setPaletteColor(0, 56, param.player.outline_color[player_idx].TO_UINT32());
} else {
// Crear textura nueva desde archivo
texture = std::make_shared<Texture>(Screen::get()->getRenderer(), texture_file_path);
// Añadir todas las paletas
texture->addPaletteFromPalFile(Asset::get()->get(player.palette_files[0]));
texture->addPaletteFromPalFile(Asset::get()->get(player.palette_files[1]));
texture->addPaletteFromPalFile(Asset::get()->get(player.palette_files[2]));
std::string pal0_name = player.name_prefix + "_pal0";
textures_.emplace_back(pal0_name, base_texture);
printWithDots("Player Texture : ", pal0_name, "[ DONE ]");
if (palette_idx == 1) {
// Textura 1 - modificar solo paleta 1 (one_coffee_shirt)
texture->setPaletteColor(1, 16, param.player.one_coffee_shirt[player_idx].darkest.TO_UINT32());
texture->setPaletteColor(1, 17, param.player.one_coffee_shirt[player_idx].dark.TO_UINT32());
texture->setPaletteColor(1, 18, param.player.one_coffee_shirt[player_idx].base.TO_UINT32());
texture->setPaletteColor(1, 19, param.player.one_coffee_shirt[player_idx].light.TO_UINT32());
texture->setPaletteColor(1, 56, param.player.outline_color[player_idx].TO_UINT32());
} else if (palette_idx == 2) {
// Textura 2 - modificar solo paleta 2 (two_coffee_shirt)
texture->setPaletteColor(2, 16, param.player.two_coffee_shirt[player_idx].darkest.TO_UINT32());
texture->setPaletteColor(2, 17, param.player.two_coffee_shirt[player_idx].dark.TO_UINT32());
texture->setPaletteColor(2, 18, param.player.two_coffee_shirt[player_idx].base.TO_UINT32());
texture->setPaletteColor(2, 19, param.player.two_coffee_shirt[player_idx].light.TO_UINT32());
texture->setPaletteColor(2, 56, param.player.outline_color[player_idx].TO_UINT32());
}
// Textura 3 (palette_idx == 3) - no modificar nada, usar colores originales
}
// Crear variantes con paletas adicionales - CADA UNA DESDE EL ARCHIVO
for (size_t i = 0; i < player.palette_files.size(); ++i) {
// Crear textura completamente nueva desde el archivo
auto texture_copy = std::make_shared<Texture>(Screen::get()->getRenderer(), texture_file_path);
// Añadir todas las paletas
texture_copy->addPaletteFromPalFile(Asset::get()->get(player.palette_files[0]));
texture_copy->addPaletteFromPalFile(Asset::get()->get(player.palette_files[1]));
texture_copy->addPaletteFromPalFile(Asset::get()->get(player.palette_files[2]));
// Modifica los colores de las camisetas
texture_copy->setPaletteColor(1, 16, param.player.one_coffee_shirt[player_idx].darkest.TO_UINT32());
texture_copy->setPaletteColor(1, 17, param.player.one_coffee_shirt[player_idx].dark.TO_UINT32());
texture_copy->setPaletteColor(1, 18, param.player.one_coffee_shirt[player_idx].base.TO_UINT32());
texture_copy->setPaletteColor(1, 19, param.player.one_coffee_shirt[player_idx].light.TO_UINT32());
texture_copy->setPaletteColor(2, 16, param.player.two_coffee_shirt[player_idx].darkest.TO_UINT32());
texture_copy->setPaletteColor(2, 17, param.player.two_coffee_shirt[player_idx].dark.TO_UINT32());
texture_copy->setPaletteColor(2, 18, param.player.two_coffee_shirt[player_idx].base.TO_UINT32());
texture_copy->setPaletteColor(2, 19, param.player.two_coffee_shirt[player_idx].light.TO_UINT32());
// Modifica el color del outline
texture_copy->setPaletteColor(1, 56, param.player.outline_color[player_idx].TO_UINT32());
texture_copy->setPaletteColor(2, 56, param.player.outline_color[player_idx].TO_UINT32());
// Cambiar a la paleta específica (índice i+1 porque 0 es la original)
texture_copy->setPalette(i + 1);
// Asignar la paleta correspondiente
texture->setPalette(palette_idx);
// Guardar con nombre específico
std::string variant_name = player.name_prefix + "_pal" + std::to_string(i + 1);
textures_.emplace_back(variant_name, texture_copy);
printWithDots("Player Texture : ", variant_name, "[ DONE ]");
std::string texture_name = player.name_prefix + "_pal" + std::to_string(palette_idx);
textures_.emplace_back(texture_name, texture);
printWithDots("Player Texture : ", texture_name, "[ DONE ]");
}
}
}