Define Powerup_names only if EDITOR

This commit is contained in:
Kp 2016-07-09 17:58:34 +00:00
parent 7d07c24a5a
commit fee76e6ced
6 changed files with 35 additions and 13 deletions

View file

@ -96,6 +96,10 @@ enum powerup_type_t : uint8_t
};
#ifdef dsx
namespace dcx {
constexpr unsigned POWERUP_NAME_LENGTH = 16;
}
namespace dsx {
#if defined(DXX_BUILD_DESCENT_I)
#define VULCAN_AMMO_MAX (392u*2)
@ -109,7 +113,10 @@ constexpr unsigned MAX_POWERUP_TYPES = 50;
#define VULCAN_WEAPON_AMMO_AMOUNT 196
#define VULCAN_AMMO_AMOUNT (49*2)
#define POWERUP_NAME_LENGTH 16 // Length of a robot or powerup name.
#ifdef EDITOR
using powerup_names_array = array<array<char, POWERUP_NAME_LENGTH>, MAX_POWERUP_TYPES>;
extern powerup_names_array Powerup_names;
#endif
}
#endif
@ -124,7 +131,6 @@ struct powerup_type_info : public prohibit_void_ptr<powerup_type_info>
namespace dsx {
extern array<powerup_type_info, MAX_POWERUP_TYPES> Powerup_info;
extern array<char[POWERUP_NAME_LENGTH], MAX_POWERUP_TYPES> Powerup_names;
}
void powerup_type_info_read(PHYSFS_File *fp, powerup_type_info &pti);

View file

@ -98,7 +98,9 @@ static short N_ObjBitmaps=0;
static short N_ObjBitmapPtrs=0;
static int Num_robot_ais = 0;
namespace dsx {
array<char[POWERUP_NAME_LENGTH], MAX_POWERUP_TYPES> Powerup_names;
#ifdef EDITOR
powerup_names_array Powerup_names;
#endif
array<char[ROBOT_NAME_LENGTH], MAX_ROBOT_TYPES> Robot_names;
}
@ -1673,7 +1675,9 @@ void bm_read_powerup(char *&arg, int unused_flag)
Powerup_info[n].vclip_num = vclip_none;
Powerup_info[n].hit_sound = sound_none;
Powerup_info[n].size = DEFAULT_POWERUP_SIZE;
#ifdef EDITOR
Powerup_names[n][0] = 0;
#endif
// Process arguments
arg = strtok( NULL, space_tab );
@ -1691,9 +1695,13 @@ void bm_read_powerup(char *&arg, int unused_flag)
} else if (!d_stricmp( arg, "hit_sound" )) {
Powerup_info[n].hit_sound = atoi(equal_ptr);
} else if (!d_stricmp( arg, "name" )) {
Assert(strlen(equal_ptr) < POWERUP_NAME_LENGTH); // Oops, name too long.
strcpy(Powerup_names[n], &equal_ptr[1]);
Powerup_names[n][strlen(Powerup_names[n])-1] = 0;
#ifdef EDITOR
auto &name = Powerup_names[n];
const auto len = strlen(equal_ptr);
assert(len < name.size()); // Oops, name too long.
memcpy(name.data(), &equal_ptr[1], len - 2);
name[len - 2] = 0;
#endif
} else if (!d_stricmp( arg, "size" )) {
Powerup_info[n].size = fl2f(atof(equal_ptr));
}

View file

@ -91,7 +91,9 @@ using std::min;
static short N_ObjBitmapPtrs=0;
static int Num_robot_ais = 0;
namespace dsx {
array<char[POWERUP_NAME_LENGTH], MAX_POWERUP_TYPES> Powerup_names;
#ifdef EDITOR
powerup_names_array Powerup_names;
#endif
array<char[ROBOT_NAME_LENGTH], MAX_ROBOT_TYPES> Robot_names;
}
@ -2008,7 +2010,9 @@ void bm_read_powerup(int unused_flag)
Powerup_info[n].vclip_num = vclip_none;
Powerup_info[n].hit_sound = sound_none;
Powerup_info[n].size = DEFAULT_POWERUP_SIZE;
#ifdef EDITOR
Powerup_names[n][0] = 0;
#endif
// Process arguments
arg = strtok( NULL, space_tab );
@ -2026,9 +2030,13 @@ void bm_read_powerup(int unused_flag)
} else if (!d_stricmp( arg, "hit_sound" )) {
Powerup_info[n].hit_sound = atoi(equal_ptr);
} else if (!d_stricmp( arg, "name" )) {
Assert(strlen(equal_ptr) < POWERUP_NAME_LENGTH); // Oops, name too long.
strcpy(Powerup_names[n], &equal_ptr[1]);
Powerup_names[n][strlen(Powerup_names[n])-1] = 0;
#ifdef EDITOR
auto &name = Powerup_names[n];
const auto len = strlen(equal_ptr);
assert(len < name.size()); // Oops, name too long.
memcpy(name.data(), &equal_ptr[1], len - 2);
name[len - 2] = 0;
#endif
} else if (!d_stricmp( arg, "size" )) {
Powerup_info[n].size = fl2f(atof(equal_ptr));
} else {

View file

@ -688,7 +688,7 @@ int robot_dialog_handler(UI_DIALOG *dlg,const d_event &event, robot_dialog *r)
Cur_goody_id = 0;
case OBJ_POWERUP:
type_text = "Powerup";
id_text = Powerup_names[Cur_goody_id];
id_text = Powerup_names[Cur_goody_id].data();
break;
}

View file

@ -137,7 +137,7 @@ static const char *object_ids(const vcobjptr_t objp)
case OBJ_ROBOT:
return Robot_names[get_robot_id(objp)];
case OBJ_POWERUP:
return Powerup_names[get_powerup_id(objp)];
return Powerup_names[get_powerup_id(objp)].data();
}
return NULL;
}

View file

@ -293,7 +293,7 @@ static void draw_window_label()
case OBJ_CAMERA: viewer_name = "Camera"; break;
case OBJ_POWERUP: viewer_name = "Powerup";
#ifdef EDITOR
viewer_id = Powerup_names[get_powerup_id(vcobjptr(Viewer))];
viewer_id = Powerup_names[get_powerup_id(vcobjptr(Viewer))].data();
#endif
break;
case OBJ_DEBRIS: viewer_name = "Debris"; break;