Compare commits

..
165 Commits
Author SHA1 Message Date
zookeeper 0c5a72a5d3 Trunk sync r11329, with some cosmetic changes to the EFF subdirs code to conform with recent bmpman changes.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11330 387891d4-d844-0410-90c0-e4c51a9137d3
2015-05-03 19:07:22 +10:00
zookeeper e1591a7be1 Trunk sync r11296.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11297 387891d4-d844-0410-90c0-e4c51a9137d3
2015-04-11 09:12:26 +10:00
zookeeper e64299e533 Added a hud_gauges.tbl flag for controlling whether ETS gauges should disappear when ETS is disabled.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11287 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-23 17:51:38 +10:00
zookeeper fa3506f5a5 Fixed "get-ets-values" to "get-ets-value" in the help string.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11283 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-19 16:40:11 +10:00
zookeeper bd200d631d Trunk sync r11277.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11278 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-08 12:46:17 +10:00
zookeeper 225c5ccd90 Made it possible to name control presets, and made controls config display the current preset's name if there are multiple to choose from.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11277 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-08 12:46:16 +10:00
zookeeper 2958cb7ece Possibly fixed Mantis #2436: Mouse controls ignore the axis binds.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11275 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-07 09:39:20 +10:00
zookeeper affd2a40c6 Added bay arrive/depart speed multipliers to +Path Metadata.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11271 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-04 22:42:57 +10:00
zookeeper 591026084d Added a "Show Destroyed Subsystems" flag to ship lab for viewing -destroyed submodels.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11269 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-03 16:22:45 +10:00
zookeeper acf1f160d9 Fixed +Spread From LOD not working right.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11268 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-03 16:22:45 +10:00
zookeeper 7ec3d3f1ad Added $Collision LOD ship table property, for using a LOD for collision detection.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11267 387891d4-d844-0410-90c0-e4c51a9137d3
2015-03-03 16:22:45 +10:00
zookeeper 6ea9d8d1f0 Typo-fixed and clarified some SEXP argument descriptions.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11259 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-28 19:55:33 +10:00
chief1983 758514af77 Trunk sync r11257.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11258 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-24 18:36:28 +10:00
zookeeper d178d36ad2 Made the firepoint HUD gauge light up only the firepoints which will fire next, if "dynamic primary linking" ship flag or "cycle" weapon flag is used.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11256 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-22 10:30:11 +10:00
zookeeper 4e0cb1f5f5 Trunk sync r11236.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11237 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-03 17:08:52 +10:00
zookeeper 4b06b9730c Avoid loading the anchor ship model multiple times when resolving path masks.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11235 387891d4-d844-0410-90c0-e4c51a9137d3
2015-02-03 17:08:52 +10:00
zookeeper 6858371ebc 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/branches/zookeeper@11232 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-27 18:27:35 +10:00
zookeeper f28082d241 Trunk sync r11230.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11231 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-27 18:27:35 +10:00
chief1983 1c500458fa Trunk sync r11222.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11224 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-24 09:22:26 +10:00
zookeeper 876360c5fb Fixed an off-by-one mistake.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11219 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-18 12:27:54 +10:00
zookeeper 489867c0dd Fixed game_settings.tbl default volume controls not working when creating a new but not first pilot.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11217 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-17 08:34:25 +10:00
zookeeper 32dee2889a Trunk sync r11215.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11216 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-15 09:59:24 +10:00
zookeeper 52c537d7b8 Probably fixed a bug with the next/prev subsystem targeting keys not working if the target only has one subsystem.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11209 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-15 09:59:24 +10:00
zookeeper 90c868b8f5 Trunk sync r11205.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11207 387891d4-d844-0410-90c0-e4c51a9137d3
2015-01-15 09:59:24 +10:00
zookeeper 9b590d6f2c Trunk sync r11199.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11200 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-20 11:54:45 +10:00
zookeeper e69e050412 Avoid running On Frame hooks during all popups, not only the "Quit mission" popup.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11199 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-20 11:54:45 +10:00
zookeeper 880a2cbf26 Trunk sync r11193.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11194 387891d4-d844-0410-90c0-e4c51a9137d3
2014-12-11 18:18:20 +10:00
zookeeper 8b55964a5c Trunk sync r11163.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11164 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-30 13:23:53 +10:00
zookeeper 10b6640afd Trunk sync r11161.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11162 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-29 18:46:59 +10:00
zookeeper ba057dc137 Fix various issues with $Acceleration Time.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11100 387891d4-d844-0410-90c0-e4c51a9137d3
2014-10-03 18:18:39 +10:00
chief1983 eaafbabdaf Trunk sync r11090.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11091 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-29 12:17:57 +10:00
zookeeper 3a3ca4e206 Fixed MAX_SHIP_FLAG_NAMES having the wrong value.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11088 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-27 18:19:07 +10:00
zookeeper 07a7ad3461 Trunk sync r11085.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11086 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-25 19:37:39 +10:00
zookeeper da166f35ba Fixed weapon particle spews not taking launch velocity properly into account if $Acceleration Time is used.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11085 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-25 19:37:28 +10:00
zookeeper f73b142071 Trunk sync r11070.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@11071 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:17 +10:00
zookeeper ce5bd90a7f Fixed compilation issue stemming from trunk r10964.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10994 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:17 +10:00
zookeeper 1f7203ec0f Reverted (r10896) Default_min_draw_distance back to 1 due to z-order glitches it somehow caused.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10993 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:17 +10:00
zookeeper c6fe99a1cc Added new $Subdir: <bool> .eff file property, allowing the animation frames to be located in a subdirectory.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10992 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:17 +10:00
zookeeper 60d8ded285 Trunk sync r10990.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10991 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:17 +10:00
zookeeper 5f6089df4f Trunk sync r10959.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10960 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:16 +10:00
zookeeper c2ab1f4edb Trunk sync r10933.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10934 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:16 +10:00
zookeeper 3681add767 Fixed a screwup in a trunk sync.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10917 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:16 +10:00
zookeeper 32d1af2c71 Trunk sync r10900.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10905 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:16 +10:00
zookeeper 66fb035b2c Decreased minimum draw distance from 1 to 0.1, and maximum draw distance from 1e10 to 10,000,000.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10896 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:16 +10:00
zookeeper a667d1f635 Trunk sync r10794.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10795 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:16 +10:00
zookeeper 8f3cc556b7 Fixed crash due to an improperly placed if, introduced in r10729.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10790 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper b8b652874c Fixed $Thruster Glow Noise Mult not having effect in the ship lab.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10789 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 87ed7e8d87 Trunk sync r10777.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10778 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 6f262613af Fixed breakage in r10520.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10777 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 245c32285d Fixed breakage introduced in the shield impact effects code.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10776 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 998c530ed0 Bumped the SEXP variable char limit from 32 to 256.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10775 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper ab44765c0d Initialize bay_arrive_speed_mult and bay_depart_speed_mult.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10731 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 707ce957ef Trunk sync r10729.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10730 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 58185d11f4 Don't parse bsp trees of non-colliding submodels.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10729 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 7dfc7bef68 Trunk sync r10629.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10630 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:15 +10:00
zookeeper 835e05c771 Trunk sync r10627.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10628 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:14 +10:00
zookeeper dbde386299 Added a $Model Icon Direction ship table entry for overriding the angle from which ship icons are rendered from.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10612 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:14 +10:00
zookeeper ee6e5aabd7 Added a $Thruster Glow Noise Mult ship table entry for decreasing/increasing the effect of noise applied to the glow radius.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10610 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:14 +10:00
zookeeper 542f20bec1 Added a $Minimum Engine Volume ship table entry for specifying the minimum engine sound volume used when ship is stationary.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10609 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:14 +10:00
zookeeper 8b68aa537b Trunk sync r10605.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10606 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:14 +10:00
zookeeper 6c4ad6aac9 Added a ship flag to disable homing of secondaries fired by the ship.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10605 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:14 +10:00
zookeeper 3e66436edf Fix some stuff apparently missed in trunk syncs.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10560 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:13 +10:00
zookeeper a8fe0f5b61 Trunk sync r10558.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10559 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:13 +10:00
zookeeper eca8d4f2cb Trunk sync r10545.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10546 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:13 +10:00
zookeeper 0a69cc3cf2 Trunk sync r10520.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10521 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:13 +10:00
zookeeper 55f1ed93d2 Reverted r9825 and r9827 for now because they break badly on some corner cases.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10520 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:13 +10:00
zookeeper ed365d1349 Fixed oversight in r10490.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10508 387891d4-d844-0410-90c0-e4c51a9137d3
2014-09-11 19:50:13 +10:00
zookeeper be2f628ac3 Renamed "$Max Shield Recharge Percent" to "$Max Shield Recharge", along with the associated variables.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10490 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:02 +10:00
zookeeper 4d0274b196 Trunk sync r10479.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10480 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:02 +10:00
zookeeper 16e32a0d45 Trunk sync r10471.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10472 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:02 +10:00
zookeeper c85ef1f429 Hopefully 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/branches/zookeeper@10442 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:02 +10:00
zookeeper 312a601ac6 Trunk sync r10431.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10432 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper 70d5c7998c Ported $Max Shield Recharge Percent from Wanderer branch, with some alterations.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10427 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper bec99b27f1 Added ai_profiles.tbl options to force AI ships flying bay paths to gradually accelerate/decelerate instead of flying the path at max speed.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10422 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper d3d8d82e31 Made $Shield Impact Explosion Radius default to the value of $Impact Explosion Radius.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10421 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper f1495861b9 Ported the surface shield impact effects code from Wanderer branch, making it work on any type of shield and renaming the table entries to $Shield Impact Explosion and $Shield Impact Explosion Radius.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10420 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper 987abad6db Made the Shields handle support non-quadrant shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10395 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper 869c021453 Trunk sync r10393.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10394 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper df5746b329 Trunk sync r10314.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10315 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper 8209273f8c Trunk sync r10293.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10294 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:01 +10:00
zookeeper c14a37a826 Added a +Minimum Weapon Span auto spread shield option to control the minimum distance weapons must have traveled before being allowed to hit the shield.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10292 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 308acbe7aa Trunk sync r10290.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10291 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 614d83ff4e Fixed $Velocity Inherit not working right with regards to the AI and lead sights.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10285 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 9de34836d0 Added a ship flag to make detail boxes unaffected by model detail settings.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10284 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 1b224c1361 Fixed $Velocity Inherit and tweaked a few comments.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10283 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 6cccc502a1 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/branches/zookeeper@10282 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 83a191828a Trunk sync r10280.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10281 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 67026a1066 Trunk sync r10270.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10271 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper b24b08d168 Trunk sync r10255.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10256 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 54b21407f9 Trunk sync r10237.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10238 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 3225f25150 Added the "no homing speed ramp" weapon flag as well as the $Acceleration Time and $Velocity Inherit weapon table entries.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10226 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:19:00 +10:00
zookeeper 55aca9510d Fixed screwup in r10122 which was supposed to fix screwups.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10212 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 1374b52ef4 Trunk sync r10205.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10206 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper ecf99de11b Enabled fighterbay door animations to better define which bay path must be used or not used for the animation to trigger using +sub_type. Fixes the (undocumented) current numbering of fighterbay +sub_types to be 1-based instead of 0-based. Turns the SUBTYPE_CHECK macro to a proper function.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10193 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper af5b6a8c66 Made +delay, +reverse_delay and +acceleration in animation code optional and default to 0.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10191 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 356cddb4ea Trunk sync r10188.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10189 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 14380d293e Trunk sync r10168.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10169 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 2ef033dcdd Fixed a merging screw-up which broke the $Action condition.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10148 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 8255871336 Trunk sync r10141.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10142 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 671f73e9c4 Added missing include.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10134 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 0425f704fa Made model shield points tabling and flag names be more consistent.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10133 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper a734cd64cf Ensure shield hit data gets reset immediately also when changing the player's target via Lua.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10126 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:59 +10:00
zookeeper 7645062496 Model point shields fixes suggested by niffiwan.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10123 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper 9a1b674fce Trunk sync 10121; ought to include things that have slipped through in previous sync attempts.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10122 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper 47b7077520 Some model point shield stuff I had forgotten to commit.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10107 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper 0a64aee4a5 Trunk sync r10092.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10093 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper b5447a8c1f Trunk sync r10052.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@10053 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper ecceae93ae Removed the unused Interp_render_sphere_offset variable.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9991 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper 0cfe277247 Made render sphere offsets be relative to the ship instead of the submodel, and implemented a similar $box_offset property for detail boxes.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9990 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper eaa5fd636b Trunk sync r9968.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9969 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper 693cd4f529 Fixed a clang compile error.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9961 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:58 +10:00
zookeeper 7b699aa196 Fixes Mantis 2939: Off-screen direction/distance indicators showing up incorrectly in widescreen mode.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9959 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 1e351eeaf5 Trunk sync r9957.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9958 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper c555ae6dd7 Fix a potential crash by making sure HUD shield data gets initialized as soon as the player targets something.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9956 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 45e81ae0a2 Renamed MAX_SHIELD_SECTIONS to DEFAULT_SHIELD_SECTIONS.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9955 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 3336072f1c Disable shield-related training SEXPs if model shield points are used, because the SEXPs assume default 4-segment shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9954 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper af8a5f6de2 Guard against possible out-of-bounds shield quadrant indexing.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9953 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 2e219e9966 Some more netcode fixes for n-segment shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9952 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 8992977832 Made network code cope with any number of shield segments.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9951 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 134d7d311d Corrected player to viewer in a comment.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9950 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper eeb2cf35c9 Fixed brokenness in previous commit.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9941 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 1e3d2a91dc Made the targeting box render the target relative to player's eyepoint orientation.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9940 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper dfc6435268 Fixed shield quadrant number getting broken when changing from a point shields ship to a one with standard shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9937 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper d5d8ad17f7 Fixed possible crashes related to the eyepoint orientation features.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9936 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper e95554f27a Fixed model point shields not getting updated when changing ship class, and removed the warning about generated shield icons.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9934 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper b8defa5eec Allow shield augmentation controls to be re-mapped for model point shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9933 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:57 +10:00
zookeeper 536e3866ef Fixed some messed up merging.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9932 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper 41872f2648 Trunk sync r9930.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9931 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper 1e26052d19 Enabled HUD icons for point shields to function correctly.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9930 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper 6a41b039fc Fixed -misc maps being dependent on LOD and lighting levels.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9928 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper f4eb09eb21 Enabled more than 4 shield points to be used.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9919 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper 948e778975 Added support for a new shield segment system where the placement and area of each segment depends on model-defined points. Needs some more work.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9860 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper 5060c02d95 Maybe helps in fixing the linking error.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9847 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:56 +10:00
zookeeper cd5a95a88e Removed an unnecessary variable initialization.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9845 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper ccab33c02a Trunk sync r9838.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9839 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper 7c731f03fe Slightly streamlined the code for the $Action hook condition.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9838 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper 922f8e7630 Upped the hook condition length limit from 32 to 128 and moved the limit to its own define.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9837 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper d528508ebf Prevented $On Action hooks from being executed more than once per frame.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9836 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper 8c021f0503 Removed some debug messages that accidentally got in.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9835 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper a463d9a58d Trunk sync r9824.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9828 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:55 +10:00
zookeeper 3daa7f58d4 Fixed the submodel LOD finding code to work even when the a,b,c,... letters are in the middle of the name.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9827 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper d6f3811cf7 Forgot to make r9825 actually do what it was supposed to.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9826 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper 797dadc1d7 Rewrote the submodel LOD finding code to be a lot simpler and to also allow LOD0 submodels without the trailing "a".
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9825 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper 1262cc08c7 Added an option to make pitch and yaw axes be determined by eyepoint orientation.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9823 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper 8b42ed0824 Tiny tweaks to auto spread shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9793 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper f69f70def8 Trunk sync r9791.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9792 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper 5317c13304 Added a table option to allow auto spread shields to be bypassed from up close.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9790 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper 7ca10c9b5e Forgot this from r9728; makes changing eyepoint orientation affect chase view as well.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9738 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:54 +10:00
zookeeper 139f60e0d4 Trunk sync r9735.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9736 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper c71da021ce Added scripting function to enable/disable tips of the day in mainhall.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9734 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper ceea0202b3 strcmpi->strcmp.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9729 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 53b8bd1797 Made eyepoints match the orientation of their parent submodel.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9728 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper faef780270 Added support for multiple control presets, and for renaming individual binds.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9727 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
chief1983 58a04d32f5 Trunk sync r9720.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9726 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 356d18246e Added a Lua function for drawing offscreen indicators. Includes refactoring of some of HudGaugeOffscreen gauge code to separate the position finding and drawing logic.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9725 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 8f5b27873f Exposing ship orders to Lua, patch by Admiral MS: http://www.hard-light.net/forums/index.php?topic=83818.0
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9724 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 6717395b54 Made is-facing able to check for target objects other than ships.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9723 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 32157fbe57 Worked around what seems to be an underlying problem in keypress checking for shift and alt.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9722 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 561e50e860 Fixed issues in r9702.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9721 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 9f22090ce9 Allowed the center reticle to switch to a different frame when autoaim is active, and enabled sounds to be played when gaining/losing autoaim lock-on.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9707 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 858dc8dedd Exposed a ship's autoaim FOV to Lua and allowed $Autoaim FOV to take floats rather than just ints.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9705 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 4a7f059119 Added scripting function for drawing filled and unfilled arcs and made drawCircle able to draw unfilled circles.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9704 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 393a5ae1a2 Added auto spread shields.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9703 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 0cc3dc9c13 Added $On Action Started and $On Action Stopped scripting hooks as well as an $On Action hook condition.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9702 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:53 +10:00
zookeeper 1993f8bed7 Added a Lua function to check whether a ship is warp-capable.
git-svn-id: svn://svn.icculus.org/fs2open/branches/zookeeper@9701 387891d4-d844-0410-90c0-e4c51a9137d3
2014-03-15 14:18:52 +10:00
113 changed files with 6029 additions and 6809 deletions

No files matched your search

+9
View File
@@ -465,6 +465,15 @@ void parse_ai_profiles_tbl(const char *filename)
set_flag(profile, "$strict turret-tagged-only targeting:", AIPF2_STRICT_TURRET_TAGGED_ONLY_TARGETING, AIP_FLAG2);
profile->bay_arrive_speed_mult = 1.0f;
profile->bay_depart_speed_mult = 1.0f;
if (optional_string("$bay arrive start speed multiplier:")) {
stuff_float(&profile->bay_arrive_speed_mult);
}
if (optional_string("$bay depart end speed multiplier:")) {
stuff_float(&profile->bay_depart_speed_mult);
}
// ----------
// compatibility
+5
View File
@@ -151,6 +151,11 @@ typedef struct ai_profile_t {
int ai_path_mode;
// Ships flying bay paths will gradually accelerate/decelerate instead of
// flying the whole path at max speed
float bay_arrive_speed_mult;
float bay_depart_speed_mult;
} ai_profile_t;
+48 -2
View File
@@ -4010,11 +4010,57 @@ float ai_path_1()
dot_to_next = vm_vec_dot_to_point(&nvel_vec, &Pl_objp->pos, &gnvp);
// This path mode respects the "cap-waypoint-speed" SEXP
float max_allowed_speed = 0;
float max_allowed_speed = 0.0f;
if ( aip->waypoint_speed_cap > 0) {
max_allowed_speed = (float) aip->waypoint_speed_cap;
}
// Maybe gradually ramp up/down the speed of a ship flying a fighterbay path
if (aip->mode == AIM_BAY_EMERGE || (aip->mode == AIM_BAY_DEPART && aip->path_cur != aip->path_start)) {
SCP_string pathName(pm->paths[Path_points[aip->path_start].path_num].name);
ship_info *gsip = &Ship_info[gshipp->ship_info_index];
float speed_mult = 1.0f;
if (aip->mode == AIM_BAY_EMERGE) { // Arriving
if (gsip->pathMetadata.find(pathName) != gsip->pathMetadata.end()) {
speed_mult = gsip->pathMetadata[pathName].arrive_speed_mult;
}
if (speed_mult == FLT_MIN) {
speed_mult = The_mission.ai_profile->bay_arrive_speed_mult;
}
} else { // Departing
if (gsip->pathMetadata.find(pathName) != gsip->pathMetadata.end()) {
speed_mult = gsip->pathMetadata[pathName].depart_speed_mult;
}
if (speed_mult == FLT_MIN) {
speed_mult = The_mission.ai_profile->bay_depart_speed_mult;
}
}
if (speed_mult != 1.0f) {
// We use the distance between the first and last point on the path here; it's not accurate
// if the path is not straight, but should be good enough usually; can be changed if necessary.
float total_path_length = vm_vec_dist_quick(&Path_points[aip->path_start].pos, &Path_points[aip->path_start + num_points - 1].pos);
float dist_to_end;
if (aip->mode == AIM_BAY_EMERGE) { // Arriving
dist_to_end = vm_vec_dist_quick(&Pl_objp->pos, &Path_points[aip->path_start].pos);
} else { // Departing
dist_to_end = vm_vec_dist_quick(&Pl_objp->pos, &Path_points[aip->path_start + num_points - 1].pos);
}
// Calculate max speed, but respect the waypoint speed cap if it's lower
float max_bay_speed = sip->max_speed * (speed_mult + (1.0f - speed_mult) * (dist_to_end / total_path_length));
if (max_allowed_speed == 0.0f) {
max_allowed_speed = max_bay_speed;
} else {
max_allowed_speed = MIN(max_allowed_speed, max_bay_speed);
}
}
}
set_accel_for_docking(Pl_objp, aip, dot, dot_to_next, dist_to_next, dist_to_goal, sip, max_allowed_speed);
aip->prev_dot_to_goal = dot;
@@ -7582,7 +7628,7 @@ void update_aspect_lock_information(ai_info *aip, vec3d *vec_to_enemy, float dis
wip = &Weapon_info[swp->secondary_bank_weapons[swp->current_secondary_bank]];
if (num_weapon_types && (wip->wi_flags & WIF_LOCKED_HOMING)) {
if (num_weapon_types && (wip->wi_flags & WIF_LOCKED_HOMING) && !(shipp->flags2 & SF2_NO_SECONDARY_LOCKON)) {
if (dist_to_enemy > 300.0f - MIN(enemy_radius, 100.0f))
aip->ai_flags |= AIF_SEEK_LOCK;
else
+54
View File
@@ -0,0 +1,54 @@
/*
* 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);
}
+78 -81
View File
@@ -1,121 +1,120 @@
/*
* 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.
*
*/
#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.
*
*/
/**
* @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
*/
// 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
#ifndef BMPMAN_INTERNAL
#error The file header "bmpman/bm_internal.h" is protected. Make sure you know what you are doing!
#endif
#include "globalincs/pstypes.h"
#include "bmpman/bmpman.h"
#include "globalincs/pstypes.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
// 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
// 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
// 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)
};
/// Moved from cpp file ///////////////////
// Consider these 'protected' structures and functions that should only be used by special bitmap functions
typedef union bm_extra_info {
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 animation -- number of frames in the animation
int keyframe; // used for animation -- keyframe info
ubyte fps; // used for animation -- frames per second
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
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
bool in_subdir; // Whether frames are in their own subdirectory
} 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; // 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; //!< For user bitmaps, Flags passed to bm_create
} user;
} bm_extra_info;
};
typedef struct bitmap_entry {
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 info
bitmap bm;
bitmap bm; //!< Bitmap info
// Data for animations and user bitmaps
bm_extra_info info;
bm_extra_info info; //!< Data for animations and user bitmaps
#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 );
@@ -126,6 +125,4 @@ 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__
+1848 -1957
View File
File diff suppressed because it is too large. Load diff
+555 -200
View File
@@ -1,288 +1,643 @@
#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
*/
#ifndef _BMPMAN_H
#define _BMPMAN_H
#include "globalincs/pstypes.h"
#include "cfile/cfile.h"
#include "globalincs/pstypes.h"
#ifndef NDEBUG
#define BMPMAN_NDEBUG
#define BMPMAN_NDEBUG //!< Enables BMPMAN debugging code
#endif
#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
/**
* @defgroup BMPMAN_CONSTANTS Macro constants used in/with bmpman.h
*
* @{
*/
/**
* @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
#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
// Flag positions for bitmap.flags
// ***** 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
//compressed texture types
#define BMP_TEX_COMP ( BMP_TEX_DXT1 | BMP_TEX_DXT3 | BMP_TEX_DXT5 )
// 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
//non compressed textures
#define BMP_TEX_NONCOMP ( BMP_TEX_XPARENT | BMP_TEX_OTHER )
// 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
// any texture type
#define BMP_TEX_ANY ( BMP_TEX_COMP | BMP_TEX_NONCOMP )
/**
* @}
*/
#define BMP_FLAG_RENDER_TARGET_STATIC (1<<0)
#define BMP_FLAG_RENDER_TARGET_DYNAMIC (1<<1)
#define BMP_FLAG_CUBEMAP (1<<2)
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)
*/
};
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_texture_ram; //!< how many bytes of textures are used.
extern int Bm_paging; //!< Bool type that indicates if BMPMAN is currently paging.
extern int Bm_paging;
extern const ubyte bm_type_list[]; //!< List of valid bitmap types
extern const char *bm_ext_list[]; //!< List of extensions for those types
extern const int BM_NUM_TYPES; //!< Calculated number of bitmap types
extern const ubyte bm_ani_type_list[]; //!< List of valid bitmap animation types
extern const char *bm_ani_ext_list[]; //!< List of extensions for those types
extern const int BM_ANI_NUM_TYPES; //!< Calculated number of bitmap animation types
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
/**
* @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();
int bm_get_cache_slot( int bitmap_id, int separate_ani_frames );
/**
* 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);
/**
* @brief Gets the next available bitmap slot.
*/
int bm_get_next_handle();
void *bm_malloc(int n, int size);
/**
* @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);
/**
* @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);
// how many bytes of textures are used.
extern int bm_texture_ram;
// 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.
/**
* @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);
/**
* @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
*/
int bm_load(const SCP_string& filename);
// 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
/**
* @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
*/
int bm_load_duplicate(const char *filename);
// 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);
/**
* 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);
// 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);
/**
* @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.
// 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 );
* @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);
// 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 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);
// 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 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);
//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 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);
// 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 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);
// 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);
/**
* @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
//gets the image type
* @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
*/
ubyte bm_get_type(int handle);
// Unlocks a bitmap
extern void bm_unlock( int bitmapnum );
/**
* @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);
//WMC - Returns 0 if invalid, nonzero if valid
extern int bm_is_valid(int handle);
/**
* @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);
// 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 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);
// get filename
extern void bm_get_filename(int bitmapnum, char *filename);
/**
* @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);
// 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 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 get the palette for a bitmap
void bm_get_palette(int n, ubyte *pal, char *name);
/**
* @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();
// 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 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();
// 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
/**
* @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
*/
void bm_get_frame_usage(int *ntotal, int *nnew);
// Reload a different image into an existing bmpman slot
/**
* @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.
*/
int bm_reload(int bitmap_handle, const char* filename);
/*
* Example on using bm_create
*
{
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;
}
}
}
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 );
}
/**
* @brief Stuffs Pathtypes with an additional path leading to a subdir of the same name as the given file (minus file extension)
*/
bool set_temp_subdir_pathtype(const char *filename);
//============================================================================
// Paging stuff
//============================================================================
/**
* @brief Tells bmpman to start keeping track of what bitmaps are used where
*/
void bm_page_in_start();
/**
* @brief Tells bmpman to stop paging (?)
*/
void bm_page_in_stop();
// Paging code in a library should call these functions
// in its page in function.
// 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 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 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 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 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 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);
// unload a texture that was paged in
int bm_page_out( int handle );
/**
* @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);
//
// 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 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);
/**
* @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();
// 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 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);
// get the rgba components of a pixel, any of the parameters can be NULL
/**
* @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()
*/
void bm_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
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 Returns the compression type of the bitmap indexed by handle
*/
int bm_is_compressed(int handle);
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);
/**
* @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_has_alpha_channel(int handle);
/**
* @brief (DEBUG) Prints all loaded bitmaps to an outwindow
*/
void bm_print_bitmaps();
int bm_make_render_target( int width, int height, int flags );
int bm_is_render_target(int bitmap_id);
/**
* @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_set_render_target(int handle, int face = -1);
int bm_load_and_parse_eff(const char *filename, int dir_type, int *nframes, int *nfps, int *key, ubyte *type);
/**
* @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
* @param[out] in_subdir (optional) If given, is set to true if the frames of this .EFF are in a subdir
*
* @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, bool *in_subdir);
#endif
+1
View File
@@ -86,6 +86,7 @@ cf_pathtype Pathtypes[CF_MAX_PATH_TYPES] = {
{ CF_TYPE_INTEL_ANIMS, "data" DIR_SEPARATOR_STR "intelanims", ".pcx .ani .eff .tga .jpg .png .dds", CF_TYPE_DATA },
{ CF_TYPE_SCRIPTS, "data" DIR_SEPARATOR_STR "scripts", ".lua .lc", CF_TYPE_DATA },
{ CF_TYPE_FICTION, "data" DIR_SEPARATOR_STR "fiction", ".txt", CF_TYPE_DATA },
{ CF_TYPE_TEMP_SUBDIR_LOOKUP, "", ".eff", CF_TYPE_DATA },
};
+2 -1
View File
@@ -78,8 +78,9 @@ typedef struct {
#define CF_TYPE_INTEL_ANIMS 34
#define CF_TYPE_SCRIPTS 35
#define CF_TYPE_FICTION 36
#define CF_TYPE_TEMP_SUBDIR_LOOKUP 37
#define CF_MAX_PATH_TYPES 37 // Can be as high as you'd like //DTP; yeah but beware alot of things uses CF_MAX_PATH_TYPES
#define CF_MAX_PATH_TYPES 38 // Can be as high as you'd like //DTP; yeah but beware alot of things uses CF_MAX_PATH_TYPES
// TRUE if type is specified and valid
+1
View File
@@ -901,6 +901,7 @@ int cf_find_file_location( const char *filespec, int pathtype, int max_out, char
case CF_TYPE_MULTI_CACHE:
case CF_TYPE_MISSIONS:
case CF_TYPE_CACHE:
case CF_TYPE_TEMP_SUBDIR_LOOKUP:
cfs_slow_search = 1;
break;
-9
View File
@@ -217,7 +217,6 @@ 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", },
@@ -495,9 +494,6 @@ 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);
@@ -1513,11 +1509,6 @@ 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,6 +155,5 @@ 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
+45 -6
View File
@@ -956,9 +956,9 @@ void control_config_reset_defaults(int presetnum)
// Reset keyboard defaults
for (i=0; i<CCFG_MAX; i++) {
// Note that key_default and joy_default are NOT overwritten here;
// they should retain the values of the first preset because
// for example the key-pressed SEXP works off the defaults of the first preset
// Note that key_default, joy_default and text_default are NOT
// overwritten here; they should retain the values of the first preset
Control_config[i].text = preset[i].text;
Control_config[i].key_id = preset[i].key_default;
Control_config[i].joy_id = preset[i].joy_default;
Control_config[i].tab = preset[i].tab;
@@ -2107,6 +2107,45 @@ void control_config_do_frame(float frametime)
List_buttons[i++].disable();
}
// If multiple controls presets are provided, display which one is in use
if (Control_config_presets.size() > 1) {
SCP_string preset_str;
int matching_preset = -1;
for (i=0; i<(int)Control_config_presets.size(); i++) {
bool this_preset_matches = true;
config_item *this_preset = Control_config_presets[i];
for (int j=0; j<CCFG_MAX; j++) {
if (!Control_config[j].disabled && Control_config[j].key_id != this_preset[j].key_default) {
this_preset_matches = false;
break;
}
}
if (this_preset_matches) {
matching_preset = i;
break;
}
}
if (matching_preset >= 0) {
sprintf(preset_str, "Controls: %s", Control_config_preset_names[matching_preset].c_str());
} else {
sprintf(preset_str, "Controls: custom");
}
gr_get_string_size(&w, NULL, preset_str.c_str());
gr_set_color_fast(&Color_text_normal);
if (gr_screen.res == GR_640) {
gr_string(16, (24 - font_height) / 2, preset_str.c_str(), GR_RESIZE_MENU);
} else {
gr_string(24, (40 - font_height) / 2, preset_str.c_str(), GR_RESIZE_MENU);
}
}
// blit help overlay if active
help_overlay_maybe_blit(Control_config_overlay_id, gr_screen.res);
@@ -2207,11 +2246,11 @@ int check_control_used(int id, int key)
// check what current modifiers are pressed
mask = 0;
if (keyd_pressed[KEY_LSHIFT] || key_down_count(KEY_LSHIFT) || keyd_pressed[KEY_RSHIFT] || key_down_count(KEY_RSHIFT)) {
if (keyd_pressed[KEY_LSHIFT] || keyd_pressed[KEY_RSHIFT]) {
mask |= KEY_SHIFTED;
}
if (keyd_pressed[KEY_LALT] || key_down_count(KEY_LALT) || keyd_pressed[KEY_RALT] || key_down_count(KEY_RALT)) {
if (keyd_pressed[KEY_LALT] || keyd_pressed[KEY_RALT]) {
mask |= KEY_ALTED;
}
@@ -2226,7 +2265,7 @@ int check_control_used(int id, int key)
z &= KEY_MASK;
if (keyd_pressed[z] || key_down_count(z)) {
if (keyd_pressed[z]) {
control_used(id);
return 1;
}
+3 -1
View File
@@ -63,13 +63,14 @@ typedef struct config_item {
short joy_default; //!< default joystick button bound to action
char tab; //!< what tab (category) it belongs in
bool hasXSTR; //!< whether we should translate this with an XSTR
char *text; //!< describes the action in the config screen
char *default_text; //!< default description of the action
char type; //!< manner control should be checked in
short key_id; //!< actual key bound to action
short joy_id; //!< joystick button bound to action
int used; //!< has control been used yet in mission? If so, this is the timestamp
bool disabled; //!< whether this action should be available at all
bool continuous_ongoing;//!< whether this action is a continuous one and is currently ongoing
char *text; //!< overridable description of the action
} config_item;
/*!
@@ -292,6 +293,7 @@ extern int Control_config_overlay_id;
extern config_item Control_config[]; //!< Stores the keyboard configuration
extern SCP_vector<config_item*> Control_config_presets; // tabled control presets; pointers to config_item arrays
extern SCP_vector<SCP_string> Control_config_preset_names; // names for Control_config_presets (identical order of items)
extern char **Scan_code_text;
extern char **Joy_button_text;
+137 -120
View File
@@ -45,153 +45,153 @@ int Invert_axis_defaults[JOY_NUM_AXES] = { 0, 0, 0, 0, 0, 0 };
//XSTR:OFF
config_item Control_config[CCFG_MAX + 1] = {
// targeting a ship
{ KEY_T, -1, TARGET_TAB, true, "Target Next Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_T, -1, TARGET_TAB, true, "Target Previous Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_H, 2, TARGET_TAB, true, "Target Next Closest Hostile Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_H, -1, TARGET_TAB, true, "Target Previous Closest Hostile Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_H, -1, TARGET_TAB, true, "Toggle Auto Targeting", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_F, -1, TARGET_TAB, true, "Target Next Closest Friendly Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_F, -1, TARGET_TAB, true, "Target Previous Closest Friendly Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_Y, 4, TARGET_TAB, true, "Target Ship in Reticle", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_G, -1, TARGET_TAB, true, "Target Target's Nearest Attacker", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_Y, -1, TARGET_TAB, true, "Target Last Ship to Send Transmission", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_T, -1, TARGET_TAB, true, "Turn Off Targeting", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_T, -1, TARGET_TAB, true, "Target Next Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_T, -1, TARGET_TAB, true, "Target Previous Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_H, 2, TARGET_TAB, true, "Target Next Closest Hostile Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_H, -1, TARGET_TAB, true, "Target Previous Closest Hostile Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_H, -1, TARGET_TAB, true, "Toggle Auto Targeting", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_F, -1, TARGET_TAB, true, "Target Next Closest Friendly Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_F, -1, TARGET_TAB, true, "Target Previous Closest Friendly Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_Y, 4, TARGET_TAB, true, "Target Ship in Reticle", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_G, -1, TARGET_TAB, true, "Target Target's Nearest Attacker", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_Y, -1, TARGET_TAB, true, "Target Last Ship to Send Transmission", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_T, -1, TARGET_TAB, true, "Turn Off Targeting", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// targeting a ship's subsystem
{ KEY_V, -1, TARGET_TAB, true, "Target Subsystem in Reticle", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_S, -1, TARGET_TAB, true, "Target Next Subsystem", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_S, -1, TARGET_TAB, true, "Target Previous Subsystem", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_S, -1, TARGET_TAB, true, "Turn Off Targeting of Subsystems", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_V, -1, TARGET_TAB, true, "Target Subsystem in Reticle", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_S, -1, TARGET_TAB, true, "Target Next Subsystem", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_S, -1, TARGET_TAB, true, "Target Previous Subsystem", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_S, -1, TARGET_TAB, true, "Turn Off Targeting of Subsystems", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// matching speed
{ KEY_M, -1, COMPUTER_TAB, true, "Match Target Speed", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_M, -1, COMPUTER_TAB, true, "Toggle Auto Speed Matching", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_M, -1, COMPUTER_TAB, true, "Match Target Speed", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_M, -1, COMPUTER_TAB, true, "Toggle Auto Speed Matching", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// weapons
{ KEY_LCTRL, 0, WEAPON_TAB, true, "Fire Primary Weapon", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_SPACEBAR, 1, WEAPON_TAB, true, "Fire Secondary Weapon", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PERIOD, -1, WEAPON_TAB, true, "Cycle Forward Primary Weapon", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_COMMA, -1, WEAPON_TAB, true, "Cycle Backward Primary Weapon", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_DIVIDE, -1, WEAPON_TAB, true, "Cycle Secondary Weapon Bank", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_DIVIDE, -1, WEAPON_TAB, true, "Cycle Secondary Weapon Firing Rate", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_X, 3, WEAPON_TAB, true, "Launch Countermeasure", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_LCTRL, 0, WEAPON_TAB, true, "Fire Primary Weapon", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_SPACEBAR, 1, WEAPON_TAB, true, "Fire Secondary Weapon", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PERIOD, -1, WEAPON_TAB, true, "Cycle Forward Primary Weapon", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_COMMA, -1, WEAPON_TAB, true, "Cycle Backward Primary Weapon", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_DIVIDE, -1, WEAPON_TAB, true, "Cycle Secondary Weapon Bank", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_DIVIDE, -1, WEAPON_TAB, true, "Cycle Secondary Weapon Firing Rate", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_X, 3, WEAPON_TAB, true, "Launch Countermeasure", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// controls
{ KEY_A, -1, SHIP_TAB, true, "Forward Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_Z, -1, SHIP_TAB, true, "Reverse Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD7, -1, SHIP_TAB, true, "Bank Left", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD9, -1, SHIP_TAB, true, "Bank Right", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD8, -1, SHIP_TAB, true, "Pitch Forward", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD2, -1, SHIP_TAB, true, "Pitch Backward", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD4, -1, SHIP_TAB, true, "Turn Left", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD6, -1, SHIP_TAB, true, "Turn Right", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_A, -1, SHIP_TAB, true, "Forward Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_Z, -1, SHIP_TAB, true, "Reverse Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD7, -1, SHIP_TAB, true, "Bank Left", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD9, -1, SHIP_TAB, true, "Bank Right", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD8, -1, SHIP_TAB, true, "Pitch Forward", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD2, -1, SHIP_TAB, true, "Pitch Backward", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD4, -1, SHIP_TAB, true, "Turn Left", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD6, -1, SHIP_TAB, true, "Turn Right", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
// throttle controls
{ KEY_BACKSP, -1, SHIP_TAB, true, "Set Throttle to Zero", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SLASH, -1, SHIP_TAB, true, "Set Throttle to Max", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_LBRACKET, -1, SHIP_TAB, true, "Set Throttle to One-Third", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_RBRACKET, -1, SHIP_TAB, true, "Set Throttle to Two-Thirds", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_EQUAL, -1, SHIP_TAB, true, "Increase Throttle 5 Percent", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_MINUS, -1, SHIP_TAB, true, "Decrease Throttle 5 Percent", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_BACKSP, -1, SHIP_TAB, true, "Set Throttle to Zero", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SLASH, -1, SHIP_TAB, true, "Set Throttle to Max", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_LBRACKET, -1, SHIP_TAB, true, "Set Throttle to One-Third", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_RBRACKET, -1, SHIP_TAB, true, "Set Throttle to Two-Thirds", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_EQUAL, -1, SHIP_TAB, true, "Increase Throttle 5 Percent", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_MINUS, -1, SHIP_TAB, true, "Decrease Throttle 5 Percent", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// squadmate messaging
{ KEY_SHIFTED | KEY_A, -1, COMPUTER_TAB, true, "Attack My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_Z, -1, COMPUTER_TAB, true, "Disarm My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_D, -1, COMPUTER_TAB, true, "Disable My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_V, -1, COMPUTER_TAB, true, "Attack My Subsystem", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_X, -1, COMPUTER_TAB, true, "Capture My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_E, -1, COMPUTER_TAB, true, "Engage Enemy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_W, -1, COMPUTER_TAB, true, "Form on My Wing", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_I, -1, COMPUTER_TAB, true, "Ignore My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_P, -1, COMPUTER_TAB, true, "Protect My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_C, -1, COMPUTER_TAB, true, "Cover Me", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_J, -1, COMPUTER_TAB, true, "Return to Base", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_R, -1, COMPUTER_TAB, true, "Rearm Me", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_A, -1, COMPUTER_TAB, true, "Attack My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_Z, -1, COMPUTER_TAB, true, "Disarm My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_D, -1, COMPUTER_TAB, true, "Disable My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_V, -1, COMPUTER_TAB, true, "Attack My Subsystem", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_X, -1, COMPUTER_TAB, true, "Capture My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_E, -1, COMPUTER_TAB, true, "Engage Enemy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_W, -1, COMPUTER_TAB, true, "Form on My Wing", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_I, -1, COMPUTER_TAB, true, "Ignore My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_P, -1, COMPUTER_TAB, true, "Protect My Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_C, -1, COMPUTER_TAB, true, "Cover Me", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_J, -1, COMPUTER_TAB, true, "Return to Base", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_R, -1, COMPUTER_TAB, true, "Rearm Me", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_R, 6, TARGET_TAB, true, "Target Closest Attacking Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_R, 6, TARGET_TAB, true, "Target Closest Attacking Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// Views
{ KEY_PADMULTIPLY, -1, COMPUTER_TAB, true, "Chase View", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_PADPERIOD, -1, COMPUTER_TAB, true, "External View", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_PADENTER, -1, COMPUTER_TAB, true, "Toggle External Camera Lock", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_PAD0, -1, COMPUTER_TAB, true, "Free Look View", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false }, // Not in use anymore (Swifty)
{ KEY_PADDIVIDE, -1, COMPUTER_TAB, true, "Current Target View", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_PADPLUS, -1, COMPUTER_TAB, true, "Increase View Distance", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PADMINUS, -1, COMPUTER_TAB, true, "Decrease View Distance", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PAD5, -1, COMPUTER_TAB, true, "Center View", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ -1, 33, COMPUTER_TAB, true, "View Up", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ -1, 32, COMPUTER_TAB, true, "View Rear", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ -1, 34, COMPUTER_TAB, true, "View Left", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ -1, 35, COMPUTER_TAB, true, "View Right", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_PADMULTIPLY, -1, COMPUTER_TAB, true, "Chase View", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_PADPERIOD, -1, COMPUTER_TAB, true, "External View", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_PADENTER, -1, COMPUTER_TAB, true, "Toggle External Camera Lock", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_PAD0, -1, COMPUTER_TAB, true, "Free Look View", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL }, // Not in use anymore (Swifty)
{ KEY_PADDIVIDE, -1, COMPUTER_TAB, true, "Current Target View", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_PADPLUS, -1, COMPUTER_TAB, true, "Increase View Distance", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PADMINUS, -1, COMPUTER_TAB, true, "Decrease View Distance", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_PAD5, -1, COMPUTER_TAB, true, "Center View", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ -1, 33, COMPUTER_TAB, true, "View Up", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ -1, 32, COMPUTER_TAB, true, "View Rear", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ -1, 34, COMPUTER_TAB, true, "View Left", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ -1, 35, COMPUTER_TAB, true, "View Right", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_RAPOSTRO, -1, COMPUTER_TAB, true, "Cycle Radar Range", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_C, -1, COMPUTER_TAB, true, "Communications Menu", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ -1, -1, -1, true, "Show Objectives", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_J, -1, COMPUTER_TAB, true, "Enter Subspace (End Mission)", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_J, -1, TARGET_TAB, true, "Target Target's Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_TAB, 5, SHIP_TAB, true, "Afterburner", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_RAPOSTRO, -1, COMPUTER_TAB, true, "Cycle Radar Range", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_C, -1, COMPUTER_TAB, true, "Communications Menu", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ -1, -1, -1, true, "Show Objectives", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_J, -1, COMPUTER_TAB, true, "Enter Subspace (End Mission)", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_J, -1, TARGET_TAB, true, "Target Target's Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_TAB, 5, SHIP_TAB, true, "Afterburner", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_INSERT, -1, COMPUTER_TAB, true, "Increase Weapon Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_DELETE, -1, COMPUTER_TAB, true, "Decrease Weapon Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_HOME, -1, COMPUTER_TAB, true, "Increase Shield Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_END, -1, COMPUTER_TAB, true, "Decrease Shield Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_PAGEUP, -1, COMPUTER_TAB, true, "Increase Engine Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_PAGEDOWN, -1, COMPUTER_TAB, true, "Decrease Engine Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_D, -1, COMPUTER_TAB, true, "Equalize Energy Settings", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_INSERT, -1, COMPUTER_TAB, true, "Increase Weapon Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_DELETE, -1, COMPUTER_TAB, true, "Decrease Weapon Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_HOME, -1, COMPUTER_TAB, true, "Increase Shield Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_END, -1, COMPUTER_TAB, true, "Decrease Shield Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_PAGEUP, -1, COMPUTER_TAB, true, "Increase Engine Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_PAGEDOWN, -1, COMPUTER_TAB, true, "Decrease Engine Energy", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_D, -1, COMPUTER_TAB, true, "Equalize Energy Settings", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_Q, 7, COMPUTER_TAB, true, "Equalize Shields", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_UP, -1, COMPUTER_TAB, true, "Augment Forward Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_DOWN, -1, COMPUTER_TAB, true, "Augment Rear Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_LEFT, -1, COMPUTER_TAB, true, "Augment Left Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_RIGHT, -1, COMPUTER_TAB, true, "Augment Right Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SCROLLOCK, -1, COMPUTER_TAB, true, "Transfer Energy Laser->Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_SCROLLOCK, -1, COMPUTER_TAB, true, "Transfer Energy Shield->Laser", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_Q, 7, COMPUTER_TAB, true, "Equalize Shields", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_UP, -1, COMPUTER_TAB, true, "Augment Forward Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_DOWN, -1, COMPUTER_TAB, true, "Augment Rear Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_LEFT, -1, COMPUTER_TAB, true, "Augment Left Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_RIGHT, -1, COMPUTER_TAB, true, "Augment Right Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SCROLLOCK, -1, COMPUTER_TAB, true, "Transfer Energy Laser->Shield", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_SCROLLOCK, -1, COMPUTER_TAB, true, "Transfer Energy Shield->Laser", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// { -1, -1, -1, true, "Show Damage Popup Window" },
{ -1, -1, SHIP_TAB, false, "Glide When Pressed", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ -1, -1, SHIP_TAB, false, "Glide When Pressed", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
//Backslash -- this was a convenient place for Glide When Pressed, as Show Damage Popup isn't used
{ -1, -1, SHIP_TAB, true, "Bank When Pressed", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ -1, -1, -1, true, "Show Nav Map", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_E, -1, COMPUTER_TAB, true, "Add or Remove Escort", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_SHIFTED | KEY_E, -1, COMPUTER_TAB, true, "Clear Escort List", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_E, -1, TARGET_TAB, true, "Target Next Escort Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_R, -1, TARGET_TAB, true, "Target Closest Repair Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ -1, -1, SHIP_TAB, true, "Bank When Pressed", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ -1, -1, -1, true, "Show Nav Map", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_E, -1, COMPUTER_TAB, true, "Add or Remove Escort", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_SHIFTED | KEY_E, -1, COMPUTER_TAB, true, "Clear Escort List", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_E, -1, TARGET_TAB, true, "Target Next Escort Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_R, -1, TARGET_TAB, true, "Target Closest Repair Ship", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_U, -1, TARGET_TAB, true, "Target Next Uninspected Cargo", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_U, -1, TARGET_TAB, true, "Target Previous Uninspected Cargo", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_N, -1, TARGET_TAB, true, "Target Newest Ship in Area", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_K, -1, TARGET_TAB, true, "Target Next Live Turret", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_K, -1, TARGET_TAB, true, "Target Previous Live Turret", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_U, -1, TARGET_TAB, true, "Target Next Uninspected Cargo", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_U, -1, TARGET_TAB, true, "Target Previous Uninspected Cargo", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_N, -1, TARGET_TAB, true, "Target Newest Ship in Area", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_K, -1, TARGET_TAB, true, "Target Next Live Turret", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_K, -1, TARGET_TAB, true, "Target Previous Live Turret", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_B, -1, TARGET_TAB, true, "Target Next Hostile Bomb or Bomber", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_B, -1, TARGET_TAB, true, "Target Previous Hostile Bomb or Bomber", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_B, -1, TARGET_TAB, true, "Target Next Hostile Bomb or Bomber", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_B, -1, TARGET_TAB, true, "Target Previous Hostile Bomb or Bomber", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// multiplayer messaging keys
{ KEY_1, -1, COMPUTER_TAB, true, "(Multiplayer) Message All", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_2, -1, COMPUTER_TAB, true, "(Multiplayer) Message Friendly", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_3, -1, COMPUTER_TAB, true, "(Multiplayer) Message Hostile", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_4, -1, COMPUTER_TAB, true, "(Multiplayer) Message Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_X, -1, COMPUTER_TAB, true, "(Multiplayer) Observer Zoom to Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_PERIOD, -1, COMPUTER_TAB, true, "Increase Time Compression", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_COMMA, -1, COMPUTER_TAB, true, "Decrease Time Compression", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_L, -1, COMPUTER_TAB, true, "Toggle High HUD Contrast", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_N, -1, COMPUTER_TAB, true, "(Multiplayer) Toggle Network Info", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_END, -1, COMPUTER_TAB, true, "(Multiplayer) Self Destruct", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_1, -1, COMPUTER_TAB, true, "(Multiplayer) Message All", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_2, -1, COMPUTER_TAB, true, "(Multiplayer) Message Friendly", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_3, -1, COMPUTER_TAB, true, "(Multiplayer) Message Hostile", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_4, -1, COMPUTER_TAB, true, "(Multiplayer) Message Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_X, -1, COMPUTER_TAB, true, "(Multiplayer) Observer Zoom to Target", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_PERIOD, -1, COMPUTER_TAB, true, "Increase Time Compression", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_COMMA, -1, COMPUTER_TAB, true, "Decrease Time Compression", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_L, -1, COMPUTER_TAB, true, "Toggle High HUD Contrast", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_N, -1, COMPUTER_TAB, true, "(Multiplayer) Toggle Network Info", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_END, -1, COMPUTER_TAB, true, "(Multiplayer) Self Destruct", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
// Misc
{ KEY_SHIFTED | KEY_O, -1, COMPUTER_TAB, true, "Toggle HUD", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_3, -1, SHIP_TAB, true, "Right Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_1, -1, SHIP_TAB, true, "Left Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_PADPLUS, -1, SHIP_TAB, true, "Up Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_SHIFTED | KEY_PADENTER, -1, SHIP_TAB, true, "Down Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_SHIFTED | KEY_Q, -1, COMPUTER_TAB, true, "Toggle HUD Wireframe Target View", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ -1, -1, COMPUTER_TAB, false, "Top-Down View", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ -1, -1, COMPUTER_TAB, false, "Target Padlock View", CC_TYPE_TRIGGER, -1, -1, 0, false, false }, // (Swifty) Toggle for VM_TRACK
{ KEY_SHIFTED | KEY_O, -1, COMPUTER_TAB, true, "Toggle HUD", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_3, -1, SHIP_TAB, true, "Right Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_1, -1, SHIP_TAB, true, "Left Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_PADPLUS, -1, SHIP_TAB, true, "Up Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_SHIFTED | KEY_PADENTER, -1, SHIP_TAB, true, "Down Thrust", CC_TYPE_CONTINUOUS, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_SHIFTED | KEY_Q, -1, COMPUTER_TAB, true, "Toggle HUD Wireframe Target View", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ -1, -1, COMPUTER_TAB, false, "Top-Down View", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ -1, -1, COMPUTER_TAB, false, "Target Padlock View", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL }, // (Swifty) Toggle for VM_TRACK
// Auto Navigation Systen
{ KEY_ALTED | KEY_A, -1, COMPUTER_TAB, false, "Toggle Auto Pilot", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_N, -1, COMPUTER_TAB, false, "Cycle Nav Points", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_G, -1, SHIP_TAB, false, "Toggle Gliding", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_O, -1, WEAPON_TAB, false, "Cycle Primary Weapon Firing Rate", CC_TYPE_TRIGGER, -1, -1, 0, false, false },
{ KEY_ALTED | KEY_A, -1, COMPUTER_TAB, false, "Toggle Auto Pilot", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_N, -1, COMPUTER_TAB, false, "Cycle Nav Points", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_ALTED | KEY_G, -1, SHIP_TAB, false, "Toggle Gliding", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ KEY_O, -1, WEAPON_TAB, false, "Cycle Primary Weapon Firing Rate", CC_TYPE_TRIGGER, -1, -1, 0, false, false, NULL },
{ -1, -1, -1, false, "", CC_TYPE_TRIGGER, -1, -1, 0, false, false }
};
@@ -404,6 +404,7 @@ char **Scan_code_text = Scan_code_text_english;
char **Joy_button_text = Joy_button_text_english;
SCP_vector<config_item*> Control_config_presets;
SCP_vector<SCP_string> Control_config_preset_names;
void set_modifier_status()
{
@@ -591,6 +592,9 @@ void control_config_common_init()
for (int i=0; i<CCFG_MAX; i++) {
Control_config[i].disabled = false;
Control_config[i].continuous_ongoing = false;
// init the overridable description with a copy of the default
Control_config[i].text = strdup(Control_config[i].default_text);
}
control_config_common_load_overrides();
@@ -811,6 +815,14 @@ void control_config_common_load_overrides()
std::copy(Control_config, Control_config + CCFG_MAX + 1, cfg_preset);
Control_config_presets.push_back(cfg_preset);
SCP_string preset_name;
if (optional_string("$Name:")) {
stuff_string_line(preset_name);
} else {
preset_name = "<unnamed preset>";
}
Control_config_preset_names.push_back(preset_name);
while (required_string_either("#End","$Bind Name:")) {
const int iBufferLength = 64;
char szTempBuffer[iBufferLength];
@@ -822,7 +834,7 @@ void control_config_common_load_overrides()
for (size_t i = 0; i < cCntrlAryLength; ++i) {
config_item& r_ccConfig = cfg_preset[i];
if (!strcmp(szTempBuffer, r_ccConfig.text)) {
if (!strcmp(szTempBuffer, r_ccConfig.default_text)) {
/**
* short key_default;
* short joy_default;
@@ -833,6 +845,11 @@ void control_config_common_load_overrides()
int iTemp;
if (optional_string("$New Name:")) {
stuff_string(szTempBuffer, F_NAME, iBufferLength);
r_ccConfig.text = strdup(szTempBuffer);
}
if (optional_string("$Key Default:")) {
if (optional_string("NONE")) {
r_ccConfig.key_default = (short)-1;
+4 -3
View File
@@ -25,6 +25,9 @@
extern int Game_mode;
const char *movie_ext_list[] = { ".ogg", ".mve" };
const int NUM_MOVIE_EXT = sizeof(movie_ext_list) / sizeof(char*);
#define MOVIE_NONE -1
#define MOVIE_OGG 0
@@ -42,8 +45,6 @@ int movie_find(char *filename, char *out_name)
char full_path[MAX_PATH];
char tmp_name[MAX_PATH];
int size, offset = 0;
const int NUM_EXT = 2;
const char *movie_ext[NUM_EXT] = { ".ogg", ".mve" };
if (out_name == NULL)
return MOVIE_NONE;
@@ -57,7 +58,7 @@ int movie_find(char *filename, char *out_name)
char *p = strrchr(tmp_name, '.');
if ( p ) *p = 0;
int rc = cf_find_file_location_ext(tmp_name, NUM_EXT, movie_ext, CF_TYPE_ANY, sizeof(full_path) - 1, full_path, &size, &offset, 0);
int rc = cf_find_file_location_ext(tmp_name, NUM_MOVIE_EXT, movie_ext_list, CF_TYPE_ANY, sizeof(full_path) - 1, full_path, &size, &offset, 0);
if (rc == MOVIE_NONE)
return MOVIE_NONE;
+3
View File
@@ -12,6 +12,9 @@
#ifndef _MOVIE_HEADER_FILE
#define _MOVIE_HEADER_FILE
extern const char *movie_ext_list[];
extern const int NUM_MOVIE_EXT;
bool movie_play(char *name);
void movie_play_two(char *name1, char *name2);
+4
View File
@@ -926,6 +926,10 @@ int debris_check_collision(object *pdebris, object *other_obj, vec3d *hitpos, co
// reset flags to check MC_CHECK_MODEL | MC_CHECK_SPHERELINE and maybe MC_CHECK_INVISIBLE_FACES and MC_SUBMODEL_INSTANCE
mc.flags = copy_flags | MC_SUBMODEL_INSTANCE;
if (Ship_info[Ships[ship_obj->instance].ship_info_index].collision_lod > -1) {
mc.lod = Ship_info[Ships[ship_obj->instance].ship_info_index].collision_lod;
}
// check each submodel in turn
for (smv = submodel_vector.begin(); smv != submodel_vector.end(); ++smv) {
// turn on submodel for collision test
+6 -8
View File
@@ -9,10 +9,8 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////
// 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
// @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
////////////////
#include "debugconsole/consoleparse.h"
@@ -466,7 +464,7 @@ void dc_required_string(char *pstr)
dc_ignore_gray_space();
if (strnicmp(pstr, Cp, strlen(pstr))) {
if (strncmp(pstr, Cp, strlen(pstr)) == 0) {
str_found = pstr;
}
@@ -492,10 +490,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;
}
@@ -563,7 +561,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
+1 -8
View File
@@ -1482,7 +1482,7 @@ int game_start_mission()
int e1 = timer_get_milliseconds();
printf("Level load took %f seconds.\n", (e1 - s1) / 1000.0f );
mprintf(("Level load took %f seconds.\n", (e1 - s1) / 1000.0f ));
return 1;
}
@@ -7127,13 +7127,6 @@ 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,1,000000
PRODUCTVERSION 3,7,1,000000
FILEVERSION 3,7,3,000000
PRODUCTVERSION 3,7,3,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.1.000000"
VALUE "FileVersion", "3.7.3.000000"
VALUE "InternalName", "FreeSpace 2 Open"
VALUE "LegalCopyright", "Copyright © 1998"
VALUE "OriginalFilename", "fs2.exe"
VALUE "ProductName", "FreeSpace 2 Open"
VALUE "ProductVersion", "3.7.1"
VALUE "ProductVersion", "3.7.3"
END
END
BLOCK "VarFileInfo"
+6 -9
View File
@@ -28,15 +28,14 @@
#pragma optimize("", off)
#define DEFAULT_MASTER_EVENT_MUSIC_VOLUME 0.5f
#define HULL_VALUE_TO_PLAY_INTENSE_BATTLE_MUSIC 0.75f
////////////////////////////
// Globals
////////////////////////////
int Event_Music_battle_started = 0;
float Master_event_music_volume = DEFAULT_MASTER_EVENT_MUSIC_VOLUME; // range is 0->1
float Default_music_volume = 0.5f; // range is 0->1
float Master_event_music_volume = Default_music_volume;
typedef struct tagSNDPATTERN {
int default_next_pattern; // Needed so the next_pattern member can be reset
@@ -594,7 +593,7 @@ void event_music_level_init(int force_soundtrack)
{
if (!strnicmp(strack->pattern_fnames[i], NOX("none.wav"), 4))
{
Patterns[i].handle = -1;
Patterns[i].handle = -1;
continue;
}
@@ -1360,10 +1359,8 @@ void parse_menumusic()
// Goober5000 - check for existence of file
// taylor - check for all file types
const int NUM_EXT = 2;
const char *exts[NUM_EXT] = { ".ogg", ".wav" };
if ( cf_exists_full_ext(Spooled_music[idx].filename, CF_TYPE_MUSIC, NUM_EXT, exts) )
// chief1983 - use type list defined in audiostr.h
if ( cf_exists_full_ext(Spooled_music[idx].filename, CF_TYPE_MUSIC, NUM_AUDIO_EXT, audio_ext_list) )
Spooled_music[idx].flags |= SMF_VALID;
if (!nocreate)
@@ -1383,7 +1380,7 @@ void event_music_parse_musictbl(const char *filename)
} else {
read_file_text(filename, CF_TYPE_TABLES);
reset_parse();
reset_parse();
while ( skip_to_start_of_string_either("#Soundtrack Start", "#Menu Music Start", NULL ) )
{
+2 -1
View File
@@ -41,7 +41,8 @@
extern int Event_Music_battle_started; // flag that will tell us if we've started a battle in the current mission
extern int Event_music_enabled;
extern float Master_event_music_volume; // range is 0->1
extern float Default_music_volume; // range is 0->1
extern float Master_event_music_volume; // range is 0->1
/////////////////////////////////////////////////////////////////////////////
+1 -1
View File
@@ -34,7 +34,7 @@
#define FS_VERSION_MAJOR 3 // major version
#define FS_VERSION_MINOR 7 // increase by 1 for minor revs
#define FS_VERSION_BUILD 1 // bugfix release
#define FS_VERSION_BUILD 3 // 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!!)
+3 -2
View File
@@ -33,6 +33,7 @@
#include "io/keycontrol.h" // m!m
#include "debugconsole/console.h"
#include "debugconsole/console.h"
#include "popup/popup.h"
#if defined(SCP_UNIX) && !defined(__APPLE__)
@@ -83,7 +84,7 @@ int gr_alpha_test = 0;
// Default clipping distances
const float Default_min_draw_distance = 1.0f;
const float Default_max_draw_distance = 1e10;
const float Default_max_draw_distance = 10000000.0f;
float Min_draw_distance = Default_min_draw_distance;
float Max_draw_distance = Default_max_draw_distance;
@@ -1771,7 +1772,7 @@ void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float a
void gr_flip()
{
// m!m avoid running CHA_ONFRAME when the "Quit mission" popup is shown. See mantis 2446 for reference
if (!quit_mission_popup_shown)
if (!quit_mission_popup_shown && !popup_active())
{
//WMC - Evaluate global hook if not override.
Script_system.RunBytecode(Script_globalhook);
+18 -1
View File
@@ -20,6 +20,17 @@
//we check background type to avoid messed up colours for ANI
#define ANI_BPP_CHECK (ga->ani.bg_type == BM_TYPE_PCX) ? 16 : 32
// These two functions find if a bitmap or animation exists by filename, no extension needed.
bool generic_bitmap_exists(const char *filename)
{
return cf_exists_full_ext(filename, CF_TYPE_ANY, BM_NUM_TYPES, bm_ext_list);
}
bool generic_anim_exists(const char *filename)
{
return cf_exists_full_ext(filename, CF_TYPE_ANY, BM_ANI_NUM_TYPES, bm_ani_ext_list);
}
// Goober5000
int generic_anim_init_and_stream(generic_anim *anim, const char *anim_filename, ubyte bg_type, bool attempt_hi_res)
{
@@ -209,13 +220,19 @@ int generic_anim_stream(generic_anim *ga)
ga->previous_frame = -1;
}
else {
bool in_subdir;
bpp = 32;
if(ga->use_hud_color)
bpp = 8;
bm_load_and_parse_eff(ga->filename, CF_TYPE_ANY, &ga->num_frames, &anim_fps, &ga->keyframe, 0);
bm_load_and_parse_eff(ga->filename, CF_TYPE_ANY, &ga->num_frames, &anim_fps, &ga->keyframe, 0, &in_subdir);
char *p = strrchr( ga->filename, '.' );
if ( p )
*p = 0;
if (in_subdir) {
set_temp_subdir_pathtype(ga->filename);
}
char frame_name[32];
snprintf(frame_name, 32, "%s_0000", ga->filename);
ga->bitmap_id = bm_load(frame_name);
+2
View File
@@ -52,6 +52,8 @@ typedef struct generic_bitmap {
int bitmap_id;
} generic_bitmap;
bool generic_bitmap_exists(const char *filename);
bool generic_anim_exists(const char *filename);
int generic_anim_init_and_stream(generic_anim *anim, const char *anim_filename, ubyte bg_type, bool attempt_hi_res);
void generic_anim_init(generic_anim *ga);
void generic_anim_init(generic_anim *ga, const char *filename);
+2 -2
View File
@@ -704,7 +704,7 @@ static bool opengl_post_init_table()
if (optional_string("#Effects")) {
while ( !required_string_3("$Name:", "#Ship Effects", "#End") ) {
while ( !required_string_one_of(3, "$Name:", "#Ship Effects", "#End") ) {
char tbuf[NAME_LENGTH+1] = { 0 };
post_effect_t eff;
@@ -752,7 +752,7 @@ static bool opengl_post_init_table()
Ship_effects.push_back(se1);
if (optional_string("#Ship Effects")) {
while ( !required_string_3("$Name:", "#Light Shafts", "#End") ) {
while ( !required_string_one_of(3, "$Name:", "#Light Shafts", "#End") ) {
ship_effect se;
char tbuf[NAME_LENGTH] = { 0 };
+4
View File
@@ -192,6 +192,10 @@ 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 -54
View File
@@ -151,49 +151,6 @@ int Supernova_coords[GR_NUM_RESOLUTIONS][2] = {
}
};
// used to draw the kills gauge
hud_frames Kills_gauge;
int Kills_gauge_loaded = 0;
int Kills_gauge_coords[GR_NUM_RESOLUTIONS][2] = {
{ // GR_640
497, 361
},
{ // GR_1024
880, 624
}
};
int Kills_text_coords[GR_NUM_RESOLUTIONS][2] = {
{ // GR_640
503, 365
},
{ // GR_1024
886, 628
}
};
int Kills_text_val_coords_gr[GR_NUM_RESOLUTIONS][2] = {
{ // GR_640
615, 365
},
{ // GR_1024
984, 628
}
};
int Kills_text_val_coords[GR_NUM_RESOLUTIONS][2] = {
{ // GR_640
571, 365
},
{ // GR_1024
954, 628
}
};
char Kills_fname[GR_NUM_RESOLUTIONS][MAX_FILENAME_LEN] = {
"kills1",
"kills1"
};
// used to draw the hud support view
static int Hud_support_view_active;
static int Hud_support_view_abort; // active when we need to display abort message
@@ -237,7 +194,6 @@ int hud_subspace_notify_active();
int hud_objective_notify_active();
void hud_subspace_notify_abort();
void hud_maybe_display_subspace_notify();
void hud_init_kills_gauge();
int hud_maybe_render_emp_icon();
void hud_init_emp_icon();
@@ -1134,7 +1090,7 @@ bool HudGauge::canRender()
}
if (gauge_config == HUD_ETS_GAUGE) {
if (Ships[Player_obj->instance].flags2 & SF2_NO_ETS) {
if (Ships[Player_obj->instance].flags2 & SF2_NO_ETS && !Show_disabled_ets_gauges) {
return false;
}
}
@@ -1223,7 +1179,6 @@ void HUD_init()
hud_init_wingman_status_gauge();
hud_init_target_static();
hud_init_text_flash_gauge();
hud_init_kills_gauge();
hud_stop_subspace_notify();
hud_stop_objective_notify();
hud_target_last_transmit_level_init();
@@ -2571,14 +2526,6 @@ void HudGaugeLag::render(float frametime)
}
}
/**
* @brief Obsolete initializer for the kills gauge. Now superseded by the new HUD code.
*/
void hud_init_kills_gauge()
{
Kills_gauge_loaded = 1;
}
/**
* @brief Called at mission start to init data, and load support view bitmap if required
*/
+4
View File
@@ -420,6 +420,10 @@ int hud_abort_lock()
return 1;
}
if ( Player_ship->flags2 & SF2_NO_SECONDARY_LOCKON ) {
return 1;
}
// if we're on the same team and the team doesn't attack itself, then don't lock!
if ((Player_ship->team == target_team) && (!iff_x_attacks_y(Player_ship->team, target_team)))
{
+10
View File
@@ -46,6 +46,7 @@ int Hud_reticle_style = HUD_RETICLE_STYLE_FS2;
bool Hud_retail = true;
bool Scale_retail_gauges = true;
bool Show_disabled_ets_gauges = false;
int Hud_font = -1;
@@ -261,6 +262,10 @@ void parse_hud_gauges_tbl(const char *filename)
Hud_reticle_style = temp;
}
if (optional_string("$Show disabled ETS gauges:")) {
stuff_boolean(&Show_disabled_ets_gauges);
}
int base_res[2];
int ship_idx = -1;
int ship_font = -1;
@@ -2006,6 +2011,7 @@ void load_gauge_center_reticle(int base_w, int base_h, int hud_font, bool scale_
int scaleX = 15;
int scaleY = 10;
int size = 5;
int autoaim_frame = -1;
if(Hud_reticle_style == HUD_RETICLE_STYLE_FS1) {
if(gr_screen.res == GR_640) {
@@ -2055,8 +2061,12 @@ void load_gauge_center_reticle(int base_w, int base_h, int hud_font, bool scale_
if (optional_string("Firepoint Y coordinate multiplier:"))
stuff_int(&scaleY);
if(optional_string("Autoaim Frame:"))
stuff_int(&autoaim_frame);
hud_gauge->initBitmaps(fname);
hud_gauge->initFirepointDisplay(firepoints, scaleX, scaleY, size);
hud_gauge->setAutoaimFrame(autoaim_frame);
if(ship_idx->at(0) >= 0) {
for (SCP_vector<int>::iterator ship_index = ship_idx->begin(); ship_index != ship_idx->end(); ++ship_index) {
+1
View File
@@ -20,6 +20,7 @@ extern float Hud_speed_multiplier;
#define HUD_RETICLE_STYLE_FS2 1
extern int Hud_reticle_style;
extern bool Show_disabled_ets_gauges;
//Functions
int hud_get_gauge_index(char* name);
+66 -12
View File
@@ -20,6 +20,7 @@
#include "weapon/emp.h"
#include "localization/localize.h"
#include "network/multi.h"
#include "weapon/weapon.h"
#define NUM_RETICLE_ANIS 11 // keep up to date when modifying the number of reticle ani files
@@ -228,6 +229,7 @@ static int Threat_lock_frame; // frame offset of current lock flashing warnin
HudGaugeReticle::HudGaugeReticle():
HudGauge(HUD_OBJECT_CENTER_RETICLE, HUD_CENTER_RETICLE, true, false, (VM_EXTERNAL | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY | VM_TOPDOWN | VM_OTHER_SHIP), 255, 255, 255)
{
has_autoaim_lock = false;
}
void HudGaugeReticle::initBitmaps(char *fname)
@@ -247,9 +249,39 @@ void HudGaugeReticle::initFirepointDisplay(bool firepoint, int scaleX, int scale
void HudGaugeReticle::render(float frametime)
{
ship_info *sip = &Ship_info[Player_ship->ship_info_index];
if (autoaim_frame_offset > 0 || sip->autoaim_lock_snd > -1 || sip->autoaim_lost_snd > -1) {
ship *shipp = &Ships[Objects[Player->objnum].instance];
ship_weapon *swp = &shipp->weapons;
ai_info *aip = &Ai_info[shipp->ai_index];
if (aip->target_objnum != -1) {
bool autoaiming = false;
autoaiming = in_autoaim_fov(shipp, swp->current_primary_bank, &Objects[aip->target_objnum]);
if (autoaiming) {
if (!has_autoaim_lock && sip->autoaim_lock_snd > -1) {
snd_play( &Snds[sip->autoaim_lock_snd]);
}
has_autoaim_lock = true;
}
else {
if (has_autoaim_lock && sip->autoaim_lost_snd > -1) {
snd_play( &Snds[sip->autoaim_lost_snd]);
}
has_autoaim_lock = false;
}
}
}
setGaugeColor(HUD_C_BRIGHT);
renderBitmap(crosshair.first_frame, position[0], position[1]);
if (has_autoaim_lock)
renderBitmap(crosshair.first_frame + autoaim_frame_offset, position[0], position[1]);
else
renderBitmap(crosshair.first_frame, position[0], position[1]);
if (firepoint_display) {
fp.clear();
@@ -277,7 +309,7 @@ void HudGaugeReticle::render(float frametime)
void HudGaugeReticle::getFirepointStatus() {
//First, get the player ship
ship_info* pship;
ship_info* sip;
ship* shipp;
polymodel* pm;
@@ -285,30 +317,45 @@ void HudGaugeReticle::getFirepointStatus() {
if (Objects[Player->objnum].type == OBJ_SHIP) {
shipp = &Ships[Objects[Player->objnum].instance];
pship = &Ship_info[shipp->ship_info_index];
sip = &Ship_info[shipp->ship_info_index];
//Get the player eyepoint
pm = model_get(pship->model_num);
pm = model_get(sip->model_num);
if (pm->n_view_positions == 0) {
mprintf(("Model %s does not have a defined eyepoint. Firepoint display could not be generated\n", pm->filename));
} else {
if (pm->n_guns > 0) {
if (pm->n_guns > 0) {
eye eyepoint = pm->view_positions[shipp->current_viewpoint];
vec2d ep = { eyepoint.pnt.xyz.x, eyepoint.pnt.xyz.y };
for (int i = 0; i < pm->n_guns; i++) {
int isactive = 0;
int bankactive = 0;
ship_weapon *swp = &shipp->weapons;
if (!timestamp_elapsed(shipp->weapons.next_primary_fire_stamp[i]))
isactive = 1;
bankactive = 1;
else if (timestamp_elapsed(shipp->weapons.primary_animation_done_time[i]))
isactive = 1;
bankactive = 1;
else if (i == shipp->weapons.current_primary_bank || shipp->flags & SF_PRIMARY_LINKED)
isactive = 2;
bankactive = 2;
int num_slots = pm->gun_banks[i].num_slots;
for (int j = 0; j < num_slots; j++) {
int fpactive = bankactive;
if (sip->flags2 & SIF2_DYN_PRIMARY_LINKING) {
// If this firepoint is not among the next shot(s) to be fired, dim it one step
if ( !( (j >= (shipp->last_fired_point[i]+1) % num_slots) && (j <= (shipp->last_fired_point[i]+swp->primary_bank_slot_count[i]) % num_slots) ) ) {
fpactive--;
}
} else if (Weapon_info[swp->primary_bank_weapons[i]].wi_flags2 & WIF2_CYCLE) {
// If this firepoint is not the next one to be fired, dim it one step
if (j != (shipp->last_fired_point[i]+1) % num_slots) {
fpactive--;
}
}
for (int j = 0; j < pm->gun_banks[i].num_slots; j++) {
vec3d fpfromeye;
matrix eye_orient, player_transpose;
@@ -317,7 +364,7 @@ void HudGaugeReticle::getFirepointStatus() {
vm_matrix_x_matrix(&eye_orient, &player_transpose, &Eye_matrix);
vm_vec_rotate(&fpfromeye, &pm->gun_banks[i].pnt[j], &eye_orient);
firepoint tmp = { { fpfromeye.xyz.x - ep.x, ep.y - fpfromeye.xyz.y }, isactive };
firepoint tmp = { { fpfromeye.xyz.x - ep.x, ep.y - fpfromeye.xyz.y }, fpactive };
fp.push_back(tmp);
}
}
@@ -326,6 +373,13 @@ void HudGaugeReticle::getFirepointStatus() {
}
}
void HudGaugeReticle::setAutoaimFrame(int framenum) {
if (framenum < 0 || framenum > crosshair.num_frames - 1)
autoaim_frame_offset = 0;
else
autoaim_frame_offset = framenum;
}
void HudGaugeReticle::pageIn()
{
bm_page_in_aabitmap( crosshair.first_frame, crosshair.num_frames);
+3
View File
@@ -43,6 +43,8 @@ protected:
int firepoint_size;
int firepoint_scale_x;
int firepoint_scale_y;
int autoaim_frame_offset;
bool has_autoaim_lock;
public:
HudGaugeReticle();
void render(float frametime);
@@ -50,6 +52,7 @@ public:
void pageIn();
void initFirepointDisplay(bool firepoint, int scaleX, int scaleY, int size);
void getFirepointStatus();
void setAutoaimFrame(int framenum);
};
class HudGaugeThrottle: public HudGauge
+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) && (target_objnum == Msg_instance) ){
if ( (Squad_msg_mode == SM_MODE_SHIP_COMMAND) && (Objects[target_objnum].instance == Msg_instance) ){
return 0;
}
+1 -1
View File
@@ -1095,7 +1095,7 @@ void hud_target_subobject_common(int next_flag)
target_shipp = &Ships[Objects[Player_ai->target_objnum].instance];
if (!Player_ai->targeted_subsys) {
start = GET_FIRST(&target_shipp->subsys_list);
start = END_OF_LIST(&target_shipp->subsys_list);
} else {
start = Player_ai->targeted_subsys;
}
+10 -1
View File
@@ -41,6 +41,7 @@
#define LAB_FLAG_FULLY_LOAD (1<<5) // use create_ship() to test the ships
#define LAB_FLAG_SHOW_WEAPONS (1<<6) // determines if external weapons models are displayed
#define LAB_FLAG_INITIAL_ROTATION (1<<7) // initial rotation setting
#define LAB_FLAG_DESTROYED_SUBSYSTEMS (1<<8) // render model as if all subsystems are destroyed
// modes
#define LAB_MODE_NONE 0 // not showing anything
@@ -684,7 +685,7 @@ void labviewer_add_model_thrusters(ship_info *sip)
mst.distortion_bitmap = thruster_distortion_bitmap;
mst.use_ab = Lab_thrust_afterburn;
mst.glow_noise = thruster_glow_noise;
mst.glow_noise = thruster_glow_noise * sip->thruster_glow_noise_mult;
mst.rotvel = &vmd_zero_vector;
if (Lab_mode == LAB_MODE_SHIP) {
@@ -904,6 +905,13 @@ void labviewer_render_model(float frametime)
}
}
}
if (sip != NULL) {
if (Lab_viewer_flags & LAB_FLAG_DESTROYED_SUBSYSTEMS) {
model_show_damaged(Lab_model_num, 1);
}
}
opengl_shader_set_animated_effect(ANIMATED_SHADER_LOADOUTSELECT_FS1);
opengl_shader_set_animated_timer(MIN((timer_get_milliseconds()-anim_timer_start)/1500.0f,2.0f));
@@ -1855,6 +1863,7 @@ void labviewer_make_render_options_window(Button *caller)
ADD_RENDER_FLAG("Animated Shader", Lab_model_flags, MR_ANIMATED_SHADER);
ADD_RENDER_FLAG("Show Ship Weapons", Lab_viewer_flags, LAB_FLAG_SHOW_WEAPONS);
ADD_RENDER_FLAG("Initial Rotation", Lab_viewer_flags, LAB_FLAG_INITIAL_ROTATION);
ADD_RENDER_FLAG("Show Destroyed Subsystems", Lab_viewer_flags, LAB_FLAG_DESTROYED_SUBSYSTEMS);
// start tree
+1 -1
View File
@@ -147,7 +147,7 @@ void lcl_init(int lang_init)
if(ret == NULL){
Error(LOCATION, "Default language not found.");
}
}
strcpy_s(lang_string, ret);
+12 -17
View File
@@ -35,9 +35,9 @@
char *fs2_open_credit_text =
"SOURCE CODE PROJECT STAFF:\n"
"\n"
"Project Leaders:\n"
"Project Leader:\n"
"\n"
"Cliff \"chief1983\" Gordon\n"
"Fabian \"The E\" Woltermann\n"
"\n"
"Senior Advisors:\n"
"\n"
@@ -45,6 +45,7 @@ char *fs2_open_credit_text =
"Michael \"Zacam\" LaFleur\n"
"Taylor Richards\n"
"Edward \"Inquisitor\" Gardner\n"
"Cliff \"chief1983\" Gordon\n"
"\n"
"Programmers:\n"
"\n"
@@ -52,19 +53,13 @@ char *fs2_open_credit_text =
"Derek \"Kazan\" Meek\n"
"Nick \"phreak\" Iannetta\n"
"Mike \"Bobboau\" Abegg\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"
"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"
"\n"
"\n"
"Readme Staff:\n"
@@ -650,10 +645,10 @@ void credits_close()
int i;
for (i=0; i<Credits_num_images; i++) {
if (Credits_bmps[i] >= 0){
if (Credits_bmps[i] >= 0) {
bm_release(Credits_bmps[i]);
}
}
}
Credits_bmps.clear();
credits_stop_music(true);
+8 -7
View File
@@ -59,7 +59,9 @@ extern void game_process_cheats(int k);
SCP_vector< SCP_vector<main_hall_defines> > Main_hall_defines;
main_hall_defines *Main_hall = NULL;
static main_hall_defines *Main_hall = NULL;
static int Main_hall_music_index = -1;
int Vasudan_funny = 0;
int Vasudan_funny_plate = -1;
@@ -439,7 +441,7 @@ void main_hall_init(const SCP_string &main_hall_name)
}
// if we're switching to a different mainhall we may need to change music
if (main_hall_get_music_index(main_hall_get_index(main_hall_to_load)) != main_hall_get_music_index(main_hall_id())) {
if (main_hall_get_music_index(main_hall_get_index(main_hall_to_load)) != Main_hall_music_index) {
main_hall_stop_music(true);
}
@@ -447,8 +449,8 @@ void main_hall_init(const SCP_string &main_hall_name)
snazzy_menu_init();
// assign the proper main hall data
Assert(main_hall_get_pointer(main_hall_to_load) != NULL);
Main_hall = main_hall_get_pointer(main_hall_to_load);
Assertion(Main_hall != NULL, "Failed to obtain pointer to main hall '%s'; get a coder!\n", main_hall_to_load.c_str());
// check if we have to change the ready room's description
if(Main_hall->default_readyroom) {
@@ -1138,7 +1140,6 @@ int main_hall_get_music_index(int main_hall_num)
*/
void main_hall_start_music()
{
int index;
char *filename;
// start a looping ambient sound
@@ -1155,13 +1156,13 @@ void main_hall_start_music()
}
// get music
index = main_hall_get_music_index(main_hall_id());
if (index < 0) {
Main_hall_music_index = main_hall_get_music_index(main_hall_id());
if (Main_hall_music_index < 0) {
nprintf(("Warning", "No music file exists to play music at the main menu!\n"));
return;
}
filename = Spooled_music[index].filename;
filename = Spooled_music[Main_hall_music_index].filename;
Assert(filename != NULL);
// get handle
+4 -4
View File
@@ -241,10 +241,10 @@ int mission_campaign_maybe_add(const char *filename)
char *desc = NULL;
int type, max_players;
// don't add ignored campaigns
if (campaign_is_ignored(filename)) {
return 0;
}
// don't add ignored campaigns
if (campaign_is_ignored(filename)) {
return 0;
}
if ( mission_campaign_get_info( filename, name, &type, &max_players, &desc) ) {
if ( !MC_multiplayer && (type == CAMPAIGN_TYPE_SINGLE) ) {
+1 -1
View File
@@ -93,7 +93,7 @@ extern int Num_goals; // number of goals for this mission
#define MLF_FIRST_REPEAT_ONLY (1 << 4)
#define MLF_LAST_REPEAT_ONLY (1 << 5)
#define MLF_FIRST_TRIGGER_ONLY (1 << 6)
#define MLF_LAST_TRIGGER_ONLY (1 << 7)
#define MLF_LAST_TRIGGER_ONLY (1 << 7)
#define MLF_STATE_CHANGE (1 << 8)
#define MLF_ALL_REPETITION_FLAGS (MLF_FIRST_REPEAT_ONLY | MLF_LAST_REPEAT_ONLY | MLF_FIRST_TRIGGER_ONLY | MLF_LAST_TRIGGER_ONLY)
+1 -1
View File
@@ -561,7 +561,7 @@ void parse_msgtbl()
// now we can start parsing
if (optional_string("#Message Frequencies")) {
while (!required_string_3("$Name:", "#Personas", "#Moods" )) {
while (!required_string_one_of(3, "$Name:", "#Personas", "#Moods" )) {
message_frequency_parse();
}
}
+7 -6
View File
@@ -1838,6 +1838,7 @@ int parse_create_object_sub(p_object *p_objp)
shipp->ship_max_shield_strength = p_objp->ship_max_shield_strength;
shipp->ship_max_hull_strength = p_objp->ship_max_hull_strength;
shipp->max_shield_recharge = p_objp->max_shield_recharge;
// Goober5000 - ugh, this is really stupid having to do this here; if the
// ship creation code was better organized this wouldn't be necessary
@@ -2250,7 +2251,7 @@ int parse_create_object_sub(p_object *p_objp)
Objects[objnum].hull_strength = p_objp->initial_hull * shipp->ship_max_hull_strength / 100.0f;
for (iLoop = 0; iLoop<Objects[objnum].n_quadrants; iLoop++)
{
Objects[objnum].shield_quadrant[iLoop] = (float) (p_objp->initial_shields * get_max_shield_quad(&Objects[objnum]) / 100.0f);
Objects[objnum].shield_quadrant[iLoop] = (float) (shipp->max_shield_recharge * p_objp->initial_shields * get_max_shield_quad(&Objects[objnum]) / 100.0f);
}
// initial velocities now do not apply to ships which warp in after mission starts
@@ -3110,6 +3111,7 @@ int parse_object(mission *pm, int flag, p_object *p_objp)
}
Assert(p_objp->ship_max_hull_strength > 0.0f); // Goober5000: div-0 check (not shield because we might not have one)
p_objp->max_shield_recharge = Ship_info[p_objp->ship_class].max_shield_recharge;
// if the kamikaze flag is set, we should have the next flag
@@ -4603,8 +4605,9 @@ void resolve_path_masks(int anchor, int *path_mask)
Assert(!(anchor & SPECIAL_ARRIVAL_ANCHOR_FLAG));
parent_pobjp = mission_parse_get_parse_object(Parse_names[anchor]);
// load model for checking paths
modelnum = model_load(Ship_info[parent_pobjp->ship_class].pof_file, 0, NULL);
// Load the anchor ship model with subsystems and all; it'll need to be done for this mission anyway
ship_info *sip = &Ship_info[parent_pobjp->ship_class];
modelnum = model_load(sip->pof_file, sip->n_subsystems, &sip->subsystems[0]);
// resolve names to indexes
*path_mask = 0;
@@ -4617,9 +4620,6 @@ void resolve_path_masks(int anchor, int *path_mask)
*path_mask |= (1 << bay_path);
}
// unload model
model_unload(modelnum);
// cache the result
prp->cached_mask = *path_mask;
}
@@ -7555,6 +7555,7 @@ void mission_bring_in_support_ship( object *requester_objp )
// set support ship hitpoints
pobj->ship_max_hull_strength = Ship_info[i].max_hull_strength;
pobj->ship_max_shield_strength = Ship_info[i].max_shield_strength;
pobj->max_shield_recharge = Ship_info[i].max_shield_recharge;
pobj->team = requester_shipp->team;
+2
View File
@@ -424,6 +424,8 @@ public:
float ship_max_hull_strength; // Needed to deal with special hitpoints
float ship_max_shield_strength;
float max_shield_recharge;
// Goober5000
SCP_vector<texture_replace> replacement_textures;
+5
View File
@@ -1513,6 +1513,11 @@ void draw_model_icon(int model_id, int flags, float closeup_zoom, int x, int y,
//Assume it's a weapon
rot_angles.h = -(PI_2);
}
else if(sip->model_icon_angles.p != 0.0f || sip->model_icon_angles.b != 0.0f || sip->model_icon_angles.h != 0.0f)
{
// If non-zero model_icon_angles exists, always use that
rot_angles = sip->model_icon_angles;
}
else if(sip->flags & SIF_SMALL_SHIP)
{
rot_angles.p = -(PI_2);
+5 -5
View File
@@ -79,14 +79,14 @@ void parse_mod_table(const char *filename)
SCP_string campaign_name;
while (optional_string("$Campaign File Name:")) {
stuff_string(campaign_name, F_NAME);
stuff_string(campaign_name, F_NAME);
// remove extension?
if (drop_extension(campaign_name)) {
mprintf(("Game Settings Table: Removed extension on ignored campaign file name %s\n", campaign_name.c_str()));
}
Ignored_campaigns.push_back(campaign_name);
Ignored_campaigns.push_back(campaign_name);
}
}
@@ -193,15 +193,15 @@ void parse_mod_table(const char *filename)
optional_string("#SOUND SETTINGS");
if (optional_string("$Default Sound Volume:")) {
stuff_float(&Master_sound_volume);
stuff_float(&Default_sound_volume);
}
if (optional_string("$Default Music Volume:")) {
stuff_float(&Master_event_music_volume);
stuff_float(&Default_music_volume);
}
if (optional_string("$Default Voice Volume:")) {
stuff_float(&Master_voice_volume);
stuff_float(&Default_voice_volume);
}
optional_string("#FRED SETTINGS");
+2 -1
View File
@@ -1022,7 +1022,8 @@ typedef struct mc_info {
vec3d *p0; // The starting point of the ray (sphere) to check
vec3d *p1; // The ending point of the ray (sphere) to check
int flags; // Flags that the model_collide code looks at. See MC_??? defines
float radius; // If MC_CHECK_THICK is set, checks a sphere moving with the radius.
float radius; // If MC_CHECK_THICK is set, checks a sphere moving with the radius.
int lod; // Which detail level of the submodel to check instead
// Return values
int num_hits; // How many collisions were found
+16 -1
View File
@@ -1130,7 +1130,22 @@ void mc_check_subobj( int mn )
if ( Cmdline_old_collision_sys ) {
model_collide_sub(sm->bsp_data);
} else {
model_collide_bsp(model_get_bsp_collision_tree(sm->collision_tree_index), 0);
if (Mc->lod > 0 && sm->num_details > 0) {
bsp_info *lod_sm = sm;
for (int i = Mc->lod - 1; i >= 0; i--) {
if (sm->details[i] != -1) {
lod_sm = &Mc_pm->submodel[sm->details[i]];
//mprintf(("Checking %s collision for %s using %s instead\n", Mc_pm->filename, sm->name, lod_sm->name));
break;
}
}
model_collide_bsp(model_get_bsp_collision_tree(lod_sm->collision_tree_index), 0);
} else {
model_collide_bsp(model_get_bsp_collision_tree(sm->collision_tree_index), 0);
}
}
}
}
+51 -31
View File
@@ -83,7 +83,6 @@ static float Interp_box_scale = 1.0f; // this is used to scale both detail boxes
static vec3d Interp_render_box_min = ZERO_VECTOR;
static vec3d Interp_render_box_max = ZERO_VECTOR;
static float Interp_render_sphere_radius = 0.0f;
static vec3d Interp_render_sphere_offset = ZERO_VECTOR;
// -------------------------------------------------------------------
// lighting save stuff
@@ -369,7 +368,6 @@ void interp_clear_instance()
Interp_render_box_min = vmd_zero_vector;
Interp_render_box_max = vmd_zero_vector;
Interp_render_sphere_radius = 0.0f;
Interp_render_sphere_offset = vmd_zero_vector;
}
/**
@@ -2728,6 +2726,7 @@ void model_really_render(int model_num, matrix *orient, vec3d * pos, uint flags,
uint save_gr_zbuffering_mode;
int zbuf_mode;
ship *shipp = NULL;
ship_info *sip = NULL;
object *objp = NULL;
bool set_autocen = false;
bool draw_thrusters = false;
@@ -2742,6 +2741,7 @@ void model_really_render(int model_num, matrix *orient, vec3d * pos, uint flags,
if (objp->type == OBJ_SHIP) {
shipp = &Ships[objp->instance];
sip = &Ship_info[shipp->ship_info_index];
if (shipp->flags2 & SF2_GLOWMAPS_DISABLED)
flags |= MR_NO_GLOWMAPS;
@@ -2905,33 +2905,37 @@ void model_really_render(int model_num, matrix *orient, vec3d * pos, uint flags,
}
#endif
// scale the render box settings based on the "Model Detail" slider
switch (Detail.detail_distance)
{
// 1st dot is 20%
case 0:
Interp_box_scale = 0.2f;
break;
if (shipp != NULL && (sip->flags2 & SIF2_LOCK_DETAIL_BOXES)) {
Interp_box_scale = 1.0f;
} else {
// scale the render box settings based on the "Model Detail" slider
switch (Detail.detail_distance)
{
// 1st dot is 20%
case 0:
Interp_box_scale = 0.2f;
break;
// 2nd dot is 50%
case 1:
Interp_box_scale = 0.5f;
break;
// 2nd dot is 50%
case 1:
Interp_box_scale = 0.5f;
break;
// 3rd dot is 80%
case 2:
Interp_box_scale = 0.8f;
break;
// 3rd dot is 80%
case 2:
Interp_box_scale = 0.8f;
break;
// 4th dot is 100% (this is the default setting for "High" and "Very High" settings)
case 3:
Interp_box_scale = 1.0f;
break;
// 4th dot is 100% (this is the default setting for "High" and "Very High" settings)
case 3:
Interp_box_scale = 1.0f;
break;
// 5th dot (max) is 120%
case 4:
Interp_box_scale = 1.2f;
break;
// 5th dot (max) is 120%
case 4:
Interp_box_scale = 1.2f;
break;
}
}
vec3d auto_back = ZERO_VECTOR;
@@ -4468,7 +4472,13 @@ void model_render_children_buffers(polymodel *pm, int mn, int detail_level)
vm_vec_copy_scale(&Interp_render_box_min, &model->render_box_min, Interp_box_scale);
vm_vec_copy_scale(&Interp_render_box_max, &model->render_box_max, Interp_box_scale);
if ( (-model->use_render_box + in_box(&Interp_render_box_min, &Interp_render_box_max, &model->offset)) )
vec3d offset;
if (model->use_render_box_offset)
offset = model->render_box_offset;
else
model_find_submodel_offset(&offset, pm->id, mn);
if ( (-model->use_render_box + in_box(&Interp_render_box_min, &Interp_render_box_max, &offset)) )
return;
}
if ( !(Interp_flags & MR_FULL_DETAIL) && model->use_render_sphere ) {
@@ -4476,8 +4486,10 @@ void model_render_children_buffers(polymodel *pm, int mn, int detail_level)
// TODO: doesn't consider submodel rotations yet -zookeeper
vec3d offset;
model_find_submodel_offset(&offset, pm->id, mn);
vm_vec_add2(&offset, &model->render_sphere_offset);
if (model->use_render_sphere_offset)
offset = model->render_sphere_offset;
else
model_find_submodel_offset(&offset, pm->id, mn);
if ( (-model->use_render_sphere + in_sphere(&offset, Interp_render_sphere_radius)) )
return;
@@ -4591,7 +4603,13 @@ void model_render_buffers(polymodel *pm, int mn, bool is_child)
vm_vec_copy_scale(&Interp_render_box_min, &model->render_box_min, Interp_box_scale);
vm_vec_copy_scale(&Interp_render_box_max, &model->render_box_max, Interp_box_scale);
if ( (-model->use_render_box + in_box(&Interp_render_box_min, &Interp_render_box_max, &model->offset)) )
vec3d offset;
if (model->use_render_box_offset)
offset = model->render_box_offset;
else
model_find_submodel_offset(&offset, pm->id, mn);
if ( (-model->use_render_box + in_box(&Interp_render_box_min, &Interp_render_box_max, &offset)) )
return;
}
if ( !is_child && !(Interp_flags & MR_FULL_DETAIL) && model->use_render_sphere ) {
@@ -4599,8 +4617,10 @@ void model_render_buffers(polymodel *pm, int mn, bool is_child)
// TODO: doesn't consider submodel rotations yet -zookeeper
vec3d offset;
model_find_submodel_offset(&offset, pm->id, mn);
vm_vec_add2(&offset, &model->render_sphere_offset);
if (model->use_render_sphere_offset)
offset = model->render_sphere_offset;
else
model_find_submodel_offset(&offset, pm->id, mn);
if ( (-model->use_render_sphere + in_sphere(&offset, Interp_render_sphere_radius)) )
return;
+26 -5
View File
@@ -1354,6 +1354,18 @@ int read_model_file(polymodel * pm, char *filename, int n_subsystems, model_subs
while (*p == ' ') p++;
pm->submodel[n].use_render_box = atoi(p);
if ( (p = strstr(props, "$box_offset:")) != NULL ) {
p += 12;
while (*p == ' ') p++;
pm->submodel[n].render_box_offset.xyz.x = (float)strtod(p, (char **)NULL);
while (*p != ',') p++;
pm->submodel[n].render_box_offset.xyz.y = (float)strtod(++p, (char **)NULL);
while (*p != ',') p++;
pm->submodel[n].render_box_offset.xyz.z = (float)strtod(++p, (char **)NULL);
pm->submodel[n].use_render_box_offset = true;
}
if ( (p = strstr(props, "$box_min:")) != NULL ) {
p += 9;
while (*p == ' ') p++;
@@ -1400,6 +1412,8 @@ int read_model_file(polymodel * pm, char *filename, int n_subsystems, model_subs
pm->submodel[n].render_sphere_offset.xyz.y = (float)strtod(++p, (char **)NULL);
while (*p != ',') p++;
pm->submodel[n].render_sphere_offset.xyz.z = (float)strtod(++p, (char **)NULL);
pm->submodel[n].use_render_sphere_offset = true;
} else {
pm->submodel[n].render_sphere_offset = vmd_zero_vector;
}
@@ -2466,7 +2480,7 @@ int model_load(char *filename, int n_subsystems, model_subsystem *subsystems, in
pm = new polymodel;
Polygon_models[num] = pm;
pm->n_paths = 0;
pm->paths = NULL;
@@ -2639,6 +2653,12 @@ int model_load(char *filename, int n_subsystems, model_subsystem *subsystems, in
}
dl2 = tolower(sm2->name[first_diff]) - 'a';
// Handle LODs named "detail0/1/2/etc" too (as opposed to "detaila/b/c/etc")
if (sm1->parent == -1 && sm2->parent == -1 && !sm1->is_damaged && !sm2->is_damaged && !sm1->is_live_debris && !sm2->is_live_debris) {
dl2 = dl2 - dl1;
dl1 = 0;
}
if ( (dl1<0) || (dl2<0) || (dl1>=MAX_MODEL_DETAIL_LEVELS) || (dl2>=MAX_MODEL_DETAIL_LEVELS) ) continue; // invalid detail levels
if ( dl1 == 0 ) {
@@ -2663,10 +2683,11 @@ int model_load(char *filename, int n_subsystems, model_subsystem *subsystems, in
if ( !Cmdline_old_collision_sys ) {
for ( i = 0; i < pm->n_models; ++i ) {
pm->submodel[i].collision_tree_index = model_create_bsp_collision_tree();
bsp_collision_tree *tree = model_get_bsp_collision_tree(pm->submodel[i].collision_tree_index);
model_collide_parse_bsp(tree, pm->submodel[i].bsp_data, pm->version);
if ( !(pm->submodel[i].nocollide_this_only || pm->submodel[i].no_collisions) ) {
pm->submodel[i].collision_tree_index = model_create_bsp_collision_tree();
bsp_collision_tree *tree = model_get_bsp_collision_tree(pm->submodel[i].collision_tree_index);
model_collide_parse_bsp(tree, pm->submodel[i].bsp_data, pm->version);
}
}
}
+4
View File
@@ -269,6 +269,10 @@ int ship_ship_check_collision(collision_info_struct *ship_ship_hit_info, vec3d *
// reset flags to check MC_CHECK_MODEL | MC_CHECK_SPHERELINE and maybe MC_CHECK_INVISIBLE_FACES and MC_SUBMODEL_INSTANCE
mc.flags = copy_flags | MC_SUBMODEL_INSTANCE;
if (heavy_sip->collision_lod > -1) {
mc.lod = heavy_sip->collision_lod;
}
// check each submodel in turn
for (smv = submodel_vector.begin(); smv != submodel_vector.end(); ++smv) {
// turn on submodel for collision test
+15 -9
View File
@@ -168,6 +168,7 @@ int ship_weapon_check_collision(object *ship_objp, object *weapon_objp, float ti
mc.pos = &ship_objp->pos;
mc.p0 = &weapon_objp->last_pos;
mc.p1 = &weapon_end_pos;
mc.lod = sip->collision_lod;
memcpy(&mc_shield, &mc, sizeof(mc_info));
memcpy(&mc_hull, &mc, sizeof(mc_info));
@@ -200,15 +201,16 @@ int ship_weapon_check_collision(object *ship_objp, object *weapon_objp, float ti
// The weapon is not allowed to impact the shield before it reaches this point
vec3d shield_ignored_until = weapon_objp->last_pos;
float min_weapon_span = sip->auto_shield_spread_min_span;
float weapon_flown_for = vm_vec_dist(&wp->start_pos, &weapon_objp->last_pos);
// If weapon hasn't yet flown a distance greater than the maximum ignore
// range, then some part of the currently checked range needs to be
// ignored
if (weapon_flown_for < sip->auto_shield_spread) {
if (weapon_flown_for < min_weapon_span) {
vm_vec_sub(&shield_ignored_until, &weapon_end_pos, &wp->start_pos);
vm_vec_normalize(&shield_ignored_until);
vm_vec_scale(&shield_ignored_until, sip->auto_shield_spread);
vm_vec_scale(&shield_ignored_until, min_weapon_span);
vm_vec_add2(&shield_ignored_until, &wp->start_pos);
}
@@ -243,7 +245,7 @@ int ship_weapon_check_collision(object *ship_objp, object *weapon_objp, float ti
// If no collision with the model found in the ignore range, only
// then do we check for sphereline collisions with the model during the
// non-ignored range
if (!shield_collision && weapon_flown_for + this_range > sip->auto_shield_spread) {
if (!shield_collision && weapon_flown_for + this_range > min_weapon_span) {
mc_shield.p0 = &shield_ignored_until;
mc_shield.p1 = &weapon_end_pos;
@@ -251,16 +253,14 @@ int ship_weapon_check_collision(object *ship_objp, object *weapon_objp, float ti
mc_shield.radius = sip->auto_shield_spread;
if (sip->auto_shield_spread_from_lod > -1) {
pm = model_get(sip->model_num);
mc_shield.submodel_num = pm->detail[sip->auto_shield_spread_from_lod];
mc_shield.flags = MC_CHECK_MODEL | MC_SUBMODEL_INSTANCE | MC_CHECK_SPHERELINE;
} else {
mc_shield.flags = MC_CHECK_MODEL | MC_CHECK_SPHERELINE;
mc_shield.lod = sip->auto_shield_spread_from_lod;
}
mc_shield.flags = MC_CHECK_MODEL | MC_CHECK_SPHERELINE;
shield_collision = model_collide(&mc_shield);
mc_shield.lod = sip->collision_lod;
mc_shield.submodel_num = -1;
// Because we manipulated p0 and p1 above, hit_dist will be
@@ -407,6 +407,12 @@ int ship_weapon_check_collision(object *ship_objp, object *weapon_objp, float ti
bool weapon_override = Script_system.IsConditionOverride(CHA_COLLIDESHIP, weapon_objp);
if(!ship_override && !weapon_override) {
if (shield_collision && quadrant_num >= 0) {
if ((sip->shield_impact_explosion_anim > -1) && (wip->shield_impact_explosion_radius > 0)) {
// do in weapons.cpp for most parts just because that is how rest of the functions are handled
shield_impact_explosion(&mc.hit_point, ship_objp, wip->shield_impact_explosion_radius, sip->shield_impact_explosion_anim);
}
}
ship_weapon_do_hit_stuff(ship_objp, weapon_objp, &mc.hit_point_world, &mc.hit_point, quadrant_num, mc.hit_submodel, mc.hit_normal);
}
+6 -6
View File
@@ -51,7 +51,7 @@
object obj_free_list;
object obj_used_list;
object obj_create_list;
object obj_create_list;
object *Player_obj = NULL;
object *Viewer_obj = NULL;
@@ -716,7 +716,7 @@ void obj_move_one_docked_object(object *objp, object *parent_objp)
* Deals with firing player things like lasers, missiles, etc.
*
* Separated out because of multiplayer issues.
*/
*/
void obj_player_fire_stuff( object *objp, control_info ci )
{
ship *shipp;
@@ -888,7 +888,7 @@ void obj_move_call_physics(object *objp, float frametime)
goto obj_maybe_fire;
}
physics_sim(&objp->pos, &objp->orient, &objp->phys_info, frametime ); // simulate the physics
physics_sim(&objp->pos, &objp->orient, &objp->phys_info, frametime ); // simulate the physics
// if the object is the player object, do things that need to be done after the ship
// is moved (like firing weapons, etc). This routine will get called either single
@@ -906,7 +906,7 @@ obj_maybe_fire:
// do stream weapon firing for all ships themselves.
if(objp->type == OBJ_SHIP){
ship_fire_primary(objp, 1, 0);
has_fired = 1;
has_fired = 1;
}
}
}
@@ -1411,7 +1411,7 @@ void obj_move_all(float frametime)
vec3d cur_pos = objp->pos; // Save the current position
#ifdef OBJECT_CHECK
obj_check_object( objp );
obj_check_object( objp );
#endif
// pre-move
@@ -1708,7 +1708,7 @@ void obj_get_average_ship_pos( vec3d *pos )
vm_vec_zero( pos );
// average up all ship positions
// average up all ship positions
count = 0;
for ( objp = GET_FIRST(&obj_used_list); objp != END_OF_LIST(&obj_used_list); objp = GET_NEXT(objp) ) {
if ( objp->type != OBJ_SHIP )
+14 -2
View File
@@ -49,10 +49,18 @@ void shield_add_strength(object *objp, float delta)
if (delta == 0.0f)
return;
float shield_str = shield_get_strength(objp);
float shield_recharge_limit = Ships[objp->instance].ship_max_shield_strength * Ships[objp->instance].max_shield_recharge;
if (shield_str >= shield_recharge_limit)
return;
if (!(Ai_info[Ships[objp->instance].ai_index].ai_profile_flags & AIPF_SMART_SHIELD_MANAGEMENT)
|| delta <= 0.0f) //SUSHI: We don't want smart shield management for negative delta
{
if ((delta > 0.0f) && ((shield_str + delta) > shield_recharge_limit))
delta = shield_recharge_limit - shield_str;
for (int i = 0; i < objp->n_quadrants; i++)
shield_add_quad(objp, i, delta / objp->n_quadrants);
}
@@ -81,7 +89,11 @@ void shield_add_strength(object *objp, float delta)
// all quads are at full strength
if (weakest >= section_max)
break;
// set the limit for the shield recharge
if ((delta > 0.0f) && ((shield_str + delta) > shield_recharge_limit))
delta = shield_recharge_limit - shield_str;
// throw all possible shield power at this quadrant
// if there's any left over then apply it to the next weakest on the next pass
float xfer_amount;
+24 -13
View File
@@ -503,7 +503,7 @@ void obj_snd_do_frame()
}
distance -= add_distance;
if ( distance < 0 ) {
if ( distance < 0.0f ) {
distance = 0.0f;
}
@@ -521,39 +521,48 @@ void obj_snd_do_frame()
rot_vol_mult = 1.0f;
alive_vol_mult = 1.0f;
if ( objp->type == OBJ_SHIP ) {
if ( !(Ship_info[Ships[objp->instance].ship_info_index].flags & (SIF_BIG_SHIP | SIF_HUGE_SHIP)) ) {
if ( objp->phys_info.max_vel.xyz.z <= 0 ) {
ship_info *sip = &Ship_info[Ships[objp->instance].ship_info_index];
if ( !(sip->flags & (SIF_BIG_SHIP | SIF_HUGE_SHIP)) ) {
if ( objp->phys_info.max_vel.xyz.z <= 0.0f ) {
percent_max = 0.0f;
}
else
percent_max = objp->phys_info.fspeed / objp->phys_info.max_vel.xyz.z;
if ( percent_max >= 0.5 )
speed_vol_multiplier = 1.0f;
else {
speed_vol_multiplier = 0.5f + (percent_max); // linear interp: 0.5->1.0 when 0.0->0.5
if ( sip->min_engine_vol == -1.0f) {
// Retail behavior: volume ramps from 0.5 (when stationary) to 1.0 (when at half speed)
if ( percent_max >= 0.5f ) {
speed_vol_multiplier = 1.0f;
} else {
speed_vol_multiplier = 0.5f + (percent_max); // linear interp: 0.5->1.0 when 0.0->0.5
}
} else {
// Volume ramps from min_engine_vol (when stationary) to 1.0 (when at full speed)
speed_vol_multiplier = MAX(sip->min_engine_vol, percent_max);
}
}
if (osp->ss != NULL)
{
if (osp->flags & OS_TURRET_BASE_ROTATION)
{
if (osp->ss->base_rotation_rate_pct > 0)
if (osp->ss->base_rotation_rate_pct > 0.0f)
rot_vol_mult = ((0.25f + (0.75f * osp->ss->base_rotation_rate_pct)) * osp->ss->system_info->turret_base_rotation_snd_mult);
else
rot_vol_mult = 0;
rot_vol_mult = 0.0f;
}
if (osp->flags & OS_TURRET_GUN_ROTATION)
{
if (osp->ss->gun_rotation_rate_pct > 0)
if (osp->ss->gun_rotation_rate_pct > 0.0f)
rot_vol_mult = ((0.25f + (0.75f * osp->ss->gun_rotation_rate_pct)) * osp->ss->system_info->turret_gun_rotation_snd_mult);
else
rot_vol_mult = 0;
rot_vol_mult = 0.0f;
}
if (osp->flags & OS_SUBSYS_ROTATION )
{
if (osp->ss->flags & SSF_ROTATES) {
rot_vol_mult = 1.0;
rot_vol_mult = 1.0f;
} else {
rot_vol_mult = 0.0f;
}
}
if (osp->flags & OS_SUBSYS_ALIVE)
@@ -568,6 +577,8 @@ void obj_snd_do_frame()
{
if (osp->ss->current_hits <= 0.0f) {
alive_vol_mult = 1.0f;
} else {
alive_vol_mult = 0.0f;
}
}
if (osp->flags & OS_SUBSYS_DAMAGED)
@@ -591,7 +602,7 @@ void obj_snd_do_frame()
new_vol = max_vol - (distance - Snds[osp->id].min) * max_vol / (Snds[osp->id].max - Snds[osp->id].min);
}
if ( new_vol < 0.1 ) {
if ( new_vol < 0.1f ) {
continue;
}
+28 -5
View File
@@ -2632,7 +2632,7 @@ ADE_VIRTVAR(RotationalVelocityDamping, l_Physics, "number", "Rotational damping,
return ade_set_args(L, "f", pih->pi->rotdamp);
}
ADE_VIRTVAR(RotationalVelocityDesired, l_Physics, "vector", "Desired rotational velocity", "vector", "Desired rotational velocity, or null vector if handle is invalid")
ADE_VIRTVAR(RotationalVelocityDesired, l_Physics, "lvector", "Desired rotational velocity", "number", "Desired rotational velocity, or 0 if handle is invalid")
{
physics_info_h *pih;
vec3d *v3=NULL;
@@ -6580,9 +6580,9 @@ ADE_VIRTVAR(AmmoMax, l_WeaponBank, "number", "Maximum ammo for the current bank<
{
case SWH_PRIMARY:
{
if(ADE_SETTING_VAR && ammomax > -1) {
if(ADE_SETTING_VAR && ammomax > -1) {
bh->sw->primary_bank_capacity[bh->bank] = ammomax;
}
}
int weapon_class = bh->sw->primary_bank_weapons[bh->bank];
@@ -6592,9 +6592,9 @@ ADE_VIRTVAR(AmmoMax, l_WeaponBank, "number", "Maximum ammo for the current bank<
}
case SWH_SECONDARY:
{
if(ADE_SETTING_VAR && ammomax > -1) {
if(ADE_SETTING_VAR && ammomax > -1) {
bh->sw->secondary_bank_capacity[bh->bank] = ammomax;
}
}
int weapon_class = bh->sw->secondary_bank_weapons[bh->bank];
@@ -15614,6 +15614,29 @@ ADE_FUNC(getStack, l_Testing, NULL, "Generates an ADE stackdump", "string", "Cur
return ade_set_args(L, "s", buf);
}
ADE_FUNC(setCurrentPlayerMulti, l_Testing, "boolean", "Sets whether current player is a multiplayer pilot or not.", "boolean", "True if successful, false if not.")
{
bool multi;
if(!ade_get_args(L, "b", &multi))
return ADE_RETURN_NIL;
if(Player == NULL)
return ade_set_error(L, "b", false);
if (multi) {
Game_mode &= ~GM_NORMAL;
Game_mode |= GM_MULTIPLAYER;
Player->flags |= PLAYER_FLAGS_IS_MULTI;
} else {
Game_mode &= ~GM_MULTIPLAYER;
Game_mode |= GM_NORMAL;
Player->flags &= ~PLAYER_FLAGS_IS_MULTI;
}
return ADE_RETURN_TRUE;
}
ADE_FUNC(isCurrentPlayerMulti, l_Testing, NULL, "Returns whether current player is a multiplayer pilot or not.", "boolean", "Whether current player is a multiplayer pilot or not")
{
if(Player == NULL)
+6 -144
View File
@@ -698,72 +698,6 @@ int required_string_either(char *str1, char *str2)
return -1;
}
// Return 0 or 1 for str1 match, str2 match. Return -1 if neither matches.
// Does not update Mp if token found. If not found, advances, trying to
// find the string. Doesn't advance past the found string.
int required_string_3(char *str1, char *str2, char *str3)
{
int count = 0;
ignore_white_space();
while (count < RS_MAX_TRIES) {
if (strnicmp(str1, Mp, strlen(str1)) == 0) {
// Mp += strlen(str1);
diag_printf("Found required string [%s]\n", token_found = str1);
return 0;
} else if (strnicmp(str2, Mp, strlen(str2)) == 0) {
// Mp += strlen(str2);
diag_printf("Found required string [%s]\n", token_found = str2);
return 1;
} else if (strnicmp(str3, Mp, strlen(str3)) == 0) {
diag_printf("Found required string [%s]\n", token_found = str3);
return 2;
}
error_display(1, "Required token = [%s], [%s] or [%s], found [%.32s].\n", str1, str2, str3, next_tokens());
advance_to_eoln(NULL);
ignore_white_space();
count++;
}
return -1;
}
int required_string_4(char *str1, char *str2, char *str3, char *str4)
{
int count = 0;
ignore_white_space();
while (count < RS_MAX_TRIES) {
if (strnicmp(str1, Mp, strlen(str1)) == 0) {
// Mp += strlen(str1);
diag_printf("Found required string [%s]\n", token_found = str1);
return 0;
} else if (strnicmp(str2, Mp, strlen(str2)) == 0) {
// Mp += strlen(str2);
diag_printf("Found required string [%s]\n", token_found = str2);
return 1;
} else if (strnicmp(str3, Mp, strlen(str3)) == 0) {
diag_printf("Found required string [%s]\n", token_found = str3);
return 2;
} else if (strnicmp(str4, Mp, strlen(str4)) == 0) {
diag_printf("Found required string [%s]\n", token_found = str4);
return 3;
}
error_display(1, "Required token = [%s], [%s], [%s], or [%s], found [%.32s].\n", str1, str2, str3, str4, next_tokens());
advance_to_eoln(NULL);
ignore_white_space();
count++;
}
return -1;
}
// Generic version of old required_string_3 and required_string_4; written by ngld, with some tweaks by MageKing17
int required_string_one_of(int arg_count, ...)
{
@@ -1261,27 +1195,12 @@ void stuff_string(char *outstr, int type, int len, char *terminators)
switch (type) {
case F_RAW:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_LNAME:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_NAME:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_DATE:
case F_FILESPEC:
case F_PATHNAME:
case F_MESSAGE:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
@@ -1295,13 +1214,6 @@ void stuff_string(char *outstr, int type, int len, char *terminators)
required_string("$End Notes:");
break;
case F_FILESPEC:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
// F_MULTITEXTOLD keeping for backwards compatability with old missions
// can be deleted once all missions are using new briefing format
@@ -1320,20 +1232,6 @@ void stuff_string(char *outstr, int type, int len, char *terminators)
required_string("$end_multi_text");
break;
case F_PATHNAME:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_MESSAGE:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp, read_len);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
default:
Error(LOCATION, "Unhandled string type %d in stuff_string!", type);
}
@@ -1371,27 +1269,12 @@ void stuff_string(SCP_string &outstr, int type, char *terminators)
switch (type) {
case F_RAW:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_LNAME:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_NAME:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_DATE:
case F_FILESPEC:
case F_PATHNAME:
case F_MESSAGE:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
@@ -1405,13 +1288,6 @@ void stuff_string(SCP_string &outstr, int type, char *terminators)
required_string("$End Notes:");
break;
case F_FILESPEC:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
// F_MULTITEXTOLD keeping for backwards compatability with old missions
// can be deleted once all missions are using new briefing format
@@ -1430,20 +1306,6 @@ void stuff_string(SCP_string &outstr, int type, char *terminators)
required_string("$end_multi_text");
break;
case F_PATHNAME:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
case F_MESSAGE:
ignore_gray_space();
copy_to_eoln(read_str, terminators, Mp);
drop_trailing_white_space(read_str);
advance_to_eoln(terminators);
break;
default:
Error(LOCATION, "Unhandled string type %d in stuff_string!", type);
}
-2
View File
@@ -110,8 +110,6 @@ extern int optional_string_one_of(int arg_count, ...);
// required
extern int required_string(char *pstr);
extern int required_string_either(char *str1, char *str2);
extern int required_string_3(char *str1, char *str2, char *str3);
extern int required_string_4(char *str1, char *str2, char *str3, char *str4);
extern int required_string_one_of(int arg_count, ...);
// stuff
+14 -12
View File
@@ -9902,7 +9902,7 @@ void sexp_hud_set_max_targeting_range(int n)
if (Hud_max_targeting_range < 0) {
Hud_max_targeting_range = 0;
}
}
multi_start_callback();
multi_send_int(Hud_max_targeting_range);
@@ -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;
@@ -16541,6 +16541,7 @@ void parse_copy_damage(p_object *target_pobjp, ship *source_shipp)
// ...and shields
target_pobjp->ship_max_shield_strength = source_shipp->ship_max_shield_strength;
target_pobjp->initial_shields = fl2i(get_shield_pct(source_objp) * 100.0f);
target_pobjp->max_shield_recharge = source_shipp->max_shield_recharge;
// search through all subsystems on source ship and map them onto target ship
@@ -31465,7 +31466,8 @@ sexp_help_struct Sexp_help[] = {
"friendly-stealth-invisible - If set, the ship can't be targeted even by ships on the same team\r\n"
"hide-ship-name - If set, the ship name can't be seen when the ship is targeted\r\n"
"hidden-from-sensors - If set, the ship can't be targeted and appears on radar as a blinking dot\r\n"
"no-dynamic - Will stop allowing the AI to persue dynamic goals (eg: chasing ships it was not ordered to)\r\n"},
"no-dynamic - Will stop allowing the AI to persue dynamic goals (eg: chasing ships it was not ordered to)\r\n"
"no-secondary-lock-on - Will disable target acquisition for secondaries of all types (does not affect turrets)\r\n"},
{ OP_SHIP_VISIBLE, "ship-visible\r\n"
"\tCauses the ships listed in this sexpression to be visible with player sensors.\r\n\r\n"
@@ -32111,7 +32113,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-values\r\n"
{ OP_GET_ETS_VALUE, "get-ets-value\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 +32434,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 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)"
"\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)"
},
// Karajorma
@@ -32441,8 +32443,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 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)"
"\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)"
},
// Karajorma
@@ -32451,8 +32453,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 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)"
"\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)"
},
// Karajorma
@@ -32461,8 +32463,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 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)"
"\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)"
},
+1 -1
View File
@@ -1035,7 +1035,7 @@ typedef struct sexp_node {
typedef struct sexp_variable {
int type;
char text[TOKEN_LENGTH];
char text[256];
char variable_name[TOKEN_LENGTH];
} sexp_variable;
+4
View File
@@ -101,6 +101,10 @@ void init_new_pilot(player *p, int reset)
Mouse_sensitivity = 4;
Joy_sensitivity = 9;
Dead_zone_size = 10;
Master_sound_volume = Default_sound_volume;
Master_event_music_volume = Default_music_volume;
Master_voice_volume = Default_voice_volume;
}
// unassigned squadron
+4 -4
View File
@@ -637,22 +637,22 @@ void read_keyboard_controls( control_info * ci, float frame_time, physics_info *
if (Axis_map_to[JOY_HEADING_AXIS] >= 0) {
// check the heading on the x axis
if ( check_control(BANK_WHEN_PRESSED) ) {
delta = f2fl( axis[JOY_HEADING_AXIS] );
delta = f2fl( axis[Axis_map_to[JOY_HEADING_AXIS]] );
if ( (delta > 0.05f) || (delta < -0.05f) ) {
ci->bank -= delta;
}
} else {
ci->heading += f2fl( axis[JOY_HEADING_AXIS] );
ci->heading += f2fl( axis[Axis_map_to[JOY_HEADING_AXIS]] );
}
}
// check the pitch on the y axis
if (Axis_map_to[JOY_PITCH_AXIS] >= 0) {
ci->pitch -= f2fl( axis[JOY_PITCH_AXIS] );
ci->pitch -= f2fl( axis[Axis_map_to[JOY_PITCH_AXIS]] );
}
if (Axis_map_to[JOY_BANK_AXIS] >= 0) {
ci->bank -= f2fl( axis[JOY_BANK_AXIS] ) * 1.5f;
ci->bank -= f2fl( axis[Axis_map_to[JOY_BANK_AXIS]] ) * 1.5f;
}
// axis 2 is for throttle
+159 -434
View File
@@ -83,17 +83,7 @@
#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)
@@ -322,6 +312,7 @@ flag_def_list Ship_flags[] = {
{ "no lighting", SIF2_NO_LIGHTING, 1 },
{ "auto spread shields", SIF2_AUTO_SPREAD_SHIELDS, 1 },
{ "model point shields", SIF2_MODEL_POINT_SHIELDS, 1 },
{ "lock detail boxes", SIF2_LOCK_DETAIL_BOXES, 1 },
// to keep things clean, obsolete options go last
{ "ballistic primaries", -1, 255 }
@@ -395,6 +386,7 @@ ship_flag_name Ship_flag_names[] = {
{SF2_DONT_COLLIDE_INVIS, "don't-collide-invisible", 2, },
{SF2_NO_ETS, "no-ets", 2, },
{SF2_TOGGLE_SUBSYSTEM_SCANNING, "toggle-subsystem-scanning", 2, },
{SF2_NO_SECONDARY_LOCKON, "no-secondary-lock-on", 2, },
};
const int num_ai_tgt_weapon_flags = sizeof(ai_tgt_weapon_flags) / sizeof(flag_def_list);
@@ -700,6 +692,7 @@ void init_ship_entry(ship_info *sip)
sip->pof_file_hud[0] = '\0';
sip->num_detail_levels = 1;
sip->detail_distance[0] = 0;
sip->collision_lod = -1;
sip->cockpit_model_num = -1;
sip->model_num = -1;
sip->model_num_hud = -1;
@@ -875,9 +868,12 @@ void init_ship_entry(ship_info *sip)
sip->max_hull_strength = 100.0f;
sip->max_shield_strength = 0.0f;
sip->max_shield_recharge = 1.0f;
sip->auto_shield_spread = 0.0f;
sip->auto_shield_spread_bypass = false;
sip->auto_shield_spread_from_lod = -1;
sip->auto_shield_spread_min_span = -1.0f;
for (i = 0; i < 4; i++)
{
@@ -958,6 +954,7 @@ void init_ship_entry(ship_info *sip)
sip->thruster02_glow_len_factor = 1.0f;
sip->thruster_dist_rad_factor = 2.0f;
sip->thruster_dist_len_factor = 2.0f;
sip->thruster_glow_noise_mult = 1.0f;
sip->draw_distortion = true;
@@ -977,11 +974,14 @@ void init_ship_entry(ship_info *sip)
sip->newtonian_damp_override = false;
sip->autoaim_fov = 0.0f;
sip->autoaim_lock_snd = -1;
sip->autoaim_lost_snd = -1;
sip->topdown_offset_def = false;
vm_vec_zero(&sip->topdown_offset);
sip->engine_snd = -1;
sip->min_engine_vol = -1.0f;
sip->glide_start_snd = -1;
sip->glide_end_snd = -1;
@@ -1019,6 +1019,7 @@ void init_ship_entry(ship_info *sip)
sip->damage_lightning_type = SLT_DEFAULT;
sip->shield_impact_explosion_anim = -1;
sip->hud_gauges.clear();
sip->hud_enabled = false;
sip->hud_retail = false;
@@ -1674,6 +1675,13 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
sip->num_detail_levels = stuff_int_list(sip->detail_distance, MAX_SHIP_DETAIL_LEVELS, RAW_INTEGER_TYPE);
}
if(optional_string("$Collision LOD:")) {
stuff_int(&sip->collision_lod);
// Cap to sane values, just in case
sip->collision_lod = MAX(0, MIN(sip->collision_lod, sip->num_detail_levels));
}
// check for optional pixel colors
while(optional_string("$ND:")){
ubyte nr, ng, nb;
@@ -2010,6 +2018,9 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
if(optional_string("+Minimum Distance:"))
stuff_float(&sip->minimum_convergence_distance);
parse_sound("+Autoaim Lock Snd:", &sip->autoaim_lock_snd, sip->name);
parse_sound("+Autoaim Lost Snd:", &sip->autoaim_lost_snd, sip->name);
}
if(optional_string("$Convergence:"))
@@ -2316,6 +2327,11 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
if(optional_string("+Auto Spread:")) {
stuff_float(&sip->auto_shield_spread);
}
if(optional_string("+Minimum Weapon Span:")) {
stuff_float(&sip->auto_shield_spread_min_span);
} else {
sip->auto_shield_spread_min_span = sip->auto_shield_spread;
}
if(optional_string("+Allow Bypass:")) {
stuff_boolean(&sip->auto_shield_spread_bypass);
}
@@ -2365,6 +2381,19 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
stuff_ubyte(&sip->shield_color[2]);
}
if(optional_string("$Shield Impact Explosion:")) {
char fname[MAX_NAME_LEN];
stuff_string(fname, F_NAME, NAME_LENGTH);
if ( VALID_FNAME(fname) )
sip->shield_impact_explosion_anim = Weapon_explosions.Load(fname);
}
if(optional_string("$Max Shield Recharge:")){
stuff_float(&sip->max_shield_recharge);
CLAMP(sip->max_shield_recharge, 0.0f, 1.0f);
}
// The next five fields are used for the ETS
if (optional_string("$Power Output:"))
stuff_float(&sip->power_output);
@@ -2670,6 +2699,9 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
//Parse the engine sound
parse_sound("$EngineSnd:", &sip->engine_snd, sip->name);
if(optional_string("$Minimum Engine Volume:"))
stuff_float(&sip->min_engine_vol);
//Parse optional sound to be used for beginning of a glide
parse_sound("$GlideStartSnd:", &sip->glide_start_snd, sip->name);
@@ -2726,6 +2758,32 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
stuff_string(sip->icon_filename, F_NAME, MAX_FILENAME_LEN);
}
if ( optional_string("$Model Icon Direction:") ) {
char str[NAME_LENGTH];
stuff_string(str, F_NAME, NAME_LENGTH);
angles model_icon_angles = {0.0f,0.0f,0.0f};
if (!stricmp(str, "top")) {
model_icon_angles.p = -PI_2;
} else if (!stricmp(str, "bottom")) {
model_icon_angles.p = -PI_2;
model_icon_angles.b = 2 * PI_2;
} else if (!stricmp(str, "front")) {
model_icon_angles.h = 2 * PI_2;
} else if (!stricmp(str, "back")) {
model_icon_angles.h = 4 * PI_2;
} else if (!stricmp(str, "left")) {
model_icon_angles.h = -PI_2;
} else if (!stricmp(str, "right")) {
model_icon_angles.h = PI_2;
} else {
Warning(LOCATION, "Unrecognized value \"%s\" passed to $Model Icon Direction, ignoring...", str);
}
sip->model_icon_angles = model_icon_angles;
}
// read in filename for animation that is used in ship selection
if ( optional_string("$Ship_anim:") ) {
stuff_string(sip->anim_filename, F_NAME, MAX_FILENAME_LEN);
@@ -2875,6 +2933,10 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
stuff_boolean(&sip->draw_distortion);
}
if ( optional_string("$Thruster Glow Noise Mult:") ) {
stuff_float(&sip->thruster_glow_noise_mult);
}
while ( optional_string("$Thruster Particles:") ) {
bool afterburner = false;
thruster_particles tpart;
@@ -3149,6 +3211,15 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
stuff_vec3d(&metadata.departure_rvec);
}
if (optional_string("+arrive speed multiplier:"))
{
stuff_float(&metadata.arrive_speed_mult);
}
if (optional_string("+depart speed multiplier:"))
{
stuff_float(&metadata.depart_speed_mult);
}
//Add the new path_metadata to sip->pathMetadata keyed by path name
SCP_string pathName(path_name);
sip->pathMetadata[pathName] = metadata;
@@ -3169,7 +3240,7 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
}
while (cont_flag) {
int r = required_string_3("#End", "$Subsystem:", "$Name" );
int r = required_string_one_of(3, "#End", "$Subsystem:", "$Name" );
switch (r) {
case 0:
cont_flag = 0;
@@ -3667,8 +3738,10 @@ int parse_ship_values(ship_info* sip, bool first_time, bool replace)
case 2:
cont_flag = 0;
break;
case -1: // Possible return value if -noparseerrors is used
break;
default:
Int3(); // Impossible return value from required_string_3.
Assertion(false, "This should never happen.\n"); // Impossible return value from required_string_one_of.
}
}
@@ -5027,12 +5100,14 @@ void ship_set(int ship_index, int objnum, int ship_type)
}
objp->hull_strength = shipp->ship_max_hull_strength;
shipp->max_shield_recharge = sip->max_shield_recharge;
if (Fred_running) {
shipp->ship_max_shield_strength = 100.0f;
objp->shield_quadrant[0] = 100.0f;
} else {
shipp->ship_max_shield_strength = sip->max_shield_strength;
shield_set_strength(objp, shipp->ship_max_shield_strength);
shield_set_strength(objp, shipp->ship_max_shield_strength * shipp->max_shield_recharge);
}
if (sip->flags2 & SIF2_MODEL_POINT_SHIELDS) {
@@ -6113,7 +6188,7 @@ void ship_render(object * obj)
mst.distortion_bitmap = shipp->thruster_distortion_bitmap;
mst.use_ab = (obj->phys_info.flags & PF_AFTERBURNER_ON) || (obj->phys_info.flags & PF_BOOSTER_ON);
mst.glow_noise = shipp->thruster_glow_noise;
mst.glow_noise = shipp->thruster_glow_noise * sip->thruster_glow_noise_mult;
mst.rotvel = &Objects[shipp->objnum].phys_info.rotvel;
mst.glow_rad_factor = sip->thruster01_glow_rad_factor;
@@ -9192,6 +9267,8 @@ void change_ship_type(int n, int ship_type, int by_sexp)
objp->hull_strength = hull_pct * sp->ship_max_hull_strength;
}
sp->max_shield_recharge = sip->max_shield_recharge;
// set the correct shield strength
if (Fred_running) {
if (sp->ship_max_shield_strength)
@@ -9835,6 +9912,70 @@ int tracers[MAX_SHIPS][4][4];
float ship_get_subsystem_strength( ship *shipp, int type );
/**
* Checks whether a ship would use autoaim if it were to fire its primaries at
* the given object, taking lead into account.
*
* @param shipp the ship to check
* @param bank_to_fire the assumed primary bank
* @param obj the object to check; must be the ship's current target
*/
bool in_autoaim_fov(ship *shipp, int bank_to_fire, object *obj)
{
// Most of the code of this function has been duplicated from
// ship_fire_primary(), because it is not easy to encapsulate cleanly.
ship_info *sip;
ai_info *aip;
ship_weapon *swp;
bool has_autoaim, has_converging_autoaim;
float autoaim_fov = 0;
float dist_to_target = 0;
vec3d plr_to_target_vec;
vec3d player_forward_vec = Objects[shipp->objnum].orient.vec.fvec;
vec3d target_position;
sip = &Ship_info[shipp->ship_info_index];
aip = &Ai_info[shipp->ai_index];
swp = &shipp->weapons;
int weapon = swp->primary_bank_weapons[bank_to_fire];
weapon_info* winfo_p = &Weapon_info[weapon];
has_converging_autoaim = ((sip->aiming_flags & AIM_FLAG_AUTOAIM_CONVERGENCE || (The_mission.ai_profile->player_autoaim_fov[Game_skill_level] > 0.0f && !( Game_mode & GM_MULTIPLAYER ))) && aip->target_objnum != -1);
has_autoaim = ((has_converging_autoaim || (sip->aiming_flags & AIM_FLAG_AUTOAIM)) && aip->target_objnum != -1);
if (!has_autoaim)
return FALSE;
autoaim_fov = MAX(shipp->autoaim_fov, The_mission.ai_profile->player_autoaim_fov[Game_skill_level]);
if (aip->targeted_subsys != NULL)
{
get_subsystem_world_pos(&Objects[aip->target_objnum], aip->targeted_subsys, &target_position);
}
else
{
target_position = obj->pos;
}
dist_to_target = vm_vec_dist_quick(&Objects[shipp->objnum].pos, &target_position);
hud_calculate_lead_pos(&plr_to_target_vec, &target_position, obj, winfo_p, dist_to_target);
vm_vec_sub2(&plr_to_target_vec, &Objects[shipp->objnum].pos);
float angle_to_target = vm_vec_delta_ang(&player_forward_vec, &plr_to_target_vec, NULL);
if (angle_to_target <= autoaim_fov)
return true;
else
return false;
}
// fires a primary weapon for the given object. It also handles multiplayer cases.
// in multiplayer, the starting network signature, and number of banks fired are sent
// to all the clients in the game. All the info is passed to send_primary at the end of
@@ -12598,7 +12739,7 @@ float ship_calculate_rearm_duration( object *objp )
//find out time to repair shields
if(sip->sup_shield_repair_rate > 0.0f)
shield_rep_time = (sp->ship_max_shield_strength - shield_get_strength(objp)) / (sp->ship_max_shield_strength * sip->sup_shield_repair_rate);
shield_rep_time = ((sp->ship_max_shield_strength * sp->max_shield_recharge) - shield_get_strength(objp)) / (sp->max_shield_recharge * sp->ship_max_shield_strength * sip->sup_shield_repair_rate);
max_hull_repair = sp->ship_max_hull_strength * (The_mission.support_ships.max_hull_repair_val * 0.01f);
if ((The_mission.flags & MISSION_FLAG_SUPPORT_REPAIRS_HULL) && (max_hull_repair > objp->hull_strength) && (sip->sup_hull_repair_rate > 0.0f))
@@ -12734,7 +12875,7 @@ int ship_do_rearm_frame( object *objp, float frametime )
if ( !(objp->flags & OF_NO_SHIELDS) )
{
shield_str = shield_get_strength(objp);
if ( shield_str < shipp->ship_max_shield_strength ) {
if ( shield_str < (shipp->ship_max_shield_strength * shipp->max_shield_recharge) ) {
if ( objp == Player_obj ) {
player_maybe_start_repair_sound();
}
@@ -17729,6 +17870,8 @@ int ship_get_subobj_model_num(ship_info* sip, char* subobj_name)
void init_path_metadata(path_metadata& metadata)
{
vm_vec_zero(&metadata.departure_rvec);
metadata.arrive_speed_mult = FLT_MIN;
metadata.depart_speed_mult = FLT_MIN;
}
int ship_get_sound(object *objp, GameSoundsIndex id)
@@ -17800,421 +17943,3 @@ 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));
}
+20 -6
View File
@@ -424,7 +424,7 @@ typedef struct ship_flag_name {
int flag_list; // is this flag in the 1st or 2nd ship flags list?
} ship_flag_name;
#define MAX_SHIP_FLAG_NAMES 17
#define MAX_SHIP_FLAG_NAMES 18
extern ship_flag_name Ship_flag_names[];
// states for the flags variable within the ship structure
@@ -505,6 +505,7 @@ extern ship_flag_name Ship_flag_names[];
#define SF2_WEAPONS_LOCKED (1<<25) // Karajorma - Prevents the player from changing the weapons on the ship on the loadout screen
#define SF2_SHIP_SELECTIVE_LINKING (1<<26) // RSAXVC - Allow pilot to pick firing configuration
#define SF2_SCRAMBLE_MESSAGES (1<<27) // Goober5000 - all messages sent from this ship appear scrambled
#define SF2_NO_SECONDARY_LOCKON (1<<28) // zookeeper - secondary lock-on disabled
// If any of these bits in the ship->flags are set, ignore this ship when targeting
extern int TARGET_SHIP_IGNORE_FLAGS;
@@ -592,6 +593,8 @@ public:
float ship_max_shield_strength;
float ship_max_hull_strength;
float max_shield_recharge;
int ship_guardian_threshold; // Goober5000 - now also determines whether ship is guardian'd
@@ -928,6 +931,7 @@ extern int ship_find_exited_ship_by_signature( int signature);
#define SIF2_AUTO_SPREAD_SHIELDS (1 << 16) // zookeeper - auto spread shields
#define SIF2_DRAW_WEAPON_MODELS (1 << 17) // the ship draws weapon models of any sort (used to be a boolean)
#define SIF2_MODEL_POINT_SHIELDS (1 << 18) // zookeeper - uses model-defined shield points instead of quadrants
#define SIF2_LOCK_DETAIL_BOXES (1 << 19) // zookeeper - don't scale detail boxes or spheres based on detail settings
#define SIF_DEFAULT_VALUE 0
#define SIF2_DEFAULT_VALUE 0
@@ -1144,6 +1148,8 @@ typedef struct ship_collision_physics {
typedef struct path_metadata {
vec3d departure_rvec;
float arrive_speed_mult;
float depart_speed_mult;
} path_metadata;
// The real FreeSpace ship_info struct.
@@ -1175,6 +1181,7 @@ public:
char pof_file_hud[MAX_FILENAME_LEN]; // POF file to load for the HUD target box
int num_detail_levels; // number of detail levels for this ship
int detail_distance[MAX_SHIP_DETAIL_LEVELS]; // distance to change detail levels at
int collision_lod; // check for collisions using a LOD
int cockpit_model_num; // cockpit model
int model_num; // ship model
int model_num_hud; // model to use when rendering to the HUD (eg, mini supercap)
@@ -1295,12 +1302,15 @@ public:
float max_hull_strength; // Max hull strength of this class of ship.
float max_shield_strength;
float auto_shield_spread;
bool auto_shield_spread_bypass;
int auto_shield_spread_from_lod;
float auto_shield_spread; // Thickness of the shield
bool auto_shield_spread_bypass; // Whether weapons fired up close can bypass shields
int auto_shield_spread_from_lod; // Which LOD to project the shield from
float auto_shield_spread_min_span; // Minimum distance weapons must travel until allowed to collide with the shield
int shield_point_augment_ctrls[4]; // Re-mapping of shield augmentation controls for model point shields
float max_shield_recharge;
float hull_repair_rate; //How much of the hull is repaired every second
float subsys_repair_rate; //How fast
@@ -1320,6 +1330,7 @@ public:
ubyte shield_icon_index; // index to locate ship-specific animation frames for the shield on HUD
char icon_filename[MAX_FILENAME_LEN]; // filename for icon that is displayed in ship selection
angles model_icon_angles; // angle from which the model icon should be rendered (if not 0,0,0)
char anim_filename[MAX_FILENAME_LEN]; // filename for animation that plays in ship selection
char overhead_filename[MAX_FILENAME_LEN]; // filename for animation that plays weapons loadout
int selection_effect;
@@ -1372,6 +1383,7 @@ public:
float thruster02_glow_len_factor;
float thruster_dist_rad_factor;
float thruster_dist_len_factor;
float thruster_glow_noise_mult;
bool draw_distortion;
@@ -1398,6 +1410,7 @@ public:
vec3d topdown_offset;
int engine_snd; // handle to engine sound for ship (-1 if no engine sound)
float min_engine_vol; // minimum volume modifier for engine sound when ship is stationary
int glide_start_snd; // handle to sound to play at the beginning of a glide maneuver (default is 0 for regular throttle down sound)
int glide_end_snd; // handle to sound to play at the end of a glide maneuver (default is 0 for regular throttle up sound)
@@ -1417,10 +1430,12 @@ public:
float minimum_convergence_distance;
float convergence_distance;
vec3d convergence_offset;
int autoaim_lock_snd, autoaim_lost_snd;
float emp_resistance_mod;
float piercing_damage_draw_limit;
int shield_impact_explosion_anim;
int damage_lightning_type;
@@ -1591,6 +1606,7 @@ extern void ship_cleanup(int shipnum, int cleanup_mode);
extern void ship_destroy_instantly(object *ship_obj, int shipnum);
extern void ship_actually_depart(int shipnum, int method = SHIP_DEPARTED_WARP);
extern bool in_autoaim_fov(ship *shipp, int bank_to_fire, object *obj);
extern int ship_fire_primary_debug(object *objp); // Fire the debug laser.
extern int ship_stop_fire_primary(object * obj);
extern int ship_fire_primary(object * objp, int stream_weapons, int force = 0);
@@ -2006,6 +2022,4 @@ 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
+8 -6
View File
@@ -45,6 +45,10 @@ ubyte *Compressed_service_buffer = NULL; // Used to read in compressed data duri
#define AS_HIGHEST_MAX 999999999 // max uncompressed filesize supported is 999 meg
// Globalize the list of audio extensions for use in several sound related files
const char *audio_ext_list[] = { ".ogg", ".wav" };
const int NUM_AUDIO_EXT = sizeof(audio_ext_list) / sizeof(char*);
int Audiostream_inited = 0;
@@ -436,8 +440,6 @@ bool WaveFile::Open(char *pszFilename, bool keep_ext)
int FileSize, FileOffset;
char fullpath[MAX_PATH];
char filename[MAX_FILENAME_LEN];
const int NUM_EXT = 2;
const char *audio_ext[NUM_EXT] = { ".ogg", ".wav" };
m_total_uncompressed_bytes_read = 0;
m_max_uncompressed_bytes_to_read = AS_HIGHEST_MAX;
@@ -448,8 +450,8 @@ bool WaveFile::Open(char *pszFilename, bool keep_ext)
// if we are supposed to load the file as passed...
if (keep_ext) {
for (int i = 0; i < NUM_EXT; i++) {
if ( stristr(pszFilename, audio_ext[i]) ) {
for (int i = 0; i < NUM_AUDIO_EXT; i++) {
if ( stristr(pszFilename, audio_ext_list[i]) ) {
rc = i;
break;
}
@@ -463,14 +465,14 @@ bool WaveFile::Open(char *pszFilename, bool keep_ext)
}
// ... otherwise we just find the best match
else {
rc = cf_find_file_location_ext(filename, NUM_EXT, audio_ext, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
rc = cf_find_file_location_ext(filename, NUM_AUDIO_EXT, audio_ext_list, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
}
if (rc < 0) {
goto OPEN_ERROR;
} else {
// set proper filename for later use (assumes that it doesn't already have an extension)
strcat_s( filename, audio_ext[rc] );
strcat_s( filename, audio_ext_list[rc] );
}
m_snd_info.cfp = mmioOpen( fullpath, NULL, MMIO_ALLOCBUF | MMIO_READ );
+3
View File
@@ -46,6 +46,9 @@ typedef struct {
} STRHDL;
#endif // NEED_STRHDL
extern const char *audio_ext_list[];
extern const int NUM_AUDIO_EXT;
// Initializes the audio streaming library. Called
// automatically when the sound stuff is inited.
void audiostream_init();
+2 -3
View File
@@ -18,6 +18,7 @@
#include "sound/acm.h"
#include "osapi/osapi.h"
#include "sound/dscap.h"
#include "sound/audiostr.h"
typedef struct sound_buffer
@@ -460,8 +461,6 @@ int ds_parse_sound_info(char *real_filename, sound_info *s_info)
int rc, FileSize, FileOffset;
char fullpath[MAX_PATH];
char filename[MAX_FILENAME_LEN];
const int NUM_EXT = 2;
const char *audio_ext[NUM_EXT] = { ".ogg", ".wav" };
int rval = -1;
if ( (real_filename == NULL) || (s_info == NULL) ) {
@@ -473,7 +472,7 @@ int ds_parse_sound_info(char *real_filename, sound_info *s_info)
char *p = strrchr(filename, '.');
if ( p ) *p = 0;
rc = cf_find_file_location_ext(filename, NUM_EXT, audio_ext, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
rc = cf_find_file_location_ext(filename, NUM_AUDIO_EXT, audio_ext_list, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
if (rc < 0) {
return -1;
+188 -153
View File
@@ -1,153 +1,188 @@
<GRAMMAR LANGID="409">
<DEFINE>
<ID NAME="VID_Counter" VAL="80"/>
<ID NAME="VID_DestoryTarget" VAL="10"/>
<ID NAME="VID_DisableTarget" VAL="11"/>
<ID NAME="VID_DisarmTarget" VAL="12"/>
<ID NAME="VID_DestroySubsys" VAL="13"/>
<ID NAME="VID_ProtectTarget" VAL="14"/>
<ID NAME="VID_IgnoreTarget" VAL="15"/>
<ID NAME="VID_FormWing" VAL="16"/>
<ID NAME="VID_CoverMe" VAL="17"/>
<ID NAME="VID_EngageEnemy" VAL="18"/>
<ID NAME="VID_Depart" VAL="19"/>
<ID NAME="VID_Action" VAL="250"/>
<ID NAME="VID_WingName" VAL="251"/>
<ID NAME="VID_TopMenu" VAL="252"/>
<ID NAME="VID_ShipName" VAL="253"/>
<ID NAME="VID_Number" VAL="254"/>
<ID NAME="VID_Ships" VAL="50"/>
<ID NAME="VID_Wings" VAL="51"/>
<ID NAME="VID_AllFighters" VAL="52"/>
<ID NAME="VID_AllWings" VAL="53"/>
<ID NAME="VID_Reinforcements" VAL="54"/>
<ID NAME="VID_SupportShip" VAL="55"/>
<ID NAME="VID_AbortSupport" VAL="56"/>
<ID NAME="VID_Cancel" VAL="57"/>
<ID NAME="VID_Command" VAL="58"/>
<ID NAME="VID_More" VAL="59"/>
</DEFINE>
<RULE ID="VID_WingName" TOPLEVEL="ACTIVE">
<L PROPID="VID_WingName">
<P VAL="0">Alpha</P>
<P VAL="1">Beta</P>
<P VAL="2">Gamma</P>
<P VAL="3">Delta</P>
<P VAL="4">Epsilon</P>
<P VAL="5">Zeta</P>
<P VAL="6">Eta</P>
<P VAL="7">Theta</P>
<P VAL="8">Iota</P>
<P VAL="9">Kappa</P>
<P VAL="10">Lambda</P>
<P VAL="11">Mu</P>
<P VAL="12">Nu</P>
<P VAL="13">Xi</P>
<P VAL="14">Omicron</P>
<P VAL="15">Pi</P>
<P VAL="16">Rho</P>
<P VAL="17">Sigma</P>
<P VAL="18">Tau</P>
<P VAL="19">Upsilon</P>
<P VAL="20">Phi</P>
<P VAL="21">Chi</P>
<P VAL="22">Psi</P>
<P VAL="23">Omega</P>
</L>
<O>wing</O>
</RULE>
<RULE ID="VID_ShipName" TOPLEVEL="ACTIVE">
<L PROPID="VID_ShipName">
<P VAL="0">Alpha</P>
<P VAL="1">Beta</P>
<P VAL="2">Gamma</P>
<P VAL="3">Delta</P>
<P VAL="4">Epsilon</P>
<P VAL="5">Zeta</P>
<P VAL="6">Eta</P>
<P VAL="7">Theta</P>
<P VAL="8">Iota</P>
<P VAL="9">Kappa</P>
<P VAL="10">Lambda</P>
<P VAL="11">Mu</P>
<P VAL="12">Nu</P>
<P VAL="13">Xi</P>
<P VAL="14">Omicron</P>
<P VAL="15">Pi</P>
<P VAL="16">Rho</P>
<P VAL="17">Sigma</P>
<P VAL="18">Tau</P>
<P VAL="19">Upsilon</P>
<P VAL="20">Phi</P>
<P VAL="21">Chi</P>
<P VAL="22">Psi</P>
<P VAL="23">Omega</P>
</L>
<L PROPID="VID_Number">
<P VAL = "1">one</P>
<P VAL = "2">two</P>
<P VAL = "3">three</P>
<P VAL = "4">four</P>
<P VAL = "5">five</P>
<P VAL = "6">six</P>
<P VAL = "7">seven</P>
<P VAL = "8">eight</P>
<P VAL = "9">nine</P>
</L>
</RULE>
<RULE ID="VID_TopMenu" TOPLEVEL="ACTIVE">
<L PROPID="VID_TopMenu">
<P VAL="VID_Ships" >Ships</P>
<P VAL="VID_Wings" >Wings</P>
<P VAL="VID_AllFighters">All Fighters</P>
<P VAL="VID_AllWings" >All Wings</P>
<P VAL="VID_Reinforcements">Reinforcements</P>
<P VAL="VID_SupportShip">Support ship</P>
<P VAL="VID_SupportShip">Rearm</P>
<P VAL="VID_SupportShip">Repair</P>
<P VAL="VID_AbortSupport">Abort</P>
<P VAL="VID_Cancel">Cancel</P>
<P VAL="VID_Command">Command</P>
<P VAL="VID_More">More</P>
</L>
</RULE>
<RULE ID="VID_Action" TOPLEVEL="ACTIVE">
<L PROPID="VID_Action">
<P VAL="VID_DestoryTarget">Destroy my target</P>
<P VAL="VID_DisableTarget">Disable my target</P>
<P VAL="VID_DisarmTarget" >Disarm my target</P>
<P VAL="VID_DestroySubsys">Destroy subsystem</P>
<P VAL="VID_ProtectTarget">Protect my target</P>
<P VAL="VID_IgnoreTarget" >Ignore my target</P>
<P VAL="VID_FormWing" >Form on my wing</P>
<P VAL="VID_CoverMe" >Cover me</P>
<P VAL="VID_EngageEnemy" >Engage Enemy</P>
<P VAL="VID_EngageEnemy" >Attack</P>
<P VAL="VID_Depart" >Depart</P>
</L>
</RULE>
</GRAMMAR>
<GRAMMAR>
<DEFINE>
<ID NAME="VID_Counter" VAL="80"/>
<ID NAME="VID_DestroyTarget" VAL="10"/>
<ID NAME="VID_DisableTarget" VAL="11"/>
<ID NAME="VID_DisarmTarget" VAL="12"/>
<ID NAME="VID_DestroySubsys" VAL="13"/>
<ID NAME="VID_ProtectTarget" VAL="14"/>
<ID NAME="VID_IgnoreTarget" VAL="15"/>
<ID NAME="VID_FormWing" VAL="16"/>
<ID NAME="VID_CoverMe" VAL="17"/>
<ID NAME="VID_EngageEnemy" VAL="18"/>
<ID NAME="VID_Depart" VAL="19"/>
<ID NAME="VID_Action" VAL="250"/>
<ID NAME="VID_WingName" VAL="251"/>
<ID NAME="VID_TopMenu" VAL="252"/>
<ID NAME="VID_ShipName" VAL="253"/>
<ID NAME="VID_Number" VAL="254"/>
<ID NAME="VID_Ships" VAL="50"/>
<ID NAME="VID_Wings" VAL="51"/>
<ID NAME="VID_AllFighters" VAL="52"/>
<ID NAME="VID_AllWings" VAL="53"/>
<ID NAME="VID_Reinforcements" VAL="54"/>
<ID NAME="VID_SupportShip" VAL="55"/>
<ID NAME="VID_AbortSupport" VAL="56"/>
<ID NAME="VID_Cancel" VAL="57"/>
<ID NAME="VID_Command" VAL="58"/>
<ID NAME="VID_More" VAL="59"/>
<ID NAME="VID_shields" VAL="100"/>
<ID NAME="VID_targeting" VAL="101"/>
<ID NAME="VID_power" VAL="102"/>
<ID NAME="VID_speed" VAL="103"/>
<ID name="VID_other" VAL="104"/>
</DEFINE>
<RULE ID="VID_WingName" TOPLEVEL="ACTIVE">
<L PROPID="VID_WingName">
<P VAL="0">Alpha</P>
<P VAL="1">Beta</P>
<P VAL="2">Gamma</P>
<P VAL="3">Delta</P>
<P VAL="4">Epsilon</P>
<P VAL="5">Zeta</P>
<P VAL="6">Eta</P>
<P VAL="7">Theta</P>
<P VAL="8">Iota</P>
<P VAL="9">Kappa</P>
<P VAL="10">Lambda</P>
<P VAL="11">Mu</P>
<P VAL="12">Nu</P>
<P VAL="13">Xi</P>
<P VAL="14">Omicron</P>
<P VAL="15">Pi</P>
<P VAL="16">Rho</P>
<P VAL="17">Sigma</P>
<P VAL="18">Tau</P>
<P VAL="19">Upsilon</P>
<P VAL="20">Phi</P>
<P VAL="21">Chi</P>
<P VAL="22">Psi</P>
<P VAL="23">Omega</P>
</L>
<L PROPID="VID_ShipName">
<P VAl="0">Wing</P>
<P VAL="1">one</P>
<P VAL="2">two</P>
<P VAL="3">three</P>
<P VAL="4">four</P>
<P VAL="5">five</P>
<P VAL="6">six</P>
<P VAL="7">seven</P>
<P VAL="8">eight</P>
<P VAL="9">nine</P>
</L>
<O>
<RULEREF refID="VID_Action"/>
</O>
</RULE>
<RULE ID="VID_Action" TOPLEVEL="ACTIVE">
<L PROPID="VID_Action">
<P VAL="VID_DestroyTarget">Destroy my target</P>
<P VAL="VID_DisableTarget">Disable my target</P>
<P VAL="VID_DisarmTarget">Disarm my target</P>
<P VAL="VID_DestroySubsys">Destroy subsystem</P>
<P VAL="VID_ProtectTarget">Protect my target</P>
<P VAL="VID_IgnoreTarget">Ignore my target</P>
<P VAL="VID_FormWing">Form on my wing</P>
<P VAL="VID_CoverMe">Cover me</P>
<P VAL="VID_EngageEnemy">Engage Enemy</P>
<P VAL="VID_EngageEnemy">Attack</P>
<P VAL="VID_Depart">Depart</P>
</L>
</RULE>
<RULE ID="VID_TopMenu" TOPLEVEL="ACTIVE">
<L PROPID="VID_TopMenu">
<P VAL="VID_Ships">Ships</P>
<P VAL="VID_Wings">Wings</P>
<P VAL="VID_AllFighters">All Fighters<O><RULEREF REFID="VID_Action"/></O></P>
<P VAL="VID_AllWings">All Wings<O><RULEREF REFID="VID_Action"/></O></P>
<P VAL="VID_Reinforcements">Reinforcements</P>
<P VAL="VID_SupportShip">Support ship</P>
<P VAL="VID_SupportShip">Rearm</P>
<P VAL="VID_SupportShip">Repair</P>
<P VAL="VID_AbortSupport">Abort</P>
<P VAL="VID_Cancel">Cancel</P>
<P VAL="VID_Command">Command</P>
<P VAL="VID_More">More</P>
</L>
</RULE>
<RULE ID="VID_shields" TOPLEVEL="ACTIVE">
<L PROPID="VID_shields">
<P VAL="0">Shields forward</P>
<P VAL="1">Shields left</P>
<P VAL="2">Shields right</P>
<P VAL="3">Shields back</P>
<P VAL="4">Shields all</P>
</L>
</RULE>
<RULE ID="VID_targeting" TOPLEVEL="ACTIVE">
<L PROPID="VID_targeting">
<P VAL="0">Target next</P>
<P VAL="1">Target previous</P>
<P VAL="2">Target hostile</P>
<P VAL="3">Target previous hostile</P>
<P VAL="4">Auto target</P>
<P VAL="5">Target Friendly</P>
<P VAL="6">Target previous friendly</P>
<P VAL="7">Target sight</P>
<P VAL="8">Targets attacker</P>
<P VAL="9">Target sender</P>
<P VAL="10">Stop targeting</P>
<P VAL="11">Target sight subsystem</P>
<P VAL="12">Target next subsystem</P>
<P VAL="13">Target previous subsystem</P>
<P VAL="14">Stop targeting subsystems</P>
<P val="50">Target closest attacker</P>
<P VAL="88">Target next escort</P>
<P VAL="89">Target closest repair ship</P>
<P VAL="90">Target next uninspected</P>
<P VAL="91">Target previous uninspected</P>
<P VAL="92">Target newest</P>
<P VAL="93">Target next turret</P>
<P VAL="94">Target previous turrent</P>
<P VAL="95">Target next bomb</P>
<P VAL="96">Target previous bomb</P>
</L>
</RULE>
<RULE ID="VID_speed" TOPLEVEL="ACTIVE">
<L PROPID="VID_speed">
<P VAL="15">Match speed</P>
<P VAL="16">Auto match</P>
</L>
</RULE>
<RULE ID="VID_other" TOPLEVEL="ACTIVE">
<L PROPID="VID_other">
<P VAL="19">Next primary</P>
<P VAL="20">Previous primary</P>
<P VAL="21">cycle secondary</P>
<P VAL="22">secondary rate</P>
<P VAL="63">Radar Range</P>
<P VAL="117">Glide toggle</P>
</L>
</RULE>
<RULE ID="VID_power" TOPLEVEL="ACTIVE">
<L PROPID="VID_power">
<P VAL="69">Increase weapon</P>
<P VAL="70">Decrease weapon</P>
<P VAL="71">Increase shield</P>
<P VAL="72">Decrease shield</P>
<P VAL="73">Increase engine</P>
<P VAL="74">Decrease engine</P>
<P VAL="75">Power balance</P>
<P VAL="201">Max weapons</P>
<P VAL="202">Min weapons</P>
<P VAL="203">Max shields</P>
<P VAL="204">Min shields</P>
<P VAL="205">Max engines</P>
<P VAL="206">Min engines</P>
</L>
</RULE>
</GRAMMAR>
+15 -8
View File
@@ -12,6 +12,7 @@
#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"
@@ -49,10 +50,12 @@ typedef struct sound {
SCP_vector<sound> Sounds;
int Sound_enabled = FALSE; // global flag to turn sound on/off
int Snd_sram; // mem (in bytes) used up by storing sounds in system memory
float Master_sound_volume = 1.0f; // range is 0 -> 1, used for non-music sound fx
float Master_voice_volume = 0.7f; // range is 0 -> 1, used for all voice playback
int Sound_enabled = FALSE; // global flag to turn sound on/off
int Snd_sram; // mem (in bytes) used up by storing sounds in system memory
float Default_sound_volume = 1.0f; // range is 0 -> 1, used for non-music sound fx
float Default_voice_volume = 0.7f; // range is 0 -> 1, used for all voice playback
float Master_sound_volume = Default_sound_volume;
float Master_voice_volume = Default_voice_volume;
unsigned int SND_ENV_DEFAULT = 0;
@@ -284,8 +287,6 @@ int snd_load( game_snd *gs, int allow_hardware_load )
int rc, FileSize, FileOffset;
char fullpath[MAX_PATH];
char filename[MAX_FILENAME_LEN];
const int NUM_EXT = 2;
const char *audio_ext[NUM_EXT] = { ".ogg", ".wav" };
size_t n;
@@ -330,7 +331,7 @@ int snd_load( game_snd *gs, int allow_hardware_load )
char *p = strrchr(filename, '.');
if ( p ) *p = 0;
rc = cf_find_file_location_ext(filename, NUM_EXT, audio_ext, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
rc = cf_find_file_location_ext(filename, NUM_AUDIO_EXT, audio_ext_list, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
if (rc < 0)
return -1;
@@ -339,7 +340,7 @@ int snd_load( game_snd *gs, int allow_hardware_load )
CFILE *fp = cfopen_special(fullpath, "rb", FileSize, FileOffset);
// ok, we got it, so set the proper filename for logging purposes
strcat_s(filename, audio_ext[rc]);
strcat_s(filename, audio_ext_list[rc]);
nprintf(("Sound", "SOUND => Loading '%s'\n", filename));
@@ -1518,6 +1519,12 @@ 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()
+2
View File
@@ -62,6 +62,8 @@ typedef struct sound_env
} sound_env;
extern int Sound_enabled;
extern float Default_sound_volume; // 0 -> 1.0
extern float Default_voice_volume; // 0 -> 1.0
extern float Master_sound_volume; // 0 -> 1.0
extern float Master_voice_volume; // 0 -> 1.0
extern int Snd_sram; // System memory consumed by sound data
+223 -110
View File
@@ -32,6 +32,7 @@
#include "io/keycontrol.h"
#include "playerman/player.h"
#include "ship/ship.h"
#include "cfile/cfile.h"
CComPtr<ISpRecoGrammar> p_grammarObject; // Pointer to our grammar object
CComPtr<ISpRecoContext> p_recogContext; // Pointer to our recognition context
@@ -39,16 +40,86 @@ CComPtr<ISpRecognizer> p_recogEngine; // Pointer to our recognition engine i
const bool DEBUG_ON = false;
extern int button_function(int n);
extern void hud_squadmsg_msg_all_fighters();
extern void hud_squadmsg_shortcut( int command );
//extern void hud_squadmsg_ship_command();
extern int Msg_instance;;
extern int Msg_shortcut_command;
extern int Squad_msg_mode;
void doVid_Action(int action)
{
// If menu is up
if(Player->flags & PLAYER_FLAGS_MSG_MODE)
{
switch(action)
{
case VID_DestroyTarget: Msg_shortcut_command = ATTACK_TARGET_ITEM; break;
case VID_DisableTarget: Msg_shortcut_command = DISABLE_TARGET_ITEM; break;
case VID_DisarmTarget: Msg_shortcut_command = DISARM_TARGET_ITEM; break;
case VID_DestroySubsys: Msg_shortcut_command = DISABLE_SUBSYSTEM_ITEM; break;
case VID_ProtectTarget: Msg_shortcut_command = PROTECT_TARGET_ITEM; break;
case VID_IgnoreTarget: Msg_shortcut_command = IGNORE_TARGET_ITEM; break;
case VID_FormWing: Msg_shortcut_command = FORMATION_ITEM; break;
case VID_CoverMe: Msg_shortcut_command = COVER_ME_ITEM; break;
case VID_EngageEnemy: Msg_shortcut_command = ENGAGE_ENEMY_ITEM; break;
case VID_Depart: Msg_shortcut_command = DEPART_ITEM; break;
default: Msg_shortcut_command = -1; break;
}
if(Msg_instance == MESSAGE_ALL_FIGHTERS || Squad_msg_mode == SM_MODE_ALL_FIGHTERS )
{
// nprintf(("warning", "VOICER hud_squadmsg_send_to_all_fighters\n"));
hud_squadmsg_send_to_all_fighters(Msg_shortcut_command);
}
else if(Squad_msg_mode == SM_MODE_SHIP_COMMAND)
{
// nprintf(("warning", "VOICER msg ship %d\n", Msg_instance));
hud_squadmsg_send_ship_command( Msg_instance, Msg_shortcut_command, 1 );
}
else if(Squad_msg_mode == SM_MODE_WING_COMMAND)
{
// nprintf(("warning", "VOICER msg wing %d\n", Msg_instance));
hud_squadmsg_send_wing_command( Msg_instance, Msg_shortcut_command, 1 );
}
else if(Squad_msg_mode == SM_MODE_REINFORCEMENTS )
{
}
hud_squadmsg_toggle();
}
else
{
switch(action)
{
case VID_DestroyTarget: button_function(ATTACK_MESSAGE); break;
case VID_DisableTarget: button_function(DISABLE_MESSAGE); break;
case VID_DisarmTarget: button_function(DISARM_MESSAGE); break;
case VID_DestroySubsys: button_function(ATTACK_SUBSYSTEM_MESSAGE); break;
case VID_ProtectTarget: button_function(PROTECT_MESSAGE); break;
case VID_IgnoreTarget: button_function(IGNORE_MESSAGE); break;
case VID_FormWing: button_function(FORM_MESSAGE); break;
case VID_CoverMe: button_function(COVER_MESSAGE); break;
case VID_EngageEnemy: button_function(ENGAGE_MESSAGE); break;
case VID_Depart: button_function(WARP_MESSAGE); break;
}
}
}
bool VOICEREC_init(HWND hWnd, int event_id, int grammar_id, int command_resource)
{
HRESULT hr = S_OK;
CComPtr<ISpAudio> cpAudio;
while ( 1 )
while (true)
{
// create a recognition engine
hr = p_recogEngine.CoCreateInstance(CLSID_SpSharedRecognizer);
if ( FAILED( hr ) )
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to create a recognition engine\n","Error",MB_OK);
printf("Failed to create a recognition engine\n");
@@ -57,7 +128,7 @@ bool VOICEREC_init(HWND hWnd, int event_id, int grammar_id, int command_resource
// create the command recognition context
hr = p_recogEngine->CreateRecoContext( &p_recogContext );
if ( FAILED( hr ) )
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to create the command recognition context\n","Error",MB_OK);
printf("Failed to create the command recognition context\n");
@@ -67,7 +138,7 @@ bool VOICEREC_init(HWND hWnd, int event_id, int grammar_id, int command_resource
// Let SR know that window we want it to send event information to, and using
// what message
hr = p_recogContext->SetNotifyWindowMessage( hWnd, event_id, 0, 0 );
if ( FAILED( hr ) )
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to SetNotifyWindowMessage\n","Error",MB_OK);
break;
@@ -76,33 +147,38 @@ bool VOICEREC_init(HWND hWnd, int event_id, int grammar_id, int command_resource
// Tell SR what types of events interest us. Here we only care about command
// recognition.
hr = p_recogContext->SetInterest( SPFEI(SPEI_RECOGNITION), SPFEI(SPEI_RECOGNITION) );
if ( FAILED( hr ) )
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to set events\n","Error",MB_OK);
break;
}
// Load our grammar, which is the compiled form of simple.xml bound into this executable as a
// user defined ("SRGRAMMAR") resource type.
// Create a grammar
hr = p_recogContext->CreateGrammar(grammar_id, &p_grammarObject);
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to load grammar\n","Error",MB_OK);
MessageBox(hWnd,"Failed to create grammar\n","Error",MB_OK);
break;
}
hr = p_grammarObject->LoadCmdFromResource(NULL, MAKEINTRESOURCEW(command_resource),
// Load our grammar from data\phrases.xml, or if that doesn't exist, from the compiled in
// user defined ("SRGRAMMAR") resource type.
hr = p_grammarObject->LoadCmdFromFile(L"data\\phrases.xml", SPLO_STATIC);
if (FAILED(hr))
{
hr = p_grammarObject->LoadCmdFromResource(NULL, MAKEINTRESOURCEW(command_resource),
L"SRGRAMMAR", MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
SPLO_DYNAMIC);
if ( FAILED( hr ) )
{
MessageBox(hWnd,"Failed to load resource\n","Error",MB_OK);
break;
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to load resource\n","Error",MB_OK);
break;
}
}
// Set rules to active, we are now listening for commands
hr = p_grammarObject->SetRuleState(NULL, NULL, SPRS_ACTIVE );
if ( FAILED( hr ) )
if (FAILED(hr))
{
MessageBox(hWnd,"Failed to set listening for commands\n","Error",MB_OK);
break;
@@ -112,7 +188,7 @@ bool VOICEREC_init(HWND hWnd, int event_id, int grammar_id, int command_resource
}
// if we failed and have a partially setup SAPI, close it all down
if ( FAILED( hr ) )
if (FAILED(hr))
{
VOICEREC_deinit();
}
@@ -195,14 +271,6 @@ char *wing_names[] =
* Called to Execute commands that have been identified by the speech engine.
*
******************************************************************************/
extern int button_function(int n);
extern void hud_squadmsg_msg_all_fighters();
extern void hud_squadmsg_shortcut( int command );
//extern void hud_squadmsg_ship_command();
extern int Msg_instance;;
extern int Msg_shortcut_command;
extern int Squad_msg_mode;
char VOICEREC_lastCommand[30];
@@ -214,116 +282,103 @@ void VOICEREC_execute_command(ISpPhrase *pPhrase, HWND hWnd)
// the grammar. Switch on it to figure out which command was recognized.
if (SUCCEEDED(pPhrase->GetPhrase(&pElements)))
{
#ifndef NDEBUG
if(DEBUG_ON)
{
WCHAR *pwszText;
char szText[255];
int i;
pPhrase->GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE, &pwszText, NULL);
MessageBoxW(NULL,pwszText,NULL,MB_OK);
memset(szText, 0, 255);
for (i=0;i<254;i++)
{
if (*(pwszText + i) == 0)
{
break;
}
szText[i] = (char)(*(pwszText + i));
szText[i+1] = 0;
}
mprintf(( "recognized speech : %s \n", szText ));
mprintf(( "speech Rule.ulId : %d \n", pElements->Rule.ulId ));
//MessageBoxW(NULL,pwszText,NULL,MB_OK);
}
#endif
int part1, part2, part3;
part1 = part2 = part3 = -1;
switch ( pElements->Rule.ulId )
{
case VID_ShipName:
{
int wingType = pElements->pProperties->vValue.ulVal;
int shipNum = pElements->pProperties->pNextSibling->vValue.ulVal;
char shipName[NAME_LENGTH];
wing_bash_ship_name(shipName, wing_names[wingType], shipNum);
Msg_instance = ship_name_lookup(shipName);
// Can't issue commands to yourself or to nobody
if(Msg_instance < 0 || Msg_instance == Player_obj->instance)
{
break;
}
if(!(Player->flags & PLAYER_FLAGS_MSG_MODE))
{
hud_squadmsg_toggle();
}
hud_squadmsg_do_mode(SM_MODE_SHIP_COMMAND);
break;
}
case VID_WingName:
{
int wingType = pElements->pProperties->vValue.ulVal;
Msg_instance = wing_lookup(wing_names[wingType]);
if (Msg_instance < 0)
break;
if(!(Player->flags & PLAYER_FLAGS_MSG_MODE))
part1 = pElements->pProperties->vValue.ulVal;
if (pElements->pProperties->pNextSibling)
{
hud_squadmsg_toggle();
part2 = pElements->pProperties->pNextSibling->vValue.ulVal;
if (pElements->pProperties->pNextSibling->pNextSibling)
{
part3 = pElements->pProperties->pNextSibling->pNextSibling->vValue.ulVal;
}
}
if (part2 == -1)
break; // no ship number or wing
if (part2 == 0)
{
Msg_instance = wing_lookup(wing_names[part1]);
if (Msg_instance < 0)
break;
if(!(Player->flags & PLAYER_FLAGS_MSG_MODE))
{
hud_squadmsg_toggle();
}
hud_squadmsg_do_mode(SM_MODE_WING_COMMAND);
}
else
{
char shipName[NAME_LENGTH];
wing_bash_ship_name(shipName, wing_names[part1], part2);
Msg_instance = ship_name_lookup(shipName);
// Can't issue commands to yourself or to nobody
if (Msg_instance < 0 || Msg_instance == Player_obj->instance)
{
break;
}
if(!(Player->flags & PLAYER_FLAGS_MSG_MODE))
{
hud_squadmsg_toggle();
}
hud_squadmsg_do_mode(SM_MODE_SHIP_COMMAND);
}
hud_squadmsg_do_mode(SM_MODE_WING_COMMAND);
break;
if (part3 == -1)
break;
}
case VID_Action:
{
int action = pElements->pProperties->vValue.ulVal;
// If menu is up
if(Player->flags & PLAYER_FLAGS_MSG_MODE)
int action;
if (part3 == -1)
{
switch(action)
{
case VID_DestoryTarget: Msg_shortcut_command = ATTACK_TARGET_ITEM; break;
case VID_DisableTarget: Msg_shortcut_command = DISABLE_TARGET_ITEM; break;
case VID_DisarmTarget: Msg_shortcut_command = DISARM_TARGET_ITEM; break;
case VID_DestroySubsys: Msg_shortcut_command = DISABLE_SUBSYSTEM_ITEM; break;
case VID_ProtectTarget: Msg_shortcut_command = PROTECT_TARGET_ITEM; break;
case VID_IgnoreTarget: Msg_shortcut_command = IGNORE_TARGET_ITEM; break;
case VID_FormWing: Msg_shortcut_command = FORMATION_ITEM; break;
case VID_CoverMe: Msg_shortcut_command = COVER_ME_ITEM; break;
case VID_EngageEnemy: Msg_shortcut_command = ENGAGE_ENEMY_ITEM; break;
case VID_Depart: Msg_shortcut_command = DEPART_ITEM; break;
default: Msg_shortcut_command = -1; break;
}
if(Msg_instance == MESSAGE_ALL_FIGHTERS || Squad_msg_mode == SM_MODE_ALL_FIGHTERS )
{
// nprintf(("warning", "VOICER hud_squadmsg_send_to_all_fighters\n"));
hud_squadmsg_send_to_all_fighters(Msg_shortcut_command);
}
else if(Squad_msg_mode == SM_MODE_SHIP_COMMAND)
{
// nprintf(("warning", "VOICER msg ship %d\n", Msg_instance));
hud_squadmsg_send_ship_command( Msg_instance, Msg_shortcut_command, 1 );
}
else if(Squad_msg_mode == SM_MODE_WING_COMMAND)
{
// nprintf(("warning", "VOICER msg wing %d\n", Msg_instance));
hud_squadmsg_send_wing_command( Msg_instance, Msg_shortcut_command, 1 );
}
else if(Squad_msg_mode == SM_MODE_REINFORCEMENTS )
{
}
hud_squadmsg_toggle();
action = pElements->pProperties->vValue.ulVal;
}
else
{
switch(action)
{
case VID_DestoryTarget: button_function(ATTACK_MESSAGE); break;
case VID_DisableTarget: button_function(DISABLE_MESSAGE); break;
case VID_DisarmTarget: button_function(DISARM_MESSAGE); break;
case VID_DestroySubsys: button_function(ATTACK_SUBSYSTEM_MESSAGE); break;
case VID_ProtectTarget: button_function(PROTECT_MESSAGE); break;
case VID_IgnoreTarget: button_function(IGNORE_MESSAGE); break;
case VID_FormWing: button_function(FORM_MESSAGE); break;
case VID_CoverMe: button_function(COVER_MESSAGE); break;
case VID_EngageEnemy: button_function(ENGAGE_MESSAGE); break;
case VID_Depart: button_function(WARP_MESSAGE); break;
}
action = part3;
}
doVid_Action(action);
break;
}
@@ -359,6 +414,9 @@ void VOICEREC_execute_command(ISpPhrase *pPhrase, HWND hWnd)
// Msg_instance = MESSAGE_ALL_FIGHTERS;
// Squad_msg_mode == SM_MODE_ALL_FIGHTERS
hud_squadmsg_msg_all_fighters();
if (pElements->pProperties->pNextSibling) {
doVid_Action(pElements->pProperties->pNextSibling->vValue.ulVal);
}
// if(Msg_shortcut_command == -1)
// {
@@ -384,8 +442,62 @@ void VOICEREC_execute_command(ISpPhrase *pPhrase, HWND hWnd)
break;
}
case VID_shields:
{
int action = pElements->pProperties->vValue.ulVal;
mprintf(("Shield Transfer %d \n", action));
switch(action)
{
case 0: button_function( SHIELD_XFER_TOP ); break;
case 1: button_function( SHIELD_XFER_LEFT ); break;
case 2: button_function( SHIELD_XFER_RIGHT ); break;
case 3: button_function( SHIELD_XFER_BOTTOM ); break;
case 4: button_function( SHIELD_EQUALIZE ); break;
}
break;
}
case VID_speed:
case VID_targeting:
case VID_other:
{
int action = pElements->pProperties->vValue.ulVal;
mprintf(("Targeting/speed %d \n", action));
if (action > -1)
{
button_function( action );
}
break;
/*
switch(action)
{
case 0: button_function( TARGET_NEXT ); break;
cas
}
break;
*/
}
case VID_power:
{
int action = pElements->pProperties->vValue.ulVal;
if (action >= INCREASE_WEAPON && action <= ETS_EQUALIZE)
{
button_function( action );
}
else
// this is for the max engines etc.
{
for (int i=1; i<7; i++)
{
button_function( action - 132 );
}
}
break;
}
/*
@@ -404,5 +516,6 @@ hud_squadmsg_do_mode( SM_MODE_SHIP_COMMAND );
}
#endif // VOICER
#endif // _WIN32
+1 -1
View File
@@ -59,7 +59,7 @@ extern void parse_medal_tbl();
#define MM_POPUP 1 // called from within some other tight loop (don't use gameseq_ functions)
// main medals screen
void medal_main_init(player *pl,int mode = MM_NORMAL);
void medal_main_init(player *pl, int mode = MM_NORMAL);
// return 0 if the screen should close (used for MM_POPUP mode)
int medal_main_do();
+24
View File
@@ -2338,6 +2338,30 @@ 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 -2
View File
@@ -141,6 +141,7 @@ extern int Num_weapon_subtypes;
#define WF_DESTROYED_BY_WEAPON (1<<6) // destroyed by damage from other weapon
#define WF_SPAWNED (1<<7) //Spawned from a spawning type weapon
#define WF_HOMING_UPDATE_NEEDED (1<<8) // this is a newly spawned homing weapon which needs to update client machines
#define WF_NO_HOMING (1<<9) // this weapon should ignore any homing behavior it'd usually have
// flags for setting burst fire
#define WBF_FAST_FIRING (1<<0) // burst is to use only the firewait to determine firing delays
@@ -416,6 +417,7 @@ typedef struct weapon_info {
int impact_weapon_expl_index; // Index into Weapon_expl_info of which ANI should play when this thing impacts something
float impact_explosion_radius; // How big the explosion should be
float shield_impact_explosion_radius; // How big the shield hit explosion should be
int dinky_impact_weapon_expl_index;
float dinky_impact_explosion_radius;
@@ -670,7 +672,6 @@ 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);
void shield_impact_explosion(vec3d *hitpos, object *objp, float radius, int idx);
#endif
+43 -8
View File
@@ -938,6 +938,8 @@ void init_weapon_entry(int weap_info_index)
wip->impact_explosion_radius = 1.0f;
wip->impact_weapon_expl_index = -1;
wip->shield_impact_explosion_radius = 1.0f;
wip->dinky_impact_explosion_radius = 1.0f;
wip->dinky_impact_weapon_expl_index = -1;
@@ -1063,6 +1065,7 @@ void init_weapon_entry(int weap_info_index)
wip->burst_delay = 1.0f; // 1 second, just incase its not defined
wip->burst_shots = 0;
wip->burst_flags = 0;
generic_anim_init( &wip->thruster_flame );
@@ -1305,10 +1308,22 @@ int parse_weapon(int subtype, bool replace)
if(optional_string("@Laser Color:"))
{
// This might be confusing at first glance. If we're a modular table (!first_time),
// AND we're providing a new color for the laser (being in this block at all),
// AND the RGB values for laser_color_1 and laser_color_2 match...
// THEN we conclude that laser_color_2 wasn't explicitly defined before, and the modder would probably prefer
// it if the laser didn't suddenly start changing colors from the new to the old over its lifespan. -MageKing17
bool reset = (!first_time && (
(wip->laser_color_1.red == wip->laser_color_2.red) &&
(wip->laser_color_1.green == wip->laser_color_2.green) &&
(wip->laser_color_1.blue == wip->laser_color_2.blue)));
stuff_ubyte(&r);
stuff_ubyte(&g);
stuff_ubyte(&b);
gr_init_color( &wip->laser_color_1, r, g, b );
if (reset) {
gr_init_color( &wip->laser_color_2, wip->laser_color_1.red, wip->laser_color_1.green, wip->laser_color_1.blue );
}
}
// optional string for cycling laser colors
@@ -1317,7 +1332,7 @@ int parse_weapon(int subtype, bool replace)
stuff_ubyte(&g);
stuff_ubyte(&b);
gr_init_color( &wip->laser_color_2, r, g, b );
} else {
} else if (first_time) {
gr_init_color( &wip->laser_color_2, wip->laser_color_1.red, wip->laser_color_1.green, wip->laser_color_1.blue );
}
@@ -1897,6 +1912,12 @@ int parse_weapon(int subtype, bool replace)
if ( optional_string("$Impact Explosion Radius:") )
stuff_float(&wip->impact_explosion_radius);
if ( optional_string("$Shield Impact Explosion Radius:") ) {
stuff_float(&wip->shield_impact_explosion_radius);
} else if (first_time) {
wip->shield_impact_explosion_radius = wip->impact_explosion_radius;
}
if ( optional_string("$Dinky Impact Explosion:") ) {
stuff_string(fname, F_NAME, NAME_LENGTH);
@@ -4758,7 +4779,7 @@ void weapon_process_post(object * obj, float frame_time)
}
// a single player or multiplayer server function -- it affects actual weapon movement.
if (wip->wi_flags & WIF_HOMING) {
if (wip->wi_flags & WIF_HOMING && !(wp->weapon_flags & WF_NO_HOMING)) {
weapon_home(obj, num, frame_time);
// If this is a swarm type missile,
@@ -4930,6 +4951,10 @@ void weapon_set_tracking_info(int weapon_objnum, int parent_objnum, int target_o
wp = &Weapons[Objects[weapon_objnum].instance];
wip = &Weapon_info[wp->weapon_info_index];
if (wp->weapon_flags & WF_NO_HOMING) {
return;
}
if (parent_objnum >= 0) {
parent_objp = &Objects[parent_objnum];
Assert(parent_objp->type == OBJ_SHIP);
@@ -4937,6 +4962,16 @@ void weapon_set_tracking_info(int weapon_objnum, int parent_objnum, int target_o
parent_objp = NULL;
}
if (parent_objp != NULL && (Ships[parent_objp->instance].flags2 & SF2_NO_SECONDARY_LOCKON)) {
wp->weapon_flags |= WF_NO_HOMING;
wp->homing_object = NULL;
wp->homing_subsys = NULL;
wp->target_num = -1;
wp->target_sig = -1;
return;
}
if ( parent_objp == NULL || Ships[parent_objp->instance].ai_index >= 0 ) {
int target_team = -1;
if ( target_objnum >= 0 ) {
@@ -6030,9 +6065,9 @@ void weapon_hit( object * weapon_obj, object * other_obj, vec3d * hitpos, int qu
int weapon_type = Weapons[num].weapon_info_index;
int expl_ani_handle;
weapon_info *wip;
weapon *wp;
weapon *wp;
bool hit_target = false;
object *other_objp;
ship_obj *so;
ship *shipp;
@@ -6132,7 +6167,7 @@ void weapon_hit( object * weapon_obj, object * other_obj, vec3d * hitpos, int qu
}
}
}
// For all objects that had this weapon as a target, wipe it out, forcing find of a new enemy
for ( so = GET_FIRST(&Ship_obj_list); so != END_OF_LIST(&Ship_obj_list); so = GET_NEXT(so) ) {
other_objp = &Objects[so->objnum];
@@ -7023,7 +7058,7 @@ void weapon_unpause_sounds()
beam_unpause_sounds();
}
void weapons_output_json(const char *outfile)
{
mprintf(("Exporting weapon data to json.\n"));
void shield_impact_explosion(vec3d *hitpos, object *objp, float radius, int idx) {
int expl_ani_handle = Weapon_explosions.GetAnim(idx, hitpos, radius);
particle_create( hitpos, &vmd_zero_vector, 0.0f, radius, PARTICLE_BITMAP_PERSISTENT, expl_ani_handle, -1.0f, objp );
}
+2 -2
View File
@@ -15,7 +15,7 @@
#include <wx/image.h>
#include <wx/string.h>
//#include <wx/xrc/xmlres.h>
#include <wx/wx.h>
#include <wx/wx.h>
IMPLEMENT_APP(wxFRED2)
@@ -32,4 +32,4 @@ bool wxFRED2::OnInit()
frame->Show(TRUE);
return true;
}
}
+2 -2
View File
@@ -4,7 +4,7 @@
* Created by Ian "Goober5000" Warfield for the FreeSpace2 Source Code Project.
* You may not sell or otherwise commercially exploit the source or things you
* create based on the source.
*/
*/
#include <wx/wx.h>
@@ -20,4 +20,4 @@ class wxFRED2 : public wxApp
DECLARE_APP(wxFRED2)
#endif
#endif
+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.1)
AC_INIT(fs2_open, 3.7.3)
AC_CONFIG_SRCDIR(code/freespace2/freespace.cpp)
dnl we need at least version 2.54 of autoconf
+1553 -2651
View File
File diff suppressed because it is too large. Load diff
+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_1-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3-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_1.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3.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_1-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3-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_1.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3.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_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"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(FS2PATH)/wxfred2_open_3_7_3-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_3-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_1-debug.exe"
OutputFile="Debug/wxfred2_open_3_7_3-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_1-debug.pdb"
ProgramDatabaseFile=".\Debug/wxfred2_open_3_7_3-debug.pdb"
GenerateMapFile="true"
MapFileName=".\Debug\Profile\wxfred2/wxfred2_open_3_7_1-debug.map"
MapFileName=".\Debug\Profile\wxfred2/wxfred2_open_3_7_3-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_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"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(FS2PATH)\wxfred2_open_3_7_3.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_3.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_1.exe"
OutputFile="Release/wxfred2_open_3_7_3.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_1.pdb"
ProgramDatabaseFile=".\Release/wxfred2_open_3_7_3.pdb"
GenerateMapFile="false"
MapFileName=".\Release\Profile\wxfred2/wxfred2_open_3_7_1.map"
MapFileName=".\Release\Profile\wxfred2/wxfred2_open_3_7_3.map"
SubSystem="2"
TargetMachine="1"
/>
+6 -6
View File
@@ -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_1_NO-SSE-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3_NO-SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1_SSE-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3_SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1-DEBUG.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1_NO-SSE.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3_NO-SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1_SSE.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3_SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1.exe"
OutputFile="$(OutDir)\fred2_open_3_7_3.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
+6 -6
View File
@@ -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_1_NO-SSE-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3_NO-SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1_SSE-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3_SSE-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1-DEBUG.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3-DEBUG.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1_NO-SSE.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3_NO-SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1_SSE.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3_SSE.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
@@ -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_1.exe"
OutputFile="$(OutDir)\fs2_open_3_7_3.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(ConfigurationName)&quot;;../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;"
+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_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>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_3_SSE2</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
+1 -1
View File
@@ -1,6 +1,6 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Freespace2", "Freespace2.vcxproj", "{A8030FA3-CEAB-4297-99E3-CD2CFB89830B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libjpeg.vcxproj", "{42A241F2-7996-4AAF-8491-FB885E2DC37D}"
+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_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>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_3_SSE2</TargetName>
</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_1-debug.exe" </Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\wxfred2_open_3_7_3-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_1.exe"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)/wxfred2_open_3_7_3.exe"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_1.exe;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_3.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_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>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_3_AVX</TargetName>
</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_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>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_3_AVX</TargetName>
</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_1-debug.exe"
<Command>copy %(FullPath) "$(FS2PATH)/wxfred2_open_3_7_3-debug.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_1-debug.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)/wxfred2_open_3_7_3-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_1.exe"
<Command>copy %(FullPath) "$(FS2PATH)\wxfred2_open_3_7_3.exe"
copy "$(ProjectDir)..\..\code\wxfred2\wxfred.xrc" "$(FS2PATH)\wxfred.xrc"</Command>
<Message>Copying build...</Message>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_1.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
<Outputs>$(FS2PATH)\wxfred2_open_3_7_3.exe;$(FS2PATH)\wxfred.xrc;%(Outputs)</Outputs>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
+50 -82
View File
@@ -170,22 +170,17 @@
<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_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>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fred2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fred2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fred2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fred2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fred2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fred2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fred2_open_3_7_3_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -199,7 +194,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x501;_WIN32_WINNT=0x501;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -214,6 +208,7 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -228,7 +223,6 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -243,17 +237,13 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -267,7 +257,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x501;_WIN32_WINNT=0x501;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -284,6 +273,7 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -298,7 +288,6 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -313,17 +302,13 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -337,7 +322,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x501;_WIN32_WINNT=0x501;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -354,6 +338,7 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -368,7 +353,6 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -383,17 +367,13 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -407,7 +387,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;FRED;WINVER=0x501;_WIN32_WINNT=0x501;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -424,6 +403,7 @@
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -438,7 +418,6 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -453,17 +432,13 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -487,7 +462,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<FloatingPointModel>Fast</FloatingPointModel>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -497,7 +472,8 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -511,7 +487,6 @@
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -520,23 +495,20 @@
<TargetMachine>MachineX86</TargetMachine>
<AdditionalOptions>/FORCE:MULTIPLE %(AdditionalOptions)</AdditionalOptions>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -571,7 +543,8 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -585,7 +558,6 @@
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -594,23 +566,20 @@
<TargetMachine>MachineX86</TargetMachine>
<AdditionalOptions>/FORCE:MULTIPLE %(AdditionalOptions)</AdditionalOptions>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -645,7 +614,8 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -659,7 +629,6 @@
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -668,23 +637,20 @@
<TargetMachine>MachineX86</TargetMachine>
<AdditionalOptions>/FORCE:MULTIPLE %(AdditionalOptions)</AdditionalOptions>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -708,7 +674,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
@@ -719,7 +685,8 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -733,7 +700,6 @@
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
@@ -742,13 +708,15 @@
<TargetMachine>MachineX86</TargetMachine>
<AdditionalOptions>/FORCE:MULTIPLE %(AdditionalOptions)</AdditionalOptions>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
<Message>Copying FRED build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
+138 -176
View File
@@ -169,22 +169,17 @@
<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_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>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">fs2_open_3_7_3-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">fs2_open_3_7_3_SSE-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">fs2_open_3_7_3_SSE2-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">fs2_open_3_7_3_AVX-DEBUG</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">fs2_open_3_7_3</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">fs2_open_3_7_3_SSE</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">fs2_open_3_7_3_SSE2</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">fs2_open_3_7_3_AVX</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -197,8 +192,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -214,11 +208,9 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<EnablePREfast>false</EnablePREfast>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;_VC08;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<ProjectReference>
@@ -235,9 +227,8 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<MapExports>false</MapExports>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
@@ -251,19 +242,15 @@
</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug SSE|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -276,8 +263,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -295,10 +281,9 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;_VC08;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<ProjectReference>
@@ -315,9 +300,8 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<MapExports>false</MapExports>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
@@ -331,19 +315,15 @@
</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug SSE2|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -356,8 +336,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -375,10 +354,9 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;_VC08;_SSE2;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<ProjectReference>
@@ -395,9 +373,8 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<MapExports>false</MapExports>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
@@ -411,19 +388,15 @@
</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug AVX|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -436,8 +409,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -455,10 +427,9 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_DEBUG;_VC08;_SSE2;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<ProjectReference>
@@ -475,9 +446,8 @@
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libcmt.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<MapExports>false</MapExports>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
@@ -491,97 +461,15 @@
</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
</HeaderFileName>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<FloatingPointModel>Fast</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
<BrowseInformation>
</BrowseInformation>
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level2</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<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;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(Configuration);../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<SubSystem>Windows</SubSystem>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
<Bscmake>
<AdditionalOptions>"$(IntDir)*.sbr" %(AdditionalOptions)</AdditionalOptions>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -599,7 +487,82 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
<BrowseInformation>
</BrowseInformation>
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level2</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<AdditionalOptions>/Zo %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<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;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>$(Configuration);../../oggvorbis/lib;../../openal/libs/win32;../../openal/libs/win64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<MapExports>false</MapExports>
<SubSystem>Windows</SubSystem>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<Bscmake>
<AdditionalOptions>"$(IntDir)*.sbr" %(AdditionalOptions)</AdditionalOptions>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release SSE|Win32'">
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>
<HeaderFileName>
</HeaderFileName>
</Midl>
<ClCompile>
<Optimization>Full</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -615,13 +578,13 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level2</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<AdditionalOptions>/Zo %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_VC08;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
@@ -632,7 +595,6 @@
<EnableUAC>false</EnableUAC>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
@@ -641,6 +603,8 @@
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
<MapExports>false</MapExports>
</Link>
<Bscmake>
<AdditionalOptions>"$(IntDir)*.sbr" %(AdditionalOptions)</AdditionalOptions>
@@ -648,19 +612,15 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release SSE2|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -678,7 +638,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -694,13 +654,13 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level2</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<AdditionalOptions>/Zo %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_VC08;_SSE2;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
@@ -712,7 +672,6 @@
<UACUIAccess>false</UACUIAccess>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
@@ -721,6 +680,9 @@
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
<OptimizeReferences>true</OptimizeReferences>
<MapExports>false</MapExports>
</Link>
<Bscmake>
<AdditionalOptions>"$(IntDir)*.sbr" %(AdditionalOptions)</AdditionalOptions>
@@ -728,19 +690,16 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
</PostBuildEvent>
<ProjectReference />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release AVX|Win32'">
<CustomBuildStep>
<Message>Copying build...</Message>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
</Command>
<Outputs>$(FS2PATH)\$(TargetFileName);%(Outputs)</Outputs>
</CustomBuildStep>
<CustomBuildStep />
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
@@ -758,12 +717,12 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;USE_OPENAL;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
@@ -774,13 +733,13 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level2</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<AdditionalOptions>/Zo %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;_VC08;_SSE2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;_VC08;_SSE2;FS2_VOICER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
@@ -792,7 +751,6 @@
<UACUIAccess>false</UACUIAccess>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(TargetDir)$(TargetName).map</MapFileName>
<SubSystem>Windows</SubSystem>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
@@ -801,6 +759,9 @@
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<GenerateDebugInformation>true</GenerateDebugInformation>
<MapExports>false</MapExports>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<Bscmake>
<AdditionalOptions>"$(IntDir)*.sbr" %(AdditionalOptions)</AdditionalOptions>
@@ -808,7 +769,8 @@
<OutputFile>$(IntDir)$(ProjectName).bsc</OutputFile>
</Bscmake>
<PostBuildEvent>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"</Command>
<Command>copy /y "$(TargetPath)" "$(FS2PATH)\$(TargetFileName)"
copy /y "$(OutputPath)$(TargetName).pdb" "$(FS2PATH)\$(TargetName).pdb"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copying build...</Message>
+34 -26
View File
@@ -158,8 +158,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
@@ -175,6 +174,8 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -199,8 +200,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
@@ -218,6 +218,8 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -242,8 +244,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
@@ -261,6 +262,8 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -285,8 +288,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;_WINDOWS;WIN32;_DEBUG;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
@@ -304,6 +306,8 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<UndefinePreprocessorDefinitions>NDEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -334,13 +338,13 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<FloatingPointModel>Fast</FloatingPointModel>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -350,9 +354,10 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -377,7 +382,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -394,9 +399,10 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -421,7 +427,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -438,9 +444,10 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -465,13 +472,13 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<AdditionalIncludeDirectories>../../code;../../libjpeg;../../libpng;../../lua;../../oggvorbis/include;../../openal/include;../../zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>FS2_SPEECH;FS2_VOICER;NDEBUG;WIN32;_WINDOWS;PDB_DEBUGGING;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
@@ -482,9 +489,10 @@
<BrowseInformationFile>$(IntDir)</BrowseInformationFile>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<UndefinePreprocessorDefinitions>_DEBUG;%(UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -528,8 +536,8 @@
<ClCompile Include="..\..\code\cutscene\oggplayer.cpp" />
<ClCompile Include="..\..\code\Debris\debris.cpp" />
<ClCompile Include="..\..\code\debugconsole\console.cpp" />
<ClCompile Include="..\..\code\debugconsole\consolecmds.cpp" />
<ClCompile Include="..\..\code\debugconsole\consoleparse.cpp" />
<ClCompile Include="..\..\code\debugconsole\consolecmds.cpp" />
<ClCompile Include="..\..\code\debugconsole\consoleparse.cpp" />
<ClCompile Include="..\..\code\fireball\fireballs.cpp" />
<ClCompile Include="..\..\code\fireball\warpineffect.cpp" />
<ClCompile Include="..\..\code\gamehelp\contexthelp.cpp" />
@@ -809,8 +817,8 @@
<ClInclude Include="..\..\code\cutscene\mvelib.h" />
<ClInclude Include="..\..\code\cutscene\oggplayer.h" />
<ClInclude Include="..\..\code\debugconsole\console.h" />
<ClInclude Include="..\..\code\debugconsole\consoleparse.h" />
<ClInclude Include="..\..\code\Debris\debris.h" />
<ClInclude Include="..\..\code\debugconsole\consoleparse.h" />
<ClInclude Include="..\..\code\Debris\debris.h" />
<ClInclude Include="..\..\code\DirectX\vasync.h" />
<ClInclude Include="..\..\code\DirectX\vdinput.h" />
<ClInclude Include="..\..\code\DirectX\vdplay.h" />
+2 -6
View File
@@ -166,7 +166,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_LIB;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -198,7 +197,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_LIB;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -232,7 +230,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_LIB;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -266,7 +263,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_LIB;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -311,7 +307,7 @@
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<FloatingPointModel>Fast</FloatingPointModel>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -427,7 +423,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+2 -6
View File
@@ -170,7 +170,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -202,7 +201,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -236,7 +234,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -270,7 +267,6 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -314,7 +310,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>true</FunctionLevelLinking>
<FloatingPointModel>Fast</FloatingPointModel>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
@@ -433,7 +429,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>true</FunctionLevelLinking>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+6 -14
View File
@@ -159,7 +159,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>PNG_DEBUG=1;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -190,7 +189,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>PNG_DEBUG=1;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -223,7 +221,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>PNG_DEBUG=1;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -256,7 +253,6 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>PNG_DEBUG=1;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;_HAS_ITERATOR_DEBUGGING=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
@@ -301,15 +297,14 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<FloatingPointModel>Fast</FloatingPointModel>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<ResourceCompile>
@@ -351,8 +346,7 @@
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<ResourceCompile>
@@ -394,8 +388,7 @@
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<ResourceCompile>
@@ -429,7 +422,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FloatingPointModel>Precise</FloatingPointModel>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
@@ -437,8 +430,7 @@
<ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>CompileAsC</CompileAs>
</ClCompile>
<ResourceCompile>
Loaded 100 of 113 files, more files were not shown because too many files have changed in this diff. Show more