Compare commits

..
Author SHA1 Message Date
Cliff Gordon 7040c4c17e [json_export] Preliminary support for outputting table data to JSON. Includes some defaults for constants that might not be defined in older versions of Jansson on platforms not using the bundled version. 2015-04-08 12:07:33 -05:00
Cliff Gordon 7727b00f76 [json_export] Eliminate some redundancy with ship allowed weapon parsing. 2015-04-08 12:05:49 -05:00
Cliff Gordon 24b15298b6 [json_export] Update OS X project to work with updated Jansson. 2015-04-08 12:00:03 -05:00
Cliff Gordon 26dcfd9fbb [json_export] Upgrade Jansson to 2.7. 2015-04-08 11:59:13 -05:00
m_m 9ad5d09c0a From LotF and me: Fix for Mantis 3146: Crash when pressing enter key in empty region of main hall
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11296 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-31 18:58:28 +10:00
MageKing17 b61779e852 Fix mantis #3154.
Adds ON_CLBN_CHKCHANGE to the message map for the ships and weapons lists so that hitting spacebar to change the checked/unchecked status of a ship or weapon also updates the availability count.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11295 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-31 18:40:28 +10:00
m_m 2d82f7652d Fix "Callsigns still don't work when messages come from capships" issue
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11294 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-30 17:29:39 +10:00
The_E 9284264885 Patch to add MSVC2015 support. Also fixes a few warnings its compiler threw.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11292 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-29 11:05:02 +10:00
niffiwan 3e9c19c5c7 Fix mantis 3151
Implement case insensitive -mod dir search on *nix

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11291 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-28 11:12:25 +10:00
z64555 cd8595cf0f Fix for Mantis 3152: Moves the trail origin to the mathematical center of a laser bolt, if the weapon's render type is a laser.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11290 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-28 08:53:10 +10:00
The_E 1199555321 Adds a new debug output filter, "CFileDebug", which if enabled via debug_filter.cfg will print the absolute path to any file requested by the engine.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11289 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-22 13:04:55 +10:00
The_E 0808c3459f If a text file to be read by the engine is in Unicode, abort. Could be something important we're missing.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11288 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-22 13:04:55 +10:00
niffiwan b5fe481ab2 add script-eval-block sexp
This is a workaround to the sexp TOKEN_LENGTH limit
The script can be split across multiple arguments to allow scripts
longer than 32 chars (i.e. current TOKEN_LENGTH)
e.g.
( script-eval
  "ba.warning('foo"
  " more and more and more"
  " and the rest')"
)
Kudos to Axem for suggesting the idea
(And to zookeeper for reminding me to actually commit it!)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11286 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-21 11:41:49 +10:00
zookeeper 44b786c171 Fixed a mistake in $Model Point Shield Controls.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11285 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-19 16:40:17 +10:00
MageKing17 21cbf82196 Fix mantis 3147. From Admiral MS and myself.
From Admiral MS: Avoid bashing orientation if trying to avoid a collision.
From myself: Bash orientation if aspect seekers are equipped.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11284 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-18 18:21:21 +10:00
zookeeper ae32159408 Moved the fix in r11279 to a slightly more logical place.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11280 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-17 11:20:24 +10:00
zookeeper 56f694dc43 Check for and fix rare but possible discrepancy between sip->model_num and sip->subsystems[].model_num which can lead to model index collision errors.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11279 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-17 08:30:08 +10:00
zookeeper 95145a4f3f Slightly clarified variable use.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11276 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-07 09:39:26 +10:00
MageKing17 e0527d9bc7 Fix mantis #1929.
Makes the IDC_OLD_TEXTURE_LIST dropdown list use the same sorting as the old_texture_name[] array, and should also so that multiple old texture replacements for the same ship are properly erased.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11274 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-04 22:43:03 +10:00
MageKing17 4742378d50 Followup to r11266; let code use hardcoded defaults.
Presumably, the use of use_default_pos in load_gauge_radar_dradis() is the result of a copy&paste job, but removing it allows the default values to be used to compute coords.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11273 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-04 22:43:03 +10:00
zookeeper a2e15f4c61 Tweaks to the argument documentation of a bunch of scripting functions.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11272 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-03 16:22:51 +10:00
zookeeper 77b245eed2 Fixed shield handle not returning correct quads when indexing with the SHIELD_* enums.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11270 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-03 16:22:51 +10:00
niffiwan a1979e704e Coverity 1244962 Uninitialized scalar variable
Set default DRADIS coords to 0,0

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11266 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-01 11:02:15 +10:00
niffiwan 23fbcb1a2f Add indentation for previous commit
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11265 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-01 11:02:15 +10:00
niffiwan dc02e70716 Coverity 1093719 Negative array index read
Check current_bank is > -1 before using it
Note: did not alter indentation in this commit in order to make
relevant changes easier to see

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11264 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-01 11:02:15 +10:00
niffiwan 170614f150 Coverity 1093718 Negative array index read
Create swip after checking that its index is > -1

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11263 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-01 11:02:15 +10:00
niffiwan 5c8a6234a1 Coverity 1093705 Negative array index read
Probably not an issue, but to be safe removing the unused pointer anyway
i.e. the check that instance >= 0 suggests there's a possiblilty that the
pointer could contains a negative array index read

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11262 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-01 11:02:15 +10:00
niffiwan aadc41a40a Coverity 1093495+1093498 Missing break in switch
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11261 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-01 11:02:15 +10:00
zookeeper 2203c1e9a8 Ported r11232 from zookeeper branch: Set the Sender hook variable to nil in On Message Received hooks if message not coming from a ship.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11257 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-21 11:34:30 +10:00
MageKing17 40a9025aeb Fixes hardpoint gauge not rendering outline.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11247 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-12 17:13:54 +10:00
MageKing17 14bd62147c Adding a "$Briefing Grid:" interface color to colors.tbl.
Requested by Axem.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11245 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-12 17:13:54 +10:00
m_m 70d735ceb4 Added "On HUD Message Received" scripting hook which is invoked when the HUD receives message text to display.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11242 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-09 17:22:03 +10:00
niffiwan 7d92b1cecf Fix mantis 3138: remove spurious warning
Don't warn about low rotational velocities disabling collisions for
no_collide ships

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11238 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-03 17:08:58 +10:00
zookeeper 8a50f844b0 Improved warnings text and clarified variable use in turret modelread code.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11236 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-02 17:21:53 +10:00
zookeeper 35d6a9654d Ported r11100 from zookeeper branch: Fix various issues with $Acceleration Time.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11234 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-27 18:27:41 +10:00
zookeeper c47233ca3c Ported r11085 from zookeeper branch: Fixed weapon particle spews not taking launch velocity properly into account if $Acceleration Time is used.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11233 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-27 18:27:40 +10:00
MageKing17 d01856d992 Fix a potential crash during ships.tbl parsing.
Makes parse_ship() use ship_info_lookup_sub() instead of ship_info_lookup() (shouldn't be jumping through those hoops during table parsing if they're for FS1 mission conversion), and more importantly, added an error check to ship_info_lookup() to avoid sprintf() exceeding the length of the char array.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11230 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-24 09:22:32 +10:00
chief1983 ec758aa108 Fix for Mantis 3036: This unifies the cf_exists function to behave like the other functions in the cf_exists* family, and simultaneously addresses the bug.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11222 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-23 18:35:55 +10:00
MageKing17 f5c1b6608d Reverting r4959 per discussion on #scp and the forums.
Adding every "#"-variant was causing spurious errors when switching from the MediaVPs to no mod. See http://www.hard-light.net/forums/index.php?topic=88982.0 for details.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11221 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-20 18:50:38 +10:00
chief1983 7df12ebd75 Experimental flag to apply lighting to briefing window model popups. Flag should be removed and behavior made default if no issues arise after next release.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11218 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-16 18:58:02 +10:00
zookeeper 4422aaa311 Fixed an issue with disabled binds getting matched in key translation.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11215 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:44 +10:00
chief1983 9ebcc3e437 Added OpenBSD to what is now a multi-BSD check.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11214 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
Goober5000 4f53f07681 minor modifications to mission cutscenes: change cutscene_name field to filename, because it's actually the filename of the cutscene make struct a plain old data object (no constructor) make parsing a little tidier, and make the SEXP formula and closing #end tag optional
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11213 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
Goober5000 61df0f18b1 add warning if a cutscene is specified that isn't in cutscenes.tbl
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11212 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
Goober5000 87e8170268 add optional_string_one_of, which is useful to have
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11211 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
Goober5000 b9a6a9f23e instead of an Int3(), use a Warning that's only displayed once
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11210 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
MageKing17 6a77d128c9 Fixing weird problem with snd_update_3d_pos() that, honestly, baffles me as to how the code ever worked on any system.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11208 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
zookeeper 20218b0924 Added support for NONE as a value for $Key Default, for making a key unbound by default.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11206 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
zookeeper b1f1756dd1 Fixed breakage of $Category and $Type from r10843.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11205 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-14 17:29:43 +10:00
Goober5000 7250cd13a6 add ship class texture replacement using a simplified method that doesn't require the texture_set code
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11204 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-23 18:15:11 +10:00
MageKing17 b23aea5a41 Fix mantis #3068.
Make hitting the "delete" key in the pilot-selection menu do the same thing as clicking on the "remove" button.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11202 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-22 18:01:31 +10:00
niffiwan a49eb75c6e Add warning for very fast ship-rotation values
Otherwise rotational collision detection is disabled for the ship
(and an int3() triggers in debug)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11201 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-20 11:54:49 +10:00
MageKing17 c8b48e4a36 Change m_badge_earned into a vector.
This makes it so that getting enough kills to cross the threshold for more than one badge simultaneously grants all of them (with the debriefing showing only the last one) and backs out all of them if the scoring is backed out.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11198 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-16 19:57:49 +10:00
Goober5000 709f483617 PAUSE ALL THE STREAMS
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11197 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-12 16:12:16 +10:00
MageKing17 ffd74fa60b Adding "+Available From Start:" to Medals.tbl.
Requested by MjnMixael.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11196 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-12 16:12:16 +10:00
Goober5000 1c826d366e add the pauseMusic scripting function, requested by MjnMixael
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11195 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-11 18:15:36 +10:00
Goober5000 1c464864c3 fix Mantis #3132 (is-iff returns true when the target is destroyed)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11193 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-10 16:37:43 +10:00
MageKing17 a03f96ca01 Related to r11189: avoid calling factor_table::getNextSlots() if the ship doesn't have the dynamic linking flag.
Basically, hitting "o" on any ship with more than 6 slots in a bank could crash FSO, even without the flag. Reported by Spoon.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11192 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-10 16:37:43 +10:00
MageKing17 15fad7f58b Correct copy-paste error in check_sexp_syntax() from the armor types commit.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11191 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-09 14:09:29 +10:00
Goober5000 f01c4bf952 fix Mantis #3135: account for the case when the game is paused before being minimized
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11190 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-08 17:14:57 +10:00
MageKing17 1d7c01181e Fix mantis #3133. Fixes logic errors in factor_table not being sure if it's supposed to be 0-based or 1-based at different times.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11189 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-08 17:14:57 +10:00
Goober5000 0162cab8bd move this around for more logical flow
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11188 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-08 17:14:57 +10:00
Goober5000 b02af2ef6e a more future-proof way to keep track of explicitly paused audio
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11187 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-04 16:39:40 +10:00
Goober5000 4eb1726004 this should fix Mantis #2888 (allow for head.ani files without letter suffixes)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11186 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-04 16:39:40 +10:00
Goober5000 2f734daf0d when the game returns from a paused state, don't unpause the music paused by sexp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11185 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-03 20:31:32 +10:00
Goober5000 a516b88803 it's good to check whether the music is paused, for bulletproof-ness
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11184 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-03 20:31:31 +10:00
Goober5000 9f12e1f56b added a sexp to pause and unpause music that is currently playing
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11183 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-03 20:31:31 +10:00
Goober5000 255c2912cb minor reorganization
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11182 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-03 16:23:42 +10:00
Goober5000 ac25da1bd9 remove the Error (originally Assert) from r1675 and add back the comment removed in r8005
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11181 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-01 20:37:52 +10:00
Goober5000 872bbe2a11 improve sexp code for obtaining pitch/bank/heading with the following changes: 1) use an alternate algorithm for extracting angles from an orientation matrix 2) properly round floats to integers when converting to degrees
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11180 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-29 19:53:19 +10:00
Goober5000 f7353121e6 m!m's fix for Mantis #3131: contrary to the xt change from r11138, NULL is only returned on vm_malloc failure (so should never happen in normal execution)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11179 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-25 19:15:56 +10:00
MageKing17 f64afbecfb From The_E, niffiwan, m_m, and myself: Fix Mantis 2404.
Makes "$Weapon Model Draw Distance:" actually stop external weapon models from being drawn beyond that distance (modified by detail level).

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11178 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-22 08:47:11 +10:00
niffiwan c05845cb9d Fix mantis 3114
Change turret-tagged-only behaviour back to retail
Add AI profiles flag to allow use of newer behaviour (i.e. stricter)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11177 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-21 19:26:53 +10:00
niffiwan a73404dbd5 Error needs LOCATION :)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11176 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-21 19:26:53 +10:00
The_E fbd590cd77 Improvement for this error message
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11175 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-21 18:43:52 +10:00
MageKing17 e4072d6e51 Adding area-of-effect capability to Electronics weapons.
By adding an "+Area Of Effect" line after "+New Style:" or "+Old Style:", it causes every ship caught in the weapon's shockwave or blast to suffer electronics disruption. Requested by Black Wolf.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11173 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-21 18:43:52 +10:00
MageKing17 0417b4c335 Ensure that the debriefing code sets the font before wordwrapping.
Also, explicitly set the font instead of relying on Debrief_ui_window.draw() doing it implicitly.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11172 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-18 18:09:08 +10:00
MageKing17 b14b590ab1 Adding "interceptable", "turret interceptable", and "fighter interceptable" weapon flags.
These allow munitions to be attacked by the AI without needing to set the "bomb" flag; "turret interceptable" means it can be attacked by turrets, "fighter interceptable" means it can be shot down by fighters, and "interceptable" sets both flags simultaneously. Requested by Rheyah.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11171 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-10 17:45:58 +10:00
m_m de57f043da From MageKing17 and me: Fix for Mantis 3128: Docking related crash - dock_list isn't initialized This patch makes the copy constructor and the assignment operator of the object class private as it contains members that should not be copied.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11170 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-08 10:57:03 +10:00
niffiwan 487f764764 Redo Coverity 1215458 Uninitialized pointer field
Includes more robust checks of cmdline_parm data

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11169 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-02 19:52:04 +10:00
m_m 86510572bf With help from MageKing17: Fix for Mantis 3123: Virtual variables and indexers that return nil break the scripting system
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11168 387891d4-d844-0410-90c0-e4c51a9137d3
2014-11-02 11:22:29 +10:00
MageKing17 e604125e5d Minor followup to r11150.
The regular parsing code not using the same broken logic as parse_comments() is not the same thing as it "ignoring" too high versions, and searching for repetitions of the same token would result in just finding the first one over and over again (the likelihood of this actually mattering to anyone is minuscule, but I needed something to test commit access, and this code has been tested).

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11167 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-30 13:23:58 +10:00
Swifty 33776fc4be gr_opengl_string retooled to use glDrawArrays. Should be a bit faster now.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11165 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-29 18:47:04 +10:00
zookeeper c13c35ec25 Fixed a FRED crash when using $Flight controls follow eyepoint orientation (patch by MageKing17).
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11163 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-29 18:47:04 +10:00
zookeeper 83d6456c6a Clarified how to set a new variable with mn.SEXPVariables.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11161 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-28 22:04:56 +10:00
zookeeper 1d55b98017 Added a little extra info to two bmpman errors.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11160 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-28 22:04:56 +10:00
m_m bd602cc1a3 Revert 11158 as it breaks FRED compilation.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11159 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-27 18:23:02 +10:00
m_m 89cd36a242 Fix a crash reported by Axem related to freeing the dock list of an object. This was caused by freeing the dock list from the destructor of an object which meant that copies of an object would corrupt the original object instance. To make sure that doesn't happen again the copy constructor and assignment operator of object have been made private.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11158 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-27 18:23:02 +10:00
Goober5000 414daaaed8 Mantis #3127: fix the spatial check in the rewritten algorithm
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11157 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-27 18:23:02 +10:00
The_E 4295cd3edb Corrects an unwanted change in formatting
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11155 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-27 18:22:42 +10:00
The_E 6c48551fb3 From MageKing17: Make the lua doManeuver command behave the same way as the sexp.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11154 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-27 18:22:42 +10:00
niffiwan 866667a977 Fix mantis 3126 (from MageKing17)
Remove limit of 32 tbms being loaded for any given table type
2014-10-24 19:35:47 +10:00
niffiwan d1aa2e1c37 Set 1024x768 32bit as default res on *nix
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11153 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-24 19:06:22 +10:00
niffiwan 07e1679138 Partial revert of r11145
A fake subsystem used as the firing point for fighter beams. It's
re-used for every fire point so the turret is supposed to only have 1
firepoint. i.e. energy consumption was already correctly calculated

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11152 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-24 19:06:21 +10:00
niffiwan 16f0ff1959 Allow fonts to set/change special char indexes
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11151 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-24 19:06:21 +10:00
Goober5000 6cc96ce0c5 MageKing17 has done yeoman's work in fixing the version-specific commenting system. Thanks, MageKing17!
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11150 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:40 +10:00
Goober5000 9161158996 xt branch: load stuff from the correct location
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11149 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:35 +10:00
Goober5000 557ef07079 xt branch: memset a bunch of weapons strings
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11148 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:33 +10:00
Goober5000 130165af9f xt branch: WIF_MFLASH is unnecessary because we can check whether there is a muzzle flash index
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11147 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:32 +10:00
Goober5000 6e56b2970f xt branch: minor tweaks
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11146 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:31 +10:00
Goober5000 5a31e0b38e xt branch: 1) the number of beam firing points should be the same as the number of ship firing points, because that's how we're calculating the expenditure of weapon energy 2) clear out Ship_type information when we exit the game
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11145 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:29 +10:00
Goober5000 3234a8360c refine the calculation of effective_primary_banks... 1) optimization from xt branch: don't calculate if we only actually have one bank on our ship 2) make sure to count the current bank that we're firing, to avoid an edge case where we might have a negative fire penalty 3) make the condition logic a little clearer
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11144 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:26 +10:00
Goober5000 14dfb5e73d xt branch: minor ship.cpp fixes
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11143 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:21 +10:00
Goober5000 d734f76369 xt branch: "Nothing major here, just added the same basic stuff from the nebula code to make beam glows fade out depending on how close to the eye they are. The primary reason for this was for beams on fighters, since the muzzle glows tend to block your view when they show up. Having them fade out still gives you the visual effect, but allows you to see through them as well."
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11142 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:16 +10:00
Goober5000 871bb0b19a xt branch: minor optimizations in beam.cpp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11141 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-17 18:25:14 +10:00
Goober5000 4f06fd2435 additional string safety
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11140 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-15 18:22:57 +10:00
Goober5000 e9f5c531e0 heh... Microsoft's implementation of snprintf doesn't conform to the standard!
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11139 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-15 06:23:18 +10:00
Goober5000 dff2156c18 xt branch: more string safety
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11138 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:41 +10:00
Goober5000 f23a3c5843 SCP_string is useful here too
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11137 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:40 +10:00
Goober5000 ff38449a46 string printing safety
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11136 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:39 +10:00
Goober5000 1318ccfa91 wut? defaulting to NULL here will cause these to never log anything...
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11135 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:38 +10:00
Goober5000 65265f8ab8 fix a compile error (d'oh) and use type safety
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11134 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:37 +10:00
Goober5000 a541a22239 xt branch: optimize objectsort.cpp by not calculating some things every loop iteration
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11133 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:35 +10:00
Goober5000 aee1305841 according to the C standard... "The functions snprintf() and vsnprintf() write at most size bytes (including the trailing null byte ('\0')) to str." ...so we have that going for us, which is nice
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11132 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:33 +10:00
Goober5000 e43dacdcc3 xt branch: use CLAMP here
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11131 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:32 +10:00
Goober5000 8e4d98bd4f xt branch: minor tweaks to glow_points
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11130 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 18:23:31 +10:00
Goober5000 f6e2f1d236 xt branch: optimizations in modelcollide.cpp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11129 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 12:24:25 +10:00
Goober5000 e22a4b0b5b xt branch: add capability for custom identifiers in build names (e.g. Xt-0314)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11128 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 12:24:24 +10:00
Goober5000 11855ed3d8 xt branch: having a float version of gr_opengl_string makes text scrolling nice and smooth at high nonstandard resolutions (also, looks like quad rendering works just fine here; no need to convert to tris)
convert credits.cpp to use float version of gr_opengl_string; eventually Taylor wanted to make the float version standard

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11127 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 12:24:23 +10:00
Goober5000 fe775aeedf xt branch: optimizations in fvi.cpp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11126 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 12:24:22 +10:00
Goober5000 5c0bc126bb xt branch: tweaks to vecmat.cpp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11125 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 12:24:20 +10:00
Goober5000 c6364987b3 we don't need to cast because mod is a float
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11124 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-13 12:24:17 +10:00
Goober5000 b8a05e30a0 xt: sprintf length safety
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11123 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 18:22:14 +10:00
Goober5000 5f3600dc79 probably good to change the comment too
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11122 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 18:22:13 +10:00
Goober5000 f2d8277452 xt branch: additional optimizations using RAND_MAX_1f
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11121 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 18:22:12 +10:00
Goober5000 31562ba811 xt branch tweaks
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11120 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 18:22:10 +10:00
Goober5000 4200bb55d7 from xt branch: remove unneeded parameters, tweak some assets, minor optimization
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11119 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 12:21:51 +10:00
Goober5000 bffdef1ce5 from xt branch: add some hysteresis to asteroid fields to prevent "popping" when an asteroid exceeds the bounds
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11118 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 06:22:25 +10:00
Goober5000 4dafc8ff5f this too
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11117 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 06:22:24 +10:00
Goober5000 d5e81757b0 some turret changes from the XT branch
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11116 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-12 06:22:22 +10:00
Goober5000 61c97871f0 technically, this is better
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11115 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-09 18:21:40 +10:00
Goober5000 50f16b7d02 better method of appending ellipsis (nb: strncpy pads with 0 if string is shorter than len)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11114 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-09 18:21:37 +10:00
Goober5000 8688b05c91 related to Mantis #3121, make SEXP parsing more robust, and remove some old debug/unused code in get_sexp_main()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11113 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-09 18:21:35 +10:00
chief1983 9a90a43801 Wrong variable type, may work in MSVC but not on clang or gcc.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11112 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-09 06:21:40 +10:00
Goober5000 15c6f18c74 remove unused debug function
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11111 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-08 18:22:27 +10:00
Goober5000 5552fbcbd9 related to Mantis #3121, add parentheses if the string passed to runSEXP doesn't have them
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11110 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-08 18:22:24 +10:00
Goober5000 a3b7eec214 make flag checking more efficient and prevent an Int3() on bad data
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11109 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-07 18:22:11 +10:00
Goober5000 2d14ca7539 Parias's patch for Mantis #3102 (make show-subtitle-text positioning consistent on MP clients)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11108 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-07 18:22:10 +10:00
Goober5000 88abaf6de4 I forget who requested this, but this change now causes FRED to allow numeric sexps to be used for OPF_WEAPON_BANK_NUMBER
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11107 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-07 18:22:08 +10:00
Goober5000 3b90b65547 allow sexps which reference sounds to use either the table index or the entry name as the reference (based on a patch by m!m, see http://www.hard-light.net/forums/index.php?topic=86293.0)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11106 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-07 18:22:07 +10:00
zookeeper 4e0beccfc9 Reverted r10944 and r10945 for now, with the exception of the GL_TRIANGLE_STRIP->GL_QUADS fix.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11105 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-07 12:21:56 +10:00
Goober5000 cc76884514 well ok, revert that
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11104 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-06 18:20:08 +10:00
Goober5000 c3bcfc6303 don't enable nav system always... that's not how this is supposed to work
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11103 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-06 18:20:06 +10:00
m_m 478bb022c7 Fixed a bug reported by Axem: The scripting API used the wrong functions to determine if a hud gauge is a custom hud gauge.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11102 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-06 12:20:50 +10:00
Goober5000 4037d3be68 tweaks
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11101 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-05 18:20:10 +10:00
Goober5000 85872114ee related to Mantis #2971: properly reset shield info when we have a null objp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11099 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:44 +10:00
Goober5000 93c7775109 stupid missing parenthesis >.>
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11098 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:44 +10:00
Goober5000 e15cd38a88 Between the Ashes HPC request: extend ai-chase-same-team to ai-disarm, ai-disable, and ai-destroy-subsys too
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11097 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:44 +10:00
Goober5000 416af26244 and on the subject of Mantis #3110: fix the multi_sexp_deal_with_ship_flag issue that MageKing17 noticed, and tweak a sexp to be more clear
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11096 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:44 +10:00
Goober5000 cd2996f01d MageKing17's patch for Mantis #3110: Message Brackets not displayed with 'Invisible to Friendlies' flag
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11095 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:43 +10:00
Goober5000 f7e3bef9b7 Between the Ashes HPC request: allow ships to attack others on the same team
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11094 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:43 +10:00
Goober5000 31716a9348 use the OBJ_INDEX macro, because that's why we have it
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11093 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:43 +10:00
z64555 ec60984483 From MageKing17, Makes the $CD: token for cutscenes.tbl optional. Useful, since a majority of assets no longer require physical CD's.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11092 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-04 13:45:43 +10:00
chief1983 5e94b75354 Fix Mantis 3109: Revert r11079 and reopen #2888 since I didn't realize that Fred messages also often use built-in suffix appending. Need to either use FUBAR's original solution or re-engineer something else.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11090 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-29 06:19:41 +10:00
niffiwan 484b518760 Fix mantis 2804: beams can use damage factors
Add game_setting.tbl option that allows beams to use weapons table
Armor/Shield/Subsystem damage factors

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11089 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-27 18:20:18 +10:00
niffiwan df3435cadd Fix mantis 3108 (from Yarn)
Make parsing of DRADIS and custom hud gauges consistent with the rest
of the hud gauges

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11087 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-27 00:19:25 +10:00
Goober5000 7917b9885d fix Mantis #2987 (AddressSanitizer: global-buffer-overflow in message_queue_process())
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11084 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-25 16:40:34 +10:00
Goober5000 e0aaa83513 CommanderDJ's patch for Mantis #2899 (AddressSanitizer: heap-buffer-overflow in snd_play() sound.cpp)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11083 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-25 16:40:34 +10:00
Goober5000 435b078157 Yarn's patch for Mantis #3107 (Parts of the interface code assume a font size of 10)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11082 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-25 16:40:34 +10:00
Goober5000 a3e83aacfe CommanderDJ's patch for Mantis #3050 (Custom mainhall text is limited to 10 chars in the campaign editor)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11081 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-24 20:08:21 +10:00
Goober5000 62a2fb3c00 Yarn's patch for Mantis #3106 (Font parameter in hud_gauges.tbl not parsed correctly)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11080 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-24 20:08:21 +10:00
chief1983 946d7a45af Fix for Mantis 2888 - add Suffix support to disable suffixes for messages on a per message basis in messages.tbl. See the wiki.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11079 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-24 20:08:21 +10:00
niffiwan ab3ebebc9c Parts of mantis 3103 (From MageKing17)
Points 3-5 from the mantis ticket
i.e. use OPF_SSM_CLASS in appropriate places

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11078 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-22 20:17:36 +10:00
m_m 5b79ed3ea5 Fix for Mantis 3093: mn.getMissionFilenname() doesn't return a value if in GS_STATE_BRIEFING
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11077 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-22 19:59:03 +10:00
m_m dd4c91f8b6 From Parias: Fix for Mantis 3094: Request for new scripting function: ts.playCutscene()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11076 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-18 19:11:16 +10:00
niffiwan fc9f570374 Update .gitignore for new autoconf & libtool
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11075 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-13 14:03:50 +10:00
niffiwan fb2ce33802 Fix mantis 3105 (from MageKing17)
Use a pointer for reading radar IFF info, not an object copy

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11074 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-13 13:52:21 +10:00
niffiwan d9a4320dbb Add missing \n to mod_table mprintf
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11073 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-13 13:52:21 +10:00
niffiwan cd7b271b3b Tweak autotools
Use libtool, remove warnings about subdirs, DIE if autogen.sh pre-reqs
aren't met

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11072 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 1ac06f8b1c substitue main hall for displaying MjnMixael's main halls in fsport
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11046 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 7cd97633b6 Yarn's patch for Polish localization
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11044 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 603e96865f VC6 compatibility
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11043 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 5e2046c44b use class declarations since these contain SCP_string
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11042 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 d2a6beaacc that variable isn't actually a buffer, so change the misleading name
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11041 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 cd76a257c1 subtitles can now be as long as messages
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11040 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 6052d9c4a4 since we can replace variables in SCP_string, use that instead of an arbitrary char[256] buffer also const-correctness in the constructor
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11039 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 c866ff0061 Karajorma missed an Opps :p
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11038 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 dd353a74d8 add an Assertion about a buffer overflow vulnerability in split_str
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11037 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
karajorma b05303fa63 Opps. Only need that defined once!
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11036 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
karajorma 23d5913e9d The previously committed version of multi-eval did not include the code to allow it to determine if client side scripts should also be executed on the server. This version does but will break any previously created missions.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11035 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
karajorma 04fe7fb64a Fix Mantis 3077 (Subtitles including a message will crash multiplayer games).
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11034 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
niffiwan 3052565490 Revert "Silence GCC warning variable ‘max_size’ set but not used"
Based on chief1983's comment that this code is still used, I'll take
the safer route of just telling gcc to shaddupaboudit

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11029 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 b63fd9a86a Mantis #3101: check for presence of support dockpoints in all builds, not just release
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11028 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
Goober5000 a7d6891520 MageKing17's patch: add door keys and quick start region, and fix single player / multiplayer description toggling also fix two warnings regarding int and boolean conversions
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11027 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-09 20:37:02 +10:00
niffiwan 9b37d1e0f4 Fix gcc warnings in hudconfig.cpp
declaration of ‘color’ shadows a global declaration [-Wshadow] (x2)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11021 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 15:42:09 +10:00
niffiwan 0bebe6f98a Partial fix for mantis 2932 (cutscenes)
Convert campaign viewed cutscenes

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11020 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 15:42:09 +10:00
niffiwan 743a27b82f Partial fix for mantis 2932 (RA wep idx)
Ensure pilot conversion RA weapon indexes are always valid

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11019 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 15:42:09 +10:00
niffiwan 57faea2bef Fix mantis 3099 (from Yarn)
Make HCF parsing more flexible

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11018 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 15:42:09 +10:00
niffiwan 1a3336e9bd Silence GCC warning variable ‘max_size’ set but not used
Code seems redundant as dscap_get_raw_data checks for a max size
anyway. And AFAIK the entire voice capture code is non-functional anyway

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11017 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:06 +10:00
niffiwan b88edd53bc Followup fix for mantis 2883 (from Yarn)
Set Lcl_special_chars when changing fonts
Change some copyright chars to use Lcl_special_chars

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11016 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:06 +10:00
Echelon9 cba4cc9943 Fix cppcheck (performance) Prefer prefix ++/-- operators for non-primitive types.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11015 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:06 +10:00
Echelon9 aa4b76d990 Fix cppcheck (style) Consecutive return, break, continue, goto or throw statements are unnecessary.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11014 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:05 +10:00
Echelon9 44dc398b19 Fix cppcheck (style) Same expression on both sides of ||.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11013 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:05 +10:00
Echelon9 85427ec76a Fix cppcheck (warning) Logical conjunction always evaluates to false: logfile_type < 0 && logfile_type >= 2.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11012 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:05 +10:00
niffiwan 75e8f8642c Fix mantis 3020 (pilot stats issue)
Reset pilot stats when we're creating a new CSG file. Otherwise stats
from the current pilot or campaign will be inherited by the new pilot /
campaign

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11011 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:05 +10:00
niffiwan e6b8a433f1 Fix mantis 3097 (valgrind)
Don't read past the start of the string

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11009 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:05 +10:00
niffiwan c603d42b61 Followup fix for mantis 3049 (from Yarn)
Revert an Error back to a Warning
Prevent an out-of-bounds read of the Lcl_ext_str array

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11008 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-23 13:05:05 +10:00
niffiwan 179c2ceb82 Fix mantis 3065 (clear RA data)
Clear red alert data when resetting campaign progress, changing
campaigns and switching pilots
In CSG read, move RA data clear from the read RA section to the data
reset function (i.e. clear if CSG is valid, not if section contains
data)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11007 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:12 +10:00
Echelon9 21cee81a2a Fix Coverity 1093622 Array compared against 0 in process_new_player_packet()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11006 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:12 +10:00
Echelon9 0f77e0aa34 Fix Coverity 1093621 Array compared against 0 in send_accept_packet()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11005 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:12 +10:00
Echelon9 f3a1589d42 Fix Coverity 1093619 Array compared against 0 in delete_player()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11004 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:12 +10:00
Echelon9 01df45e37e Fix Coverity 1093613 Negative array index read in stuff_loadout_list()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11003 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:11 +10:00
Echelon9 1484f93590 Fix Coverity 1093599 Negative array index read in hud_query_order_issued()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11002 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:11 +10:00
niffiwan b29868aea7 Followup fix for mantis 3016 (FRED Briefing window FOV)
Make FRED icons & labels respect the Briefing_window_FOV

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@11001 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-17 18:50:11 +10:00
niffiwan 2427c9cfe3 Fix mantis 3092 (from Yarn)
Fix certain key string parsing in German & French

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10995 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-16 12:31:57 +10:00
niffiwan bfa3397dbd Fix mantis 2985 (from Yarn)
Fix float-to-int rounding errors in gr_[re|un]size_screen_pos

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10990 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-16 12:31:57 +10:00
niffiwan 3d8554b41f Followup fix to mantis 2887 (from MageKing17)
no-collide ship classes would collide unless the no-collide flag was set
in the mission file

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10989 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-16 12:31:57 +10:00
niffiwan 3c81c02829 oops - recommit r10986
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10988 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-16 12:31:56 +10:00
niffiwan 167739ed95 Fix gcc warning
declaration of ‘brief_line’ shadows a global declaration [-Wshadow]

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10987 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
niffiwan 5bcbad1e3a Fix mantis 3091 (from Yarn)
Treat non-ASCII chars above unsigned index 127 as word separators when
ending retail style colorisation

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10986 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
Zacam 060bc97360 From Axem: adds isInCampaign() lua function to tell when a mission is being played in a campaign (as opposed to via Techroom)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10985 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
niffiwan a2fd4aa519 Fix mantis 3088 (from Yarn)
Fix two German keys not displaying in controls config

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10984 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
niffiwan 4b7a69f34e Fix mantis 3089 (From MageKing17)
Move 3D ship select model drawing earlier so that the help overlay is
drawn over the top, not underneath

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10983 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
niffiwan ce8ed29326 From Coverity ID 1230636 Improper use of negative value
false positive; but add comment explaining why

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10982 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
niffiwan 43f3b6ade9 Fix Coverity ID 1230635 Unchecked return value
Check return code from lua EvalString on mainhall doors

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10981 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
Echelon9 0ed6dee427 Fix Mantis 3090: Valgrind: Conditional jump or move depends on uninitialised value(s) in webserverApiRequest()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10980 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
niffiwan 335b05c82a Fix input lag with some ATI cards on Linux
From electrojustin; adds cmdline option to force a gl_finish call
prior to swapping buffers.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10979 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:05 +10:00
m_m f8ff3be1fe From MageKing17: Fix for Mantis 3085: Unhelpful error reporting in hud_gauges.tbl if an invalid gauge type is specified.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10978 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:04 +10:00
niffiwan 7defc6aeeb Fix mantis 3086 (from Yarn)
Add special case to avoid crash from mismatched quotes in
tstrings.tbl German text

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10977 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:04 +10:00
niffiwan b725ec527a Fix mantis 3087 (from Yarn)
Readd translation support for default escort gauge header text

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10976 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:04 +10:00
Goober5000 5cbb9d991b Additional tweak for Mantis #2887 and follow-up to r10181: when modifying OF_COLLIDE, need to call obj_set_flags for collision code support
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10974 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:04 +10:00
m_m 27e824c215 Revert accidentally committed project file changes.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10973 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-11 18:54:04 +10:00
niffiwan 8e7a936c08 Fix line-endings in fred2/fred.rc
(somehow these got messed up in the git repo)
2014-08-06 19:41:46 +10:00
Goober5000 439b2c8cad add additional lookup for GTSC Faustus for next version of FSPort
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10972 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-06 19:39:35 +10:00
m_m 3db76adf40 From karajorma: Adds the multi-eval SEXP WARNING: This SEXP is subject to change and will likely be removed or changed in a future version, use with caution. Also fixes Mantis 3079: Add multi-eval to list of available SEXPs (.patch included)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10971 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-06 19:39:35 +10:00
m_m 8e4235a86e From ngld and Parias: Fix for Mantis 3084: Bitmaps loaded with gr.loadTexture() are never released.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10970 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-06 19:39:35 +10:00
m_m 9689711149 From FUBAR-BDHR, chief1983, m!m and MageKing17: Fix for Mantis 2887: Additional workaround for mantis 2693
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10969 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-06 19:39:34 +10:00
Zacam b562ebe1f5 From Axem: adds getFrametimeOverall() lua function for timing purposes outside of gameplay
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10967 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-05 18:47:23 +10:00
Zacam c03fad72cd Since we updated libpng, might as well update zlib as well. Now v1.2.8.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10966 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-05 18:47:23 +10:00
niffiwan 1a813db618 Fix mantis 3078 (From Yarn)
Don't set / reset unscaled screen area when rendering to texture
Also fix a pre-10844 bug where scaling down a cockpit gauge would
cause the gauge to be improperly clipped if it was close enough to the
right or bottom edge of the texture.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10965 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-05 18:47:23 +10:00
niffiwan b39b23c3f6 "Fix" gcc warnings in Control_config[]
warning: missing initializer for member 'config_item::BLAH'
[-Wmissing-field-initializers]

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10964 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-05 18:47:23 +10:00
Zacam e6f92ddcd9 Fix Mantis 3075 : Upgrades libpng from 1.5.7 to 1.6.12
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10963 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-05 18:47:23 +10:00
The_E 04f2c365f8 Fix for Mantis 3080 from MjnMixael: Fix for inadvertently changed parsing order for mainhall tables.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10962 387891d4-d844-0410-90c0-e4c51a9137d3
2014-08-05 18:47:22 +10:00
niffiwan 1291e0ad82 Fix mantis 3073: Additional Mainhall capabilities (from ngld)
Adds two new mainhall.tbl options:
1) "+Misc anim over doors:" (misc anim rendered after doors)
2) "+Cheat String:" (exchanges misc anim when cheat is entered)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10961 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-30 20:41:21 +10:00
zookeeper 774ec066a4 Fix a render target bug by disabling environment mapping when doing full-scene RTT.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10959 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-30 20:41:21 +10:00
niffiwan 9f768b8cff Doh! Assign, not equality!
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10958 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-30 20:41:21 +10:00
niffiwan f730df6c1a Fix Coverity ID 1093805 Uninitialized scalar variable
1st use of fbfire_info.bfi_flags so assign instead of |=

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10957 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-30 20:41:21 +10:00
niffiwan 5daa8d87d2 Fix Coverity 1093822 Uninitialized scalar variable
Set sensible looking defaults for the elems added to the beam_collision
struct since retail

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10956 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-30 20:41:20 +10:00
niffiwan 9314dc89da Fix gcc warnings in hud/hudtarget.cpp
declaration of ‘gauge_object’ shadows a member of 'this'
declaration of ‘esct’ shadows a global declaration [-Wshadow]
variable ‘srange’ set but not used [-Wunused-but-set-variable]
variable ‘ship_is_ballistic’ set but not used

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10955 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 20:39:18 +10:00
niffiwan 3cccc7cb13 Fix gcc warnings in hud/hud.cpp
declaration of ‘render’ shadows a member of 'this'
declaration of ‘font’ shadows a global declaration [-Wshadow]
variable ‘flags’ set but not used [-Wunused-but-set-variable]

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10954 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 20:39:18 +10:00
niffiwan 71faaf3137 From MageKing17: tweak team colors
While we're looking at the Team Color code, let's have a warning if
someone tries to name a team 'none', and avoid pushing duplicate teams
to the Team_Names vector.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10953 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 20:39:18 +10:00
niffiwan 1a0ef281ed Fix gcc warning in io/keycontrol.cpp
suggest parentheses around ‘+’ in operand of ‘&’ [-Wparentheses]
This code previously worked only by fluke!

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10952 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 20:39:17 +10:00
z64555 021a0bd3a7 From MageKing17: Followup to r10914. Makes the name check ignore case.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10951 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
niffiwan e2eddea231 Fix gcc warnings in globalincs/alphacolors.cpp
warning: declaration of ‘i’ shadows a previous local [-Wshadow]

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10950 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
niffiwan 2b191eef2d Fix Coverity 1228854 Copy-paste error
Check pof_file_hud for "$POF target file:" not pof_file ("$POF file:")

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10949 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
niffiwan e93c1e94b6 Fix Coverity ID 1228858 Missing varargs init or cleanup
In required_string_one_of(int arg_count, ...)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10948 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
zookeeper 751861c397 Fixed bits missing from r10946.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10947 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
zookeeper ae1c4435cf Turned the required SEXP variable arguments for add-background-bitmap and add-sun-bitmap into optional arguments.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10946 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
zookeeper a23438f590 Fixed inverted normals in RTT if post-processing is on.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10945 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
zookeeper 6b404f1daa Fixed RTT bugs: 1) inverted geometry, 2) the output being mirrored both ways and a quarter of the output missing if post-processing is off.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10944 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
niffiwan 2838afdd60 Fix several gcc warnings in code/graphics/gropengldraw.cpp
variable ‘clipped’ set but not used [-Wunused-but-set-variable]
variable ‘swapped’ set but not used [-Wunused-but-set-variable]
the address of ‘Distortion_texture’ will always evaluate as ‘true’
[-Waddress]
declaration of ‘vertex’ shadows a global declaration [-Wshadow]

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10943 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
Goober5000 0bd67304c4 a tweaked version of ngld's patch for additional main hall capabilities (see Mantis #3071)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10941 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:04 +10:00
Goober5000 6249638c5a use static casts to make our intentions clear and prevent compiler warnings
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10940 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:03 +10:00
Goober5000 5eeb6dd219 some const-correctness in preparation for the Mantis #3071 patch
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10939 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:03 +10:00
Goober5000 d04ae65f8b for Mantis #2064: remove ship template feature which never worked without crashing
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10938 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:03 +10:00
Goober5000 a30269bd3c for Mantis #2651: revert r10933, per forum discussion: http://www.hard-light.net/forums/index.php?topic=88047.0
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10937 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:03 +10:00
niffiwan 60bad89060 Fix gcc warning: ordered comparison of pointer with integer zero
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10935 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-27 13:03:03 +10:00
niffiwan ca31f9a402 Fix mantis 2651: from ZekeSulastin
Add support for up to 98 joystick buttons

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10933 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:29 +10:00
Goober5000 469e566b20 another localization patch by Yarn: disable character remapping when the game is running in Polish
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10932 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:29 +10:00
Goober5000 e13e37245e MageKing17's tweaks, with a couple of my own
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10931 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:29 +10:00
Goober5000 038ccffdaa Mantis #2999 - add docking log entries for support ships
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10930 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:28 +10:00
niffiwan b19622cf96 Fix gcc warning in hud/hud.cpp
the address of ‘Hud_text_flash’ will always evaluate as ‘true’ [-Waddress]

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10929 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:28 +10:00
The_E 96e8e77f4e Fix for Mantis 3064 from MageKing17: Followup fix.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10928 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:28 +10:00
The_E b178fd0cbc Fix for Mantis 3076 from MageKing17: Fixes behaviour of animated textures on skyboxes
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10927 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:28 +10:00
The_E d3ef69848c Fix for Mantis 3064 from MageKing17: Adds more functionality to colors.tbl. * "#Start Colors" is now optional; no more need for a blank section at the start of a colors.tbl just to define some team colors. * "#Interface Colors" section added for redefining various colors used by the interface. * "#Color Tags" section added for redefining or adding your own text color tags. * "#Default Text Color" section for choosing what color tag is the baseline default for various different screens. * And the big one, support for *-clr.tbm modular table files.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10926 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:28 +10:00
The_E a5a1a0ff3b Patch for Mantis 3069 by MageKing17: Fixes help.tbl error reporting
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10925 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:28 +10:00
Goober5000 6f80088695 for Mantis #2153: MageKing17's FRED support for error messages when wingmen have illegal weapons
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10924 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:27 +10:00
Goober5000 905f0999c2 Yarn's patch which allows FreeSpace fonts to support all characters that exist in both Code Page 437 and Windows-1252
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10923 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:27 +10:00
The_E 3eaf02c022 Fixes an unintended linebreak removal in previous commit
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10922 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:27 +10:00
The_E 5bff2754c2 From MageKing17: Fixes for a couple of clang warnings.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10921 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:27 +10:00
The_E 5e6746af43 From MageKing17: Improves sexp help text to clear up possible confusion about indexes that are zero-based.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10920 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:27 +10:00
niffiwan d2cbf65e1e Fix mantis3054 (from ngld)
In weapon select screen check weapon model index is != -1 before drawing it

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10918 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-24 19:45:27 +10:00
m_m fca002ada8 From Axem: Add ba.getGameDifficulty() scripting function to get the current difficulty level.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10916 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:32 +10:00
The_E d3089bb406 Fix for Mantis 2882 by Mageking17 (change-team-color with None color results in error)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10914 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:32 +10:00
The_E b96b0e87d8 Removes nonfunctional debug code left over from the :V: days
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10911 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:32 +10:00
The_E 3d3fa6a749 Moving an assignment out of an if statement for better readability
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10910 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:32 +10:00
The_E 514a8c3557 PVS Studio fix: Make the logic responsible for sending the builtin rearm messages behave as intended.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10909 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:32 +10:00
Goober5000 fe4b949c06 fix Mantis #3072 (crashes when using different languages)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10908 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
chief1983 ae351d2924 Fix Mantis 2886 - Option to render External weapon models, besides Tech models, in Weapon lab, from FUBAR.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10907 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
chief1983 4854087a18 Fix Mantis 2885 - SEXP flag to enable/disable primitive sensors, from FUBAR.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10906 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 831e0f3be7 Address clang warning: parameter 'x,' not found in the function declaration [-Wdocumentation]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10904 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 307923e8dd Address clang warning: unknown command tag name 'brieft'; did you mean 'brief'? [-Wdocumentation]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10903 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 eacf4d4e6e Address clang warning: parameter [x] not found in the function declaration [-Wdocumentation]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10902 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 2859e74ac9 Address clang warning: extra ';' after member function definition [-Wextra-semi]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10901 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Goober5000 98a6166956 follow-up to r7163: this makes the text display properly in-game, no Unicode support needed (thanks to Yarn for the patch)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10900 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 07cad23aed Address clang warning: commas at the end of enumerator lists are a C++11 extension
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10899 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 255fef6e47 Address clang warning: unused variable
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10898 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Echelon9 fc1b587cb6 Address clang warning: declaration shadows a field of 'HudGaugeRadarDradis' [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10897 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Goober5000 8cdfb029d3 add mod_table option for red-alert for delayed ships (Mantis #3055)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10895 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
Goober5000 2fe0ec8ef0 Yarn's patch for Mantis #3049 (character remapping in tstrings.tbl)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10894 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:31 +10:00
The_E 75f533a6fe Fix for Mantis 2960: Actually make sure that we're not performing invalid operations on a vector.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10887 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
The_E d6e0a731db From MageKing17: Patch for Mantis 3074: Correct mismatch between mission write and mission parse
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10886 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
Echelon9 327c67ff1d Address clang warnings - hud/hud.cpp:1310:3: warning: delete called on 'HudGauge' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10885 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
Echelon9 80e1ecee69 Address clang warning - hud/hudtarget.cpp:7224:12: warning: declaration shadows a local variable [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10884 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
Echelon9 02aa18c260 Address clang warning - io/keycontrol.cpp:2504:7: warning: declaration shadows a local variable [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10883 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
The_E 53e78033c6 Fix unintended linebreak removal from 10880
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10882 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
Echelon9 bc568a9149 Address clang warning - lab/lab.cpp:912:8: warning: declaration shadows a local variable [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10881 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
The_E 0d9cc00ba8 From MageKing17: Removes redundant function call
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10880 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:30 +10:00
Echelon9 46288483c9 Address clang warning - menuui/mainhallmenu.cpp:2141:9: warning: declaration shadows a local variable [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10879 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
The_E 580330c224 From MageKing17: Patch for a small issue in briefing text color spans
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10878 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
Echelon9 3f645215ad Address clang warning - object/collideshipweapon.cpp:258:17: warning: declaration shadows a local variable [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10877 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
Echelon9 d3f914a404 Address clang warning - ./ui/ui.h:291:7: warning: private field 'ignore_escape' is not used [-Wunused-private-field]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10876 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
Echelon9 7f9d879d7b Address clang warning - ./ship/shipfx.h:202:6: warning: private field 'stage' is not used [-Wunused-private-field]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10875 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
Echelon9 54de592835 Address clang warning - debugconsole/console.cpp:169:13: warning: declaration shadows a local variable [-Wshadow]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10874 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
Echelon9 03c32c1648 Further tweak fix for Coverity 1093783 Uninitialized scalar variable, and remove redundant variable in opengl_light structure
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10873 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
Echelon9 713e291bdc Partially re-add the secure coding aspects of 10806 (which was rolled back in 10857). Fundamentally, the code in theora_open is written in a non-secure manner prior to this fix. That the callers currently appear per Goober to use it correctly is not the issue. There is no way of enforcing that contract as to length of the string unless it is internally handled in the function. Also Goober's comment that all callers use string lengths of MAX_FILENAME_LEN is incorrect. Examples trivially found that use the separate define NAME_LENGTH, which could be changed in future.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10872 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-14 19:02:29 +10:00
chief1983 137eb7e4d4 Fix Mantis #2790, Easy options should be just that again.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10869 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
chief1983 f89d864756 Fix Mantis #3070, courtesy of Yarn.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10868 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Echelon9 7a56e7ff4a Fix Clang warnings about incorrect type given different pointer sizes for the architecture. Use the standard compliant ptrdiff_t
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10867 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Echelon9 a0ed86d6bc Remove a tautological Assert(), which cannot be triggered due to the type
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10866 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Goober5000 475e4d5d35 Yarn's fix for Mantis #2362 (scale images properly with show-subtitle-image)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10865 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Goober5000 3743449a42 from MageKing17: choose alt_names and callsigns by array index instead of substring; fixes Mantis #2934
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10864 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Goober5000 79b73f241b MageKing17's patch for callsigns not resetting when the mission is cleared (Mantis #2934)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10863 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Echelon9 2da2527207 Quieten a number of warnings related to UI_USERBOX without a declaration yet. Added TODO.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10862 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Echelon9 f8ef768bbf Address Clang warnings are overloaded virtual functions in UI_GADET. Also opportunity to simplify code by making the most of inherited polymorphism. Docs cleanup
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10861 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:09 +10:00
Echelon9 522eb962ff Fix a range of issue identified via clang warnings
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10860 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Goober5000 ad761f980f fix a bug introduced by r10852: MAX_OBJECTS is not a valid object index
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10859 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Goober5000 41d7f2408c fix a bug introduced by r10837: 0 is a valid path index
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10858 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Goober5000 7c07151e26 roll back r10806 because 1) all callers to this function have names which are MAX_FILENAME_LEN in size; and 2) the memset already sets all characters to 0, so there's no need to add a null terminator
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10857 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Goober5000 05e0af6ebd the minimum macro is defined as MIN in FSO to avoid conflicts; no need to #undef (since rev 10796 uses MIN anyway)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10856 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Echelon9 d37e4c567d Fix Coverity #1093706 Negative array index read in scoring_eval_kill_on_weapon()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10855 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Echelon9 130ed7c7e3 Fix Coverity #1093707 Negative array index read in start_ship_animation()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10854 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Echelon9 8d6e82c3bc Fix Coverity #1093711 Negative array index read in event_music_enemy_arrival()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10853 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Echelon9 823c144ecc Fix Coverity #1093715 Negative array index read in maybe_weapon_detonate()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10852 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Echelon9 abc0fd11b5 Fix Coverity #1093720 Negative array index read in ai_big_maybe_follow_subsys_path()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10851 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:08 +10:00
Echelon9 c3494516bd Fix Coverity #1093544 Negative array index read in multi_ts_handle_mouse()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10850 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
Echelon9 9cbd23d2e9 Fix Coverity #1093783 Uninitialized scalar variable in gr_opengl_set_center_alpha()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10849 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
Echelon9 8cbb46f40c Fix Coverity #1224006 Uninitialized scalar variable in nebl_generate_section()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10848 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
Echelon9 c85caef631 Fix Coverity #1224005 Negative array index read
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10847 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
The_E 3545cacda0 From MageKing17: Patch for Mantis 761(!): Text color tags do not work in debriefings. Also allows color spans in text to cover line breaks.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10846 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
The_E 7be5b03c62 From MageKing17: Patch form Mantis 3067 (Nebula flashing not following player view point)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10845 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
niffiwan 027f218f7f Allow any resolution for mainhalls (From Yarn)
Also includes support for more than two mainhall resolutions, zooming
so one mainhall can adapt to multiple resolutions, setting new mainhall
fonts, help overlays for all resolutions and adjustable tooltip padding.
Also allows preload screens to be any resolution & aspect ratio.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10844 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:07 +10:00
z64555 cdb954f333 Fixes mantis 2877: $Type and $Category entries in controlconfigdefaults.tbl would not properly parse. #defines and enumerated names in the controls code (Such as TAB_SHIP and the various CC_TYPE's) may now be used in the .tbl
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10843 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:06 +10:00
The_E 8c1bef0415 From FUBAR: Patch for Mantis 2842 (Adds new section to game_settings.tbl called "#FRED SETTINGS". Also adds a parameter for it, "$Disable Hard Coded Message Head Ani Files:", a boolean value that controls whether FRED fills the head ani selection in the Event Editor with the retail head ani names)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10842 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:06 +10:00
The_E c07d792e4e From FUBAR: Patch for Mantis 2872 (Make FRED emit a warning for invalid ship classes in a mission file)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10841 387891d4-d844-0410-90c0-e4c51a9137d3
2014-07-05 10:38:06 +10:00
niffiwan 545fd5e6ac Fix mantis 3056
In redalert loadout, only store the current number of banks in use by
ships, not all banks where the weapon idx is -1

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10840 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 18:54:31 +10:00
Echelon9 c837a21f0d Now that standalone server is support on more than Windows, ensure its features are applied as consistently as possible
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10839 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
Echelon9 666f53e44b Fix Coverity #1093598 Negative array index read
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10838 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
Echelon9 edad644595 Fix Coverity #1093597 Negative array index read
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10837 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
Echelon9 82058a8c99 Fix Coverity #1093552 Negative array index read
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10836 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
Echelon9 ae6365bc35 Fix Coverity #1093545 Negative array index read
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10835 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
Echelon9 c2122f9767 Fix Coverity #1093544 Negative array index read
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10834 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
zookeeper 8e0304a58f Fixed a bug in normal maps caused by a redundant and float-inaccurate calculation.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10833 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
niffiwan 2740cf5ea2 Allow missions to exit to mainhall on successful completion
Activate with either a mission flag, or the 3rd parameter to the
end-mission sexp. Covers ending via the debrief, skipped from dying
5x times or skipped training mission
Does NOT work for redalert missions or multi (yet)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10832 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-26 16:54:17 +10:00
niffiwan 322d1f39e0 Fix mantis 2945 (From MageKing17)
Don't set PF_PROJECTED in g3_transfer_vertex() as it's not projecting
the vertex
Note: displaying nebula emp/lightning used to depend on unitialised data!

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10828 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:54 +10:00
Zacam cc36ac9faf Follow-up to r10793, missed a spot of [more]
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10827 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:54 +10:00
m_m a45e930047 Fix for Mantis 3063: Animation code-related sound entries doesn't use new sound format
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10826 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:54 +10:00
The_E 83ffa764b5 Fix for Mantis 3016 part 2 (Make FRED respect the Briefing Window FOV setting in game_settings.tbl
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10825 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:54 +10:00
The_E 54787e8402 Fix for Mantis 3016 (Briefing window FOV different from retail). Also adds a new setting to game_settings.tbl, "$Briefing Window FOV:" under Graphics, which takes a single float argument to set the FOV of the briefing window.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10824 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
The_E 8da0ac791e From MageKing17: Patch for Mantis 3060 (Beam particles not generated correctly in certain cases)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10823 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
The_E 971192ab30 From MageKing17: Patch for Mantis 3061 (Turrets can't have an initial rotation defined)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10822 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
The_E 505e1e77f5 From MageKing17: Patch for Mantis 3012 (Various issues with ships in nebula)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10821 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
The_E cba1eb07db Fix for Mantis 2982: Removes superfluous Assert.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10820 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
CommanderDJ 358e2ab4fc Fix Mantis 2773: Models turn black when full nebula enabled in FRED.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10819 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
niffiwan f5199ea122 Fix mantis 2929
Save shortcut rank to the csg flags & bump csg version
Add function to read the csg rank during pilotfile::verify()
Reorder 'find pilots' call so that Game_mode is valid for verify

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10818 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-19 20:12:53 +10:00
niffiwan 603a4086f5 Fix mantis 2920: prevent pilots switching languages
In other words, a pilot can only be used in the same language it was
created with. Checks both the initial selection screen and in the
barracks.
Also fixes issue with PLR version being ignored in pilotfile::verify()

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10817 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
niffiwan 05adea0e25 Fix mantis 2923
Backout all_time and multi_stats from the pilotfile stats as
required

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10816 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 3f752b9a40 Address Coverity 1093687 Resource leak in os_init_cmdline() that would occur when the -parse_cmdline_only flag was set. Refactored to improve readability at the same time. Order of precedence remains data/cmdline_fso.cfg, per-user cmdline_fso.cfg (on Linux and Mac), then actual commandline. The presence of -parse_cmdline_only will ignore all settings in on-disk cmdline_fso.cfg files
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10815 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 55f34b1b58 Address Coverity 1093378 and 1093379 Resource leaks in object ChttpGet::ChttpGet()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10814 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 a0f31e6dc5 Address Coverity 1093380 Resource leak in object CFtpGet::CFtpGet()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10813 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 f5a9d32d14 Address Coverity 1093781 and 1093782 Uninitialized scalar variables in cftp.cpp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10812 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 d0b786fe87 Address Coverity 1093635 Out-of-bounds read in multi_team_report()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10811 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 d8e26c8e02 Address Coverity 1212011 Unchecked return value in DCF(multi oo)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10810 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 05991a9fbf Address Coverity 1107318 Logically dead code in outwnd_print(), check for NULL id has already occurred
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10809 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 55af81050d Fix Mantis 3059: Coverity 1204289 String not null terminated in cf_search_root_pack()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10808 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 27495abda6 Address Coverity 1093373 Copy-paste error in vm_find_bounding_sphere()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10807 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:36 +10:00
Echelon9 129a2d0d85 Address Coverity 1204290 Copy into fixed size buffer - strncpy() should be restricted by length to that of the target string, and does not guarantee null termination if the source string overran
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10806 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:35 +10:00
Echelon9 1883fcb8ae Address Coverity 1093663: Out-of-bounds access with memcpy() in multi_oo_pack_data() for clients only
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10805 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:35 +10:00
niffiwan 2ea048ee51 Fix mantis 3005: add arg so end-campaign sexp can ignore the death screen
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10804 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 20:29:35 +10:00
niffiwan c4978d3661 Fix r10801 (thanks to MageKing17 for noticing this)
Really avoid using -1 as an array index

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10803 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
chief1983 d2ffd40d67 Fix an assertion logic reversal in r10797, spotted by MageKing17.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10802 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
niffiwan e86d0c573d Fix pilot conversion issue (followup to r9630)
-1 is a valid weapon index, but avoid indexing the array with it

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10801 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
Zacam 1d6e173023 Fix for Mantis 3058: On warp out, glowpoints still stay "on" and in mission space without a ship; from MageKing17
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10799 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
Zacam 2db5a3b991 Fix for Mantis 2725: Beam sounds not panning correctly
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10798 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
Zacam 3e22cc0d54 Fix for Mantis 3057: Loadout (Ship/Weapon Select effect) rendering black models or no effect. Also corrects wireframe color for FS2 effect from black to blue. Committed on behalf of MageKing17.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10797 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
m_m 3390ba23a0 Fix for Mantis issue 2891: gr.drawString text box height irregular
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10796 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
niffiwan 1f246b7de1 Coverity ID 1093586 Negative array index read
Shouldn't be able to occur since when artillery_objnum is set to -1,
artillery_lock_time is also set to 0.0f. BUT, protect the array
access anyway in case the surrounding code changes in future.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10794 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
Goober5000 35096fd957 use the [more] color, per MageKing17's previous changes
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10793 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:20 +10:00
niffiwan 1bd98325bd Coverity ID 1093722 Negative array index read
Move -1 check to before the convinience ptr is created & used

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10788 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-14 13:07:19 +10:00
niffiwan 06b0eb8d35 Fix mantis 3051 (From MageKing17)
Only store CPVs on accepting mission results
Add copy of CPVs to missioncampaign and pilot .csg so redalert missions
can rollback the CPVs if required

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10786 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:53 +10:00
niffiwan 5801bd47ea Coverity ID 1093538 Negative array index read
Change unknown +Default Ship index (-1) to 1st ship index (0)
Fix loop iteration
Change Assert to Assertion

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10774 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:53 +10:00
niffiwan a545580a5a Coverity ID 1093533 Negative array index read
This negative read occurs regularly, but it'd be very very rare for that
random read value to evaluate to OBJ_WEAPON and cause further issues.

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10773 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:53 +10:00
niffiwan 3b77e65f5f Raise MAX_PATH_LEN to 256 so FSO can run in long paths
Specifically avoid one issue with running FSO in the default Steam dir
Converted some magic 128/127 numbers to MAX_PATH_LEN
Convert some Int3() into more friendly errors
Stopgap measure until proper fix added with compressed VP support
Fix mantis 3028

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10772 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:52 +10:00
zookeeper 3a3e8599df Removed an assert checking for a condition which can rarely be false (presumably due to inaccuracy in vector normalization) but which doesn't actually need to be true.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10766 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:52 +10:00
niffiwan 9da72db80e Coverity 1221482: Dereference after null check
Stop Ctrl-PgUp/PgDown crashing when a briefing icon is not in closeup mode

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10764 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:52 +10:00
niffiwan e3ebdd3ce9 Coverity ID 1221483: Missing break in switch
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10763 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-09 13:48:52 +10:00
niffiwan 8baa713ef8 Fix a few gcc compile errors introduced by r10756
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10760 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-07 12:37:26 +10:00
The_E 147bf23067 Catch a lua error that apparently can happen
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10759 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-07 12:37:26 +10:00
niffiwan fdd8666524 Fix mantis 3048 (From MageKing17)
Fix "more" & offsets in [cmd|de|]briefings

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10758 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-07 12:37:26 +10:00
m_m d84d9d31aa Added multiple scripting features related to messaging as requested by Axem.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10756 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:18 +10:00
m_m 6d5b5ddde1 Add support for voice acting in fiction viewer.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10755 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:18 +10:00
niffiwan f54429d49f Fix mantis 3041
Allow set-skybox-model to set skybox flags (with FRED support - thanks
m!m)

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10754 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:17 +10:00
Goober5000 8e1c4be1b6 quotes can span multiple lines as well, so let's keep track of that flag (fixes Mantis #3001)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10753 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:17 +10:00
Goober5000 e10550cdbd fix a bug in the when-argument sexp that managed to escape detection from its original design! spotted by MageKing17, fixes Mantis #3052
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10748 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:17 +10:00
Goober5000 a1e5d76c02 roll back r10741 pending further code review; see Mantis #3052
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10743 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:17 +10:00
Goober5000 cf8c06f850 follow-up to r10734: in the event of any SND_F flags being added in the future, this is more future-proof
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10742 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:17 +10:00
The_E c562e34516 From MageKing17: Fix for Mantis 3502 (Flush the sexp result tree after argument evaluation to avert accidental short-circuit results)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10741 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-06 16:51:17 +10:00
niffiwan 28c31c9ba2 Fix mantis 3053 (From MageKing17)
Check KEY_DEBUGGED1 to allow event.log snapshot to trigger when using
release+cheats

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10740 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:30:00 +10:00
niffiwan e926d6bad0 Fix mantis 2812 (From Yarn)
Add modular help tables and allow more than 2 help overlays

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10739 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:30:00 +10:00
The_E 52331f89a2 Stopgap fix to avert a crash in get_subsystem_world_pos later on
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10738 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
Echelon9 f995298abf Fix Coverity 1093663: Out-of-bounds access in multi_oo_pack_data()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10737 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
Echelon9 62b9833bf0 Fix Coverity 1093638, 1093640 and 1093667: Out-of-bounds access in tcp_client.cpp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10736 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
Echelon9 0279040e80 Fix Coverity 1093799 Uninitialized scalar variable -- initialise array contents to zero
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10735 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
Echelon9 ff38404cac Fix Coverity 1093788 Uninitialized scalar variable - no need for bitwise AND when value is so far unset
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10734 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
Echelon9 a779ee3ed4 Fix Coverity 1093783 Uninitialized scalar variable with opengl_light structure in gr_opengl_set_center_alpha()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10733 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
Echelon9 4033465143 Fix Coverity reports of Uninitialized scalar variable with the vertex struct. Should vertex ever be converted to a class from a struct, these memsets as well as the pre-existing ones will need to be removed in favour of a proper constructor of the then vertex class.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10732 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:59 +10:00
niffiwan e7d041c332 Fix mantis 2940
Only reset pilotfile stats when the local Player is reset

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10722 387891d4-d844-0410-90c0-e4c51a9137d3
2014-06-02 18:29:58 +10:00
m_m c1b2d7c1ee Fix for Mantis 3045: gr.drawImage()'s UV arguments aren't working properly
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10721 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-25 19:03:50 +10:00
Goober5000 53e5ba5913 remove Import Weapon Loadouts feature, which was mainly used for versions of FSPort prior to 3.0 and was broken from r2768 to r10718 anyway
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10720 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-25 19:03:50 +10:00
The_E 154a1a6c76 Removing dead and potentially confusing code
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10719 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-25 19:03:50 +10:00
Goober5000 9fdfde9ae6 restore a strcpy that was accidentally removed in r2768 (fixes Mantis #3046)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10718 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-25 19:03:50 +10:00
The_E d5388ad4bf Fixes crash in the texture replacement editor: Erasing the end element of a size 0 vector is probably not a safe thing to do
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10717 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-25 19:03:50 +10:00
niffiwan c27079fb7a Fix Coverity ID 1215457 Out-of-bounds write
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10716 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-24 09:35:04 +10:00
niffiwan e037571170 Fix Coverity ID 1215458 Uninitialized pointer field
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10715 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-24 09:35:04 +10:00
z64555 d5e81f4561 Fixes 3039: C++ STL was having data race issues with instantiating the debug_commands and the vector that was supposed to reference them. Seems like ✌️ ran into this issue a few times before...
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10712 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-23 22:04:59 +10:00
The_E 003d5e5a2a Amendment to 10706: INT, FLOAT and STRING are already defined symbols on Windows, I've changed them to AT_INT etc so that compilation can happen.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10710 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-22 20:49:29 +10:00
niffiwan e31a8be138 Fix mantis 3026
Update Linux --help option to show all cmdline options
Added data/checks for expected args to cmdline options
Add extra const-ness per m!m review

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10706 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-20 19:12:37 +10:00
m_m a6a41efa84 Add support for countermeasures that will pull aspect seekers away from their previous targets.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10705 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-20 19:12:37 +10:00
The_E 3344f554f9 More ship flag/ship info flag confusion cleared up
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10704 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-20 19:12:37 +10:00
The_E 2c59a39bf6 See 10701, same issue here
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10702 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-20 19:12:37 +10:00
The_E 3e1d0082c4 Checking a ship_info flag against a ship flag isn't going to work
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10701 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-20 19:12:37 +10:00
chief1983 b4785ea039 Add some lib locations for Solaris for software installed from OpenCSW.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10695 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-20 19:12:37 +10:00
asarium 6c16d0a890 Revert "Add support for countermeasures that will pull aspect seekers away from their previous targets."
This reverts commit 263ed7f05d.
2014-05-17 22:17:57 +02:00
asarium 263ed7f05d Add support for countermeasures that will pull aspect seekers away from their previous targets. 2014-05-17 22:12:37 +02:00
niffiwan 8da9a68d31 Fix assertion when entering barracks in debug
Assert that there's one more line free, not number-of-ships lines

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10689 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:12 +10:00
The_E c22fd46f18 Change the "Report Bug" button's URL to scp.indiegames.us
In other news, did you know that FRED has a "Report Bug" button in its About dialog?

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10666 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:12 +10:00
niffiwan bd64590ec1 Fix mantis 2981
Read & write pilot loop data in the same order

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10665 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:12 +10:00
niffiwan ec90cae8d9 Fix Coverity ID 1212016 Copy into fixed size buffer
replace strcpy with strcpy_s

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10662 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:12 +10:00
niffiwan e199a928c4 Fix Coverity ID 1212017 Copy into fixed size buffer
replace strcpy with strcpy_s

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10661 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:12 +10:00
niffiwan 3890ca6928 Fix Coverity ID 1212013 Macro compares unsigned to 0
Use MAX instead of CLAMP

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10660 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:12 +10:00
niffiwan 6b955bb7b8 Fix Coverity ID 1212014. Unsigned compared against 0
Removed the >= 0 check

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10659 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:11 +10:00
niffiwan cc21af0d08 Fix Coverity ID 1212015.
Check the pointers value vs '\0', not the pointer

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10658 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:11 +10:00
z64555 153cb7dc79 Debug console. Now with more intuitive pagination from the help list!
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10654 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-15 18:24:11 +10:00
niffiwan 5ccfbe1119 Remove GCC Warning (unused-variable)
Since token_str is only used in 1x .cpp, move the declaration from
the .h to the .cpp

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10653 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:38 +10:00
z64555 2903bbee1f Resolves complaints from VC6 about several instances of find_if that were not scoped properly. None of the other compilers seemed to have noticed...
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10647 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:38 +10:00
z64555 c6e9736c18 Resolves some warnings concerning signed/unsigned comparisons. Fixes a typo with a DCF_BOOL output message. Fixes compiling on MSVS 6.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10646 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:38 +10:00
zookeeper 9b822a3fa7 Fixed gr.drawOffscreenIndicator() returning wrongly scaled coordinates.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10645 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
The_E cc8f3d2b21 Fixes another C4800: Conversion from int to bool warning
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10632 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
The_E e3421897b9 fixes a bunch of C4800 warnings
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10631 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
zookeeper 90c0e77250 Fixed missing closing tags.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10629 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
chief1983 5e21ff72b9 Revert some accidental solution file changes from the debug console commit.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10627 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
chief1983 f11188246b Fix debug console compiling error on Linux.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10626 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
chief1983 5b8728411f Add debugconsole files to makefile. Also, remove lingering reference to dbugfile.h which was deleted in r7857.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10625 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
chief1983 4dcf6a62ee Add debugconsole to Xcode 3 project.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10624 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
chief1983 92d9b8b308 Redo the LastUpgradeVersion part of r10558.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10623 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
z64555 8d5fbab768 z64555's debug console. Take 2. Includes changes to most (not Xcode) project files to include the added files of r10621
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10622 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:37 +10:00
z64555 f18f8a9ea7 debug console amendment, these files got ignored, somehow.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10621 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:36 +10:00
The_E 98355da7d5 Revert 10619: Missing files
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10620 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:36 +10:00
z64555 2b2ba832f8 z64555's debug console.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10619 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:36 +10:00
zookeeper edc515e681 Fixed Mantis #3037; surface shields will again check for a shield mesh collision before hull collision.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10618 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:35 +10:00
zookeeper c80484f890 Clarified documentation of gr.drawPolygon and gr.drawSphere.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10616 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-08 19:18:35 +10:00
niffiwan b42f468552 Fix issues added in r10587
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10611 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-04 20:52:23 +10:00
niffiwan a861372efc Add lua campaign lib & functions to retrieve mission filenames
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10602 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-04 20:52:23 +10:00
niffiwan 7c3631002b From Yarn: Fix mantis 3031
Use PF_USE_AFFIRMATIVE_ICON where necessary

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10601 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-04 20:52:23 +10:00
Echelon9 67ccdfb6d3 Fix Mantis Issue #2976: AddressSanitizer: global-buffer-overflow in firing_aspect_seeking_bomb()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10596 387891d4-d844-0410-90c0-e4c51a9137d3
2014-05-04 20:52:22 +10:00
karajorma bb7e894107 Output how much of the player's score comes from the currently displayed list of kills by ship type in the barracks.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10595 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-25 16:04:45 +10:00
Echelon9 8267319073 Resolve build errors reported on MSVC in beam_ok_to_fire()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10594 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-25 16:04:45 +10:00
Echelon9 c1fdd9a58c Correct the cast to size_t in buffer_data constructors
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10593 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-25 16:04:45 +10:00
Echelon9 a7e1390397 Fix Mantis Issue 3035: AddressSanitizer: double-free in interp_configure_vertex_buffers() of memory contained in buffer_data object. Add a copy-constructor and copy-assignment operator which are required as we manage our own memory in buffer_data
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10592 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-25 16:04:45 +10:00
Echelon9 ceeabbf805 Reverse commit in r10558. Given we regularly have users provide Debug logs, this will prevent that small subset with only 32bit Mac's from running a Debug build
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10588 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-25 16:04:44 +10:00
niffiwan b1ca9a33da Fix mantis 2950: make shields-on/shields-off multi compatible
Fix multi player for alter-ship-flag

git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10587 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 974bf06237 Fix Coverity 1093381: Resource leak in object due to absence of destructor. Provided that release() has already been called, which would mean memory has been cleaned up on most paths, this destructor will be in essence a NOP (or close to it). If memory has typically not been cleaned up already, this addition will improve memory usage over time.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10581 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 b36f1c1709 Fix Coverity 1093306: Whilst the return value was not checked in beam.cpp, the correct fix is to convert the function to void given no location actually checks the return value.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10580 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 bdd192a17d Fix Coverity 1093302: Unchecked return value. This is the only occasion where the return value of ship_get_by_signature() is not checked. Likely oversight.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10579 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 5268ef1916 Related to Coverity 1093623: The self-assignment at present has no effect
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10578 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 26ee96a012 Fix Coverity 1093493: Missing break in switch statement. No logical reason why LE_ORDER_EVADE should fall through to LE_ORDER_STAY_NEAR. Only switch statement in block without a break statement further indicates an oversight.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10577 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 389f4b3dfb Fix Coverity 1093376: Copy-paste error in ade_table_entry::OutputMeta()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10576 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:26 +10:00
Echelon9 1205336fee Fix Coverity 1194949: Copy-paste error in gr_opengl_bitmap_ex()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10575 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:25 +10:00
chief1983 0bb037bb85 Removes the DS_Store hidden files from the Xcode4 Frameworks archive.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10572 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:25 +10:00
chief1983 46c61fcbcf Unify all the revision placeholders out to 6 digits for increased regex replacement reliablity.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10570 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:25 +10:00
chief1983 f903da75e3 Increase Xcode and Xcode4 version and filename consistency with other platforms.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10569 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:25 +10:00
Echelon9 3c155fd888 Fix Mantis Issue #3033: AddressSanitizer: global-buffer-overflow in shockwave_move()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10568 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:25 +10:00
Echelon9 308179256a Fix Mantis Issue 3032: AddressSanitizer: SEGV on unknown address 0x00000000f000 in texture_info::LoadTexture()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10567 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:25 +10:00
zookeeper a20f54957c Ported r10282 from zookeeper branch: added a new #SOUND SETTINGS section to game_settings.tbl and in it overrides for the default sound, music and voice volume.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10563 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:24 +10:00
zookeeper 1f2f6d8d8e Ported r10395 from zookeeper branch: made the Shields handle support non-quadrant shields.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10562 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:24 +10:00
zookeeper 636f903f72 Ported r10442 from zookeeper branch: increased the arrival/departure paths restriction dialog's width by 100px so even longer path names will be fully visible.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10561 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-22 19:22:24 +10:00
Echelon9 01d718f8e9 Project files in Xcode4 folder adopt latest suggested project file settings from Xcode 5.1.1
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10558 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-14 19:40:17 +10:00
Echelon9 7e47598eb9 Fix issue 3030: Clang warning: semantic issue, '&&' within '||' in gr_[re|un]size_screen_pos() and gr_[re|un]size_screen_posf()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10557 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-14 19:40:17 +10:00
Echelon9 7aaa5fa4a1 Fix Mantis 3029: Clang warning: expression result unused in multi_pinfo_blit_squadron_logo()
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10556 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-14 19:40:17 +10:00
m_m 77d7871266 Fix for Mantis 3027: Crash if ship AI is forced to change target
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10552 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-14 19:40:17 +10:00
m_m d3dde35341 Fix for an invalid index crash.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10550 387891d4-d844-0410-90c0-e4c51a9137d3
2014-04-14 19:40:17 +10:00
niffiwan 3a113e6176 Remove gcc warnings (unused)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10548 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-31 17:28:25 +10:00
The_E 6e91857745 From Yarn: Fixes interface graphics scaling issues. If, for some reason, you want to have the interface graphics stretched, use the -stretch_menu commandline flag.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10544 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
niffiwan c5417c1909 Fix mantis 3025: pass lua HookVar integer data as an integer, not a struct
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10543 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
Goober5000 d195c97056 Yarn's fix for Mantis #3024
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10531 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
Goober5000 c5a7223943 this will likely fix Mantis #3013
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10530 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
The_E 4f39ef2e07 Fix for Mantis 3023 by Yarn: Make sure the vasudan mainhall fun cheat works again
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10519 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
The_E 07980be92e Fix for Mantis 3015: Makes sure rotation values are always in the 0-359 degree range
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10518 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
niffiwan 08280e3d9e Remove gcc warnings (unused & shadow)
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10517 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
niffiwan ca17188572 Fix mantis 2921: start mainhall music when leaving the credits state
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10507 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
Goober5000 d7b6a1ac6f add briefing icons for ship-with-cargo and wing-with-cargo
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10506 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
zookeeper 7099170497 Changed the label of the "Broadcast Locally" multiplayer option from "/multidata" to "Broadcast Locally".
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10498 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
niffiwan 7f1a2c734f From Axem: fix newly added hud gauge sexps
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10497 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
karajorma 2356f04f04 Yarn's fix for Mantis 3017 (Certain HUD elements don't work after the changes to strings.tbl). Not very happy with the way it fixes thing (it only solves problems for French, German and Polish, which kinda makes the changes to strings.tbl in r9761 somewhat pointless) but it makes sense to wait for SDL and truetype support and then fix everything properly then.
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10496 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
niffiwan 55bec33861 From Axem & niffiwan: stop briefing/credits/mainhall music with scripting
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10495 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
m_m 626269d4a4 Fix for Mantis 3018: Setting a weapon's Target/HomingObject/HomingPosition etc doesn't work
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@10494 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-30 12:39:54 +10:00
Fabian Woltermann 083905b4f8 Merge pull request #16 from asarium/fix/hudmessage
Fix a crash with invalid iterators
2014-03-16 22:57:45 +01:00
asarium 31d6ca5a0e Fix a crash with invalid iterators 2014-03-16 22:32:10 +01:00
67 changed files with 6890 additions and 4800 deletions

No files matched your search

-54
View File
@@ -1,54 +0,0 @@
/*
* 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.
*
*/
/**
* @file bm_examples.cpp
* This file contains example code for using bmpman.
*/
#include "bmpman/bmpman.h"
#include "graphics/2d.h"
void bm_create_example() {
static int test_inited = 0;
static int test_bmp;
static uint test_bmp_data[128 * 64];
if (!test_inited) {
test_inited = 1;
// Create the new bitmap and fill in its data.
// When you're done with it completely, call
// bm_release to free up the bitmap handle
test_bmp = bm_create(32, 128, 64, test_bmp_data);
int i, j;
for (i = 0; i < 64; i++) {
for (j = 0; j < 64; j++) {
uint r = i * 4;
test_bmp_data[j + i * 128] = r;
}
}
}
// page out the data, so that the next bm_lock will convert the new data to
// the correct bpp
bm_unload(test_bmp);
// put in new data
int x, y;
gr_reset_clip();
for (y = 0; y < 64; y++) {
for (x = 0; x < 128; x++) {
test_bmp_data[y * 128 + x] = 15;
}
}
// Draw the bitmap, the upper left corner is the origin (0, 0)
gr_set_bitmap(test_bmp);
gr_bitmap(0, 0);
}
+81 -77
View File
@@ -1,119 +1,121 @@
#ifndef __BM_INTERNAL_H__
#define __BM_INTERNAL_H__
/*
* 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.
*
*/
/**
* @file bm_internal.h
* These are functions and types used by bmpman and a few others.
*
* @details It is a "protected" header that requires BMPMAN_INTERNAL to be defined before it can be included. This is to
* provide a small measure of safety since this functions can cause problems if not used correctly
*/
#ifndef BMPMAN_INTERNAL
#error The file header "bmpman/bm_internal.h" is protected. Make sure you know what you are doing!
#endif
#include "bmpman/bmpman.h"
#ifndef __BM_INTERNAL_H__
#define __BM_INTERNAL_H__
// extra check to make sure this stuff doesn't end up in normal files
// don't use any of this unless BMPMAN_INTERNAL is defined
#ifdef BMPMAN_INTERNAL
#include "globalincs/pstypes.h"
#include "bmpman/bmpman.h"
// Bitmap types
enum BM_TYPE
{
BM_TYPE_NONE = 0, //!< No type
BM_TYPE_USER, //!< in-memory
BM_TYPE_PCX, //!< PCX
BM_TYPE_TGA, //!< 16 or 32 bit targa
BM_TYPE_DDS, //!< generic identifier for DDS
BM_TYPE_PNG, //!< PNG
BM_TYPE_JPG, //!< 32 bit jpeg
BM_TYPE_ANI, //!< in-house ANI format
BM_TYPE_EFF, //!< specifies any type of animated image, the EFF itself is just text
// special types
BM_TYPE_RENDER_TARGET_STATIC, //!< 24/32 bit setup internally as a static render target
BM_TYPE_RENDER_TARGET_DYNAMIC, //!< 24/32 bit setup internally as a dynamic render target
// no-type ( used in: bm_bitmaps[i].type )
#define BM_TYPE_NONE 0
// in-memory type ( used in: bm_bitmaps[i].type )
#define BM_TYPE_USER 1
// file-type types ( used in: bm_bitmaps[i].type )
#define BM_TYPE_PCX 2
#define BM_TYPE_TGA 3 // 16 or 32 bit targa
#define BM_TYPE_DDS 4 // generic identifier for DDS
#define BM_TYPE_PNG 5 // PNG
#define BM_TYPE_JPG 6 // 32 bit jpeg
#define BM_TYPE_ANI 7 // in-house ANI format
#define BM_TYPE_EFF 8 // specifies any type of animated image, the EFF itself is just text
// c-type types ( used in: bm_bitmaps[i].c_type )
#define BM_TYPE_DXT1 9 // 24 bit with switchable alpha (compressed)
#define BM_TYPE_DXT3 10 // 32 bit with 4 bit alpha (compressed)
#define BM_TYPE_DXT5 11 // 32 bit with 8 bit alpha (compressed)
#define BM_TYPE_CUBEMAP_DDS 12 // generic DDS cubemap (uncompressed cubemap surface)
#define BM_TYPE_CUBEMAP_DXT1 13 // 24-bit cubemap (compressed cubemap surface)
#define BM_TYPE_CUBEMAP_DXT3 14 // 32-bit cubemap (compressed cubemap surface)
#define BM_TYPE_CUBEMAP_DXT5 15 // 32-bit cubemap (compressed cubemap surface)
// special types ( used in: bm_bitmaps[i].type )
#define BM_TYPE_RENDER_TARGET_STATIC 16 // 24/32 bit setup internally as a static render target
#define BM_TYPE_RENDER_TARGET_DYNAMIC 17 // 24/32 bit setup internally as a dynamic render target
// Compressed types (bitmap.c_type)
BM_TYPE_DXT1, //!< 24 bit with switchable alpha
BM_TYPE_DXT3, //!< 32 bit with 4 bit alpha
BM_TYPE_DXT5, //!< 32 bit with 8 bit alpha
BM_TYPE_CUBEMAP_DDS, //!< generic DDS cubemap (uncompressed cubemap surface)
BM_TYPE_CUBEMAP_DXT1, //!< 24-bit cubemap (compressed cubemap surface)
BM_TYPE_CUBEMAP_DXT3, //!< 32-bit cubemap (compressed cubemap surface)
BM_TYPE_CUBEMAP_DXT5 //!< 32-bit cubemap (compressed cubemap surface)
};
union bm_extra_info {
/// Moved from cpp file ///////////////////
// Consider these 'protected' structures and functions that should only be used by special bitmap functions
typedef union bm_extra_info {
struct {
// Stuff needed for animations
int first_frame; //!< used for animations -- points to index of first frame
int num_frames; //!< used for animations -- number of frames in the animation
int keyframe; //!< used for animations -- keyframe info
ubyte fps; //!< used for animations -- frames per second
int first_frame; // used for animations -- points to index of first frame
int num_frames; // used for animation -- number of frames in the animation
int keyframe; // used for animation -- keyframe info
ubyte fps; // used for animation -- frames per second
struct {
// stuff for static animations
ubyte type; //!< type for individual images
char filename[MAX_FILENAME_LEN]; //!< filename for individual images
ubyte type; // type for individual images
char filename[MAX_FILENAME_LEN]; // filename for individual images
} eff;
} ani;
struct {
// Stuff needed for user bitmaps
void* data; //!< For user bitmaps, this is where the data comes from
ubyte bpp; //!< For user bitmaps, this is what format the data is
ubyte flags; //!< For user bitmaps, Flags passed to bm_create
void *data; // For user bitmaps, this is where the data comes from
ubyte bpp; // For user bitmaps, this is what format the data is
ubyte flags; // Flags passed to bm_create
} user;
};
} bm_extra_info;
struct bitmap_entry {
typedef struct bitmap_entry {
// identification
char filename[MAX_FILENAME_LEN]; //!< filename for this bitmap
char filename[MAX_FILENAME_LEN]; // filename for this bitmap
uint signature; //!< a unique signature identifying the data
uint palette_checksum; //!< checksum used to be sure bitmap is in current palette
int handle; //!< Handle = id*MAX_BITMAPS + bitmapnum
int last_used; //!< When this bitmap was last used
uint signature; // a unique signature identifying the data
uint palette_checksum; // checksum used to be sure bitmap is in current palette
int handle; // Handle = id*MAX_BITMAPS + bitmapnum
int last_used; // When this bitmap was last used
ubyte type; //!< PCX, USER, ANI, etc
ubyte comp_type; //!< What sort of compressed type, BM_TYPE_NONE if not compressed
signed char ref_count; //!< Number of locks on bitmap. Can't unload unless ref_count is 0.
ubyte type; // PCX, USER, ANI, etc
ubyte comp_type; // What sort of compressed type, BM_TYPE_NONE if not compressed
signed char ref_count; // Number of locks on bitmap. Can't unload unless ref_count is 0.
int dir_type; //!< which directory this was loaded from (to skip other locations with same name)
int dir_type; // which directory this was loaded from (to skip other locations with same name)
// compressed bitmap stuff (.dds) - RT please take a look at this and tell me if we really need it
int mem_taken; //!< How much memory does this bitmap use? - UnknownPlayer
int num_mipmaps; //!< number of mipmap levels, we need to read all of them
int mem_taken; // How much memory does this bitmap use? - UnknownPlayer
int num_mipmaps; // number of mipmap levels, we need to read all of them
// Stuff to keep track of usage
ubyte preloaded; //!< If set, then this was loaded from the lst file
int preload_count; //!< how many times this gets used in game, for unlocking
ubyte used_flags; //!< What flags it was accessed thru
int load_count;
ubyte preloaded; // If set, then this was loaded from the lst file
int preload_count; // how many times this gets used in game, for unlocking
ubyte used_flags; // What flags it was accessed thru
int load_count;
bitmap bm; //!< Bitmap info
// Bitmap info
bitmap bm;
bm_extra_info info; //!< Data for animations and user bitmaps
// Data for animations and user bitmaps
bm_extra_info info;
#ifdef BMPMAN_NDEBUG
// bookeeping
ubyte used_last_frame; // If set, then it was used last frame
ubyte used_this_frame; // If set, then it was used this frame
int data_size; // How much data this bitmap uses
int used_count; // How many times it was accessed
ubyte used_last_frame; // If set, then it was used last frame
ubyte used_this_frame; // If set, then it was used this frame
int data_size; // How much data this bitmap uses
int used_count; // How many times it was accessed
#endif
};
} bitmap_entry;
extern bitmap_entry bm_bitmaps[MAX_BITMAPS];
// image specific lock functions
void bm_lock_ani( int handle, int bitmapnum, bitmap_entry *be, bitmap *bmp, ubyte bpp, ubyte flags );
void bm_lock_dds( int handle, int bitmapnum, bitmap_entry *be, bitmap *bmp, ubyte bpp, ubyte flags );
@@ -124,4 +126,6 @@ void bm_lock_tga( int handle, int bitmapnum, bitmap_entry *be, bitmap *bmp, ubyt
void bm_lock_user( int handle, int bitmapnum, bitmap_entry *be, bitmap *bmp, ubyte bpp, ubyte flags );
#endif // BMPMAN_INTERNAL
#endif // __BM_INTERNAL_H__
+1942 -1737
View File
File diff suppressed because it is too large. Load diff
+201 -543
View File
@@ -1,630 +1,288 @@
#ifndef _BMPMAN_H
#define _BMPMAN_H
/*
* 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
* 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.
*
*/
*/
/**
* @file bmpman.h
* Header file for the bitmap manager (bmpman)
*/
/**
* @example bm_examples.cpp
* @brief This containes examples of bmpman usage
*/
#include "cfile/cfile.h"
#ifndef _BMPMAN_H
#define _BMPMAN_H
#include "globalincs/pstypes.h"
#include "cfile/cfile.h"
#ifndef NDEBUG
#define BMPMAN_NDEBUG //!< Enables BMPMAN debugging code
#define BMPMAN_NDEBUG
#endif
/**
* @defgroup BMPMAN_CONSTANTS Macro constants used in/with bmpman.h
*
* @{
*/
#define MAX_BITMAPS 4750 // How many bitmaps the game can handle
// NOTE: MAX_BITMAPS shouldn't need to be bumped again. With the fixed bm_release() and it's
// proper use even the largest missions should stay under this number. With the largest retail
// missions and wasteful content we should still have about 20% of the slots free. If it still
// goes over then it's something the artists need to fix. For instance the Terran Mara fighter,
// with -spec and -glow and using the Shinepack, needs 117 bitmap slots alone. 111 of those is
// just for the glowmaps. This number can be greatly reduced if the number of ani frames for
// another LOD than LOD0 has fewer or no ani frames. A 37 frame glow ani for LOD2 is little
// more than a waste of resources. Future reports of texture corruption should be initially
// approached with content as the cause and not code. If anything we could/should reduce
// MAX_BITMAPS in the future. Where it's at now should accomidate even the largest mods.
// -- Taylor
/**
* @brief How many bitmaps the game can handle
*
* @attention MAX_BITMAPS shouldn't need to be bumped again. With the fixed bm_release() and it's proper use even the
* largest missions should stay under this number. With the largest retail missions and wasteful content we should
* still have about 20% of the slots free. If it still goes over then it's something the artists need to fix.
* For instance the Terran Mara fighter, with -spec and -glow and using the Shinepack, needs 117 bitmap slots alone.
* 111 of those is just for the glowmaps. This number can be greatly reduced if the number of ani frames for another
* LOD than LOD0 has fewer or no ani frames. A 37 frame glow ani for LOD2 is little more than a waste of resources.
* Future reports of texture corruption should be initially approached with content as the cause and not code.
* If anything we could/should reduce MAX_BITMAPS in the future. Where it's at now should accomidate even the
* largest mods. -- Taylor
*/
#define MAX_BITMAPS 4750
// Flag positions for bitmap.flags
#define BMP_AABITMAP (1<<0) // antialiased bitmap
#define BMP_TEX_XPARENT (1<<1) // transparent texture
#define BMP_TEX_OTHER (1<<2) // so we can identify all "normal" textures
#define BMP_TEX_DXT1 (1<<3) // dxt1 compressed 8r8g8b1a (24bit)
#define BMP_TEX_DXT3 (1<<4) // dxt3 compressed 8r8g8b4a (32bit)
#define BMP_TEX_DXT5 (1<<5) // dxt5 compressed 8r8g8b8a (32bit)
#define BMP_TEX_CUBEMAP (1<<6) // a texture made for cubic environment map
// ***** NOTE: bitmap.flags is an 8-bit value, no more BMP_TEX_* flags can be added unless the type is changed!! ******
#define BMP_AABITMAP (1<<0) //!< antialiased bitmap
#define BMP_TEX_XPARENT (1<<1) //!< transparent texture
#define BMP_TEX_OTHER (1<<2) //!< so we can identify all "normal" textures
#define BMP_TEX_DXT1 (1<<3) //!< dxt1 compressed 8r8g8b1a (24bit)
#define BMP_TEX_DXT3 (1<<4) //!< dxt3 compressed 8r8g8b4a (32bit)
#define BMP_TEX_DXT5 (1<<5) //!< dxt5 compressed 8r8g8b8a (32bit)
#define BMP_TEX_CUBEMAP (1<<6) //!< a texture made for cubic environment map
// Combined flags
#define BMP_TEX_COMP ( BMP_TEX_DXT1 | BMP_TEX_DXT3 | BMP_TEX_DXT5 ) //!< Compressed textures
#define BMP_TEX_NONCOMP ( BMP_TEX_XPARENT | BMP_TEX_OTHER ) //!< Non-compressed textures
#define BMP_TEX_ANY ( BMP_TEX_COMP | BMP_TEX_NONCOMP ) //!< Any texture
//compressed texture types
#define BMP_TEX_COMP ( BMP_TEX_DXT1 | BMP_TEX_DXT3 | BMP_TEX_DXT5 )
// Flag positions for bitmap.type
#define BMP_FLAG_RENDER_TARGET_STATIC (1<<0) //!< Texture is a static type
#define BMP_FLAG_RENDER_TARGET_DYNAMIC (1<<1) //!< Texture is a dynamic type (animation)
#define BMP_FLAG_CUBEMAP (1<<2) //!< Texture is a cubemap
//non compressed textures
#define BMP_TEX_NONCOMP ( BMP_TEX_XPARENT | BMP_TEX_OTHER )
/**
* @}
*/
// any texture type
#define BMP_TEX_ANY ( BMP_TEX_COMP | BMP_TEX_NONCOMP )
struct bitmap
{
short w; //!< Width, in number of pixels
short h; //!< Height, in number of pixels
short rowsize; //!< What you need to add to go to next row
ubyte bpp; //!< Requested bitdepth of each pixel. ( 7, 8, 15, 16, 24, 32)
ubyte true_bpp; //!< The image's actual bitdepth
ubyte flags; //!< Various texture type flags. @see BMPMAN_CONSTANTS
ptr_u data; //!< Pointer to data, or maybe offset into VRAM.
ubyte *palette; /**< @brief Pointer to this bitmap's palette (if it has one).
* @details If BMP_NO_PALETTE_MAP flag is cleared, this palette just points to the screen palette. (gr_palette)
*/
};
#define BMP_FLAG_RENDER_TARGET_STATIC (1<<0)
#define BMP_FLAG_RENDER_TARGET_DYNAMIC (1<<1)
#define BMP_FLAG_CUBEMAP (1<<2)
extern int bm_texture_ram; //!< how many bytes of textures are used.
typedef struct bitmap {
short w, h; // Width and height
short rowsize; // What you need to add to go to next row
ubyte bpp; // How many bits per pixel it is. (7,8,15,16,24,32) (what is requested)
ubyte true_bpp; // How many bits per pixel the image actually is.
ubyte flags; // See the BMP_???? defines for values (this isn't for the BMP_FLAG_* stuff)
ptr_u data; // Pointer to data, or maybe offset into VRAM.
ubyte *palette; // If bpp==8, this is pointer to palette. If the BMP_NO_PALETTE_MAP flag
// is not set, this palette just points to the screen palette. (gr_palette)
} bitmap;
extern int Bm_paging; //!< Bool type that indicates if BMPMAN is currently paging.
extern int GLOWMAP; //!< References a map that is a fully lit version of its index -Bobboau
extern int SPECMAP; //!< References a map that is for specular mapping -Bobboau
extern int ENVMAP; //!< References a map that is for environment mapping -Bobboau
extern int NORMMAP; //!< Normal mapping
extern int HEIGHTMAP; //!< Height map for normal mapping
extern int MISCMAP; //!< Utility map, to be utilized for various things shader authors can come up with
extern int Bm_paging;
/**
* @brief Initilizes the bitmap manager
*/
void bm_init();
/**
* @brief Closes the bitmap manager, freeing any allocated memory used by bitmaps. Is called at program close.
*/
void bm_close();
/**
* Gets the cache slot of the bitmap indexed by handle.
*
* @details if the bitmap is an ani, gets the first frame
*
* @returns The cache slot index of the bitmap if handle is valid
*
* @note If the handle is invalid, an Assert() fails
*/
int bm_get_cache_slot(int bitmap_id, int separate_ani_frames);
int bm_get_cache_slot( int bitmap_id, int separate_ani_frames );
/**
* @brief Gets the next available bitmap slot.
*/
int bm_get_next_handle();
/**
* @brief Allocates memory for the given handle.
*
* @returns A pointer to the allocated vm if successful,
* @returns Null, if unsuccessful
*
* @note z64 - This function looks fishy. Not only is handle not used in release builds, but bm_bitmaps[handle].size
* and bm_texture_size aren't modified unless this is a debug build
*/
void *bm_malloc(int handle, int size);
void *bm_malloc(int n, int size);
/**
* @brief (DEBUG) Similar to bm_malloc, but only updates how much memory is used
*
* @note z64 - Also fishy (see bm_malloc)
*/
void bm_update_memory_used(int n, int size);
/**
* @brief Loads a bitmap so we can draw with it later.
*
* @param filename
*
* @returns The bitmap number if successful, else
* @returns a negative value if not
*/
int bm_load(const char* filename);
// how many bytes of textures are used.
extern int bm_texture_ram;
/**
* @brief Loads a bitmap so we can draw with it later. (Preferred version)
*
* @param filename
*
* @returns The bitmap number if successful, else
* @returns a negative value if not
*/
// This loads a bitmap so we can draw with it later.
// It returns a negative number if it couldn't load
// the bitmap. On success, it returns the bitmap
// number.
int bm_load(const char* filename);
int bm_load(const SCP_string& filename);
/**
* @brief Reloads a bitmap as a duplicate.
*
* @details This function basically allows you to load a bitmap which already exists (by filename). This is useful
* because in some cases we need to have a bitmap which is locked in screen format _and_ texture format, such as
* the pilot pics and squad logos
*
* @param filename
*
* @returns The bitmap number if successful, else
* @returns a negative value if not
*/
// special load function. basically allows you to load a bitmap which already exists (by filename).
// this is useful because in some cases we need to have a bitmap which is locked in screen format
// _and_ texture format, such as pilot pics and squad logos
int bm_load_duplicate(const char *filename);
/**
* Loads a bitmap which exists somewhere in the RAM.
*
* @param bpp The bitdepth of the bitmap
* @param w The width of the bitmap
* @param h The height of the bitmap
* @param[in] data The bitmap's data glob
* @param flags
*
* @note The used RAM cannot be freed until bm_release is called on the created bitmap
*/
int bm_create(int bpp, int w, int h, void *data = NULL, int flags = 0);
// Creates a bitmap that exists in RAM somewhere, instead
// of coming from a disk file. You pass in a pointer to a
// block of data. The data can be in the following formats:
// 8 bpp (mapped into game palette)
// 32 bpp
// On success, it returns the bitmap number. You cannot
// free that RAM until bm_release is called on that bitmap.
// See example at bottom of this file
int bm_create( int bpp, int w, int h, void *data = NULL, int flags = 0);
/**
* @brief Unloads a bitmap's data, but not the bitmap info
*
* @details The bm number (n) may be reused once this function has been called on it. However, it will have to be paged
* in the next time it is locked.
// Frees up a bitmap's data, but bitmap number 'n' can
// still be used, it will just have to be paged in next
// time it is locked.
int bm_unload( int n, int clear_render_targets = 0, bool nodebug = false);
* @param handle The index number of the bitmap to free
* @param clear_render_targets If true, release a render target
* @param nodebug If true, exclude certain debug messages
*
* @returns 0 if not successful,
* @returns 1 if successful
*/
int bm_unload(int handle, int clear_render_targets = 0, bool nodebug = false);
// like bm_unload() except that it's safe to use to free data without worrying about
// load_count so it's safe to use in relation to bm_release() and in gr_*_texture functions
int bm_unload_fast( int n, int clear_render_targets = 0 );
/**
* @brief Quickly unloads a bitmap's data, ignoring the load_count
*
* @details Similar to bm_unload(), except that it can be safely used to free data without worrying about load_count.
* It's safe to use in relation to bm_release() and in gr_*_texture functions
*
* @param handle The bm number of the bitmap to free
* @param clear_render_targets If true, release a render target
*
* @note bm_free_data_fast() is used here and NOT bm_free_data()
*/
int bm_unload_fast(int handle, int clear_render_targets = 0);
// Frees up a bitmap's data, and it's slot, so bitmap
// number 'n' cannot be used anymore, and bm_load or
// bm_create might reuse the slot.
int bm_release( int n, int clear_render_targets = 0 );
/**
* @brief Frees both a bitmap's data and it's associated slot.
*
* @details Once called, the bm number 'n' cannot be used until bm_load or bm_create is re-inits the slot.
*
* @param handle The index number of the bitmap to release
* @param clear_render_targets If nonzero, also release render targets
*
* @returns 1 on success,
* @returns 0 otherwise
*
* @note If the passed handle is that of an ANI, it frees EVERY frame. Be sure to only pass the handle of the first frame!
*
* @todo upgrade return type and clear_render_targets type to bools
*/
int bm_release(int handle, int clear_render_targets = 0);
// This loads a bitmap sequence so we can draw with it later.
// It returns a negative number if it couldn't load
// the bitmap. On success, it returns the bitmap
// number of the first frame and nframes is set.
extern int bm_load_animation( const char *filename, int *nframes = NULL, int *fps = NULL, int *keyframe = NULL, int can_drop_frames = 0, int dir_type = CF_TYPE_ANY );
/**
* @brief Loads a bitmap sequance so we can draw with it.
*
* @param[in] filename
* @param[out] nframes If non-null, set to the number of frames the animation has
* @param[out] fps If non-null, set to the fps of this animation
* @param[out] keyframe if non null, set to the keyframe index of this animation
* @param[in] can_drop_frames If set, allows dropped frames
* @param[in] dir_type Directory type
*
* @returns The bm number of the first bitmap in the sequence if successful, or
* @returns A negative value if unsuccessful
*/
int bm_load_animation(const char *filename, int *nframes = NULL, int *fps = NULL, int *keyframe = NULL, int can_drop_frames = 0, int dir_type = CF_TYPE_ANY);
//Loads either animation (bm_load_animation) or still image (bm_load)
extern int bm_load_either(const char *filename, int *nframes = NULL, int *fps = NULL, int *keyframe = NULL, int can_drop_frames = 0, int dir_type = CF_TYPE_ANY);
/**
* @brief Loads either animation (bm_load_animation) or still image (bm_load)
*
* @param[in] filename
* @param[out] nframes If non-null and loading was successful, set to the number of frames the animation has
* @param[out] fps If non-null and loading was successful, set to the fps of this animation
* @param[out] keyframe if non null and loading was successful, set to the keyframe index of this animation
* @param[in] can_drop_frames
* @param[in] dir_type
*
* @returns The bm number of the first bitmap in the sequence if successful, or
* @returns A negative value if unsuccessful
*/
int bm_load_either(const char *filename, int *nframes = NULL, int *fps = NULL, int *keyframe = NULL, int can_drop_frames = 0, int dir_type = CF_TYPE_ANY);
// This locks down a bitmap and returns a pointer to a bitmap
// that can be accessed until you call bm_unlock. Only lock
// a bitmap when you need it! This will convert it into the
// appropriate format also.
extern bitmap * bm_lock( int bitmapnum, ubyte bpp, ubyte flags, bool nodebug = false);
/**
* @brief Locks down the bitmap indexed by bitmapnum.
*
* @details Also converts the bitmap to the appropriate format specified by bpp and flags. Only lock a bitmap when you
* need it!
*
* @param bitmapnum The number indexing the desired bitmap
* @param bpp The desired bpp of the bitmep
* @param flags The desired bitmap format
* @param nodebug
// The signature is a field that gets filled in with
// a unique signature for each bitmap. The signature for each bitmap
// will also change when the bitmap's data changes.
extern uint bm_get_signature( int bitmapnum);
* @returns A pointer to the bitmap that's valid until bm_unlock is called if successful, or
* @returns NULL if unsuccessful
*/
bitmap* bm_lock(int handle, ubyte bpp, ubyte flags, bool nodebug = false);
/**
* @brief Returns a unique signiature for the bitmap indexed by handle
*
* @details A signature will change when the bitmap's data changes
*/
uint bm_get_signature(int handle);
/**
* @brief Returns the image type of the given bitmap handle
*/
//gets the image type
ubyte bm_get_type(int handle);
/**
* @brief Unlocks a bitmap
*
* @details Decrements the ref_count member of the bitmap_entry struct, A bitmap can only be unloaded when the
* ref_count is 0
*/
void bm_unlock(int handle);
// Unlocks a bitmap
extern void bm_unlock( int bitmapnum );
/**
* @brief Checks if the bitmap indexed by handle is valid
*
* @details Some early known false or out of range handles (such as negative) are checked within
* an initial routine pass, followed by a more thorough check routine to ensure the
* series of bitmaps within the bm_bitmaps[] structure have not become invalid.
*
* @returns Nonzero if valid, else
* @returns Zero otherwise
*
* @todo z64 - Returned value is essentially a bool type, need to check all caller functions to see if it can safely
* be updated to reflect this
*/
int bm_is_valid(int handle);
//WMC - Returns 0 if invalid, nonzero if valid
extern int bm_is_valid(int handle);
/**
* @brief Gets info on the bitmap indexed by handle.
*
* @param[out] w If non-null, gets the width
* @param[out] h If non-null, gets the heigth
* @param[out] flags If non-null, gets the flags
* @param[out] nframs If non-null, gets the nframes
* @param[out] fps If non-null, gets the fps
*
* @returns The handle on success, or
* @returns The handle to the first frame on success, or
* @returns -1 on failure
*/
int bm_get_info(int handle, int *w = NULL, int * h = NULL, ubyte * flags = NULL, int *nframes = NULL, int *fps = NULL);
// Gets info. w,h,or flags,nframes or fps can be NULL if you don't care.
//WMC - Returns -1 on failure, handle or first frame handle on success.
int bm_get_info( int bitmapnum, int *w=NULL, int * h=NULL, ubyte * flags=NULL, int *nframes=NULL, int *fps=NULL );
/**
* @brief Gets the filename of the bitmap indexed by handle
*
* @param[out] filename The filename of the bitmap, if successful. Is set to an empty string if unseccessful
*
* @todo z64 - maybe deprecate this in favor of an SCP_string version
*/
void bm_get_filename(int bitmapnum, char *filename);
// get filename
extern void bm_get_filename(int bitmapnum, char *filename);
/**
* @brief Gets the filename of the bitmap indexed by handle, which must exist.
*
* @details If the bitmap does not exist (i.e. the handle is invalid), then an Assertion halts program execution.
*
* @returns A const char* to the filename of the bitmap
*
* @todo z64 - maybe deprecate this in favor of an SCP_string version.
* @todo z64 - maybe combine this with the other bm_get_filename function like so:
* void bm_get_filename(int handle, SCP_string *filename, bool must_exist = false);
*/
const char *bm_get_filename(int handle);
// call to load all data for all bitmaps that have been requested to be loaded
extern void bm_gfx_load_all();
extern void bm_unload_all();
/**
* @brief Loads all data for all bitmaps that have been requested to be loaded
*
* @note This function is not defined.
*/
void bm_gfx_load_all();
// call to get the palette for a bitmap
void bm_get_palette(int n, ubyte *pal, char *name);
/**
* @brief Unloads all used bitmaps, should only ever be called by game_shutdown()
*
* @todo Maybe move this declaration into bmpman.cpp and then extern this function within game_shutdown() to
* ensure it only ever gets called there.
*/
void bm_unload_all();
// Hacked function to get a pixel from a bitmap.
// Only works good in 8bpp mode.
void bm_gfx_get_pixel( int bitmap, float u, float v, ubyte *r, ubyte *g, ubyte *b );
/**
* @brief Gets the palette for a given bitmap indexed by handle, and optionally the filename
*
* @param[out] pal Is set to reference the bitmap's palette
* @param[out] name (optional) Is set to the bitmap's filename
*
* @todo Maybe get rid of the optional filename and have the callers call bm_get_filename. Less efficient, however.
*/
void bm_get_palette(int handle, ubyte *pal, char *name);
/**
* @brief Hack to get a pixel from a bitmap
*
* @details only works good in 8bpp mode
*
* @note This function is not defined.
*/
void bm_gfx_get_pixel(int bitmap, float u, float v, ubyte *r, ubyte *g, ubyte *b);
/**
* @brief (DEBUG) Gets memory size, in bytes, of the locked bitmaps
*
* @details Both params are non-optional, and must be non-null. There's currently no safety checks on either.
*
* @param ntotal[out] Memory size, in bytes, of the locked bitmaps
* @param nnew[out] Memory size, in bytes, of the bitmaps that were locked since the last frame
*
* @note This is a debug function, and is undefined within release builds
*/
// Returns number of bytes of bitmaps locked this frame
// ntotal = number of bytes of bitmaps locked this frame
// nnew = number of bytes of bitmaps locked this frame that weren't locked last frame
void bm_get_frame_usage(int *ntotal, int *nnew);
/**
* @brief Reloads an existing bmpman slot with different bitmap
*
* @param[in] filename The filename of the image to load
*
* @returns The bitmap handle on success, or
* @returns A negative value on failure
*
* @note This should only be used if you are certain the new picture is the same type, has same dimensions, etc.
*/
// Reload a different image into an existing bmpman slot
int bm_reload(int bitmap_handle, const char* filename);
/**
* @brief Tells bmpman to start keeping track of what bitmaps are used where
*/
void bm_page_in_start();
/*
* Example on using bm_create
*
{
static int test_inited = 0;
static int test_bmp;
static uint test_bmp_data[128*64];
/**
* @brief Tells bmpman to stop paging (?)
*/
if ( !test_inited ) {
test_inited = 1;
// Create the new bitmap and fill in its data.
// When you're done with it completely, call
// bm_release to free up the bitmap handle
test_bmp = bm_create( 32, 128, 64, test_bmp_data );
int i,j;
for (i=0; i<64; i++ ) {
for (j=0; j<64; j++ ) {
uint r=i*4;
test_bmp_data[j+i*128] = r;
}
}
}
bm_unload(test_bmp); // this pages out the data, so that the
// next bm_lock will convert the new data to the
// correct bpp
// put in new data
int x,y;
gr_reset_clip();
for (y=0; y<64; y++)
for (x=0; x<128; x++ )
test_bmp_data[y*128+x] = 15;
// Draw the bitmap to upper left corner
gr_set_bitmap(test_bmp);
gr_bitmap( 0,0 );
}
*/
//============================================================================
// Paging stuff
//============================================================================
void bm_page_in_start();
void bm_page_in_stop();
// Paging code in a library should call these functions
// in its page in function.
/**
* @brief Marks a texture as being used for this level
*
* @param[in] num_frames If specified, assumes this is an animated texture
*/
void bm_page_in_texture(int bitmapnum, int num_frames = 0);
// Marks a texture as being used for this level
// If num_frames is passed, assume this is an animation
void bm_page_in_texture( int bitmapnum, int num_frames = 0 );
/**
* @brief Marks a textures as being used for level and is transparant
*
* @param[in] num_frames If specified, assumes this is an animated texture
*/
void bm_page_in_xparent_texture(int bitmapnum, int num_frames = 1);
// marks a texture as being a transparent textyre used for this level
// Marks a texture as being used for this level
// If num_frames is passed, assume this is an animation
void bm_page_in_xparent_texture( int bitmapnum, int num_frames=1 );
/**
* @brief Marks a texture as being used for this level, and is anti-aliased
*
* @param[in] num_frames If specified, assumes this is an animated texture
*/
void bm_page_in_aabitmap(int bitmapnum, int num_frames = 1);
// Marks an aabitmap as being used for this level
// If num_frames is passed, assume this is an animation
void bm_page_in_aabitmap( int bitmapnum, int num_frames=1 );
/**
* @brief Unloads the bitmap indexed by handle that was previously paged-in
*
* @returns 0 If the bitmap had already been released, or
* @returns 0 If the handle is invalid, or
* @returns 1 If successful
*
* @todo The return type should be a bool
*/
int bm_page_out(int handle);
// unload a texture that was paged in
int bm_page_out( int handle );
/**
* @brief Sets BMPMAN's memory mode
*
* @details 0 = High memory;
* 1 = Low memory (loads every other frame of ani's);
* 2 = Debug low memory (only use first frame of each ani)
*
* @todo This should use an enum, or instead allow an arbitrary number to drop frames (like 1/2, 1/3, etc.)
*/
void bm_set_low_mem(int mode);
//
// Mode: 0 = High memory
// 1 = Low memory ( every other frame of ani's)
// 2 = Debug low memory ( only use first frame of each ani )
void bm_set_low_mem( int mode );
const char *bm_get_filename(int handle);
/**
* @brief Sets bm_set_components and bm_get_components to reference screen format functions
*/
void BM_SELECT_SCREEN_FORMAT();
/**
* @brief Sets bm_set_components and bm_get_components to reference texture format functions
*/
void BM_SELECT_TEX_FORMAT();
/**
* @brief Sets bm_set_components and bm_get_components to reference texture format functions (with alpha)
*/
void BM_SELECT_ALPHA_TEX_FORMAT();
/**
* @brief Functional pointer that references any of the bm_set_components functions.
*
* @details The bm_set_components functions packs the RGBA values into the ubyte array referenced by pixel, whose
* format differs according to its bpp value and presence of an alpha channel. The RGBA values are scaled accordingly.
*
* @param[out] pixel The pixel to set
* @param[in] r Red value (may not be NULL)
* @param[in] g Green value (may not be NULL)
* @param[in] b Blue value (may not be NULL)
* @param[in] a Alpha value (currently ignored)
*
* @note z64 - These functions were made predating the introduction of C++ classes, and are basically the equivalent
* of Pixel::set(ubyte *r, ubyte *b, ubyte *g). The original comment mentions that any of the rgba params may be
* NULL, but this is by far _NOT_ the case, as a NULL value will cause undefined behavior (really really bad chroma
* corruption)
*
* @note These functions assume the incoming bitdepth will always be >= to the outgoing bitdepth of the pixel. Should
* the incoming bitdepth be lower, the outgoing values will appear darker than they should be
*/
extern void(*bm_set_components)(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
// set the rgba components of a pixel, any of the parameters can be NULL
extern void (*bm_set_components)(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
extern void (*bm_set_components_32)(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
void bm_set_components_argb_d3d_16_screen(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
void bm_set_components_argb_d3d_32_screen(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
void bm_set_components_argb_d3d_16_tex(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
void bm_set_components_argb_d3d_32_tex(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Functional pointer that references any of the bm_set_components_32 functions.
*
* @details The bm_set_components functions packs the RGBA values into the ubyte array referenced by pixel, whose
* format differs according to its bpp value and presence of an alpha channel. The RGBA values are scaled accordingly.
*
* @see bm_set_components
*/
extern void(*bm_set_components_32)(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Sets the 16bpp screen pixel to the specified RGBA value
*
* @see bm_set_components
*/
void bm_set_components_argb_16_screen(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Sets the 32bpp screen pixel to the specified RGBA value
*
* @see bm_set_components
*/
void bm_set_components_argb_32_screen(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Sets the 16bpp texture pixel to the specified RGBA value
*
* @see bm_set_components
*/
void bm_set_components_argb_16_tex(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Sets the 32bpp texture pixel to the specified RGBA value
*
* @see bm_set_components
*/
void bm_set_components_argb_32_tex(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Gets the RGBA components of a pixel according to the selected mode
*
* @see BM_SELECT_SCREEN_FORMAT() BM_SELECT_TEX_FORMAT() BM_SELECT_ALPHA_TEX_FORMAT()
*/
// get the rgba components of a pixel, any of the parameters can be NULL
void bm_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
/**
* @brief Returns the compression type of the bitmap indexed by handle
*/
int bm_is_compressed(int handle);
extern int GLOWMAP; //this holds a reference to a map that is a fully lit version of its index -Bobboau
extern int SPECMAP; //this holds a reference to a map that is for specular mapping -Bobboau
extern int ENVMAP; //this holds a reference to a map that is for environment mapping -Bobboau
extern int NORMMAP; // normal mapping
extern int HEIGHTMAP; // height map for normal mapping
extern int MISCMAP; // Utility map, to be utilized for various things shader authors can come up with
/**
* @brief Gets the correct TCACHE_TYPE for compressed graphics (uncompressed are assumed TCACHE_TYPE_NORMAL)
*/
int bm_get_tcache_type(int handle);
/**
* @brief Gets the size, in bytes, taken up by the bitmap indexed by handle
*
* @todo retval should be a size_t
*/
int bm_get_size(int handle);
/**
* @brief Gets the number of mipmaps of the indexed texture
*/
int bm_get_num_mipmaps(int handle);
/**
* @brief Checks to see if the indexed bitmap has an alpha channel
*
* @note Currently just checks if the bitmap is 32bpp and is not a .PCX
*
* @todo retval should be a bool
*/
int bm_is_compressed(int num);
int bm_get_tcache_type(int num);
int bm_get_size(int num);
int bm_get_num_mipmaps(int num);
int bm_has_alpha_channel(int handle);
/**
* @brief (DEBUG) Prints all loaded bitmaps to an outwindow
*/
void bm_print_bitmaps();
/**
* @brief Creates a render target as close to the desired resolution as possible.
*
* @returns the handle of an avilable render target if successful, or
* @returns -1 if not successful
*
* @note BM_FLAG_RENDER_TARGET_STATIC are drawn once/infrequently, while BM_FLAG_RENDER_TARGET_DYNAMIC are drawn roughly once every frame
*/
int bm_make_render_target(int width, int height, int flags);
/**
* @brief Checks to see if the given bitmap indexed by handle is a render target
*
* @returns The render type (BM_TYPE) if it is a render target, or
* @returns 0 if it is not
*/
int bm_is_render_target(int handle);
/**
* @brief (GR function) Calls gr_bm_set_render target for the given bitmap indexed by handle
*
* @returns 1 if successful, or
* @returns 0 if unsuccessful
*
* @todo retval should be a bool
*/
int bm_make_render_target( int width, int height, int flags );
int bm_is_render_target(int bitmap_id);
int bm_set_render_target(int handle, int face = -1);
/**
* @brief Loads and parses an .EFF
*
* @param[in] filename The filename of the .EFF
* @param[in] dir_type
* @param[out] nframes (optional) If given, is set to the number of frames this .EFF has
* @param[out] nfps (optional) If given, is set to the fps of this .EFF
* @param[out] key (optional) If given, is set to the keyframe index of this .EFF
* @param[out] type (optional) If given, is set to the BM_TYPE of the .EFF
*
* @returns 0 If successful,
* @returns -1 if not successful
*
* @todo retval should be a bool
*/
int bm_load_and_parse_eff(const char *filename, int dir_type, int *nframes, int *nfps, int *key, ubyte *type);
#endif
+9
View File
@@ -217,6 +217,7 @@ Flag exe_params[] =
{ "-dis_weapons", "Disable weapon rendering", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-dis_weapons", },
{ "-output_sexps", "Output SEXPs to sexps.html", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-output_sexps", },
{ "-output_scripting", "Output scripting to scripting.html", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-output_scripting", },
{ "-output_json_data", "Output table objects to [table].json", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-output_json_data", },
{ "-save_render_target", "Save render targets to file", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-save_render_target", },
{ "-debug_window", "Display debug window", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-debug_window", },
{ "-verify_vps", "Spew VP CRCs to vp_crcs.txt", true, 0, EASY_DEFAULT, "Dev Tool", "http://www.hard-light.net/wiki/index.php/Command-Line_Reference#-verify_vps", },
@@ -494,6 +495,9 @@ bool Cmdline_no_unfocus_pause = false;
cmdline_parm get_flags_arg("-get_flags", "Output the launcher flags file", AT_NONE);
cmdline_parm output_sexp_arg("-output_sexps", NULL, AT_NONE); //WMC - outputs all SEXPs to sexps.html
cmdline_parm output_scripting_arg("-output_scripting", NULL, AT_NONE); //WMC
cmdline_parm output_json_data_arg("-output_json_data", "Output table objects to [table].json", AT_NONE); //chief1983, Cmdline_output_json_data
bool Cmdline_output_json_data = false;
// Deprecated flags - CommanderDJ
cmdline_parm deprecated_spec_arg("-spec", "Deprecated", AT_NONE);
@@ -1509,6 +1513,11 @@ bool SetCmdlineParams()
output_sexps("sexps.html");
}
if ( output_json_data_arg.found() )
{
Cmdline_output_json_data = true;
}
if ( no_vbo_arg.found() )
{
Cmdline_novbo = 1;
+1
View File
@@ -155,5 +155,6 @@ extern int Cmdline_reparse_mainhall;
extern bool Cmdline_frame_profile;
extern bool Cmdline_profile_write_file;
extern bool Cmdline_no_unfocus_pause;
extern bool Cmdline_output_json_data;
#endif
+8 -6
View File
@@ -9,8 +9,10 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////
// @todo Make a fast version of the parse_long, parse_ulong, etc. That just checks the first 1-3 characters. The fast version will be used in retail builds while the slow/safe version will be in debug's
// @todo Maybe make parser functions case-insensitive
// Testing Goals
// Breakpoints are set at places that need testing:
// * the value of endptr strtol and strtoul needs to investigated, according to cplusplus.com, *endptr = end of the string that was successfully converted
// TODO: Make a fast version of the parse_long, parse_ulong, etc. That just checks the first 1-3 characters. The fast version will be used in retail builds while the slow/safe version will be in debug's
////////////////
#include "debugconsole/consoleparse.h"
@@ -464,7 +466,7 @@ void dc_required_string(char *pstr)
dc_ignore_gray_space();
if (strncmp(pstr, Cp, strlen(pstr)) == 0) {
if (strnicmp(pstr, Cp, strlen(pstr))) {
str_found = pstr;
}
@@ -490,10 +492,10 @@ int dc_required_string_either(char *str1, char *str2)
dc_ignore_gray_space();
if (strncmp(str1, Cp, strlen(str1)) == 0) {
if (strncmp(str1, Cp, strlen(str1) == 0)) {
str_found = str1;
i = 0;
} else if (strncmp(str2, Cp, strlen(str2)) == 0) {
} else if (strncmp(str2, Cp, strlen(str2) == 0)) {
str_found = str2;
i = 1;
}
@@ -561,7 +563,7 @@ bool dc_optional_string(const char *pstr)
{
dc_ignore_gray_space();
if (strncmp(pstr, Cp, strlen(pstr)) != 0) {
if (strncmp(pstr, Cp, strlen(pstr) != 0)) {
return false;
} // Else, optional string was found
+226 -226
View File
File diff suppressed because it is too large. Load diff
+7
View File
@@ -7127,6 +7127,13 @@ int game_main(char *cmdline)
return 0;
}
// maybe output parsed table objects, and exit
if (Cmdline_output_json_data) {
ship_output_json("ships.json");
weapons_output_json("weapons.json");
game_shutdown();
return 0;
}
// maybe spew VP CRCs, and exit
if (Cmdline_verify_vps) {
+4 -4
View File
@@ -336,8 +336,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,7,2,11329
PRODUCTVERSION 3,7,2,11329
FILEVERSION 3,7,1,000000
PRODUCTVERSION 3,7,1,000000
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.2.11329"
VALUE "FileVersion", "3.7.1.000000"
VALUE "InternalName", "FreeSpace 2 Open"
VALUE "LegalCopyright", "Copyright © 1998"
VALUE "OriginalFilename", "fs2.exe"
VALUE "ProductName", "FreeSpace 2 Open"
VALUE "ProductVersion", "3.7.2"
VALUE "ProductVersion", "3.7.1"
END
END
BLOCK "VarFileInfo"
+2 -2
View File
@@ -34,8 +34,8 @@
#define FS_VERSION_MAJOR 3 // major version
#define FS_VERSION_MINOR 7 // increase by 1 for minor revs
#define FS_VERSION_BUILD 2 // bugfix release
#define FS_VERSION_REVIS 11329 // SVN revision
#define FS_VERSION_BUILD 1 // bugfix release
#define FS_VERSION_REVIS 000000 // 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!!)
#define VERSION_LOC_FNAME "version.nfo"
-4
View File
@@ -192,10 +192,6 @@ int gr_opengl_create_stream_buffer()
{
opengl_vertex_buffer buffer;
if ( !Use_VBOs ) {
return -1;
}
vglGenBuffersARB(1, &buffer.vbo);
GL_vertex_buffers.push_back(buffer);
+1 -1
View File
@@ -858,7 +858,7 @@ int hud_squadmsg_is_target_order_valid(int order, int find_order, ai_info *aip )
}
// if we are messaging a ship, and that ship is our target, no target type orders are ever active
if ( (Squad_msg_mode == SM_MODE_SHIP_COMMAND) && (Objects[target_objnum].instance == Msg_instance) ){
if ( (Squad_msg_mode == SM_MODE_SHIP_COMMAND) && (target_objnum == Msg_instance) ){
return 0;
}
+15 -10
View File
@@ -35,9 +35,9 @@
char *fs2_open_credit_text =
"SOURCE CODE PROJECT STAFF:\n"
"\n"
"Project Leader:\n"
"Project Leaders:\n"
"\n"
"Fabian \"The E\" Woltermann\n"
"Cliff \"chief1983\" Gordon\n"
"\n"
"Senior Advisors:\n"
"\n"
@@ -45,7 +45,6 @@ char *fs2_open_credit_text =
"Michael \"Zacam\" LaFleur\n"
"Taylor Richards\n"
"Edward \"Inquisitor\" Gardner\n"
"Cliff \"chief1983\" Gordon\n"
"\n"
"Programmers:\n"
"\n"
@@ -53,13 +52,19 @@ char *fs2_open_credit_text =
"Derek \"Kazan\" Meek\n"
"Nick \"phreak\" Iannetta\n"
"Mike \"Bobboau\" Abegg\n"
"Backslash, Echelon9, Flaming_Sword\n"
"FUBAR, Iss Mneur, kkmic\n"
"Shade, Soulstorm, Sushi\n"
"Swifty, Wanderer, CommanderDJ\n"
"Valathil, MageKing17, Yarn\n"
"m!m, z64555, zookeeper\n"
"jg18, niffiwan\n"
"Backslash\n"
"Echelon9\n"
"Flaming_Sword\n"
"FUBAR\n"
"Iss Mneur\n"
"kkmic\n"
"Shade\n"
"Soulstorm\n"
"Sushi\n"
"Swifty\n"
"Wanderer\n"
"Fabian \"The E\" Woltermann\n"
"CommanderDJ\n"
"\n"
"\n"
"Readme Staff:\n"
+10 -10
View File
@@ -10491,7 +10491,7 @@ void sexp_adjust_audio_volume(int node)
if (n > 0) {
int option = audio_volume_option_lookup(CTEXT(n));
if (option >= 0) {
if (option > 0) {
n = CDR(n);
float target_volume = 1.0f;
@@ -32111,7 +32111,7 @@ sexp_help_struct Sexp_help[] = {
"\tReturns a percentage from 0 to 100\r\n"
"\t1: Ship name\r\n" },
{ OP_GET_ETS_VALUE, "get-ets-value\r\n"
{ OP_GET_ETS_VALUE, "get-ets-values\r\n"
"\tGets one ETS index for a ship\r\n"
"\t1: ETS index to get, Engine|Shield|Weapon\r\n"
"\t2: Ship name\r\n"},
@@ -32432,8 +32432,8 @@ sexp_help_struct Sexp_help[] = {
"\tSets the amount of ammo for the specified ballistic bank\r\n"
"\t1: Ship name\r\n"
"\t2: Bank to check (0, 1, and 2 are legal banks)\r\n"
"\t3: Number to set this bank to (If this is larger than the maximum, bank will be set to maximum).\r\n"
"\t4: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximum, bank will be set to maximum)"
"\t3: Number to set this bank to (If this is larger than the maximimum, bank will be set to maximum).\r\n"
"\t4: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximimum, bank will be set to maximum)"
},
// Karajorma
@@ -32441,8 +32441,8 @@ sexp_help_struct Sexp_help[] = {
"\tSets the amount of ammo for the specified bank\r\n"
"\t1: Ship name\r\n"
"\t2: Bank to check (0, 1, 2 and 3 are legal banks)\r\n"
"\t3: Number to set this bank to (If this is larger than the maximum, bank will be set to maximum).\r\n"
"\t4: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximum, bank will be set to maximum)"
"\t3: Number to set this bank to (If this is larger than the maximimum, bank will be set to maximum).\r\n"
"\t4: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximimum, bank will be set to maximum)"
},
// Karajorma
@@ -32451,8 +32451,8 @@ sexp_help_struct Sexp_help[] = {
"\t1: Ship name\r\n"
"\t2: Bank to check (0, 1 and 2 are legal banks)\r\n"
"\t3: Name of the primary weapon \r\n"
"\t4: Number to set ammo of this bank to (If this is larger than the maximum, bank will be set to maximum)\r\n"
"\t5: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximum, bank will be set to maximum)"
"\t4: Number to set this bank to (If this is larger than the maximimum, bank will be set to maximum)\r\n"
"\t5: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximimum, bank will be set to maximum)"
},
// Karajorma
@@ -32461,8 +32461,8 @@ sexp_help_struct Sexp_help[] = {
"\t1: Ship name\r\n"
"\t2: Bank to check (0, 1, 2 and 3 are legal banks)\r\n"
"\t3: Name of the secondary weapon \r\n"
"\t4: Number to set ammo of this bank to (If this is larger than the maximum, bank will be set to maximum)\r\n"
"\t5: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximum, bank will be set to maximum)"
"\t4: Number to set this bank to (If this is larger than the maximimum, bank will be set to maximum)\r\n"
"\t5: Rearm Limit. Support ships will only supply this number of weapons (If this is larger than the maximimum, bank will be set to maximum)"
},
+488 -158
View File
@@ -83,7 +83,17 @@
#include "debugconsole/console.h"
#include "debugconsole/console.h"
#include "math/vecmat.h"
#include "cfile/cfilesystem.h"
#include "jansson.h"
#ifndef JSON_REAL_PRECISION
#define JSON_REAL_PRECISION(n) 0
#endif
#ifndef JSON_ESCAPE_SLASH
#define JSON_ESCAPE_SLASH 0
#endif
#define NUM_SHIP_SUBSYSTEM_SETS 20 // number of subobject sets to use (because of the fact that it's a linked list,
// we can't easily go fully dynamic)
@@ -1256,6 +1266,60 @@ void parse_ship_particle_effect(ship_info* sip, particle_effect* pe, char *id_st
}
}
void parse_allowed_weapons(ship_info *sip, bool is_primary, bool is_dogfight)
{
int i, num_allowed;
int allowed_weapons[MAX_WEAPON_TYPES];
const int max_banks = (is_primary ? MAX_SHIP_PRIMARY_BANKS : MAX_SHIP_SECONDARY_BANKS);
const int weapon_type = (is_dogfight ? DOGFIGHT_WEAPON : REGULAR_WEAPON);
const int offset = (is_primary ? 0 : MAX_SHIP_PRIMARY_BANKS);
const char *allowed_banks_str = is_primary ? (is_dogfight ? "$Allowed Dogfight PBanks:" : "$Allowed PBanks:")
: (is_dogfight ? "$Allowed Dogfight SBanks:" : "$Allowed SBanks:");
const char *bank_type_str = is_primary ? "primary" : "secondary";
// Goober5000 - fixed Bobboau's implementation of restricted banks
int bank;
// Set the weapons filter used in weapons loadout (for primary weapons)
if (optional_string(allowed_banks_str))
{
bank = -1;
while (check_for_string("("))
{
bank++;
// make sure we don't specify more than we have banks for
if (bank >= max_banks)
{
Warning(LOCATION, "%s bank-specific loadout for %s exceeds permissible number of %s banks. Ignoring the rest...", allowed_banks_str, sip->name, bank_type_str);
bank--;
break;
}
num_allowed = stuff_int_list(allowed_weapons, MAX_WEAPON_TYPES, WEAPON_LIST_TYPE);
// actually say which weapons are allowed
for ( i = 0; i < num_allowed; i++ )
{
if ( allowed_weapons[i] >= 0 ) // MK, Bug fix, 9/6/99. Used to be "allowed_weapons" not "allowed_weapons[i]".
{
sip->allowed_bank_restricted_weapons[offset+bank][allowed_weapons[i]] |= weapon_type;
}
}
}
// set flags if need be
if (bank > 0) // meaning there was a restricted bank table entry
{
for (i=0; i<=bank; i++)
{
sip->restricted_loadout_flag[offset+i] |= weapon_type;
}
}
}
}
/**
* Common method for parsing ship/subsystem primary/secondary weapons so that the parser doesn't flip out in the event of a problem.
*
@@ -1355,8 +1419,7 @@ int parse_and_add_briefing_icon_info()
int parse_ship_values(ship_info* sip, bool first_time, bool replace)
{
char buf[SHIP_MULTITEXT_LENGTH];
int i, j, num_allowed;
int allowed_weapons[MAX_WEAPON_TYPES];
int i, j;
int rtn = 0;
char name_tmp[NAME_LENGTH];
@@ -1628,7 +1691,7 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
if (optional_string("$Enable Team Colors:")) {
stuff_boolean(&sip->uses_team_colors);
sip->default_team_name = "None";
}
}
if (optional_string("$Default Team:")) {
char temp[NAME_LENGTH];
@@ -2221,86 +2284,9 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
stuff_float( &sip->weapon_model_draw_distance );
}
// Goober5000 - fixed Bobboau's implementation of restricted banks
int bank;
// Set the weapons filter used in weapons loadout (for primary weapons)
if (optional_string("$Allowed PBanks:"))
{
bank = -1;
while (check_for_string("("))
{
bank++;
// make sure we don't specify more than we have banks for
if (bank >= MAX_SHIP_PRIMARY_BANKS)
{
Warning(LOCATION, "$Allowed PBanks bank-specific loadout for %s exceeds permissible number of primary banks. Ignoring the rest...", sip->name);
bank--;
break;
}
num_allowed = stuff_int_list(allowed_weapons, MAX_WEAPON_TYPES, WEAPON_LIST_TYPE);
// actually say which weapons are allowed
for ( i = 0; i < num_allowed; i++ )
{
if ( allowed_weapons[i] >= 0 ) // MK, Bug fix, 9/6/99. Used to be "allowed_weapons" not "allowed_weapons[i]".
{
sip->allowed_bank_restricted_weapons[bank][allowed_weapons[i]] |= REGULAR_WEAPON;
}
}
}
// set flags if need be
if (bank > 0) // meaning there was a restricted bank table entry
{
for (i=0; i<=bank; i++)
{
sip->restricted_loadout_flag[i] |= REGULAR_WEAPON;
}
}
}
// Set the weapons filter used in weapons loadout (for primary weapons)
if (optional_string("$Allowed Dogfight PBanks:"))
{
bank = -1;
while (check_for_string("("))
{
bank++;
// make sure we don't specify more than we have banks for
if (bank >= MAX_SHIP_PRIMARY_BANKS)
{
Warning(LOCATION, "$Allowed Dogfight PBanks bank-specific loadout for %s exceeds permissible number of primary banks. Ignoring the rest...", sip->name);
bank--;
break;
}
num_allowed = stuff_int_list(allowed_weapons, MAX_WEAPON_TYPES, WEAPON_LIST_TYPE);
// actually say which weapons are allowed
for ( i = 0; i < num_allowed; i++ )
{
if ( allowed_weapons[i] >= 0 ) // MK, Bug fix, 9/6/99. Used to be "allowed_weapons" not "allowed_weapons[i]".
{
sip->allowed_bank_restricted_weapons[bank][allowed_weapons[i]] |= DOGFIGHT_WEAPON;
}
}
}
// set flags if need be
if (bank > 0) // meaning there was a restricted bank table entry
{
for (i=0; i<=bank; i++)
{
sip->restricted_loadout_flag[i] |= DOGFIGHT_WEAPON;
}
}
}
parse_allowed_weapons(sip, true, false);
parse_allowed_weapons(sip, true, true);
// Get primary bank weapons
parse_weapon_bank(sip, true, &sip->num_primary_banks, sip->primary_bank_weapons, sip->primary_bank_ammo_capacity);
@@ -2312,82 +2298,8 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
}
// Set the weapons filter used in weapons loadout (for secondary weapons)
if (optional_string("$Allowed SBanks:"))
{
bank = -1;
while (check_for_string("("))
{
bank++;
// make sure we don't specify more than we have banks for
if (bank >= MAX_SHIP_SECONDARY_BANKS)
{
Warning(LOCATION, "$Allowed SBanks bank-specific loadout for %s exceeds permissible number of secondary banks. Ignoring the rest...", sip->name);
bank--;
break;
}
num_allowed = stuff_int_list(allowed_weapons, MAX_WEAPON_TYPES, WEAPON_LIST_TYPE);
// actually say which weapons are allowed
for ( i = 0; i < num_allowed; i++ )
{
if ( allowed_weapons[i] >= 0 ) // MK, Bug fix, 9/6/99. Used to be "allowed_weapons" not "allowed_weapons[i]".
{
sip->allowed_bank_restricted_weapons[MAX_SHIP_PRIMARY_BANKS+bank][allowed_weapons[i]] |= REGULAR_WEAPON;
}
}
}
// set flags if need be
if (bank > 0) // meaning there was a restricted bank table entry
{
for (i=0; i<=bank; i++)
{
sip->restricted_loadout_flag[MAX_SHIP_PRIMARY_BANKS+i] |= REGULAR_WEAPON;
}
}
}
// Set the weapons filter used in weapons loadout (for secondary weapons)
if (optional_string("$Allowed Dogfight SBanks:"))
{
bank = -1;
while (check_for_string("("))
{
bank++;
// make sure we don't specify more than we have banks for
if (bank >= MAX_SHIP_SECONDARY_BANKS)
{
Warning(LOCATION, "$Allowed Dogfight SBanks bank-specific loadout for %s exceeds permissible number of secondary banks. Ignoring the rest...", sip->name);
bank--;
break;
}
num_allowed = stuff_int_list(allowed_weapons, MAX_WEAPON_TYPES, WEAPON_LIST_TYPE);
// actually say which weapons are allowed
for ( i = 0; i < num_allowed; i++ )
{
if ( allowed_weapons[i] >= 0 ) // MK, Bug fix, 9/6/99. Used to be "allowed_weapons" not "allowed_weapons[i]".
{
sip->allowed_bank_restricted_weapons[MAX_SHIP_PRIMARY_BANKS+bank][allowed_weapons[i]] |= DOGFIGHT_WEAPON;
}
}
}
// set flags if need be
if (bank > 0) // meaning there was a restricted bank table entry
{
for (i=0; i<=bank; i++)
{
sip->restricted_loadout_flag[MAX_SHIP_PRIMARY_BANKS+i] |= DOGFIGHT_WEAPON;
}
}
}
parse_allowed_weapons(sip, false, false);
parse_allowed_weapons(sip, false, true);
// Get secondary bank weapons
parse_weapon_bank(sip, false, &sip->num_secondary_banks, sip->secondary_bank_weapons, sip->secondary_bank_ammo_capacity);
@@ -17888,3 +17800,421 @@ int get_nearest_bbox_point(object *ship_obj, vec3d *start, vec3d *box_pt)
return inside;
}
bool check_restricted(const ship_info* sip, json_t* bank_json, bool restricted, int bank, int weapon_idx, int weapon_type)
{
// bank is a bank index, weapon_idx is a weapon type. sip->allowed_bank_restricted_weapons[bank][weapon_idx] is a 2-bit bitfield.
if(sip->allowed_bank_restricted_weapons[bank][weapon_idx] & weapon_type)
{
json_array_append(bank_json, json_string(Weapon_info[weapon_idx].name));
if(!restricted && bank > 0)
{
restricted = true;
}
}
return restricted;
}
void append_weapons(const ship_info* sip, json_t* ship_data, bool is_primary, int bank_offset)
{
int bank, weapon_idx, num_banks;
bool restricted = false, dogfight_restricted = false;
json_t *Allowed_banks = json_array();
json_t *Allowed_dogfight_banks = json_array();
json_t *Default_banks = json_array();
json_t *Bank_capacity = json_array();
json_t *Show_models = json_array();
char Allowed_Banks_name[16], Allowed_Dogfight_Banks_name[25], Default_Banks_name[16], Bank_Capacity_name[16], Show_Models_name[23], type_name[10];
if(is_primary)
{
num_banks = sip->num_primary_banks;
strcpy_s(type_name, "Primary");
}
else
{
num_banks = sip->num_secondary_banks;
strcpy_s(type_name, "Secondary");
}
sprintf(Allowed_Banks_name, "$Allowed %cBanks", type_name[0]);
sprintf(Allowed_Dogfight_Banks_name, "$Allowed Dogfight %cBanks", type_name[0]);
sprintf(Default_Banks_name, "$Default %cBanks", type_name[0]);
sprintf(Bank_Capacity_name, "$%cBank Capacity", type_name[0]);
sprintf(Show_Models_name, "$Show %s Models", type_name);
for(bank = bank_offset; bank < bank_offset + num_banks; bank++)
{
json_t *regular_bank = json_array();
json_t *dogfight_bank = json_array();
for(weapon_idx = 0; weapon_idx < Num_weapon_types; weapon_idx++)
{
restricted = check_restricted(sip, regular_bank, restricted, bank, weapon_idx, REGULAR_WEAPON);
dogfight_restricted = check_restricted(sip, dogfight_bank, dogfight_restricted, bank, weapon_idx, DOGFIGHT_WEAPON);
}
json_array_append(Allowed_banks, regular_bank);
json_array_append(Allowed_dogfight_banks, dogfight_bank);
if(is_primary)
{
json_array_append(Default_banks, json_string(Weapon_info[sip->primary_bank_weapons[bank - bank_offset]].name));
json_array_append(Bank_capacity, json_integer(sip->primary_bank_ammo_capacity[bank - bank_offset]));
json_array_append(Show_models, json_boolean(sip->draw_primary_models[bank - bank_offset]));
}
else
{
json_array_append(Default_banks, json_string(Weapon_info[sip->secondary_bank_weapons[bank - bank_offset]].name));
json_array_append(Bank_capacity, json_integer(sip->secondary_bank_ammo_capacity[bank - bank_offset]));
json_array_append(Show_models, json_boolean(sip->draw_secondary_models[bank - bank_offset]));
}
}
json_object_set_new(ship_data, Allowed_Banks_name, (restricted ? Allowed_banks : json_array_get(Allowed_banks, 0)));
json_object_set_new(ship_data, Allowed_Dogfight_Banks_name, (dogfight_restricted ? Allowed_dogfight_banks : json_array_get(Allowed_dogfight_banks, 0)));
json_object_set_new(ship_data, Default_Banks_name, Default_banks);
json_object_set_new(ship_data, Bank_Capacity_name, Bank_capacity);
json_object_set_new(ship_data, Show_Models_name, Show_models);
}
void ship_output_json(const char *outfile)
{
mprintf(("Exporting ship data to json.\n"));
int i;
json_t *ships_obj = json_object();
json_t *Ships = json_array();
ship_info *sip;
species_info *species;
char full_name[MAX_PATH_LEN];
json_object_set_new(ships_obj, "default_player_ship", json_string(default_player_ship));
// Loop over the Ship_info array and add a new entry to ship_info_arr each time
for (i = 0; i < Num_ship_classes; i++)
{
int j;
sip = &Ship_info[i];
species = &Species_info[sip->species];
json_t *ship_data = json_object();
json_t *Displays = json_array();
json_t *Replacements = json_array();
json_t *Cockpit_offset = json_object();
json_t *Detail_distance = json_array();
json_t *ND = json_array();
json_t *Impact = json_object();
json_t *Collision_Physics = json_object();
json_t *Debris = json_object();
json_t *Max_Velocity = json_object();
json_t *Rotation_Time = json_object();
json_t *Anims = json_array();
json_t *Model_point_shield_controls = json_array();
size_t insert_index, shield_point;
json_t *quadrant;
json_t *Shield_color = json_object();
json_object_set_new(ship_data, "$Name", json_string(sip->name));
json_object_set_new(ship_data, "$Alt Name", json_string(sip->alt_name));
json_object_set_new(ship_data, "$Short Name", json_string(sip->short_name));
json_object_set_new(ship_data, "$Species", json_string(species->species_name));
json_object_set_new(ship_data, "+Type", json_string(sip->type_str));
json_object_set_new(ship_data, "+Maneuverability", json_string(sip->maneuverability_str));
json_object_set_new(ship_data, "+Armor", json_string(sip->armor_str));
json_object_set_new(ship_data, "+Manufacturer", json_string(sip->manufacturer_str));
json_object_set_new(ship_data, "+Description", json_string(sip->desc));
json_object_set_new(ship_data, "+Tech Title", json_string(sip->tech_title));
json_object_set_new(ship_data, "+Tech Description", json_string(sip->tech_desc));
json_object_set_new(ship_data, "+Length", json_string(sip->ship_length));
json_object_set_new(ship_data, "+Gun Mounts", json_string(sip->gun_mounts));
json_object_set_new(ship_data, "+Missile Banks", json_string(sip->missile_banks));
switch(sip->selection_effect)
{
case 0:
json_object_set_new(ship_data, "$Selection Effect", json_string("off"));
break;
case 1:
json_object_set_new(ship_data, "$Selection Effect", json_string("FS1"));
break;
case 2:
default:
json_object_set_new(ship_data, "$Selection Effect", json_string("FS2"));
}
json_object_set_new(ship_data, "$Cockpit POF file", json_string(sip->cockpit_pof_file));
json_object_set_new(Cockpit_offset, "x", json_real(sip->cockpit_offset.xyz.x));
json_object_set_new(Cockpit_offset, "y", json_real(sip->cockpit_offset.xyz.y));
json_object_set_new(Cockpit_offset, "z", json_real(sip->cockpit_offset.xyz.z));
json_object_set_new(ship_data, "+Cockpit offset", Cockpit_offset);
for(SCP_vector<cockpit_display_info>::iterator display = sip->displays.begin(); display != sip->displays.end(); ++display)
{
json_t *display_data = json_object();
json_t *offsets = json_array();
json_t *size = json_array();
json_object_set_new(display_data, "+Texture", json_string(display->filename));
json_array_append_new(offsets, json_integer(display->offset[0]));
json_array_append_new(offsets, json_integer(display->offset[1]));
json_object_set_new(display_data, "+Offsets", offsets);
json_array_append_new(size, json_integer(display->size[0]));
json_array_append_new(size, json_integer(display->size[1]));
json_object_set_new(display_data, "+Size", size);
json_object_set_new(display_data, "+Background", json_string(display->bg_filename));
json_object_set_new(display_data, "+Foreground", json_string(display->fg_filename));
json_object_set_new(display_data, "+Display Name", json_string(display->name));
json_array_append_new(Displays, display_data);
}
json_object_set_new(ship_data, "$Cockpit Display", Displays);
json_object_set_new(ship_data, "$POF file", json_string(sip->pof_file));
for(SCP_vector<texture_replace>::iterator replace = sip->replacement_textures.begin(); replace != sip->replacement_textures.end(); ++replace)
{
json_t *replace_data = json_object();
json_object_set_new(replace_data, "+old", json_string(replace->old_texture));
json_object_set_new(replace_data, "+new", json_string(replace->new_texture));
json_array_append_new(Replacements, replace_data);
}
json_object_set_new(ship_data, "$Texture Replace", Replacements);
json_object_set_new(ship_data, "$POF target file", json_string(sip->pof_file_hud));
json_object_set_new(ship_data, "$POF target LOD", json_integer(sip->hud_target_lod));
for (j = 0; j < sip->num_detail_levels; j++)
{
json_array_append_new(Detail_distance, json_integer(sip->detail_distance[j]));
}
json_object_set_new(ship_data, "$Detail distance", Detail_distance);
for (j = 0; j < sip->num_nondark_colors; j++)
{
json_t *nd_values = json_object();
json_object_set_new(nd_values, "red", json_integer(sip->nondark_colors[j][0]));
json_object_set_new(nd_values, "green", json_integer(sip->nondark_colors[j][1]));
json_object_set_new(nd_values, "blue", json_integer(sip->nondark_colors[j][2]));
json_array_append_new(ND, nd_values);
}
json_object_set_new(ship_data, "$ND", ND);
json_object_set_new(ship_data, "$Enable Team Colors", json_boolean(sip->uses_team_colors));
json_object_set_new(ship_data, "$Default Team", json_string(sip->default_team_name.c_str()));
json_object_set_new(ship_data, "$Damage Lightning Type", json_string(Lightning_types[sip->damage_lightning_type]));
if(sip->collision_damage_type_idx > -1 && sip->collision_damage_type_idx < Damage_types.size())
{
json_object_set_new(Impact, "+Damage Type", json_string(Damage_types.at(sip->collision_damage_type_idx).name));
}
else
{
json_object_set_new(Impact, "+Damage Type", json_null());
}
json_object_set_new(ship_data, "$Impact", Impact);
// Skipping spews
json_object_set_new(Collision_Physics, "+Bounce", json_real(sip->collision_physics.bounce));
json_object_set_new(Collision_Physics, "+Both Small Bounce", json_real(sip->collision_physics.both_small_bounce));
json_object_set_new(Collision_Physics, "+Friction", json_real(sip->collision_physics.friction));
json_object_set_new(Collision_Physics, "+Rotation Factor", json_real(sip->collision_physics.rotation_factor));
json_object_set_new(Collision_Physics, "+Landing Max Forward Vel", json_real(sip->collision_physics.landing_max_z));
json_object_set_new(Collision_Physics, "+Landing Min Forward Vel", json_real(sip->collision_physics.landing_min_z));
json_object_set_new(Collision_Physics, "+Landing Max Descent Vel", json_real(sip->collision_physics.landing_min_y));
json_object_set_new(Collision_Physics, "+Landing Max Horizontal Vel", json_real(sip->collision_physics.landing_max_x));
json_object_set_new(Collision_Physics, "+Landing Max Angle", json_real(sip->collision_physics.landing_max_angle));
json_object_set_new(Collision_Physics, "+Landing Min Angle", json_real(sip->collision_physics.landing_min_angle));
json_object_set_new(Collision_Physics, "+Landing Max Rotate Angle", json_real(sip->collision_physics.landing_max_rot_angle));
json_object_set_new(Collision_Physics, "+Reorient Max Forward Vel", json_real(sip->collision_physics.reorient_max_z));
json_object_set_new(Collision_Physics, "+Reorient Min Forward Vel", json_real(sip->collision_physics.reorient_min_z));
json_object_set_new(Collision_Physics, "+Reorient Max Descent Vel", json_real(sip->collision_physics.reorient_min_y));
json_object_set_new(Collision_Physics, "+Reorient Max Horizontal Vel", json_real(sip->collision_physics.reorient_max_x));
json_object_set_new(Collision_Physics, "+Reorient Max Angle", json_real(sip->collision_physics.reorient_max_angle));
json_object_set_new(Collision_Physics, "+Reorient Min Angle", json_real(sip->collision_physics.reorient_min_angle));
json_object_set_new(Collision_Physics, "+Reorient Max Rotate Angle", json_real(sip->collision_physics.reorient_max_rot_angle));
json_object_set_new(Collision_Physics, "+Reorient Speed Mult", json_real(sip->collision_physics.reorient_mult));
json_object_set_new(Collision_Physics, "+Landing Rest Angle", json_real(sip->collision_physics.landing_rest_angle));
if(sip->collision_damage_type_idx > -1 && sip->collision_damage_type_idx < Snds.size())
{
json_object_set_new(Collision_Physics, "+Landing Sound", json_string(Snds.at(sip->collision_physics.landing_sound_idx).name.c_str()));
}
else
{
json_object_set_new(Collision_Physics, "+Landing Sound", json_null());
}
json_object_set_new(ship_data, "$Collision Physics", Collision_Physics);
json_object_set_new(Debris, "+Min Lifetime", json_real(sip->debris_min_lifetime));
json_object_set_new(Debris, "+Max Lifetime", json_real(sip->debris_max_lifetime));
json_object_set_new(Debris, "+Min Speed", json_real(sip->debris_min_speed));
json_object_set_new(Debris, "+Max Speed", json_real(sip->debris_max_speed));
json_object_set_new(Debris, "+Min Rotation speed", json_real(sip->debris_min_rotspeed));
json_object_set_new(Debris, "+Max Rotation speed", json_real(sip->debris_max_rotspeed));
if(sip->collision_damage_type_idx > -1 && sip->collision_damage_type_idx < Damage_types.size())
{
json_object_set_new(Debris, "+Damage Type", json_string(Damage_types.at(sip->debris_damage_type_idx).name));
}
else
{
json_object_set_new(Debris, "+Damage Type", json_null());
}
json_object_set_new(Debris, "+Min Hitpoints", json_real(sip->debris_min_hitpoints));
json_object_set_new(Debris, "+Max Hitpoints", json_real(sip->debris_max_hitpoints));
json_object_set_new(Debris, "+Damage Multiplier", json_real(sip->debris_damage_mult));
json_object_set_new(Debris, "+Lightning Arc Percent", json_real(sip->debris_arc_percent * 100.0f));
json_object_set_new(ship_data, "$Debris", Debris);
json_object_set_new(ship_data, "$Density", json_real(sip->density));
json_object_set_new(ship_data, "$Damp", json_real(sip->damp));
json_object_set_new(ship_data, "$Rotdamp", json_real(sip->rotdamp));
json_object_set_new(ship_data, "$Banking Constant", json_real(sip->delta_bank_const));
json_object_set_new(Max_Velocity, "x", json_real(sip->max_vel.xyz.x));
json_object_set_new(Max_Velocity, "y", json_real(sip->max_vel.xyz.y));
json_object_set_new(Max_Velocity, "z", json_real(sip->max_vel.xyz.z));
json_object_set_new(ship_data, "$Max Velocity", Max_Velocity);
json_object_set_new(Rotation_Time, "x", json_real(sip->rotation_time.xyz.x));
json_object_set_new(Rotation_Time, "y", json_real(sip->rotation_time.xyz.y));
json_object_set_new(Rotation_Time, "z", json_real(sip->rotation_time.xyz.z));
json_object_set_new(ship_data, "$Rotation Time", Rotation_Time);
json_object_set_new(ship_data, "$Rear Velocity", json_real(sip->max_rear_vel));
json_object_set_new(ship_data, "$Forward accel", json_real(sip->forward_accel));
json_object_set_new(ship_data, "$Forward decel", json_real(sip->forward_decel));
json_object_set_new(ship_data, "$Slide accel", json_real(sip->slide_accel));
json_object_set_new(ship_data, "$Slide decel", json_real(sip->slide_decel));
json_object_set_new(ship_data, "$Glide", json_boolean(sip->can_glide));
json_object_set_new(ship_data, "+Dynamic Glide Cap", json_boolean(sip->glide_dynamic_cap));
json_object_set_new(ship_data, "+Max Glide Speed", json_real(sip->glide_cap));
json_object_set_new(ship_data, "+Glide Accel Mult", json_real(sip->glide_accel_mult));
json_object_set_new(ship_data, "$Use Newtonian Dampening", json_boolean(sip->use_newtonian_damp));
json_object_set_new(ship_data, "$Autoaim FOV", json_integer(sip->autoaim_fov));
// Skipping convergence, ugh...
json_object_set_new(ship_data, "$Warpin type", json_string(Warp_types[sip->warpin_type]));
if(sip->warpin_snd_start > -1 && sip->warpin_snd_start < Snds.size())
{
json_object_set_new(ship_data, "$Warpin Start Sound", json_string(Snds.at(sip->warpin_snd_start).name.c_str()));
}
else
{
json_object_set_new(ship_data, "$Warpin Start Sound", json_null());
}
if(sip->warpin_snd_end > -1 && sip->warpin_snd_end < Snds.size())
{
json_object_set_new(ship_data, "$Warpin End Sound", json_string(Snds.at(sip->warpin_snd_end).name.c_str()));
}
else
{
json_object_set_new(ship_data, "$Warpin End Sound", json_null());
}
json_object_set_new(ship_data, "$Warpin speed", json_real(sip->warpin_speed));
json_object_set_new(ship_data, "$Warpin time", json_real(sip->warpin_time));
json_object_set_new(ship_data, "$Warpin decel exp", json_real(sip->warpin_decel_exp));
json_object_set_new(ship_data, "$Warpin radius", json_real(sip->warpin_radius));
json_object_set_new(ship_data, "$Warpin animation", json_string(sip->warpin_anim));
json_object_set_new(ship_data, "$Warpout type", json_string(Warp_types[sip->warpout_type]));
if(sip->warpout_snd_start > -1 && sip->warpout_snd_start < Snds.size())
{
json_object_set_new(ship_data, "$Warpout Start Sound", json_string(Snds.at(sip->warpout_snd_start).name.c_str()));
}
else
{
json_object_set_new(ship_data, "$Warpout Start Sound", json_null());
}
if(sip->warpout_snd_end > -1 && sip->warpout_snd_end < Snds.size())
{
json_object_set_new(ship_data, "$Warpout End Sound", json_string(Snds.at(sip->warpout_snd_end).name.c_str()));
}
else
{
json_object_set_new(ship_data, "$Warpout End Sound", json_null());
}
json_object_set_new(ship_data, "$Warpout engage time", json_real(sip->warpout_engage_time));
json_object_set_new(ship_data, "$Warpout speed", json_real(sip->warpout_speed));
json_object_set_new(ship_data, "$Warpout time", json_real(sip->warpout_time));
json_object_set_new(ship_data, "$Warpout accel exp", json_real(sip->warpout_accel_exp));
json_object_set_new(ship_data, "$Warpout radius", json_real(sip->warpout_radius));
json_object_set_new(ship_data, "$Warpout animation", json_string(sip->warpout_anim));
json_object_set_new(ship_data, "$Player warpout speed", json_real(sip->warpout_player_speed));
json_object_set_new(ship_data, "$Expl inner rad", json_real(sip->shockwave.inner_rad));
json_object_set_new(ship_data, "$Expl outer rad", json_real(sip->shockwave.outer_rad));
json_object_set_new(ship_data, "$Expl damage", json_real(sip->shockwave.damage));
json_object_set_new(ship_data, "$Expl blast", json_real(sip->shockwave.blast));
json_object_set_new(ship_data, "$Expl Propogates", json_boolean(sip->explosion_propagates));
json_object_set_new(ship_data, "$Propagating Expl Radius Multiplier", json_real(sip->prop_exp_rad_mult));
json_object_set_new(ship_data, "$Expl Visual Rad", json_real(sip->big_exp_visual_rad));
json_object_set_new(ship_data, "$Base Death-Roll Time", json_integer(sip->death_roll_base_time));
json_object_set_new(ship_data, "$Death-Roll Explosion Radius Mult", json_real(sip->death_roll_r_mult));
json_object_set_new(ship_data, "$Death-Roll Explosion Intensity Mult", json_real(sip->death_roll_time_mult));
json_object_set_new(ship_data, "$Death FX Explosion Radius Mult", json_real(sip->death_fx_r_mult));
json_object_set_new(ship_data, "$Death FX Explosion Count", json_integer(sip->death_fx_count));
// Skipping more particle stuff for now
json_object_set_new(ship_data, "$Vaporize Percent Chance", json_real(sip->vaporize_chance));
if(sip->shockwave.damage_type_idx > -1 && sip->shockwave.damage_type_idx < Damage_types.size())
{
json_object_set_new(ship_data, "$Shockwave Damage Type", json_string(Damage_types.at(sip->shockwave.damage_type_idx).name));
}
else
{
json_object_set_new(ship_data, "$Shockwave Damage Type", json_null());
}
json_object_set_new(ship_data, "$Shockwave Speed", json_real(sip->shockwave.speed));
json_object_set_new(ship_data, "$Shockwave Count", json_real(sip->shockwave_count));
json_object_set_new(ship_data, "$Shockwave model", json_string(sip->shockwave.pof_name));
json_object_set_new(ship_data, "$Shockwave name", json_string(sip->shockwave.name));
for(SCP_vector<int>::iterator anim = sip->explosion_bitmap_anims.begin(); anim != sip->explosion_bitmap_anims.end(); ++anim)
{
json_array_append_new(Anims, json_integer(*anim));
}
json_object_set_new(ship_data, "$Explosion Animations", Anims);
json_object_set_new(ship_data, "$Weapon Model Draw Distance", json_real(sip->weapon_model_draw_distance));
append_weapons(sip, ship_data, true, 0);
append_weapons(sip, ship_data, false, MAX_SHIP_PRIMARY_BANKS);
json_object_set_new(ship_data, "$Shields", json_real(sip->max_shield_strength));
json_object_set_new(ship_data, "+Auto Spread", json_real(sip->auto_shield_spread));
json_object_set_new(ship_data, "+Allow Bypass", json_boolean(sip->auto_shield_spread_bypass));
json_object_set_new(ship_data, "+Spread From LOD", json_integer(sip->auto_shield_spread_from_lod));
for(j = 0; j < sizeof(sip->shield_point_augment_ctrls) / sizeof(int); j++)
{
if(sip->shield_point_augment_ctrls[j] != -1)
{
insert_index = 0;
json_array_foreach(Model_point_shield_controls, shield_point, quadrant)
{
insert_index = shield_point;
if(sip->shield_point_augment_ctrls[j] < shield_point)
{
break;
}
}
switch(j)
{
case 0:
json_array_insert_new(Model_point_shield_controls, insert_index, json_string("right"));
break;
case 1:
json_array_insert_new(Model_point_shield_controls, insert_index, json_string("front"));
break;
case 2:
json_array_insert_new(Model_point_shield_controls, insert_index, json_string("rear"));
break;
case 3:
json_array_insert_new(Model_point_shield_controls, insert_index, json_string("left"));
break;
}
}
}
json_object_set_new(ship_data, "$Model Point Shield Controls", Model_point_shield_controls);
json_object_set_new(Shield_color, "red", json_integer(sip->shield_color[0]));
json_object_set_new(Shield_color, "green", json_integer(sip->shield_color[1]));
json_object_set_new(Shield_color, "blue", json_integer(sip->shield_color[2]));
json_object_set_new(ship_data, "$Shield Color", Shield_color);
json_object_set_new(ship_data, "$Power Output", json_real(sip->power_output));
json_object_set_new(ship_data, "$Shield Regeneration Rate", json_real(sip->max_shield_regen_per_second));
json_object_set_new(ship_data, "$Support Shield Repair Rate", json_real(sip->sup_shield_repair_rate * 100));
json_object_set_new(ship_data, "$Weapon Regeneration Rate", json_real(sip->max_weapon_regen_per_second));
json_object_set_new(ship_data, "$Max Oclk Speed", json_real(sip->max_overclocked_speed));
json_object_set_new(ship_data, "$Max Weapon Eng", json_real(sip->max_weapon_reserve));
json_object_set_new(ship_data, "$Hitpoints", json_real(sip->max_hull_strength));
json_object_set_new(ship_data, "$Hull Repair Rate", json_real(sip->hull_repair_rate * 100));
json_object_set_new(ship_data, "$Support Hull Repair Rate", json_real(sip->sup_hull_repair_rate * 100));
json_object_set_new(ship_data, "$Subsystem Repair Rate", json_real(sip->subsys_repair_rate * 100));
json_object_set_new(ship_data, "$Support Subsystem Repair Rate", json_real(sip->sup_subsys_repair_rate * 100));
json_object_set_new(ship_data, "$Armor Type", ( (sip->armor_type_idx > -1) ? json_string(Armor_types[sip->armor_type_idx].GetNamePtr()) : json_null() ));
json_object_set_new(ship_data, "$Shield Armor Type", ( (sip->shield_armor_type_idx > -1) ? json_string(Armor_types[sip->shield_armor_type_idx].GetNamePtr()) : json_null() ));
// Skipping flags
json_array_append_new(Ships, ship_data);
}
json_object_set_new(ships_obj, "Ships", Ships);
cf_create_default_path_string(full_name, sizeof(full_name) - 1, CF_TYPE_ROOT, outfile);
json_dump_file(ships_obj, full_name, JSON_ESCAPE_SLASH | JSON_INDENT(4) | JSON_PRESERVE_ORDER | JSON_REAL_PRECISION(4));
}
+2
View File
@@ -2006,4 +2006,6 @@ int get_default_player_ship_index();
*/
int get_nearest_bbox_point(object *ship_obj, vec3d *start, vec3d *box_pt);
extern void ship_output_json(const char *outfile);
#endif
-7
View File
@@ -12,7 +12,6 @@
#include "render/3d.h"
#include "sound/sound.h"
#include "sound/audiostr.h"
#include "gamesnd/eventmusic.h"
#include "cmdline/cmdline.h"
#include "osapi/osapi.h"
#include "globalincs/vmallocator.h"
@@ -1519,12 +1518,6 @@ void adjust_volume_on_frame(float* volume_now, aav* data)
//apply change
*volume_now = data->start_volume + (data->delta * done);
CLAMP(*volume_now, 0.0f, 1.0f);
// if setting music volume, trigger volume change in playing tracks
// done here in order to avoid setting music volume in every frame regardless if it changed or not
if (&aav_music_volume == volume_now) {
audiostream_set_volume_all(Master_event_music_volume * aav_music_volume, ASF_EVENTMUSIC);
}
}
void snd_aav_init()
-24
View File
@@ -2338,30 +2338,6 @@ int beam_collide_ship(obj_pair *pair)
int hull_enter_collision = model_collide(&mc_hull_enter);
int hull_exit_collision = (beam_will_tool_target(b, ship_objp)) ? model_collide(&mc_hull_exit) : 0;
// If we have a range less than the "far" range, check if the ray actually hit within the range
if (b->range < BEAM_FAR_LENGTH
&& (shield_collision || hull_enter_collision || hull_exit_collision))
{
// We can't use hit_dist as "1" is the distance between p0 and p1
float rangeSq = b->range * b->range;
// actually make sure that the collision points are within range of our beam
if (shield_collision && vm_vec_dist_squared(&b->last_start, &mc_shield.hit_point_world) > rangeSq)
{
shield_collision = 0;
}
if (hull_enter_collision && vm_vec_dist_squared(&b->last_start, &mc_hull_enter.hit_point_world) > rangeSq)
{
hull_enter_collision = 0;
}
if (hull_exit_collision && vm_vec_dist_squared(&mc_hull_exit.hit_point_world, &b->last_start) > rangeSq)
{
hull_exit_collision = 0;
}
}
// check shields for impact
// (tooled ships are probably not going to be maintaining a shield over their exit hole,
// therefore we need only check the entrance, just as with conventional weapons)
+3
View File
@@ -670,4 +670,7 @@ void weapon_pause_sounds();
// Unpauses all running weapon sounds
void weapon_unpause_sounds();
// Dumps parsed weapon data to a json file
extern void weapons_output_json(const char *outfile);
#endif
+5
View File
@@ -7022,3 +7022,8 @@ void weapon_unpause_sounds()
// Pause all beam sounds
beam_unpause_sounds();
}
void weapons_output_json(const char *outfile)
{
mprintf(("Exporting weapon data to json.\n"));
}
+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.2)
AC_INIT(fs2_open, 3.7.1)
AC_CONFIG_SRCDIR(code/freespace2/freespace.cpp)
dnl we need at least version 2.54 of autoconf
+2655 -1557
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1,4 +1,4 @@
Copyright (c) 2009-2013 Petri Lehtinen <[email protected]>
Copyright (c) 2009-2014 Petri Lehtinen <[email protected]>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+19 -13
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -22,6 +22,9 @@
#define MAX_INTEGER_STR_LENGTH 100
#define MAX_REAL_STR_LENGTH 100
#define FLAGS_TO_INDENT(f) ((f) & 0x1F)
#define FLAGS_TO_PRECISION(f) (((f) >> 11) & 0x1F)
struct object_key {
size_t serial;
const char *key;
@@ -45,9 +48,9 @@ static const char whitespace[] = " ";
static int dump_indent(size_t flags, int depth, int space, json_dump_callback_t dump, void *data)
{
if(JSON_INDENT(flags) > 0)
if(FLAGS_TO_INDENT(flags) > 0)
{
int i, ws_count = JSON_INDENT(flags);
int i, ws_count = FLAGS_TO_INDENT(flags);
if(dump("\n", 1, data))
return -1;
@@ -65,24 +68,25 @@ static int dump_indent(size_t flags, int depth, int space, json_dump_callback_t
return 0;
}
static int dump_string(const char *str, json_dump_callback_t dump, void *data, size_t flags)
static int dump_string(const char *str, size_t len, json_dump_callback_t dump, void *data, size_t flags)
{
const char *pos, *end;
const char *pos, *end, *lim;
int32_t codepoint;
if(dump("\"", 1, data))
return -1;
end = pos = str;
lim = str + len;
while(1)
{
const char *text;
char seq[13];
int length;
while(*end)
while(end < lim)
{
end = utf8_iterate(pos, &codepoint);
end = utf8_iterate(pos, lim - pos, &codepoint);
if(!end)
return -1;
@@ -126,7 +130,7 @@ static int dump_string(const char *str, json_dump_callback_t dump, void *data, s
/* codepoint is in BMP */
if(codepoint < 0x10000)
{
sprintf(seq, "\\u%04x", codepoint);
sprintf(seq, "\\u%04X", codepoint);
length = 6;
}
@@ -139,7 +143,7 @@ static int dump_string(const char *str, json_dump_callback_t dump, void *data, s
first = 0xD800 | ((codepoint & 0xffc00) >> 10);
last = 0xDC00 | (codepoint & 0x003ff);
sprintf(seq, "\\u%04x\\u%04x", first, last);
sprintf(seq, "\\u%04X\\u%04X", first, last);
length = 12;
}
@@ -207,7 +211,8 @@ static int do_dump(const json_t *json, size_t flags, int depth,
int size;
double value = json_real_value(json);
size = jsonp_dtostr(buffer, MAX_REAL_STR_LENGTH, value);
size = jsonp_dtostr(buffer, MAX_REAL_STR_LENGTH, value,
FLAGS_TO_PRECISION(flags));
if(size < 0)
return -1;
@@ -215,7 +220,7 @@ static int do_dump(const json_t *json, size_t flags, int depth,
}
case JSON_STRING:
return dump_string(json_string_value(json), dump, data, flags);
return dump_string(json_string_value(json), json_string_length(json), dump, data, flags);
case JSON_ARRAY:
{
@@ -336,7 +341,7 @@ static int do_dump(const json_t *json, size_t flags, int depth,
value = json_object_get(json, key);
assert(value);
dump_string(key, dump, data, flags);
dump_string(key, strlen(key), dump, data, flags);
if(dump(separator, separator_length, data) ||
do_dump(value, flags, depth + 1, dump, data))
{
@@ -372,8 +377,9 @@ static int do_dump(const json_t *json, size_t flags, int depth,
while(iter)
{
void *next = json_object_iter_next((json_t *)json, iter);
const char *key = json_object_iter_key(iter);
dump_string(json_object_iter_key(iter), dump, data, flags);
dump_string(key, strlen(key), dump, data, flags);
if(dump(separator, separator_length, data) ||
do_dump(json_object_iter_value(iter), flags, depth + 1,
dump, data))
+36 -44
View File
@@ -1,12 +1,21 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
*/
#if HAVE_CONFIG_H
#include <jansson_private_config.h>
#endif
#include <stdlib.h>
#include <string.h>
#if HAVE_STDINT_H
#include <stdint.h>
#endif
#include <jansson_config.h> /* for JSON_INLINE */
#include "jansson_private.h" /* for container_of() */
#include "hashtable.h"
@@ -15,24 +24,13 @@ typedef struct hashtable_list list_t;
typedef struct hashtable_pair pair_t;
typedef struct hashtable_bucket bucket_t;
extern volatile uint32_t hashtable_seed;
/* Implementation of the hash function */
#include "lookup3.h"
#define list_to_pair(list_) container_of(list_, pair_t, list)
/* From http://www.cse.yorku.ca/~oz/hash.html */
static size_t hash_str(const void *ptr)
{
const char *str = (const char *)ptr;
size_t hash = 5381;
size_t c;
while((c = (size_t)*str))
{
hash = ((hash << 5) + hash) + c;
str++;
}
return hash;
}
#define hash_str(key) ((size_t)hashlittle((key), strlen(key), hashtable_seed))
static JSON_INLINE void list_init(list_t *list)
{
@@ -74,19 +72,6 @@ static void insert_to_bucket(hashtable_t *hashtable, bucket_t *bucket,
}
}
static const size_t primes[] = {
5, 13, 23, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593,
49157, 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469,
12582917, 25165843, 50331653, 100663319, 201326611, 402653189,
805306457, 1610612741
};
static JSON_INLINE size_t num_buckets(hashtable_t *hashtable)
{
return primes[hashtable->num_buckets];
}
static pair_t *hashtable_find_pair(hashtable_t *hashtable, bucket_t *bucket,
const char *key, size_t hash)
{
@@ -120,7 +105,7 @@ static int hashtable_do_del(hashtable_t *hashtable,
bucket_t *bucket;
size_t index;
index = hash % num_buckets(hashtable);
index = hash & hashmask(hashtable->order);
bucket = &hashtable->buckets[index];
pair = hashtable_find_pair(hashtable, bucket, key, hash);
@@ -167,14 +152,14 @@ static int hashtable_do_rehash(hashtable_t *hashtable)
jsonp_free(hashtable->buckets);
hashtable->num_buckets++;
new_size = num_buckets(hashtable);
hashtable->order++;
new_size = hashsize(hashtable->order);
hashtable->buckets = jsonp_malloc(new_size * sizeof(bucket_t));
if(!hashtable->buckets)
return -1;
for(i = 0; i < num_buckets(hashtable); i++)
for(i = 0; i < hashsize(hashtable->order); i++)
{
hashtable->buckets[i].first = hashtable->buckets[i].last =
&hashtable->list;
@@ -199,14 +184,14 @@ int hashtable_init(hashtable_t *hashtable)
size_t i;
hashtable->size = 0;
hashtable->num_buckets = 0; /* index to primes[] */
hashtable->buckets = jsonp_malloc(num_buckets(hashtable) * sizeof(bucket_t));
hashtable->order = 3;
hashtable->buckets = jsonp_malloc(hashsize(hashtable->order) * sizeof(bucket_t));
if(!hashtable->buckets)
return -1;
list_init(&hashtable->list);
for(i = 0; i < num_buckets(hashtable); i++)
for(i = 0; i < hashsize(hashtable->order); i++)
{
hashtable->buckets[i].first = hashtable->buckets[i].last =
&hashtable->list;
@@ -230,12 +215,12 @@ int hashtable_set(hashtable_t *hashtable,
size_t hash, index;
/* rehash if the load ratio exceeds 1 */
if(hashtable->size >= num_buckets(hashtable))
if(hashtable->size >= hashsize(hashtable->order))
if(hashtable_do_rehash(hashtable))
return -1;
hash = hash_str(key);
index = hash % num_buckets(hashtable);
index = hash & hashmask(hashtable->order);
bucket = &hashtable->buckets[index];
pair = hashtable_find_pair(hashtable, bucket, key, hash);
@@ -249,7 +234,14 @@ int hashtable_set(hashtable_t *hashtable,
/* offsetof(...) returns the size of pair_t without the last,
flexible member. This way, the correct amount is
allocated. */
pair = jsonp_malloc(offsetof(pair_t, key) + strlen(key) + 1);
size_t len = strlen(key);
if(len >= (size_t)-1 - offsetof(pair_t, key)) {
/* Avoid an overflow if the key is very long */
return -1;
}
pair = jsonp_malloc(offsetof(pair_t, key) + len + 1);
if(!pair)
return -1;
@@ -273,7 +265,7 @@ void *hashtable_get(hashtable_t *hashtable, const char *key)
bucket_t *bucket;
hash = hash_str(key);
bucket = &hashtable->buckets[hash % num_buckets(hashtable)];
bucket = &hashtable->buckets[hash & hashmask(hashtable->order)];
pair = hashtable_find_pair(hashtable, bucket, key, hash);
if(!pair)
@@ -294,7 +286,7 @@ void hashtable_clear(hashtable_t *hashtable)
hashtable_do_clear(hashtable);
for(i = 0; i < num_buckets(hashtable); i++)
for(i = 0; i < hashsize(hashtable->order); i++)
{
hashtable->buckets[i].first = hashtable->buckets[i].last =
&hashtable->list;
@@ -316,7 +308,7 @@ void *hashtable_iter_at(hashtable_t *hashtable, const char *key)
bucket_t *bucket;
hash = hash_str(key);
bucket = &hashtable->buckets[hash % num_buckets(hashtable)];
bucket = &hashtable->buckets[hash & hashmask(hashtable->order)];
pair = hashtable_find_pair(hashtable, bucket, key, hash);
if(!pair)
+3 -2
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -32,7 +32,7 @@ struct hashtable_bucket {
typedef struct hashtable {
size_t size;
struct hashtable_bucket *buckets;
size_t num_buckets; /* index to primes[] */
size_t order; /* hashtable has pow(2, order) buckets */
struct hashtable_list list;
} hashtable_t;
@@ -40,6 +40,7 @@ typedef struct hashtable {
#define hashtable_key_to_iter(key_) \
(&(container_of(key_, struct hashtable_pair, key)->list))
/**
* hashtable_init - Initialize a hashtable object
*
+277
View File
@@ -0,0 +1,277 @@
/* Generate sizeof(uint32_t) bytes of as random data as possible to seed
the hash function.
*/
#ifdef HAVE_CONFIG_H
#include <jansson_private_config.h>
#endif
#include <stdio.h>
#include <time.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#ifdef HAVE_SCHED_H
#include <sched.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if defined(_WIN32)
/* For GetModuleHandle(), GetProcAddress() and GetCurrentProcessId() */
#include <windows.h>
#endif
#include "jansson.h"
static uint32_t buf_to_uint32(char *data) {
size_t i;
uint32_t result = 0;
for (i = 0; i < sizeof(uint32_t); i++)
result = (result << 8) | (unsigned char)data[i];
return result;
}
/* /dev/urandom */
#if !defined(_WIN32) && defined(USE_URANDOM)
static int seed_from_urandom(uint32_t *seed) {
/* Use unbuffered I/O if we have open(), close() and read(). Otherwise
fall back to fopen() */
char data[sizeof(uint32_t)];
int ok;
#if defined(HAVE_OPEN) && defined(HAVE_CLOSE) && defined(HAVE_READ)
int urandom;
urandom = open("/dev/urandom", O_RDONLY);
if (urandom == -1)
return 1;
ok = read(urandom, data, sizeof(uint32_t)) == sizeof(uint32_t);
close(urandom);
#else
FILE *urandom;
urandom = fopen("/dev/urandom", "rb");
if (!urandom)
return 1;
ok = fread(data, 1, sizeof(uint32_t), urandom) == sizeof(uint32_t);
fclose(urandom);
#endif
if (!ok)
return 1;
*seed = buf_to_uint32(data);
return 0;
}
#endif
/* Windows Crypto API */
#if defined(_WIN32) && defined(USE_WINDOWS_CRYPTOAPI)
#include <wincrypt.h>
typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv, LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType, DWORD dwFlags);
typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer);
typedef BOOL (WINAPI *CRYPTRELEASECONTEXT)(HCRYPTPROV hProv, DWORD dwFlags);
static int seed_from_windows_cryptoapi(uint32_t *seed)
{
HINSTANCE hAdvAPI32 = NULL;
CRYPTACQUIRECONTEXTA pCryptAcquireContext = NULL;
CRYPTGENRANDOM pCryptGenRandom = NULL;
CRYPTRELEASECONTEXT pCryptReleaseContext = NULL;
HCRYPTPROV hCryptProv = 0;
BYTE data[sizeof(uint32_t)];
int ok;
hAdvAPI32 = GetModuleHandle(TEXT("advapi32.dll"));
if(hAdvAPI32 == NULL)
return 1;
pCryptAcquireContext = (CRYPTACQUIRECONTEXTA)GetProcAddress(hAdvAPI32, "CryptAcquireContextA");
if (!pCryptAcquireContext)
return 1;
pCryptGenRandom = (CRYPTGENRANDOM)GetProcAddress(hAdvAPI32, "CryptGenRandom");
if (!pCryptGenRandom)
return 1;
pCryptReleaseContext = (CRYPTRELEASECONTEXT)GetProcAddress(hAdvAPI32, "CryptReleaseContext");
if (!pCryptReleaseContext)
return 1;
if (!pCryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
return 1;
ok = pCryptGenRandom(hCryptProv, sizeof(uint32_t), data);
pCryptReleaseContext(hCryptProv, 0);
if (!ok)
return 1;
*seed = buf_to_uint32((char *)data);
return 0;
}
#endif
/* gettimeofday() and getpid() */
static int seed_from_timestamp_and_pid(uint32_t *seed) {
#ifdef HAVE_GETTIMEOFDAY
/* XOR of seconds and microseconds */
struct timeval tv;
gettimeofday(&tv, NULL);
*seed = (uint32_t)tv.tv_sec ^ (uint32_t)tv.tv_usec;
#else
/* Seconds only */
*seed = (uint32_t)time(NULL);
#endif
/* XOR with PID for more randomness */
#if defined(_WIN32)
*seed ^= (uint32_t)GetCurrentProcessId();
#elif defined(HAVE_GETPID)
*seed ^= (uint32_t)getpid();
#endif
return 0;
}
static uint32_t generate_seed() {
uint32_t seed;
int done = 0;
#if !defined(_WIN32) && defined(USE_URANDOM)
if (!done && seed_from_urandom(&seed) == 0)
done = 1;
#endif
#if defined(_WIN32) && defined(USE_WINDOWS_CRYPTOAPI)
if (!done && seed_from_windows_cryptoapi(&seed) == 0)
done = 1;
#endif
if (!done) {
/* Fall back to timestamp and PID if no better randomness is
available */
seed_from_timestamp_and_pid(&seed);
}
/* Make sure the seed is never zero */
if (seed == 0)
seed = 1;
return seed;
}
volatile uint32_t hashtable_seed = 0;
#if defined(HAVE_ATOMIC_BUILTINS) && (defined(HAVE_SCHED_YIELD) || !defined(_WIN32))
static volatile char seed_initialized = 0;
void json_object_seed(size_t seed) {
uint32_t new_seed = (uint32_t)seed;
if (hashtable_seed == 0) {
if (__atomic_test_and_set(&seed_initialized, __ATOMIC_RELAXED) == 0) {
/* Do the seeding ourselves */
if (new_seed == 0)
new_seed = generate_seed();
__atomic_store_n(&hashtable_seed, new_seed, __ATOMIC_RELEASE);
} else {
/* Wait for another thread to do the seeding */
do {
#ifdef HAVE_SCHED_YIELD
sched_yield();
#endif
} while(__atomic_load_n(&hashtable_seed, __ATOMIC_ACQUIRE) == 0);
}
}
}
#elif defined(HAVE_SYNC_BUILTINS) && (defined(HAVE_SCHED_YIELD) || !defined(_WIN32))
void json_object_seed(size_t seed) {
uint32_t new_seed = (uint32_t)seed;
if (hashtable_seed == 0) {
if (new_seed == 0) {
/* Explicit synchronization fences are not supported by the
__sync builtins, so every thread getting here has to
generate the seed value.
*/
new_seed = generate_seed();
}
do {
if (__sync_bool_compare_and_swap(&hashtable_seed, 0, new_seed)) {
/* We were the first to seed */
break;
} else {
/* Wait for another thread to do the seeding */
#ifdef HAVE_SCHED_YIELD
sched_yield();
#endif
}
} while(hashtable_seed == 0);
}
}
#elif defined(_WIN32)
static long seed_initialized = 0;
void json_object_seed(size_t seed) {
uint32_t new_seed = (uint32_t)seed;
if (hashtable_seed == 0) {
if (InterlockedIncrement(&seed_initialized) == 1) {
/* Do the seeding ourselves */
if (new_seed == 0)
new_seed = generate_seed();
hashtable_seed = new_seed;
} else {
/* Wait for another thread to do the seeding */
do {
SwitchToThread();
} while (hashtable_seed == 0);
}
}
}
#else
/* Fall back to a thread-unsafe version */
void json_object_seed(size_t seed) {
uint32_t new_seed = (uint32_t)seed;
if (hashtable_seed == 0) {
if (new_seed == 0)
new_seed = generate_seed();
hashtable_seed = new_seed;
}
}
#endif
+28 -19
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -21,11 +21,11 @@ extern "C" {
/* version */
#define JANSSON_MAJOR_VERSION 2
#define JANSSON_MINOR_VERSION 5
#define JANSSON_MINOR_VERSION 7
#define JANSSON_MICRO_VERSION 0
/* Micro version is omitted if it's 0 */
#define JANSSON_VERSION "2.5"
#define JANSSON_VERSION "2.7"
/* Version as a 3-byte hex number, e.g. 0x010201 == 1.2.1. Use this
for numeric comparisons, e.g. #if JANSSON_VERSION_HEX >= ... */
@@ -67,23 +67,26 @@ typedef long json_int_t;
#endif
#define json_typeof(json) ((json)->type)
#define json_is_object(json) (json && json_typeof(json) == JSON_OBJECT)
#define json_is_array(json) (json && json_typeof(json) == JSON_ARRAY)
#define json_is_string(json) (json && json_typeof(json) == JSON_STRING)
#define json_is_integer(json) (json && json_typeof(json) == JSON_INTEGER)
#define json_is_real(json) (json && json_typeof(json) == JSON_REAL)
#define json_is_object(json) ((json) && json_typeof(json) == JSON_OBJECT)
#define json_is_array(json) ((json) && json_typeof(json) == JSON_ARRAY)
#define json_is_string(json) ((json) && json_typeof(json) == JSON_STRING)
#define json_is_integer(json) ((json) && json_typeof(json) == JSON_INTEGER)
#define json_is_real(json) ((json) && json_typeof(json) == JSON_REAL)
#define json_is_number(json) (json_is_integer(json) || json_is_real(json))
#define json_is_true(json) (json && json_typeof(json) == JSON_TRUE)
#define json_is_false(json) (json && json_typeof(json) == JSON_FALSE)
#define json_is_true(json) ((json) && json_typeof(json) == JSON_TRUE)
#define json_is_false(json) ((json) && json_typeof(json) == JSON_FALSE)
#define json_boolean_value json_is_true
#define json_is_boolean(json) (json_is_true(json) || json_is_false(json))
#define json_is_null(json) (json && json_typeof(json) == JSON_NULL)
#define json_is_null(json) ((json) && json_typeof(json) == JSON_NULL)
/* construction, destruction, reference counting */
json_t *json_object(void);
json_t *json_array(void);
json_t *json_string(const char *value);
json_t *json_stringn(const char *value, size_t len);
json_t *json_string_nocheck(const char *value);
json_t *json_stringn_nocheck(const char *value, size_t len);
json_t *json_integer(json_int_t value);
json_t *json_real(double value);
json_t *json_true(void);
@@ -126,6 +129,7 @@ typedef struct {
/* getters, setters, manipulation */
void json_object_seed(size_t seed);
size_t json_object_size(const json_t *object);
json_t *json_object_get(const json_t *object, const char *key);
int json_object_set_new(json_t *object, const char *key, json_t *value);
@@ -199,16 +203,18 @@ int json_array_insert(json_t *array, size_t ind, json_t *value)
}
const char *json_string_value(const json_t *string);
size_t json_string_length(const json_t *string);
json_int_t json_integer_value(const json_t *integer);
double json_real_value(const json_t *real);
double json_number_value(const json_t *json);
int json_string_set(json_t *string, const char *value);
int json_string_setn(json_t *string, const char *value, size_t len);
int json_string_set_nocheck(json_t *string, const char *value);
int json_string_setn_nocheck(json_t *string, const char *value, size_t len);
int json_integer_set(json_t *integer, json_int_t value);
int json_real_set(json_t *real, double value);
/* pack, unpack */
json_t *json_pack(const char *fmt, ...);
@@ -240,6 +246,7 @@ json_t *json_deep_copy(const json_t *value);
#define JSON_DISABLE_EOF_CHECK 0x2
#define JSON_DECODE_ANY 0x4
#define JSON_DECODE_INT_AS_REAL 0x8
#define JSON_ALLOW_NUL 0x10
typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data);
@@ -252,13 +259,15 @@ json_t *json_load_callback(json_load_callback_t callback, void *data, size_t fla
/* encoding */
#define JSON_INDENT(n) (n & 0x1F)
#define JSON_COMPACT 0x20
#define JSON_ENSURE_ASCII 0x40
#define JSON_SORT_KEYS 0x80
#define JSON_PRESERVE_ORDER 0x100
#define JSON_ENCODE_ANY 0x200
#define JSON_ESCAPE_SLASH 0x400
#define JSON_MAX_INDENT 0x1F
#define JSON_INDENT(n) ((n) & JSON_MAX_INDENT)
#define JSON_COMPACT 0x20
#define JSON_ENSURE_ASCII 0x40
#define JSON_SORT_KEYS 0x80
#define JSON_PRESERVE_ORDER 0x100
#define JSON_ENCODE_ANY 0x200
#define JSON_ESCAPE_SLASH 0x400
#define JSON_REAL_PRECISION(n) (((n) & 0x1F) << 11)
typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data);
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2010-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
+9 -3
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -49,6 +49,7 @@ typedef struct {
typedef struct {
json_t json;
char *value;
size_t length;
} json_string_t;
typedef struct {
@@ -64,9 +65,13 @@ typedef struct {
#define json_to_object(json_) container_of(json_, json_object_t, json)
#define json_to_array(json_) container_of(json_, json_array_t, json)
#define json_to_string(json_) container_of(json_, json_string_t, json)
#define json_to_real(json_) container_of(json_, json_real_t, json)
#define json_to_real(json_) container_of(json_, json_real_t, json)
#define json_to_integer(json_) container_of(json_, json_integer_t, json)
/* Create a string by taking ownership of an existing buffer */
json_t *jsonp_stringn_nocheck_own(const char *value, size_t len);
/* Error message formatting */
void jsonp_error_init(json_error_t *error, const char *source);
void jsonp_error_set_source(json_error_t *error, const char *source);
void jsonp_error_set(json_error_t *error, int line, int column,
@@ -76,13 +81,14 @@ void jsonp_error_vset(json_error_t *error, int line, int column,
/* Locale independent string<->double conversions */
int jsonp_strtod(strbuffer_t *strbuffer, double *out);
int jsonp_dtostr(char *buffer, size_t size, double value);
int jsonp_dtostr(char *buffer, size_t size, double value, int prec);
/* Wrappers for custom memory functions */
void* jsonp_malloc(size_t size);
void jsonp_free(void *ptr);
char *jsonp_strndup(const char *str, size_t length);
char *jsonp_strdup(const char *str);
char *jsonp_strndup(const char *str, size_t len);
/* Windows compatibility */
#ifdef _WIN32
+67 -39
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -63,7 +63,10 @@ typedef struct {
strbuffer_t saved_text;
int token;
union {
char *string;
struct {
char *val;
size_t len;
} string;
json_int_t integer;
double real;
} value;
@@ -279,6 +282,13 @@ static void lex_save_cached(lex_t *lex)
}
}
static void lex_free_string(lex_t *lex)
{
jsonp_free(lex->value.string.val);
lex->value.string.val = NULL;
lex->value.string.len = 0;
}
/* assumes that str points to 'u' plus at least 4 valid hex digits */
static int32_t decode_unicode_escape(const char *str)
{
@@ -297,7 +307,7 @@ static int32_t decode_unicode_escape(const char *str)
else if(l_isupper(c))
value += c - 'A' + 10;
else
assert(0);
return -1;
}
return value;
@@ -310,7 +320,7 @@ static void lex_scan_string(lex_t *lex, json_error_t *error)
char *t;
int i;
lex->value.string = NULL;
lex->value.string.val = NULL;
lex->token = TOKEN_INVALID;
c = lex_get_save(lex, error);
@@ -365,14 +375,12 @@ static void lex_scan_string(lex_t *lex, json_error_t *error)
- two \uXXXX escapes (length 12) forming an UTF-16 surrogate pair
are converted to 4 bytes
*/
lex->value.string = jsonp_malloc(lex->saved_text.length + 1);
if(!lex->value.string) {
t = jsonp_malloc(lex->saved_text.length + 1);
if(!t) {
/* this is not very nice, since TOKEN_INVALID is returned */
goto out;
}
/* the target */
t = lex->value.string;
lex->value.string.val = t;
/* + 1 to skip the " */
p = strbuffer_value(&lex->saved_text) + 1;
@@ -381,17 +389,24 @@ static void lex_scan_string(lex_t *lex, json_error_t *error)
if(*p == '\\') {
p++;
if(*p == 'u') {
char buffer[4];
int length;
size_t length;
int32_t value;
value = decode_unicode_escape(p);
if(value < 0) {
error_set(error, lex, "invalid Unicode escape '%.6s'", p - 1);
goto out;
}
p += 5;
if(0xD800 <= value && value <= 0xDBFF) {
/* surrogate pair */
if(*p == '\\' && *(p + 1) == 'u') {
int32_t value2 = decode_unicode_escape(++p);
if(value2 < 0) {
error_set(error, lex, "invalid Unicode escape '%.6s'", p - 1);
goto out;
}
p += 5;
if(0xDC00 <= value2 && value2 <= 0xDFFF) {
@@ -420,16 +435,9 @@ static void lex_scan_string(lex_t *lex, json_error_t *error)
error_set(error, lex, "invalid Unicode '\\u%04X'", value);
goto out;
}
else if(value == 0)
{
error_set(error, lex, "\\u0000 is not allowed");
goto out;
}
if(utf8_encode(value, buffer, &length))
if(utf8_encode(value, t, &length))
assert(0);
memcpy(t, buffer, length);
t += length;
}
else {
@@ -451,11 +459,12 @@ static void lex_scan_string(lex_t *lex, json_error_t *error)
*(t++) = *(p++);
}
*t = '\0';
lex->value.string.len = t - lex->value.string.val;
lex->token = TOKEN_STRING;
return;
out:
jsonp_free(lex->value.string);
lex_free_string(lex);
}
#ifndef JANSSON_USING_CMAKE /* disabled if using cmake */
@@ -474,7 +483,7 @@ static int lex_scan_number(lex_t *lex, int c, json_error_t *error)
{
const char *saved_text;
char *end;
double value;
double doubleval;
lex->token = TOKEN_INVALID;
@@ -499,16 +508,16 @@ static int lex_scan_number(lex_t *lex, int c, json_error_t *error)
}
if(c != '.' && c != 'E' && c != 'e') {
json_int_t value;
json_int_t intval;
lex_unget_unsave(lex, c);
saved_text = strbuffer_value(&lex->saved_text);
errno = 0;
value = json_strtoint(saved_text, &end, 10);
intval = json_strtoint(saved_text, &end, 10);
if(errno == ERANGE) {
if(value < 0)
if(intval < 0)
error_set(error, lex, "too big negative integer");
else
error_set(error, lex, "too big integer");
@@ -518,7 +527,7 @@ static int lex_scan_number(lex_t *lex, int c, json_error_t *error)
assert(end == saved_text + lex->saved_text.length);
lex->token = TOKEN_INTEGER;
lex->value.integer = value;
lex->value.integer = intval;
return 0;
}
@@ -552,13 +561,13 @@ static int lex_scan_number(lex_t *lex, int c, json_error_t *error)
lex_unget_unsave(lex, c);
if(jsonp_strtod(&lex->saved_text, &value)) {
if(jsonp_strtod(&lex->saved_text, &doubleval)) {
error_set(error, lex, "real number overflow");
goto out;
}
lex->token = TOKEN_REAL;
lex->value.real = value;
lex->value.real = doubleval;
return 0;
out:
@@ -571,10 +580,8 @@ static int lex_scan(lex_t *lex, json_error_t *error)
strbuffer_clear(&lex->saved_text);
if(lex->token == TOKEN_STRING) {
jsonp_free(lex->value.string);
lex->value.string = NULL;
}
if(lex->token == TOKEN_STRING)
lex_free_string(lex);
c = lex_get(lex, error);
while(c == ' ' || c == '\t' || c == '\n' || c == '\r')
@@ -635,13 +642,14 @@ out:
return lex->token;
}
static char *lex_steal_string(lex_t *lex)
static char *lex_steal_string(lex_t *lex, size_t *out_len)
{
char *result = NULL;
if(lex->token == TOKEN_STRING)
{
result = lex->value.string;
lex->value.string = NULL;
if(lex->token == TOKEN_STRING) {
result = lex->value.string.val;
*out_len = lex->value.string.len;
lex->value.string.val = NULL;
lex->value.string.len = 0;
}
return result;
}
@@ -659,7 +667,7 @@ static int lex_init(lex_t *lex, get_func get, void *data)
static void lex_close(lex_t *lex)
{
if(lex->token == TOKEN_STRING)
jsonp_free(lex->value.string);
lex_free_string(lex);
strbuffer_close(&lex->saved_text);
}
@@ -680,6 +688,7 @@ static json_t *parse_object(lex_t *lex, size_t flags, json_error_t *error)
while(1) {
char *key;
size_t len;
json_t *value;
if(lex->token != TOKEN_STRING) {
@@ -687,9 +696,14 @@ static json_t *parse_object(lex_t *lex, size_t flags, json_error_t *error)
goto error;
}
key = lex_steal_string(lex);
key = lex_steal_string(lex, &len);
if(!key)
return NULL;
if (memchr(key, '\0', len)) {
jsonp_free(key);
error_set(error, lex, "NUL byte in object key not supported");
goto error;
}
if(flags & JSON_REJECT_DUPLICATES) {
if(json_object_get(object, key)) {
@@ -788,7 +802,21 @@ static json_t *parse_value(lex_t *lex, size_t flags, json_error_t *error)
switch(lex->token) {
case TOKEN_STRING: {
json = json_string_nocheck(lex->value.string);
const char *value = lex->value.string.val;
size_t len = lex->value.string.len;
if(!(flags & JSON_ALLOW_NUL)) {
if(memchr(value, '\0', len)) {
error_set(error, lex, "\\u0000 is not allowed without JSON_ALLOW_NUL");
return NULL;
}
}
json = jsonp_stringn_nocheck_own(value, len);
if(json) {
lex->value.string.val = NULL;
lex->value.string.len = 0;
}
break;
}
+381
View File
@@ -0,0 +1,381 @@
/*
-------------------------------------------------------------------------------
lookup3.c, by Bob Jenkins, May 2006, Public Domain.
These are functions for producing 32-bit hashes for hash table lookup.
hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
are externally useful functions. Routines to test the hash are included
if SELF_TEST is defined. You can use this free for any purpose. It's in
the public domain. It has no warranty.
You probably want to use hashlittle(). hashlittle() and hashbig()
hash byte arrays. hashlittle() is is faster than hashbig() on
little-endian machines. Intel and AMD are little-endian machines.
On second thought, you probably want hashlittle2(), which is identical to
hashlittle() except it returns two 32-bit hashes for the price of one.
You could implement hashbig2() if you wanted but I haven't bothered here.
If you want to find a hash of, say, exactly 7 integers, do
a = i1; b = i2; c = i3;
mix(a,b,c);
a += i4; b += i5; c += i6;
mix(a,b,c);
a += i7;
final(a,b,c);
then use c as the hash value. If you have a variable length array of
4-byte integers to hash, use hashword(). If you have a byte array (like
a character string), use hashlittle(). If you have several byte arrays, or
a mix of things, see the comments above hashlittle().
Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
then mix those integers. This is fast (you can do a lot more thorough
mixing with 12*3 instructions on 3 integers than you can with 3 instructions
on 1 byte), but shoehorning those bytes into integers efficiently is messy.
-------------------------------------------------------------------------------
*/
#include <stdlib.h>
#ifdef HAVE_CONFIG_H
#include <jansson_private_config.h>
#endif
#ifdef HAVE_STDINT_H
#include <stdint.h> /* defines uint32_t etc */
#endif
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h> /* attempt to define endianness */
#endif
#ifdef HAVE_ENDIAN_H
# include <endian.h> /* attempt to define endianness */
#endif
/*
* My best guess at if you are big-endian or little-endian. This may
* need adjustment.
*/
#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
__BYTE_ORDER == __LITTLE_ENDIAN) || \
(defined(i386) || defined(__i386__) || defined(__i486__) || \
defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL))
# define HASH_LITTLE_ENDIAN 1
# define HASH_BIG_ENDIAN 0
#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
__BYTE_ORDER == __BIG_ENDIAN) || \
(defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel))
# define HASH_LITTLE_ENDIAN 0
# define HASH_BIG_ENDIAN 1
#else
# define HASH_LITTLE_ENDIAN 0
# define HASH_BIG_ENDIAN 0
#endif
#define hashsize(n) ((uint32_t)1<<(n))
#define hashmask(n) (hashsize(n)-1)
#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
/*
-------------------------------------------------------------------------------
mix -- mix 3 32-bit values reversibly.
This is reversible, so any information in (a,b,c) before mix() is
still in (a,b,c) after mix().
If four pairs of (a,b,c) inputs are run through mix(), or through
mix() in reverse, there are at least 32 bits of the output that
are sometimes the same for one pair and different for another pair.
This was tested for:
* pairs that differed by one bit, by two bits, in any combination
of top bits of (a,b,c), or in any combination of bottom bits of
(a,b,c).
* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
is commonly produced by subtraction) look like a single 1-bit
difference.
* the base values were pseudorandom, all zero but one bit set, or
all zero plus a counter that starts at zero.
Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
satisfy this are
4 6 8 16 19 4
9 15 3 18 27 15
14 9 3 7 17 3
Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
for "differ" defined as + with a one-bit base and a two-bit delta. I
used http://burtleburtle.net/bob/hash/avalanche.html to choose
the operations, constants, and arrangements of the variables.
This does not achieve avalanche. There are input bits of (a,b,c)
that fail to affect some output bits of (a,b,c), especially of a. The
most thoroughly mixed value is c, but it doesn't really even achieve
avalanche in c.
This allows some parallelism. Read-after-writes are good at doubling
the number of bits affected, so the goal of mixing pulls in the opposite
direction as the goal of parallelism. I did what I could. Rotates
seem to cost as much as shifts on every machine I could lay my hands
on, and rotates are much kinder to the top and bottom bits, so I used
rotates.
-------------------------------------------------------------------------------
*/
#define mix(a,b,c) \
{ \
a -= c; a ^= rot(c, 4); c += b; \
b -= a; b ^= rot(a, 6); a += c; \
c -= b; c ^= rot(b, 8); b += a; \
a -= c; a ^= rot(c,16); c += b; \
b -= a; b ^= rot(a,19); a += c; \
c -= b; c ^= rot(b, 4); b += a; \
}
/*
-------------------------------------------------------------------------------
final -- final mixing of 3 32-bit values (a,b,c) into c
Pairs of (a,b,c) values differing in only a few bits will usually
produce values of c that look totally different. This was tested for
* pairs that differed by one bit, by two bits, in any combination
of top bits of (a,b,c), or in any combination of bottom bits of
(a,b,c).
* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
is commonly produced by subtraction) look like a single 1-bit
difference.
* the base values were pseudorandom, all zero but one bit set, or
all zero plus a counter that starts at zero.
These constants passed:
14 11 25 16 4 14 24
12 14 25 16 4 14 24
and these came close:
4 8 15 26 3 22 24
10 8 15 26 3 22 24
11 8 15 26 3 22 24
-------------------------------------------------------------------------------
*/
#define final(a,b,c) \
{ \
c ^= b; c -= rot(b,14); \
a ^= c; a -= rot(c,11); \
b ^= a; b -= rot(a,25); \
c ^= b; c -= rot(b,16); \
a ^= c; a -= rot(c,4); \
b ^= a; b -= rot(a,14); \
c ^= b; c -= rot(b,24); \
}
/*
-------------------------------------------------------------------------------
hashlittle() -- hash a variable-length key into a 32-bit value
k : the key (the unaligned variable-length array of bytes)
length : the length of the key, counting by bytes
initval : can be any 4-byte value
Returns a 32-bit value. Every bit of the key affects every bit of
the return value. Two keys differing by one or two bits will have
totally different hash values.
The best hash table sizes are powers of 2. There is no need to do
mod a prime (mod is sooo slow!). If you need less than 32 bits,
use a bitmask. For example, if you need only 10 bits, do
h = (h & hashmask(10));
In which case, the hash table should have hashsize(10) elements.
If you are hashing n strings (uint8_t **)k, do it like this:
for (i=0, h=0; i<n; ++i) h = hashlittle( k[i], len[i], h);
By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this
code any way you wish, private, educational, or commercial. It's free.
Use for hash table lookup, or anything where one collision in 2^^32 is
acceptable. Do NOT use for cryptographic purposes.
-------------------------------------------------------------------------------
*/
static uint32_t hashlittle(const void *key, size_t length, uint32_t initval)
{
uint32_t a,b,c; /* internal state */
union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
/* Set up the internal state */
a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
u.ptr = key;
if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */
/* Detect Valgrind or AddressSanitizer */
#ifdef VALGRIND
# define NO_MASKING_TRICK 1
#else
# if defined(__has_feature) /* Clang */
# if __has_feature(address_sanitizer) /* is ASAN enabled? */
# define NO_MASKING_TRICK 1
# endif
# else
# if defined(__SANITIZE_ADDRESS__) /* GCC 4.8.x, is ASAN enabled? */
# define NO_MASKING_TRICK 1
# endif
# endif
#endif
#ifdef NO_MASKING_TRICK
const uint8_t *k8;
#endif
/*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
b += k[1];
c += k[2];
mix(a,b,c);
length -= 12;
k += 3;
}
/*----------------------------- handle the last (probably partial) block */
/*
* "k[2]&0xffffff" actually reads beyond the end of the string, but
* then masks off the part it's not allowed to read. Because the
* string is aligned, the masked-off tail is in the same word as the
* rest of the string. Every machine with memory protection I've seen
* does it on word boundaries, so is OK with this. But VALGRIND will
* still catch it and complain. The masking trick does make the hash
* noticably faster for short strings (like English words).
*/
#ifndef NO_MASKING_TRICK
switch(length)
{
case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
case 8 : b+=k[1]; a+=k[0]; break;
case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
case 6 : b+=k[1]&0xffff; a+=k[0]; break;
case 5 : b+=k[1]&0xff; a+=k[0]; break;
case 4 : a+=k[0]; break;
case 3 : a+=k[0]&0xffffff; break;
case 2 : a+=k[0]&0xffff; break;
case 1 : a+=k[0]&0xff; break;
case 0 : return c; /* zero length strings require no mixing */
}
#else /* make valgrind happy */
k8 = (const uint8_t *)k;
switch(length)
{
case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
case 10: c+=((uint32_t)k8[9])<<8; /* fall through */
case 9 : c+=k8[8]; /* fall through */
case 8 : b+=k[1]; a+=k[0]; break;
case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */
case 5 : b+=k8[4]; /* fall through */
case 4 : a+=k[0]; break;
case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */
case 1 : a+=k8[0]; break;
case 0 : return c;
}
#endif /* !valgrind */
} else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */
const uint8_t *k8;
/*--------------- all but last block: aligned reads and different mixing */
while (length > 12)
{
a += k[0] + (((uint32_t)k[1])<<16);
b += k[2] + (((uint32_t)k[3])<<16);
c += k[4] + (((uint32_t)k[5])<<16);
mix(a,b,c);
length -= 12;
k += 6;
}
/*----------------------------- handle the last (probably partial) block */
k8 = (const uint8_t *)k;
switch(length)
{
case 12: c+=k[4]+(((uint32_t)k[5])<<16);
b+=k[2]+(((uint32_t)k[3])<<16);
a+=k[0]+(((uint32_t)k[1])<<16);
break;
case 11: c+=((uint32_t)k8[10])<<16; /* fall through */
case 10: c+=k[4];
b+=k[2]+(((uint32_t)k[3])<<16);
a+=k[0]+(((uint32_t)k[1])<<16);
break;
case 9 : c+=k8[8]; /* fall through */
case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
a+=k[0]+(((uint32_t)k[1])<<16);
break;
case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */
case 6 : b+=k[2];
a+=k[0]+(((uint32_t)k[1])<<16);
break;
case 5 : b+=k8[4]; /* fall through */
case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
break;
case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */
case 2 : a+=k[0];
break;
case 1 : a+=k8[0];
break;
case 0 : return c; /* zero length requires no mixing */
}
} else { /* need to read the key one byte at a time */
const uint8_t *k = (const uint8_t *)key;
/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
while (length > 12)
{
a += k[0];
a += ((uint32_t)k[1])<<8;
a += ((uint32_t)k[2])<<16;
a += ((uint32_t)k[3])<<24;
b += k[4];
b += ((uint32_t)k[5])<<8;
b += ((uint32_t)k[6])<<16;
b += ((uint32_t)k[7])<<24;
c += k[8];
c += ((uint32_t)k[9])<<8;
c += ((uint32_t)k[10])<<16;
c += ((uint32_t)k[11])<<24;
mix(a,b,c);
length -= 12;
k += 12;
}
/*-------------------------------- last block: affect all 32 bits of (c) */
switch(length) /* all the case statements fall through */
{
case 12: c+=((uint32_t)k[11])<<24;
case 11: c+=((uint32_t)k[10])<<16;
case 10: c+=((uint32_t)k[9])<<8;
case 9 : c+=k[8];
case 8 : b+=((uint32_t)k[7])<<24;
case 7 : b+=((uint32_t)k[6])<<16;
case 6 : b+=((uint32_t)k[5])<<8;
case 5 : b+=k[4];
case 4 : a+=((uint32_t)k[3])<<24;
case 3 : a+=((uint32_t)k[2])<<16;
case 2 : a+=((uint32_t)k[1])<<8;
case 1 : a+=k[0];
break;
case 0 : return c;
}
}
final(a,b,c);
return c;
}
+12 -7
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2011-2012 Basile Starynkevitch <basile@starynkevitch.net>
*
* Jansson is free software; you can redistribute it and/or modify it
@@ -12,6 +12,10 @@
#include "jansson.h"
#include "jansson_private.h"
/* C89 allows these to be macros */
#undef malloc
#undef free
/* memory function pointers */
static json_malloc_t do_malloc = malloc;
static json_free_t do_free = free;
@@ -34,18 +38,19 @@ void jsonp_free(void *ptr)
char *jsonp_strdup(const char *str)
{
char *new_str;
size_t len;
return jsonp_strndup(str, strlen(str));
}
len = strlen(str);
if(len == (size_t)-1)
return NULL;
char *jsonp_strndup(const char *str, size_t len)
{
char *new_str;
new_str = jsonp_malloc(len + 1);
if(!new_str)
return NULL;
memcpy(new_str, str, len + 1);
memcpy(new_str, str, len);
new_str[len] = '\0';
return new_str;
}
+72 -29
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2011-2012 Graeme Smecher <graeme.smecher@mail.mcgill.ca>
*
* Jansson is free software; you can redistribute it and/or modify
@@ -125,19 +125,18 @@ static json_t *pack(scanner_t *s, va_list *ap);
/* ours will be set to 1 if jsonp_free() must be called for the result
afterwards */
static char *read_string(scanner_t *s, va_list *ap,
const char *purpose, int *ours)
const char *purpose, size_t *out_len, int *ours)
{
char t;
strbuffer_t strbuff;
const char *str;
size_t length;
char *result;
next_token(s);
t = token(s);
prev_token(s);
if(t != '#' && t != '+') {
if(t != '#' && t != '%' && t != '+') {
/* Optimize the simple case */
str = va_arg(*ap, const char *);
@@ -146,11 +145,14 @@ static char *read_string(scanner_t *s, va_list *ap,
return NULL;
}
if(!utf8_check_string(str, -1)) {
length = strlen(str);
if(!utf8_check_string(str, length)) {
set_error(s, "<args>", "Invalid UTF-8 %s", purpose);
return NULL;
}
*out_len = length;
*ours = 0;
return (char *)str;
}
@@ -170,6 +172,9 @@ static char *read_string(scanner_t *s, va_list *ap,
if(token(s) == '#') {
length = va_arg(*ap, int);
}
else if(token(s) == '%') {
length = va_arg(*ap, size_t);
}
else {
prev_token(s);
length = strlen(str);
@@ -188,15 +193,15 @@ static char *read_string(scanner_t *s, va_list *ap,
}
}
result = strbuffer_steal_value(&strbuff);
if(!utf8_check_string(result, -1)) {
if(!utf8_check_string(strbuff.value, strbuff.length)) {
set_error(s, "<args>", "Invalid UTF-8 %s", purpose);
strbuffer_close(&strbuff);
return NULL;
}
*out_len = strbuff.length;
*ours = 1;
return result;
return strbuffer_steal_value(&strbuff);
}
static json_t *pack_object(scanner_t *s, va_list *ap)
@@ -206,6 +211,7 @@ static json_t *pack_object(scanner_t *s, va_list *ap)
while(token(s) != '}') {
char *key;
size_t len;
int ours;
json_t *value;
@@ -219,15 +225,19 @@ static json_t *pack_object(scanner_t *s, va_list *ap)
goto error;
}
key = read_string(s, ap, "object key", &ours);
key = read_string(s, ap, "object key", &len, &ours);
if(!key)
goto error;
next_token(s);
value = pack(s, ap);
if(!value)
if(!value) {
if(ours)
jsonp_free(key);
goto error;
}
if(json_object_set_new_nocheck(object, key, value)) {
if(ours)
@@ -290,20 +300,20 @@ static json_t *pack(scanner_t *s, va_list *ap)
case '[':
return pack_array(s, ap);
case 's': { /* string */
case 's': /* string */
{
char *str;
size_t len;
int ours;
json_t *result;
str = read_string(s, ap, "string", &ours);
str = read_string(s, ap, "string", &len, &ours);
if(!str)
return NULL;
result = json_string_nocheck(str);
if(ours)
jsonp_free(str);
return result;
if (ours)
return jsonp_stringn_nocheck_own(str, len);
else
return json_stringn_nocheck(str, len);
}
case 'n': /* null */
@@ -340,6 +350,7 @@ static int unpack_object(scanner_t *s, json_t *root, va_list *ap)
{
int ret = -1;
int strict = 0;
int gotopt = 0;
/* Use a set (emulated by a hashtable) to check that all object
keys are accessed. Checking that the correct number of keys
@@ -396,7 +407,7 @@ static int unpack_object(scanner_t *s, json_t *root, va_list *ap)
next_token(s);
if(token(s) == '?') {
opt = 1;
opt = gotopt = 1;
next_token(s);
}
@@ -422,10 +433,26 @@ static int unpack_object(scanner_t *s, json_t *root, va_list *ap)
if(strict == 0 && (s->flags & JSON_STRICT))
strict = 1;
if(root && strict == 1 && key_set.size != json_object_size(root)) {
long diff = (long)json_object_size(root) - (long)key_set.size;
set_error(s, "<validation>", "%li object item(s) left unpacked", diff);
goto out;
if(root && strict == 1) {
/* We need to check that all non optional items have been parsed */
const char *key;
json_t *value;
long unpacked = 0;
if (gotopt) {
/* We have optional keys, we need to iter on each key */
json_object_foreach(root, key, value) {
if(!hashtable_get(&key_set, key)) {
unpacked++;
}
}
} else {
/* No optional keys, we can just compare the number of items */
unpacked = (long)json_object_size(root) - (long)key_set.size;
}
if (unpacked) {
set_error(s, "<validation>", "%li object item(s) left unpacked", unpacked);
goto out;
}
}
ret = 0;
@@ -523,16 +550,32 @@ static int unpack(scanner_t *s, json_t *root, va_list *ap)
}
if(!(s->flags & JSON_VALIDATE_ONLY)) {
const char **target;
const char **str_target;
size_t *len_target = NULL;
target = va_arg(*ap, const char **);
if(!target) {
str_target = va_arg(*ap, const char **);
if(!str_target) {
set_error(s, "<args>", "NULL string argument");
return -1;
}
if(root)
*target = json_string_value(root);
next_token(s);
if(token(s) == '%') {
len_target = va_arg(*ap, size_t *);
if(!len_target) {
set_error(s, "<args>", "NULL string length argument");
return -1;
}
}
else
prev_token(s);
if(root) {
*str_target = json_string_value(root);
if(len_target)
*len_target = json_string_length(root);
}
}
return 0;
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
+9 -5
View File
@@ -2,12 +2,13 @@
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "jansson_private.h"
#include "strbuffer.h"
/* need config.h to get the correct snprintf */
/* need jansson_private_config.h to get the correct snprintf */
#ifdef HAVE_CONFIG_H
#include <config.h>
#include <jansson_private_config.h>
#endif
#if JSON_HAVE_LOCALECONV
@@ -69,7 +70,7 @@ int jsonp_strtod(strbuffer_t *strbuffer, double *out)
value = strtod(strbuffer->value, &end);
assert(end == strbuffer->value + strbuffer->length);
if(errno == ERANGE && value != 0) {
if((value == HUGE_VAL || value == -HUGE_VAL) && errno == ERANGE) {
/* Overflow */
return -1;
}
@@ -78,13 +79,16 @@ int jsonp_strtod(strbuffer_t *strbuffer, double *out)
return 0;
}
int jsonp_dtostr(char *buffer, size_t size, double value)
int jsonp_dtostr(char *buffer, size_t size, double value, int precision)
{
int ret;
char *start, *end;
size_t length;
ret = snprintf(buffer, size, "%.17g", value);
if (precision == 0)
precision = 17;
ret = snprintf(buffer, size, "%.*g", precision, value);
if(ret < 0)
return -1;
+13 -16
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -8,7 +8,7 @@
#include <string.h>
#include "utf.h"
int utf8_encode(int32_t codepoint, char *buffer, int *size)
int utf8_encode(int32_t codepoint, char *buffer, size_t *size)
{
if(codepoint < 0)
return -1;
@@ -44,7 +44,7 @@ int utf8_encode(int32_t codepoint, char *buffer, int *size)
return 0;
}
int utf8_check_first(char byte)
size_t utf8_check_first(char byte)
{
unsigned char u = (unsigned char)byte;
@@ -80,9 +80,9 @@ int utf8_check_first(char byte)
}
}
int utf8_check_full(const char *buffer, int size, int32_t *codepoint)
size_t utf8_check_full(const char *buffer, size_t size, int32_t *codepoint)
{
int i;
size_t i;
int32_t value = 0;
unsigned char u = (unsigned char)buffer[0];
@@ -136,12 +136,12 @@ int utf8_check_full(const char *buffer, int size, int32_t *codepoint)
return 1;
}
const char *utf8_iterate(const char *buffer, int32_t *codepoint)
const char *utf8_iterate(const char *buffer, size_t bufsize, int32_t *codepoint)
{
int count;
size_t count;
int32_t value;
if(!*buffer)
if(!bufsize)
return buffer;
count = utf8_check_first(buffer[0]);
@@ -152,7 +152,7 @@ const char *utf8_iterate(const char *buffer, int32_t *codepoint)
value = (unsigned char)buffer[0];
else
{
if(!utf8_check_full(buffer, count, &value))
if(count > bufsize || !utf8_check_full(buffer, count, &value))
return NULL;
}
@@ -162,21 +162,18 @@ const char *utf8_iterate(const char *buffer, int32_t *codepoint)
return buffer + count;
}
int utf8_check_string(const char *string, int length)
int utf8_check_string(const char *string, size_t length)
{
int i;
if(length == -1)
length = strlen(string);
size_t i;
for(i = 0; i < length; i++)
{
int count = utf8_check_first(string[i]);
size_t count = utf8_check_first(string[i]);
if(count == 0)
return 0;
else if(count > 1)
{
if(i + count > length)
if(count > length - i)
return 0;
if(!utf8_check_full(&string[i], count, NULL))
+11 -23
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -9,31 +9,19 @@
#define UTF_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#include <jansson_private_config.h>
#endif
#ifdef HAVE_INTTYPES_H
/* inttypes.h includes stdint.h in a standard environment, so there's
no need to include stdint.h separately. If inttypes.h doesn't define
int32_t, it's defined in config.h. */
#include <inttypes.h>
#endif /* HAVE_INTTYPES_H */
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
#else /* !HAVE_CONFIG_H */
#ifdef _WIN32
typedef int int32_t;
#else /* !_WIN32 */
/* Assume a standard environment */
#include <inttypes.h>
#endif /* _WIN32 */
int utf8_encode(int32_t codepoint, char *buffer, size_t *size);
#endif /* HAVE_CONFIG_H */
size_t utf8_check_first(char byte);
size_t utf8_check_full(const char *buffer, size_t size, int32_t *codepoint);
const char *utf8_iterate(const char *buffer, size_t size, int32_t *codepoint);
int utf8_encode(int codepoint, char *buffer, int *size);
int utf8_check_first(char byte);
int utf8_check_full(const char *buffer, int size, int32_t *codepoint);
const char *utf8_iterate(const char *buffer, int32_t *codepoint);
int utf8_check_string(const char *string, int length);
int utf8_check_string(const char *string, size_t length);
#endif
+111 -20
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
*
* Jansson is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
@@ -9,11 +9,19 @@
#define _GNU_SOURCE
#endif
#ifdef HAVE_CONFIG_H
#include <jansson_private_config.h>
#endif
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
#include "jansson.h"
#include "hashtable.h"
#include "jansson_private.h"
@@ -21,8 +29,10 @@
/* Work around nonstandard isnan() and isinf() implementations */
#ifndef isnan
#ifndef __sun
static JSON_INLINE int isnan(double x) { return x != x; }
#endif
#endif
#ifndef isinf
static JSON_INLINE int isinf(double x) { return !isnan(x) && isnan(x - x); }
#endif
@@ -36,11 +46,19 @@ static JSON_INLINE void json_init(json_t *json, json_type type)
/*** object ***/
extern volatile uint32_t hashtable_seed;
json_t *json_object(void)
{
json_object_t *object = jsonp_malloc(sizeof(json_object_t));
if(!object)
return NULL;
if (!hashtable_seed) {
/* Autoseed */
json_object_seed(0);
}
json_init(&object->json, JSON_OBJECT);
if(hashtable_init(&object->hashtable))
@@ -76,7 +94,7 @@ json_t *json_object_get(const json_t *json, const char *key)
{
json_object_t *object;
if(!json_is_object(json))
if(!key || !json_is_object(json))
return NULL;
object = json_to_object(json);
@@ -108,7 +126,7 @@ int json_object_set_new_nocheck(json_t *json, const char *key, json_t *value)
int json_object_set_new(json_t *json, const char *key, json_t *value)
{
if(!key || !utf8_check_string(key, -1))
if(!key || !utf8_check_string(key, strlen(key)))
{
json_decref(value);
return -1;
@@ -121,7 +139,7 @@ int json_object_del(json_t *json, const char *key)
{
json_object_t *object;
if(!json_is_object(json))
if(!key || !json_is_object(json))
return -1;
object = json_to_object(json);
@@ -620,33 +638,68 @@ static json_t *json_array_deep_copy(const json_t *array)
/*** string ***/
json_t *json_string_nocheck(const char *value)
static json_t *string_create(const char *value, size_t len, int own)
{
char *v;
json_string_t *string;
if(!value)
return NULL;
string = jsonp_malloc(sizeof(json_string_t));
if(!string)
return NULL;
json_init(&string->json, JSON_STRING);
if(own)
v = (char *)value;
else {
v = jsonp_strndup(value, len);
if(!v)
return NULL;
}
string->value = jsonp_strdup(value);
if(!string->value) {
jsonp_free(string);
string = jsonp_malloc(sizeof(json_string_t));
if(!string) {
if(!own)
jsonp_free(v);
return NULL;
}
json_init(&string->json, JSON_STRING);
string->value = v;
string->length = len;
return &string->json;
}
json_t *json_string(const char *value)
json_t *json_string_nocheck(const char *value)
{
if(!value || !utf8_check_string(value, -1))
if(!value)
return NULL;
return json_string_nocheck(value);
return string_create(value, strlen(value), 0);
}
json_t *json_stringn_nocheck(const char *value, size_t len)
{
return string_create(value, len, 0);
}
/* this is private; "steal" is not a public API concept */
json_t *jsonp_stringn_nocheck_own(const char *value, size_t len)
{
return string_create(value, len, 1);
}
json_t *json_string(const char *value)
{
if(!value)
return NULL;
return json_stringn(value, strlen(value));
}
json_t *json_stringn(const char *value, size_t len)
{
if(!value || !utf8_check_string(value, len))
return NULL;
return json_stringn_nocheck(value, len);
}
const char *json_string_value(const json_t *json)
@@ -657,7 +710,23 @@ const char *json_string_value(const json_t *json)
return json_to_string(json)->value;
}
size_t json_string_length(const json_t *json)
{
if(!json_is_string(json))
return 0;
return json_to_string(json)->length;
}
int json_string_set_nocheck(json_t *json, const char *value)
{
if(!value)
return -1;
return json_string_setn_nocheck(json, value, strlen(value));
}
int json_string_setn_nocheck(json_t *json, const char *value, size_t len)
{
char *dup;
json_string_t *string;
@@ -665,23 +734,32 @@ int json_string_set_nocheck(json_t *json, const char *value)
if(!json_is_string(json) || !value)
return -1;
dup = jsonp_strdup(value);
dup = jsonp_strndup(value, len);
if(!dup)
return -1;
string = json_to_string(json);
jsonp_free(string->value);
string->value = dup;
string->length = len;
return 0;
}
int json_string_set(json_t *json, const char *value)
{
if(!value || !utf8_check_string(value, -1))
if(!value)
return -1;
return json_string_set_nocheck(json, value);
return json_string_setn(json, value, strlen(value));
}
int json_string_setn(json_t *json, const char *value, size_t len)
{
if(!value || !utf8_check_string(value, len))
return -1;
return json_string_setn_nocheck(json, value, len);
}
static void json_delete_string(json_string_t *string)
@@ -692,12 +770,25 @@ static void json_delete_string(json_string_t *string)
static int json_string_equal(json_t *string1, json_t *string2)
{
return strcmp(json_string_value(string1), json_string_value(string2)) == 0;
json_string_t *s1, *s2;
if(!json_is_string(string1) || !json_is_string(string2))
return 0;
s1 = json_to_string(string1);
s2 = json_to_string(string2);
return s1->length == s2->length && !memcmp(s1->value, s2->value, s1->length);
}
static json_t *json_string_copy(const json_t *string)
{
return json_string_nocheck(json_string_value(string));
json_string_t *s;
if(!json_is_string(string))
return NULL;
s = json_to_string(string);
return json_stringn_nocheck(s->value, s->length);
}
+2 -2
View File
@@ -83,7 +83,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -197,7 +197,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="wsock32.lib winmm.lib msacm32.lib vfw32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
+2 -2
View File
@@ -84,7 +84,7 @@
LinkLibraryDependencies="true"
UseLibraryDependencyInputs="false"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fs2_open_3_7_2-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -199,7 +199,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fs2_open_3_7_2.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
+10 -10
View File
@@ -29,8 +29,8 @@
<Tool
Name="VCCustomBuildTool"
Description="Copying build..."
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(FS2PATH)/wxfred2_open_3_7_2-debug.exe&quot;&#x0D;&#x0A;copy &quot;$(ProjectDir)..\..\code\wxfred2\wxfred.xrc&quot; &quot;$(FS2PATH)\wxfred.xrc&quot;&#x0D;&#x0A;"
Outputs="$(FS2PATH)/wxfred2_open_3_7_2-debug.exe;$(FS2PATH)\wxfred.xrc"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(FS2PATH)/wxfred2_open_3_7_1-debug.exe&quot;&#x0D;&#x0A;copy &quot;$(ProjectDir)..\..\code\wxfred2\wxfred.xrc&quot; &quot;$(FS2PATH)\wxfred.xrc&quot;&#x0D;&#x0A;"
Outputs="$(FS2PATH)/wxfred2_open_3_7_1-debug.exe;$(FS2PATH)\wxfred.xrc"
/>
<Tool
Name="VCXMLDataGeneratorTool"
@@ -80,15 +80,15 @@
<Tool
Name="VCLinkerTool"
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"
OutputFile="Debug/wxfred2_open_3_7_2-debug.exe"
OutputFile="Debug/wxfred2_open_3_7_1-debug.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(WXWIN)/lib,$(WXWIN)/lib/vc_lib"
IgnoreDefaultLibraryNames="libcd.lib,libcid.lib"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/wxfred2_open_3_7_2-debug.pdb"
ProgramDatabaseFile=".\Debug/wxfred2_open_3_7_1-debug.pdb"
GenerateMapFile="true"
MapFileName=".\Debug\Profile\wxfred2/wxfred2_open_3_7_2-debug.map"
MapFileName=".\Debug\Profile\wxfred2/wxfred2_open_3_7_1-debug.map"
SubSystem="2"
TargetMachine="1"
/>
@@ -134,8 +134,8 @@
<Tool
Name="VCCustomBuildTool"
Description="Copying build..."
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(FS2PATH)\wxfred2_open_3_7_2.exe&quot;&#x0D;&#x0A;copy &quot;$(ProjectDir)..\..\code\wxfred2\wxfred.xrc&quot; &quot;$(FS2PATH)\wxfred.xrc&quot;&#x0D;&#x0A;"
Outputs="$(FS2PATH)\wxfred2_open_3_7_2.exe;$(FS2PATH)\wxfred.xrc"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(FS2PATH)\wxfred2_open_3_7_1.exe&quot;&#x0D;&#x0A;copy &quot;$(ProjectDir)..\..\code\wxfred2\wxfred.xrc&quot; &quot;$(FS2PATH)\wxfred.xrc&quot;&#x0D;&#x0A;"
Outputs="$(FS2PATH)\wxfred2_open_3_7_1.exe;$(FS2PATH)\wxfred.xrc"
/>
<Tool
Name="VCXMLDataGeneratorTool"
@@ -185,15 +185,15 @@
<Tool
Name="VCLinkerTool"
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"
OutputFile="Release/wxfred2_open_3_7_2.exe"
OutputFile="Release/wxfred2_open_3_7_1.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(WXWIN)/lib,$(WXWIN)/lib/vc_lib"
IgnoreDefaultLibraryNames="libc.lib,libci.lib"
GenerateDebugInformation="false"
ProgramDatabaseFile=".\Release/wxfred2_open_3_7_2.pdb"
ProgramDatabaseFile=".\Release/wxfred2_open_3_7_1.pdb"
GenerateMapFile="false"
MapFileName=".\Release\Profile\wxfred2/wxfred2_open_3_7_2.map"
MapFileName=".\Release\Profile\wxfred2/wxfred2_open_3_7_1.map"
SubSystem="2"
TargetMachine="1"
/>
+12 -12
View File
@@ -53,7 +53,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -84,7 +84,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2_NO-SSE-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1_NO-SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -160,7 +160,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -193,7 +193,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2_SSE-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1_SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -269,7 +269,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -302,7 +302,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -385,7 +385,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
RuntimeLibrary="0"
BufferSecurityCheck="false"
@@ -416,7 +416,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="wsock32.lib winmm.lib msacm32.lib vfw32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2_NO-SSE.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1_NO-SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -499,7 +499,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
RuntimeLibrary="0"
BufferSecurityCheck="false"
@@ -531,7 +531,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="wsock32.lib winmm.lib msacm32.lib vfw32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2_SSE.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1_SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -614,7 +614,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;FRED;WINVER=0x410;_WIN32_WINNT=0x500;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
RuntimeLibrary="0"
BufferSecurityCheck="false"
@@ -646,7 +646,7 @@
Name="VCLinkerTool"
AdditionalOptions="/FORCE:MULTIPLE"
AdditionalDependencies="wsock32.lib winmm.lib msacm32.lib vfw32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fred2_open_3_7_2.exe"
OutputFile="$(OutDir)\fred2_open_3_7_1.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
+18 -18
View File
@@ -52,7 +52,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -75,7 +75,7 @@
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_VC08;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;"
PreprocessorDefinitions="_DEBUG;_VC08;"
Culture="1033"
/>
<Tool
@@ -87,7 +87,7 @@
UseLibraryDependencyInputs="false"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib ole32.lib advapi32.lib gdi32.lib user32.lib"
ShowProgress="0"
OutputFile="$(OutDir)\fs2_open_3_7_2_NO-SSE-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1_NO-SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -164,7 +164,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -188,7 +188,7 @@
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_VC08;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;"
PreprocessorDefinitions="_DEBUG;_VC08;"
Culture="1033"
/>
<Tool
@@ -200,7 +200,7 @@
UseLibraryDependencyInputs="false"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib ole32.lib advapi32.lib gdi32.lib user32.lib"
ShowProgress="0"
OutputFile="$(OutDir)\fs2_open_3_7_2_SSE-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1_SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -277,7 +277,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -301,7 +301,7 @@
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_VC08;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;_SSE2;"
PreprocessorDefinitions="_DEBUG;_VC08;_SSE2;"
Culture="1033"
/>
<Tool
@@ -313,7 +313,7 @@
UseLibraryDependencyInputs="false"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib ole32.lib advapi32.lib gdi32.lib user32.lib"
ShowProgress="0"
OutputFile="$(OutDir)\fs2_open_3_7_2-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -397,7 +397,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
RuntimeLibrary="0"
BufferSecurityCheck="false"
@@ -419,7 +419,7 @@
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_VC08;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;_VC08;"
Culture="1033"
/>
<Tool
@@ -428,7 +428,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fs2_open_3_7_2_NO-SSE.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1_NO-SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -514,7 +514,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
RuntimeLibrary="0"
BufferSecurityCheck="false"
@@ -537,7 +537,7 @@
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_VC08;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;_VC08;"
Culture="1033"
/>
<Tool
@@ -546,7 +546,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fs2_open_3_7_2_SSE.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1_SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -632,7 +632,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
RuntimeLibrary="0"
BufferSecurityCheck="false"
@@ -655,7 +655,7 @@
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_VC08;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;FS2_VOICER;_SSE2;"
PreprocessorDefinitions="NDEBUG;_VC08;_SSE2;"
Culture="1033"
/>
<Tool
@@ -664,7 +664,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib"
OutputFile="$(OutDir)\fs2_open_3_7_2.exe"
OutputFile="$(OutDir)\fs2_open_3_7_1.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
+6 -6
View File
@@ -42,7 +42,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -123,7 +123,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -206,7 +206,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -296,7 +296,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -382,7 +382,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -469,7 +469,7 @@
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;FS2_SPEECH;FS2_VOICER;"
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_1_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_1_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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_1_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_1_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_2-debug.exe" </Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\wxfred2_open_3_7_1-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_2.exe"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)/wxfred2_open_3_7_1.exe"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_2.exe;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_1.exe;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
+8 -8
View File
@@ -171,14 +171,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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_2_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_1_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_1_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+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'">fs2_open_3_7_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_2_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_1_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_1_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_1_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+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_2-debug.exe"
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_1-debug.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_2-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_1-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_2.exe"
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_1.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_2.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_1.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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_2_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_1_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_1_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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_2_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_1_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_1_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_1_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+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_2-debug.exe"
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_1-debug.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_2-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_1-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_2.exe"
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_1.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_2.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_1.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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_2_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_1_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_1_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_2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_2_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_2_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_2_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_2_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_2_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_2_AVX</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_1-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_1_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_1_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_1_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_1</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_1_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_1_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_1_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+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_2-debug.exe"
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_1-debug.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_2-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_1-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_2.exe"
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_1.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_2.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_1.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
+8 -8
View File
@@ -54,14 +54,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 wsock32.lib winmm.lib msacm32.lib vfw32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"Release/fred2_open_3_7_2.exe" /libpath:"Release" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES /FORCE:MULTIPLE
# ADD LINK32 wsock32.lib winmm.lib msacm32.lib vfw32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"Release/fred2_open_3_7_1.exe" /libpath:"Release" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES /FORCE:MULTIPLE
# SUBTRACT LINK32 /map
# Begin Custom Build - Copying build...
InputPath=.\Release\fred2_open_3_7_2.exe
InputPath=.\Release\fred2_open_3_7_1.exe
SOURCE="$(InputPath)"
"$(FS2PATH)/fred2_open_3_7_2.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fred2_open_3_7_2.exe"
"$(FS2PATH)/fred2_open_3_7_1.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fred2_open_3_7_1.exe"
# End Custom Build
@@ -89,14 +89,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /map /debug /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmt.lib" /out:"Debug/fred2_open_3_7_2-debug.exe" /pdbtype:sept /libpath:"Debug" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES /FORCE:MULTIPLE
# ADD LINK32 Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /map /debug /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmt.lib" /out:"Debug/fred2_open_3_7_1-debug.exe" /pdbtype:sept /libpath:"Debug" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES /FORCE:MULTIPLE
# SUBTRACT LINK32 /pdb:none
# Begin Custom Build - Copying build...
InputPath=.\Debug\fred2_open_3_7_2-debug.exe
InputPath=.\Debug\fred2_open_3_7_1-debug.exe
SOURCE="$(InputPath)"
"$(FS2PATH)/fred2_open_3_7_2-debug.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fred2_open_3_7_2-debug.exe"
"$(FS2PATH)/fred2_open_3_7_1-debug.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fred2_open_3_7_1-debug.exe"
# End Custom Build
+8 -8
View File
@@ -54,14 +54,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo /o"Release\Profile\Freespace2.bsc" "Release\Profile\*.sbr"
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"Release/fs2_open_3_7_2.exe" /libpath:"Release" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES
# ADD LINK32 Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"Release/fs2_open_3_7_1.exe" /libpath:"Release" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES
# SUBTRACT LINK32 /map /debug
# Begin Custom Build - Copying build...
InputPath=.\Release\fs2_open_3_7_2.exe
InputPath=.\Release\fs2_open_3_7_1.exe
SOURCE="$(InputPath)"
"$(FS2PATH)/fs2_open_3_7_2.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fs2_open_3_7_2.exe"
"$(FS2PATH)/fs2_open_3_7_1.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fs2_open_3_7_1.exe"
# End Custom Build
@@ -89,14 +89,14 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo /o"Debug\Profile\Freespace2.bsc" "Debug\Profile\*.sbr"
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /map /debug /debugtype:both /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmt.lib" /out:"Debug\fs2_open_3_7_2-debug.exe" /libpath:"Debug" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES
# ADD LINK32 Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib openal32.lib ogg_static.lib vorbis_static.lib vorbisfile_static.lib theora_static.lib /nologo /subsystem:windows /map /debug /debugtype:both /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libcmt.lib" /out:"Debug\fs2_open_3_7_1-debug.exe" /libpath:"Debug" /libpath:"../../STLport-5.2.1/lib" /libpath:"../../oggvorbis/lib" /libpath:"../../openal/libs/win32" /libpath:"../../openal/libs/win64" /MAPINFO:EXPORTS /MAPINFO:LINES
# SUBTRACT LINK32 /pdb:none /incremental:no
# Begin Custom Build - Copying build...
InputPath=.\Debug\fs2_open_3_7_2-debug.exe
InputPath=.\Debug\fs2_open_3_7_1-debug.exe
SOURCE="$(InputPath)"
"$(FS2PATH)/fs2_open_3_7_2-debug.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fs2_open_3_7_2-debug.exe"
"$(FS2PATH)/fs2_open_3_7_1-debug.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
copy /y $(InputPath) "$(FS2PATH)/fs2_open_3_7_1-debug.exe"
# End Custom Build
+8 -8
View File
@@ -54,18 +54,18 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo /o"Release/Profile/wxFRED2.bsc" "Release\Profile\*.sbr"
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 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 /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"Release/wxfred2_open_3_7_2.exe" /libpath:"../../STLport-5.2.1/lib" /libpath:"$(WXWIN)/lib" /libpath:"$(WXWIN)/lib/vc_lib"
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 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 /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"Release/wxfred2_open_3_7_1.exe" /libpath:"../../STLport-5.2.1/lib" /libpath:"$(WXWIN)/lib" /libpath:"$(WXWIN)/lib/vc_lib"
# SUBTRACT LINK32 /map /debug /nodefaultlib
# Begin Custom Build - Copying build...
ProjDir=.
InputPath=.\Release\wxfred2_open_3_7_2.exe
InputPath=.\Release\wxfred2_open_3_7_1.exe
SOURCE="$(InputPath)"
BuildCmds= \
copy $(InputPath) "$(FS2PATH)\wxfred2_open_3_7_2.exe" \
copy $(InputPath) "$(FS2PATH)\wxfred2_open_3_7_1.exe" \
copy "$(ProjDir)\..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc" \
"$(FS2PATH)\wxfred2_open_3_7_2.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
"$(FS2PATH)\wxfred2_open_3_7_1.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
"$(FS2PATH)\wxfred.xrc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
@@ -96,18 +96,18 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo /o"Debug/Profile/wxFRED2.bsc" "Debug\Profile\*.sbr"
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 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 /nologo /subsystem:windows /map /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"Debug/wxfred2_open_3_7_2-debug.exe" /pdbtype:sept /libpath:"../../STLport-5.2.1/lib" /libpath:"$(WXWIN)/lib" /libpath:"$(WXWIN)/lib/vc_lib"
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 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 /nologo /subsystem:windows /map /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"Debug/wxfred2_open_3_7_1-debug.exe" /pdbtype:sept /libpath:"../../STLport-5.2.1/lib" /libpath:"$(WXWIN)/lib" /libpath:"$(WXWIN)/lib/vc_lib"
# SUBTRACT LINK32 /nodefaultlib
# Begin Custom Build - Copying build...
ProjDir=.
InputPath=.\Debug\wxfred2_open_3_7_2-debug.exe
InputPath=.\Debug\wxfred2_open_3_7_1-debug.exe
SOURCE="$(InputPath)"
BuildCmds= \
copy $(InputPath) "$(FS2PATH)/wxfred2_open_3_7_2-debug.exe" \
copy $(InputPath) "$(FS2PATH)/wxfred2_open_3_7_1-debug.exe" \
copy "$(ProjDir)\..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc" \
"$(FS2PATH)/wxfred2_open_3_7_2-debug.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
"$(FS2PATH)/wxfred2_open_3_7_1-debug.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
$(BuildCmds)
"$(FS2PATH)\wxfred.xrc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
Binary file not shown.
@@ -4534,7 +4534,7 @@
i386,
);
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 3.7.2;
CURRENT_PROJECT_VERSION = 3.7.1;
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
@@ -4567,7 +4567,7 @@
i386,
);
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 3.7.2;
CURRENT_PROJECT_VERSION = 3.7.1;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
Binary file not shown.
@@ -614,6 +614,8 @@
918A074C1804B4A600983AE1 /* libjansson.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 918A07221804AFAA00983AE1 /* libjansson.a */; };
918A074D1804B4A600983AE1 /* libmongoose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 918A07141804AF0F00983AE1 /* libmongoose.a */; };
9193B29817EDFEB7003CC0BA /* profiling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9193B29717EDFEB7003CC0BA /* profiling.cpp */; };
91F4EE3A1AB32675006EF158 /* hashtable_seed.c in Sources */ = {isa = PBXBuildFile; fileRef = 91F4EE381AB32675006EF158 /* hashtable_seed.c */; };
91F4EE3B1AB32675006EF158 /* lookup3.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F4EE391AB32675006EF158 /* lookup3.h */; };
F007DDF612F4F44600D2F6C1 /* jconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = F007DDB512F4F44600D2F6C1 /* jconfig.h */; };
F007DDF712F4F44600D2F6C1 /* jdct.h in Headers */ = {isa = PBXBuildFile; fileRef = F007DDB612F4F44600D2F6C1 /* jdct.h */; };
F007DDF912F4F44600D2F6C1 /* jerror.h in Headers */ = {isa = PBXBuildFile; fileRef = F007DDB812F4F44600D2F6C1 /* jerror.h */; };
@@ -1556,6 +1558,8 @@
918A07361804B01800983AE1 /* utf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utf.h; sourceTree = "<group>"; };
918A07371804B01800983AE1 /* value.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = value.c; sourceTree = "<group>"; };
9193B29717EDFEB7003CC0BA /* profiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profiling.cpp; sourceTree = "<group>"; };
91F4EE381AB32675006EF158 /* hashtable_seed.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashtable_seed.c; sourceTree = "<group>"; };
91F4EE391AB32675006EF158 /* lookup3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lookup3.h; sourceTree = "<group>"; };
B2F67ED704C74A3F00A80002 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
B2F67F1E04C773E400A80002 /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = /System/Library/Frameworks/GLUT.framework; sourceTree = "<absolute>"; };
F007DDB512F4F44600D2F6C1 /* jconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jconfig.h; sourceTree = "<group>"; };
@@ -3116,6 +3120,8 @@
918A07261804B01800983AE1 /* jansson */ = {
isa = PBXGroup;
children = (
91F4EE381AB32675006EF158 /* hashtable_seed.c */,
91F4EE391AB32675006EF158 /* lookup3.h */,
918A07271804B01800983AE1 /* dump.c */,
918A07281804B01800983AE1 /* error.c */,
918A07291804B01800983AE1 /* hashtable.c */,
@@ -3544,6 +3550,7 @@
buildActionMask = 2147483647;
files = (
918A07461804B01800983AE1 /* utf.h in Headers */,
91F4EE3B1AB32675006EF158 /* lookup3.h in Headers */,
918A073B1804B01800983AE1 /* hashtable.h in Headers */,
918A073E1804B01800983AE1 /* jansson_private.h in Headers */,
918A07431804B01800983AE1 /* strbuffer.h in Headers */,
@@ -4219,6 +4226,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
91F4EE3A1AB32675006EF158 /* hashtable_seed.c in Sources */,
918A07451804B01800983AE1 /* utf.c in Sources */,
918A07391804B01800983AE1 /* error.c in Sources */,
918A07441804B01800983AE1 /* strconv.c in Sources */,
@@ -4428,7 +4436,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = "3.7.2";
CURRENT_PROJECT_VERSION = "3.7.1";
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
@@ -4474,7 +4482,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = "3.7.2";
CURRENT_PROJECT_VERSION = "3.7.1";
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
@@ -4587,6 +4595,13 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
EXECUTABLE_PREFIX = lib;
GCC_PREPROCESSOR_DEFINITIONS = (
_DEBUG,
SCP_UNIX,
USE_OPENAL,
APPLE_APP,
HAVE_STDINT_H,
);
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
PRODUCT_NAME = "$(TARGET_NAME)";
};
@@ -4599,6 +4614,13 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
EXECUTABLE_PREFIX = lib;
GCC_PREPROCESSOR_DEFINITIONS = (
NDEBUG,
SCP_UNIX,
USE_OPENAL,
APPLE_APP,
HAVE_STDINT_H,
);
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
PRODUCT_NAME = "$(TARGET_NAME)";
};
@@ -8,7 +8,7 @@
<Option virtualFolders="Freespace2/;" />
<Build>
<Target title="Debug">
<Option output="../Debug/Freespace2/lib/fs2_open_3_7_2_debug" prefix_auto="1" extension_auto="1" />
<Option output="../Debug/Freespace2/lib/fs2_open_3_7_1_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_2" prefix_auto="1" extension_auto="1" />
<Option output="../Release/Freespace2/lib/fs2_open_3_7_1" prefix_auto="1" extension_auto="1" />
<Option object_output="../Release/Freespace2/obj/" />
<Option type="0" />
<Option compiler="gcc" />