Compare commits

...
Author SHA1 Message Date
Cliff Gordon 5f083ff63b Automated 3.7.4 RC2 versioning commit 2016-05-05 11:12:29 -05:00
MageKing17 fdea8667e0 Merge pull request #603 from asarium/backport/592
[3.7.4] Removed support for // comments in FRED
2016-05-02 13:00:24 -07:00
downwash b4c3c37714 Removed support for // comments in FRED 2016-05-02 16:57:32 +02:00
m!m 4f1e502ead Merge pull request #602 from MageKing17/backport/pr-600
[3.7.4] Make VS 2013 and 2015 use the copy of gc.exe like 2010 does.
2016-05-02 10:07:50 +02:00
MageKing17 5aab236b5e Make VS 2013 and 2015 use the copy of gc.exe like 2010 does.
Recent update to VS 2015 Community Edition appears to have removed gc.exe for some reason; the safest thing to do would seem to be to go back to using the copy of it we were already keeping around for VS 2010 Express.
2016-05-01 21:06:40 -07:00
MageKing17 9e50ebe3a6 Make ship templates default first_time to true, like ship classes. (#597)
Otherwise, the first_time code never gets evaluated for template-based ships and you never get engine glows from species. Fixes issue #594.
2016-04-18 22:43:13 +02:00
MageKing17 047b8bd559 Merge pull request #593 from niffiwan/backport/591
[3.7.4] Stop joystick hat binds being triggered spuriously
2016-04-17 04:22:40 -07:00
niffiwan fac6848818 Stop joystick hat binds being triggered spuriously
There was a bug in the controls code that meant trigger type controls
bound to a joystick hat could be triggered by unrelated mouse button
presses. i.e. bind "hat-back" to cycle secondary weapons and secondary
banks would change when you fired with left mouse button.

Root cause is left bitshifting by 32 or more, which is implementation
defined and at least on Linux/GCC resulted in the above behaviour.
2016-04-17 20:03:06 +10:00
niffiwan 88632db04c Merge pull request #590 from asarium/backport/587
[3.7.4] Make new registry configurable on commandline (#587)
2016-04-11 16:22:40 +10:00
m!m 22da854c0f Make new registry configurable on commandline (#587) 2016-04-10 13:21:24 +02:00
m!m 5b15058448 Merge pull request #588 from niffiwan/backport/586
[3.7.4] Fix issue with memcpy on overlapping memory
2016-04-07 14:59:05 +02:00
niffiwan 4c8bd08485 Fix issue with memcpy on overlapping memory
Triggered animations (e.g. models with rotating afterburner flaps)
could trigger a memcpy on overlapping memory. This may not have caused
issues, but is undefined behaviour according to the spec
Also see #574
2016-04-07 19:29:01 +10:00
m!m bae2065ae0 Merge pull request #585 from niffiwan/backport/575
[3.7.4] Fix new[] vs delete mismatch
2016-04-06 13:37:22 +02:00
niffiwan f37751d484 Fix new[] vs delete mismatch
Found by address sanitiser
2016-04-06 19:29:53 +10:00
MageKing17 38784dfbf3 Merge pull request #584 from Goober5000/backport/issue-580
[3.7.4] Backport/issue 580
2016-04-03 22:49:58 -07:00
Goober5000 f53dd7b6b3 fix a bug in the option comparison, and also add sanity checking for infinite rotation rates 2016-04-04 00:17:40 -04:00
Goober5000 bbad561b2e use $rotate, $rotate_rate, and $rotate_time, and their $dumb_ equivalents, with proper backwards compatibility 2016-04-04 00:17:32 -04:00
MageKing17 97d2ea08ef Merge pull request #578 from asarium/backport/577
Fix issue #572
2016-04-02 18:46:26 -07:00
asarium dea3a0393d Fix issue #572 2016-04-01 15:27:38 +02:00
niffiwan d2e9bb6222 Merge pull request #571 from MageKing17/backport/pr-566
[3.7.4] Fix for Mantis 3170
2016-03-29 22:48:04 +10:00
Lari Nieminen a56ac966b3 Fix for Mantis 3170
Despite what the original report claims, the ship.cpp change described in it actually works.
2016-03-29 03:01:52 -07:00
MageKing17 63eff426dc Merge pull request #570 from scp-fs2open/backport/cleanup_weapon_model_unload
[3.7.4] Cleanup weapon_info when models are unloaded
2016-03-29 02:57:57 -07:00
niffiwan 762f999ba1 Cleanup weapon_info when models are unloaded [backport]
Avoids the assertions at model/modelread.cpp:3062
ASSERTION FAILED: "Polygon_models[num]->id == model_num" (etc)
2016-03-29 18:47:25 +10:00
Fabian Woltermann 4cf85a7f85 Merge pull request #561 from Goober5000/backport/issue-560
fix the $dumb_rotate turn rate calculation to align with regular $rotate
2016-03-22 13:48:40 +01:00
Goober5000 2d78121cc3 fix the $dumb_rotate turn rate calculation to align with regular $rotate 2016-03-21 23:26:28 -04:00
Fabian Woltermann 5f4a3a92be Merge pull request #558 from asarium/fs2_open_3_7_4
[3.7.4] Backport some bug fixes
2016-03-18 12:36:20 +01:00
asarium 488192214d Add validation when parsing a file spec
This issue was spotted by Taranis who encountered an assertion caused by
an empty file name. This check will make sure that every string parsed
as a file name will at least contain one character.
2016-03-18 12:10:57 +01:00
asarium 5b1ff86f42 Fix Windows Registry configuration 2016-03-18 12:10:48 +01:00
asarium c9fe371a4f Fix flag file inconsistency 2016-03-18 12:10:19 +01:00
Fabian Woltermann 97017ec478 Merge pull request #557 from MageKing17/backport/issue-347
[3.7.4] Fix mission screen grid by changing the drawing of the lines.
2016-03-18 10:16:41 +01:00
MageKing17 911b792a7a Fix mission screen grid by changing the drawing of the lines.
Instead of using the clipping plane, simply don't draw the grid below the scanline. Fixes issue #347.
2016-03-17 06:06:37 -07:00
Cliff Gordon 81a2e93e54 Automated 3.7.4 RC1 versioning commit 2016-03-07 13:48:11 -06:00
30 changed files with 549 additions and 462 deletions

No files matched your search

+15 -1
View File
@@ -187,7 +187,6 @@ Flag exe_params[] =
{ "-no_glsl", "Disable GLSL (shader) support", true, 0, EASY_DEFAULT, "Troubleshoot", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-no_glsl", },
{ "-ati_swap", "Fix colour issues on some ATI cards", true, 0, EASY_DEFAULT, "Troubleshoot", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-ati_swap", },
{ "-no_3d_sound", "Use only 2D/stereo for sound effects", true, 0, EASY_DEFAULT, "Troubleshoot", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-no_3d_sound", },
{ "-disable_glsl_model","Don't use shaders for model rendering", true, 0, EASY_DEFAULT, "Troubleshoot", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-disable_glsl_model", },
{ "-mipmap", "Enable mipmapping", true, 0, EASY_DEFAULT_MEM, "Troubleshoot", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-mipmap", },
#ifndef SCP_UNIX
{ "-disable_di_mouse", "Don't use DirectInput for mouse control", true, 0, EASY_DEFAULT, "Troubleshoot", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-disable_di_mouse", },
@@ -198,6 +197,9 @@ Flag exe_params[] =
{ "-no_batching", "Disable batched model rendering", true, 0, EASY_DEFAULT, "Troubleshoot", "", },
{ "-no_geo_effects", "Disable geometry shader for effects", true, 0, EASY_DEFAULT, "Troubleshoot", "", },
{ "-set_cpu_affinity", "Sets processor affinity to config value", true, 0, EASY_DEFAULT, "Troubleshoot", "", },
#ifdef WIN32
{ "-fix_registry", "Use a different registry path", true, 0, EASY_DEFAULT, "Troubleshoot", "", },
#endif
{ "-ingame_join", "Allow in-game joining", true, 0, EASY_DEFAULT, "Experimental", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-ingame_join", },
{ "-voicer", "Enable voice recognition", true, 0, EASY_DEFAULT, "Experimental", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-voicer", },
@@ -428,6 +430,9 @@ cmdline_parm old_collision_system("-old_collision", NULL, AT_NONE); // Cmdline_o
cmdline_parm gl_finish ("-gl_finish", NULL, AT_NONE);
cmdline_parm no_geo_sdr_effects("-no_geo_effects", NULL, AT_NONE);
cmdline_parm set_cpu_affinity("-set_cpu_affinity", NULL, AT_NONE);
#ifdef WIN32
cmdline_parm fix_registry("-fix_registry", NULL, AT_NONE);
#endif
int Cmdline_load_all_weapons = 0;
int Cmdline_nohtl = 0;
@@ -445,6 +450,9 @@ char* Cmdline_keyboard_layout = NULL;
bool Cmdline_gl_finish = false;
bool Cmdline_no_geo_sdr_effects = false;
bool Cmdline_set_cpu_affinity = false;
#ifdef WIN32
bool Cmdline_alternate_registry_path = false;
#endif
// Developer/Testing related
cmdline_parm start_mission_arg("-start_mission", "Skip mainhall and run this mission", AT_STRING); // Cmdline_start_mission
@@ -1618,6 +1626,12 @@ bool SetCmdlineParams()
Cmdline_set_cpu_affinity = true;
}
#ifdef WIN32
if (fix_registry.found()) {
Cmdline_alternate_registry_path = true;
}
#endif
if ( snd_preload_arg.found() )
{
Cmdline_snd_preload = 1;
+3
View File
@@ -135,6 +135,9 @@ extern char* Cmdline_keyboard_layout;
extern bool Cmdline_gl_finish;
extern bool Cmdline_no_geo_sdr_effects;
extern bool Cmdline_set_cpu_affinity;
#ifdef WIN32
extern bool Cmdline_alternate_registry_path;
#endif
// Developer/Testing related
extern char *Cmdline_start_mission;
+2 -1
View File
@@ -2257,7 +2257,8 @@ int check_control_used(int id, int key)
return 0;
}
if ((Control_config[id].key_id == key) || joy_down_count(Control_config[id].joy_id, 1) || mouse_down_count(1 << Control_config[id].joy_id)) {
if ((Control_config[id].key_id == key) || joy_down_count(Control_config[id].joy_id, 1) ||
((Control_config[id].joy_id >= 0) && (Control_config[id].joy_id < MOUSE_NUM_BUTTONS) && mouse_down_count(1 << Control_config[id].joy_id))) {
//mprintf(("Key used %d", key));
control_used(id);
return 1;
+1 -1
View File
@@ -617,7 +617,7 @@ void control_config_common_close()
{
// only need to worry control presets for now
for (auto ii = Control_config_presets.cbegin(); ii != Control_config_presets.cend(); ++ii) {
delete * ii;
delete[] * ii;
}
}
+4 -4
View File
@@ -621,7 +621,7 @@ CAPTION "About FRED2"
FONT 8, "MS Sans Serif"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,10,17,20,20,SS_REALSIZEIMAGE
LTEXT "FRED2_OPEN - FreeSpace Editor, Version 3.7.3 OpenGL",IDC_STATIC,39,8,184,10,SS_NOPREFIX
LTEXT "FRED2_OPEN - FreeSpace Editor, Version 3.7.4 RC2 OpenGL",IDC_STATIC,39,8,184,10,SS_NOPREFIX
LTEXT "Copyright © 1999 Volition, Inc. All Rights Reserved",IDC_STATIC,39,17,164,8
DEFPUSHBUTTON "OK",IDOK,229,7,48,14,WS_GROUP
LTEXT """Fred2 is the omega of all giant unwieldy pieces of code. Its big, its horrifying, and it just doesn't care. View it at your own risk."" - Dave Baranec",IDC_STATIC,39,62,238,20
@@ -2121,12 +2121,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Volition Inc."
VALUE "FileDescription", "Fred 2 Open"
VALUE "FileVersion", "3.7.3.000000"
VALUE "FileVersion", "3.7.4.20160505"
VALUE "InternalName", "Fred 2 Open"
VALUE "LegalCopyright", "Copyright © 1998"
VALUE "OriginalFilename", "fred2.exe"
VALUE "ProductName", "Fred 2 Open"
VALUE "ProductVersion", "3.7.3"
VALUE "ProductVersion", "3.7.4 RC2"
END
END
BLOCK "VarFileInfo"
@@ -2698,7 +2698,7 @@ IDC_CURSOR2 CURSOR "res\\cursor2.cur"
STRINGTABLE
BEGIN
IDR_MAINFRAME "FRED2_OPEN 3.7.3 - FreeSpace2 Mission Editor\nUntitled\nFRED2\nFreeSpace2 Missions (*.fs2)\n.fs2\nFreeSpace2Mission\nFreeSpace2 Mission"
IDR_MAINFRAME "FRED2_OPEN 3.7.4 RC2 - FreeSpace2 Mission Editor\nUntitled\nFRED2\nFreeSpace2 Missions (*.fs2)\n.fs2\nFreeSpace2Mission\nFreeSpace2 Mission"
END
STRINGTABLE
+9 -9
View File
@@ -2824,6 +2824,11 @@ void CFred_mission_save::parse_comments(int newlines)
}
while (*raw_ptr != EOF_CHAR) {
// state values (as far as I could figure out):
// 0 - raw_ptr not inside comment
// 1 - raw_ptr inside /**/ comment
// 2 - raw_ptr inside ; (newline-delimited) comment
// 3,4 - raw_ptr inside ;; (FSO version) comment
if (!state) {
if (token_found && (*raw_ptr == *token_found))
if (!strnicmp(raw_ptr, token_found, strlen(token_found))) {
@@ -2878,11 +2883,6 @@ void CFred_mission_save::parse_comments(int newlines)
}
}
if ((*raw_ptr == '/') && (raw_ptr[1] == '/')) {
comment_start = raw_ptr;
state = 2;
}
if (*raw_ptr == '\n')
flag = 1;
@@ -2926,22 +2926,22 @@ void CFred_mission_save::parse_comments(int newlines)
if (first_comment && !flag)
fout("\t\t");
state = raw_ptr[2];
const char tmp = raw_ptr[2];
raw_ptr[2] = 0;
fout("%s", comment_start);
raw_ptr[2] = (char)state;
raw_ptr[2] = tmp;
state = first_comment = flag = 0;
}
if ( (*raw_ptr == ';') && (raw_ptr[1] == ';') && (state == 3) ) {
state = raw_ptr[2];
const char tmp = raw_ptr[2];
raw_ptr[2] = 0;
if (version_added)
fso_comment_pop();
else
version_added = true;
fso_comment_push(comment_start);
raw_ptr[2] = (char)state;
raw_ptr[2] = tmp;
state = first_comment = flag = 0;
raw_ptr++;
}
+4 -4
View File
@@ -336,8 +336,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,7,3,000000
PRODUCTVERSION 3,7,3,000000
FILEVERSION 3,7,4,20160505
PRODUCTVERSION 3,7,4,20160505
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -354,12 +354,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Volition Inc."
VALUE "FileDescription", "FreeSpace 2 Open"
VALUE "FileVersion", "3.7.3.000000"
VALUE "FileVersion", "3.7.4.20160505"
VALUE "InternalName", "FreeSpace 2 Open"
VALUE "LegalCopyright", "Copyright © 1998"
VALUE "OriginalFilename", "fs2.exe"
VALUE "ProductName", "FreeSpace 2 Open"
VALUE "ProductVersion", "3.7.3"
VALUE "ProductVersion", "3.7.4 RC2"
END
END
BLOCK "VarFileInfo"
+2 -2
View File
@@ -36,8 +36,8 @@
#define FS_VERSION_MAJOR 3 // major version
#define FS_VERSION_MINOR 7 // increase by 1 for minor revs
#define FS_VERSION_BUILD 3 // bugfix release
#define FS_VERSION_REVIS 000000 // SVN revision
#define FS_VERSION_BUILD 4 // bugfix release
#define FS_VERSION_REVIS 20160505 // SVN revision
//#define FS_VERSION_IDENT NOX("custom") // special build release identifier, must be a string (don't define unless it's supposed to be used!!)
namespace version
+7 -3
View File
@@ -1726,8 +1726,6 @@ void draw_model_rotating(model_render_params *render_info, int model_id, int x1,
float size = pm->rad*0.7f;
float start_scale = MIN(time,0.5f)*2.5f;
float offset = size*0.5f*MIN(MAX(time-3.0f,0.0f),0.6f)*1.66667f;
if ( (time < 1.5f) && (time >= 0.5f) ) // Clip the grid if were in phase 1
render_info->set_clip_plane(plane_point,wire_normal);
g3_start_instance_angles(&vmd_zero_vector,&view_angles);
@@ -1754,6 +1752,10 @@ void draw_model_rotating(model_render_params *render_info, int model_id, int x1,
gr_set_color(0,200,0);
g3_start_instance_angles(&vmd_zero_vector,&view_angles);
if (time < 1.5f) {
stop.xyz.z = -clip;
}
for (i = -3; i < 4; i++) {
start.xyz.x = stop.xyz.x = size*0.333f*i;
g3_draw_htl_line(&start,&stop);
@@ -1762,8 +1764,10 @@ void draw_model_rotating(model_render_params *render_info, int model_id, int x1,
start.xyz.x = size;
stop.xyz.x = -size;
for (i = -3; i < 4; i++) {
for (i = 3; i > -4; i--) {
start.xyz.z = stop.xyz.z = size*0.333f*i+offset*0.5f;
if ((time < 1.5f) && (start.xyz.z <= -clip))
break;
g3_draw_htl_line(&start,&stop);
}
+1 -1
View File
@@ -234,7 +234,7 @@ void triggered_rotation::add_queue(queued_animation *the_queue, int dir)
if (i != n_queue) {
// replace if it's not the last item on the list
if ( i < (MAX_TRIGGERED_ANIMATIONS-1) )
memcpy( &queue_tmp[i], &queue_tmp[i+1], sizeof(queued_animation) * (MAX_TRIGGERED_ANIMATIONS-(i+1)) );
memmove( &queue_tmp[i], &queue_tmp[i+1], sizeof(queued_animation) * (MAX_TRIGGERED_ANIMATIONS-(i+1)) );
// ok these two animations cancelled each other out, so he doesn't get on the queue
n_queue--;
+117 -16
View File
@@ -184,6 +184,7 @@ void model_unload(int modelnum, int force)
if (!force && (--pm->used_this_mission > 0))
return;
mprintf(("Unloading model '%s' from slot '%i'\n", pm->filename, num));
// so that the textures can be released
pm->used_this_mission = 0;
@@ -317,6 +318,16 @@ void model_unload(int modelnum, int force)
}
}
// need to reset weapon models as well
for (int k = 0; k < MAX_WEAPON_TYPES; ++k) {
if ( pm->id == Weapon_info[k].model_num ) {
Weapon_info[k].model_num = -1;
}
if ( pm->id == Weapon_info[k].external_model_num ) {
Weapon_info[k].external_model_num = -1;
}
}
pm->id = 0;
delete pm;
@@ -433,6 +444,60 @@ void get_user_prop_value(char *buf, char *value)
*p1 = c;
}
// routine to look for one of the specified user properties
// if p is not null, sets p to the next character AFTER the string and a space/equals/colon (not the beginning of the string, as strstr would)
// returns the index of the property found, or -1 if not found
// NB: the first recognized option is returned, so if one option is a substring of another, put it later in the list!
int prop_string(char *props, char **p, int n_args, ...)
{
char *pos = nullptr;
va_list args;
int index = -1;
va_start(args, n_args);
for (int i = 0; i < n_args; ++i)
{
const char *option = va_arg(args, const char *);
// look for our option in the props fields
if ((pos = strstr(props, option)) != nullptr)
{
// we found it
index = i;
// so advance past the string and its following character
pos += strlen(option);
pos++;
break;
}
}
va_end(args);
// if we have a p, assign *p
// (if nothing was found, *p will be nullptr)
if (p != nullptr)
*p = pos;
return index;
}
// syntactic sugar
int prop_string(char *props, char **p, const char *option0)
{
return prop_string(props, p, 1, option0);
}
int prop_string(char *props, char **p, const char *option0, const char *option1)
{
return prop_string(props, p, 2, option0, option1);
}
int prop_string(char *props, char **p, const char *option0, const char *option1, const char *option2)
{
return prop_string(props, p, 3, option0, option1, option2);
}
// funciton to copy model data from one subsystem set to another subsystem set. This function
// is called when two ships use the same model data, but since the model only gets read in one time,
// the subsystem data is only present in one location. The ship code will call this routine to fix
@@ -488,6 +553,7 @@ static void set_subsystem_info(int model_num, model_subsystem *subsystemp, char
char *p;
char buf[64];
char lcdname[256];
int idx;
if ( (p = strstr(props, "$name")) != NULL)
get_user_prop_value(p+5, subsystemp->name);
@@ -544,20 +610,32 @@ static void set_subsystem_info(int model_num, model_subsystem *subsystemp, char
}
// Dumb-Rotating subsystem
if ((p = strstr(props, "$dumb_rotate")) != NULL) {
if (prop_string(props, nullptr, "$dumb_rotate") >= 0) {
// no special subsystem handling needed here, but make sure we didn't specify both methods
if (strstr(props, "$rotate") != NULL) {
if (prop_string(props, nullptr, "$rotate") >= 0) {
Warning(LOCATION, "Subsystem '%s' on ship %s cannot have both rotation and dumb-rotation!", dname, model_get(model_num)->filename);
}
}
// Rotating subsystem
else if ((p = strstr(props, "$rotate")) != NULL) {
else if ((idx = prop_string(props, &p, "$rotate_time", "$rotate_rate", "$rotate")) >= 0) {
subsystemp->flags |= MSS_FLAG_ROTATES;
// get time for (a) complete rotation (b) step (c) activation
float turn_time;
get_user_prop_value(p+7, buf);
turn_time = (float)atof(buf);
// get value for (a) complete rotation (b) step (c) activation
get_user_prop_value(p, buf); // note: p points to the value since we used prop_string
// for retail compatibility, $rotate means $rotate_time
float turn_rate;
if (idx == 0 || idx == 2) {
float turn_time = static_cast<float>(atof(buf));
if (turn_time == 0.0f) {
Warning(LOCATION, "Rotation has a turn time of 0 for subsystem '%s' on ship %s!", dname, model_get(model_num)->filename);
turn_rate = 1.0f;
} else {
turn_rate = PI2 / turn_time;
}
} else {
turn_rate = static_cast<float>(atof(buf));
}
// CASE OF WEAPON ROTATION (primary only)
if ( (p = strstr(props, "$pbank")) != NULL) {
@@ -565,7 +643,7 @@ static void set_subsystem_info(int model_num, model_subsystem *subsystemp, char
// get which pbank should trigger rotation
get_user_prop_value(p+6, buf);
subsystemp->weapon_rotation_pbank = (int)atoi(buf);
subsystemp->weapon_rotation_pbank = atoi(buf);
} // end of weapon rotation stuff
@@ -620,7 +698,7 @@ static void set_subsystem_info(int model_num, model_subsystem *subsystemp, char
// CASE OF NORMAL CONTINUOUS ROTATION
else {
subsystemp->turn_rate = PI2 / turn_time;
subsystemp->turn_rate = turn_rate;
}
}
}
@@ -1263,11 +1341,30 @@ int read_model_file(polymodel * pm, char *filename, int n_subsystems, model_subs
}
// note, this should come BEFORE do_new_subsystem() for proper error handling (to avoid both rotating and dumb-rotating submodel)
if ( ( p = strstr(props, "$dumb_rotate") ) != NULL ) {
int idx = prop_string(props, &p, "$dumb_rotate_time", "$dumb_rotate_rate", "$dumb_rotate");
if (idx >= 0) {
pm->submodel[n].movement_type = MOVEMENT_TYPE_INTRINSIC_ROTATE;
pm->flags |= PM_FLAG_HAS_INTRINSIC_ROTATE;
pm->submodel[n].dumb_turn_rate = (float)atof(p + 13);
// do this the same way as regular $rotate
char buf[64];
get_user_prop_value(p, buf);
// for past SCP compatibility, $dumb_rotate means $dumb_rotate_rate
float turn_rate;
if (idx == 0) {
float turn_time = static_cast<float>(atof(buf));
if (turn_time == 0.0f) {
Warning(LOCATION, "Dumb-Rotation has a turn time of 0 for subsystem '%s' on ship %s!", pm->submodel[n].name, pm->filename);
turn_rate = 1.0f;
} else {
turn_rate = PI2 / turn_time;
}
} else {
turn_rate = static_cast<float>(atof(buf));
}
pm->submodel[n].dumb_turn_rate = turn_rate;
} else {
pm->submodel[n].dumb_turn_rate = 0.0f;
}
@@ -2506,7 +2603,7 @@ int model_load(char *filename, int n_subsystems, model_subsystem *subsystems, in
return -1;
}
mprintf(( "Loading model '%s'\n", filename ));
mprintf(( "Loading model '%s' into slot '%i'\n", filename, num ));
pm = new polymodel;
Polygon_models[num] = pm;
@@ -4418,10 +4515,14 @@ void model_get_rotating_submodel_list(SCP_vector<int> *submodel_vector, object *
// check submodel rotation is less than max allowed.
submodel_instance_info *sii = pmi->submodel[i].sii;
// found the correct submodel instance - now check delta rotation angle not too large
float delta_angle = get_submodel_delta_angle(sii);
if (delta_angle < MAX_SUBMODEL_COLLISION_ROT_ANGLE) {
submodel_vector->push_back(i);
// If there is no instance info yet then ignore this submodel
if (sii != nullptr) {
// found the correct submodel instance - now check delta rotation angle not too large
float delta_angle = get_submodel_delta_angle(sii);
if (delta_angle < MAX_SUBMODEL_COLLISION_ROT_ANGLE) {
submodel_vector->push_back(i);
}
}
}
}
+286 -325
View File
@@ -1,28 +1,29 @@
/*
* Copyright (C) Volition, Inc. 1999. All rights reserved.
*
* All source code herein is the property of Volition, Inc. You may not sell
* or otherwise commercially exploit the source or things you created based on the
* source.
*
* Copyright (C) Volition, Inc. 1999. All rights reserved.
*
* All source code herein is the property of Volition, Inc. You may not sell
* or otherwise commercially exploit the source or things you created based on the
* source.
*
*/
#include <windows.h>
#include <string.h>
#include <windows.h>
#include <Shlobj.h>
#include <Sddl.h>
#include "globalincs/pstypes.h"
#include "osapi/osregistry.h"
// NEVER ADD ANY OTHER INCLUDES HERE - YOU'LL LIKELY BREAK THE LAUNCHER!!!!!!!!!!!!!
#include "cmdline/cmdline.h"
// ------------------------------------------------------------------------------------------------------------
// REGISTRY DEFINES/VARS
//
static char szCompanyName[128];
static char szAppName[128];
static char szAppVersion[128];
static char szCompanyName[128];
static char szAppName[128];
static char szAppVersion[128];
const char *Osreg_company_name = "Volition";
const char *Osreg_class_name = "FreeSpace2Class";
@@ -34,361 +35,333 @@ const char *Osreg_class_name = "FreeSpace2Class";
const char *Osreg_app_name = "FreeSpace2";
const char *Osreg_title = "FreeSpace 2";
const char *Osreg_pref_dir = NULL;
int Os_reg_inited = 0;
// For string config functions
static char tmp_string_data[1024];
// ------------------------------------------------------------------------------------------------------------
// REGISTRY FUNCTIONS
//
// This code is needed for compatibility with the old windows registry
// os registry functions -------------------------------------------------------------
static bool userSIDValid = false;
static SCP_string userSID;
// initialize the registry. setup default keys to use
void os_init_registry_stuff(const char *company, const char *app, const char *version)
bool get_user_sid(SCP_string& outStr)
{
if(company){
strcpy_s( szCompanyName, company );
} else {
strcpy_s( szCompanyName, Osreg_company_name);
HANDLE hToken = NULL;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken) == FALSE)
{
mprintf(("Failed to get process token! Error Code: %d", GetLastError()));
return false;
}
if(app){
strcpy_s( szAppName, app );
} else {
strcpy_s( szAppName, Osreg_app_name);
DWORD dwBufferSize;
GetTokenInformation(hToken, TokenUser, NULL, 0, &dwBufferSize);
PTOKEN_USER ptkUser = (PTOKEN_USER) new byte[dwBufferSize];
if (GetTokenInformation(hToken, TokenUser, ptkUser, dwBufferSize, &dwBufferSize))
{
CloseHandle(hToken);
}
if(version){
strcpy_s( szAppVersion, version);
} else {
strcpy_s( szAppVersion, "1.0");
if (IsValidSid(ptkUser->User.Sid) == FALSE)
{
mprintf(("Invalid SID structure detected!"));
delete[] ptkUser;
return false;
}
Os_reg_inited = 1;
LPTSTR sidName = NULL;
if (ConvertSidToStringSid(ptkUser->User.Sid, &sidName) == 0)
{
mprintf(("Failed to convert SID structure to string! Error Code: %d", GetLastError()));
delete[] ptkUser;
return false;
}
outStr.assign(sidName);
LocalFree(sidName);
delete[](byte*) ptkUser;
return true;
}
// Removes a value from to the INI file. Passing
// name=NULL will delete the section.
void os_config_remove( const char *section, const char *name )
bool needsWOW64()
{
#ifdef _WIN64
// 64-bit application always use the Wow6432Node
return true;
#else
BOOL bIsWow64 = FALSE;
if (!IsWow64Process(GetCurrentProcess(), &bIsWow64))
{
mprintf(("Failed to determine if we run under Wow64, registry configuration may fail!"));
return false;
}
return bIsWow64 == TRUE;
#endif
}
HKEY get_registry_keyname(char* out_keyname, const char* section)
{
if (!Cmdline_alternate_registry_path) {
// Use the original registry path, sometimes breaks for no reason which can be fixed by the code below
if (section) {
sprintf(out_keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section);
}
else {
sprintf(out_keyname, "Software\\%s\\%s", szCompanyName, szAppName);
}
return HKEY_LOCAL_MACHINE;
}
// Every compiler from Visual Studio 2008 onward should have support for UAC
#if _MSC_VER >= 1400
if (userSIDValid)
{
if (needsWOW64())
{
if (section) {
sprintf(out_keyname, "%s_Classes\\VirtualStore\\Machine\\Software\\Wow6432Node\\%s\\%s\\%s", userSID.c_str(), szCompanyName, szAppName, section);
}
else {
sprintf(out_keyname, "%s_Classes\\VirtualStore\\Machine\\Software\\Wow6432Node\\%s\\%s", userSID.c_str(), szCompanyName, szAppName);
}
}
else
{
if (section) {
sprintf(out_keyname, "%s_Classes\\VirtualStore\\Machine\\Software\\%s\\%s\\%s", userSID.c_str(), szCompanyName, szAppName, section);
}
else {
sprintf(out_keyname, "%s_Classes\\VirtualStore\\Machine\\Software\\%s\\%s", userSID.c_str(), szCompanyName, szAppName);
}
}
return HKEY_USERS;
}
else
{
// This will probably fail
if (section) {
sprintf(out_keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section);
}
else {
sprintf(out_keyname, "Software\\%s\\%s", szCompanyName, szAppName);
}
return HKEY_LOCAL_MACHINE;
}
#else
if (section) {
sprintf(out_keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section);
}
else {
sprintf(out_keyname, "Software\\%s\\%s", szCompanyName, szAppName);
}
return HKEY_LOCAL_MACHINE;
#endif
}
bool registry_has_value(const char *section, const char *name)
{
HKEY hKey = NULL;
DWORD dwDisposition;
char keyname[1024];
LONG lResult;
LONG lResult;
bool retVal = false;
if(!Os_reg_inited){
return;
if (!Os_reg_inited) {
return NULL;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
} else {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
HKEY useHKey = get_registry_keyname(keyname, section);
lResult = RegOpenKeyEx(useHKey, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey); // Location to store key
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
// remove the value
if ( !name ) {
if ( !section ) {
goto Cleanup;
}
lResult = RegDeleteKey( HKEY_LOCAL_MACHINE, keyname );
if ( lResult != ERROR_SUCCESS ) {
goto Cleanup;
}
} else {
lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
keyname, // name of key
NULL, // DWORD reserved
"", // Object class
REG_OPTION_NON_VOLATILE, // Save to disk
KEY_ALL_ACCESS, // Allows all changes
NULL, // Default security attributes
&hKey, // Location to store key
&dwDisposition ); // Location to store status of key
if ( lResult != ERROR_SUCCESS ) {
goto Cleanup;
}
lResult = RegDeleteValue( hKey, name );
if ( lResult != ERROR_SUCCESS ) {
goto Cleanup;
}
if (!name) {
goto Cleanup;
}
lResult = RegQueryValueEx(hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
NULL, // What kind it is
NULL, // value to set
NULL); // How many bytes to set
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
retVal = true;
Cleanup:
if ( hKey )
if (hKey)
RegCloseKey(hKey);
return retVal;
}
// Writes a string to the INI file. If value is NULL,
// removes the string. Writing a NULL value to a NULL name will delete
// the section.
void os_config_write_string( const char *section, const char *name, const char *value )
void os_config_write_string(const char *section, const char *name, const char *value)
{
HKEY hKey = NULL;
DWORD dwDisposition;
char keyname[1024];
LONG lResult;
LONG lResult;
if(!Os_reg_inited){
if (!Os_reg_inited) {
return;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
} else {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
}
HKEY useHKey = get_registry_keyname(keyname, section);
lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
keyname, // name of key
NULL, // DWORD reserved
"", // Object class
REG_OPTION_NON_VOLATILE, // Save to disk
KEY_ALL_ACCESS, // Allows all changes
NULL, // Default security attributes
&hKey, // Location to store key
&dwDisposition ); // Location to store status of key
lResult = RegCreateKeyEx(useHKey, // Where to add it
keyname, // name of key
NULL, // DWORD reserved
"", // Object class
REG_OPTION_NON_VOLATILE, // Save to disk
KEY_ALL_ACCESS, // Allows all changes
NULL, // Default security attributes
&hKey, // Location to store key
&dwDisposition); // Location to store status of key
if ( lResult != ERROR_SUCCESS ) {
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
if ( !name ) {
if (!name) {
goto Cleanup;
}
lResult = RegSetValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
REG_SZ, // null terminated string
(CONST BYTE *)value, // value to set
strlen(value) + 1 ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
lResult = RegSetValueEx(hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
REG_SZ, // null terminated string
(CONST BYTE *)value, // value to set
strlen(value) + 1); // How many bytes to set
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
Cleanup:
if ( hKey )
if (hKey)
RegCloseKey(hKey);
}
// same as previous function except we don't use the application name to build up the keyname
void os_config_write_string2( const char *section, const char *name, const char *value )
void os_config_write_uint(const char *section, const char *name, uint value)
{
HKEY hKey = NULL;
DWORD dwDisposition;
char keyname[1024];
LONG lResult;
LONG lResult;
if(!Os_reg_inited){
if (!Os_reg_inited) {
return;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, section );
} else {
sprintf( keyname, "Software\\%s", szCompanyName );
}
HKEY useHKey = get_registry_keyname(keyname, section);
lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
keyname, // name of key
NULL, // DWORD reserved
"", // Object class
REG_OPTION_NON_VOLATILE, // Save to disk
KEY_ALL_ACCESS, // Allows all changes
NULL, // Default security attributes
&hKey, // Location to store key
&dwDisposition ); // Location to store status of key
lResult = RegCreateKeyEx(useHKey, // Where to add it
keyname, // name of key
NULL, // DWORD reserved
"", // Object class
REG_OPTION_NON_VOLATILE, // Save to disk
KEY_ALL_ACCESS, // Allows all changes
NULL, // Default security attributes
&hKey, // Location to store key
&dwDisposition); // Location to store status of key
if ( lResult != ERROR_SUCCESS ) {
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
if ( !name ) {
goto Cleanup;
}
lResult = RegSetValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
REG_SZ, // null terminated string
(CONST BYTE *)value, // value to set
strlen(value) + 1 ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
if (!name) {
goto Cleanup;
}
lResult = RegSetValueEx(hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
REG_DWORD, // null terminated string
(CONST BYTE *)&value, // value to set
4); // How many bytes to set
Cleanup:
if ( hKey )
RegCloseKey(hKey);
}
// Writes an unsigned int to the INI file.
void os_config_write_uint( const char *section, const char *name, uint value )
{
HKEY hKey = NULL;
DWORD dwDisposition;
char keyname[1024];
LONG lResult;
if(!Os_reg_inited){
return;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
} else {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
}
lResult = RegCreateKeyEx( HKEY_LOCAL_MACHINE, // Where to add it
keyname, // name of key
NULL, // DWORD reserved
"", // Object class
REG_OPTION_NON_VOLATILE, // Save to disk
KEY_ALL_ACCESS, // Allows all changes
NULL, // Default security attributes
&hKey, // Location to store key
&dwDisposition ); // Location to store status of key
if ( lResult != ERROR_SUCCESS ) {
goto Cleanup;
}
if ( !name ) {
goto Cleanup;
}
lResult = RegSetValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
REG_DWORD, // null terminated string
(CONST BYTE *)&value, // value to set
4 ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
Cleanup:
if ( hKey )
if (hKey)
RegCloseKey(hKey);
}
// Reads a string from the INI file. If default is passed,
// and the string isn't found, returns ptr to default otherwise
// returns NULL; Copy the return value somewhere before
// calling os_read_string again, because it might reuse the
// same buffer.
static char tmp_string_data[1024];
const char * os_config_read_string( const char *section, const char *name, const char *default_value )
const char * os_config_read_string(const char *section, const char *name, const char *default_value)
{
HKEY hKey = NULL;
DWORD dwType, dwLen;
char keyname[1024];
LONG lResult;
LONG lResult;
if(!Os_reg_inited){
if (!Os_reg_inited) {
return NULL;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
} else {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
}
HKEY useHKey = get_registry_keyname(keyname, section);
lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey ); // Location to store key
lResult = RegOpenKeyEx(useHKey, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey); // Location to store key
if ( lResult != ERROR_SUCCESS ) {
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
if ( !name ) {
if (!name) {
goto Cleanup;
}
dwLen = 1024;
lResult = RegQueryValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
&dwType, // What kind it is
(ubyte *)&tmp_string_data, // value to set
&dwLen ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
lResult = RegQueryValueEx(hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
&dwType, // What kind it is
(ubyte *)&tmp_string_data, // value to set
&dwLen); // How many bytes to set
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
default_value = tmp_string_data;
Cleanup:
if ( hKey )
RegCloseKey(hKey);
return default_value;
}
// same as previous function except we don't use the application name to build up the keyname
const char * os_config_read_string2( const char *section, const char *name, const char *default_value )
{
HKEY hKey = NULL;
DWORD dwType, dwLen;
char keyname[1024];
LONG lResult;
if(!Os_reg_inited){
return NULL;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, section );
} else {
sprintf( keyname, "Software\\%s", szCompanyName );
}
lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey ); // Location to store key
if ( lResult != ERROR_SUCCESS ) {
goto Cleanup;
}
if ( !name ) {
goto Cleanup;
}
dwLen = 1024;
lResult = RegQueryValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
&dwType, // What kind it is
(ubyte *)&tmp_string_data, // value to set
&dwLen ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
goto Cleanup;
}
default_value = tmp_string_data;
Cleanup:
if ( hKey )
if (hKey)
RegCloseKey(hKey);
return default_value;
@@ -396,101 +369,89 @@ Cleanup:
// Reads a string from the INI file. Default_value must
// be passed, and if 'name' isn't found, then returns default_value
uint os_config_read_uint( const char *section, const char *name, uint default_value )
uint os_config_read_uint(const char *section, const char *name, uint default_value)
{
HKEY hKey = NULL;
DWORD dwType, dwLen;
char keyname[1024];
LONG lResult;
uint tmp_val;
uint tmp_val;
if ( !Os_reg_inited ) {
if (!Os_reg_inited) {
return default_value;
}
if ( section ) {
sprintf( keyname, "Software\\%s\\%s\\%s", szCompanyName, szAppName, section );
} else {
sprintf( keyname, "Software\\%s\\%s", szCompanyName, szAppName );
}
HKEY useHKey = get_registry_keyname(keyname, section);
lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey ); // Location to store key
lResult = RegOpenKeyEx(useHKey, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey); // Location to store key
if ( lResult != ERROR_SUCCESS ) {
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
if ( !name ) {
if (!name) {
goto Cleanup;
}
dwLen = 4;
lResult = RegQueryValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
&dwType, // What kind it is
(ubyte *)&tmp_val, // value to set
&dwLen ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
lResult = RegQueryValueEx(hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
&dwType, // What kind it is
(ubyte *)&tmp_val, // value to set
&dwLen); // How many bytes to set
if (lResult != ERROR_SUCCESS) {
goto Cleanup;
}
default_value = tmp_val;
Cleanup:
if ( hKey )
if (hKey)
RegCloseKey(hKey);
return default_value;
}
// uses Ex versions of Windows registry functions
static char tmp_string_data_ex[1024];
const char * os_config_read_string_ex( const char *keyname, const char *name, const char *default_value )
// initialize the registry. setup default keys to use
void os_init_registry_stuff(const char *company, const char *app, const char *version)
{
HKEY hKey = NULL;
DWORD dwType, dwLen;
LONG lResult;
lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE, // Where it is
keyname, // name of key
NULL, // DWORD reserved
KEY_QUERY_VALUE, // Allows all changes
&hKey ); // Location to store key
if ( lResult != ERROR_SUCCESS ) {
//mprintf(( "Error opening registry key '%s'\n", keyname ));
goto Cleanup;
if (company) {
strcpy_s(szCompanyName, company);
}
else {
strcpy_s(szCompanyName, Osreg_company_name);
}
if ( !name ) {
//mprintf(( "No variable name passed\n" ));
goto Cleanup;
if (app) {
strcpy_s(szAppName, app);
}
else {
strcpy_s(szAppName, Osreg_app_name);
}
dwLen = 1024;
lResult = RegQueryValueEx( hKey, // Handle to key
name, // The values name
NULL, // DWORD reserved
&dwType, // What kind it is
(ubyte *)&tmp_string_data_ex, // value to set
&dwLen ); // How many bytes to set
if ( lResult != ERROR_SUCCESS ) {
//mprintf(( "Error reading registry key '%s'\n", name ));
goto Cleanup;
if (version) {
strcpy_s(szAppVersion, version);
}
else {
strcpy_s(szAppVersion, "1.0");
}
default_value = tmp_string_data_ex;
OSVERSIONINFO versionInfo;
versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&versionInfo);
Cleanup:
if ( hKey )
RegCloseKey(hKey);
// Windows Vista is 6.0 which is the first version requiring this
if (versionInfo.dwMajorVersion >= 6)
{
userSIDValid = get_user_sid(userSID);
}
return default_value;
Os_reg_inited = 1;
}
-13
View File
@@ -35,16 +35,9 @@ extern const char *Osreg_user_dir;
// initialize the registry. setup default keys to use
void os_init_registry_stuff( const char *company, const char *app, const char *version );
// Removes a value from to the INI file. Passing
// name=NULL will delete the section.
void os_config_remove( const char *section, const char *name );
// Writes a string to the registry
void os_config_write_string( const char *section, const char *name, const char *value );
// same as previous function except we don't use the application name to build up the keyname
void os_config_write_string2( const char *section, const char *name, const char *value );
// Writes an unsigned int to the INI file.
void os_config_write_uint( const char *section, const char *name, unsigned int value );
@@ -55,15 +48,9 @@ void os_config_write_uint( const char *section, const char *name, unsigned int v
// same buffer.
const char * os_config_read_string( const char *section, const char *name, const char *default_value=0 /*NULL*/ );
// same as previous function except we don't use the application name to build up the keyname
const char * os_config_read_string2( const char *section, const char *name, const char *default_value=0 /*NULL*/ );
// Reads a string from the INI file. Default_value must
// be passed, and if 'name' isn't found, then returns default_value
unsigned int os_config_read_uint( const char *section, const char *name, unsigned int default_value );
// uses Ex versions of Windows registry functions
const char * os_config_read_string_ex( const char *keyname, const char *name, const char *default_value );
#endif
+16
View File
@@ -1241,6 +1241,14 @@ void stuff_string(char *outstr, int type, int len, char *terminators)
default:
Error(LOCATION, "Unhandled string type %d in stuff_string!", type);
}
if (type == F_FILESPEC) {
// Make sure that the passed string looks like a good filename
if (strlen(read_str) == 0) {
// Empty file name is not valid!
error_display(1, "A file name was expected but no name was supplied!\n");
}
}
// now we want to do any final localization
if(type != F_RAW && type != F_LNAME)
@@ -1315,6 +1323,14 @@ void stuff_string(SCP_string &outstr, int type, char *terminators)
default:
Error(LOCATION, "Unhandled string type %d in stuff_string!", type);
}
if (type == F_FILESPEC) {
// Make sure that the passed string looks like a good filename
if (read_str.empty()) {
// Empty file name is not valid!
error_display(1, "A file name was expected but no name was supplied!\n");
}
}
// now we want to do any final localization
if(type != F_RAW && type != F_LNAME)
+2 -2
View File
@@ -1790,7 +1790,7 @@ int parse_ship_template()
char buf[SHIP_MULTITEXT_LENGTH];
ship_info *sip;
int rtn = 0;
bool first_time = false;
bool first_time = true;
required_string("$Template:");
stuff_string(buf, F_NAME, SHIP_MULTITEXT_LENGTH);
@@ -18700,7 +18700,7 @@ void ship_set_thruster_info(mst_info *mst, object *obj, ship *shipp, ship_info *
mst->distortion_bitmap = shipp->thruster_distortion_bitmap;
mst->use_ab = (obj->phys_info.flags & PF_AFTERBURNER_ON) || (obj->phys_info.flags & PF_BOOSTER_ON);
mst->glow_noise = shipp->thruster_glow_noise;
mst->glow_noise = shipp->thruster_glow_noise * sip->thruster_glow_noise_mult;
mst->rotvel = Objects[shipp->objnum].phys_info.rotvel;
mst->glow_rad_factor = sip->thruster01_glow_rad_factor;
+1 -1
View File
@@ -2,7 +2,7 @@ dnl configure.ac for fs2_open
dnl
dnl $Id: configure.ac,v 1.31.2.4 2007-05-28 19:36:12 taylor Exp $
AC_INIT(fs2_open, 3.7.3)
AC_INIT(fs2_open, 3.7.4_RC2)
AC_CONFIG_SRCDIR(code/freespace2/freespace.cpp)
dnl we need at least version 2.54 of autoconf
+6 -6
View File
@@ -125,12 +125,12 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_4_RC2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_4_RC2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_4_RC2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_4_RC2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_4_RC2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_4_RC2_SSE2</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+6 -6
View File
@@ -124,12 +124,12 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_4_RC2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_4_RC2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_4_RC2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_4_RC2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_4_RC2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_4_RC2_SSE2</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+3 -3
View File
@@ -100,7 +100,7 @@
<AdditionalDependencies>comctl32.lib;rpcrt4.lib;winmm.lib;advapi32.lib;wsock32.lib;wxmsw29ud_core.lib;wxbase29ud.lib</AdditionalDependencies>
</Link>
<CustomBuildStep>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\wxfred2_open_3_7_3-debug.exe" </Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\wxfred2_open_3_7_4_RC2-debug.exe" </Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open$(FS_VERSION_FULL)-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
@@ -159,9 +159,9 @@
<AdditionalDependencies>comctl32.lib;rpcrt4.lib;winmm.lib;advapi32.lib;wsock32.lib;wxmsw29u_core.lib;wxbase29u.lib</AdditionalDependencies>
</Link>
<CustomBuildStep>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)/wxfred2_open_3_7_3.exe"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)/wxfred2_open_3_7_4_RC2.exe"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_3.exe;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_4_RC2.exe;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
+8 -8
View File
@@ -170,14 +170,14 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_3_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_4_RC2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_4_RC2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_4_RC2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_4_RC2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_4_RC2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_4_RC2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_4_RC2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_4_RC2_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep />
+8 -8
View File
@@ -169,14 +169,14 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_3_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_4_RC2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_4_RC2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_4_RC2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_4_RC2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_4_RC2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_4_RC2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_4_RC2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_4_RC2_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep />
+12 -12
View File
@@ -190,7 +190,7 @@
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Lib>
<Bscmake>
<AdditionalOptions>
<AdditionalOptions>
%(AdditionalOptions)</AdditionalOptions>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
@@ -234,7 +234,7 @@
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Lib>
<Bscmake>
<AdditionalOptions>
<AdditionalOptions>
%(AdditionalOptions)</AdditionalOptions>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
@@ -278,7 +278,7 @@
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Lib>
<Bscmake>
<AdditionalOptions>
<AdditionalOptions>
%(AdditionalOptions)</AdditionalOptions>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
@@ -322,7 +322,7 @@
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Lib>
<Bscmake>
<AdditionalOptions>
<AdditionalOptions>
%(AdditionalOptions)</AdditionalOptions>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
@@ -1070,21 +1070,21 @@
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\code\sound\phrases.xml">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
+4 -4
View File
@@ -95,10 +95,10 @@
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;rpcrt4.lib;wsock32.lib;winmm.lib;wxmsw28d_xrc.lib;wxmsw28d_html.lib;wxmsw28d_adv.lib;wxmsw28d_core.lib;wxbase28d_xml.lib;wxbase28d.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib;wxzlibd.lib;wxregexd.lib;wxexpatd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<CustomBuildStep>
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_3-debug.exe"
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_4_RC2-debug.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_3-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_4_RC2-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -146,10 +146,10 @@ copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Comma
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;rpcrt4.lib;wsock32.lib;winmm.lib;wxmsw28_xrc.lib;wxmsw28_html.lib;wxmsw28_adv.lib;wxmsw28_core.lib;wxbase28_xml.lib;wxbase28.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib;wxzlib.lib;wxregex.lib;wxexpat.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<CustomBuildStep>
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_3.exe"
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_4_RC2.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_3.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_4_RC2.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
+8 -8
View File
@@ -170,14 +170,14 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_3_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_4_RC2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_4_RC2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_4_RC2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_4_RC2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_4_RC2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_4_RC2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_4_RC2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_4_RC2_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep />
+8 -8
View File
@@ -169,14 +169,14 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_3_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_4_RC2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_4_RC2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_4_RC2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_4_RC2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_4_RC2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_4_RC2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_4_RC2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_4_RC2_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep />
+8 -8
View File
@@ -1070,21 +1070,21 @@
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\code\sound\phrases.xml">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">gc /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">"%(RootDir)%(Directory)gc" /O "$(IntDir)voicer\%(Filename).cfg" /H "$(IntDir)voicer\grammar.h" "%(RootDir)%(Directory)%(Filename)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">$(IntDir)voicer\%(Filename).cfg;$(IntDir)voicer\grammar.h;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
+4 -4
View File
@@ -95,10 +95,10 @@
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;rpcrt4.lib;wsock32.lib;winmm.lib;wxmsw28d_xrc.lib;wxmsw28d_html.lib;wxmsw28d_adv.lib;wxmsw28d_core.lib;wxbase28d_xml.lib;wxbase28d.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib;wxzlibd.lib;wxregexd.lib;wxexpatd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<CustomBuildStep>
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_3-debug.exe"
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_4_RC2-debug.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_3-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_4_RC2-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -146,10 +146,10 @@ copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Comma
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;rpcrt4.lib;wsock32.lib;winmm.lib;wxmsw28_xrc.lib;wxmsw28_html.lib;wxmsw28_adv.lib;wxmsw28_core.lib;wxbase28_xml.lib;wxbase28.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib;wxzlib.lib;wxregex.lib;wxexpat.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<CustomBuildStep>
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_3.exe"
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_4_RC2.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_3.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_4_RC2.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
Binary file not shown.
@@ -4426,7 +4426,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = "3.7.3";
CURRENT_PROJECT_VERSION = "3.7.4 RC2";
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
@@ -4474,7 +4474,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = "3.7.3";
CURRENT_PROJECT_VERSION = "3.7.4 RC2";
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
@@ -8,7 +8,7 @@
<Option virtualFolders="Freespace2/;" />
<Build>
<Target title="Debug">
<Option output="../Debug/Freespace2/lib/fs2_open_3_7_3_debug" prefix_auto="1" extension_auto="1" />
<Option output="../Debug/Freespace2/lib/fs2_open_3_7_4_RC2_debug" prefix_auto="1" extension_auto="1" />
<Option working_dir="../freespaceDirectoryLink" />
<Option object_output="../Debug/Freespace2/obj/" />
<Option type="1" />
@@ -24,7 +24,7 @@
</Linker>
</Target>
<Target title="Release">
<Option output="../Release/Freespace2/lib/fs2_open_3_7_3" prefix_auto="1" extension_auto="1" />
<Option output="../Release/Freespace2/lib/fs2_open_3_7_4_RC2" prefix_auto="1" extension_auto="1" />
<Option object_output="../Release/Freespace2/obj/" />
<Option type="0" />
<Option compiler="gcc" />