mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Fix spraycans on JSON, store can color name
This commit is contained in:
parent
266fe6d65d
commit
ce6b76b0cf
2 changed files with 43 additions and 9 deletions
|
|
@ -148,11 +148,24 @@ void srb2::save_ng_gamedata()
|
||||||
|
|
||||||
candata_t* can = &gamedata->spraycans[i];
|
candata_t* can = &gamedata->spraycans[i];
|
||||||
|
|
||||||
spraycan.color = can->col;
|
if (can->col >= numskincolors)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
spraycan.color = std::string(skincolors[can->col].name);
|
||||||
|
|
||||||
|
if (can->map == NEXTMAP_INVALID)
|
||||||
|
{
|
||||||
|
spraycan.map = "";
|
||||||
|
ng.spraycans.emplace_back(std::move(spraycan));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (can->map >= nummapheaders)
|
if (can->map >= nummapheaders)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
mapheader_t* mapheader = mapheaderinfo[can->map];
|
mapheader_t* mapheader = mapheaderinfo[can->map];
|
||||||
if (!mapheader)
|
if (!mapheader)
|
||||||
{
|
{
|
||||||
|
|
@ -548,21 +561,42 @@ void srb2::load_ng_gamedata()
|
||||||
(gamedata->numspraycans * sizeof(candata_t)),
|
(gamedata->numspraycans * sizeof(candata_t)),
|
||||||
PU_STATIC, NULL));
|
PU_STATIC, NULL));
|
||||||
|
|
||||||
for (size_t i = 0; i < js.spraycans.size(); i++)
|
for (size_t i = 0; i < gamedata->numspraycans; i++)
|
||||||
{
|
{
|
||||||
auto& can = js.spraycans[i];
|
auto& can = js.spraycans[i];
|
||||||
gamedata->spraycans[i].col = can.color;
|
|
||||||
gamedata->spraycans[i].map = NEXTMAP_INVALID;
|
// Find the skin color index for the name
|
||||||
if (can.map.empty())
|
bool foundcolor = false;
|
||||||
|
for (size_t j = 0; j < numskincolors; j++)
|
||||||
{
|
{
|
||||||
|
if (can.color == skincolors[j].name)
|
||||||
|
{
|
||||||
|
gamedata->spraycans[i].col = j;
|
||||||
|
foundcolor = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!foundcolor)
|
||||||
|
{
|
||||||
|
// Invalid color name? Ignore the spraycan
|
||||||
|
gamedata->numspraycans -= 1;
|
||||||
|
i -= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
UINT16 mapnum = G_MapNumber(can.map.c_str());
|
|
||||||
if (mapnum < 0)
|
gamedata->spraycans[i].map = NEXTMAP_INVALID;
|
||||||
|
|
||||||
|
UINT16 mapnum = NEXTMAP_INVALID;
|
||||||
|
if (!can.map.empty())
|
||||||
{
|
{
|
||||||
continue;
|
mapnum = G_MapNumber(can.map.c_str());
|
||||||
}
|
}
|
||||||
gamedata->spraycans[i].map = mapnum;
|
gamedata->spraycans[i].map = mapnum;
|
||||||
|
if (mapnum >= nummapheaders)
|
||||||
|
{
|
||||||
|
// Can has not been grabbed on any map, this is intentional.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (gamedata->gotspraycans != i)
|
if (gamedata->gotspraycans != i)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ struct GamedataMapJson final
|
||||||
struct GamedataSprayCanJson final
|
struct GamedataSprayCanJson final
|
||||||
{
|
{
|
||||||
std::string map;
|
std::string map;
|
||||||
uint16_t color;
|
std::string color;
|
||||||
|
|
||||||
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(GamedataSprayCanJson, map, color)
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(GamedataSprayCanJson, map, color)
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue