Я пытаюсь передать структуру с предопределенными данными в функцию, поэтому мне не нужно использовать несколько функций для нескольких структур, но я просто могу использовать 1 функцию для нескольких структур.
Структуры выглядят так:
typedef struct {
char* vehicleName;
char* previewDir;
char* previewName;
} vehicleSpawner;
vehicleSpawner vehicleSport[] = {{"adder","lgm_default","adder"},{"autarch","",""},{"banshee2","lsc_jan2016","banshee2"},{"bullet","lgm_default","bullet"}};
vehicleSpawner vehicleSportTwo[] = {{"adder","lgm_default","adder"},{"autarch","",""},{"banshee2","lsc_jan2016","banshee2"},{"bullet","lgm_default","bullet"}};
vehicleSpawner vehicleSportThree[] = {{"adder","lgm_default","adder"},{"autarch","",""},{"banshee2","lsc_jan2016","banshee2"},{"bullet","lgm_default","bullet"}};
Прямо сейчас, чтобы отобразить информацию в структурах, я должен использовать 3 отдельные функции, как показано ниже.
void vehicleSport() {
menu.title("Sport");
for (int i = 0; i < 3; i++) {
char* name = UI::_GET_LABEL_TEXT(vehicleSport[i].vehicleName);
Hash key = GAMEPLAY::GET_HASH_KEY(vehicleSport[i].vehicleName);
if(!GAMEPLAY::ARE_STRINGS_EQUAL(name, "NULL")) menu.option(name).vehicleSpawn(key).vehiclePreview(vehicleSport[i].previewDir, vehicleSport[i].previewName);
}
}
void vehicleSport2() {
menu.title("Sport Two");
for (int i = 0; i < 3; i++) {
char* name = UI::_GET_LABEL_TEXT(vehicleSportTwo[i].vehicleName);
Hash key = GAMEPLAY::GET_HASH_KEY(vehicleSportTwo[i].vehicleName);
if(!GAMEPLAY::ARE_STRINGS_EQUAL(name, "NULL")) menu.option(name).vehicleSpawn(key).vehiclePreview(vehicleSportTwo[i].previewDir, vehicleSportTwo[i].previewName);
}
}
void vehicleSport3() {
menu.title("Sport Three");
for (int i = 0; i < 3; i++) {
char* name = UI::_GET_LABEL_TEXT(vehicleSportThree[i].vehicleName);
Hash key = GAMEPLAY::GET_HASH_KEY(vehicleSportThree[i].vehicleName);
if(!GAMEPLAY::ARE_STRINGS_EQUAL(name, "NULL")) menu.option(name).vehicleSpawn(key).vehiclePreview(vehicleSportThree[i].previewDir, vehicleSportThree[i].previewName);
}
}
То, чего я хочу достичь - это возможность использовать только одну функцию вместо функции для количества структур, которые у меня есть, и повторять одну и ту же функцию каждый раз.
То, что я пробовал передает его, используя другую функцию, и оттуда получает доступ к нему в «динамической функции», например:
char* vehicleSpawnerTitle;
struct structurename;
void vehicleSpawnerItemMenu() {
menu.banner(vehicleSpawnerTitle);
for (int i = 0; i < sizeof(structurename)/sizeof(structurename[0]); i++) {
Hash key = GAMEPLAY::GET_HASH_KEY(structurename[i].vehicleName);
char* name = UI::_GET_LABEL_TEXT(VEHICLE::GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(key));
if(STREAMING::IS_MODEL_VALID(key) && STREAMING::IS_MODEL_A_VEHICLE(key) && !GAMEPLAY::ARE_STRINGS_EQUAL(name, "NULL")) menu.option(name).vehicleSpawn(key).vehiclePreview(structurename[i].previewDir, structurename[i].previewName);
}
}
void setVehicleSpawnerVar(char* title, struct structname) {
vehicleSpawnerTitle = title;
structurename = structname;
}
Надеюсь, кто-нибудь поможет мне в этом!