Merge pull request #444 from DavidSM64/apr19

This commit is contained in:
David Benepe
2024-04-19 08:31:19 -04:00
committed by GitHub
2 changed files with 344 additions and 15 deletions
+310
View File
@@ -4643,6 +4643,316 @@ typedef enum AssetObjectsEnum {
ASSET_OBJECT_MIDICHSET
} AssetObjectsEnum;
/********** ASSET_LEVEL_OBJECT_TRANSLATION_TABLE **********/
typedef enum AssetLevelObjectTranslationTableEnum {
ASSET_OBJECT_ID_DOME,
ASSET_OBJECT_ID_KREMCAR,
ASSET_OBJECT_ID_BADGERCAR,
ASSET_OBJECT_ID_TORTCAR,
ASSET_OBJECT_ID_CONKACAR,
ASSET_OBJECT_ID_SMARTIETREE,
ASSET_OBJECT_ID_FRONTTYRE,
ASSET_OBJECT_ID_BACKTYRE,
ASSET_OBJECT_ID_HITTESTER,
ASSET_OBJECT_ID_WORLDGATE,
ASSET_OBJECT_ID_MIDIFADE,
ASSET_OBJECT_ID_PARKWARDEN,
ASSET_OBJECT_ID_WARDENSMOKE,
ASSET_OBJECT_ID_ANIMATOR,
ASSET_OBJECT_ID_BOMB,
ASSET_OBJECT_ID_FLOWERS,
ASSET_OBJECT_ID_SMOKE,
ASSET_OBJECT_ID_EXIT,
ASSET_OBJECT_ID_CAMERA_CONTROL,
ASSET_OBJECT_ID_WORLDKEY,
ASSET_OBJECT_ID_SETUPPOINT,
ASSET_OBJECT_ID_AUDIO,
ASSET_OBJECT_ID_AUDIOLINE,
ASSET_OBJECT_ID_DINOSAUR1,
ASSET_OBJECT_ID_CHECKPOINT,
ASSET_OBJECT_ID_LEVELDOOR,
ASSET_OBJECT_ID_FOGCHANGER,
ASSET_OBJECT_ID_AINODE,
ASSET_OBJECT_ID_WEAPONBALLOON,
ASSET_OBJECT_ID_MISSILE,
ASSET_OBJECT_ID_DOME1,
ASSET_OBJECT_ID_SNOWMEN,
ASSET_OBJECT_ID_DOME2,
ASSET_OBJECT_ID_SIGNS,
ASSET_OBJECT_ID_REEDS,
ASSET_OBJECT_ID_BEACHTREE,
ASSET_OBJECT_ID_AUDIOSEQLINE,
ASSET_OBJECT_ID_AUDIOSEQ,
ASSET_OBJECT_ID_STOPWATCHICON,
ASSET_OBJECT_ID_EFFECTBOX,
ASSET_OBJECT_ID_COINCREATOR,
ASSET_OBJECT_ID_TREASURESUCKER,
ASSET_OBJECT_ID_BRIDGE,
ASSET_OBJECT_ID_LAVASPURT,
ASSET_OBJECT_ID_BOMBEXPLOSION,
ASSET_OBJECT_ID_WBALLOONPOP,
ASSET_OBJECT_ID_BUBBLEWEAPON,
ASSET_OBJECT_ID_DOME5,
ASSET_OBJECT_ID_DINOISLE,
ASSET_OBJECT_ID_AUDIOREVERB,
ASSET_OBJECT_ID_POSARROW,
ASSET_OBJECT_ID_WINDSAIL,
ASSET_OBJECT_ID_COLLECTEGG,
ASSET_OBJECT_ID_SKYCONTROL,
ASSET_OBJECT_ID_STOPWATCHHAND,
ASSET_OBJECT_ID_KREMLINHOVER,
ASSET_OBJECT_ID_BADGERHOVER,
ASSET_OBJECT_ID_TORTHOVER,
ASSET_OBJECT_ID_CONKAHOVER,
ASSET_OBJECT_ID_DOME3,
ASSET_OBJECT_ID_GLOVE,
ASSET_OBJECT_ID_FLAMINGTORCH,
ASSET_OBJECT_ID_MIST,
ASSET_OBJECT_ID_DOME4,
ASSET_OBJECT_ID_TEXSCROLL,
ASSET_OBJECT_ID_FAN,
ASSET_OBJECT_ID_KREMPLANE,
ASSET_OBJECT_ID_BADGERPLANE,
ASSET_OBJECT_ID_TORTPLANE,
ASSET_OBJECT_ID_CONKA,
ASSET_OBJECT_ID_LOG,
ASSET_OBJECT_ID_MODECHANGE,
ASSET_OBJECT_ID_JETENGINE,
ASSET_OBJECT_ID_BLUEBERRYBUSH,
ASSET_OBJECT_ID_RUBBERSNOWTREE,
ASSET_OBJECT_ID_SKINNYSNOWTREE,
ASSET_OBJECT_ID_XMASTREE,
ASSET_OBJECT_ID_ALPINESNOWTREE,
ASSET_OBJECT_ID_RUBBERTREE,
ASSET_OBJECT_ID_BOULDER,
ASSET_OBJECT_ID_STOPWATCHMAN,
ASSET_OBJECT_ID_TIGERCAR,
ASSET_OBJECT_ID_TROPHYCAB,
ASSET_OBJECT_ID_COIN,
ASSET_OBJECT_ID_BANJOCAR,
ASSET_OBJECT_ID_CHICKENCAR,
ASSET_OBJECT_ID_MOUSECAR,
ASSET_OBJECT_ID_TIGERHOVER,
ASSET_OBJECT_ID_BANJOHOVER,
ASSET_OBJECT_ID_CHICKENHOVER,
ASSET_OBJECT_ID_MOUSEHOVER,
ASSET_OBJECT_ID_TIGPLANE,
ASSET_OBJECT_ID_BANJOPLANE,
ASSET_OBJECT_ID_CHICKENPLANE,
ASSET_OBJECT_ID_MOUSEPLANE,
ASSET_OBJECT_ID_EGGCREATOR,
ASSET_OBJECT_ID_CHARACTERFLAG,
ASSET_OBJECT_ID_FLYCOIN,
ASSET_OBJECT_ID_GOLDENBALLOON,
ASSET_OBJECT_ID_DOME6,
ASSET_OBJECT_ID_DOME10,
ASSET_OBJECT_ID_PALMTREETOP,
ASSET_OBJECT_ID_WHALE,
ASSET_OBJECT_ID_DINOSAUR2,
ASSET_OBJECT_ID_DINOSAUR3,
ASSET_OBJECT_ID_RGBALIGHT,
ASSET_OBJECT_ID_PALMPLANT,
ASSET_OBJECT_ID_SNOWBALL,
ASSET_OBJECT_ID_BUOY,
ASSET_OBJECT_ID_SILVERCOIN,
ASSET_OBJECT_ID_WEATHER,
ASSET_OBJECT_ID_AIRZIPPERS,
ASSET_OBJECT_ID_FIRTREE,
ASSET_OBJECT_ID_RAMPWHALE,
ASSET_OBJECT_ID_RAMPSWITCH,
ASSET_OBJECT_ID_SEAMONSTER,
ASSET_OBJECT_ID_BONUSGEM,
ASSET_OBJECT_ID_BONUS,
ASSET_OBJECT_ID_DOME7,
ASSET_OBJECT_ID_INTROCAM,
ASSET_OBJECT_ID_MAGICCARPET,
ASSET_OBJECT_ID_LENSFLARE,
ASSET_OBJECT_ID_LENSFLARESWITCH,
ASSET_OBJECT_ID_HAYSTACK,
ASSET_OBJECT_ID_PILLAR,
ASSET_OBJECT_ID_BOULDERANIM,
ASSET_OBJECT_ID_BOOST,
ASSET_OBJECT_ID_MONORAIL,
ASSET_OBJECT_ID_TROPHY,
ASSET_OBJECT_ID_GOLDTROPHY,
ASSET_OBJECT_ID_OILSLICK,
ASSET_OBJECT_ID_PIGHEADCOLOURS,
ASSET_OBJECT_ID_DOME11,
ASSET_OBJECT_ID_RARELOGO,
ASSET_OBJECT_ID_CHECKARROW,
ASSET_OBJECT_ID_BIGBOSSDOOR,
ASSET_OBJECT_ID_FIREBALLATTRACT,
ASSET_OBJECT_ID_FIREBALL,
ASSET_OBJECT_ID_SNOWBALLBOSS,
ASSET_OBJECT_ID_FROG,
ASSET_OBJECT_ID_TICKTROPHY,
ASSET_OBJECT_ID_SHIELD,
ASSET_OBJECT_ID_SELECTIONSHADOW,
ASSET_OBJECT_ID_BUBBLER,
ASSET_OBJECT_ID_PLANETYRE,
ASSET_OBJECT_ID_DOME8,
ASSET_OBJECT_ID_PALMTREETOPCHEA,
ASSET_OBJECT_ID_DOME9,
ASSET_OBJECT_ID_ANIMATION,
ASSET_OBJECT_ID_TIGERANIMPLANE,
ASSET_OBJECT_ID_BADGERANIMWALK,
ASSET_OBJECT_ID_ANIMCAMERA,
ASSET_OBJECT_ID_TIMBERDANCER,
ASSET_OBJECT_ID_PIPSYDANCER,
ASSET_OBJECT_ID_EMPTYHOVER,
ASSET_OBJECT_ID_ANIMDOME,
ASSET_OBJECT_ID_TIMBERANIMCAR,
ASSET_OBJECT_ID_NOENTRYDOOR,
ASSET_OBJECT_ID_N64LOGO,
ASSET_OBJECT_ID_WIZGHOSTS,
ASSET_OBJECT_ID_KREMSELECT,
ASSET_OBJECT_ID_BADGERSELECT,
ASSET_OBJECT_ID_TORTSELECT,
ASSET_OBJECT_ID_TIGERSELECT,
ASSET_OBJECT_ID_BANJOSELECT,
ASSET_OBJECT_ID_CHICKSELECT,
ASSET_OBJECT_ID_MOUSESELECT,
ASSET_OBJECT_ID_LEEFAN,
ASSET_OBJECT_ID_GBPARKWARDEN,
ASSET_OBJECT_ID_GOLDBALOONSPRIT,
ASSET_OBJECT_ID_LIGHTHOUSE,
ASSET_OBJECT_ID_SELECTIONHILL,
ASSET_OBJECT_ID_WIDESCREEN,
ASSET_OBJECT_ID_OVERRIDEPOS,
ASSET_OBJECT_ID_ANIMCAR,
ASSET_OBJECT_ID_TRIGGER,
ASSET_OBJECT_ID_BOLTGLOW,
ASSET_OBJECT_ID_POSTFORPARTY,
ASSET_OBJECT_ID_SPARKLYTHING,
ASSET_OBJECT_ID_ANIMDINOSAUR2,
ASSET_OBJECT_ID_TIMERANIMHOVER,
ASSET_OBJECT_ID_ANIMBADGERPLANE,
ASSET_OBJECT_ID_ANIMDINOSAUR1,
ASSET_OBJECT_ID_ANIMMOUSECAR,
ASSET_OBJECT_ID_ANIMTORT,
ASSET_OBJECT_ID_CHICKENANIMPLAN,
ASSET_OBJECT_ID_EMPTYHOVERANIM,
ASSET_OBJECT_ID_RANGETRIGGER,
ASSET_OBJECT_ID_KREMANIM,
ASSET_OBJECT_ID_MOUSEHOVERANIM,
ASSET_OBJECT_ID_TORTRUNNER,
ASSET_OBJECT_ID_ANIMBANJOPLANE,
ASSET_OBJECT_ID_CONKSELECT,
ASSET_OBJECT_ID_LASERGUN,
ASSET_OBJECT_ID_CONKAANIMCAR,
ASSET_OBJECT_ID_WAVEGENERATOR,
ASSET_OBJECT_ID_WAVEPOWER,
ASSET_OBJECT_ID_BUTTERFLY,
ASSET_OBJECT_ID_LASERBOLT,
ASSET_OBJECT_ID_FISH,
ASSET_OBJECT_ID_ANIMGENIE,
ASSET_OBJECT_ID_SPACESHIP1,
ASSET_OBJECT_ID_SPACESHIP2,
ASSET_OBJECT_ID_POLYGOLDBALOON,
ASSET_OBJECT_ID_GROUNDZIPPER,
ASSET_OBJECT_ID_ASTEROID,
ASSET_OBJECT_ID_PIRATESHIP,
ASSET_OBJECT_ID_BRIGHTSTAR,
ASSET_OBJECT_ID_WATERZIPPERS,
ASSET_OBJECT_ID_SPACESHIP3,
ASSET_OBJECT_ID_DOME12,
ASSET_OBJECT_ID_CHALDOOR,
ASSET_OBJECT_ID_STILLFROG,
ASSET_OBJECT_ID_PARKTROPHY,
ASSET_OBJECT_ID_BUTTERFLYBAIT,
ASSET_OBJECT_ID_BOSSDOOR,
ASSET_OBJECT_ID_PWSAFETELEPOINT,
ASSET_OBJECT_ID_TRICKYTOPS,
ASSET_OBJECT_ID_FLYINGCARPET,
ASSET_OBJECT_ID_DOME14,
ASSET_OBJECT_ID_PIGBOSS,
ASSET_OBJECT_ID_DOME13,
ASSET_OBJECT_ID_DOME15,
ASSET_OBJECT_ID_WALRUS,
ASSET_OBJECT_ID_DRAGONBOSS,
ASSET_OBJECT_ID_LAMPPOST,
ASSET_OBJECT_ID_SPACETREE,
ASSET_OBJECT_ID_MAGICRING,
ASSET_OBJECT_ID_HEADFORPOINT,
ASSET_OBJECT_ID_HOMING,
ASSET_OBJECT_ID_SPACECOLUMN2,
ASSET_OBJECT_ID_SPACECOLUMN3,
ASSET_OBJECT_ID_OCTOPUS,
ASSET_OBJECT_ID_PIGFACEANIMATOR,
ASSET_OBJECT_ID_PTERODACTYL,
ASSET_OBJECT_ID_SMOKECLOUD,
ASSET_OBJECT_ID_DOME16,
ASSET_OBJECT_ID_SWCAR,
ASSET_OBJECT_ID_AMULETPIECE1,
ASSET_OBJECT_ID_AMULETPIECE2,
ASSET_OBJECT_ID_AMULETPIECE3,
ASSET_OBJECT_ID_AMULETPIECE4,
ASSET_OBJECT_ID_STOPWATCHSELECT,
ASSET_OBJECT_ID_TICKTOCKHOVER,
ASSET_OBJECT_ID_TICKTOCKPLANE,
ASSET_OBJECT_ID_SWAMULET1,
ASSET_OBJECT_ID_SWAMULET2,
ASSET_OBJECT_ID_SWAMULET3,
ASSET_OBJECT_ID_SWAMULET4,
ASSET_OBJECT_ID_ANIMKEY,
ASSET_OBJECT_ID_TELEPORT,
ASSET_OBJECT_ID_DIDDYSELECT,
ASSET_OBJECT_ID_ROCKETSIGNPOST,
ASSET_OBJECT_ID_DIDDYHOVER,
ASSET_OBJECT_ID_LIGHTHOUSE1,
ASSET_OBJECT_ID_DIDDYCAR,
ASSET_OBJECT_ID_ANIMGENIE2,
ASSET_OBJECT_ID_DIDDYPLANE,
ASSET_OBJECT_ID_BANJODANCER,
ASSET_OBJECT_ID_SPACECOLUMN1,
ASSET_OBJECT_ID_MISSILEGLOW,
ASSET_OBJECT_ID_TERRYBOSS,
ASSET_OBJECT_ID_HOMINGGLOW,
ASSET_OBJECT_ID_TICKTOCKDANCER,
ASSET_OBJECT_ID_CONKADANCER,
ASSET_OBJECT_ID_GOLDCOIN,
ASSET_OBJECT_ID_TTDOOR,
ASSET_OBJECT_ID_MIDIFADEPOINT,
ASSET_OBJECT_ID_WIZPIGSHIP,
ASSET_OBJECT_ID_TRICKYANIM,
ASSET_OBJECT_ID_DOOROPENER,
ASSET_OBJECT_ID_MINISHIP,
ASSET_OBJECT_ID_OCTOBUBBLE,
ASSET_OBJECT_ID_DOME17,
ASSET_OBJECT_ID_DRAGONANIM,
ASSET_OBJECT_ID_ANIMOCTO,
ASSET_OBJECT_ID_PIGBOSS2,
ASSET_OBJECT_ID_WIZPIG,
ASSET_OBJECT_ID_WALRUS_ANIM,
ASSET_OBJECT_ID_PIGLOG,
ASSET_OBJECT_ID_WIZPIGROCKET,
ASSET_OBJECT_ID_KEITHPIGDOOR,
ASSET_OBJECT_ID_LIGHTNING,
ASSET_OBJECT_ID_MAGNETFX,
ASSET_OBJECT_ID_PIGROCKETEER,
ASSET_OBJECT_ID_PARTICLES2,
ASSET_OBJECT_ID_PIGBOULDER,
ASSET_OBJECT_ID_PIGBOULDER2,
ASSET_OBJECT_ID_PIGBOULDER3,
ASSET_OBJECT_ID_PIGBOULDER4,
ASSET_OBJECT_ID_PIGBOULDER5,
ASSET_OBJECT_ID_BIGPLANET,
ASSET_OBJECT_ID_ROCKETBIT1,
ASSET_OBJECT_ID_ROCKETBIT2,
ASSET_OBJECT_ID_LEVELNAME,
ASSET_OBJECT_ID_TRICKYANIM2,
ASSET_OBJECT_ID_TRICKYANIM3,
ASSET_OBJECT_ID_GENIEHEAD,
ASSET_OBJECT_ID_OCTOBOMB,
ASSET_OBJECT_ID_MIDICHSET,
ASSET_OBJECT_ID_ANIMGENIE3,
NULL_OBJECT_301_ID,
ASSET_OBJECT_ID_LIGHTHOUSE2,
ASSET_OBJECT_ID_CHICKENCHARACTE,
ASSET_OBJECT_ID_INFOPOINT
} AssetLevelObjectTranslationTableEnum;
/********** ASSET_AUDIO **********/
typedef enum AssetAudioEnum {
@@ -71,8 +71,8 @@ void AssetEnums::_write_main_asset_enum(std::vector<std::string> &mainOrder) {
}
void AssetEnums::_write_single_asset_section_enums(const std::string &sectionId, JsonFile *sectionJson) {
if(sectionId != "ASSET_FONTS") {
return; // This function is just for the fonts.
if((sectionId != "ASSET_FONTS") && (sectionId != "ASSET_LEVEL_OBJECT_TRANSLATION_TABLE")) {
return;
}
_cHeader.write_newline();
_cHeader.write_header_comment(sectionId.c_str());
@@ -80,10 +80,10 @@ void AssetEnums::_write_single_asset_section_enums(const std::string &sectionId,
std::string sectionEnumName = StringHelper::upper_snake_case_to_pascal_case(sectionId) + "Enum";
WriteableCEnum sectionEnum(sectionEnumName);
fs::path fontSubfolder = sectionJson->get_path("/folder");
fs::path fontJsonPath = _settings.pathToAssets;
if(!fontSubfolder.empty()) {
fontJsonPath /= fontSubfolder;
fs::path subFolder = sectionJson->get_path("/folder");
fs::path jsonPath = _settings.pathToAssets;
if(!subFolder.empty()) {
jsonPath /= subFolder;
}
if(sectionJson->is_value_null("/filename")) {
@@ -91,21 +91,40 @@ void AssetEnums::_write_single_asset_section_enums(const std::string &sectionId,
return;
}
fontJsonPath /= sectionJson->get_string("/filename");
JsonFile *fontsJson;
DebugHelper::assert(JsonHelper::get().get_file(fontJsonPath, &fontsJson),
jsonPath /= sectionJson->get_string("/filename");
JsonFile *assetJson;
DebugHelper::assert(JsonHelper::get().get_file(jsonPath, &assetJson),
"(AssetEnums::_write_single_asset_section_enums) Could not load fonts json!");
std::vector<std::string> fontIds;
fontsJson->get_array<std::string>("/fonts-order", fontIds);
for(std::string &fontId : fontIds) {
sectionEnum.add_symbol(fontId);
if(sectionId == "ASSET_FONTS") {
std::vector<std::string> fontIds;
assetJson->get_array<std::string>("/fonts-order", fontIds);
for(std::string &fontId : fontIds) {
sectionEnum.add_symbol(fontId);
}
} else if(sectionId == "ASSET_LEVEL_OBJECT_TRANSLATION_TABLE") {
size_t tableLen = assetJson->length_of_array("/table");
for(size_t i = 0; i < tableLen; i++) {
std::string ptr = "/table/" + std::to_string(i);
if(assetJson->is_value_null(ptr)) {
sectionEnum.add_symbol("NULL_OBJECT_" + std::to_string(i) + "_ID");
continue;
}
std::string objectId = assetJson->get_string(ptr);
if(StringHelper::starts_with(objectId, "ASSET_OBJECT_")) {
objectId.insert(13, "ID_");
} else {
objectId += "_ID";
}
sectionEnum.add_symbol(objectId);
}
}
_cHeader.write_raw_text(sectionEnum.to_string());
}
void AssetEnums::_write_asset_section_enums(const std::string &sectionId, JsonFile *sectionJson) {
std::string sectionEnumName = StringHelper::upper_snake_case_to_pascal_case(sectionId) + "Enum";
WriteableCEnum sectionEnum(sectionEnumName);