mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-25 05:25:14 +00:00
Added hex code support and sanity checks to palette INIs
This commit is contained in:
parent
70fb580311
commit
13e6197107
1 changed files with 20 additions and 8 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
#include <stdlib.h>
|
||||||
#include "pc/ini.h"
|
#include "pc/ini.h"
|
||||||
#include "pc/mods/mods.h"
|
#include "pc/mods/mods.h"
|
||||||
#include "pc/mods/mods_utils.h"
|
#include "pc/mods/mods_utils.h"
|
||||||
|
@ -40,6 +41,17 @@ void player_palettes_reset(void) {
|
||||||
gPresetPaletteCount = 0;
|
gPresetPaletteCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u8 read(const char* data) {
|
||||||
|
if (data == NULL) { return 0; }
|
||||||
|
for (size_t i = 0; i < strlen(data); i++) {
|
||||||
|
char c = data[i];
|
||||||
|
if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || c == 'x')) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strtol(data, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void player_palettes_read(const char* palettesPath) {
|
void player_palettes_read(const char* palettesPath) {
|
||||||
// construct lang path
|
// construct lang path
|
||||||
char lpath[SYS_MAX_PATH] = "";
|
char lpath[SYS_MAX_PATH] = "";
|
||||||
|
@ -73,14 +85,14 @@ void player_palettes_read(const char* palettesPath) {
|
||||||
if (!player_palette_init(palettesPath, path)) { continue; }
|
if (!player_palette_init(palettesPath, path)) { continue; }
|
||||||
|
|
||||||
struct PlayerPalette palette = {{
|
struct PlayerPalette palette = {{
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "PANTS_R")), atoi(ini_get(sPalette, "PALETTE", "PANTS_G")), atoi(ini_get(sPalette, "PALETTE", "PANTS_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "PANTS_R")), read(ini_get(sPalette, "PALETTE", "PANTS_G")), read(ini_get(sPalette, "PALETTE", "PANTS_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "SHIRT_R")), atoi(ini_get(sPalette, "PALETTE", "SHIRT_G")), atoi(ini_get(sPalette, "PALETTE", "SHIRT_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "SHIRT_R")), read(ini_get(sPalette, "PALETTE", "SHIRT_G")), read(ini_get(sPalette, "PALETTE", "SHIRT_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "GLOVES_R")), atoi(ini_get(sPalette, "PALETTE", "GLOVES_G")), atoi(ini_get(sPalette, "PALETTE", "GLOVES_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "GLOVES_R")), read(ini_get(sPalette, "PALETTE", "GLOVES_G")), read(ini_get(sPalette, "PALETTE", "GLOVES_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "SHOES_R")), atoi(ini_get(sPalette, "PALETTE", "SHOES_G")), atoi(ini_get(sPalette, "PALETTE", "SHOES_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "SHOES_R")), read(ini_get(sPalette, "PALETTE", "SHOES_G")), read(ini_get(sPalette, "PALETTE", "SHOES_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "HAIR_R")), atoi(ini_get(sPalette, "PALETTE", "HAIR_G")), atoi(ini_get(sPalette, "PALETTE", "HAIR_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "HAIR_R")), read(ini_get(sPalette, "PALETTE", "HAIR_G")), read(ini_get(sPalette, "PALETTE", "HAIR_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "SKIN_R")), atoi(ini_get(sPalette, "PALETTE", "SKIN_G")), atoi(ini_get(sPalette, "PALETTE", "SKIN_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "SKIN_R")), read(ini_get(sPalette, "PALETTE", "SKIN_G")), read(ini_get(sPalette, "PALETTE", "SKIN_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "CAP_R")), atoi(ini_get(sPalette, "PALETTE", "CAP_G")), atoi(ini_get(sPalette, "PALETTE", "CAP_B")) },
|
{ read(ini_get(sPalette, "PALETTE", "CAP_R")), read(ini_get(sPalette, "PALETTE", "CAP_G")), read(ini_get(sPalette, "PALETTE", "CAP_B")) },
|
||||||
{ atoi(ini_get(sPalette, "PALETTE", "EMBLEM_R")), atoi(ini_get(sPalette, "PALETTE", "EMBLEM_G")), atoi(ini_get(sPalette, "PALETTE", "EMBLEM_B")) }
|
{ read(ini_get(sPalette, "PALETTE", "EMBLEM_R")), read(ini_get(sPalette, "PALETTE", "EMBLEM_G")), read(ini_get(sPalette, "PALETTE", "EMBLEM_B")) }
|
||||||
}};
|
}};
|
||||||
// free
|
// free
|
||||||
ini_free(sPalette);
|
ini_free(sPalette);
|
||||||
|
|
Loading…
Reference in a new issue