Compare commits

...
Author SHA1 Message Date
SirKnightly 9a07486866 Automated build commit 2021-05-03 02:32:09 +00:00
Goober5000 28f60df7fa Merge pull request #3406 from MageKing17/bugfix/avoid-negative-lookup-in-loadout
Avoid negative lookup when parsing loadouts.
2021-04-25 19:00:44 -04:00
MageKing17 bed18012d6 Avoid negative lookup when parsing loadouts.
#3271 changed the logic of `stuff_token_list()` in such a way that the supplied index being used to access an array was no longer skipped if it was invalid; naturally, this means that this warning was now being inevitably followed up by an out-of-bounds array access. Adding a `!skip_this_entry` check should hopefully fix the problem while still allowing the loadout count parsing code below it to run, which was presumably the reason the `continue` statement was replaced with the `skip_this_entry` variable in the first place. Fixes #3405.
2021-04-25 11:10:55 -07:00
Goober5000 d43f30053d Merge pull request #3404 from scp-fs2open/revert-3400-apng_fix
Revert "Fix APNG Animation Framecounter"
2021-04-24 22:43:40 -04:00
MageKing17 76dccbe07d Revert "Fix APNG Animation Framecounter" 2021-04-24 18:53:52 -07:00
Goober5000 3eafcde138 Merge pull request #3403 from MageKing17/bugfix/avoid-shiphit-negative-array-access
Avoid out-of-bounds array access if killed by a parentless weapon.
2021-04-24 21:13:38 -04:00
Goober5000 ca7065df46 Merge pull request #3400 from BMagnu/apng_fix
Fix APNG Animation Framecounter
2021-04-24 18:39:39 -04:00
Goober5000 cedf66cb31 Merge pull request #3402 from Baezon/fix-edge-checks
Fix fov_edge_checks
2021-04-24 18:39:32 -04:00
Baezon 03a3fbdc1c fix fov edge checks 2021-04-24 17:10:20 -04:00
MageKing17 9c6661e0e8 Avoid out-of-bounds array access if killed by a parentless weapon.
While there's code to avoid accessing the parent object of a parentless beam, there's no equivalent code to avoid accessing the parent object of a parentless weapon. This fixes this inconsistency.
2021-04-24 13:11:35 -07:00
Birk Magnussen 6bea921fbe Add short explanation 2021-04-24 23:04:00 +09:00
Birk Magnussen 79f5eda0d6 Fix APNG Animation Framecounter 2021-04-24 16:00:09 +09:00
Goober5000 3aa61dfccb Merge pull request #3396 from Goober5000/is_visible_tweak
make is-ship-visible default to the first player
2021-04-20 00:00:31 -04:00
Tyler Blount 0febfb3545 Merge pull request #3394 from JohnAFernandez/Fix-that-annoying-fred-freezes-when-open-too-long-bug
Keep Fred from freezing
2021-04-19 21:18:48 -06:00
Goober5000 e1c8f5d2ed make is-ship-visible default to the first player
To be more user-friendly, and to accommodate buggy retail missions, make the one-argument version of `is-ship-visible` default to the first player in multiplayer mode..  Also, change the warning to an mprintf.
2021-04-19 23:04:27 -04:00
JohnAFernandez 44343f8d1e Put a bandaid on Fred freezing
Could be because of variable overflows or from `thistime` somehow being much smaller than `lasttime`.

Hard to find the root cause, but manually setting the memory to bad values will no longer cause the freezing with this patch.
2021-04-19 22:00:46 -04:00
Taylor Richards 424c69d1e5 Merge pull request #3379 from notimaginative/fix_chat_error_handling
address issues with error handling in chat_api
2021-04-18 19:46:39 -04:00
JohnAFernandez 6d1354f1f6 Explicitly check that the type is a ship. (#3389)
Not all ships in the ships array are ships (if they were turned into observers), so we need to explicitly check that they are ships.
2021-04-18 05:11:30 +00:00
Tyler Blount d5c4f3e5c7 Merge pull request #3348 from TRBlount/fix/display_name_regression
Strip hashes from explicitly defined display names in tables.
2021-04-17 23:03:54 -06:00
JohnAFernandez 89bd64f4ab Make sure the Netgame state is set to prevent a crash (#3339)
If the client tries to respawn a player when the server is trying to end the game it will lead to a crash on the client side.  This sets the client's game to the correct state when an end game packet is received and adds extra checks before respawning.
2021-04-17 23:49:54 -04:00
Tyler Blount 417739665c Strip hashes from explicitly defined ship and weapon display names 2021-04-17 17:07:41 -06:00
MageKing17 e236a79773 Make an invalid variable name throw an error. (#3373)
There were a few assertions in the SEXP code that would trip if an invalid variable name were specified in a SEXP, but nothing that actually stopped a Release build from performing an out-of-bounds array access if someone made a typo in notepad. Since, as far as I could tell, everything should go through `get_sexp_text_for_variable()` first, I changed its `Assert()` into an `Error()` that should hopefully ensure that we avoid ever doing anything with `Sexp_variables[-1]`.
2021-04-14 21:26:11 -04:00
JohnAFernandez d523f0aef3 Make Sure Special Shield Hitpoint Max Gets Transferred (#3383)
Since the shield strength of the ships is being copied, you need to copy the special shield hitpoints, too, just like for hull.
2021-04-14 21:07:31 -04:00
Taylor Richards 697c009fb3 address issues with error handling in chat_api:
- detect server connection error messages before blindly
   moving to user login (crash fix)
 - detect read errors and fail accordingly (crash fix)
 - allow server disconnect to run even if we aren't connected (cleanup & reset)
2021-04-12 12:59:04 -04:00
JohnAFernandez 1f918fd4c6 Allow Fred to Edit and Allow Command briefs in FRED (#3372)
* Allow Fred to Edit and Allow Command briefs in FRED

They are currently allowed in the game, but not being allowed in Fred was an oversight of mine.

* Allow Command brief saving in qtFRED
2021-04-11 13:50:25 -04:00
Asteroth 3ea7a6d1ba Merge pull request #3369 from Baezon/cull-generic-debris
Properly cull generic debris
2021-04-10 21:44:56 -04:00
Baezon 633cd88e83 modernize use nullptr 2021-04-10 19:38:18 -04:00
Baezon 7431aba995 properly cull generic debris 2021-04-09 21:35:26 -04:00
JohnAFernandez 328bebe83a Fix event parsing by setting flags to zero before loading. (#3363) 2021-04-07 23:41:14 -04:00
Goober5000 94e4f3d4cd Merge pull request #3362 from Baezon/no-ship-subsys-lookup
Remove unecessary ship_get_subsys in model_rotate_gun
2021-04-06 10:48:09 -04:00
Baezon b57573c439 remove unecessary ship-get-subsys 2021-04-06 02:24:05 -04:00
Goober5000 0b1d1eed56 Merge pull request #3357 from notimaginative/fix_briefing_music_reset
Only close common_select when we should
2021-04-05 23:52:35 -04:00
Goober5000 123feba557 Merge pull request #3353 from Goober5000/escape_exclamation
make double-character consolidation reusable, and reuse it
2021-04-05 23:50:39 -04:00
Taylor Richards 8c64d73a18 Merge pull request #3358 from notimaginative/fix_main_hall_sounds_in_multi
fix main hall sounds/music not getting stopped on multi clients
2021-04-04 08:19:43 -04:00
Taylor Richards e156f15561 fix main hall sounds/music not getting stopped on multi clients 2021-04-03 11:08:28 -04:00
Taylor Richards 3e1d89ba53 only close common_select when we should 2021-04-03 10:22:11 -04:00
Asteroth 4f7bad2a5c Merge pull request #3347 from Baezon/fireball-lod-fix
Make fireballs default to 1 LOD
2021-04-02 16:01:39 -04:00
Goober5000 dd621e8904 Merge pull request #3351 from PhantomHoover/feature/profile-script-hooks
Add profiling trace for scripting hooks
2021-04-02 15:07:17 -04:00
Goober5000 396d2c55a9 make double-character consolidation reusable, and reuse it
This moves the ## to # escape sequence logic from `mission_process_alt_types` to its own function where it can be used elsewhere (such as for ship class and weapon class display names that need to do the same thing).  Also, this introduces a !! escape sequence for exclamation points that is needed for exclamation points to be used in scripts, as @naomimyselfandi pointed out.
2021-04-02 00:16:19 -04:00
Phantom Hoover 782f6f100d Add profiling trace for scripting hooks 2021-04-01 11:54:09 +01:00
Baezon 4f76c441d6 default to 1 lod 2021-03-31 18:00:00 -04:00
Asteroth a2bd895b7b Merge pull request #3344 from Baezon/fix-huge-targeting-regression
Fix regression with huge/small only targeting
2021-03-31 16:47:17 -04:00
JohnAFernandez a4cf53694d Merge pull request #3346 from JohnAFernandez/Fix-3007
Add a safety check to the $On Frame: Hook
2021-03-31 16:46:11 -04:00
JohnAFernandez 6bd7a43e3d Add a safety check to the $On Frame: Hook
So #3007 is a larger bug than just trying to access the player's target.  The real problem is that the game state is not changed from `GS_STATE_GAME_PLAY` during the mission load when restarting the mission.  So the script thinks it's in the mission, tries to access the target and then crashes.  But this won't be the only bug.  Any script that tries to access data on Frame will run into possible problems on mission restart.
2021-03-31 15:25:38 -04:00
Baezon fffc0ebf8b fix name of class #3344 2021-03-30 22:03:25 -04:00
Goober5000 f2426de80b Merge pull request #3340 from Goober5000/num_valid_arguments_fix
make num-valid-arguments work for the for-* sexps
2021-03-30 19:32:26 -04:00
Goober5000 27f6088117 make num-valid-arguments work for the for-* sexps
This adds a hook into the for-* handlers to return the number of valid arguments.  Fixes a bug reported on Discord.
2021-03-30 18:51:24 -04:00
Goober5000 30c76f36ce Merge pull request #3342 from Goober5000/message_list_saving
modify saving of edited messages
2021-03-30 18:42:39 -04:00
Goober5000 35094851f2 modify saving of edited messages
Instead of saving based on the m_cur_msg index, which may have been reset to -1, save on the most recent positive index.  This should keep track of modified text and dropdowns even when m_cur_msg is set to -1 when the message list loses focus.

Fixes #3308.
2021-03-30 17:32:02 -04:00
Fabian Woltermann b562cf822e Merge pull request #3345 from Baezon/fix-strafing-bug
My kingdom for a semicolon!
2021-03-30 09:15:42 +02:00
Baezon 62942557d5 typo 2021-03-30 00:19:53 -04:00
Baezon 4d68bed436 fix huge targeting regression 2021-03-29 22:42:50 -04:00
Asteroth 19d5b8e68e Merge pull request #3329 from PhantomHoover/feature/split-profile-columns
Split frame profile trace into two onscreen columns if needed
2021-03-29 15:34:55 -04:00
Goober5000 9dc50706a7 Merge pull request #3309 from Baezon/turret-alt-math-fix
Update Turret_alt_math for moving subsystems
2021-03-28 18:06:05 -04:00
Goober5000 f2a0e35959 Merge pull request #3333 from Goober5000/no_xstr_entry_suppress
log missing XSTR strings only once
2021-03-28 15:17:24 -04:00
JohnAFernandez e637eea2fb Merge pull request #3337 from JohnAFernandez/Interpolation-Bug
Fix a rare but eventual crash in the interpolation code.
2021-03-28 10:00:47 -04:00
Fabian Woltermann f3e3769056 Merge pull request #3266 from The-E/fix/3250_dynamic_nebula_detail
Make nebula poof detail settings partially dynamic
2021-03-28 13:18:26 +02:00
JohnAFernandez e218f687a9 Fix a rare but eventual crash in the interpolation code.
I don't know when this was introduced but the bug is extremely obvious once someone hit the crash.  It should just be using the timestamp that the packet was received, not trying to put that timestamp into a vector whose index is server frame numbers.
2021-03-28 05:07:27 -04:00
Baezon 5e10fccdbf Merge remote-tracking branch 'upstream/master' into turret-alt-math-fix 2021-03-27 21:12:30 -04:00
Goober5000 12672d0c2b Merge pull request #3310 from Baezon/fix-fov-edge-checks
Fix Fov_edge_checks
2021-03-27 17:22:37 -04:00
Goober5000 de7081fbb3 Merge pull request #3335 from Goober5000/missing_hud_gauge_warning
change reticle log statements to warnings
2021-03-27 15:19:47 -04:00
Goober5000 d73e4d4dec change reticle log statements to warnings
Most guages in hud_guages.tbl will display a Warning if they can't be loaded, but the reticle is an exception - it only prints a log statement.  This PR changes it to be consistent with the rest of the HUD gauges.

Fixes #3090.
2021-03-27 14:19:59 -04:00
Fabian Woltermann aeefcb4657 Remove an unused constant 2021-03-27 16:23:35 +01:00
Fabian Woltermann 023dcfca76 Use the screen size as the break value, remove it from the Neb detail settings 2021-03-27 16:22:20 +01:00
Fabian Woltermann c6e9f954f0 Use the screen size as the break_* value 2021-03-27 16:11:26 +01:00
Fabian Woltermann 961d5eb171 Use bitmap height * 2 to make sure only completely off-screen poofs are culled 2021-03-27 16:11:26 +01:00
Fabian Woltermann 1a66c97c2e After loading the nebula poofs, resize the break_x and break_y values so they are equal to the largest poof bitmap in use.
Also reduce the break alpha value by 90% for all detail levels.
2021-03-27 16:11:26 +01:00
Goober5000 00e2c2ad52 log missing XSTR strings only once
The "No XSTR entry in strings.tbl for index %d" message was previously printed to the log every time the string was accessed, which for commonly-used strings will clutter up the log.  This makes the message only appear once per missing index.
2021-03-26 23:22:06 -04:00
JohnAFernandez 8991fc67cd Merge pull request #3331 from JohnAFernandez/Fix-Multi-Gamestate-Bug
Check for these states
2021-03-26 20:47:40 -04:00
JohnAFernandez 7641abf41c Check for these states
Because GS_STATE_MULTI_MISSION_SYNC is actually shared for a few different multi screens.
2021-03-26 20:18:39 -04:00
Phantom Hoover 871f7a822e Split frame profile trace into two onscreen columns if needed 2021-03-26 20:33:01 +00:00
m!m ca66664eac Merge pull request #3327 from Shivansps/over_alloc_fix
fix over alloc to store lz4 offsets
2021-03-26 18:33:21 +01:00
m!m 4c1b3551b4 Merge pull request #3328 from ngld/fix/keep_stdout
Add FSO_KEEP_STDOUT env var to skip the AttachConsole() call
2021-03-26 18:32:34 +01:00
Asteroth 07d47cb984 Merge pull request #3319 from Baezon/add-fog-color
Allow for setting of nebula fog color explicitly
2021-03-25 21:20:55 -04:00
Allen A. Babb ce9ee8c264 Merge pull request #3324 from z64555/fix/issue_3322
Fixes #3322
2021-03-25 18:43:15 -05:00
ngld 8039650248 Add FSO_KEEP_STDOUT env var to skip the AttachConsole() call
Fixes #3317
2021-03-26 00:03:51 +01:00
Shivansps cd2b578a1b fix over alloc to store offsets 2021-03-25 19:57:48 -03:00
z64555 85ec8251e3 When in bind mode, identify mouse as CID_JOY0 instead of CID_MOUSE. Fixes #3322. 2021-03-25 09:41:37 -05:00
JohnAFernandez 7e51a13c3a Merge pull request #3296 from Shivansps/compressed-files
LZ4 Compressed files Support
2021-03-25 07:08:06 -04:00
Baezon 538b2c6c95 handle lab and use empty string #3319 2021-03-24 13:25:16 -04:00
wookieejedi d3a70e8ed6 Merge pull request #3320 from wookieejedi/disable-spew-whole-ship
Add `no impact debris` for whole ship
2021-03-24 00:56:09 -04:00
Baezon 9dc68849d6 unused variable 2021-03-23 23:59:05 -04:00
wookieejedi b6bab87601 restore original comment 2021-03-23 23:44:03 -04:00
wookieejedi b8d868f828 restore comment 2021-03-23 23:43:31 -04:00
wookieejedi 01e6a57aaa remove un-needed section 2021-03-23 23:41:57 -04:00
wookieejedi e0fe9227aa clarify whitespace 2021-03-23 23:21:40 -04:00
Baezon 803751959a rename variable for no shadowing 2021-03-23 23:20:11 -04:00
wookieejedi 9597b5962e clarify ship override for subsystems debris 2021-03-23 23:16:59 -04:00
wookieejedi 792f74b33e Add no impact debris flag for entire ship model
Previously `no impact debris` flag was only an option for use on subsystems. This PR adds that flag for the entire ship. It also turns off the impact spew of debris for all subsystems if enabled on the ship.
2021-03-23 23:04:08 -04:00
Baezon 5181e71dab Add explicit fog color 2021-03-23 22:57:54 -04:00
JohnAFernandez 3d0e0f80ae One more hiccup 2021-03-23 20:31:04 -04:00
JohnAFernandez 251125913a How many mistakes is it now? No idea. 2021-03-23 20:31:04 -04:00
JohnAFernandez 89d2d6ed46 Fix missile indicators not going away
Add the should be dead flag, in order to properly make the missiles go away, and not just detonate.
2021-03-23 20:31:04 -04:00
JohnAFernandez 06f198afc1 Forgot one 2021-03-23 20:31:04 -04:00
JohnAFernandez 19a289539a More Whitepsace and Dealing with Crazy old CI 2021-03-23 20:31:04 -04:00
JohnAFernandez c14653b391 Whitespace Adjustments 2021-03-23 20:31:04 -04:00
JohnAFernandez 2527bf31c7 Upgrade velocity compression in OO packet
Previously, the velocity could be off by up to 1 m/s.  This gives that packing function one more byte to work with, so that we have a lot more accuracy to work with.
2021-03-23 20:31:04 -04:00
JohnAFernandez 184107283a Properly Set net_signatures for wing ships
Previously wing ships were being given a net signature that was one too large.
2021-03-23 20:31:04 -04:00
JohnAFernandez 42c19cdfee Fix Missile Syncing Between Server and Client 2021-03-23 20:31:04 -04:00
JohnAFernandez 3830534978 Fix implementation of multi_pack_unpack_desired_vel_and_desired_rotvel 2021-03-23 20:31:04 -04:00
JohnAFernandez 48eef6566d Multi Version bump for 21_2
since many of the fixes and features require a multi bump.
2021-03-23 20:31:04 -04:00
the-maddin b253442545 Add -pilot cmdline flag (#3316)
* Cmdline parsing for `-pilot "<name>"`

Add cmdline parameter `-pilot` with required
argument name and export name as global var
`Cmdline_pilot`.

* Expose to scripting `isAutoselect`

Setting `-pilot` flag sets `ui.isAutoselect()` true
(as does `-benchmark_mode`).

* Skip pilot selection

and call `player_finish_select` with the given
player instead.

* More useful error message on pilot load error

Also display callsign

* Add pilot name as scripting variable

* Don't expose pilot flag to launchers

* make stored flag param `const`
2021-03-22 21:14:57 +00:00
JohnAFernandez 1d5e9794d6 Merge pull request #3263 from BMagnu/fix_unicode_stringstbl
Fix strings.tbl in unicode mode
2021-03-21 17:41:55 -04:00
Asteroth b7a9f545fd Merge pull request #3304 from BMagnu/weapon_penetrate_flag
Add pierce ship weapon flag
2021-03-21 15:12:45 -04:00
JohnAFernandez 9541e244d1 Make sure objects and ships get cleared if leaving mission sync (#3314)
This properly clears ships if you are leaving the sync state for any other state besides the gameplay state.
2021-03-21 14:54:32 -04:00
Asteroth f12d202afe Merge pull request #3278 from Baezon/exponential-fog
Switch to exponential fog and other nebula visibility improvements
2021-03-20 16:45:24 -04:00
Goober5000 507a5f1de8 Merge pull request #3312 from Goober5000/per_mission_chase_view
add mission flag for starting missions in chase view
2021-03-20 15:36:11 -04:00
Baezon 3810b039f5 Merge remote-tracking branch 'upstream/master' into exponential-fog 2021-03-20 10:39:41 -04:00
Baezon 827754d6de minor fixes 2021-03-20 02:31:47 -04:00
Goober5000 d455e17e34 add mission flag for starting missions in chase view
Follow-up to #3305.  Some mods may want one or two missions to start in chase view without having every single mission default to chase view.  So this adds a mission flag (with FRED and qtFRED support) that will enable this on a per-mission basis.
2021-03-20 00:21:27 -04:00
Shivansps db360820a9 fix build check 2021-03-19 20:51:09 -03:00
Baezon 804a222041 unused variable 2021-03-19 19:44:11 -04:00
Shivansps 6dab1e464f Merge branch 'compressed-files' of https://github.com/Shivansps/fs2open.github.com into compressed-files 2021-03-19 20:21:02 -03:00
Shivansps 86c45309e8 requested changes and simplified if on random access function 2021-03-19 20:20:58 -03:00
Birk Magnussen 4f4690a482 Fix Names and spawn on destruct 2021-03-20 03:52:54 +09:00
Baezon 1ca60e1d2f fix fov_edge_checks 2021-03-19 11:48:15 -04:00
JohnAFernandez 420c7ec171 Play directive completion sounds for clients (#2900)
* Allow Text to show failure on Clients

Function was accidentally returning false before sending an update on failure.

* Play directive sounds for clients

This adds a short client version of the function that initiates the directive completion sound.

* forgot to remove a failed experiment
2021-03-19 05:39:05 -04:00
Birk Magnussen 011f7e4d6c Change flag to Table entry 2021-03-19 18:30:39 +09:00
Asteroth 8b94e58596 Merge pull request #3284 from Baezon/fix-rand-circle-sphere-bias
Fix probability distribution of vm_vec_random_in_circle/sphere
2021-03-19 02:23:31 -04:00
Asteroth b304ccbe96 Merge pull request #3305 from Strygon/chaseviewtest
Adding "Start missions in Chase View by default" flag in game_settings.tbl
2021-03-19 02:23:08 -04:00
Baezon eb538ffba8 update turret_alt_math for moving subsystems 2021-03-19 02:13:20 -04:00
JohnAFernandez 5bb934119c Limit instances of Client Collisions to Avoid Instant Death (#3164)
* Limit instances of Client Collisions to Avoid Instant Death

* Set timestamps correctly (take 2)

* Handle server check the same everywhere

* Clearer Logic Here
2021-03-18 17:24:08 -04:00
Fabian Woltermann 8c7a8e42b2 Merge pull request #3307 from The-E/fix/3206_submodel_property_parsing
Fix for #3306
2021-03-18 17:29:10 +01:00
Fabian Woltermann 9a06e0727c Make sure we check for any carriage return characters that may sneak in too 2021-03-18 16:52:15 +01:00
Strygon 08603009fb removed the redundancy 2021-03-17 20:40:02 +01:00
JohnAFernandez 609ed4ed94 Remove the fireball limit (#3224)
* Remove the fireball limit

* Handle Feedback

(Without the main PC, so really hoping I don't do any typos)
2021-03-17 14:21:06 -04:00
Strygon 3ab9f85a7a ditto 2021-03-17 17:50:19 +01:00
Strygon 45db675c35 Renaming the bool 2021-03-17 17:49:43 +01:00
Strygon 5b01a68352 Adding a few forgotten parts of the ChaseViewDefault code 2021-03-17 17:39:27 +01:00
Strygon 67cc6a66eb Adding ChaseView Flag functionality
This is where the game would put the player into chaseview/third person if the flag for it is set in game_settings.tbl
2021-03-17 17:38:32 +01:00
Strygon 842c84da7d Adding the actual flag for default chase view 2021-03-17 17:36:25 +01:00
Strygon 6598c25fda Adding support for Chase View flag 2021-03-17 17:35:39 +01:00
Birk Magnussen 2a73fb340f Add pierce ship weapon flag 2021-03-17 17:39:04 +09:00
Goober5000 d716433848 Merge pull request #3300 from Baezon/fix-flak-substitute-assert
Fix assert with combining flak and non-flak using substitute
2021-03-17 00:34:14 -04:00
Shivansps ad60240eb6 Updated comment header. Feature Complete. 2021-03-16 10:11:48 -03:00
Shivansps f8df97b489 fix seek_end on comp_fseek
This where causing the pcx issues
2021-03-15 23:59:39 -03:00
Asteroth 95235b353b Merge pull request #2885 from Baezon/expose-huge-small-targeting
Expose ability to be targeted by 'huge' and 'small only' weapons
2021-03-15 22:32:22 -04:00
Shivansps d5feddfb8a fixed comp_fseek return 2021-03-15 20:08:58 -03:00
Baezon ce1907c52a flak should use normal mflash methods 2021-03-15 18:30:47 -04:00
JohnAFernandez 895dbdddb8 Merge pull request #3295 from Goober5000/spacebar_popup
add text to context popup
2021-03-15 09:44:00 -04:00
Baezon f5e32fa1a2 Merge remote-tracking branch 'upstream/master' into exponential-fog 2021-03-15 02:27:22 -04:00
Shivansps 9fa3baa458 fix typo 2021-03-14 23:43:22 -03:00
Shivansps 4b3760dfb4 more build fixes 2021-03-14 21:17:07 -03:00
Shivansps 142d586a1c and even more build check fixes 2021-03-14 20:29:26 -03:00
Shivansps 95103dfcb8 more build check fixes 2021-03-14 19:57:04 -03:00
Shivansps f50ea26051 Change CI struct name to upper case 2021-03-14 19:36:20 -03:00
Shivansps 983dd0b6ca changes for build check errors 2021-03-14 19:21:13 -03:00
Shivansps 3bdc5e0c27 Merge branch 'master' into compressed-files 2021-03-14 17:57:53 -03:00
Baezon 643cb6a2be update scripting functions 2021-03-14 15:37:43 -04:00
MageKing17 2348d4db64 Merge pull request #3297 from MageKing17/bugfix/sexp-ammo-safety-regression
Fix ammo safety regressions.
2021-03-14 11:45:04 -07:00
MageKing17 77534926c8 Comment clarification. 2021-03-14 11:16:54 -07:00
Shivansps ba6a471054 comment debug statements 2021-03-14 14:55:20 -03:00
MageKing17 47c409a3d5 Fix ammo safety regressions.
When various SEXP functions related to ammo were consolidated back in June (in commit 54409ec928), certain safety catches meant to avoid having too much ammo or the wrong ammo capacity after changing weapons were lost. This commit adds code that should be functionally equivalent.
2021-03-14 10:43:06 -07:00
Shivansps ce44e3522b updated header 2021-03-14 14:35:04 -03:00
Goober5000 593fbdbf21 add text to context popup
The Space Bar is a valid shortcut, so indicate as such.  Fixes #3289.
2021-03-14 12:47:15 -04:00
Shivansps c1b87bc2b6 Add missing CAP to comp goal position.
It should not be needed but at least this stops crashing when you use a unsupported format in compression (like, audio and pcx)
2021-03-14 13:34:13 -03:00
Shivansps 1f164dbb64 Removed isCompressed from compression_info 2021-03-14 11:12:00 -03:00
Shivansps 1275cbfd83 Proper lz4 reference and added position checks
LZ4 moved to lib folder and added cmakelists.
Added several position check to match cfilearchive ones for compressed files.
Changed header check to int.
2021-03-14 10:47:11 -03:00
Goober5000 69be3c8f35 Merge pull request #3293 from Goober5000/hotkey_range_check
simple hotkey range check
2021-03-14 00:04:14 -05:00
Goober5000 85fc1f7cea simple hotkey range check
This prevents the message from firing if the wing index is -1 which would cause an array underflow.  Fixes #3280.
2021-03-13 23:15:16 -05:00
Goober5000 59a5a343c8 Merge pull request #3291 from Baezon/fix-contrail-a_decay_exponent
Peoperly initialize alpha decay exponent for contrails
2021-03-13 22:14:38 -05:00
Baezon a3ce01f250 properly initialize a_decay_exponent 2021-03-13 20:33:54 -05:00
Shivansps 20cccdbf20 Updated Implementation
Moved the compression functions to separated files, added dynamic blocksize support for LZ4 and a decoder buffer to make sure every block is only read from file and decoded only once.
2021-03-13 17:15:04 -03:00
Asteroth 4b64c43ef8 Merge pull request #3274 from Baezon/shooter-damaging-weapons
Add shooter damaging weapons
2021-03-13 15:03:52 -05:00
Asteroth 4307d12762 Merge pull request #3285 from Baezon/fix-fit-and-set-obj-facing
Bugfix for FIT with set-object-facing
2021-03-13 14:59:52 -05:00
Asteroth 0d3d336d65 Merge pull request #3287 from Baezon/fix-aburn-trail
Properly initialize trail alpha exponents for afterburner trails
2021-03-13 14:59:24 -05:00
Shivansps 077338086a Improved implementation
Model load and tech room now works, it crashes at mission load.
2021-03-12 19:58:49 -03:00
Birk Magnussen 0b2ee5f76b Modify other file reading method for new encoding conversion 2021-03-13 07:50:41 +09:00
Baezon 256a047fab fix rand circle and sphere probability distribution 2021-03-12 16:13:52 -05:00
Baezon 222799b1a1 initialize trail alpha exponents for aburn trails 2021-03-12 16:03:50 -05:00
Fabian Woltermann 649fe7e3ce Merge pull request #3286 from Baezon/fix-to-the-fixed-fog
Fix for nebula fogging distance
2021-03-12 10:54:50 +01:00
Baezon 2e5e25dc09 revert #2222 and fix comment 2021-03-11 23:28:23 -05:00
Shivansps 3f9218e671 1st attempt at implementation
I just dumped everything into cfilearchive to avoid a fight with the includes that i cant win for now.

It dosent work, DDS utils complains about DDS filecode.
2021-03-11 20:51:28 -03:00
Birk Magnussen 3003d0589d Change validation to own function 2021-03-12 06:34:27 +09:00
Birk Magnussen 4bd15d43da Fix Warning due to enum class 2021-03-12 06:04:10 +09:00
Birk Magnussen 8df62e99f5 Change Enum to Enum Class 2021-03-12 05:54:25 +09:00
Birk Magnussen d93c9c4220 Adapt parsing exceptions 2021-03-12 05:45:09 +09:00
Birk Magnussen 1b5fd3c5fd Move Conversion functions to util/unicode 2021-03-12 05:42:44 +09:00
Baezon 0612a72c2f fix FIT with set-object-facing 2021-03-11 15:41:55 -05:00
Baezon 22f7ff3443 fix bias from random_circle/sphere 2021-03-11 03:02:24 -05:00
Goober5000 5105f35a31 Merge pull request #3271 from Goober5000/better_parse_lists
rewrite stuffing of lists
2021-03-10 19:19:39 -05:00
Goober5000 f025572110 rewrite stuffing of lists
Consolidate all the functions which parse lists of data.  They're almost the same except for the data itself, so use templates.

As for the templated function which handles the list, boost the robustness by adding additional checking and error messages.
2021-03-10 18:50:12 -05:00
Goober5000 ed2cc47093 Merge pull request #3269 from Goober5000/annotation_fix
Various annotation fixes
2021-03-10 18:49:39 -05:00
Goober5000 4486b9ee10 Merge pull request #2923 from z64555/controls3
Controls3 - Primary/Secondary Bindings
2021-03-10 15:53:52 -05:00
Asteroth e8603e1617 Merge pull request #3247 from Baezon/better-subsys-attacking
Add improved subsystem attacking
2021-03-10 12:21:53 -05:00
Goober5000 f67860a502 Merge pull request #3283 from Goober5000/fix_isdigit_type
fix character type for isdigit
2021-03-10 11:37:54 -05:00
Goober5000 497a0e0805 fix character type for isdigit
Just like the `std::toupper` and `std::tolower` functions (see PR #3226), `std::isdigit` is designed to work with regular `char`, not `unsigned char`.
2021-03-10 10:51:56 -05:00
Goober5000 470a996b11 Merge pull request #3281 from Goober5000/beam_range_fxi
a few turret fixes
2021-03-09 23:09:59 -05:00
Goober5000 5bb9f427b4 a few turret fixes
This correctly calculates the turret position from the center (zero position) of its submodel instead of using the offset from the main model.

This patches a few more parts of the code and also adds a missing locale argument.
2021-03-09 22:39:13 -05:00
Goober5000 52df877ed9 Merge pull request #3276 from Goober5000/special_arg_fix
add small fix from SEXP containers PR
2021-03-09 21:43:28 -05:00
Shivansps 8292d8c44a Revert "Merge branch 'arm_fixes'"
This reverts commit 2ee128cd88, reversing
changes made to a2b349855e.
2021-03-09 20:44:43 -03:00
Asteroth 0eefd352d9 Merge pull request #3264 from Baezon/32-poofs
Increase max nebula poofs to 32
2021-03-08 14:44:26 -05:00
Baezon cf2e3e8641 lightning even with 0 poofs 2021-03-08 10:50:27 -05:00
Baezon 78c79ac88d debug clean up 2021-03-08 01:37:00 -05:00
Baezon 6e54ed3dfc more exponential fog 2021-03-08 00:09:42 -05:00
Baezon f60d2d8e30 comment changes 2021-03-07 23:06:30 -05:00
Goober5000 a12a33b189 Merge pull request #3277 from Goober5000/movable_turret_fov_fix
Turrets on movable submodels
2021-03-07 21:29:28 -05:00
Baezon cf3ce54038 comment clarity 2021-03-07 14:20:55 -05:00
Goober5000 483a632c7f Merge pull request #3243 from Baezon/decouple-asteroids-species
Decouple asteroids from species
2021-03-07 13:13:13 -05:00
Goober5000 9a3fc507d6 Merge pull request #3261 from BMagnu/lua_campaignswitch
Lua add campaign switch function
2021-03-07 13:10:01 -05:00
z64555 19c0f64736 Upgrade a few Assert()'s into Assertion()'s with error messages 2021-03-07 09:56:21 -06:00
z64555 78ac82d6eb Replace Int3()'s with UNREACHABLE
* control_config_bind_btn uses UNREACHABLE macro when an unknown order is passed to it
2021-03-07 09:20:34 -06:00
Baezon 2dd40bcbd8 typo 2021-03-07 02:00:58 -05:00
JohnAFernandez 5da44a9d72 Merge pull request #3178 from Baezon/generic-debris-enhancement
Generic debris expansion and configuration
2021-03-07 00:19:25 -05:00
Goober5000 d75b0f4b4b additional minor cleanup 2021-03-06 20:03:59 -05:00
z64555 5c9582aefc Fix bug where "Clear Conflict" button was disabled on Ship tab unless the conflicted items included an axis. 2021-03-06 12:52:48 -06:00
Goober5000 ab478c4a0e Merge pull request #3275 from Goober5000/uoffset_addendum
addendum to u_offset
2021-03-05 22:44:00 -05:00
Goober5000 01daf25fe9 addendum to u_offset
This improves PR #3257 by updating the frametime after the beam fires, not before, so that the first frame will always be at offset zero
2021-03-05 22:15:55 -05:00
Goober5000 db73c27a53 add small fix from SEXP containers PR
While skimming the differencs in jg18's branch of PR #3253...
https://github.com/jg18/fs2open.github.com/tree/feature/sexp-containers-revised

...I noticed a TODO that is almost certainly a genuine bugfix.  As such, it deserves its own PR.  The line in question was last modified in 2012 by karajorma, and the bugfix should test for the special-arg in the entire actions tree rather than just the first action.
2021-03-05 22:00:51 -05:00
Baezon 3c53b74e5e switch to exponential nebula fog 2021-03-04 23:02:24 -05:00
Birk Magnussen 829e0b8b7c remove bad type modifier 2021-03-04 22:17:16 +09:00
Birk Magnussen 4b60ca467c Refactor encoding functions 2021-03-04 22:08:50 +09:00
Baezon d972f353f1 better species name handling and XSTR 2021-03-03 22:05:12 -05:00
Baezon 9c1d1e64cc better self kill text 2021-03-03 20:22:50 -05:00
Goober5000 abc153e21e Merge pull request #3273 from NovachenFS2/TranslatedAsteroids
Translateable Asteroid Name in Asteroid Fields
2021-03-03 15:26:30 -05:00
Jenna Trassa 9385206e0e Feedback & lowercase debris code 2021-03-03 20:56:24 +01:00
Goober5000 3674f06400 Merge pull request #3272 from NovachenFS2/AsteroidTimer
Translateable Asteroid Impact Time
2021-03-03 14:36:14 -05:00
Goober5000 be780af04d Merge pull request #3268 from BMagnu/replace-texture-sexp
Add replace-texture SEXP
2021-03-03 14:33:21 -05:00
Goober5000 ec1d2e091e Merge pull request #3262 from Goober5000/enable_multi_for_two_sexps
allow two SEXPs to be used in multiplayer that previously couldn't be
2021-03-03 13:59:21 -05:00
Goober5000 106da3c95f allow two SEXPs to be used in multiplayer that previously couldn't be
1) The ship-vanish SEXP (and script function) was already multiplayer-ready
2) The is-ship-visible SEXP was enhanced to add a second argument, which defaults to the player's ship in single-player mode
2021-03-03 13:22:50 -05:00
Jenna Trassa 34649c7543 Translated Asteroid Name in Asteroid Fields 2021-03-03 17:25:37 +01:00
Baezon 0fcfe68164 add self-damaging weapons 2021-03-03 11:08:04 -05:00
Jenna Trassa 8b0e79703a A translateable Asteroid Impact Time 2021-03-03 14:55:29 +01:00
Baezon c3c4c21fc2 typo 2021-03-03 02:26:23 -05:00
Birk Magnussen 8471b8e444 Change Preload Error to Warning 2021-03-03 15:48:47 +09:00
Baezon 8a5483db0b retail name compatability 2021-03-03 01:08:15 -05:00
Baezon 708de001f3 Merge remote-tracking branch 'upstream/master' into decouple-asteroids-species 2021-03-02 19:55:00 -05:00
Birk Magnussen 6cdbb8159b Change SEXP Syntax, and allow Wings 2021-03-03 06:00:47 +09:00
Goober5000 03dbdf7f09 don't display unmodified annotations 2021-03-02 15:09:28 -05:00
m!m 1561a75b13 Merge pull request #3260 from BMagnu/simulatedspeedoverrides_tb
Add scripting API for accessing registered Simulated Speech Overrides
2021-03-02 17:51:49 +01:00
Goober5000 aff1ad40f3 better handling of unexpected characters that come after numbers 2021-03-02 11:31:16 -05:00
Birk Magnussen 19f48e3a10 Tidy up leftover code 2021-03-02 22:17:06 +09:00
Birk Magnussen 2c27707e00 Add replace-texture SEXP 2021-03-02 22:03:28 +09:00
BMagnuandm!m 9a854a7066 Add change to correct typecast
Co-authored-by: m!m <[email protected]>
2021-03-02 17:09:20 +09:00
Asteroth 897492e228 Merge pull request #3257 from BMagnu/beam_reset_offset
Add flag for beams to track uoffset individually
2021-03-02 03:08:02 -05:00
Asteroth 72d7b1bc9c Merge pull request #3259 from BMagnu/lssm_warpeffect
Added flag to select the warp effect type of LSSM's
2021-03-02 03:07:43 -05:00
Goober5000 14a8db0dda check for all possible strings 2021-03-01 21:01:01 -05:00
Goober5000 258ffdf56d a token consisting of a single + or - is not a valid number 2021-03-01 21:00:48 -05:00
Baezon bd5f709e14 must be 32 bits!!! 2021-03-01 12:14:13 -05:00
Baezon b6c29e3ffd increase max poofs to 32 2021-03-01 12:00:37 -05:00
Birk Magnussen b45cb19f3c Add changes to the parse exceptions to work with utf8 encoding 2021-03-02 00:05:12 +09:00
Birk Magnussen e30c919286 Add encoding conversion helpers 2021-03-02 00:03:36 +09:00
Goober5000 c4374d11a9 replace world_to_turret_matrix 2021-03-01 00:02:44 -05:00
Goober5000 3b1aac26e8 remove most of turret_matrix stuff 2021-02-28 23:41:56 -05:00
Birk Magnussen bbc0f08541 Fix Warpout being affected as well. Fix Messages. Fix Init 2021-03-01 13:36:05 +09:00
Goober5000 d4c6c3e145 turret_norm should now be calculated properly 2021-02-28 21:48:15 -05:00
Goober5000 66b7b011c9 Merge pull request #3256 from Goober5000/switch_sexp
add switch and functional-switch operators
2021-02-28 18:00:59 -05:00
Birk Magnussen 2233d2eb9b Reflect used player object 2021-03-01 01:32:13 +09:00
Birk Magnussen e9b2047769 Add function to switch campaign 2021-03-01 01:27:14 +09:00
Birk Magnussen 781aa5c638 Fix warning 2021-03-01 00:55:05 +09:00
m!m b5212d69e4 Merge pull request #3258 from BMagnu/lua_file_cleanup
Changed File not closed error to a warning and automatic file close
2021-02-28 16:44:58 +01:00
Birk Magnussen 03eb74e616 Add scripting API for accessing registeres sso's 2021-03-01 00:32:42 +09:00
Birk Magnussen f0d5c5a499 Remove redundant close 2021-03-01 00:13:49 +09:00
Birk Magnussen 335f2476f9 Added flag to select the warp effect type of lssm's 2021-03-01 00:06:15 +09:00
Birk Magnussen 530916e0fa Changed File not closed error to a warning and automatic file close 2021-02-28 23:47:07 +09:00
Birk Magnussen b4791b3b10 Add flag for beams to track uoffset individually 2021-02-28 14:40:25 +09:00
Baezon 4bdb9165ea bugfix 2021-02-27 22:33:21 -05:00
Goober5000 8d4976dd95 add switch and functional-switch operators
Like the C equivalent, these SEXPs allow one action to be taken, or one value to be returned, based on a numeric expression.
2021-02-27 21:56:51 -05:00
m!m e393503eb2 Merge pull request #3244 from the-maddin/default_volume_issue
Set default volume on audiostream creation
2021-02-27 22:41:03 +01:00
JohnAFernandez 9c4d8f175b Merge pull request #3255 from Baezon/bugfix-trail-texture
Properly initialize trail texture stretch
2021-02-27 14:31:12 -05:00
m!m 002b8a69b1 Merge pull request #3251 from asarium/fix/actionsCompile
Add a CMake platform check for proper non-copyable type support
2021-02-27 20:08:05 +01:00
Baezon 529ba78c04 review tweak 2021-02-27 13:48:26 -05:00
Baezon 772eaa634a properly initialize texture stretch 2021-02-27 13:41:24 -05:00
asarium 7c909c6d69 Fix Visual Studio compilation around non-copyable type
This works around a compiler bug present in most older versions of MSVC
where it absolutely wanted to use a deleted copy constructor even if a
move constructor was available.

This just moves the relevant code into the default constructor.
2021-02-27 19:39:29 +01:00
JohnAFernandez a22f44ce01 Merge pull request #3187 from Baezon/swarm-cleanup
Give swarm missile handling a well-deserved makeover
2021-02-27 00:01:58 -05:00
JohnAFernandez 09671d9907 Merge pull request #3245 from Baezon/disabled-repair-fix
Bugfix for disabled fighters interupting their own support calls
2021-02-26 23:59:03 -05:00
Goober5000 da4b6b2f67 Merge pull request #3252 from Goober5000/main_hall_parsing_fix
when we're finished parsing a main hall, the next main hall should be a new one
2021-02-26 21:55:13 -05:00
the-maddin c0f351d92e fix indents 2021-02-27 00:01:08 +01:00
m!m 8700645d21 Merge pull request #3067 from asarium/lua/fullTypeCoverage
Add full type coverage for return types and variables
2021-02-26 23:06:55 +01:00
Goober5000 3fe59717c5 when we're finished parsing a main hall, the next main hall should be a new one
With modular tables, we might have modified an entry in the middle of the vector, in which case the next index would be an existing main hall.  If the next modular table then created a brand new main hall, it would overwrite that entry.  This makes sure the code always assumes the next main hall will come at the end of the list.
2021-02-26 16:47:05 -05:00
asarium 0fb712ed39 Add full type coverage for return types and variables
This introduces type parsing for all types used within the scripting
documentation. This improves the generated JSON output and also
validates new code via the unit test.
2021-02-26 22:37:37 +01:00
the-maddin 003fa68582 Remove leftover default setting 2021-02-26 22:23:46 +01:00
Baezon e3acb2c56b ai fighter support 2021-02-25 23:45:42 -05:00
Baezon 789f78aefd Merge remote-tracking branch 'upstream/master' into expose-huge-small-targeting 2021-02-25 23:36:59 -05:00
Baezon ec323a3960 combine flags 2021-02-25 23:15:29 -05:00
Baezon 86d01a3b0f Merge remote-tracking branch 'upstream/master' into disabled-repair-fix 2021-02-25 21:22:18 -05:00
Baezon a685b6f051 Merge remote-tracking branch 'upstream/master' into better-subsys-attacking 2021-02-25 21:20:51 -05:00
Goober5000 2ac85f3172 Merge pull request #3246 from Goober5000/back_inserter_include
add missing #include
2021-02-25 15:14:48 -05:00
Goober5000 18a15eed29 add missing #include
On some setups the hierarchy of #include files doesn't catch an <iterator>, so #include it explicitly.
2021-02-25 13:45:07 -05:00
m!m 413633855f Merge pull request #3248 from asarium/build/fixQt
Force aqt to a known good version
2021-02-25 19:11:01 +01:00
asarium ac5eb11c39 Force aqt to a known good version
There was another break in that package so this should hopefully make
our builds more stable.
2021-02-25 18:37:44 +01:00
m!m ca5ab260c9 Merge pull request #3242 from asarium/feature/actionExpression
Add dynamic expression support for actions
2021-02-25 18:17:34 +01:00
Baezon 80ba3b9e9c Merge remote-tracking branch 'upstream/master' into better-subsys-attacking 2021-02-25 02:30:18 -05:00
Baezon 81c771b8ea clean up 2021-02-25 02:13:02 -05:00
Baezon d86723ef07 bugfix disabled fighters calling for support 2021-02-24 16:10:04 -05:00
asarium d589234648 Some final changes 2021-02-24 18:04:19 +01:00
the-maddin 26aab09b8e Update scripting documentation audio_stream:play()
to reflect what the implementation actually does.
2021-02-24 02:16:01 +01:00
JohnAFernandez 55b8f3f642 More cleanup and Int3() refactors (#2744)
* Clean Up ai_attack_object()

There was an unused parameter, and no one has added subsystem targeting (at least to this function) in the past 20 years, so it's time to remove it and make it more readable.  Probably better to adjust that behavior somewhere else anyway.

Also changes an Int3() into

* More Int3 cleaning

Refactor a few Int3()'s in the AI code

* Feedback on is_ignore_object_sub

* Feedback, remove duplicate check, add documentation to preserve why it was there
2021-02-23 19:51:43 -05:00
the-maddin 063854384f Set sane default volumes on audiostream creation.
Looking throughthe code, it appears that
sound volumes are typically set when calling
the "play" function for in-engine uses of sounds.
No default values were, in fact, set explicitly at
creation, so they were initialized to 0.0f.

Scripting documentation, however, refers to
default volumes per type where no volume is
passed. New engine functionality should also
be able to rely on this.

I'm setting sane values found in other
parts of the sound system at stream creation,
to be used or overwritten later.
2021-02-24 01:45:05 +01:00
the-maddin 9ffcd780e9 Deduplicate stream creation code 2021-02-24 01:45:05 +01:00
the-maddin 4125d0bdba Fix stream slot leak
A wrong stream type could lead to a stream handle
being marked as used although no stream is created
2021-02-24 01:44:10 +01:00
the-maddin af29243157 Merge remote-tracking branch 'refs/remotes/upstream/master' 2021-02-23 20:52:40 +01:00
Fabian Woltermann 659d68e9b9 Merge pull request #3167 from EatThePath/cylinder-only-tube-lights
Cylinder only tube lights
2021-02-23 19:11:22 +01:00
m!m 3d856b77d9 Merge pull request #3229 from the-maddin/master
Scripting&Sound: Load sound from memory
2021-02-23 17:57:32 +01:00
Baezon f447fd4e23 unused variables 2021-02-23 01:13:08 -05:00
Baezon 8088cf0ab4 ints to floats 2021-02-23 00:53:10 -05:00
Baezon a69046000e cast to int 2021-02-23 00:12:29 -05:00
Baezon 881da211a2 misc tweaks 2021-02-22 23:23:49 -05:00
Baezon 622a28236e decouple species from asteroids 2021-02-22 22:55:34 -05:00
the-maddin d0edab2c74 Better instance preparation; no MIN macro 2021-02-23 00:47:13 +01:00
Martin Merget c715cf5c65 Merge remote-tracking branch 'refs/remotes/upstream/master' 2021-02-23 00:04:54 +01:00
z64555 1fca306fc9 Address clang-tidy issues. 2021-02-22 14:24:26 -06:00
asarium 02b1e38cd7 Add variables concept to expressions
This also includes the necessary setup work for using "position" and
"direction" in action expressions.
2021-02-22 18:39:06 +01:00
asarium 851a7663a8 Rework actions to use definitions
This introduces action definitions which can then be instantiated to
form actual actions with expressions as their parameters.
2021-02-22 18:02:22 +01:00
asarium bcaa7934c6 Allow implicit conversion from int to float
This is generally a safe operation and will make the system a bit easier
to use.
2021-02-22 18:02:22 +01:00
asarium 1d6052e81e Rework function handling 2021-02-22 18:02:22 +01:00
asarium a5a91b5acf Add Action expressions
This is a parser for a very simple language to allow for execution of
dynamic expressions with return values for use as action parameters. The
only "dynamic" part this currently supports are random ranges but more
features are planned for the future.
2021-02-22 18:02:22 +01:00
asarium aa7ea238b9 Update GTest 2021-02-22 18:02:22 +01:00
m!m 8b23ccdf2e Merge pull request #3061 from asarium/feature/actionSystem
Add dynamic action programming system
2021-02-22 18:00:58 +01:00
Baezon adea41e690 clarity edits 2021-02-21 21:56:34 -05:00
Baezon d463db3742 Merge remote-tracking branch 'upstream/master' into generic-debris-enhancement 2021-02-21 21:31:59 -05:00
Martin Merget 4305aed38d Factor out duplicate creation/opening code 2021-02-22 01:39:55 +01:00
z64555 f51502e4ae Make qtFred and Fred changes consistent with each other. 2021-02-21 18:16:55 -06:00
the-maddin 34eed12988 Extract shared code from AudioStream::Create and CreateMem
Also cleaned up control flow on failure as far as used macros allow.
2021-02-22 00:58:41 +01:00
the-maddin 60775e73b5 Fix MSVC builds v2 2021-02-21 22:30:17 +01:00
the-maddin e55b246756 Fix MSVC builds 2021-02-21 22:14:39 +01:00
the-maddin 438f48c835 Fix compiler/type issue 2021-02-21 21:51:34 +01:00
asarium 8f88801646 Add dynamic action programming system
This system adds the code necessary for letting content creators specify
complex events by specifying a simple, program-like sequence of
operations that will be executed by the engine when a certain event is
triggered.
2021-02-21 21:29:02 +01:00
the-maddin afc9e8132a renamed memfile functions & struct 2021-02-21 20:53:52 +01:00
the-maddin 371aaa1107 Moved, documented and renamed struct MemFileCursor 2021-02-21 20:46:55 +01:00
the-maddin ab7e6cbbe1 add LuaErrors for invalid input, fix off-by-one 2021-02-21 20:37:02 +01:00
m!m 340edd5ec0 Merge pull request #3239 from asarium/build/updateBuildImage
Update Linux build image and make consistent
2021-02-21 14:36:27 +01:00
asarium 88e6469fb4 Update Linux build image and make consistent
For some reason the last update of the PR pipeline did not update the
other workflows as well so we had some minor inconsistencies.

This should hopefully fix the nightly build issues for real this time.
2021-02-21 14:02:32 +01:00
BMagnu fd60dd342f Add vanish Lua function to some objects (#3238)
* Add vanish function to some objects

* Modify vanish function return. Modify fireball access

* Remove dedunant check for ship vanish
2021-02-21 11:59:49 +00:00
Asteroth dcd38539c2 Merge pull request #3237 from Baezon/fix-turret-inaccuracy
Bugfix to turret_inaccuracy
2021-02-21 00:19:39 -05:00
Baezon 70265c6f63 bugfix turret inaccuracy 2021-02-20 23:41:30 -05:00
JohnAFernandez 19b3f85eea Merge pull request #3220 from Baezon/turret-inaccuracy
Add turret-set-inaccuracy SEXP
2021-02-20 21:07:47 -05:00
JohnAFernandez 873ec133b4 Merge pull request #3204 from Baezon/icons-parsing-overhaul
Overhaul briefing icon parsing
2021-02-20 20:57:47 -05:00
Goober5000 88f6312fd8 Merge pull request #3234 from Goober5000/sim_hull_scripting
add SimHitpointsLeft
2021-02-20 16:51:11 -05:00
Goober5000 69c1398368 add SimHitpointsLeft 2021-02-20 16:13:14 -05:00
m!m 043b1d34c8 Merge pull request #3232 from asarium/fix/linuxNightly
Try to fix linux nightly builds
2021-02-20 21:34:51 +01:00
m!m 1226c894ed Merge pull request #3233 from asarium/build/githubRegistry
Store standalone image on GitHub
2021-02-20 21:34:40 +01:00
asarium 0fb7143f12 Store standalone image on GitHub
Docker Hub is going into a weird direction with their rate limits and
the GitHub Container Registry is better in that regard.

Old images will stay in Docker Hub for the time being though.
2021-02-20 18:34:25 +01:00
Fabian Woltermann 57c593f74e Merge pull request #3231 from Goober5000/fix_eval_numeric_sexp
fix mn.evaluateNumericSEXP
2021-02-20 14:54:53 +01:00
asarium cf3faa35cd Try to fix linux nightly builds
The default Python version appears to be too recent so let's try to have
this action use the python package that is installed in our build image.
2021-02-20 14:44:01 +01:00
Goober5000 2429b99184 fix mn.evaluateNumericSEXP
This is a follow-up to #2687.  The final implementation of evaluateNumericSEXP different from the testing implementation in a small but crucial way that prevented it from actually working.  Since it used `eval_num`, it didn't evaluate the specified SEXP node but rather the CAR (first element) of the node list.  This fixes that by putting the node in a temporary SEXP list so that `eval_num` will look in the right place.
2021-02-20 01:40:55 -05:00
Shivansps 2ee128cd88 Merge branch 'arm_fixes' 2021-02-19 21:02:53 -03:00
Shivansps a2b349855e Merge pull request #1 from scp-fs2open/master
Update fork
2021-02-19 20:53:22 -03:00
Baezon 0f451e6190 more comments 2021-02-19 10:45:32 -05:00
the-maddin 366a96bdd4 Expose audiostreams from memory to LUA
Allow scripts to play any LUA binary string containing valid WAV data.
Useful for TTS data passed in via LUASockets.
2021-02-19 01:22:24 +01:00
the-maddin 8770ad74f8 Add support for audiostream from in-memory sound 2021-02-19 01:19:05 +01:00
the-maddin 68d5467e2a Add support for in memory sound 2021-02-19 01:16:39 +01:00
the-maddin ac2fa61f6e Add support for in-memory sound
Using the memory backend, treat sound in memory like sound in cfiles.
2021-02-19 01:14:40 +01:00
the-maddin 2060a1dabe Add backend for in-memory audio
FFmpegContext can now also hold a cursor over a vector of bytes instead of a cfile to store sound data in it.
Appropriate creation, reading seeking functions included.
2021-02-19 01:10:43 +01:00
Fabian Woltermann b561156f09 Merge pull request #3226 from Goober5000/tocase
additional case functions and checks
2021-02-18 14:08:34 +01:00
Goober5000 f3bca4384f additional case functions and checks
This refactors the tolower/toupper code to use standards-conformant logic, and also adds some helpful utility functions.  Regular tolower/toupper must be supplied a value that can be represented as `unsigned char`, but the std:: functions are a bit more robust.
2021-02-18 04:23:08 -05:00
Fabian Woltermann c00ff88a5a Merge pull request #3223 from Goober5000/case_insensitive_ships
make the ship lookup case insensitive
2021-02-18 09:10:57 +01:00
Goober5000 866b64ff8d maybe this works better 2021-02-17 12:12:17 -05:00
Goober5000 3acd74e894 make the ship lookup case insensitive
Does what it says on the tin.  Fixes #3221.
2021-02-17 11:31:45 -05:00
Goober5000 ffa6e594e7 Merge pull request #3222 from Goober5000/perform_actions_documentation
add clarification
2021-02-16 19:27:30 -05:00
Goober5000 39f9df11f7 add clarification 2021-02-16 18:35:11 -05:00
Baezon a606f2cafa modernize-use-auto 2021-02-16 10:52:56 -05:00
Baezon 592855c35d NULL -> nullptr 2021-02-16 02:27:11 -05:00
Baezon 3797171fb0 Merge remote-tracking branch 'upstream/master' into turret-inaccuracy 2021-02-16 02:23:45 -05:00
Baezon 028e40a43b add turret-set-inaccuracy sexp 2021-02-16 02:21:54 -05:00
Goober5000 36ea4c225b Merge pull request #3219 from Goober5000/model_instance_in_fred
add model instance support to FRED rendering
2021-02-15 09:33:55 -05:00
Goober5000 24df0efb6e add model instance support to FRED rendering
This changes FRED to properly initialize a model instance on ship creation and also use that instance when rendering the ship.  This prevents destroyed submodels from appearing.  Fixes #3212.
2021-02-15 08:34:12 -05:00
Fabian Woltermann db2eba92d5 Merge pull request #3213 from Goober5000/message_list_chain
add send-message-chain
2021-02-15 10:50:05 +01:00
Fabian Woltermann dd0bb3ceca Merge pull request #3214 from Goober5000/fix_event_editor_closing
fix event editor closing on key press
2021-02-15 10:15:18 +01:00
Fabian Woltermann f9da8c7db2 Merge pull request #3217 from Goober5000/fix_event_editor_delete
fix event node deletion behavior
2021-02-15 10:14:51 +01:00
Goober5000 82a93e9e47 fix event node deletion behavior
The defensive coding in #3191 against illegal cut/delete operations was a little too defensive.  This properly allows deletion of events when necessary, and it still guards against a Cut operation being improperly called due to a shortcut key press.

Fixes #3216.
2021-02-14 17:12:22 -05:00
z64555 754f0ea876 Removed unused local variable. 2021-02-14 10:33:49 -06:00
z64555 9145922cb1 Fix default_item to use default_bindings. 2021-02-14 09:59:36 -06:00
z64555 47e19207f9 Merge branch 'master' into controls3
Resolved Conflicts:
	code/controlconfig/controlsconfig.cpp
	code/controlconfig/controlsconfig.h
2021-02-14 09:48:55 -06:00
Goober5000 41f9dbb003 fix event editor closing on key press
Restores the MFC functions that were taken out in #3073.  These functions appeared redundant, but they were actually necessary to intercept the MFC handling of Enter and Escape.  In addition to fixing that behavior, this PR also adds some clarifying comments and renames some functions to prevent confusion.
2021-02-14 01:32:03 -05:00
Goober5000 c067651498 add send-message-chain
Implements send-message-chain as described in issue #3185.  Also fixes the default argument for message priority, and mirrors the default argument fix to qtFRED.
2021-02-14 00:23:57 -05:00
JohnAFernandez 2361152399 Merge pull request #3211 from JohnAFernandez/Messaging_Switch_to_Normal
Make "Normal" the default option for Messages
2021-02-13 23:28:47 -05:00
JohnAFernandez 0318e3f851 Make "Normal" the default option for Messages
Moves messages to the more suitable default of normal.  Also adds clarifying documentation.
2021-02-13 15:56:09 -05:00
Goober5000 d21f7b8915 Merge pull request #3208 from PhantomHoover/fix/misc-rand-sizes
Properly fix static_rand()'s range and account for this in functions that were misusing it
2021-02-13 14:32:18 -05:00
Phantom Hoover 640640b4b4 Properly fix static_rand()'s range and account for this in functions that were misusing it 2021-02-13 16:06:47 +00:00
Fabian Woltermann f87cf7df23 Merge pull request #3207 from Baezon/waypoint-complete-fit-bugfix
Fix for waypoint completion with FIT
2021-02-13 17:01:25 +01:00
Asteroth 616e6a9bc0 Merge pull request #3180 from Baezon/split-collision-light-width
Split beam width for collision purposes and lighting purposes
2021-02-13 02:15:17 -05:00
Goober5000 303787d97c Merge pull request #3206 from Goober5000/retail_hybrid_translation_behavior
restore retail behavior of XSTR
2021-02-12 17:48:23 -05:00
MageKing17 db2bd97669 Merge pull request #3205 from MageKing17/bugfix/controlconfigoverride-default-preset
If the first #ControlConfigOverride isn't named, use "default".
2021-02-12 14:29:01 -08:00
Baezon 5e38f3c0d4 fit waypoint bugfix 2021-02-12 11:12:24 -05:00
Goober5000 1e756d1a67 restore retail behavior of XSTR
This is a follow-up to #2390.  Retail used a weird hybrid approach where internal strings were translated but external strings were not.  This restores that behavior by adding another language, LCL_RETAIL_HYBRID, which is the default.  The game can still be run in completely untranslated or completely translated mode.

All three modes have been tested and translate strings, or not, as expected.  The `$Use tabled strings for the default language:` flag has also been tested and still works.
2021-02-11 19:47:12 -05:00
Baezon ec274d58db clang-tidy 2021-02-10 21:49:49 -05:00
Baezon 682c15d6b1 clang-tidy curse you 2021-02-10 21:41:37 -05:00
MageKing17 29fbebde16 If the first #ControlConfigOverride isn't named, use "default".
This causes it to replace the first preset in the list, which more closely approximates the old behavior.
2021-02-10 17:58:08 -08:00
JohnAFernandez bd7450c4e6 Merge pull request #3198 from Baezon/landmark-logging
Add 'landmark' logging
2021-02-10 20:40:40 -05:00
Baezon b843a5be3a clean up 2021-02-10 18:15:48 -05:00
Baezon be44e287ee overhaul brief icon parsing 2021-02-10 17:36:37 -05:00
Goober5000 af16a6bc42 Merge pull request #3191 from Goober5000/fred_indents_and_colors
Additional FRED features
2021-02-10 09:45:07 -05:00
Fabian Woltermann 6b7429ab5d Merge pull request #3192 from Baezon/turret-forced-target
Add turret-set-forced-target SEXP
2021-02-10 11:39:16 +01:00
Fabian Woltermann d4be72c49b Merge pull request #3203 from JohnAFernandez/Really-fix-hud-config-crash
Actually fix radar range turning to -1 after hud gauge config
2021-02-10 11:36:30 +01:00
JohnAFernandez 86308bbf34 Actually fix radar range turning to -1 after hud gauge config
Problem was caused by negative array index write in this section of code.
2021-02-10 00:05:27 -05:00
Goober5000 3d6124c7ad Merge pull request #3144 from Goober5000/fix_look_at
reimplement look_at
2021-02-09 21:48:52 -05:00
Baezon 6357c2a856 clang tidy 2021-02-07 23:40:14 -05:00
Allen A. Babb 0f1c5e0a42 Merge pull request #3201 from z64555/unhide_chocolate
Unhide chocolate - Revert default-disable of controls unusable with retail data.
2021-02-07 17:02:32 -06:00
z64555 cb692b22ba Add note comment to the CCI_builder. Controls that don't work in retail should be default disabled, but this relies on the coders making them to get it set the first time. 2021-02-07 14:23:44 -06:00
z64555 0b03c3f672 Add me to the cool kids club. Wait, no, not that one. 2021-02-07 14:15:35 -06:00
z64555 15d3dde5fa Unhide non-retail controls by default. Even though retail data can't make use of most of them, some mods may count on their visibility. 2021-02-07 14:06:27 -06:00
Baezon 24947b64d7 split light and collision width 2021-02-06 22:00:45 -05:00
Goober5000 61bb44d07b Merge pull request #3200 from wookieejedi/test-rotation-fix
Fix Bug with Reading Turret Rotation Axes
2021-02-06 14:44:07 -05:00
Goober5000 aa3eb4d42c Merge pull request #3199 from Goober5000/vecmat_projecc
add useful function
2021-02-06 14:19:36 -05:00
wookieejedi 2cdc74264c Fix Bug with Reading Turret Rotation Axes
Multipart turrets that have no rotation specified in PCS don't have `movement_type` assigned properly within `modelread.cpp`, which eventually leads to a fatal crash. This two line fixe properly specifies the `movement_type` and fixes the crash. Tested and confirmed. Thanks to @Goober5000 for the assistance and troubleshooting.
2021-02-06 13:59:23 -05:00
Goober5000 dd92a0f0bb add vm_vec_is_normalized and use it in several places 2021-02-06 13:46:54 -05:00
Goober5000 e699d991d1 add useful function 2021-02-06 00:19:57 -05:00
wookieejedi ede8c6a172 Merge pull request #3197 from wookieejedi/expose-countermeasure-firewait
Expose Additional Countermeasure Options to Modders
2021-02-06 00:08:36 -05:00
JohnAFernandez ba9205cd35 Make sure to pull from the bounds of the vector. 2021-02-05 23:40:24 -05:00
Baezon b7bd8d6fbb moar tweaks 2021-02-05 15:28:14 -05:00
Baezon 7015818ea5 review tweaks 2021-02-05 12:56:03 -05:00
wookieejedi c831235cd3 add warnings 2021-02-05 11:39:50 -05:00
Baezon a6b19706eb 'landmark' logging 2021-02-05 03:49:39 -05:00
wookieejedi de17df207a specify values for AI and use multipliers for fail and succeed 2021-02-04 22:38:06 -05:00
wookieejedi 5116471d8d simplify logic 2021-02-04 13:40:23 -05:00
wookieejedi e01bd28e79 Expose Additional Countermeasure Options to Modders
This PR provides modders with additional options to alter countermeasure values. Previously, countermeasures had a fixed, hardcoded fire wait time of 333 milliseconds, regardless of what `$Fire Wait:` was specified. Also, the AI would wait a fixed delay between firing of failed countermeasure launches and successful countermeasure launches. For successful launches the AI would double the fire wait. Also, Friendly ships would only use a fixed constant value for countermeasure firing chance, and not the value based on their class specific AI profile.

This PR exposes those values with the following options:
•	Add main AI table flag: `Friendly Ships Use AI Profile Countermeasures Firing Chance`. This will allow Friendly ships to use their AI class profile countermeasure firing chance instead of the default fixed value from main AI table.
•	Add value in CM section of weapons table: Countermeasures use fire wait time `+Use Fire Wait`. This is a boolean that allows the countermeasure’s fire wait to actually use what is specified in the `$Fire Wait:` section of that weapon.
•	Add value in CM section weapons table: `+Fail Delay Equals Fire Wait`. The delay between failed countermeasure launches is set to use the fire wait value.
•	Add value in CM section weapons table: `+Successful Launch Delay Multiplier`. This allows modders to set the value that is multiplied to fire wait for successful countermeasure launches.
2021-02-04 13:12:02 -05:00
Asteroth 994e42a27d Merge pull request #3175 from Baezon/trail-decay-exponent
Non-linear Trail decay and Texture stretch
2021-02-04 12:09:22 -05:00
wookieejedi 74c9139c1c Merge pull request #3195 from wookieejedi/fix-retail-cap-ship-speed
Fix speed differential for retail cap ships
2021-02-03 19:26:19 -05:00
wookieejedi 1d7070cf12 add claryifying parentheses 2021-02-03 18:18:04 -05:00
JohnAFernandez 19c19f1262 Remove the Unused Just_updated Flag
This flag is vestigal.  It was likely used in the FS1 codebase and then was not removed by the rushed FS2 multi team.  Whether or not an object uses physics_sim is determined earlier in `multi_oo_is_interp_object()`
2021-02-03 18:00:16 -05:00
wookieejedi 754f4a309c add deprecation check 2021-02-03 17:46:06 -05:00
Asteroth 83bd14586f Merge pull request #3179 from Baezon/empty-sound-fix
Don't search for empty sound names
2021-02-03 17:41:08 -05:00
wookieejedi 828a993eb6 Fix speed differential for retail cap ships
As astuetly determined by @Baezon `the speed differential for retail cap ships is caused by 'ships with no shields can manage ETS', being part of the bugfixes with target version`. This PR adds two flags per Discord suggestion, one for all ships and one for only small ships.
2021-02-03 17:14:39 -05:00
Asteroth 69b319a7d6 Merge pull request #2591 from Baezon/homing-primaries
Add homing primaries
2021-02-02 21:48:16 -05:00
Baezon 6414172898 Merge remote-tracking branch 'upstream/master' into homing-primaries 2021-02-02 21:15:05 -05:00
Baezon e78fccc294 unused variables 2021-02-02 20:49:33 -05:00
Baezon 54f1a86a5a clena up and finalization of subsys targeting 2021-02-02 20:06:40 -05:00
Baezon 8c387d7507 tentative subsys targeting 2021-02-02 11:31:05 -05:00
Baezon 476e916945 Merge remote-tracking branch 'upstream/master' into turret-forced-target 2021-02-01 22:12:50 -05:00
Asteroth 1d131403d5 Merge pull request #3176 from Baezon/damage-incidence-angle
Angle-based damage multiplier
2021-02-01 20:54:20 -05:00
Baezon e7cab7cb42 clang-tidy dont hurt me no mo 2021-02-01 14:24:44 -05:00
Baezon 7b2c8304ff typo 2021-02-01 13:25:44 -05:00
Goober5000 b6314feb29 add comment 2021-02-01 02:24:54 -05:00
Goober5000 a124722966 qtfred 2021-02-01 00:46:17 -05:00
Goober5000 47543ac7d4 implement keyboard shortcuts, implement mission saving for bg color 2021-02-01 00:46:17 -05:00
Goober5000 262b45188a resizable Event Editor 2021-02-01 00:46:17 -05:00
Goober5000 c0446cd03c color stuff works pretty well 2021-02-01 00:46:17 -05:00
Goober5000 bc37fda89e reorganize event annotations a bit
preliminary work for background color and changing indent
implement a sort-of-working background color change
2021-02-01 00:46:17 -05:00
Goober5000 275a439091 Merge pull request #3190 from Goober5000/quick_annotation_fix
mission save bugfix
2021-02-01 00:43:55 -05:00
Goober5000 f475ea4d25 mission save bugfix
Somehow during the annotation merge the save got borked.  This fixes mission saving.
2021-02-01 00:09:55 -05:00
Goober5000 72d2f9f1a1 reimplement look_at
This PR re-implements the look_at feature, which has been broken for many years.  A look-at rotation is a type of intrinsic_rotation, just like dumb-rotations. The same code handles both; the only difference is whether submodel_rotate or submodel_look_at is called to apply the actual movement.

The previous look_at parsing code has been optimized by performing the name-to-submodel resolution when the model is actually parsed, instead of when the first look-at rotation is called.  This avoids the need to store a name in the submodel struct and also avoids cluttering the look_at function.

This PR is essentially bookkeeping, except for the submodel_look_at method.  This method takes advantage of the submodel rotation upgrade and calculates angles in almost the same way as the new turret rotation code.  It's much more elegant, much less hackish, and works for all detail levels.
2021-01-31 14:31:40 -05:00
Goober5000 8ab3cf240b Merge pull request #3189 from Goober5000/fix_compilation_error
fix compilation
2021-01-31 14:30:16 -05:00
Goober5000 450900d2b5 fix compilation
Quick hotfix due to two branches being merged that were both compatible with master but not with each other.
2021-01-31 13:57:12 -05:00
Goober5000 68b6795d5a Merge pull request #3079 from Goober5000/stuff_number
convert float parsing to use strtof
2021-01-31 13:18:27 -05:00
Goober5000 868715867d Merge pull request #3056 from Goober5000/model_rotation_arbitrary_axis
Allow submodels to rotate around an arbitrary axis
2021-01-31 13:17:27 -05:00
Baezon 9b7cc77b55 revert multi compatability :( 2021-01-31 13:11:27 -05:00
Baezon d3355b0783 experimental multi compatability 2021-01-31 12:29:25 -05:00
m!m 6f382ce0d9 Merge pull request #3188 from asarium/fix/stdApiCrash
Fix crash in server REST API when omitting framecap
2021-01-31 17:02:19 +01:00
asarium dbfb5b9d34 Fix crash in server REST API when omitting framecap
Since the return value of the json library is null in that case it
crashed the server when no value was specified.
2021-01-31 16:08:33 +01:00
Allen A. Babb b3edc683fc Merge pull request #2907 from z64555/feature/controls2
Controls 0, 1, and 2 - Vectorize Controls_config, Refactor Control Presets, and Use Undosys for undo/redo actions done in the Controls configuration menu.
2021-01-30 10:04:58 -06:00
Asteroth f1ff6ebf55 Merge pull request #2870 from Baezon/armor-types-beam-weapon
Use armor/damage types for beam-weapon damage
2021-01-30 02:33:13 -05:00
Baezon f95e51b047 dont search for empty names 2021-01-30 00:05:17 -05:00
wookieejedi 213d20f7ef Merge pull request #3177 from Baezon/better-missile-avoid
Improved missile avoidance
2021-01-29 22:47:01 -05:00
Goober5000 a10e456de3 Merge pull request #3073 from Goober5000/fred_comments
Fred comments
2021-01-29 17:38:31 -05:00
Goober5000 5187ea5041 Revert "Disable Qt projects since downloads are broken"
This reverts commit 4aa33c7b3e from PR #3160.
2021-01-29 16:57:05 -05:00
z64555 9b42819dce Address Clang-Tidy issues. 2021-01-29 15:09:54 -06:00
z64555 c1d1a965c6 Think I got all of the index swapped. *Scrolls right* oh. 2021-01-29 04:40:58 -06:00
Baezon 89a8cbcbae review tweaks 2021-01-29 01:04:15 -05:00
z64555 b97e804123 Address signed/unsigned complaint. 2021-01-28 23:54:44 -06:00
Asteroth e0dd807bb4 Merge pull request #3145 from EatThePath/fix-type-d-beam-pulse-lighting
Stop including tube lights between anti-fighter beam pulses
2021-01-29 00:39:27 -05:00
Baezon 888c14aeaf flip max and min 2021-01-28 23:45:06 -05:00
Baezon ab64183981 Merge remote-tracking branch 'upstream/master' into generic-debris-enhancement 2021-01-28 22:57:42 -05:00
Baezon 055784dcff clean up swarm missiles 2021-01-28 22:33:01 -05:00
Baezon 91be428596 missing '$' 2021-01-28 20:27:36 -05:00
Baezon 0c0a9e4f26 typo 2021-01-28 20:24:54 -05:00
z64555 d6672d01cf Don't count an item in the reset check if the item is disabled.
* Remove errant Assert()
* Drop leading whitespace of preset $Name field
* Fix do_reset behavior due to incorrect default binding check.  Fix is possibly a backport.
* When $Text is specified for a bind item, set the XStr index to 0.
2021-01-28 19:16:07 -06:00
Goober5000 43ae0e3575 qtfred 2021-01-28 19:59:20 -05:00
Goober5000 2be4818d24 tweak parsing since we want to read annotations generally 2021-01-28 19:17:08 -05:00
Goober5000 9bebdbb575 rename event_comment to event_annotation 2021-01-28 18:56:15 -05:00
Goober5000 04cf220f2d comment capability for FRED
Add FRED comments. These aren't the typical source-code style comments that are embedded in mission or table files; these are regular strings that are stored as mission data. You might think of them as annotations. Right-click on any node in the event tree and click on Edit Comment to add one. The tree node will then show a different icon and the comment will be visible as a tooltip when you mouse over the node text.
2021-01-28 18:25:19 -05:00
Goober5000 61c7cc2856 Merge pull request #3141 from JohnAFernandez/Hud-config-screen-is-weird
Make sure the Hud_config_inited is reset when the screen is exited.
2021-01-28 14:29:29 -05:00
Asteroth d1f0f5002f Merge pull request #2775 from Baezon/burst-seed
Implement Beam Flags and some adjustments to burst handling
2021-01-28 11:51:30 -05:00
Baezon d3d016602d rename beam_flags -> beam_info_flags 2021-01-28 02:46:40 -05:00
Baezon f9e44f545e ignore empty sounds 2021-01-27 23:31:38 -05:00
Baezon 52f57df064 NULL -> nullptr 2021-01-27 23:25:19 -05:00
Baezon 61931520d1 Merge remote-tracking branch 'upstream/master' into generic-debris-enhancement 2021-01-27 23:06:45 -05:00
Baezon 229dd4c63c clean up 2021-01-27 20:59:01 -05:00
Baezon 7515422979 clarity parentheses 2021-01-27 20:14:33 -05:00
Baezon eb1d748907 safety 2021-01-27 17:25:28 -05:00
Baezon b87d3c65a0 Merge remote-tracking branch 'upstream/master' into better-missile-avoid 2021-01-27 15:11:08 -05:00
Baezon 8d841fa1cc clean up 2021-01-27 14:48:41 -05:00
Goober5000 537c4b6f24 Merge pull request #3172 from BMagnu/hotfix_keynames
Fix special char hex codes for utf8
2021-01-27 13:52:15 -05:00
Goober5000 f9a6c86cad Merge pull request #3162 from Goober5000/ship_create_display_name
default display names for script/sexp-created ships
2021-01-27 13:40:16 -05:00
Goober5000 db466048ea Merge pull request #3168 from Goober5000/debris_colgroup_check
add collision group checks to debris
2021-01-27 13:40:05 -05:00
m!m 6952b58846 Merge pull request #3174 from asarium/build/bumpVersion
Bump version
2021-01-27 19:12:45 +01:00
Baezon 284ad2941c Merge remote-tracking branch 'upstream/master' into better-missile-avoid 2021-01-27 12:53:24 -05:00
Baezon 76d295d2bc Merge remote-tracking branch 'upstream/master' into damage-incidence-angle 2021-01-27 12:47:55 -05:00
Baezon 66c38c43c6 clean up 2021-01-27 12:43:32 -05:00
asarium 2161ab563d Bump version 2021-01-27 17:55:37 +01:00
Baezon 6cd5510bd1 clean up 2021-01-27 10:49:32 -05:00
Birk Magnussen 25cca192db Switch Key Names from internal encoding to unicode in utf8 mode 2021-01-26 19:09:20 +09:00
Birk Magnussen e6067f756a Fix special char hex codes for utf8 2021-01-26 13:53:25 +09:00
Goober5000 6d9e9a2e3d add collision group checks to debris
Collision groups were checked between ships, weapons, and beams, but not debris.  This adds debris.
2021-01-24 01:07:11 -05:00
David Gibson 373d119f1a modernize nullptr for tidy 2021-01-23 21:58:47 -06:00
David Gibson 7cb2338325 removed now-superflous element counting loop from gr_opengl_deferred_lighting_finish 2021-01-23 21:10:54 -06:00
David Gibson ddcc94b0da Extended the tube light cylinder volumes for deferred lighting to encompass the end cap spheres, removed those spheres, and adjusted the shader handling of tube lights to account for this. 2021-01-23 20:56:07 -06:00
David Gibson 9a866434b8 Removed the end light volumes from the defered lighting setup for tubelights. 2021-01-23 17:31:12 -06:00
Goober5000 37e92e01b6 default display names for script/sexp-created ships
Now that the hash truncation logic is part of the ship display name, ships created by script or sexp should check this as well.
2021-01-22 23:06:48 -05:00
m!m 60047116fd Merge pull request #3160 from asarium/ci/disableQt
Disable Qt projects since downloads are broken
2021-01-22 16:54:54 +01:00
asarium 4aa33c7b3e Disable Qt projects since downloads are broken 2021-01-22 16:26:44 +01:00
m!m 373dbeb63f Merge pull request #3159 from Baezon/previous-bank-fix
Fix a bug with previous_bank and ship class swapping
2021-01-21 22:06:30 +01:00
m!m 361cc76c30 Merge pull request #3154 from Goober5000/redo_3149
fix a rare crash in the tech room
2021-01-21 21:47:53 +01:00
Baezon 3f27183d6d also reset previous bank 2021-01-21 01:04:13 -05:00
Baezon 4e5c74d729 add trail alpha decay exponent 2021-01-19 22:44:08 -05:00
Goober5000 3d976f53b4 fix a rare crash in the tech room
The tech room loop checked that all the lines could fit in the available screen real estate, but it didn't check to see that the number of lines was less than the array capacity.  Normally this never happened, but certain mods which use smaller fonts will overflow the limit.  This adds a proper bounds check and also increases the bounds so that more of the smaller lines can be used.
2021-01-17 11:21:41 -05:00
m!m e5af389803 Merge pull request #3150 from scp-fs2open/revert-3149-fix_techroom_crash
Revert "fix a rare crash in the tech room"
2021-01-17 17:14:30 +01:00
m!m ba0f2e7f83 Revert "fix a rare crash in the tech room" 2021-01-17 11:55:59 +01:00
Goober5000 f0987a4ad1 Merge pull request #3149 from Goober5000/fix_techroom_crash
fix a rare crash in the tech room
2021-01-17 02:15:55 -05:00
Goober5000 61dd4356f0 fix a rare crash in the tech room
The tech room loop checked that all the lines could fit in the available screen real estate, but it didn't check to see that the number of lines was less than the array capacity.  Normally this never happened, but certain mods which use smaller fonts will overflow the limit.  This adds a proper bounds check and also increases the bounds so that more of the smaller lines can be used.
2021-01-17 01:21:52 -05:00
David Gibson d9895455cd Addressed feedback and tidy issues with AA beam pulse lighting fixes 2021-01-15 13:09:43 -06:00
Baezon d9a7e786b5 Merge remote-tracking branch 'upstream/master' into burst-seed 2021-01-15 12:52:25 -05:00
David Gibson 40e7ce012e =Added some important brackets I negligently omitted 2021-01-15 00:28:59 -06:00
David Gibson 31227c659a added a check in beam_move_all_post() to avoid adding tube lights when anti-fighter beams are between pulses. Also added documenting comments to beam_type_b_get_status 2021-01-14 23:59:13 -06:00
JohnAFernandez 679f7f20d7 Switch the correct ammo variable.
The previous pr was supposed to fix what ammo capacity the ship was reloaded to, but instead it was changing how much ammo was in the magazine.
2021-01-14 09:23:52 -05:00
JohnAFernandez ff9b2fd6cd Make sure the Hud_config_inited is reset when the screen is exited. 2021-01-13 21:20:27 -05:00
Fabian Woltermann a939a73c14 Merge pull request #3139 from z64555/hud_config
More safety checks for the HUD_config struct
2021-01-13 22:20:43 +01:00
Goober5000 487aad8bbe a bit of cleanup and reorganization/simplification 2021-01-13 14:01:34 -05:00
Goober5000 554bbb884d remove angles from the submodel instance 2021-01-13 14:01:34 -05:00
Goober5000 020f14fb51 allow rotating submodels to rotate around an arbitrary axis 2021-01-13 14:01:28 -05:00
Goober5000 98e501acc7 remove the orientation field for submodels
Change the `orientation` field to `frame_of_reference` and remove it from submodel instance calculations.
2021-01-13 13:52:48 -05:00
Goober5000 3f5ad1239d Merge pull request #3140 from Goober5000/techroom_update
make model_set_up_techroom_instance a bit more robust
2021-01-13 13:51:47 -05:00
z64555 4e715352c9 Increment int strikes per CSG warning, as done in PLR code
* Use ReleaseWarnring instead of Warning
* Use correct upper boundry check logic on HUD_config::mail_color
2021-01-13 12:48:24 -06:00
Goober5000 5f538fa514 make model_set_up_techroom_instance a bit more robust
Follow-up to #3137.  I missed two important details in the first implementation: the triggered animation needs to be an "initial position" type, and `model_update_instance` needs to be run on all subobjects, not just turrets.

This should really fix #3123.  I still can't see the destroyed collector, but the Rahu no longer flickers when it spins around.
2021-01-13 13:17:31 -05:00
Goober5000 506ba911d0 Merge pull request #3137 from Goober5000/tech_room_instance
properly use model instances for tech room and briefing popups
2021-01-13 11:03:25 -05:00
z64555 f44cfa06c8 Adds more safety checks for PLR and CSG reading for the HUD_config structure.
* Adds a #define for the HC_color array size
* Doxy's the HUD_config struct
2021-01-12 23:12:20 -06:00
Goober5000 eeb6f5b091 properly use model instances for tech room and briefing popups
These two situations mostly relied on the obsolete model code which didn't include model instances.  Data for submodel positions and for whether a submodel is blown off are now stored exclusively in model instances, not the model itself.

This fixes #3124.
2021-01-12 23:15:37 -05:00
Fabian Woltermann 18cb07dc72 Merge pull request #3134 from EatThePath/tube-light-attenuation-recalc
Properly recalculate tube light attenuation
2021-01-11 20:28:19 +01:00
JohnAFernandez 3a4df0d89a Send them to Github instead of Mantis 2021-01-11 14:06:03 -05:00
JohnAFernandez d33f9db1f0 Move Standalone Running statement to after the init of Debug Statements 2021-01-11 14:05:01 -05:00
JohnAFernandez 75b26ef94b Fix unfocused multi interpolation inaccuracies (#3129)
Remove One Source of Client and Server having Different Timing

Multiplayer *must not* have its time affected by being in the background, because their clocks will come out of sync and movement from an out of focus multiplayer instance will appear to move in slow motion.  This fixes the timing discrepancy by only doing os_sleep when unfocused when in single player.
2021-01-11 14:04:23 -05:00
JohnAFernandez 398f4d9053 Remove Unused ClientDamage Commandline Option (#3132)
This option was likely part of an attempt to fix multi that never went anywhere. We now have rollback, which is on by default.
2021-01-11 14:02:52 -05:00
David Gibson 069947e397 Added a recalculation of tube light attenuation in fragment shader after proper distance is determined. fixes slash beam and penetration lighting issues 2021-01-11 11:55:45 -06:00
Fabian Woltermann 580d67eca7 Merge pull request #3133 from Baezon/slow-weapon-collide-fix
Fix collision culling for slow/accelerating weapons
2021-01-11 09:15:53 +01:00
Baezon 4bf93e08df fix collision culling for slow weapons 2021-01-11 00:45:42 -05:00
Fabian Woltermann 6c475130d1 Merge pull request #3126 from The-E/fix/ambient_light_in_lab
When setting the ambient factor in the lab, recalculate ambient lighting
2021-01-10 20:11:13 +01:00
Fabian Woltermann 6f0dec4169 When setting the ambient factor in the lab, recalculate ambient lighting 2021-01-10 19:44:24 +01:00
Goober5000 3b99402a0a Merge pull request #3121 from Goober5000/background_warning
make FRED validate all backgrounds, not just the active one
2021-01-10 09:21:45 -05:00
Fabian Woltermann 6c6ade116f Merge pull request #3120 from Goober5000/fix_3101
fix 3101
2021-01-10 12:43:47 +01:00
Fabian Woltermann 4f6c834587 Merge pull request #3122 from Baezon/glowpoint-timing-fix
Fix a bug with glowpoint timing
2021-01-10 12:42:42 +01:00
Baezon c486843e5f fix a bug with glowpoint timing 2021-01-10 03:11:25 -05:00
Goober5000 ec93ac4c0e fix 3101
Always update the ship class and loadout information in a ship's parse object, even if it is present at mission start.
2021-01-10 01:53:14 -05:00
Goober5000 2307d05086 make FRED validate all backgrounds, not just the active one
The background validation checks are somewhat convoluted, and misleading with multiple backgrounds, so this PR disables the standard main-background check if FRED is running.  It then adds a new FRED-specific background check that covers all backgrounds.

Additionally, this PR fixes a bug in an error message in `stars_get_first_valid_background`.

Fixes #3116.
2021-01-10 01:48:43 -05:00
Goober5000 d3d48ee6fa Merge pull request #3093 from Baezon/script-target-bracket-fix
Fix a crash with scripted targeting brackets
2021-01-08 18:13:44 -05:00
Baezon ac7bdbf269 fix bug in scripted targeting brackets 2021-01-08 17:30:28 -05:00
Goober5000 ddf00588d6 Merge pull request #3076 from Goober5000/hash_stuff
preprocess alt names before mission start
2021-01-08 16:03:10 -05:00
Goober5000 365ba2029e remove temporary function 2021-01-08 09:53:11 -05:00
Goober5000 02cdb106ba convert number parsing to use atoi and strtof
One small detail that was overlooked in PR #3021... KeldorKatarn's old code used `strtod` while the new code used `stuff_float`.  This wouldn't be a problem except that a couple MVP models use annoyingly formatted floats like 8.9e-08.  So I decided to convert `stuff_float` to use `strtof` and do some more upgrades while I was at it.
2021-01-08 09:25:25 -05:00
m!m 85a2a8f11e Merge pull request #3092 from Goober5000/strtof_patch
interim patch for get_user_vec3d_value
2021-01-08 10:47:42 +01:00
Goober5000 e76fdea8b9 interim patch for get_user_vec3d_value
As described in #3079, the old parsing of fvec and uvec used strtod and some POFs rely on this format.  This is a quickfix that uses the new parsing method for only `get_user_vec3d_value`.
2021-01-07 18:08:27 -05:00
Goober5000 726ce953c7 Merge pull request #3089 from Goober5000/fix_submodel_debris
de-parent live debris
2021-01-07 15:24:49 -05:00
JohnAFernandez a545a4ec27 Merge pull request #3087 from Baezon/lock-restriction-safety
Safety for lock restriction handling
2021-01-07 15:01:31 -05:00
Fabian Woltermann fc0662a9c4 Merge pull request #3080 from JohnAFernandez/Vectorize-Tech-Lists
Vectorize tech lists
2021-01-07 15:16:09 +01:00
JohnAFernandez e5685ded86 Keep the lists from being cleared early by removing unneeded the loops. 2021-01-07 00:33:21 -05:00
JohnAFernandez 226cbf1204 The true fix, check the correct value 2021-01-07 00:32:52 -05:00
Goober5000 043466309a de-parent live debris
It appears that live debris is not supposed to have a parent submodel; see the retail NTF Boadicea.  This removes the parent from any live debris that might have it.

This should fix #3078.
2021-01-07 00:02:49 -05:00
Baezon 766624600d update name 2021-01-06 18:04:59 -05:00
Baezon dab9a41f45 remove redundant check 2021-01-06 17:45:32 -05:00
m!m 51d8ab13d8 Merge pull request #3088 from EatThePath/fix-empty-secondaries-locking
off-by-one fix in early exit update_aspect_lock_information()
2021-01-06 23:25:53 +01:00
Baezon b93d30e12b unused variable 2021-01-06 14:46:44 -05:00
David Gibson 945db25578 corrected off-by-one issue in the early exit condition of update_aspect_lock_information() 2021-01-06 13:46:05 -06:00
Baezon 67de007ecb lock restrictions safety 2021-01-06 14:28:27 -05:00
JohnAFernandez e9a9b3b978 Merge pull request #3085 from Baezon/docking-collision-bugfix
Safety for check_for_docking_collision
2021-01-06 14:03:00 -05:00
Baezon e10522a2c7 safety for check_for_docking_collision 2021-01-06 13:18:27 -05:00
JohnAFernandez 9f33b432fc Simply this check 2021-01-05 00:07:07 -05:00
Goober5000 bdccb25b6e Merge pull request #3083 from Baezon/comment-delta-ang
Improve comment on vm_vec_delta_ang
2021-01-04 23:06:27 -05:00
Goober5000 6a049cc7f1 Merge pull request #3082 from JohnAFernandez/Update-Submodel-Comments
Update Comments for #548
2021-01-04 22:18:04 -05:00
JohnAFernandez 7a0578a797 Ok CI, I'll use nullptr 2021-01-04 22:14:36 -05:00
m!m 9879ef4abd Merge pull request #2388 from h3xx/fix-ccache-usage
Use CMAKE_*_COMPILER_LAUNCHER to run ccache
2021-01-04 19:18:29 +01:00
Dan Church fec72db558 Use CMAKE_*_COMPILER_LAUNCHER to run ccache
This is the recommended way to set this up.

Using this technique allows the user to replace the launcher with any
number of combinations of solutions such as
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache:distcc

Supported since CMake 3.4. On previous versions of CMake, it will just
ignore this setting.
2021-01-04 11:46:34 -06:00
Baezon fc7e1f0e40 improve comment on delta_ang 2021-01-03 22:51:17 -05:00
JohnAFernandez ecf2dfb8f9 Update Comments for #548 2021-01-03 22:28:18 -05:00
JohnAFernandez b81825326c Signed Vs Unsigned
AKA C'Mon CI!
2021-01-03 21:54:31 -05:00
JohnAFernandez b8c2c975c0 Change to a pointer
So that we can release bitmaps and animations properly.
2021-01-03 21:36:50 -05:00
JohnAFernandez dc0272e664 Fixes Part 1 2021-01-03 20:56:30 -05:00
JohnAFernandez 3e329d64dd Check the correct value in the animation code 2021-01-03 15:15:51 -05:00
JohnAFernandez 882ac2b1a1 Possibly Fix Memory Corruption Issue
Remove Unused Var
2021-01-03 15:14:11 -05:00
Goober5000 39abec6dfb Merge pull request #3077 from Goober5000/fix_model_instance
fix model_update_instance to handle LODs
2021-01-02 15:03:55 -05:00
Goober5000 b3153df6be preprocess alt names before mission start
For compatibility purposes some mods want alt names to truncate at the hash symbol. But we can't actually do that at mission load,
since we have to save them again in FRED. So this commit processes the names just before the mission starts.

To further complicate things, some mods actually want the hash to be displayed. So this commit introduces the double-hash as an escape sequence for a single hash.
2021-01-02 14:31:59 -05:00
Goober5000 b0fbf93055 fix model_update_instance to handle LODs
Add back the copying of model instance information to submodels in other LODs.  This was inadvertently removed in commit 88c1d8a02a.
2021-01-02 14:26:59 -05:00
Goober5000 2d942989e6 Merge pull request #3075 from JohnAFernandez/Fixing-Small-Fred-Mission_Save-Bug
Keep fred from adding extra texture replacements to mission file
2021-01-02 02:47:35 -05:00
JohnAFernandez 47dd186796 Standardize my ! 2021-01-02 02:11:40 -05:00
Goober5000 1fcfa82184 Merge pull request #3072 from JohnAFernandez/Add-Starting-Amoo-to-Scripting-Functions
Make sure that scripting changes the starting ammo as well as the weapon
2021-01-02 02:09:27 -05:00
Goober5000 6fc3d3cafe Merge pull request #3074 from Goober5000/fix_arc_type
fix a couple of issues
2021-01-02 01:52:35 -05:00
JohnAFernandez c7ea110652 Remove whitespace change 2021-01-02 01:41:15 -05:00
JohnAFernandez 8a81b18200 Keep fred from adding extra texture replacements to mission file 2021-01-02 01:37:37 -05:00
Goober5000 4182ea7fae fix a couple of issues
Prevent model instances from being overridden when they conflict with the model.  Fixes #3062.

Also fixes another spot that might be a problem.
2021-01-02 01:08:54 -05:00
JohnAFernandez 04f668651b Make sure that scripting changes the starting ammo as well as the weapon 2021-01-01 22:22:56 -05:00
m!m 71576c7784 Merge pull request #3066 from asarium/fix/releaseDebugUpload
Fix release debug file name
2021-01-01 15:59:16 +01:00
asarium 619e19268b Fix debug file name 2021-01-01 15:20:19 +01:00
m!m b372fb3655 Merge pull request #3065 from asarium/fix/modTableTestVersion
Increase test engine version to fix 21.0 tests
2021-01-01 13:28:07 +01:00
asarium ae7ac6d87d Increase test engine version to fix 21.0 tests
I just tried building 21.0 which is a higher version than the one used
in the test data which broke this test.

This should be a high enough version to not break any time soon...
2021-01-01 13:02:02 +01:00
m!m e1a2fe0313 Merge pull request #3059 from JohnAFernandez/Fix-Missile-Capacity-Bug
Fix the support ship refilling ships to the wrong secondary capacity
2020-12-31 12:04:31 +01:00
JohnAFernandez 521430fb9a Fix the support ship refilling ships to the wrong secondary capacity 2020-12-30 23:37:49 -05:00
Goober5000 3108b2f117 Merge pull request #3058 from Goober5000/weaponspew_fixes
weaponspew fixes
2020-12-30 11:02:00 -05:00
JohnAFernandez a764b3463c Warn the User About a Probable Incoming crash (#3011)
If SDL completely fails to get its preference path, at least warn the user so that it doesn't crash straight to the desktop without creating a debug build.
2020-12-30 10:37:58 -05:00
Goober5000 cb4f6f5250 Merge pull request #3057 from Goober5000/minor_model_fixes
some bugfixes from the submodel rotation branch
2020-12-30 01:12:00 -05:00
Goober5000 9f8fe77956 weaponspew fixes
Add calculations for the `puncture` flag, and handle beam damage factors appropriately.

Fixes #3044.
2020-12-30 01:10:31 -05:00
Goober5000 cda9967d9c add vecmat function 2020-12-30 00:35:22 -05:00
Goober5000 7a09a3d0c4 some bugfixes from the submodel rotation branch
Some things that clang noticed, plus a small usability improvement to the parsing of vectors in submodel properties.
2020-12-30 00:31:58 -05:00
m!m 839d3517b3 Merge pull request #3040 from asarium/test/ciTestBuilds
Add GitHub actions test build support
2020-12-29 09:56:40 +01:00
asarium a6b90a3780 Add GitHub actions test build support 2020-12-28 21:43:48 +01:00
m!m 05a778e542 Merge pull request #3037 from asarium/ci/uploadDebug
Also upload debug symbols to GitHub release
2020-12-28 21:08:26 +01:00
JohnAFernandez 573db31ba5 Set target name in ai goals to avoid an assert (#3041) 2020-12-28 15:04:47 -05:00
m!m 2727880fae Merge pull request #3039 from asarium/fix/2928
Apply particle source hack to correct vector
2020-12-28 20:21:17 +01:00
asarium 92e5f2f35d Apply particle source hack to correct vector
In the particle effect code there is a small hack required for getting
some constant pointers in a vector. However, there is another mechanism
where sources are not added to the sources vector if the sources are
currently being iterated through. That is necessary to avoid
accidentally invalidating the iterators.

The issue here was that the vector resizing hack was not applied to the
correct vector when we were currently iterating. This fixes that.

This fixes #2928.
2020-12-28 17:58:20 +01:00
m!m f4c11a42ec Merge pull request #3038 from SelfGamer/fix_ctd_on_death_with_support
Fix CTD on death while support is trying to dock
2020-12-28 14:46:36 +01:00
Birk Magnussen 4bc3ac8bee More Assertions 2 2020-12-28 19:34:30 +09:00
Birk Magnussen 5b12b84c57 More Assertions 2020-12-28 19:32:05 +09:00
Birk Magnussen f6b8e8e0ff nulltpr 2020-12-28 19:18:58 +09:00
Birk Magnussen 66aed78dd4 Add quickfix 2020-12-28 19:16:38 +09:00
Fabian Woltermann a5de6f8570 Merge pull request #3019 from SelfGamer/exactlos_update
Changed require exact los to track from the exact firing point instead of center
2020-12-28 10:16:40 +01:00
asarium fc744c78c7 Also upload debug symbols to GitHub release 2020-12-28 10:03:21 +01:00
m!m bc6b341eea Merge pull request #3036 from Goober5000/vec3d_props_dox
add documentation to get_user_vec3d_value
2020-12-28 09:53:33 +01:00
Goober5000 55b902382c add documentation 2020-12-28 01:19:44 -05:00
Goober5000 3a5e49b0c3 Merge pull request #3021 from Goober5000/turret_refactor
some refactor and cleanup
2020-12-27 09:33:49 -05:00
Goober5000 aef21cbe1b Merge pull request #3025 from JohnAFernandez/fix-nullptrs-in-turret-packet
Prevent Fire_turret from using null values
2020-12-27 09:16:13 -05:00
Goober5000 a3a26c781c Merge pull request #3035 from asarium/fix/luaDeprecationVersion
Update deprecation version of drawMonochromeImage
2020-12-27 09:15:14 -05:00
m!m aa222c4206 Merge pull request #3029 from JohnAFernandez/bypass-multi-when-using-start_mission
Keep incompatible commandline options from running simultaneously
2020-12-27 11:58:46 +01:00
asarium 57f73ab8dc Update deprecation version of drawMonochromeImage
This was 20.1 since I erronously thought that the "current" nightly
version was lower than that. This updates the version to a release that
has not been built yet.
2020-12-27 11:53:10 +01:00
JohnAFernandez d41d397e33 Keep nullptrs from crashing the fire flak packet. 2020-12-27 01:36:10 -05:00
JohnAFernandez b8e9b3c0ec Prevent Fire_turret from using null values 2020-12-27 01:36:10 -05:00
JohnAFernandez f088e12cb3 Keep incompatible commandline options from running simultaneously 2020-12-27 01:03:36 -05:00
Goober5000 7990691e83 Merge pull request #3026 from MageKing17/bugfix/capital-plus-secondary-regression
Fix capital+ regression in AI code for secondary weapon selection.
2020-12-26 20:53:42 -05:00
MageKing17 ac86dbae2f Fix capital+ regression in AI code for secondary weapon selection.
When weapon info flags were changed to the flagset model in #851 (commit 127976cd74), two instances where `WIF2_CAPITAL_PLUS` was either actively desired or passively not prohibited were lost in the transition; this commit restores looking for `Weapon::Info_Flags::Capital_plus` when targeting a big ship, and no longer prohibits capital+ weapons from being selected if a bomber+ weapon is sought and smart secondary weapon selection is enabled.
2020-12-26 12:45:32 -08:00
JohnAFernandez 7ac832f84f Merge pull request #3022 from asarium/fix/betterRand
Make model point picking more flexible
2020-12-25 11:20:13 -05:00
asarium 522fa1ac6a Make model point picking more flexible
This works around the Windows only limitation where the standard random
function only returns up to 2^15 which limits how many vertices in the
model can be picked.

Since we already have a function that handles this properly and returns
values in the entire integer range, using that fixes that low limit.
2020-12-25 15:36:25 +01:00
Goober5000 21f6591be2 some refactor and cleanup
1) modify and prune some turret function definitions
2) clean up KeldorKatarn's submodel orientation parsing
2020-12-24 22:50:49 -05:00
Birk Magnussen d1e1d79bca make require exact los respected by primaries 2020-12-25 04:20:03 +09:00
Birk Magnussen f0313fc68a Fix bad assertion 2020-12-25 03:19:47 +09:00
JohnAFernandez de7d0c79d3 Merge pull request #2214 from notimaginative/multi_packet_fixes
Multi packet fixes
2020-12-24 12:16:29 -05:00
Birk Magnussen 32c63963ea Changed require exact los to track from the exact firing point instead of center 2020-12-25 00:49:09 +09:00
m!m 77adaa6d86 Merge pull request #3004 from asarium/scripting/monochromeUv
Add AA bitmap support for standard gr.drawImage
2020-12-24 16:14:44 +01:00
m!m 92d1328e0f Merge pull request #3010 from asarium/lua/cmdBriefColors
Add scripting API to access briefing color tags
2020-12-24 16:10:50 +01:00
Taylor Richards 5f7b7ef702 fix issues discovered during beam test
- fix incorrect assertions for fighter beams
 - fix subsystem handling for spawned/floating beams
2020-12-24 09:45:17 -05:00
Taylor Richards 80d68ccc27 address issues raised during code review 2020-12-24 09:45:17 -05:00
Taylor Richards fdf3778014 bump multi version to 53 2020-12-24 09:45:17 -05:00
Taylor Richards ff5cb3cdf8 update turret_fired_packet() and flak_fired_packet()
- send pitch and heading as floats
 - use proper weapon id rather than guessing (fixes #2877)
2020-12-24 09:45:07 -05:00
Taylor Richards 5d410416c9 fix issues with client_update_packet()
- use correct macro for player_id
 - support more subsystems
 - optimize size of secondary weapon info
 - handle future compatibility issues with secondary ammo
2020-12-24 09:42:05 -05:00
Taylor Richards 5395cabdb3 support larger number of subsystems in various packets
secondary_fired_packet()
 turret_fired_packet()
 player_order_packet()
 homing_weapon_info()
 flak_fired_packet()
2020-12-24 09:41:59 -05:00
Taylor Richards 3a58940d35 update multi_capaign_*() packets
- add additional safety checks
 - allow for USHRT_MAX ship and weapon types
 - allow for USHRT_MAX mission events
 - optimize storage of mission count/num (int -> ubyte)
 - break campaign mission names into nice sized packets
2020-12-24 09:38:23 -05:00
Taylor Richards da37e363ae fix comparison warnings in ADD/GET macros with debug builds 2020-12-24 09:38:23 -05:00
Taylor Richards 0e55c36877 update netgame_descript_packet()
(based on PR 2109 by Cyborg17)

 - support compaign descriptions (Mantis 1826)
 - allow sending multiple packets to get entire description
 - update description of selected game on join screen if needed
2020-12-24 09:38:23 -05:00
Taylor Richards 9b97821616 optimize sexp_packet()
- chnage op count data type to short
   (can't have more space than that anyway)
 - get rid of some loops in favor of plain memcpy()
 - fewer magic numbers
 - use SEXP_MAX_PACKET_SIZE to fix packet size discrepancy
2020-12-24 09:38:23 -05:00
Taylor Richards 42cdd06b7d add ADD/GET_DATA_BLOCK() macros
These macros will grab a known sized block of data without
any manipulation. Should only be used with data which is
serialized/deserialized in another part of the code.
2020-12-24 09:38:23 -05:00
Taylor Richards 088f4422db set HEADER_LENGTH to a fixed size
This should *never* be something that can be changed
at runtime
2020-12-24 09:38:23 -05:00
Taylor Richards f989cf2c3a update beam_fired_packet()
- add bfi_flags
 - add proper bank/point data for fighters
 - allow for more than 255 subsystems
 - add data for targeted subsystem
 - add support for TARGETING_COORDS flag
 - add support for FLOATING_BEAM flag
 - add fire method
 - add initial packet support for type F beams
2020-12-24 09:38:23 -05:00
Taylor Richards dc1128d327 fix issues with wss_slots_data_packet()
- don't depend on hard-coded limits
 - store weapon and counts together
 - fix incorrect ship_class assignment
2020-12-24 09:38:23 -05:00
Taylor Richards 88e8d61816 optimize size of wss_update_packet() 2020-12-24 09:38:23 -05:00
Taylor Richards 97c4bcba61 support SHRT_MAX ship types in pslot_update_packet 2020-12-24 09:38:23 -05:00
Taylor Richards c4eecf9a0d fix multiple issues with wss data packet
- use standard ADD/GET macros
 - better detection of size issues
 - support SHRT_MAX ship types
 - support SHRT_MAX weapon types
 - use MAX_WSS_SLOTS & MAX_SHIP_WEAPONS safely
 - support sound indexes higher than 254
2020-12-24 09:38:23 -05:00
Taylor Richards 3de39b6274 tweak stats block packet to handle certain limits better 2020-12-24 09:38:23 -05:00
Taylor Richards a48b5e8203 scale MAX_SHIPS_PER_PACKET with packet size 2020-12-24 09:38:23 -05:00
Taylor Richards e91234cac0 remove network cutoff when more than retail ship limit
It's fixed now, so no reason to keep this
2020-12-24 09:38:23 -05:00
Taylor Richards 43a1952142 allow SHRT_MAX ship types in wss_slots_data_packet() 2020-12-24 09:38:23 -05:00
Taylor Richards af45954bab fix issues with post_sync_data_packet()
- allow for SHRT_MAX ship types
 - support total number of primary weapon banks
 - support total number of secondary weapon banks
2020-12-24 09:38:23 -05:00
Taylor Richards 796609b851 optimize size of player_settings_packet() 2020-12-24 09:38:23 -05:00
Taylor Richards 495efde52f optimize size of netplayer_slot_packet() 2020-12-24 09:38:23 -05:00
Taylor Richards 67d17e2c28 optimize size of ship_create_packet() 2020-12-24 09:38:23 -05:00
Taylor Richards 5fb1bbbb43 fix issues with multi options packets
- don't send structs
 - big endian compatible
2020-12-24 09:38:23 -05:00
Taylor Richards 8e40c14a49 optimize size of several player packets
player num/index should always be in 0-11 range
so only 1 byte is required
2020-12-24 09:38:23 -05:00
Taylor Richards 69fd25b376 optimize size of game_chat_packet()
server_msg is 0-2, which doesn't need 4 bytes
2020-12-24 09:38:22 -05:00
Taylor Richards 752f985433 optimize size of host_captain_change_packet()
don't need 4 bytes for a true/false
2020-12-24 09:38:22 -05:00
Taylor Richards 9e7a6eaee2 small optimization of process_game_query() 2020-12-24 09:38:22 -05:00
Taylor Richards 0a3465b4aa avoid breaking ship_status_packet() with new controls 2020-12-24 09:38:22 -05:00
Taylor Richards 454ddce232 fix join_request data
- tightly packed
 - better cross-platform compatibility
2020-12-24 09:38:22 -05:00
Taylor Richards c943600ee3 adjust *_STRING() macros to save space
- ADD/GET_STRING() will use 1-byte lengths (up to 255 chars)
 - ADD/GET_STRING_16() will use 2-byte lengths (up to 65,535 chars)
 - ADD/GET_STRING_32() added for compatiblity (game_active packet only!)
2020-12-24 09:38:22 -05:00
asarium c2f4d5f2b6 Use correct generic anim function to get hi-res support 2020-12-24 12:54:09 +01:00
asarium 4af292af5a Add scripting API to access briefing color tags 2020-12-24 12:54:09 +01:00
Goober5000 a3135497f1 Merge pull request #3015 from Goober5000/gun_rotation_fix2
move gun_submodel_rotation from model to instance
2020-12-23 18:53:17 -05:00
SelfGamer a47cfb7e7c Expose disposing FBO's to scripting (#3003)
* Expose disposing FBO's (with the option to keep the Bitmap Alive) to scripting

* Modernize nullptr

* Moved RenderTarget clearing to own public API

* Fixed Obsolete Comment

* Fix bad deletion of FBOs

* Resolve Memory Leak

* Change FBO cleanup to not reuse old ID's

* FIx oversight

* FIx oversight 2
2020-12-23 21:54:03 +01:00
m!m 4f4e02beb5 Merge pull request #3018 from asarium/feature/captureSdlLogs
Capture SDL logs to our standard logging output
2020-12-23 21:53:22 +01:00
m!m 55e502417a Merge pull request #3017 from asarium/ci/fixClangTidyDiff
Fix clang tidy commit range
2020-12-23 21:53:06 +01:00
asarium 0f220d2ecf Capture SDL logs to our standard logging output
This can be useful when SDL produces log output that helps with
debugging an issue.
2020-12-23 14:03:24 +01:00
asarium 2f24a131c7 Fix shell script 2020-12-23 12:07:43 +01:00
asarium c9dc17cb79 Fix workflow names 2020-12-23 11:43:01 +01:00
asarium fa7994f691 Fix clang tidy commit range
By only looking at the HEADs of the respective branches, we included
irrelevant changes in the diff passed to clang-tidy-diff so it was
possible to generate irrelevant warnings in a PR.
2020-12-23 11:39:30 +01:00
Goober5000 4b200586e6 Merge pull request #3014 from Goober5000/fix_3013
properly restore turret angles after calculating matrix
2020-12-23 02:34:57 -05:00
Goober5000 8ef92c944d move gun_submodel_rotation from model to instance
Since instance-specific fields have been moved to polymodel_instance and submodel_instance, the gun_submodel_rotation field should also be moved.  This is also reworked a bit to keeping track of the rotation via the normal submodel instance angles.

This removes an unnecessary look_at field as well.
2020-12-23 00:45:31 -05:00
Goober5000 78c957c6bb properly restore turret angles after calculating matrix
Since angles are no longer written in three redundant places, the temporary hijacking of the turret angles in `model_make_turret_matrix` was overwriting the turret's proper position.  So this PR just saves the angles and restores them when the calculation is done.
2020-12-22 22:14:12 -05:00
Goober5000 66280ee4d1 Merge pull request #3012 from Goober5000/submodel_null_check
additional null checks
2020-12-22 21:32:15 -05:00
Goober5000 b7b0d3a257 Merge pull request #3000 from Goober5000/model_instance_followup
another model to model_instance refactor
2020-12-22 21:31:14 -05:00
Goober5000 8cf900b6ad additional null checks
Some subsystem code was being run for submodels when the subsystem didn't necessarily have a submodel attached.
2020-12-22 15:28:44 -05:00
Goober5000 3ef527a04d Merge pull request #2988 from z64555/fix/issue_2966
In windows, attach to the console we're being evoked from and reopen STDIO streams.
2020-12-22 14:24:58 -05:00
Goober5000 6f8a297cf1 Merge pull request #3008 from Goober5000/submodel_bugfix
additional null checks
2020-12-22 14:24:22 -05:00
m!m 04135df1bf Merge pull request #3009 from asarium/ci/fixFtpWildcard
Fix nightly build FTP wildcard
2020-12-22 12:36:19 +01:00
Goober5000 0c5b04c427 additional null checks
Found a null pointer CTD in modelanim that slipped through initial testing.  Also added some defense-in-depth null checks to scripting.
2020-12-22 04:22:10 -05:00
asarium ec79fdea68 Fix nightly build FTP wildcard 2020-12-22 10:09:52 +01:00
JohnAFernandez 508b420f07 Set correct time stamp for already-locked indicators. (#3002) 2020-12-21 09:07:05 -05:00
asarium f25d98cebd Add AA bitmap support for standard gr.drawImage
Since that function already has full support for UV scaling it makes
sense to unify the behavior in one function instead of having a separate
monochrome function that does weird things.

Also deprecates that function since all its use cases are now covered by
drawImage.
2020-12-21 12:48:58 +01:00
m!m 4b7013ff86 Merge pull request #3001 from asarium/ci/githubReleaseBuilds
Add GitHub workflow for building releases
2020-12-21 10:20:42 +01:00
z64555 ea97272613 In windows, attach to the console we're being evoked from and reopen STDIO streams. 2020-12-20 18:19:12 -06:00
asarium 10d7417815 Add GitHub workflow for building releases
This uses GitHub actions for building Linux and Windows builds for
release tags.

Appveyor is now no longer used for building distribution packages and is
also not used for anything relevant anymore. If this works properly we
can disable that PR check to get better PR scalability.
2020-12-20 22:33:14 +01:00
m!m ded3131587 Merge pull request #2999 from asarium/build/extractBuildScripts
Extract build scripts into separate files
2020-12-20 22:30:21 +01:00
Goober5000 fe4661ec9f Merge pull request #2997 from SelfGamer/missionAwarenessAPI
Add Scripting API isNebula and isSubspace
2020-12-20 14:53:15 -05:00
Goober5000 c18b1b63fd another model to model_instance refactor
Remove arc information from bsp_info and move it to submodel_instance.  Add a model instance to each debris chunk to keep track of it.
2020-12-20 14:51:05 -05:00
Goober5000 bcf4b07a28 Merge pull request #2992 from Goober5000/model_instance_consolidation
consolidate model instance code
2020-12-20 13:23:14 -05:00
asarium 9fb47d22b5 Extract build scripts into separate files
This makes the workflows easier to manage, makes those build steps
reusable, and allows for easier migration to other CI services should
that be required at some point.
2020-12-20 18:26:05 +01:00
Fabian Woltermann c7c5592884 Merge pull request #2998 from The-E/fix/pof_name_in_lab
Fix oversight in the new lab HUD
2020-12-20 16:59:53 +01:00
Fabian Woltermann c2a76c7354 Print the model filename in the bottom right when a ship or modelled weapon is being displayed in the lab 2020-12-20 13:39:29 +01:00
Birk Magnussen dfe6858b21 Fix Type 2020-12-20 21:14:30 +09:00
Birk Magnussen 64b35534de Modernize functions 2020-12-20 21:03:05 +09:00
Birk Magnussen ce614d330d Modernize nullptr 2020-12-20 20:46:22 +09:00
Birk Magnussen 20bc769daa Add Scripting API isNebula and isSubspace 2020-12-20 20:17:34 +09:00
Goober5000 efe2d8476a 1) it's no longer necessary to call model_clear_instance before collision detection
2) call appropriate functions in collision detection because models might have instances
2020-12-18 13:46:49 -05:00
m!m 486d66ad28 Merge pull request #2993 from asarium/build/fixUploadGlob
Fix upload glob
2020-12-18 18:59:17 +01:00
asarium f10c40f873 Fix upload glob
The glob pattern was not correct. This should fix the nightly build
again.
2020-12-18 16:53:23 +01:00
Goober5000 88c1d8a02a consolidate model instance code 2020-12-18 01:32:43 -05:00
Goober5000 d80c43d6d9 Merge pull request #2989 from Goober5000/lab_destroy_subsystem
subobjects destroyed in the lab should stop spinning
2020-12-18 01:07:18 -05:00
Goober5000 d6e95360e0 subobject destroyed in the lab should stop spinning
The lab code didn't set subsystem strength for destroyed submodels.  This fixes that.
2020-12-17 20:10:38 -05:00
m!m 636aa35d7c Merge pull request #2987 from asarium/build/windowsBuilds
Build Windows nightlies with GitHub actions
2020-12-17 21:54:13 +01:00
asarium cdeac0c762 Build Windows nightlies with GitHub actions
This is much faster since all build variations can be compiled at the
same time. Only applies to nightly builds for now.
2020-12-17 18:28:10 +01:00
m!m e7a5492061 Merge pull request #2977 from asarium/build/datacoderUpload
Enable upload to datacorder for Linux builds
2020-12-17 09:30:03 +01:00
Baezon c65ae50b81 version 1 of generic debris enhancements 2020-12-17 01:58:00 -05:00
Goober5000 4491b842c9 Merge pull request #2983 from Goober5000/header_refactoring
hoist model_get and model_get_instance out of a bunch of functions
2020-12-16 15:33:29 -05:00
m!m f2a8295399 Merge pull request #2982 from asarium/build/clangTidyGithub
Use special GitHub action for clang-tidy
2020-12-16 19:11:04 +01:00
Goober5000 7c92dd9f7c hoist model_get and model_get_instance out of a bunch of functions 2020-12-16 11:55:31 -05:00
Goober5000 5fe8f00cb3 Merge pull request #2985 from Goober5000/turret_fix
fix a bit of improper referencing in rotateTurret
2020-12-16 11:43:19 -05:00
Goober5000 41851bbd1e fix a bit of improper referencing in rotateTurret
The object `instance` field is the index into Ships, not Objects.  In any case, position and orientation can be referenced directly.
2020-12-16 02:23:18 -05:00
Goober5000 ada08157a8 Merge pull request #2984 from Goober5000/fix_lab_crash
fix a CTD with the no-pain-flash flag
2020-12-15 22:03:07 -05:00
Goober5000 c457f24d67 fix two more crashes 2020-12-15 19:46:12 -05:00
Goober5000 4ddc2565d5 fix a CTD with the no-pain-flash flag
There were null checks for `Player_obj`, but whoever added the `No_pain_flash` flag bypassed them by dereferencing `Player_obj` in the top-level if() block.  This caused a crash when self-destructing ships in the F3 lab.

This PR moves the `Player_obj` check to the top-level block (which is also an implicit null check because `ship_objp` is not null by this point) which fixes the crash and also is more efficient.
2020-12-15 19:16:42 -05:00
asarium 8319940f92 Use special GitHub action for clang-tidy
This action should bring the clang-tidy issues in a better format by
displaying them inline in the diff.
2020-12-15 20:08:16 +01:00
asarium 92cd894de2 Enable upload to datacorder for Linux builds
Also run distribution builds in container. This uses the same container
for building PRs and distribution packages to ensure consistency
between them.

Also tries to fix an issue with a missing environment variable for the
tests.
2020-12-13 22:14:36 +01:00
m!m 3d792dcb1d Merge pull request #2978 from asarium/build/ghActions/clangTidy
Add clang-tidy checking to GitHub actions
2020-12-13 22:12:04 +01:00
m!m 53b73ca048 Merge pull request #2979 from Baezon/multilock-fix-los
Fix line-of-sight checking for multilock
2020-12-13 14:00:03 +01:00
Baezon 602dd45c10 fix los for multilock 2020-12-13 00:03:43 -05:00
asarium 451eab5b38 Add clang-tidy checking to GitHub actions
This just introduces the previously Travis integration and moves it to
GitHub actions.

This also found various issues around our libc++ support so I fixed that
as well.
2020-12-12 22:11:35 +01:00
z64555 89a2c4dbcb Missed another break. 2020-12-12 14:47:15 -06:00
z64555 2cd557e483 Expletives and default breaks. 2020-12-12 14:20:07 -06:00
z64555 e5df64ab75 Address uninitialized variable issue. 2020-12-12 12:20:54 -06:00
z64555 52b0b19d11 Update qtFred sexp_tree::get_listing_opf_keypress 2020-12-12 11:39:47 -06:00
z64555 36a2355e86 Address exceedingly frivolous signed/unsigned mismatch errors. 2020-12-11 17:44:45 -06:00
z64555 351e8e0c44 Address short/int size mismatches. 2020-12-11 15:59:31 -06:00
z64555 91e0d8f578 QoL: Highlight/select the found key, be it primary or secondary, should the search mode find it. 2020-12-11 12:41:46 -06:00
z64555 f8f26e3b23 Fix bug where search mode wouldn't detect joy buttons correclty.
* Fix bug where joy hats were ignored.
2020-12-11 12:41:46 -06:00
z64555 873a3c3442 Fix bug with displaying joy button text
* Fix a number of warnings
2020-12-11 12:41:46 -06:00
z64555 1318b814d3 Fix out-of-bounds error due to axis controls index. 2020-12-11 12:41:45 -06:00
z64555 4c8f5f789c Grey out empty/unbound items
* Joy axis bindings now use the same color logic as the keys and buttons
2020-12-11 12:41:45 -06:00
z64555 b9b922b235 Fix bug where int conflict wasn't incremented for unselected items.
* Fix color highlighting of mouse-over lines
* Fix color highlighting of selected bindings
* Fix bug when trying to select an item while the selected line is an axis control
* Allow user to select an empty item
* Expand hitbox of items so players aren't required to click exactly on the text to select it.
2020-12-11 12:41:45 -06:00
z64555 716b4a3205 Moves the listbox draw function out of do_frame()
* Adjusts listbox positioning and widths of the binding columns for better display.
* Adds DCF tools to adjust the text positioning in the listbox
2020-12-11 12:41:44 -06:00
z64555 3c592b799f Fix bug where the "disallowed key" popup would spam you, blocking you from doing a meaningful bind. 2020-12-11 12:41:44 -06:00
z64555 c8c8a8d896 Fix bug where unbound items were flagged as conflicted.
* Fix bug where Cc_lines was accessed after being cleared. (Incorrectly assumed control_config_cancel_exit() was an exit point)
2020-12-11 12:41:43 -06:00
z64555 12b19a32bd Fix bug where unbound joy buttons would persist as a valid binding. 2020-12-11 12:41:43 -06:00
z64555 40e114351c Miscellaneous fixes to allow building.
* declare CCB before CC_bind.
* update various functions to use new binding aggregate classes.
2020-12-11 12:41:43 -06:00
z64555 704c600ef0 update control_config_clear() 2020-12-11 12:41:42 -06:00
z64555 5dde26fc33 Update check_control_used() to use primary and secondary. 2020-12-11 12:41:42 -06:00
z64555 cb5f80b0d5 Complete refactor of control_config_do_frame()
* Add textify method to CC_bind
* Replace string printing of key and joy bindings with primary and secondary bindings.
2020-12-11 12:41:42 -06:00
z64555 32636968bd Refactor browse mode in control_config_do_frame()
* Allow joy button presses to dismiss help overlay while in browse mode
* Refactor selected item cycling
2020-12-11 12:41:41 -06:00
z64555 e546a75c6b Fix possible bug where joy btn was ignored in bind mode
* Refactor search mode in control_config_do_frame()
* Dismiss help overlay in search mode when joy button is pressed
* Fix possible bug where nav buttons were not reset in search mode
2020-12-11 12:41:41 -06:00
z64555 9b0aab3f82 replace CCI::joy_id and ::key_id with ::primary and ::secondary (through inheritance of CCB)
* Add convenience methods to CCB
* Convert CC_bind into a class and define convenience methods
* Set underlying type of enum CID to short
* controlconfigdefaults.tbl: Should the CCI be disabled by an override, clear its binding.
* Control config menu: Should the help overlay be active during bind mode, dismiss it, don't bind anything, and stay in bind mode (fixes inconstant behavior)
* Refactor bind mode handling in control_config_do_frame()
2020-12-11 12:41:40 -06:00
z64555 7f2baec387 Remove Control_config::key_default and ::joy_default, redirect calls to the default presets 2020-12-11 12:41:40 -06:00
z64555 392148f84b Fix crash in unit tests due to uninitialized Control_config vector. 2020-12-11 12:33:45 -06:00
z64555 577ae95026 Use ints instead of size_t because CI said so. 2020-12-11 07:40:42 -06:00
z64555 968d76431f Missing an amp. 2020-12-11 07:40:42 -06:00
z64555 c2408839d1 Fix out of bounds error due to dynamic containers cleared at wrong spot. 2020-12-11 07:40:41 -06:00
z64555 a03af2e4a9 Re-enables the undo feature in the controls config menu. 2020-12-11 07:40:41 -06:00
z64555 aec7589b94 Tweak Undo_item::save to correctly save a reference as a pointer
* Remove two uncessary Assets.  operator new should throw an exception should it fail.
* Move template functions into .h.  This resolves instancing problems when trying to define them in a .cpp
* Add Undo_system::empty() and ::empty_redo() for checking if an ::undo() or ::redo() is possible.
2020-12-11 07:40:41 -06:00
z64555 e1974d1b57 Fix potential issue where Undo_stacks delete tracked items when going out of scope, even after the items were passed onto an Undo_system 2020-12-11 07:40:40 -06:00
z64555 bc7809de43 Undo_system::save_stack() now ignores empty stacks passed to it. No need to check for stack size before saving.
* Implement Undo_stack::size()
* Spellcheck in undosys.h
2020-12-11 07:40:40 -06:00
z64555 f23a72e228 Minor changes 2020-12-11 07:40:40 -06:00
z64555 45a45a4eff Remove licensing. 2020-12-11 07:40:39 -06:00
z64555 7e9ce1c9f7 Initial draft of the instruction documentation
Fix two typos

Adds Undo_system::clear()

Whoops! Can't just simply clear the stacks,gotta clean stuff off the heap first.
2020-12-11 07:40:39 -06:00
z64555 dce37d529c Adds ability to save a stack of undo operations as a single undo-op within the system 2020-12-11 07:40:39 -06:00
z64555 f528b3caa5 Changes the system so that the undo() and redo() functions return references to the changed item and its container (if it was specified at launch). This should allow client code to quickly find and access it on its end by comparing pointer values.
Since the pair is returned instead of the size of the undo/redo stacks, stack size information has been moved to their own getter functions.
2020-12-11 07:40:38 -06:00
z64555 492320f8d3 z64555's Undo system! This is a generic undo system, so you can save any single item type (not C arrays) and do undo/redo stuff on them. 2020-12-11 07:40:38 -06:00
z64555 636b4b12e4 Vectorize control_config::Conflicts 2020-12-11 07:40:14 -06:00
z64555 93c96b8943 Re-enable display of current selected preset. 2020-12-11 07:40:14 -06:00
z64555 d1f94c7b92 Fix overwrite check.
Add check for cfile open correctly.
2020-12-11 07:40:13 -06:00
z64555 74ffcb2db8 Print "NONE" instead of "-1" For unbound keys. 2020-12-11 07:40:13 -06:00
z64555 c7112fd897 Adds function to write controlconfigdefaults.tbl using the default preset at time of call.
* Adds DC function 'write_ccd' to write the .tbl
* Adds DC function 'load_ccd' to reload the .tbl
2020-12-11 07:40:13 -06:00
z64555 1bb9ed8832 Remove unused variable for catch clause. 2020-12-11 07:40:13 -06:00
z64555 23f85da586 Move typedef after the declaration of the struct it uses. 2020-12-11 07:40:12 -06:00
z64555 f163f56c10 Cleanup controlsconfig.h and refactor some loops. 2020-12-11 07:40:12 -06:00
z64555 9c03e8c069 Remove dead comment. 2020-12-11 07:40:12 -06:00
z64555 92a76c05ee Adds ability for mod devs to change the naming of a control as it shows up in the config menu.
* Presets start from a clean slate, while Overrides inherite from hardcode defaults
2020-12-11 07:40:11 -06:00
z64555 730ab835a8 Add #ControlConfigPreset section to controlconfigdefault.tbl and allow multiple sections in the .tbl
* This is a section that only configures the bindings for a preset.  Allowing mod devs to add presets instead of just the overrides
* Added ability to resume parsing should a Binding not be found
2020-12-11 07:40:11 -06:00
z64555 ef89a4aa38 Refactor and cleanup control_config_common_load_overrides.
* Mod devs now have the option to override hardcoded defaults
2020-12-11 07:40:11 -06:00
z64555 f9474cf773 Refactor defaults.
* Hardcoded default bindings are now a preset
* rename controls_config_init_bindings() to control_config_common_init_bindings() for consistancy
2020-12-11 07:40:10 -06:00
z64555 96382b47e2 Initial work on presets and default keybinds. Defaults will be moved into a preset instead of lingering in the bindings vector, this may cause issues with training messages that reference controls by default keybinds. 2020-12-11 07:40:10 -06:00
z64555 99dfdf07a2 Refactor control_config_list_prepare()
Default Disable Non-retail controls
Expand CC_lines buffer to include NUM_JOY_AXIS_ACTIONS
2020-12-11 07:39:30 -06:00
z64555 62fa76d65e Fix wrong reference to array size.
Init Cc_lines, which is now dynamic
De-init Cc_lines and Control_config_backup when closing the menu.
2020-12-11 07:39:30 -06:00
z64555 1a482cab4a Remove Joy_table declaration for later PR.. 2020-12-11 07:39:30 -06:00
z64555 ec61af7e1c Revert obliteration of magic number. 2020-12-11 07:39:29 -06:00
z64555 d8d4e9ed2c Disable Presets and Undo capabilities. Only reset_all was spared.
* Revert Joy_axis_action_index changes.  Feature to be added later
* Strip out most of the preset and undo capability.  Only the backup ability survived.
2020-12-11 07:39:29 -06:00
z64555 38df849e6e Change Control_config array to an SCP_vector
* Hardcoded bindings are done at run-time instead of assignment
* Created a map that should retain backward compatibility with controlconfigdefaults.tbl and playerfiles, since a reorganization of the controls in the code is planned and would break compatibility.
2020-12-11 07:39:28 -06:00
Baezon d06eedf13c testing 2020-12-10 18:49:05 -05:00
Baezon a3d3be11fb initial testing version 2020-12-10 18:41:36 -05:00
Goober5000 ca7dda09b0 Merge pull request #2971 from Goober5000/model_preliminary_edits
Model preliminary edits
2020-12-10 15:06:48 -05:00
m!m aec33b2bd8 Merge pull request #2976 from asarium/build/linuxContainer
Use container for Linux building
2020-12-10 12:21:56 +01:00
m!m 36900f056f Merge pull request #2975 from asarium/build/githubRelease
Build Linux nightlies with GitHub actions
2020-12-09 20:19:06 +01:00
asarium c644ccba98 Use container for Linux building
This will make our builds independent of the underlying system and allow
for more reproducible builds since everything uses the same compilers
and environments.
2020-12-09 20:10:22 +01:00
asarium 22d8184ad2 Build Linux nightlies with GitHub actions
This creates a new workflow which will build linux binaries for
FastDebug and Release, combine them in a second step, and then upload
them.
2020-12-09 18:19:43 +01:00
Taylor Richards c5356c6af7 Merge pull request #2895 from notimaginative/mdns
Replace multicast code with mDNS/DNS-SD
2020-12-08 20:32:28 -05:00
JohnAFernandez f9e0ff5db6 Make sure lock indicators are done even if hud is disabled (#2970)
Someone already did the work.  Just making sure this function always runs even if the hud is diabled. (it just makes sense to)
2020-12-08 20:29:16 -05:00
Goober5000 b40833d76e CI fixes 2020-12-08 19:54:31 -05:00
Goober5000 b803b9f15c consolidate functions 2020-12-08 19:54:31 -05:00
Goober5000 b90fc2b3ad numeric to boolean 2020-12-08 19:54:31 -05:00
Goober5000 f0799d245e tweaks 2020-12-08 19:54:24 -05:00
Goober5000 f54ac8fc22 Merge pull request #2972 from SelfGamer/master
When Fullscreen, dialogs have no parent now. Should fix #2949
2020-12-08 16:36:21 -05:00
JohnAFernandez c98dd53c76 Fix fred control crash (#2969)
* Keep ships that we are centered on from moving

This prevents NAN from appearing from obscure vector math somewhere in the depths of fred.

* Also fix movement of centered objects in qtFRED
2020-12-08 16:26:29 -05:00
Birk Magnussen 6a68300fcc Moved Dialog Parent Window detection to function + small explanation 2020-12-09 04:13:36 +09:00
Birk Magnussen 21eefe5133 When Fullscreen, dialogs have no parent now. Should fix #2949 2020-12-09 03:34:01 +09:00
Goober5000 3fdc5a3784 cur_turn_rate -> current_turn_rate 2020-12-08 12:33:29 -05:00
JohnAFernandez 20ffa59a31 Merge pull request #2965 from Baezon/beam-init-width-fix
Fix an assert with 0 initial beam width
2020-12-08 00:59:58 -05:00
Baezon be76cd727a implement turret-forced-target 2020-12-08 00:07:23 -05:00
Goober5000 9b2f924109 Merge pull request #2967 from z64555/fix/issue_2960
Save fade-out color, even if its black.
2020-12-07 22:18:51 -05:00
z64555 761f50989e Partially revert refactoring.
*  Can't simply use the previous fade_out color as the default, because of an edge-case with legacy usage.  The refactor would disallow setting the fadout to black.
2020-12-07 17:07:17 -06:00
Goober5000 fa0043f93b Merge pull request #2962 from SelfGamer/master
Add flag for AI to only fire Turrets / Secondaries when having clear Line of Sight
2020-12-07 17:47:32 -05:00
z64555 464c867bb5 Save fade-out color, even if its black.
Refactor sexp_fade, and make the Fade_out color init to black on mission load, instead of init on game start.
2020-12-07 16:33:29 -06:00
Goober5000 8c27d60f0a Merge pull request #2957 from SelfGamer/fireball-scripting
Adds Fireball as a new Object Subclass to scripting
2020-12-07 16:43:41 -05:00
Baezon 663a070f06 no 0 initial width 2020-12-07 02:21:59 -05:00
Birk Magnussen 1e5652ea07 Adapt change requests by Goober for Fireballclass 2020-12-07 07:04:09 +09:00
Goober5000 a6f5f4c09c Merge pull request #2959 from Goober5000/some_turret_fixes
some fixes to aiturret code
2020-12-06 08:57:42 -05:00
Birk Magnussen 08fee6f807 Added more lua erros for bad warp effects 2020-12-06 20:48:49 +09:00
Birk Magnussen 16c4097992 Added error when using too short duration for warp effect 2020-12-06 20:42:19 +09:00
Birk Magnussen ccb6e52475 Simplify Early Out calculation for LoS calculation 2020-12-06 17:34:22 +09:00
Goober5000 bfb7631ad5 Merge pull request #2955 from PhantomHoover/feature/default-fit
Turn framerate-independent turning on by default
2020-12-05 22:44:18 -05:00
Goober5000 0dd12473a4 address feedback 2020-12-05 22:40:51 -05:00
Birk Magnussen 18d17b18e0 Added earlier outs for los detection 2020-12-06 11:08:02 +09:00
Birk Magnussen f10fd36706 Modernized function, iterate over used objects instead of all 2020-12-06 06:47:44 +09:00
Birk Magnussen d4e9958f0f Tidy Code. Add AI Flag for firing requires exact los 2020-12-06 05:48:17 +09:00
Birk Magnussen d72ea2c213 Add require exact los weapon flag 2020-12-06 04:05:40 +09:00
Goober5000 ed7eddc873 comment 2020-12-05 13:54:43 -05:00
Goober5000 c0e5d810be fix flak not jittering if it had the fire-down-normals flag 2020-12-05 13:43:41 -05:00
Birk Magnussen 042cd0682d Fixed Warning due to unused variable 2020-12-05 08:48:45 +09:00
Birk Magnussen 2fa8d1e23b Fixed Error in createWarpeffect, added createExplosion 2020-12-05 08:32:04 +09:00
Birk Magnussen 67ebbddb09 Added Fireball lua API + added createWarpeffect 2020-12-05 07:23:14 +09:00
Goober5000 e0bbdf5d17 Merge pull request #2954 from SelfGamer/master
Modified Ship-Ship Collision Overrides to fit other Ship-X collision Overrides
2020-12-04 15:28:08 -05:00
Phantom Hoover 83df3a003c Turn framerate-independent turning on by default 2020-12-04 17:38:09 +00:00
Goober5000 62a66a0e20 patch player sound issue; adjust code comment and variable scope 2020-12-03 21:19:57 -05:00
Goober5000 0ad267a6dd remove superfluous function 2020-12-03 21:19:57 -05:00
Goober5000 7eb18dddca clean up the second half, and remove an unused field 2020-12-03 21:19:53 -05:00
Goober5000 54343a0eee clean up the top half of ai_fire_from_turret 2020-12-03 21:18:16 -05:00
Birk Magnussen effe18c629 Added Comments to indicate moved code block for ship-ship collision override change 2020-12-04 10:40:08 +09:00
Goober5000 ec06843ac5 Merge pull request #2950 from Baezon/fire-down-normal-fix
Allow normal weapons to use 'fire down normals'
2020-12-03 19:30:21 -05:00
Birk Magnussen 90b4079746 Remove now unused parameter from ship_ship_check_collision due to warning 2020-12-04 08:07:45 +09:00
Birk Magnussen 3268e1d49b Modified Ship-Ship Collision Overrides to fit other Ship-X collision Overrides 2020-12-04 07:36:01 +09:00
Baezon e8fb55fafa shoot_vector -> pointer 2020-12-03 12:27:35 -05:00
Baezon 2d516ef3ac allow normal weapons to use 'fire down normals' 2020-12-02 20:18:24 -05:00
m!m 37ea2bdaf4 Merge pull request #2946 from SelfGamer/master
Scripting Bugfix: previous HUD set/get gauge color referred to config instead of ingame gauge
2020-12-02 18:04:53 +01:00
Goober5000 5f87f1da47 Merge pull request #2948 from MageKing17/bugfix/turret-change-weapon-4th-bank-fix
Fix turret-change-weapon comparing sec_slot to max primary banks.
2020-12-02 00:24:54 -05:00
Goober5000 8252d39bcf Merge pull request #2947 from Goober5000/short_circuiting_update
don't flush the tree when evaluating the *-argument conditionals
2020-12-02 00:24:36 -05:00
MageKing17 edcc3b7d59 Fix turret-change-weapon comparing sec_slot to max primary banks.
We should compare `sec_slot` to `MAX_SHIP_SECONDARY_BANKS`, not `MAX_SHIP_PRIMARY_BANKS`.
2020-12-01 18:36:02 -08:00
Goober5000 958237f95c don't flush the tree when evaluating the *-argument conditionals
This is a follow-up to PR #2942.  Given that the short-circuiting is now explicitly skipped for node trees containing the special argument, it should no longer be necessary to flush the conditional branch of the sexp tree.  (The .cache field is already skipped for special-arg nodes.)

The sexp tree is still explicitly flushed for `every-time` and `every-time-argument`.
2020-12-01 16:31:11 -05:00
Goober5000 bd3b0fc893 Merge pull request #2938 from MageKing17/feature/first-of-sexp
Add "first-of" SEXP that behaves like "any-of" with a cap.
2020-12-01 16:22:33 -05:00
Goober5000 9261b9b5d2 Merge pull request #2942 from PhantomHoover/fix/unsound-short-circuit
Don't short circuit eval_sexp on nodes which contain the special argument.
2020-12-01 16:20:41 -05:00
Birk Magnussen 4def488a11 Fixed new HUD Scripting API Variable for Gauge Count 2020-12-02 05:35:00 +09:00
Birk Magnussen 47af4b5652 Fixed Warning in new HUD API 2020-12-02 05:30:39 +09:00
Birk Magnussen f2d013ae0d Updated HUD Scripting API Docs Again 2020-12-02 05:03:27 +09:00
Birk Magnussen a30a289f68 Updated HUD Scripting API Docs 2020-12-02 03:36:35 +09:00
Birk Magnussen dacf61cf80 Moved HUD-Scripting API changes to newe function 2020-12-02 03:34:03 +09:00
Birk Magnussen b0db9e3aea Merge branch 'master' of https://github.com/scp-fs2open/fs2open.github.com 2020-12-02 02:53:57 +09:00
Birk Magnussen 76c28ddccc Fixed HUD set Color call to use in game HUD instead of configs 2020-12-02 02:52:42 +09:00
Baezon 641cf48073 implement damage incidence angle 2020-12-01 12:37:22 -05:00
Phantom Hoover 909f4e9642 Don't short circuit eval_sexp on nodes which contain the special argument. 2020-11-29 20:49:12 +00:00
MageKing17 29e6aa1f17 Merge pull request #2941 from Baezon/another-copy-paste-error
Fix a small copy paste error in weapon parsing
2020-11-29 12:34:24 -08:00
Baezon 63f16b3fec fix a copy paste error 2020-11-28 20:38:25 -05:00
MageKing17 017bef3721 Merge pull request #2903 from JohnAFernandez/Adjust-timestamp-warning
Slightly alter when a timestamp warning is written to the log.
2020-11-28 12:02:44 -08:00
Fabian Woltermann 743bd306fe Merge pull request #2934 from PhantomHoover/fix/allow-treason-broken
Remove erroneous call to CDR.
2020-11-28 09:28:29 +01:00
Fabian Woltermann af08485286 Merge pull request #2929 from The-E/feature/expose_power_output
Expose the power output in the ship class to sexps and scripting
2020-11-28 09:27:59 +01:00
MageKing17 764b141175 Add "first-of" SEXP that behaves like "any-of" with a cap.
It takes a number as a maximum number of arguments that can be evaluated in a single call, but otherwise behaves very similarly to `any-of`; alternatively, if the number is 1, it's like an `in-sequence` that also skips arguments that don't satisfy the condition instead of just invalid ones.
2020-11-27 17:18:34 -08:00
JohnAFernandez f104bdef7e Merge pull request #2933 from asarium/fix/particleEdgeCase
Cover edge case in particle code
2020-11-27 15:05:33 -05:00
Fabian Woltermann 7be6f8adf4 Remove extraneous call to CDR 2020-11-27 19:30:13 +01:00
Phantom Hoover 2f9e64ed17 Remove erroneous call to CDR. 2020-11-27 18:14:12 +00:00
asarium 9766cc28d8 Cover edge case in particle code
There are some possibilities where we could get an expired pointer when
we create a persistent particle. This adds a check for that to avoid
crashing the engine in those case.

This is related to #2928.
2020-11-27 18:55:19 +01:00
Fabian Woltermann 0a4f9d5673 Evaluate the ship_entry correctly 2020-11-27 09:43:16 +01:00
Asteroth 20efcf04a1 Merge pull request #2924 from Baezon/big-ship-deathroll
Death roll for big ships and a death roll multiplier
2020-11-26 18:26:46 -05:00
Asteroth 93ea987a34 Merge pull request #2925 from Baezon/ship-split
Separate ship splitting explosions from propagating explosions
2020-11-26 18:26:32 -05:00
Fabian Woltermann 6423cc6001 Do not short-circuit evaluation here 2020-11-26 22:38:14 +01:00
JohnAFernandez 5e4c42426f Cleaner of Multi stats (#2918) 2020-11-26 12:13:35 -05:00
Fabian Woltermann 6f8763346c Expose the power output in the ship class to sexps and scripting 2020-11-26 16:36:19 +01:00
Goober5000 b0ef7859c8 Merge pull request #2915 from JohnAFernandez/Warn-About-Invalid-Squadron-Wings
Warn about and correct invalid squadron wings in multi
2020-11-26 00:14:51 -05:00
Baezon 1f7aca8cff cast to bool 2020-11-25 23:00:34 -05:00
Asteroth c0f7289880 Merge pull request #2927 from Baezon/no-docking-jitter
Reduce docking 'jitter'
2020-11-25 22:54:01 -05:00
JohnAFernandez 4a54370a5c Slightly alter when a timestamp warning is written to the log. 2020-11-25 22:46:53 -05:00
JohnAFernandez dcfd3aa8a9 feedback 2020-11-25 22:07:21 -05:00
Baezon a37d5f579f unused parameter 2020-11-25 17:04:01 -05:00
Baezon d367f2312b reduce docking jitter 2020-11-25 15:19:37 -05:00
Allen A. Babb 4671dbfdd5 Merge pull request #2911 from PhantomHoover/fix/dropped-hotkeys
Only save hotkeys if the player has actually added to the group, otherwise leave mission defaults in place
2020-11-24 17:46:19 -06:00
Taylor Richards 3e7fedd997 avoid doing mdns stuff in incompatible states 2020-11-24 10:06:27 -05:00
Baezon 79524e46d1 separate ship splitting explosions 2020-11-24 02:27:47 -05:00
Baezon 3fde7bb076 cat forget clone and move 2020-11-24 02:04:24 -05:00
Baezon d534c68f54 big ship death roll and deathroll multiplier 2020-11-24 00:04:29 -05:00
Goober5000 d31003afea Merge pull request #2909 from PhantomHoover/feature/tune-transfer
Add ships.tbl flags to tune most aspects of ETS behaviour
2020-11-23 13:14:34 -05:00
Goober5000 6c0d63f84a Merge pull request #2916 from Baezon/no-override-maneuver
Add 'Dont_override_old_maneuvers' flag to maneuvers
2020-11-23 13:09:32 -05:00
Phantom Hoover a4977f1a62 Only save hotkeys between missions if the player has added to them 2020-11-23 17:41:06 +00:00
Baezon 4024ff197d separate rotational and lateral maneuvers 2020-11-23 00:30:19 -05:00
Goober5000 ae9fdad600 Merge pull request #2902 from Baezon/lock-restrct-enhancements
Add IFF to missile lock restrictions, and now all missiles can use them
2020-11-22 12:49:06 -05:00
Baezon c90171d8a3 add no_override flag to maneuvers 2020-11-22 11:58:15 -05:00
Phantom Hoover 0151f1b5a8 Add ships.tbl flags to tune most aspects of ETS behaviour. 2020-11-21 23:07:21 +00:00
JohnAFernandez 515e1a2d26 Make Anti-Rubberbanding less aggressive to keep the client from showing nonsense (#2901) 2020-11-21 10:19:32 -05:00
JohnAFernandez caef2aecf0 Make sure that the oswpt object will have the correct status for an exited ship (#2913) 2020-11-21 09:57:19 -05:00
JohnAFernandez 2c43b7b506 Allow mission loading to circumvent multi Squadron bug 2020-11-21 09:54:08 -05:00
JohnAFernandez 97df2f3472 Merge pull request #2843 from Baezon/better-warp-collide
Fix some issues with warp collision
2020-11-21 01:03:32 -05:00
JohnAFernandez f61787b38a Merge pull request #2910 from notimaginative/fix_standalone_host_change
Update host pointer on standalone after host switch
2020-11-21 00:59:40 -05:00
Taylor Richards ce6c10535e address various ci warnings/errors 2020-11-21 00:57:03 -05:00
Taylor Richards cd5e1c297b replace old multicast code with mdns/dns-sd 2020-11-21 00:57:03 -05:00
Taylor Richards feadceef55 add mdns library 2020-11-21 00:57:03 -05:00
Goober5000 f8c9050da8 Merge pull request #2905 from Goober5000/weaponspew_tweak
adjust weapon calculations based on Discord analysis
2020-11-20 20:21:07 -05:00
Taylor Richards 29e9b1f109 update host pointer on standalone after host switch
fixes Mantis 1892
2020-11-20 14:43:46 -05:00
Baezon fe17aec76d no more travis wooo 2020-11-20 14:11:13 -05:00
Baezon 2dbaf53e49 no more travis wooo 2020-11-20 14:10:27 -05:00
Baezon 734314494f no more travis wooo 2020-11-20 14:07:55 -05:00
Baezon 96bd94dfa5 lock restriction enhancements 2020-11-20 12:04:03 -05:00
Baezon 849b4c57b6 no warning 2020-11-20 12:03:34 -05:00
Baezon de0933e1b9 expose targeting sizes 2020-11-20 12:03:34 -05:00
Baezon f2a367b75e NULL -> nullptr 2020-11-20 12:02:13 -05:00
Baezon 27b388eb7f a whitespace change yes really because travis hates me 2020-11-20 12:02:13 -05:00
Baezon 76a1b557b9 review tweaks and copy paste errors 2020-11-20 12:02:13 -05:00
Baezon bbd145410d big ship can exceed tabled velocity during warp too 2020-11-20 12:02:13 -05:00
Baezon 69c86c4733 more travis 2020-11-20 12:02:13 -05:00
Baezon 9959d8a671 travis 2020-11-20 12:02:13 -05:00
Baezon e203426230 missing warp_effect checks 2020-11-20 12:02:13 -05:00
Baezon 47dfdcb4c1 WHOOPS dont forget the remove your debug changes kids 2020-11-20 12:02:13 -05:00
Baezon aa8849f4e5 improved warp collision 2020-11-20 12:02:13 -05:00
Goober5000 2f38131cfd adjust weapon calculations based on Discord analysis 2020-11-19 00:37:55 -05:00
Goober5000 02a77d077d Merge pull request #2906 from Goober5000/fix_build
fix some sort of build problem in the continuous integration
2020-11-19 00:37:18 -05:00
Goober5000 ef0197971f fix some sort of build problem in the continuous integration 2020-11-18 21:11:09 -05:00
Goober5000 0f8a88bce9 Merge pull request #2904 from Baezon/fix-shock-damage-parse
Fix a bug with shockwave damage parsing
2020-11-18 18:19:40 -05:00
Goober5000 51decebf27 Merge pull request #2899 from notimaginative/fix_multi_loadout_team
Prevent loadout issues in multi due to iff changes
2020-11-18 13:55:38 -05:00
Baezon b70a28bfaa fix shockwave damage parsing 2020-11-18 13:26:18 -05:00
m!m 08297ddbb9 Merge pull request #2863 from jg18/freetype_prebuilt_for_mac
Use prebuilt FreeType library on Mac
2020-11-18 17:47:24 +01:00
Taylor Richards 22e13f88ba prevent loadout issues in multi due to iff changes 2020-11-17 04:20:16 -05:00
JohnAFernandez 383c821968 Remove the unused shield_integrity field (#2898) 2020-11-17 01:22:12 -05:00
Asteroth fd3ce9d6cd Merge pull request #2897 from Baezon/fix-lssm-trails
Update no-pspew-lssm with recent changes
2020-11-16 15:09:30 -05:00
Baezon b002cff3ee fix trail update oversight 2020-11-16 11:03:46 -05:00
Asteroth bee6c04c26 Merge pull request #2865 from Baezon/no-pspew-lssm
Some visual fixes to local ssms
2020-11-16 00:41:36 -05:00
Asteroth 0909855087 Merge pull request #2888 from Baezon/model-anim-fix
Fix a bug with model animation
2020-11-15 19:05:47 -05:00
Taylor Richards 042cb256de Merge pull request #2896 from notimaginative/fix_multi_cutscene_crash
Call common_select_init() before cutscenes where needed
2020-11-15 19:01:07 -05:00
Taylor Richards cad56bd533 call common_select_init() before cutscenes where needed
Fixes crashing in multi where ships are locked by host while a
client is on fiction viewer, command brief, red alert, or cutscene
2020-11-15 15:49:32 -05:00
Goober5000 2d291106d9 Merge pull request #2891 from Goober5000/message_sanity
don't access invalid memory if the shipnum is -1
2020-11-15 11:23:33 -05:00
JohnAFernandez 398985f97c Merge pull request #2880 from Baezon/afterburner-enhancements
Add some new afterburner options
2020-11-15 09:04:49 -05:00
JohnAFernandez 6d6f4446aa Merge pull request #2883 from Baezon/trail-spread
Add trail 'spread'
2020-11-15 09:03:01 -05:00
Baezon 18bf11b715 yes really just a whitespace change because travis hates me 2020-11-15 00:13:16 -05:00
Goober5000 32583f7216 don't access invalid memory if the shipnum is -1
This resolves #2887, even though that issue is really a case of bad data.
2020-11-14 22:24:49 -05:00
JohnAFernandez ce1858c4b6 Merge pull request #2890 from notimaginative/fix_multi_mission_closeout
Close out mission when returning to multi screens
2020-11-14 21:44:18 -05:00
JohnAFernandez b46c5f3e63 Merge pull request #2881 from Baezon/weapon-state-fixes
Two fixes to weapon states
2020-11-14 21:40:19 -05:00
Taylor Richards 0b41ee547b make sure mission is closed out when returning to multi screens 2020-11-14 19:57:58 -05:00
Baezon d4c5693e97 fix animation 2020-11-13 14:22:49 -05:00
JohnAFernandez 573746f229 Merge pull request #2759 from notimaginative/fix_multi_screen_timeouts
Fix multi screen timeouts
2020-11-13 02:33:50 -05:00
Baezon 8dba8f612e better comment 2020-11-12 14:28:14 -05:00
Baezon 89c1610ad7 better names 2020-11-12 00:21:46 -05:00
Baezon d4ac06fe81 comment for trail_add_segment and use vm_vec_zero 2020-11-11 23:39:04 -05:00
JohnAFernandez 455b839c27 Merge pull request #2876 from Baezon/scripting-frametime-fix
Fix 'getFrametime' scripting function
2020-11-11 21:07:55 -05:00
Baezon ec39f6c43b mandatory orient 2020-11-11 19:02:54 -05:00
Baezon e321b0c727 comment mistake 2020-11-11 18:52:08 -05:00
Baezon 8c640fb736 more comments 2020-11-11 17:24:14 -05:00
Baezon 048ee13269 implement trail "spread" 2020-11-11 16:56:22 -05:00
Baezon 899f03c8ff review tweaks 2020-11-11 01:32:22 -05:00
Baezon 2d9fdbe830 weapon state fixes 2020-11-11 01:20:22 -05:00
JohnAFernandez 433f170f52 AI Edge Case Fix (#2871) 2020-11-10 20:17:07 -05:00
Baezon 4b28f56edb actually deprecate old function 2020-11-10 12:53:51 -05:00
Baezon a4a281a0b8 move setting of flag 2020-11-10 02:41:58 -05:00
Baezon 23f8062346 add some afterburner fields 2020-11-10 01:44:00 -05:00
Taylor Richards 54a5e57181 clean up popupdead_do_frame() just a bit
- remove duplicate code block
 - use UNREACHABLE()
2020-11-09 20:00:47 -05:00
Taylor Richards 2c57ef119d Merge pull request #2878 from notimaginative/fix_pilot_file_issues
Fix pilot file data loss
2020-11-09 10:35:17 -05:00
Taylor Richards f11c12afe6 avoid verify() resetting data that it shouldn't
This fixes stats, variables, and techroom data for the
active pilot getting reset upon entering the barracks
2020-11-09 03:43:06 -05:00
Taylor Richards 0fc206ab97 fix invalid array in pilot file 2020-11-09 03:37:26 -05:00
JohnAFernandez b44a45cfa3 Should fix some crahes and inaccuracies at high pings (#2872)
* Should fix some crahes and inaccuracies at high pings

Feeding the wrong index to the rollback struct is a bad idea....  That's late night coding for you.

* Forgot one correction

* Also update the comment.
2020-11-09 00:11:49 -05:00
Goober5000 a0e5b8fc4d Merge pull request #2874 from The-E/feature/player_hook_var_in_huddraw
Add the "Player" hook variable to the CHA_HUDDRAW scripting trigger
2020-11-08 23:30:28 -05:00
Asteroth 5dbda7efd0 Merge pull request #2858 from Baezon/multi-beam-prep
Add beam parameter validation
2020-11-08 22:43:58 -05:00
Baezon 08f590b383 fix frametime 2020-11-08 22:32:21 -05:00
Fabian Woltermann 045a57745a Add the "Player" hook variable to the CHA_HUDDRAW scripting trigger 2020-11-08 14:38:33 +01:00
Taylor Richards 8950417c9e fix some timing problems
- account for frametime during movie playback to avoid sync issues
 - avoid incrementing timestamp more than once per frame in multi
2020-11-07 16:45:22 -05:00
Taylor Richards fb249d35cc add new NETPLAYER states
- Cutscenes
 - Fiction Viewer
 - Command Briefings
 - Red Alert
2020-11-07 16:44:11 -05:00
Taylor Richards ef648b313a confirm user wants to quit on respawn popup 2020-11-07 16:44:06 -05:00
Taylor Richards 0c66a3b33c fix crash on fiction viewer and cmd brief screens 2020-11-07 16:44:06 -05:00
Taylor Richards 9a913b5f35 prevent cutscenes from passing keyboard events to current state 2020-11-07 16:44:06 -05:00
Taylor Richards 3326874270 avoid replaying cutscene on briefing 2020-11-07 16:44:06 -05:00
Taylor Richards 05f4d36c52 stop common_music when exiting cmd brief and fiction viewer
This is necessary for multi to ensure that music is stopped.
common_select_close() would do this, but it's never inited for
these screens. So we need to manually do it if we aren't
transitioning to a screen with common_music.
2020-11-07 16:44:06 -05:00
Taylor Richards 153b6bbd6a handle multi quit properly in cmd brief and fiction viewer 2020-11-07 16:44:06 -05:00
Taylor Richards 463ca5ed01 allow multi clients to proceed to fiction viewer and cmd brief 2020-11-07 16:44:06 -05:00
Taylor Richards daa2da6a4a give time to network during playback loop if we should 2020-11-07 16:44:06 -05:00
JohnAFernandez 3238ce1614 Add CYCLE_PREIMARY_WEAPON_SEQUENCE to Multi controls sent to server. (#2866) 2020-11-07 14:23:34 -05:00
Baezon 8c9a6d049e use armor types for beam-weapon damage 2020-11-06 23:40:02 -05:00
jg18 d5c59d083c update prebuilt lib hash 2020-11-05 12:28:22 -08:00
Asteroth 498f82b0c4 Merge pull request #2823 from Baezon/continuous-spawn
Allow for continuously spawning weapons
2020-11-05 13:36:22 -05:00
Baezon 1359776651 no fb fire info fire method 2020-11-05 11:56:23 -05:00
Baezon 9034e4e043 revert and only do beam validation 2020-11-04 13:31:09 -05:00
Baezon 33805f1e37 travis 2020-11-04 00:24:15 -05:00
JohnAFernandez f21b1a7ace Multiplayer Resimulation for Client Fired Linear Weapons (Rollback) (#2788)
* Multiplayer Dumbfire Rollback

This creates a packet that sends the relative position and orientation info for a primary or dumbfire missle shot.  The client creates this packet when firing those two types of weapons and sends it to the server.  The server goes back to the frame that the client fired the weapon and quicky resimulates all the frames in-between.

This includes collision detection, restoring positions, orientations and veloicties, but not subsystem orientations.

* Address Feedback

* allow clients to send subsystem info

* Check for object number not weapon number

* Readability Adjustment
2020-11-03 22:56:25 -05:00
Baezon 64fa75d53e fix lssm trails 2020-11-03 12:42:06 -05:00
Joshua Glatt c733afc6bd Merge pull request #2857 from jg18/update_libpng_to_1.6.37
Update libpng to version 1.6.37
2020-11-03 08:52:30 -08:00
MageKing17 40dc4e9b74 Merge pull request #2862 from MageKing17/bugfix/display-name-template-fix
Don't perform automatic hash truncation before template-copying.
2020-11-03 01:22:25 -08:00
Baezon 729d515ea7 no pspew under lssm 3 2020-11-03 01:55:13 -05:00
jg18 e2675d4892 Use prebuilt FreeType library on Mac 2020-11-02 21:59:11 -08:00
MageKing17 b83f815dbb Don't perform automatic hash truncation before template-copying.
In commit 3b2af702f7, the hash truncation was changed so that instead of being part of the HUD, it's stored as the class's display name. However, this action was performed before `+Use Template:` was parsed, which would then overwrite the display name and clear the `Has_display_name` flag. I've moved it so that it now happens after the copy operation (and added a check for an existing display name, in case the template defines one). I use a new boolean variable to indicate that default display name creation needs to happen rather than duplicate that code.
2020-11-02 16:35:01 -08:00
Asteroth 5b0bbd5cde Merge pull request #2861 from Baezon/fix-collision-radius
Fix a bug with collision_radius_override
2020-11-02 16:59:41 -05:00
Baezon 53fdde6aea initialize collision_radius_override 2020-11-02 11:46:23 -05:00
jg18 31236b57cf update libpng to version 1.6.37 2020-11-01 09:56:21 -08:00
JohnAFernandez 42e29a96dd Merge pull request #2853 from JohnAFernandez/Fix-AutoAim-In-Multi
Allow polish_position() to use any player's position in multi
2020-10-31 22:39:26 -04:00
JohnAFernandez ee2560ac0f Merge pull request #2851 from Baezon/no-warn-radius-double
Don't warn for "no radius doubling" if the weapon isn't a bomb
2020-10-31 22:38:49 -04:00
Tyler Blount a92994fda5 Merge pull request #2840 from PhantomHoover/fix/slow-model-loads
Cache bitmap lookup buffers to avoid wasteful copying
2020-10-31 17:12:50 -06:00
Asteroth 2a9e33904c Merge pull request #2835 from Baezon/beam-no-parent-collide
Better excluding of beam-weapon collisions with the same parent
2020-10-31 17:18:20 -04:00
JohnAFernandez eb7a956a1e Allow polish_position() to use any player's position in multi 2020-10-31 16:46:50 -04:00
Baezon 7add73f27f rename hard_target_bomb and only warn for not interceptable 2020-10-31 01:12:30 -04:00
JohnAFernandez c4da36df52 Merge pull request #2847 from Baezon/radius-override
Add '$Collision Radius Override' to weapons
2020-10-30 20:13:08 -04:00
Phantom Hoover 7bcc18c622 Cache bitmap lookup buffers to avoid wasteful copying 2020-10-30 20:00:47 +00:00
Tyler Blount bd2c20fdc2 Merge pull request #2846 from TRBlount/new-licensing
Update terms of Licensing
2020-10-30 10:50:03 -06:00
Baezon ef34ce3883 0.f -> 0.0f 2020-10-30 11:50:47 -04:00
Baezon b3a71e9cf3 add radius override 2020-10-30 02:10:56 -04:00
Tyler Blount 9c75078026 Update terms of Licensing 2020-10-29 21:24:42 -06:00
Goober5000 0390f4abba Merge pull request #2845 from z64555/fix/mouse_buttons
Fixes #2844 where mouse buttons X1 and X2 were not detected.
2020-10-29 22:35:45 -04:00
z64555 9a2d996b53 Fixes #2844 where mouse buttons X1 and X2 were not detected. 2020-10-29 10:58:34 -05:00
Goober5000 4546c8784d Merge pull request #2842 from Goober5000/fix_debris_expiration
fix debris expiration
2020-10-28 23:18:06 -04:00
Goober5000 2aed10ee7f Merge pull request #2839 from Goober5000/fix_lock_indicator
redo the locking animations for multilock
2020-10-28 21:17:08 -04:00
Goober5000 b989492ef4 fix debris expiration
Fixes #2834, a bug where non-capital ships did not generate debris pieces from their hull.  It turns out this bug was introduced in #2416.  If the `DoesNotExpire` flag is substituted for the `lifeleft` variable , it should be done in all locations.
2020-10-28 19:35:50 -04:00
wookieejedi fea8086647 Merge pull request #2838 from Baezon/reset-burst-flag
Add "resets" burst flag
2020-10-28 15:54:05 -04:00
wookieejedi 97c801f7cc Merge pull request #2836 from wookieejedi/add-choose-random-bitmap-particle-effects
Add 'Choose Random Bitmap' for particle effects
2020-10-28 09:24:32 -04:00
Baezon 8dee9d8103 better delay handling 2020-10-27 23:35:19 -04:00
wookieejedi d23f995a58 optimize 2020-10-27 16:57:44 -04:00
wookieejedi 482b691f76 more appeasement 2020-10-27 14:49:27 -04:00
wookieejedi 04dc2aef57 appease travis 2020-10-27 08:07:08 -04:00
Goober5000 9eaa7bf024 redo the locking animations for multilock
The multilock patch did not handle `Lock_anim` in the best way, and handled `Lock_gauge` in a very bizarre way, despite the fact that they are two simple hud animations.  This changes the `lock_info` struct to track the correct `time_elapsed` value for both, and changes the locking code to use the values in the correct way.

Additionally, this properly loops the lock triangles on the FS1 lock indicator.  Strangely, even prior to the multilock merge it appears that the triangles wouldn't have animated more than a quarter turn.

Finally, this prevents the FS1 lock indicator from blinking, since in retail FS1 it didn't blink.

Tested with FSPort and no-mods.  Fixes #2826.
2020-10-27 02:55:36 -04:00
Goober5000 af83eda19a Merge pull request #2837 from Goober5000/fix_typo
fix typo and elaborate sexp help
2020-10-27 02:32:47 -04:00
Baezon 3db3dade77 implement "resets" burst flag 2020-10-27 01:39:35 -04:00
wookieejedi 34d6f5e44e and one more unit type fix 2020-10-26 23:18:06 -04:00
wookieejedi 20e65c0dbb remove unneeded int conversion 2020-10-26 22:55:13 -04:00
wookieejedi d762578fe0 incorporate feedback 2020-10-26 22:38:15 -04:00
Goober5000 283bcaf607 fix typo and elaborate sexp help 2020-10-26 20:51:00 -04:00
wookieejedi 032430d126 specify size_t type 2020-10-26 16:31:51 -04:00
wookieejedi 4b39f50b84 fix up 2020-10-26 16:05:58 -04:00
wookieejedi 879e7119d5 clean up redundancies 2020-10-26 15:54:40 -04:00
wookieejedi 8bc1c4c797 use pushback function 2020-10-26 14:08:14 -04:00
wookieejedi 01cc444836 Add 'Choose Random Bitmap' for Particle Effects 2020-10-26 13:47:26 -04:00
m!m a819d1860f Merge pull request #2827 from asarium/graphics/typesafeBufferHandles
Add type safe handle for graphics buffers
2020-10-26 17:59:18 +01:00
Baezon 858356cfd3 some fixes to beam collision 2020-10-26 11:43:10 -04:00
Goober5000 a8e1f02984 Merge pull request #2833 from Baezon/remote-detonate-fix
Fix `remote_detonaters_active` decrementing
2020-10-26 10:34:24 -04:00
Baezon f2e019d7fb review tweak 2020-10-25 21:36:31 -04:00
Baezon 62a1dae3b4 multi warning and no shadowing 2020-10-25 21:05:08 -04:00
Baezon c93c8e0bd7 fix remote_detonaters_active decrementing 2020-10-25 16:14:43 -04:00
Fabian Woltermann 339a33b0b7 Merge pull request #2832 from The-E/fix/2831_lab_crashes
Remove material editor, add exit button in the lab
2020-10-25 15:47:56 +01:00
Fabian Woltermann 33ce3f96f5 Remove material editor, add exit button 2020-10-25 13:03:38 +01:00
asarium 9da5cc17a3 Add type safe handle for graphics buffers
This converts the previous plain-int type for a buffer handle to an
instance of our ID class which provides type safety.
2020-10-25 12:16:05 +01:00
Baezon 3a83475c15 some fixes, added delay and minimum spawn interval 2020-10-25 00:44:14 -04:00
Tyler Blount 45417a0093 Merge pull request #2830 from PhantomHoover/fix/missile-locked-sexp
Avoid resetting player_has_lock unless they've actually lost their lock
2020-10-24 16:43:48 -06:00
Fabian Woltermann 0e5fbb1396 Fix a number of crash issues 2020-10-25 00:08:52 +02:00
Phantom Hoover 9a5186f637 Avoid resetting player_has_lock unless they've actually lost their lock 2020-10-24 20:26:55 +01:00
m!m dbcc60b359 Merge pull request #2829 from asarium/fix/2824
Make removing non-existent hook-vars a no-op
2020-10-24 17:33:39 +02:00
asarium 633d13a02e Make removing non-existent hook-vars a no-op
There are some usages where a hook variable is removed blindly which
caused issues in multi.

This fixes #2824.
2020-10-24 13:39:04 +02:00
Baezon dbf0d0de0d accurate total spawn count 2020-10-23 20:43:53 -04:00
wookieejedi 369f902d41 Merge pull request #2814 from bangstk/bugfix-hud-bg
Fix missing background color in paletted HUD gauges
2020-10-23 17:01:29 -04:00
Fabian Woltermann 23ea4eca43 Merge pull request #2517 from The-E/feature/lab_v2
Rewrite the lab
2020-10-23 18:01:47 +02:00
Fabian Woltermann fff5207d6c Disable the readability-non-const-parameter check on this line 2020-10-23 15:40:39 +02:00
Fabian Woltermann 4ad8f257bf Remove circular dependency 2020-10-23 08:18:23 +02:00
JohnAFernandez 2235a62cda Merge pull request #2810 from Baezon/better-collide-avoid
Improved collision avoidance for fighters
2020-10-22 22:06:34 -04:00
JohnAFernandez 4bd827f248 Merge pull request #2819 from notimaginative/fix_psnet_init
Address issues that can arise if psnet fails to init properly
2020-10-22 21:24:21 -04:00
JohnAFernandez c2b6a35196 Merge pull request #2813 from Baezon/fix-to-the-fix
Fix to the fix to initial missile physics set-up
2020-10-22 21:21:00 -04:00
Baezon 454c8f6bc3 no shadowing 2020-10-22 20:01:31 -04:00
Baezon a55e331302 spawn_chance for detonate_spawn too 2020-10-22 18:48:58 -04:00
Baezon 1926fcc5cb total_children_spawned -> total_detonation_children_spawned 2020-10-22 17:58:43 -04:00
Baezon 6506d0a49c v1 2020-10-22 14:32:20 -04:00
Fabian Woltermann 4e455913b9 Use a getter for the labmanager 2020-10-22 19:26:00 +02:00
m!m 51c8b22905 Merge pull request #2809 from asarium/graphics/2dFuncObs
Change graphics interface to function objects
2020-10-22 19:24:09 +02:00
Goober5000 6d8ab32971 Merge pull request #2822 from Baezon/bracket-deathroll-bug
Fix a bug with hud brackets during target deathroll
2020-10-22 11:22:09 -04:00
Fabian Woltermann 30436568f2 I don't even know 2020-10-22 08:04:01 +02:00
Baezon 7b6488aba2 array safety 2020-10-21 23:23:23 -04:00
Baezon 6808101e4a much cleaner this way 2020-10-21 23:10:35 -04:00
Baezon eae514a269 v1 2020-10-21 22:57:08 -04:00
Goober5000 f32f227db0 Merge pull request #2815 from Baezon/better-remote-detonate
Fix some inconsistencies with remote detonation
2020-10-21 14:21:16 -04:00
Fabian Woltermann d93d8e0e5e More CI fixes 2020-10-21 17:13:30 +02:00
Taylor Richards 7864a2891d abort if psnet failed to init on standalone 2020-10-21 10:57:24 -04:00
JohnAFernandez 04a4f98ced Merge pull request #2818 from JohnAFernandez/Fix-Silly-Ai-Debugging-Code
Add Missing Entries to Submode_text array
2020-10-21 05:54:56 -04:00
JohnAFernandez afc4fad4db And related comments 2020-10-20 23:48:08 -04:00
JohnAFernandez 1257396a1b Add Missing Entries to Submode_text array 2020-10-20 23:32:46 -04:00
Fabian Woltermann 52f0b7dbc6 Merge pull request #2802 from PhantomHoover/feature/screenshake-flag
Add -no_screenshake flag to optionally disable screen shaking effects…
2020-10-20 17:51:28 +02:00
Baezon ef65914129 v1 2020-10-19 13:40:25 -04:00
bangstk 01f4fb3f15 Fix missing HUD gauge backgrounds
Code was moved around between 3.8.0 and 19.0.0 which broke the colored backgrounds of paletted HUD gauges.

Palette index 15 is used by the HUD gauge graphics to indicate background area of HUD gauges. When the code to remap palette indexes to alpha values was moved to packunpack.cpp, palette index 15 was mistakenly mapped to the alpha for index 0 (nothing) rather than index 1 (what retail/3.8.0 code maps it to) causing all HUD gauges to be missing their dark transparent backgrounds.

Also: the code maps palette indexes [0, 15] to alpha values [0, 255]. But due to an oversight (palette index 15 not being part of this gradient] alpha value 255 is never used so the range of alpha values for HUD gauges ended up being [0, 238]. Conversion math tweaked to make the alpha range [0, 252] which is very close to 255.
2020-10-19 03:31:01 -04:00
Baezon d2de3b6b82 v1 2020-10-18 22:43:57 -04:00
Phantom Hoover 68385e7658 Disable no screenshake flag in multi 2020-10-18 20:22:03 +01:00
Fabian Woltermann 1ad6b78950 More CI things 2020-10-18 19:58:56 +02:00
Baezon baa1f23bdc travis appeasement 2020-10-18 12:43:07 -04:00
Taylor Richards 424840eabf fix issues with psnet init 2020-10-18 05:31:24 -04:00
Fabian Woltermann 1e406ae5d2 Another CI warning fix 2020-10-18 10:43:30 +02:00
Baezon a9bc56fd13 v1 2020-10-18 00:30:41 -04:00
m!m 395b4300f6 Merge pull request #2800 from asarium/vulkan/shaders
Add first basic rendering with Vulkan
2020-10-17 20:38:46 +02:00
Fabian Woltermann c5447966c2 More CI fxes 2020-10-17 17:53:30 +02:00
Fabian Woltermann b94b5475b6 actually remove the old lab code 2020-10-17 16:54:51 +02:00
Fabian Woltermann eebd5cdd4d Fix CI warnings 2020-10-17 16:50:47 +02:00
Fabian Woltermann 13cd2d3326 Make the AO flag work 2020-10-17 16:07:33 +02:00
Fabian Woltermann 241ba1e4e7 Fix crash on exit 2020-10-17 15:58:34 +02:00
asarium 287b843839 Change graphics interface to function objects
This will make it easier to have a graphics interface without relying on
global objects since the object can be kept alive in the function
object. No other functional changes since the existing syntax is also
valid for function objects.
2020-10-17 15:15:33 +02:00
Phantom Hoover 67e9a4263a NULL to nullptr to appease travis' caprice 2020-10-17 13:50:01 +01:00
m!m ede19df94d Merge pull request #2808 from JohnAFernandez/Add-buffer-to-object-update-packet
stop needs more space so as not to crash during really busy scenes
2020-10-17 13:00:15 +02:00
Goober5000 d771d499dd Merge pull request #2804 from Baezon/physics-missile-fixes
Two fixes to initial missile physics set-up
2020-10-17 01:35:06 -04:00
Goober5000 c7666faf08 Merge pull request #2807 from Goober5000/directive_lines_fix
properly handle directives with long words
2020-10-17 01:09:33 -04:00
JohnAFernandez 93a9a2ab51 stop needs more space so as not to crash during really busy scenes 2020-10-17 00:07:18 -04:00
Goober5000 f7b3322537 Merge pull request #2806 from TRBlount/fix/multilock-cs-swarm
Fix #2767
2020-10-16 21:14:51 -04:00
Goober5000 a4d10a3fe4 properly handle directive with long words
A follow-up of sorts to #2801, but independent of it.  If a directive line is not split, the HUD should handle it properly rather than Asserting and displaying the same line twice.
2020-10-16 21:02:36 -04:00
Tyler Blount 2f07c0785e Add comment for clarification 2020-10-16 17:34:05 -06:00
Tyler Blount 8090f60940 Don't clear locks for swarm/corkscrew missiles until the last missile needs to be fired 2020-10-16 16:15:48 -06:00
Goober5000 4be145999e Merge pull request #2803 from Goober5000/fix_special_exp_initialization
fix a very special case with ship field initialization
2020-10-16 13:42:35 -04:00
Baezon 39d28a14e8 travis 2020-10-16 12:53:22 -04:00
Baezon 1459f4bbcf v1 2020-10-16 01:52:47 -04:00
Goober5000 785cabfc4c fix a very special case with ship field initialization
If you create a kamikaze ship with ship-create, it won't work properly, because the explosion values are not initialized to -1 as expected.  This fixes that.
2020-10-15 22:13:06 -04:00
Phantom Hoover a137fa496f Add -no_screenshake flag to optionally disable screen shaking effects for afterburner/cannon/shockwaves 2020-10-15 21:23:23 +01:00
Goober5000 278370b0d6 Merge pull request #2801 from Goober5000/tweak_message_string_splitting
improve message string splitting for outlier cases
2020-10-15 12:39:00 -04:00
asarium 4a0a8463ee Add first basic rendering with Vulkan
This is basically the tutorial from vulkan-tutorial.com adapted to using
VulkanHpp and with some refactorings that extract some locigally
self-contained code.

Currently only draws a simple colored triangle.
2020-10-14 22:21:45 +02:00
Goober5000 455e2f9d8c improve message string splitting for outlier cases
If a message string contained a word that was too long, on its own, for the available screen real estate, the function wouldn't split the string at all.  The new behavior is to split the string even if the split location is suboptimal, since it's better to have as much of the message visible as possible.

Quoting from the code:

```
// only update the line break if:
// a) we don't have a line break yet;
// b) we're still within the required real estate
// (basically we want the latest line break that doesn't go off the edge of the screen,
// but if the *first* line break is off the end of the screen, we want that)
```
2020-10-14 15:57:09 -04:00
m!m bfe76fbf44 Merge pull request #2795 from Baezon/laser-particles
Allow for 'laser-style' particles
2020-10-14 20:21:50 +02:00
Goober5000 fbca15ae71 Merge pull request #2799 from Goober5000/invalidate_argument_default
the default for the argument sexps should be the most frequently-used case
2020-10-13 19:45:02 -04:00
Goober5000 4ecddc0408 the default for the invalidate-argument sexp should be the most frequently-used case 2020-10-13 16:16:41 -04:00
Goober5000 105137dc94 fix bug in ships with no allowed weapons list (#2796)
Phantom Hoover noticed this bug in Vassago's dirge.  For ships with no allowed weapons list (like Shivan ships) weapon culling would cause a crash.
2020-10-12 21:22:15 -04:00
Fabian Woltermann 83d499b999 master rebase 2020-10-12 21:41:44 +02:00
Fabian Woltermann 41afb6e32d ... 2020-10-12 21:01:42 +02:00
Fabian Woltermann c914a131ab small fix 2020-10-12 21:01:42 +02:00
Fabian Woltermann 98085d5281 more fixes 2020-10-12 21:01:42 +02:00
Fabian Woltermann 515a8e95c5 More stupid bugfixes 2020-10-12 21:01:42 +02:00
Fabian Woltermann 80c9af4c57 More fixings 2020-10-12 21:01:42 +02:00
Fabian Woltermann 06428448b3 Various fixes 2020-10-12 21:01:42 +02:00
Fabian Woltermann ca8f9e9adf small bugfixes 2020-10-12 21:01:42 +02:00
Fabian Woltermann 298f6c5aa9 fix typo 2020-10-12 21:01:42 +02:00
Fabian Woltermann 18aa525ce2 Make model rendering work again 2020-10-12 21:01:42 +02:00
Fabian Woltermann 7e98ed7990 Get more rendering in here 2020-10-12 21:01:42 +02:00
Fabian Woltermann 396fdc88f9 Start on the renderer 2020-10-12 21:01:42 +02:00
Fabian Woltermann 440045d017 Make it possible to exit the lab 2020-10-12 21:01:42 +02:00
Fabian Woltermann c650cec3da Add the missing dialogs 2020-10-12 21:01:42 +02:00
Fabian Woltermann 1c5621b89b Add weapons list 2020-10-12 21:01:41 +02:00
Fabian Woltermann 77a832f8f4 bugfixes 2020-10-12 21:01:41 +02:00
Fabian Woltermann 56140e5c9c Fix more CI warnings 2020-10-12 21:01:41 +02:00
Fabian Woltermann 305c0b915e Fix CI 2020-10-12 21:01:41 +02:00
Fabian Woltermann 8e45f3cf29 wip 2020-10-12 21:01:41 +02:00
m!m f7dd996a40 Merge pull request #2793 from asarium/lua/varargsDocs
Support vararg specifiers in Lua documentation
2020-10-12 19:45:02 +02:00
Baezon 13f911528f no implicit magic number, and initialize 0 2020-10-12 13:39:05 -04:00
asarium bb0631ab6e Support vararg specifiers in Lua documentation
This was the last thing that was missing for complete support of all
function parameter declarations.

To ensure parameter lists stay valid a unit test was added that will
validate the argument lists and cause the test to fail if they cannot be
parsed.
2020-10-12 17:59:57 +02:00
Baezon 773d6f9710 v1 2020-10-12 01:13:29 -04:00
JohnAFernandez 7d8dd55ec8 Merge pull request #2791 from Baezon/missile-turn-accel
Add 'Turning Acceleration Time' to missiles
2020-10-11 21:41:14 -04:00
Baezon 3bd999ee8e warn once for no flag 2020-10-11 19:30:33 -04:00
m!m 75ca28ea86 Merge pull request #2794 from wookieejedi/fix-non-shielded-ships-manage-ets
Fix to Non Shielded Ships Manage ETS
2020-10-11 19:12:18 +02:00
wookieejedi 950f248b03 Fix to Non Shielded Ships Manage ETS
This one line fix properly specifies which ship to use for ETS managment. The recent merge of `Non-shielded ships manage ETS` had a object reference error, so this rectifies that. Thanks to Axem for finding this!
2020-10-11 11:23:14 -04:00
Baezon b360435719 v1 2020-10-11 02:34:59 -04:00
m!m f54ad876aa Merge pull request #2789 from Baezon/respect-turntime-rotdamp
Add 'AI respect tabled turn time and rotdamp' flag
2020-10-10 18:49:26 +02:00
m!m 587c4f7cd1 Merge pull request #2790 from Baezon/ai-use-bank-const
Fix banking constant not applying to AI
2020-10-10 18:47:34 +02:00
Baezon 3eda3d9315 increase fudge to maintain retail 2020-10-09 23:37:28 -04:00
Baezon 53d2d6c028 v1 2020-10-09 23:19:41 -04:00
Baezon 01d2657532 v1 2020-10-09 23:00:21 -04:00
Goober5000 465af93dcd fix display names for wings (#2787)
Fix wing name generation, when using hash symbols, to use the new display name method.
2020-10-08 22:48:30 -04:00
JohnAFernandez 186fe51344 Object update packet upgrade (#2752)
* Object Update Refactor

    1. Keeps the object update packet aligned, even if the ship is dying or has not yet arrived on the client.
    2. Properly handles model point shields (yes, that's what was causing multi to crash the most!)
    3. Reworks positional interpolation timing and adds rotational interpolation, by sending timing information with every object update packet in a header shared between objects.
    4. Saves a lot of bandwidth by only sending data that is changing. (no more sending all subsystems once per second!)
    5. Better handles out of order packets (but can still use their information if recent enough!)
    6. Builds the basis for Rollback by beginning to record the positions and orientations and velocities of ships for the last 30 frames.
    7. Adds subsystem rotation -- Yeah, you saw that right, subsystems will now spin in multi.
    8. Waypoint movement is now enabled via sexp, and time to arrival of waypoints is updated on the target info gauge.

* Fix edge case crash and Incorporate feedback

* Clean Up Interpolate Angles Quick

* Restrain the client

* How was this still here???

* Make sure every part of OO uses OOC_INDEX_NULLPTR_SUBSYSTEM define

* Fix Way to Store Return Values

* Ok travis, we get it

* Ok travis.........
2020-10-08 15:29:06 -04:00
wookieejedi 8961b3cc8e Merge pull request #2783 from wookieejedi/allow-non-shielded-to-manage-ETS
Flag to allow ships with no shields to manage ETS
2020-10-06 16:18:06 -04:00
Goober5000 23b3aadf9b Message size fix (#2784)
* Fix underline length calculation in message scrollback
* Use SCP_string for message source (which allows ships with long display names to work without crashing) and message text
* Upgrade assorted functions to work with SCP_string
2020-10-06 14:31:03 -04:00
wookieejedi 443b3cd217 fix copy paste error 2020-10-06 14:07:19 -04:00
wookieejedi dabe025967 feedback and cleanup 2020-10-05 21:43:46 -04:00
wookieejedi 31d7a16e54 make capitalization consistent 2020-10-05 20:40:40 -04:00
wookieejedi 886e7f4f18 Flag to allow ships with no shields to manage ETS
Using the `No_shields` flag for ships is common usage in multiple mods, and as it turns out ships with that flag set will not have the AI manage ETS values due to an early return in the `ai_manage_ets` function. This PR adds an AI flag to allow ships with no shields to manage ETS regarding weapons and engines. This flag was tested and works as expected.
2020-10-05 19:57:09 -04:00
m!m a52f35fd28 Merge pull request #2782 from asarium/build/fixReleaseToolset
Fix toolset for Windows nightly and release builds
2020-10-04 12:26:54 +02:00
asarium fbdcf7cf50 Fix toolset for Windows nightly and release builds 2020-10-03 21:16:04 +02:00
m!m dc977f18ba Merge pull request #2781 from asarium/scripting/hookVarStack
Use a stack for scripting hook variables
2020-10-03 20:54:15 +02:00
asarium f71a86f2db Use a stack for scripting hook variables
Previously, if a script called a function that called another scripting
hook, some hook variables might be removed. This was the case since
after executing the hook the code would remove the set hook variables
again. If these variables had the same name as previously set variables,
they would overwrite and corrupt the state the original script expected.

This was unexpected behavior for script writers so this puts values on a
stack and only adds or removes from the stack instead of overwriting
values. This should make the hook variable state consistent for scripts
even if scripting hooks are called indirectly.
2020-10-03 15:37:20 +02:00
Goober5000 83666a0660 Merge pull request #2779 from Goober5000/weapon_sparks
add No_impact_spew weapon flag
2020-10-03 09:31:34 -04:00
m!m 6b946ed857 Merge pull request #2776 from asarium/fix/2773
Fix GCC-10 warnings
2020-10-03 11:26:06 +02:00
m!m 56f51f58e7 Merge pull request #2780 from Goober5000/fix_kill_crash
fix CTD when running ship:kill() with no parameters
2020-10-03 09:51:20 +02:00
Goober5000 53ad0ea163 fix CTD when running ship:kill() with no parameters 2020-10-03 00:02:46 -04:00
Baezon 799fa27d36 clarity comment 2020-10-02 23:14:45 -04:00
Goober5000 672ad1a489 Merge pull request #2778 from Baezon/javelin-fix
Fix a CTD with Javelin missiles
2020-10-02 22:14:23 -04:00
Goober5000 18c93f2b5a add No_impact_spew weapon flag
If you want to make a weapon that doesn't generate smoke particles on impact.
2020-10-02 22:12:59 -04:00
Baezon 06dd153f80 v1 2020-10-02 16:11:40 -04:00
asarium b4350a1d1e Fix GCC-10 warnings
This fixes some warnings reported by GCC 10 and enables that compiler to
be used by our CI pipelines.

This fixes #2773.
2020-10-02 18:49:01 +02:00
Baezon 01cd5a34b9 travis 2020-10-02 12:04:45 -04:00
Goober5000 fa72fa463b Merge pull request #2774 from Goober5000/flag_fixes
fix flags in ships.tbl and weapons.tbl
2020-10-02 10:16:20 -04:00
Baezon 9b3905a4bb v1 2020-10-02 02:53:13 -04:00
Goober5000 15061d5daf fix flags in ships.tbl and weapons.tbl
When flags are parsed, they can be reset.  This is a problem for flags that are set based on lines elsewhere in the entry, so each table uses its own method to get around it.  However, not all flags used this method - particularly the new Has_display_name flag.  This brings the flag management up to date.
2020-10-02 00:53:33 -04:00
Goober5000 39d77d891c Merge pull request #2770 from Baezon/improve-docked-shockwave
Improve shockwave handling for docked ships
2020-09-30 20:58:47 -04:00
Goober5000 2c3ad93f82 Merge pull request #2772 from Goober5000/warpout_fix
fix several places where the wrong matrix function was used
2020-09-30 20:06:07 -04:00
Goober5000 2be97cfde9 fix several places where the wrong matrix function was used 2020-09-30 15:17:43 -04:00
m!m 3e226f85e0 Merge pull request #2768 from asarium/opengl/spirvShaders
Add support for using Vulkan GLSL code with OpenGL
2020-09-29 22:57:11 +02:00
Goober5000 5f4124ee83 Merge pull request #2771 from Goober5000/for_player
add for-players sexp
2020-09-27 10:40:52 -04:00
asarium 56dc373bb9 Add support for using Vulkan GLSL code with OpenGL
This is an effort to be able to use the same GLSL code for both Vulkan
and OpenGL. This is done by first compiling the Vulkan GLSL code to
SPIR-V and then using a custom tool (which uses SPIRV-Cross) to convert
that back into GLSL 1.50 compatible code.

The required tool will be downloaded by CMake when glslc is found in the
path. This is included in the Vulkan SDK. To avoid having a hard
dependency on this, the generated files are included in the VCS and are
only regenerated when glslc is found on the system.
2020-09-27 12:45:05 +02:00
Goober5000 bfbc1389ab add for-players sexp
Useful for multiplayer missions.  Lists all currently valid player ships in the mission.  Works in both singleplayer and multiplayer.
2020-09-26 22:38:20 -04:00
m!m a3a27e9ad3 Merge pull request #2735 from Baezon/beam-collide-improve
Improve beam collision optimization
2020-09-26 23:01:30 +02:00
m!m 94fd9051d1 Merge pull request #2769 from Baezon/no-shield-print
Suppress "Too many triangles in shield hit" log spam
2020-09-26 22:57:53 +02:00
Baezon 470327933f v1 2020-09-25 23:05:44 -04:00
Baezon 540d200bec doing two PRs on the same area at the same time as always confusing 2020-09-25 22:47:33 -04:00
Baezon 7f46a3868d keep get_widest function 2020-09-25 21:28:25 -04:00
Baezon 5b6dd4d452 travis 2020-09-25 21:28:25 -04:00
Baezon 3370adc918 cleanup 2020-09-25 21:28:25 -04:00
Baezon ed8a89b68e collision optimize 2020-09-25 21:28:25 -04:00
Baezon d6442a096b store width 2020-09-25 21:28:25 -04:00
wookieejedi 0a88d5068e Merge pull request #2765 from Baezon/no-player-mflash
Suppress muzzle flashes from the player (and add a flag to re-enable it)
2020-09-25 21:19:39 -04:00
Baezon 414ad4a553 v1 2020-09-25 20:40:58 -04:00
Baezon cf270771f0 re enable muzzle flashes flag 2020-09-25 13:59:15 -04:00
Baezon 3cf9bc250a v1 2020-09-25 13:58:07 -04:00
Goober5000 2791acbd0c Merge pull request #2766 from Baezon/finished-growing-flag
Put beam->finished_growing into beam->flags
2020-09-24 22:13:28 -04:00
m!m 350ace3952 Merge pull request #2756 from asarium/rocket/documentEnvironment
Give Lua libRockets documents their own environment
2020-09-24 21:19:39 +02:00
m!m cfbce2a6cf Merge pull request #2762 from asarium/cmake/embeddedFilesRefactor
Refactor embedded files CMake code
2020-09-24 21:11:01 +02:00
Goober5000 58a9075002 Merge pull request #2740 from Baezon/no-framerate-dependance
Remove turning framerate dependence for AI
2020-09-24 14:45:10 -04:00
Baezon ed87b158c2 v1 2020-09-24 14:42:49 -04:00
Baezon b7ceb29be9 clarity comments 2020-09-24 01:00:21 -04:00
Baezon 60f20d055c review changes 2020-09-24 01:00:21 -04:00
Baezon 82b8f1726e travis cleanliness appeasement 2020-09-24 01:00:21 -04:00
Baezon 86a63f10b8 no shadowing 2020-09-24 01:00:21 -04:00
Baezon 232035e45d handle shockwaves and renaming 2020-09-24 01:00:21 -04:00
Baezon 7accd387a3 v2 2020-09-24 01:00:21 -04:00
Baezon 58ce531ec6 v1
V2
2020-09-24 01:00:21 -04:00
Goober5000 fa5bbf8531 Merge pull request #2764 from Goober5000/turret_fix
make the scripted turret firing code a bit more robust
2020-09-23 22:55:48 -04:00
JohnAFernandez 2e9a6c8ad6 Merge pull request #2763 from wookieejedi/specify-weapons-ss-threshold-turrent-inaccuracy
Expose Weapons SS Damage Threshold for Turret Inaccuracy
2020-09-23 22:14:34 -04:00
MageKing17 4778c7bbcc Merge pull request #2741 from Baezon/beam-grow
Add beam 'growth' in addition to shrinkage
2020-09-23 18:54:01 -07:00
JohnAFernandez 4cdab81ebb Merge pull request #2761 from Baezon/improve-homeworld-warp
Improve Homeworld warp effect
2020-09-23 21:33:19 -04:00
Goober5000 df53e49abf make the scripted turret firing code a bit more robust
The scripted code previously didn't check to see if a weapon bank was valid before firing it, which could have led to memory problems and starting March 15 would actually crash the game.  This adds a few safety checks.
2020-09-23 21:24:41 -04:00
wookieejedi 65bf014693 and another syntax fix... 2020-09-23 16:36:21 -04:00
wookieejedi 13325ef81a one more cleanup 2020-09-23 16:24:57 -04:00
wookieejedi 74b3374fe6 fix syntax issue 2020-09-23 16:00:18 -04:00
wookieejedi 984ee93d75 Expose Weapons SS Damage Threshold for Turret Inaccuracy
This PR adds a table entry that allows modders to specify the damage threshold for when turrents become less accurate due to weapon subsystem damage. A Game table setting is easier to set once and tune, thus this PR allows that efficent exposure to the modder and does not require a large change or complex table entry.
2020-09-23 15:25:16 -04:00
Baezon 2efe876fbd #define -> const float, and adjusted_progress for stage 3 2020-09-23 13:15:46 -04:00
asarium 0f2787639b Refactor embedded files CMake code
I have been thinking about some shader related techniques for the Vulkan
renderer and for that we will need to add embedded files in a different
environment than they are right now since the actual shader code will
not be needed in the engine.

For this reason, I extracted the "default file" mechanism to be more
generic so that all that is necessary to include a file is to just call
a custom CMake command and the function keeps track of what needs to be
done.

Also, since the "generic" code has worked pretty well so far I see no
reason to keep around two systems which just increases the amount of
code we need to maintain. So, I just removed the windows exclusive
implementation. Now all platforms use the same "generic" way of
embedding files.
2020-09-23 13:38:54 +02:00
Baezon 8d7536855b fix HW warp orient (always follows the ship's) 2020-09-23 01:49:53 -04:00
Baezon 9cbbb96880 timing re-adjusted for MAXIMUM accuracy 2020-09-23 01:21:41 -04:00
Goober5000 b22d9ce3c8 Merge pull request #2760 from Goober5000/play_sound_type_safety
polish some SEXPs
2020-09-23 00:21:21 -04:00
Baezon d9913d5b9e v1 2020-09-22 23:26:14 -04:00
Goober5000 147be6815c polish some SEXPs
Update SEXP help regarding variable types, and also add them to the SEXP syntax checker.

Fixes #2758.
2020-09-22 22:06:14 -04:00
Goober5000 410ab1ee5e Merge pull request #2757 from Goober5000/loadout_memory_optimization
optimze memory usage by weapon loadout
2020-09-22 13:33:16 -04:00
Goober5000 46691badb8 CI stuff 2020-09-21 22:05:00 -04:00
Goober5000 5a3c8d262c optimze memory usage by weapon loadout
The weapon loadout arrays wasted a ton of memory in several ways.  First, only friendly fighters and bombers have weapon loadouts; most ship classes do not need this storage.  Second, as DahBlount noticed, only 8 bits are needed for the flags, while the fields were using standard 32-bit ints.  Third, there are currently 500 weapon types but most loadouts only provide a dozen or so options.

This refactors the loadout storage to keep a short vector of weapon-flag pairs for each bank, and the bank storage is allocated only when needed.  The new `allowed_weapon_bank` class provides `operator[]` implementations so that the new API is almost completely compatible with the old one.  The only things that require the new API are assignments, since `operator[]` is read-only.  (A writable `operator[]` would not be able to tell when a flag value of 0 should be stored or not.)
2020-09-21 16:54:34 -04:00
asarium 9d9083ab52 Give Lua libRockets documents their own environment
This gives every document their own environment instead of using the
global environment. Previously it was necessary to store variables in
the global namespace since otherwise they could not be accessed by event
listeners.

This creates a separate environment table for every document so that all
<script> blocks and event handlers share the same "global" environment.
2020-09-21 21:07:00 +02:00
JohnAFernandez 3384699086 Merge pull request #2712 from Goober5000/red_alert_multi_sexp_support
add multi support for red-alert sexp
2020-09-21 11:34:34 -04:00
JohnAFernandez a043a14d69 Merge pull request #2631 from notimaginative/fix_multi_red-alert
Make redalert missions work better in multi
2020-09-21 11:34:13 -04:00
JohnAFernandez ee5336ed42 Merge pull request #2755 from notimaginative/fix_multi_weapon_crash
Fix multi crash when ship has less than two primary weapons
2020-09-21 09:43:51 -04:00
JohnAFernandez 6be2c665f0 Merge pull request #2754 from TRBlount/fix/multilock_aspect_loss
Fix #2724
2020-09-21 01:36:25 -04:00
Taylor Richards 9ca02e9e1a Merge pull request #2753 from notimaginative/fix_reliable_socket_memory_error
Fix memory error which broke reliable sockets
2020-09-20 23:57:10 -04:00
Taylor Richards 21642d5b75 fix multi crash when ship has < 2 primary weapons 2020-09-20 22:26:23 -04:00
Tyler Blount fe5eff2cee Fix #2724 2020-09-20 19:05:42 -06:00
Taylor Richards 46bc4e2e8c fix memory error which broke reliable sockets 2020-09-20 20:49:25 -04:00
Goober5000 49858825ac Merge pull request #2737 from Goober5000/credits_update
update credits
2020-09-20 14:21:48 -04:00
Taylor Richards 83116bbd11 disable replay mission button on red alert brief when multi 2020-09-20 13:30:03 -04:00
Taylor Richards 7c3906da00 always consider loadout locked on red-alert 2020-09-20 13:30:03 -04:00
Taylor Richards fe3069b94b make sure clients can proceed to red-alert brief 2020-09-20 13:30:03 -04:00
Taylor Richards 6795e0a940 handle exiting red-alert brief properly on multi 2020-09-20 13:30:03 -04:00
Taylor Richards eacc91ac8e fix issues with red-alert + multi
- support sync state before entering mission
 - return to briefing for sync and stats saving
 - handle campaign progression properly
 - initialize net_player state properly (fixes #2560)
2020-09-20 13:30:03 -04:00
JohnAFernandez 27faf89baa Fix Change IFF Multi Sexp 2020-09-20 09:53:47 -04:00
Taylor Richards f5a2cae122 Merge pull request #2608 from notimaginative/ipv6
IPv6 support
2020-09-20 09:46:44 -04:00
Baezon c143f9f6ec copy paste error 2020-09-19 22:10:01 -04:00
Taylor Richards b14122425a use newer define for multicast group joining 2020-09-19 06:35:19 -04:00
asarium bda31cd84f Use different hoster for build log
transfer.sh shut down some time ago and the output of the Mac build
tools is completely useless.
2020-09-19 11:40:13 +02:00
asarium ac6ed66c45 Disable XP toolset 2020-09-19 10:32:29 +02:00
JohnAFernandez f5a8556e54 Fix special Char crash
When I wrote the original change to a vector instead of an array, I was working on the assumption that this section of code was parsed after some other code that had already made sure that the special_char_indexes vector was at least three entries.  Further testing has revealed this is not true, and this fix keeps it from crashing.
2020-09-17 16:06:09 -04:00
Goober5000 33b4f1b5cc Merge pull request #2748 from JohnAFernandez/Enhance-ai-check-to-fix-crash
Fix an ai check
2020-09-17 12:41:04 -04:00
JohnAFernandez ce9fa02bc3 Fix an ai check
Keep multi from crashing from an out of bound check when trying ti set up a formation for a respawning ship.
2020-09-17 07:49:15 -04:00
wookieejedi fa7ad6a764 Merge pull request #2747 from wookieejedi/countermeasure-script-hook
Add Scripting Hook `On Countermeasure Fire`
2020-09-16 17:11:13 -04:00
wookieejedi 167e1430ee Clarify doc and add countermeasure object to hook 2020-09-16 15:35:11 -04:00
wookieejedi e544e1d081 Update ship.cpp
This PR adds a scripting hook which triggers when a ship fires a countermeasure. It has two variables, the ship firing the countermeasure and the number of countermeasures remaining. I have tested and it works as expected. This new hook complements the preexistsing `On Secondary Fire` and `On Primary Fire` hooks.
2020-09-16 12:58:34 -04:00
Goober5000 9b3f45ea1c Merge pull request #2745 from Goober5000/frheadding
make fred popup match the conventional pitch/bank/heading
2020-09-15 21:14:52 -04:00
Goober5000 34da5093bf make fred popup match the conventional pitch/bank/heading 2020-09-15 13:27:05 -04:00
Baezon 1a6f01c8d8 copy paste error 2020-09-15 13:06:35 -04:00
Goober5000 8a3556b648 Merge pull request #2738 from Goober5000/file_fixes
fix getPath() and add getName()
2020-09-15 11:55:07 -04:00
Goober5000 d1af5ed467 shut up clang, this wasn't even part of the PR 2020-09-15 04:12:29 -04:00
MageKing17 ad8fc46224 Merge pull request #2743 from Goober5000/special_char_index_tweak
don't break the parser in Unicode mode
2020-09-14 23:45:28 -07:00
Goober5000 a485e29b24 use DIR_SEPARATOR_CHAR 2020-09-15 02:36:32 -04:00
JohnAFernandez 87de1d1d77 Remove Int3()'s from ai.cpp and aibig.cpp 2020-09-14 20:53:31 -04:00
JohnAFernandez 8d41f5bcc6 Replace INT3's in Freespace.cpp 2020-09-14 20:53:31 -04:00
Goober5000 460f00a23e don't break the parser in Unicode mode
If a mod is running in Unicode mode, ignore Special Character Index if the table happens to supply it.
2020-09-14 19:25:33 -04:00
Goober5000 472babbb30 Merge pull request #2725 from JohnAFernandez/fix-special-characters-correctly
Minor Refactor of Special Character Index Handling
2020-09-14 19:22:22 -04:00
Goober5000 30a0946e47 update cf_find_file_location based on Taylor's patch 2020-09-14 19:16:35 -04:00
m!m 2a90d1f823 Merge pull request #2717 from asarium/lua/serializer
Add Lua API for serializing values
2020-09-14 22:25:26 +02:00
m!m 8ce8c061b2 Merge pull request #2742 from asarium/github/codeowners
Add basic code owners file
2020-09-14 19:34:28 +02:00
Goober5000 b821dc5798 CI pointed out memory leaks, so let's just use SCP_string 2020-09-13 23:19:37 -04:00
Goober5000 ca2a9b8721 address feedback and use an alternate separator method 2020-09-13 17:02:56 -04:00
Goober5000 12fad41962 fix getPath() and add getName()
The getPath() function would crash if the id was -1.  Also, there was no function for getting the file name.
2020-09-13 17:02:56 -04:00
Goober5000 07b975ee76 Merge pull request #2739 from Goober5000/ship_types_scripting
add tb.ShipTypes
2020-09-13 12:27:19 -04:00
asarium b3e7d03d78 Add basic code owners file 2020-09-13 14:58:12 +02:00
Baezon f66bd71a21 v1 2020-09-13 02:44:31 -04:00
Goober5000 f4924971f7 patch ship type lookup 2020-09-13 02:10:41 -04:00
Goober5000 8b3b15b4b2 add tb.ShipTypes
Add ShipTypes as a collection to complement ShipClasses.

Also check the correct init variable.
2020-09-13 00:46:28 -04:00
asarium cf4fe8accc Add Lua API for serializing values
This can be used by script code for reliably storing Lua values without
having to build a custom serialization format.

The C++ code can also be used by other code modules that want to
serialize data. The new classes simply return a byte array with an
unspecified format.

At the moment this uses a plain JSON encoding but could be extended in
the future to include either compression or BSON encoding if necessary.
The format is future compatible by using a simple header to identify
different kinds of formats.
2020-09-12 14:28:16 +02:00
Goober5000 e451ac5a96 updates 2020-09-12 00:58:48 -04:00
Goober5000 b96ff92671 update credits 2020-09-12 00:16:16 -04:00
Goober5000 ebe9694dd0 Merge pull request #2736 from Goober5000/fix_display_name
fix display name
2020-09-11 23:44:03 -04:00
Goober5000 09af27d194 fix display name
PR #2718 introduced the Has_display_name flag, but for mission parsing, the parse object flags were cleared subsequent to their assignment.  This moves the flag reset earlier in the function.
2020-09-11 21:03:37 -04:00
JohnAFernandez e29c172f27 Call send_ship before destroying it to avoid a crash. 2020-09-11 08:34:56 -04:00
Goober5000 0104a27795 clean up fiction viewer dialog a bit
Rampage noticed that the dialog would save a fiction viewer entry in some cases even if there was no story file.  This makes the handling a bit more robust.
2020-09-10 22:29:20 -04:00
Goober5000 daf890c080 Merge pull request #2728 from Goober5000/collision_hitpos
add Hitpos as a hook variable for all collision hooks
2020-09-10 12:09:25 -04:00
JohnAFernandez 332183d2e6 Fix declation of waypoint function so it can be used 2020-09-10 01:16:38 -04:00
Goober5000 d61b12bbf1 Merge pull request #2719 from Baezon/ai-store-slotnum
Store and reuse formation object slotnum
2020-09-09 20:47:47 -04:00
Goober5000 de0a9ca9c1 add Hitpos as a hook variable for all collision hooks
Also slightly optimizes some of the hooks because the adding/removing of hook variables should be guarded by the same if() block that controls execution.
2020-09-09 20:04:58 -04:00
Baezon 779ef46e22 s'more tweaks 2020-09-09 19:12:20 -04:00
Goober5000 41d6a46062 Merge pull request #2723 from Baezon/extern-camera-fixes
Two small fixes to the external camera
2020-09-09 14:37:34 -04:00
Goober5000 0cfd11f458 Merge pull request #2726 from Goober5000/fix_lab_ctd
fix a lab CTD
2020-09-09 14:36:58 -04:00
JohnAFernandez 1edf617537 Minor Refactor of Special Character Index Handling
1. Stores the filename from the table Parser into the font struct so we can lookup fonts via their filename.
2. Allow "+Special Character Font:" to specify the first entry with the same filename's special character index for their own special character index, provide a default if not, and allow the moddert to specify them manually, but do not override already recorded values if the default is picked in order to protect retail behavior.
3. Vectorize Special Character Indexes, so that we don't have a table limit that will randomly crash FSO based on what table you happened to write! Woohoo!
2020-09-09 09:05:15 -04:00
Goober5000 2b8687ff6a fix a lab CTD
Only ships have subobjects.
2020-09-09 02:24:50 -04:00
Goober5000 9476a68579 Merge pull request #2722 from scp-fs2open/revert-2706-Get-rid-of-LCL_MAX_FONTS-limitation
Revert "Change special_char_indexes to a vector"
2020-09-08 22:10:20 -04:00
Baezon 5586718e00 review tweaks 2020-09-08 22:05:52 -04:00
Baezon cb0f3461aa v1 2020-09-08 21:42:42 -04:00
Goober5000 c5c65a7031 Merge pull request #2720 from Goober5000/wing_formation_tweak
make wing formation parsing a little more robust
2020-09-08 20:21:59 -04:00
Goober5000 7c2e0ff01e Merge pull request #2718 from Goober5000/fix_zero_length_display_name
support zero-length display names
2020-09-08 20:21:39 -04:00
Goober5000 885e26feb0 Revert "Change special_char_indexes to a vector" 2020-09-08 20:20:21 -04:00
Goober5000 4bf6aaeddc make wing formation parsing a little more robust 2020-09-08 17:31:00 -04:00
Baezon bf4cc21951 v1 2020-09-08 03:05:42 -04:00
Goober5000 f6ca9cddfa support zero-length display names
Previously the code assumed that an empty display name was the same as no display name.  This adds a flag so that empty names are allowed.
2020-09-07 14:38:16 -04:00
Goober5000 4a218ab17a Merge pull request #2706 from JohnAFernandez/Get-rid-of-LCL_MAX_FONTS-limitation
Change special_char_indexes to a vector
2020-09-05 12:28:17 -04:00
Goober5000 0efe912daf Merge pull request #2710 from Goober5000/display_name_save_fix
don't save display name if it's auto-generated
2020-09-05 12:20:18 -04:00
Goober5000 2a77e8300d Merge pull request #2702 from Goober5000/prevent_duplicate_intel
prevent duplicate entries in the Intel room
2020-09-05 12:20:02 -04:00
Goober5000 9b750231d8 Merge pull request #2714 from Baezon/fix-formation-object
Fix a bug with form-on-wing on a object outside the wing
2020-09-05 03:30:17 -04:00
Goober5000 b51b03fca9 Merge pull request #2713 from Baezon/better-extern-camera
Add some quality of life improvements to external camera
2020-09-05 02:02:34 -04:00
Baezon 6e4ee916a0 aip->wingnum instead of shipp->wingnum 2020-09-05 01:38:53 -04:00
Baezon 62465a24f5 swap wingnum and index, moar MAX_SHIPS_PER_WING 2020-09-04 23:29:56 -04:00
Baezon c225cf7b90 autopilot argument 2020-09-04 23:09:59 -04:00
Baezon 303ee3fca1 const objp for object_get_model 2020-09-04 22:29:31 -04:00
Baezon d3eacb1a0f v1 2020-09-04 21:35:40 -04:00
Baezon c2cd958ce6 unused frame_times 2020-09-04 18:04:51 -04:00
Baezon 4df4987b81 v2 2020-09-04 17:36:53 -04:00
Goober5000 68888ef857 made this a little more robust 2020-09-04 13:34:32 -04:00
Goober5000 ceac6ddff2 add multi support for red-alert sexp
This makes the red-alert SEXP execute properly in multiplayer.

Note, this is just the SEXP.  Multi-knowledgeable people will need to evaluate `red_alert_start_mission` and `red_alert_maybe_move_to_next_mission` to make sure those functions will work properly in multiplayer.
2020-09-04 13:15:49 -04:00
Goober5000 1a32680440 patch tests 2020-09-04 01:12:20 -04:00
Goober5000 4e61c16bcd prevent duplicate entries in the Intel room 2020-09-04 01:12:20 -04:00
Goober5000 2f69429ba9 Merge pull request #2703 from Goober5000/audio_pause_unpause_for_f2
handle audio pause/unpause for all of the F2 screens
2020-09-04 00:55:03 -04:00
JohnAFernandez 50e6756bf7 Merge pull request #2707 from Goober5000/fix_mainhall_name
fix main hall indexing in modular tables
2020-09-04 00:32:02 -04:00
JohnAFernandez 69c0954198 Change special_char_indexes to a vector
LCL_MAX_FONTS is kept around just to facilitate parsing of the hardcoded table
2020-09-04 00:03:44 -04:00
Goober5000 b0776a3afa Merge pull request #2711 from asarium/fix/hookVars
Allow overwriting hook variables
2020-09-03 16:09:10 -04:00
Baezon f60e0950e7 v1 2020-09-03 15:24:49 -04:00
asarium 492fe461b0 Allow overwriting hook variables
The previous version used the wrong function for the map and so values
added later were not written to the map and so not available to Lua.

This fixes that by using the simple array operator.
2020-09-03 20:24:22 +02:00
Goober5000 774421a7f4 Merge pull request #2709 from notimaginative/fix_last_pilot_multi
properly set multi flag when using last multi pilot
2020-09-03 09:28:46 -04:00
Goober5000 4de0d8f7e9 don't save display name if it's auto-generated
Follow-up to PR #2674.  The auto-generated display name shouldn't be saved to the mission file.
2020-09-03 09:24:22 -04:00
Goober5000 2251ff5eb9 Merge pull request #2708 from Flip-Sandwich/master
removes int3 in turret firing code
2020-09-03 07:47:10 -04:00
faceman 96fd3889bc changes turret code to log instead of int3 when turret tries to fire on protected ship 2020-09-03 19:41:46 +10:00
Taylor Richards 51692f185b properly set multi flag when using last multi pilot
fixes following cmdline options:
 -connect
 -startgame
 -almission
2020-09-03 05:38:34 -04:00
Goober5000 ce3ca5cf0b Merge pull request #2701 from JohnAFernandez/Fix-miscelaneous-Multi-Bugs
Fix Two Multi Crash Points
2020-09-01 22:39:07 -04:00
Goober5000 9d15b2b02c fix main hall indexing in modular tables
This is a follow-up to #2675 which fixes the main hall naming for halls which have custom names and are not the first resolution.
2020-09-01 21:17:58 -04:00
JohnAFernandez 8bad12d8a2 Fix Two Multi Crash Points 2020-09-01 21:01:35 -04:00
Goober5000 0e1dfa7ab0 Merge pull request #2692 from Baezon/species-wing-positions
Allow for arbitrary wingmate relative positions
2020-09-01 14:38:23 -04:00
Goober5000 91502032e4 Merge pull request #2704 from chief1983/sun/gc-sections-workaround
Don't add --gc-sections linker arg on SunOS
2020-09-01 14:37:58 -04:00
Taylor Richards 3e04e955a4 fix build issues on FreeBSD 2020-09-01 14:36:10 -04:00
Goober5000 8964af428f Merge pull request #2705 from JohnAFernandez/Fix-Shockwave-Damage-Application
Fix 2526 and Add Two Game_setting.tbl flags
2020-09-01 09:02:54 -04:00
JohnAFernandez 6ba811ec6c Fix 2526 and Add Two Game_setting.tbl flags
Fixes 2526 by making the array a vector and also adds a Shockwaves always damage bombs game_setting.tbl setting and a Shockwaves_consistently_apply_damage game_settings.tbl setting.  The second one keeps bombs and asteroids from being hit more than once by shockwaves, like ships do!
2020-09-01 01:47:33 -04:00
Cliff 02cdcae848 gc-sections is misbehaving on SunOS since #2669, so skip the part that adds it to restore old behavior unless a proper fix can be found. 2020-08-31 21:09:07 -05:00
Goober5000 acb0c4cfd8 fix comment 2020-08-31 18:59:38 -04:00
Goober5000 48ea203b7b handle audio pause/unpause for all of the F2 screens
This is a follow-up to #2100.  Don't pause/unpause the audio if we are moving from/to the Control Config or HUD Config screens.  We could hit F2 and move around a bit before resuming the game, so we don't want the audio to resume until we're ready.
2020-08-31 18:02:28 -04:00
Goober5000 782898fba9 mmf 2020-08-31 16:59:58 -04:00
Goober5000 381df6eeb8 formation should now work in fred. 2020-08-31 16:21:30 -04:00
Goober5000 bf949f1ff0 move formations from species_defs.tbl to ships.tbl 2020-08-31 15:44:02 -04:00
Goober5000 9314781932 remove vestigial fred formation code (!) 2020-08-31 15:43:43 -04:00
Goober5000 d82dc93457 update fred dialog rc 2020-08-31 14:48:35 -04:00
Baezon a73c1de7b9 size_t MAX_SHIPS_PER_WING 2020-08-31 00:06:41 -04:00
Goober5000 a710aac4d4 Merge pull request #2593 from JohnAFernandez/Fix-Broken-Could-Be-Player_AI
Change MP Initial Player Wing Ship Behavior to Match SP
2020-08-30 22:01:53 -04:00
Goober5000 d5a7acc4a5 Merge pull request #2700 from Goober5000/more_vector_scripting
add some vector scripting functions
2020-08-30 13:26:45 -04:00
Shivansps 1239ec47e3 Smart pointers and disabled some messages
Added smart pointers to bsp_in, bsp_out, sldc_tree and slc2_tree as requested.

I also changed the #error to #pragma message in a attempt to remove the false positive error.

Also did minor code indent fixes-
2020-08-30 13:45:43 -03:00
Goober5000 67ea05fefd add some vector scripting functions
createRandomVector
perturb (for vectors)
perturb (for matrixes)
randomInCircle
randomInSphere
2020-08-30 09:36:24 -04:00
Goober5000 2fee91cd4c Merge pull request #2674 from Goober5000/display_name
refactor display_name for ships, ship classes, and weapon classes
2020-08-30 09:21:32 -04:00
m!m 01f11470f3 Merge pull request #2699 from JohnAFernandez/Fix-Multi-Loadout-Bug
Fix the loadout memory bug
2020-08-30 14:55:44 +02:00
Baezon 1fc32dacf5 max ships in wing -1 instead of 5 2020-08-30 00:12:01 -04:00
Taylor Richards d30c0a2024 fix various errors from travis/appveyor 2020-08-30 00:03:14 -04:00
Taylor Richards ff01dc02a7 adjust data type to avoid header conflict 2020-08-30 00:03:14 -04:00
Taylor Richards e401f96cc3 add option to prefer IPv4 DNS addresses 2020-08-30 00:03:14 -04:00
Taylor Richards 9bb9aedc2a add a more robust filter for traffic from ourselves 2020-08-30 00:03:14 -04:00
Taylor Richards dd376b19d9 handle IPv4+IPv6 capable machines in a better way 2020-08-30 00:03:14 -04:00
Taylor Richards 52721dec06 report whether psnet socket is IPv6-only or dual-stack 2020-08-30 00:03:14 -04:00
Taylor Richards 459263b35f fix issues with reliable socket logging
- better error handling for ip string
 - port number in proper byte order
 - anonymize ip address
2020-08-30 00:03:14 -04:00
Taylor Richards 72dd631520 anonymize logged IP addresses 2020-08-30 00:03:14 -04:00
Taylor Richards 83d6d0fd53 bind psnet socket to any address
fixes issue where an IPv6 internet connection would fail
to connect properly if socket is only bound to a local
IPv4 interface
2020-08-30 00:03:14 -04:00
Taylor Richards 3e1b90b8c2 support IPv6 servers from game tracker 2020-08-30 00:03:14 -04:00
Taylor Richards 01ee4d077b make sure we are dual-stack by default (everywhere else) 2020-08-30 00:03:14 -04:00
Taylor Richards 90dbc8f2c3 deal with compiler errors and warnings on Windows 2020-08-30 00:03:14 -04:00
Taylor Richards 426b032882 clean up broadcast_game_query() 2020-08-30 00:03:14 -04:00
Taylor Richards e5044ee6ec port cftp to IPv6 2020-08-30 00:01:00 -04:00
Taylor Richards cff9cdc57d port chttpget to IPv6 2020-08-30 00:01:00 -04:00
Taylor Richards e06026f622 port PXO chat client to IPv6 2020-08-30 00:01:00 -04:00
Taylor Richards db0d0efd55 port PXO tracker client code to IPv6 2020-08-30 00:01:00 -04:00
Taylor Richards 92be33ad9c first pass at IPv6 support 2020-08-30 00:01:00 -04:00
Goober5000 46f410b921 Merge pull request #2698 from EatThePath/free-flight-rename
Renamed free flight speed related tag and variable for clarity and safety
2020-08-29 21:51:26 -04:00
Baezon 518c60dd08 review fixes 2020-08-29 21:50:42 -04:00
JohnAFernandez 143ce0da44 Fix the loadout memory bug 2020-08-29 21:34:02 -04:00
Goober5000 c3febbe01b Merge pull request #2687 from Goober5000/various_colgroup_fixes
various collision group fixes
2020-08-29 18:11:55 -04:00
Goober5000 f756b2a353 Merge pull request #2686 from Baezon/axial-turnrate-differences
Add "$respect ship axial turnrate differences:" flag (and fix a bug with 2673)
2020-08-29 16:49:14 -04:00
Baezon 67d1135c4f cast size() to int 2020-08-29 14:48:37 -04:00
Goober5000 8f7fcc0387 Merge pull request #2683 from TaGenius/feature/qtShipedit
Add ShipEditor to QtFred
2020-08-29 14:34:14 -04:00
Baezon 0aa0c80af8 more than one formation 2020-08-29 14:32:49 -04:00
David Gibson c38b989bb7 Renamed free flight speed related tag and variable for clarity and safety 2020-08-29 13:20:51 -05:00
Goober5000 6f774ccab1 various collision group fixes
Collision groups as previously coded were unusable due to Lua 5.1's lack of support for bitwise operators.  This fixes that deficiency in two ways:
1) Objects now have the functions `addToCollisionGroup` and `removeFromCollisionGroup`
2) An `evaluateNumericSEXP` function has been added for returning SEXP results as numbers (so that the bitwise SEXP operators can be used)
2020-08-29 13:49:36 -04:00
Goober5000 3d734948da Merge branch 'master' into display_name 2020-08-29 13:47:21 -04:00
Goober5000andm!m 05044290df Update code/scripting/api/objs/ship.cpp
Co-authored-by: m!m <[email protected]>
2020-08-29 13:45:30 -04:00
m!m 415151fddc Merge pull request #2641 from EatThePath/free-flight-restoration
Restoring the free flight speed missile table value to functioning
2020-08-29 17:10:07 +02:00
m!m 6953c6a3f5 Merge pull request #2585 from asarium/build/improvePCH
Add pstypes.h to precompiled header
2020-08-29 16:46:55 +02:00
m!m 382f2bdcd2 Merge pull request #2678 from asarium/lua/betterHookVars
Improve scripting hook variable system
2020-08-29 14:20:11 +02:00
Fabian Woltermann 44345fd71c Merge pull request #2696 from The-E/fix/light_from_turret_fired_weapons
Allow non-beam weapons fired from capships to cast lights
2020-08-29 12:54:34 +02:00
asarium b6dc287427 Add pstypes.h to precompiled header
At least on my system that saved ~25% of the compile time (2:01 to 1:33)
so it appears that this is indeed something that help compile
performance.

Also does some house cleaning by using the new PCH command of CMake if
it is available which reduces our dependencies.
2020-08-29 11:26:16 +02:00
asarium 2303785717 Improve scripting hook variable system
The previous system was kind of hacky and made things a bit inflexible.
This improves that system quite a bit and also adds unit tests for the
hook variable functionality.
2020-08-29 10:27:41 +02:00
Fabian Woltermann b01c6d2a82 Weapons fired from turrets have their group_id set to -1 by default and thus would never actually cast any lights 2020-08-29 09:05:08 +02:00
Fabian Woltermann 4f27585878 Merge pull request #2695 from Goober5000/debris_list_fix
handle Hull_debris_list for dynamic debris
2020-08-29 09:04:45 +02:00
Goober5000 d7d986f920 a bit of cleanup, and we only need to run the soft limit check once 2020-08-29 00:28:05 -04:00
Goober5000 eefbc543a0 handle Hull_debris_list for dynamic debris
With dynamic debris, as soon as the Debris vector was reallocated it invalidated the `prev` and `next` pointers.  I figured out how to dispense with the actual list entirely, since we mainly need to know how many hull debris pieces there are and whether an individual piece is on the "list".

This is a follow-up to #2649.
2020-08-29 00:18:39 -04:00
Goober5000 32cad9c1ec Merge pull request #2694 from Goober5000/more_debris_sounds
add more debris sounds
2020-08-28 17:49:45 -04:00
Goober5000 bdf7b23c3a Merge pull request #2693 from Goober5000/case_insensitive_sound_lookup
make sound lookup case-insensitive
2020-08-28 14:33:57 -04:00
Goober5000 1913d8cde2 add more debris sounds
Sounds for debris collision and explosion.
2020-08-28 12:50:40 -04:00
Goober5000 20913a5a90 Merge pull request #2675 from Goober5000/main_hall_override
add the ability to override main halls with modular tables
2020-08-28 11:44:37 -04:00
Goober5000 41df46a14e make sound lookup case-insensitive 2020-08-28 10:32:24 -04:00
Goober5000 9816a80b66 Merge pull request #2681 from Goober5000/more_for_counter_sexps
add for-ship-team and for-ship-species sexps
2020-08-28 09:49:03 -04:00
Goober5000 71ce8229d5 Merge pull request #2682 from Goober5000/fix_name_alignment
fix alignments in the hud gauge parsing
2020-08-28 09:37:29 -04:00
Baezon c1a2cc3959 v1 2020-08-28 00:50:49 -04:00
Shivansps eb1814e303 SLC2 and POF version 2118 support
Changed SLDC system to SLC2, this replaced the char at the beginning of the node for an int in order for the tree to be aligned.
Added BSP_Defpoints data alignment and SLDC to SLC2 conversion for pof version < 2118.
2020-08-27 20:10:29 -03:00
Baezon 2501b178d7 squash flag arguments and handle formation flying better 2020-08-27 16:50:55 -04:00
Goober5000 64f7b19ca0 Merge pull request #2690 from TRBlount/fix/multilock_ai_lock_set
Properly fix #2685
2020-08-27 16:38:16 -04:00
Cranston 2a669de730 Fix Clang
SOme More

Maybe The Last?

Workaround for false positive
2020-08-27 21:21:11 +01:00
Cranston f08433c106 More Linux FIxes and Name Labels/Layouts
Why is GCC So Fussy?
2020-08-27 21:20:53 +01:00
Cranston 2f4e052cd8 Main Dialog Complete
Try and Fix non windows compile errors

Fix Linux complete error(Hopefully)

More Linux fixes

Nearly There

Maybe?

Why were these in the original? They're never used?
2020-08-27 21:20:04 +01:00
Cranston 697eba8389 Add All form controls 2020-08-27 21:20:00 +01:00
Cranston 7af1eefa2b Enable/Disable Ship UI 2020-08-27 21:19:59 +01:00
Cranston eba1bd9fe6 Initial QTFred Ship Editor
Initial QTFred Ship Editor. Ui is nearly done first column has it core code
2020-08-27 21:19:59 +01:00
Goober5000 82292e4e2b Merge pull request #2679 from Goober5000/misc_enhancements
miscellaneous scripting and ship-destruction enhancements
2020-08-27 13:54:26 -04:00
Goober5000 321a67521f Merge pull request #2684 from Goober5000/some_fred_tweaks
Some fred enhancements
2020-08-27 13:54:10 -04:00
Tyler Blount a8148940be Properly fix #2685 2020-08-27 11:08:31 -06:00
Goober5000 1ce3680259 Merge pull request #2688 from TRBlount/fix/multilock_ai_lock_set
Set ai_info lock variable if the player has any lock slots firing
2020-08-27 12:59:17 -04:00
Tyler Blount c2e9c99ab5 Set ai_info lock variable if the player has any lock slots firing 2020-08-27 00:22:37 -06:00
Goober5000 19922ebf77 put the monitor tracing statements in a better spot 2020-08-27 01:35:02 -04:00
Baezon 6476596b7e less sips, adjusted slow_bank 2020-08-27 00:21:33 -04:00
Baezon 9abc253023 v1 2020-08-26 23:27:34 -04:00
Goober5000 5c19aebf16 add cloning in-place 2020-08-26 00:21:30 -04:00
Goober5000 ef93caa87c update menus, clarify some help stuff, reorder some stuff, get the dock move option working 2020-08-25 18:05:07 -04:00
Goober5000 d8c29faf1b let's try it this way 2020-08-25 17:15:10 -04:00
Goober5000 a606731c40 shut up, clang 2020-08-25 15:11:23 -04:00
Goober5000 1deaa36e07 fix alignments in the hud gauge parsing
Admiral Nelson led me to discover that the HUD gauges expected "right" or no string at all for the gauge alignment.  I added basic recognition of LEFT and RIGHT alignment.  Someone more familiar with the HUD than me can flesh it out more.
2020-08-25 14:52:56 -04:00
Goober5000 a3c32d929f add for-ship-team and for-ship-species sexps
This builds on the previous for-ship-class and for-ship-type sexps.
2020-08-25 13:25:42 -04:00
Goober5000 a19e163a32 Merge pull request #2680 from Baezon/epsilon-fix
Fix usage of float instead of int epsilon
2020-08-25 12:26:37 -04:00
Baezon 8ac2568a7b derp 2020-08-25 00:46:00 -04:00
Goober5000 13bb92348f Merge pull request #2640 from Baezon/orthogonalize
Improve vm_orthogonalize_matrix safety
2020-08-25 00:42:25 -04:00
Goober5000 afc2e51327 Merge pull request #2668 from Baezon/forward-matrix-interpolate
Overhaul forward and matrix_interpolate
2020-08-25 00:40:50 -04:00
Baezon dc413f2168 history comments 2020-08-24 01:01:37 -04:00
Baezon 32665e0028 overshoot padding 2020-08-24 00:50:42 -04:00
Baezon 132bcda055 comments for old names 2020-08-24 00:50:42 -04:00
Baezon 338e049cb1 renaming of functions 2020-08-24 00:50:42 -04:00
Baezon 29b30ab7ad just about ready 2020-08-24 00:50:42 -04:00
Baezon d5b70260e7 almost there 2020-08-24 00:50:00 -04:00
Baezon 0fada393fc wip
version 1

version 2
2020-08-24 00:50:00 -04:00
Baezon c5cf8621a2 expose maybe_normalize and use machine epsilon 2020-08-24 00:11:20 -04:00
Goober5000 d8012d4ff0 miscellaneous scripting and ship-destruction enhancements 2020-08-23 20:44:25 -04:00
David Gibson 69b5f3feb1 Addressed review feedback 2020-08-23 17:23:19 -05:00
Goober5000 2444115b80 Merge pull request #2673 from Baezon/ai-turning-fix
Fix AI banking when in formation
2020-08-23 16:56:32 -04:00
Goober5000 114b0198c3 Merge pull request #2676 from TRBlount/fix/heat_subsys_target
Set target info correctly if the weapon is a HEAT seeker
2020-08-23 16:41:05 -04:00
Goober5000 7bd46265ec Merge pull request #2677 from Goober5000/hook_variable_tweak
temporary hack to increase flexibility of hook variables
2020-08-23 16:21:43 -04:00
Goober5000 788245c33c temporary hack to increase flexibility of hook variables
This allows the coder to test for the existence of a hook variable by comparing it to `nil`.  The engine will currently error out and crash if you try to access a nonexistent table field, which is useful for catching typos, but has the disadvantage of disallowing a perfectly reasonable Lua coding practice.  So this change checks whether the missing field is part of `HookVariables`, and if so, rather than throwing an error, it just prints a message to the log.
2020-08-23 14:18:10 -04:00
Tyler Blount 85a0e92a4f Set target info correctly if the weapon is a HEAT seeker 2020-08-22 22:22:58 -06:00
Goober5000 77bac7a10f Merge pull request #2586 from Baezon/swamers-lead
Add '$Swarmers Lead Targets:' to game_settings.tbl
2020-08-22 08:38:28 -04:00
Fabian Woltermann 1012420370 Merge pull request #2664 from asarium/vulkan/mooooooreSetup
Add more Vulkan setup code
2020-08-22 11:10:14 +02:00
Goober5000 fc786b0473 Merge branch 'master' into swamers-lead 2020-08-21 22:50:25 -04:00
Goober5000 8999a9d633 add the ability to override main halls with modular tables
This adds full modular table support to mainhall.tbl, allowing subsequent tables to override previous main halls, and enabling use of the +nocreate option.
2020-08-21 20:56:59 -04:00
Goober5000 ea32b7ba2e Merge pull request #2667 from Goober5000/overlay_bump
make help overlays dynamic
2020-08-21 19:47:31 -04:00
Goober5000 0bfe80a4ec NULL to nullptr 2020-08-21 11:55:09 -04:00
Goober5000 6c1d29c3ed Merge pull request #2672 from rfht/master
clang 10 build: fix std::unique_lock<Mutex>::unique_lock syntax
2020-08-21 11:48:45 -04:00
Goober5000 10d2f8001c qtfred 2020-08-21 01:03:33 -04:00
Goober5000 3b2af702f7 refactor display_name for ships, ship classes, and weapon classes
Several things going on here:
1) refactor `get_display_string()` to `get_display_name()` to be more precise
2) likewise, refactor `alt_name` to `display_name`
3) automatically generate display names when parsing the ship, ship class, and weapon class for the first time
4) remove the on-the-fly truncation of names with hash symbols

Basically this subsumes the `end_string_at_first_hash_symbol` logic into the display name.  Rather than truncate the name every time it's displayed, truncate it once when it's parsed.  This takes advantage of the previous display name infrastructure, since display names are a superset of the case of truncating the hash symbol.

This also has the benefit of now allowing hash symbols within display names.  When updating Destiny of Peace, I noticed that "Lockheed Shuttle #4" would no longer display properly; and it was not previously possible to fix this even with display names.

I could pull out the `get_display_string()` and `alt_name` renaming into a separate PR if desired.
2020-08-21 00:15:38 -04:00
Baezon ad6e5f9289 nullptr 2020-08-21 00:06:34 -04:00
Baezon 2d1325c9d2 clean up unused variables 2020-08-20 21:28:59 -04:00
Baezon 0857f67875 v1 2020-08-20 20:50:04 -04:00
thfrwn 55a388f96b try_lock -> try_to_lock to fix clang 10 build 2020-08-20 11:37:44 -06:00
asarium fbdb25a10d Add more Vulkan setup code
This adds the Vulkan code for choosing a physical device, creating a
logical device from that and then initializing a swap chain.

This also contains code for filling out the graphics API pointers with
stub functions so that the API functions can be developed gradually.
These changes allow FSO to "run" with Vulkan but nothing is rendered
yet.
2020-08-20 19:08:02 +02:00
m!m 72a853cd39 Merge pull request #2669 from asarium/build/incrementalLinking
Improve Linux linking performance
2020-08-20 19:02:07 +02:00
MageKing17 148392023f Merge pull request #2670 from MageKing17/cleanup/hudartillery-parse-error-reporting
Improve error reporting related to SSM strikes.
2020-08-19 21:21:28 -07:00
Goober5000 b66620e974 Merge pull request #2671 from TRBlount/fix/multilock_snd_loop
Fix missile track loop playing infinitely
2020-08-19 23:57:03 -04:00
Tyler Blount 70bf31fbf6 Fix missile track loop playing infinitely 2020-08-19 20:20:26 -06:00
MageKing17 54f276c6be Improve error reporting related to SSM strikes.
First, in hudartillery.cpp, change some errors to warnings (actually error_display(1, ...) to error_display(0, ...), but same difference).

Second, change a Warning to an error_display(0, ...), and make it actually name the SSM strike instead of just reporting the name of the weapon it's using.

Third, do the weapon_info_lookup() earlier so we can use error_display() to point to the right line, and tell the modder that an invalid weapon invalidates the entire SSM strike (instead of just silently discarding the whole thing at the end).

Finally, in weapons.cpp, change validate_SSM_entries() to mention if Ssm_info is empty (instead of, say, telling the modder that the index needs to be between 0 and 4294967295—or, rather, -1 expressed as an unsigned 32-bit integer, since Ssm_info.size() - 1 is, indeed, -1 when the vector is empty).
2020-08-19 17:08:02 -07:00
asarium 5e1615da58 Improve Linux linking performance
This does two things:
 1. Use thin archives which speeds up static library creation by only
    storing references to the object files instead of copying them all
 2. Allow to use the gold linker with GCC along with an option for
    incremental linking. Since this is undesirable for non-development
    builds it is disabled by default.
2020-08-19 21:16:36 +02:00
Goober5000 0a35d257ca Merge pull request #2665 from TRBlount/fix/multilock_banks
Don't trigger ship_start/stop_secondary_fire assert on empty bank
2020-08-19 14:54:31 -04:00
Tyler Blount 1edba8d795 Handle empty banks correctly 2020-08-19 11:11:13 -06:00
Goober5000 cb76db0402 Merge pull request #2663 from Goober5000/intel_stuff
make Intel stuff dynamic
2020-08-18 19:42:06 -04:00
Goober5000 abed6f503e make help overlays dynamic
With a lot of main hall entries, the MAX_HELP_OVERLAYS limit will get hit.  Pretty simple to just make it dynamic.
2020-08-18 17:12:51 -04:00
Goober5000 8ff676ab1b Merge pull request #2612 from JohnAFernandez/Fix-Client-MP-Campaign-Crash
Patch a Crash Point
2020-08-18 15:10:06 -04:00
Goober5000 9144e161de address feedback and fix tests 2020-08-18 14:53:01 -04:00
Goober5000 88d397a6fc test stuff 2020-08-18 14:53:01 -04:00
Goober5000 1534cc9b2e and fred 2020-08-18 14:53:01 -04:00
Goober5000 b6998a3e21 make Intel stuff dynamic
1) Make Intel_info a vector instead of a fixed-size array
2) Make intel descriptions SCP_string so they can be any length
2020-08-18 14:53:01 -04:00
Goober5000 097b7714a2 Merge pull request #2666 from Goober5000/localization_fix
synchronize localization
2020-08-18 14:52:17 -04:00
Goober5000 e5dec42773 fix tests 2020-08-17 22:03:36 -04:00
Goober5000 cc9733760d match case-insensitive comparison 2020-08-17 21:25:25 -04:00
Goober5000 012ec2ac7a fix localization synchronization
Back in PR #2390, I fixed translation behavior in `lcl_ext_localize_sub` for SCP_string, but neglected to also fix it for `char*`.  This PR remedies that.

I also added `!=0` to the string compare to match the `!=0` used with `strcmp`.
2020-08-17 21:10:48 -04:00
Tyler Blount 4e5631ef70 Merge pull request #2660 from scp-fs2open/revert-2658-revert-2652-update_dds_utils
Revert "Revert "Update DDS Utilities to DX10 Standard""
2020-08-17 16:55:28 -06:00
Goober5000 bedc199dbd Merge pull request #2662 from Goober5000/dockpoint_warning
add warning for duplicate dockpoints
2020-08-17 13:11:06 -04:00
wookieejedi 5c1d49b561 Merge pull request #2622 from Baezon/second-order-lead
Allow for second-order lead indicator prediction
2020-08-17 12:49:44 -04:00
Goober5000 8f469dd00c add warning for duplicate dockpoints
Just for sanity's sake.  This just displays a Warning without modifying the dockpoint name.  I considered an nprintf but figured a Warning was more appropriate.
2020-08-17 00:49:23 -04:00
Tyler Blount 0b3ba445ea Fix WinAPI warnings 2020-08-16 17:35:31 -06:00
Tyler Blount c3c323acd6 Revert "Revert "Update DDS Utilities to DX10 Standard"" 2020-08-15 14:13:11 -06:00
m!m 4362af668a Merge pull request #2656 from asarium/build/optionalOpenGL
Make the OpenGL backend an optional component
2020-08-15 22:06:55 +02:00
Tyler Blount d789be22e3 Merge pull request #2658 from scp-fs2open/revert-2652-update_dds_utils
Revert "Update DDS Utilities to DX10 Standard"
2020-08-15 12:54:11 -06:00
Tyler Blount 5779117e30 Revert "Update DDS Utilities to DX10 Standard" 2020-08-15 12:52:25 -06:00
Tyler Blount 82280b472b Merge pull request #2652 from TRBlount/update_dds_utils
Update DDS Utilities to DX10 Standard
2020-08-15 12:47:49 -06:00
Goober5000 d284ba7241 Merge pull request #2657 from Goober5000/ship_create_protecc
ship-create protecc
2020-08-15 13:16:20 -04:00
m!m bac4d07469 Merge pull request #2655 from asarium/fix/adeDocMemLeak
Fix memory leak in scripting documentation
2020-08-15 12:41:46 +02:00
Tyler Blount 376e67b9ce Fix CI errors 2020-08-14 15:30:06 -06:00
Goober5000 1f4ff04890 handle SEXP_NAN_FOREVER 2020-08-14 16:25:11 -04:00
Goober5000 e4cd5675d0 handle SEXP_KNOWN_* 2020-08-14 15:53:02 -04:00
Tyler Blount ccb6bdc08d Make capability system outputs user friendly 2020-08-14 13:15:47 -06:00
Tyler Blount d35199e5bb Add system for checking mod required rendering features 2020-08-14 11:58:38 -06:00
asarium 4568172287 Make the OpenGL backend an optional component
This can be used for producing even leaner builds for standalone
servers. It also provides a nice architecture verification since now
using internal OpenGL functions will cause a compilation or linking
failure.
2020-08-14 18:52:14 +02:00
asarium dc0e5713e3 Fix memory leak in scripting documentation 2020-08-14 18:38:22 +02:00
Tyler Blount 613913f10f Fix clang-tidy errors 2020-08-14 10:35:28 -06:00
Goober5000 c099ca1abc Merge pull request #2654 from Goober5000/luasexp_soundentry
add LuaSEXP support for soundentry (OPF_GAME_SND)
2020-08-14 11:45:43 -04:00
Goober5000 49e6289d38 Merge pull request #2653 from Goober5000/buffer_fix
use SCP_string instead of fixed buffer
2020-08-14 11:43:49 -04:00
Goober5000 b6b7487db1 add LuaSEXP support for soundentry (OPF_GAME_SND) 2020-08-14 01:18:34 -04:00
Goober5000 8cde06370a Merge pull request #2634 from Baezon/species-class-multilock
Allow multilock missiles to restrict lock based on class or species
2020-08-14 00:46:55 -04:00
Goober5000 cf42e1db68 use SCP_string instead of fixed buffer
With very long mods, this error message can overflow the buffer.  So I changed it to a SCP_string.
2020-08-14 00:07:16 -04:00
Tyler Blount 94f3e1ec77 BC7 now loads correctly
Includes changes to bitmap flags and compiler related fixes
2020-08-13 21:51:11 -06:00
Tyler Blount 2ba7e339b5 Update GLAD and remove old headers 2020-08-13 21:51:11 -06:00
Tyler Blount 2ddfa00670 Add DX11 DDS Header information 2020-08-13 21:51:11 -06:00
Goober5000 ca73feb36b Merge pull request #2651 from Goober5000/for_ship_class
add for-ship-class and for-ship-type sexps
2020-08-13 22:16:59 -04:00
Goober5000 e01c799cc1 Merge pull request #2649 from Goober5000/debris_enhancements
Debris enhancements
2020-08-13 14:21:16 -04:00
Goober5000 de8164aa9c add for-ship-class and for-ship-type sexps
These sexps work just like for-counter, supplying arguments for when-argument.  They will list all ships that are present in the mission and are of a certain class or type.
2020-08-13 14:15:25 -04:00
Goober5000 51ea05068e make the no-disappear flag really prevent the subobject from being blown off, as opposed to blowing it off and then restoring it 2020-08-13 00:38:10 -04:00
Goober5000 2dec0af410 add code to tell if debris is one of those tiny models
make Debris dynamic, and use a soft limit at 64 pieces (the old MAX)
add per-class specification of death roll sounds
2020-08-12 23:51:39 -04:00
Baezon 1f62919a46 cleaner temp lists 2020-08-12 20:56:19 -04:00
m!m 6c3dc57ce4 Merge pull request #2645 from asarium/rocket/moreCmdBriefApis
Add more scripting APIs for the command briefing
2020-08-12 15:41:01 +02:00
asarium 8d8f304514 Add more scripting APIs for the command briefing
This covers the various APIs needed for getting the last parts of the
new command briefing UI to work.
2020-08-12 09:43:09 +02:00
m!m 72bd948852 Merge pull request #2648 from asarium/fix/unbalancedLuaStack
Fix various issues of an unbalanced Lua stack
2020-08-12 09:38:10 +02:00
m!m e9d193f12e Merge pull request #2644 from asarium/scripting/customExecutionContext
Add scripting API for custom execution context
2020-08-12 09:37:50 +02:00
Goober5000 74a8e4b6aa Merge pull request #2639 from Goober5000/secondary_bank_fix
fix crash from multilock merge
2020-08-11 12:55:55 -04:00
asarium b94f12092b Fix various issues of an unbalanced Lua stack
This fixes three issues where the Lua stack was not cleaned up properly:
- On hook execution, the return value was left on the stack
- For ADE initialization, the global tables were left on the stack
- In libRocket, a metatable was left on the stack
2020-08-11 09:45:25 +02:00
asarium 8fcb05bfd0 Add scripting API for custom execution context
This allows a script to create its own execution context so that it can
control when a coroutine is valid to play based on custom data.

Also adds a function which causes a coroutine to end in an error.
2020-08-11 09:38:39 +02:00
Goober5000 be472686f2 Merge pull request #2647 from Goober5000/fireball_filenames
clean up fireball filename init
2020-08-11 02:44:32 -04:00
Goober5000 85d57f56fc Merge pull request #2646 from Baezon/no-black-void
Banish the Black Void
2020-08-11 01:17:48 -04:00
Goober5000 8a607369be clean up fireball filename init
GCC 10.1.0 complained about the filename overwriting itself in the old version of the code.  This was a false positive, but the code wasn't terribly clear, so I cleaned it up a bit.
2020-08-10 22:57:27 -04:00
Baezon 666c2a4402 bool valid vec 2020-08-10 22:31:44 -04:00
Baezon c1942c5359 bool! not int 2020-08-10 22:15:54 -04:00
JohnAFernandez c512eea234 Set Campaign Type For Multiplayer Clients
This allows us to correctly check for campaign type if needed and fixes a variable bug.
2020-08-10 21:27:20 -04:00
Baezon 73d64d9460 review changes 2020-08-10 21:23:27 -04:00
Baezon 573c8b8892 bool return 2020-08-10 19:50:40 -04:00
Baezon d48559d455 double the doubles 2020-08-10 19:09:17 -04:00
m!m 3e7868b663 Merge pull request #2643 from asarium/lua/fixSkipArgs
Capture Ade skip arguments locally
2020-08-10 21:48:55 +02:00
m!m 3596ec5820 Merge pull request #2637 from asarium/build/luaApiExport
Enable dllexport for Lua API
2020-08-10 21:48:32 +02:00
Baezon d92c7a8ea3 doubles for inverting 2020-08-10 15:02:12 -04:00
David Gibson c432c1cce1 Reinstituted freeflight speed parsing and implemented it's use. 2020-08-10 11:18:44 -05:00
Goober5000 514ca1bda9 Merge pull request #2642 from Goober5000/debris_ambient
Several small sound-related enhancements
2020-08-10 09:50:14 -04:00
m!m 4272c2eea5 Merge pull request #2636 from asarium/rocket/scrollingText
Add scrolling text element for libRocket
2020-08-10 12:04:34 +02:00
asarium 31dfa49ebc Capture Ade skip arguments locally
These variables can be used for changing the behavior of the ade_ API
functions. However, they apply to all the ade_get calls so if there is a
call to ade_get_args from an ade_get_args call then it will reuse the
previously set values and produce incorrect results.

This captures those variables as soon as possible and then resets them
so that subsequent calls start with the default values for those
variables.
2020-08-10 09:39:08 +02:00
asarium f12a8ff432 Add scrolling text element for libRocket
This emulates the "scrolling text" effect that is present in briefings.
It is not exactly the same since it just goes pixel wise and not by
character but it looks good enough.
2020-08-10 09:38:30 +02:00
Goober5000 b419d3fac5 Merge pull request #2632 from EatThePath/fix-freeflight
Restored retail-like handling of speed during freeflight time.
2020-08-09 21:34:30 -04:00
Goober5000 00e1a5fcba add collision sounds 2020-08-09 16:58:38 -04:00
Goober5000 83d9d352ff Merge pull request #2604 from Baezon/consistent-apply-whack-args
Supply world coordinates in whack function calls
2020-08-09 15:32:41 -04:00
Goober5000 c9fcbb10da Merge branch 'master' into swamers-lead 2020-08-09 13:53:07 -04:00
Goober5000 e3368be15c Merge pull request #2635 from chief1983/update/libRocket
update/libRocket: Update libRocket to latest master.
2020-08-09 13:03:38 -04:00
Baezon 7e42b36d4a nullptr 2020-08-08 23:26:21 -04:00
Baezon 2b92e10e15 clean up 2020-08-08 21:58:40 -04:00
Baezon 48313c826f v2 2020-08-08 21:16:43 -04:00
m!m 95ebb62de5 Merge pull request #2638 from asarium/lua/audioStreamApi
Add generic audio stream API
2020-08-08 22:22:49 +02:00
Baezon c8cb3d45fc orthogonalize safety 2020-08-08 15:55:33 -04:00
Goober5000 a1a0bd3e0e fix crash from multilock merge
After the multilock PR #2207, ships without secondary weapons will crash the game.  This can easily be seen in the very first training mission of the FS2 main campaign, and it is due to an invalid bank access in `ship_stop_secondary_fire`.  The `current_secondary_bank` is 0, but there are 0 secondary banks.  The Assert catches this, but that's not enough.

This change fixes the crash, as it initializes the current banks to -1 instead of 0.  However I'm not familiar with the new multilock way of doing things so I can't say if that is correct in all cases.
2020-08-08 13:50:31 -04:00
Goober5000 06c6434d44 debris ambient sounds, optional ship sounds, begin collision sounds 2020-08-08 13:49:06 -04:00
asarium 1001bfb760 Add generic audio stream API
The previous API only allowed very limited access to the audio stream
system. These changes add full support for playing all types of audio
streams via a dedicated API.
2020-08-08 19:36:39 +02:00
asarium 646a5d60f8 Enable dllexport for Lua API
This allows external libraries to load the Lua API from our executable
even if it is linked statically. This is useful for a Lua debugger which
needs to interact with the Lua API.
2020-08-08 18:00:52 +02:00
Baezon 847f3229e0 gonna be here all night 2020-08-08 00:48:28 -04:00
Baezon 5a89cac8d1 more c++ 11 2020-08-08 00:21:57 -04:00
Baezon 314e231778 c++ 11-ify 2020-08-08 00:00:38 -04:00
Baezon 6927b5cef1 objectify 2020-08-07 23:28:43 -04:00
Cliff Gordon 5e168bee5f update/libRocket: Update libRocket to latest master. 2020-08-07 09:20:41 -05:00
Baezon ededcd8156 v1 2020-08-07 03:20:26 -04:00
Goober5000 fb4b71c935 Merge pull request #2613 from Baezon/ai-before-physics
Add 'Process AI before Physics' flag
2020-08-06 23:22:58 -04:00
Baezon 860423b577 wip 2020-08-06 20:48:16 -04:00
David Gibson 9ec972f9c4 Restored retail-like handling of speed during freeflight time. 2020-08-05 18:15:03 -05:00
Goober5000 fa6f996827 Merge pull request #2594 from JohnAFernandez/Keep-Connectionless-Players-Out-Of-Multi
Keeps players From Accessing Multi Screens When No Connection Available.
2020-08-05 14:45:05 -04:00
Goober5000 6ac9161469 Merge pull request #2611 from notimaginative/libpcp_solaris
Changes for libpcp to work on Solaris/OpenIndiana
2020-08-05 14:41:35 -04:00
Goober5000 67f4b53c12 Merge pull request #2599 from JohnAFernandez/Fix-Connecting-To-Non-PXO-Games-Specific
Fix Non-Standalone Servers Failing to Switch Between PXO and Non-PXO
2020-08-05 14:40:42 -04:00
m!m 0a970690ec Merge pull request #2623 from asarium/scripting/redAlertMission
Add Lua function for checking for a red alert mission
2020-08-05 18:31:33 +02:00
Baezon b4ec1b32ba better subtype determiner 2020-08-05 01:54:47 -04:00
Baezon 1e56ad942c clarity comment 2020-08-05 01:40:07 -04:00
Baezon f2dae734a3 better comment 2020-08-04 15:41:03 -04:00
Baezon 5b6c7f5d64 assertions
and also if the object isnt a ship it should bail before trying to index Ships[] or compare to MAX_SHIPS
2020-08-04 14:44:32 -04:00
Goober5000 38a3679f37 Merge pull request #2621 from Goober5000/luasexp_modification
add the ability to use multiple sexp parameter variants
2020-08-04 13:57:50 -04:00
asarium 8e108f7745 Add Lua function for checking for a red alert mission
Also fixes a bug in the function that is used by the libRocket pilot
selection UI.
2020-08-04 17:28:01 +02:00
Goober5000 10d98f38bd Merge pull request #2618 from The-E/fix/init_aa_preset_correctly
Make sure gr_aa_preset_last_frame is initialized correctly
2020-08-04 01:20:28 -04:00
Goober5000 d47c4ebff5 Merge pull request #2620 from EatThePath/wep-limit-bump
increased weapon type limit from 300 to 500, matching ship class limit
2020-08-04 01:19:53 -04:00
Baezon fd1204e491 version 2 2020-08-04 00:30:10 -04:00
Baezon c9784bc538 version 1 2020-08-03 23:57:45 -04:00
wookieejedi d411bc9c2d Merge pull request #2619 from wookieejedi/add-extra-primary-link-check
Fix Missing Check for Primary Linking
2020-08-03 22:54:26 -04:00
Goober5000 0ed13a69e7 add the ability to use multiple sexp parameter variants
This is specifically for OPF_SHIP.  Currently if you specify a LuaSEXP with OPF_SHIP, it only works for ships that are present in the mission when the SEXP is called.  This is my attempt at a LuaSEXP parameter variant that will return a valid ship name regardless of the ship status.  It required a bit of finagling the existing API.
2020-08-03 21:26:39 -04:00
David Gibson b601065328 increased weapon type limit from 300 to 500, matching ship class limit 2020-08-03 15:15:23 -05:00
Goober5000 d9b4fab691 Merge pull request #2615 from Goober5000/colgroup2
add new versions of the collision group sexps
2020-08-03 16:13:56 -04:00
wookieejedi eaa419610f Fix Missing Check for Primary Linking
Previously, `ai_link_energy_levels_always` or `ai_link_ammo_levels_maybe` could allow a ship to link weapons even if the `No_primary_linking` flag was setfor that ship. This PR fixes that by added a check for `No_primary_linking` before `ai_link_energy_levels_always` or `ai_link_ammo_levels_maybe` is evaluated.
2020-08-03 16:00:42 -04:00
Tyler Blount bb8bc3b773 Merge pull request #2617 from TRBlount/fix/multilock_snd_banks
Fix for #2616
2020-08-03 11:53:30 -06:00
Fabian Woltermann 657c3b55e2 Make sure gr_aa_preset_last_frame is initialized correctly 2020-08-03 19:46:48 +02:00
Tyler Blount 0caea780a3 Clear locks on successful secondary bank change 2020-08-02 21:38:52 -06:00
Tyler Blount 671301a936 Fix lock sounds not playing correctly with multilock 2020-08-02 16:14:20 -06:00
Goober5000 0177ebd66f add new versions of the collision group sexps
In most cases you have one group to/from which you are adding or removing several ships, but the existing sexps are designed for one ship and many groups.  This adds new sexps designed for one group and many ships.
2020-08-01 00:15:52 -04:00
Goober5000 27940d2f55 Merge pull request #2614 from Goober5000/orientation_editor
Allow actually editing orientations in the orientation editor
2020-08-01 00:14:30 -04:00
Baezon f6603514b1 default value 2020-07-31 23:01:00 -04:00
Baezon a4f7d10391 review changes + functions 2020-07-31 22:20:07 -04:00
Goober5000 b06eac63c8 this threshold makes more sense 2020-07-31 20:13:29 -04:00
Goober5000 53ef41856c add orientation editing 2020-07-31 18:35:01 -04:00
Goober5000 cd04ce24f1 reorder controls for tabbing 2020-07-31 18:33:11 -04:00
Taylor Richards 069e1eea0f clean up defines to avoid multiple lookup types 2020-07-31 18:27:25 -04:00
Goober5000 1bc26c4da1 fred.rc and resource.h changes 2020-07-31 16:32:58 -04:00
Baezon 626c1fc42f travis appeasement 2020-07-30 23:23:10 -04:00
Baezon 385ae2c0b3 travis appeasement 2020-07-30 23:21:08 -04:00
Goober5000 d841d2a91b Merge pull request #2603 from Goober5000/on_debris_created
more complete scripting support for debris
2020-07-30 21:42:05 -04:00
Baezon 4ef217121e flag 2020-07-30 21:23:37 -04:00
Goober5000 46673a6277 Merge pull request #2610 from asarium/doc/makeNewHooksObvious
Add comment about new hooks system to legacy hook list
2020-07-30 16:44:53 -04:00
Taylor Richards cdd50bfc15 make libpcp work on Solaris/OpenIndiana 2020-07-30 16:05:48 -04:00
Goober5000 c868178cc0 Merge pull request #2600 from Goober5000/scripting_rand32
add several more scripting functions
2020-07-30 15:28:01 -04:00
Baezon 20acea31f2 review changes 2020-07-30 15:06:36 -04:00
Goober5000 f2ea3e24b1 use new script hook API 2020-07-30 12:18:52 -04:00
Goober5000 c768d13f33 address feedback 2020-07-30 11:57:09 -04:00
Goober5000 516040c96d Merge pull request #2609 from Goober5000/lua_argument_sanity
add sanity check to Lua SEXP arguments
2020-07-30 11:51:20 -04:00
asarium 33f3b72be1 Add comment about new hooks system to legacy hook list
Since the old system is deprecated it needs to be made obvious that new
hooks should not be added using that system.
2020-07-30 17:15:53 +02:00
Goober5000 2fde6aa69c add sanity check 2020-07-29 21:27:38 -04:00
Goober5000 2dddbaa6ae add some more useful functions 2020-07-29 21:26:16 -04:00
Tyler Blount a212a6042c Merge pull request #2605 from JohnAFernandez/Multilock_Multiplayer_Patch_Final
Multilock Patch
2020-07-29 14:27:48 -06:00
Goober5000 7e8520f375 Merge pull request #2607 from notimaginative/fix_pxo_lobby_crash
Fix pilot info bug and crash in PXO chat lobby
2020-07-29 10:05:19 -04:00
Taylor Richards b5dc556412 fix pinfo crash and bug in PXO chat lobby 2020-07-29 01:22:20 -04:00
JohnAFernandez e979b07ce1 Remove Sneaky Rollback Logic for Dumbfires 2020-07-28 22:01:56 -04:00
JohnAFernandez 9383510388 Multilock Patch 2020-07-28 21:50:55 -04:00
Goober5000 9b7549213d might as well add these too 2020-07-27 13:38:44 -04:00
JohnAFernandez fd18a21482 Fix Non-Standalone Servers Failing to Switch Between PXO and Non-PXO
Add a function to check if PXO is in use rather than just initialized, so that a very important flag can be properly set.
2020-07-27 13:29:58 -04:00
JohnAFernandez cb048132cf Change MP Initial Ship Behavior to Match SP 2020-07-27 13:18:06 -04:00
Baezon f95f48448e world coords for all whacks 2020-07-27 01:11:00 -04:00
Tyler Blount bc4c9f6bea Merge pull request #2207 from TRBlount/multilock_maintain
Merge Multilock
2020-07-26 22:31:18 -06:00
Goober5000 83d2ac8818 more complete scripting support for debris
Adds a hook for debris creation, and adds DoNotExpire and LifeLeft virtual variables for controlling debris removal.
2020-07-26 22:02:51 -04:00
Tyler Blount 530f3e22ac Bump Multiplayer Version
A multiplayer version bump is required as missiles no longer function due to multilock. This will be remedied asap.
2020-07-26 18:38:57 -06:00
Tyler Blount f03f97bbcd Fix Travis CI errors 2020-07-26 18:38:57 -06:00
Tyler Blount c749f41d7f Fix incorrect capitalization for Ships_inited variable 2020-07-26 18:38:57 -06:00
Tyler Blount 02249c5650 Don't reset target restrictions during table load
Prevents an issue with load order causing target restrictions to be reset.
2020-07-26 18:38:57 -06:00
Tyler Blount f64e0396bf Remove unneeded code and some style changes 2020-07-26 18:38:57 -06:00
Tyler Blount b969b45b68 Correctly implement fixes from #73 2020-07-26 18:38:57 -06:00
Tyler Blount 9dbdf06c89 CI and Lock fixes 2020-07-26 18:38:57 -06:00
Tyler Blount eaac6ccfbb Use correct comparison 2020-07-26 18:38:57 -06:00
Tyler Blount 4bdded6650 Fix some CI errors 2020-07-26 18:38:57 -06:00
Tyler Blount 25f0f3fca1 Finally fix no dumbfire
also some miscellaneous changes
2020-07-26 18:38:56 -06:00
Tyler Blount 8413da3352 Perhaps this works? 2020-07-26 18:38:56 -06:00
Tyler Blount a283b93e85 No Dumbfire fix
Another fix for MLMs associated with the No Dumbfire flag.
2020-07-26 18:38:56 -06:00
Tyler Blount f089404520 More fixes
Contains changes related to failed CI builds and feedback.
2020-07-26 18:38:56 -06:00
Tyler Blount 2610bc632a Lost fixes
These were lost during a rebase at one point. Will leave this commit as separate to avoid issues in the future.
2020-07-26 18:38:56 -06:00
Swifty 32c38e696d Initial commit of multilock missile features. 2020-07-26 18:38:56 -06:00
Goober5000 d10fa93c3c Merge pull request #2601 from Baezon/fix-recoil
Fix usage of ship_recoil_modifier
2020-07-26 14:43:29 -04:00
Goober5000 4e5a29454f Merge pull request #2602 from Goober5000/add_otf
add OTF fonts
2020-07-26 11:13:36 -04:00
Goober5000 7f47132e78 add OTF fonts
There are fonts with an .otf extension that are similar to .ttf, and in fact can be opened with our TTF code.  So this adds support for that extension.
2020-07-26 02:10:49 -04:00
Baezon 22a3d57894 add recoil to clone and move 2020-07-26 00:52:21 -04:00
Goober5000 57e4fcd901 trololol... 2020-07-26 00:29:28 -04:00
Goober5000 8bc57c3cd2 add several more scripting functions
Add ba.rand32() and ba.rand32f(), and gr.clear(); enhance streaminganim:process(); fix streaminganim:timeLeft().
2020-07-25 23:21:40 -04:00
Goober5000 2c7fee1c93 Merge pull request #2595 from chief1983/fix/sun_fionbio
fix/sun_fionbio: Load filio.h on Sun for FIONBIO
2020-07-25 11:05:58 -04:00
Goober5000 c860a0e14a Merge pull request #2597 from chief1983/fix/sun_sun
fix/sun_sun: Use 'bgsun' instead of 'sun'
2020-07-25 11:05:50 -04:00
Goober5000 40862bb781 Merge pull request #2598 from Goober5000/fix_special_ship
adjust special_ship index if a ship exits a wing
2020-07-25 11:05:40 -04:00
Goober5000 66ee735ebe Merge pull request #2596 from chief1983/fix/sun_renderdoc
fix/sun_renderdoc: Make Solaris a recognized platform for renderdoc.
2020-07-25 11:04:50 -04:00
Goober5000 673a0c60a2 adjust special_ship index if a ship exits a wing
If a ship is destroyed or departed, the special_ship index would get out of sync.  This fixes that.
2020-07-24 23:45:57 -04:00
chief1983 ce7ba67843 fix/sun_sun: 'sun' is a reserved keyword on Sun, so use bgsun here instead. 2020-07-24 17:49:50 -05:00
chief1983 387c9e4a9c fix/sun_renderdoc: Make Solaris a recognized platform for renderdoc. 2020-07-24 17:48:10 -05:00
chief1983 fd5fba62aa fix/sun_fionbio: This include is needed on Sun platforms for it to have access to FIONBIO. 2020-07-24 17:45:16 -05:00
JohnAFernandez 58b35f9348 Keeps players From Accessing Multi Screens When No Connection Available.
Leaving the ability to go onto the multi screens will cause undesired behavior and asserts. (like trying to validate the tables when there is no connection in the first place.)  Also only sets the game state to multi once we're sure that we're going to enter a multi game.
2020-07-24 13:17:31 -04:00
Goober5000 fdc160807f Merge pull request #2581 from Goober5000/dont_bank_ship_flag
add ship-maneuver flags to ship_info
2020-07-24 12:35:43 -04:00
Goober5000 91007d9f83 Merge pull request #2592 from Goober5000/fix_get_line_num
fix line number counting
2020-07-24 01:29:28 -04:00
Goober5000 8ca10d46be fix line number counting
When I rewrote `strip_comments()` to take quotes into account, I didn't correspondingly update `get_line_num()`.  This fixes that.  I discovered that a Lua file with a lot of semicolons inside quotes was erroneously getting the past-EOF warning.

Also, in the event that the warning *is* tripped, this exits the loop instead of repeatedly displaying the warning.
2020-07-23 23:46:12 -04:00
Baezon 27544e781a Revert "no homing when out of range"
This reverts commit eebfb7eadb.
2020-07-23 21:12:51 -04:00
Goober5000 207227038f Merge pull request #2587 from Goober5000/additional_vecmat_scripting
Additional scripting enhancements
2020-07-23 16:49:28 -04:00
Goober5000 6e40248490 add vector interpolation, sexp variable name, and joystick axis inversion
add several more vecmat functions to scripting
2020-07-23 14:43:02 -04:00
Baezon eebfb7eadb no homing when out of range 2020-07-23 12:30:28 -04:00
m!m a302d1ac00 Merge pull request #2588 from asarium/build/optionalVulkan
Make Vulkan an optional component
2020-07-23 17:55:14 +02:00
Baezon e6938bd14d verison 1 2020-07-22 23:48:53 -04:00
Baezon 1f1d7065cd v1 2020-07-22 23:26:06 -04:00
Goober5000 f1cd5be6ed Merge pull request #2543 from Goober5000/fix_sexp_hint
fix sexp auto-complete for manually-entered text
2020-07-22 15:20:50 -04:00
asarium bc0ea7d929 Make Vulkan an optional component
This makes it possible to still compile FSO on platforms that are not
supported by the Vulkan headers.
2020-07-22 18:20:59 +02:00
Goober5000 cd2a0437e0 Merge pull request #2573 from Goober5000/tech_db_scripting_vars
cleanup of tech room, and scripting stuff
2020-07-21 22:38:58 -04:00
Goober5000 e499e651c7 Merge pull request #2583 from Goober5000/orientation_enhancements
add scripting function to create matrix from vectors
2020-07-21 17:26:42 -04:00
Goober5000 fd30238743 Merge pull request #2555 from Baezon/whack-fix
Fix physics whack for docked ships
2020-07-21 15:30:16 -04:00
Baezon 8bd033705f swarmers lead targets 2020-07-21 14:48:24 -04:00
Goober5000 7634f55ae9 Merge pull request #2584 from JohnAFernandez/Fix_Retail_Weapon_Energy_UBER_BUG
Move unsetting of Wep Cheat to Gamestate code
2020-07-21 14:48:24 -04:00
Goober5000 709208bff4 address feedback 2020-07-21 14:46:06 -04:00
Goober5000 096218a324 address feedback 2020-07-21 14:36:57 -04:00
Goober5000 3833881f8e Merge pull request #2411 from notimaginative/fix_pxo_stats
fix various issues with PXO stats
2020-07-21 01:59:00 -04:00
JohnAFernandez fd7af0bdf8 Move unsetting of Wep Cheat to Gamestate code
Where it belongs.
2020-07-21 01:52:02 -04:00
Goober5000 0071fbde1a add scripting function to create matrix from vectors 2020-07-20 21:58:02 -04:00
Goober5000 712bb1fe89 add ship-maneuver flags to ship_info 2020-07-19 22:27:38 -04:00
Baezon a6f060e128 clarity edits 2020-07-19 15:06:29 -04:00
Baezon 34b04b1ca8 PR review fixes 2020-07-18 22:28:51 -04:00
Goober5000 f03df9e7cc Merge pull request #2579 from JohnAFernandez/Return-To-PXO-After-Re-enable
Go back to login if you're trying to use PXO
2020-07-18 13:34:47 -04:00
Goober5000 192272a914 Merge pull request #2450 from JohnAFernandez/Fix_Ai_messaging
Allow Team Leaders to Send Messages
2020-07-18 13:33:50 -04:00
Fabian Woltermann fd2f9cc326 Merge pull request #2570 from Goober5000/vm_vec_mag_quicker
make _quick quicker
2020-07-18 18:55:57 +02:00
Fabian Woltermann 714514533b Merge pull request #2580 from JohnAFernandez/Fix-minor-pxo-screen-rendering-bug
Fix sidebars retaining old rendering from mission quick exit
2020-07-18 18:54:45 +02:00
Baezon 6e7908833a more fix 2020-07-17 23:40:51 -04:00
JohnAFernandez b7d7ebe6cf Allow Team Leaders to Send Messages and use ship registry to look up the team and slot
Team Leader function was returning 0 instead of 1 when the team captain was messaging AI.

This optimizes, cleans up, and gets rid of edge-case buggy behaviour.  Thank you ship_registry!
2020-07-17 22:44:24 -04:00
JohnAFernandez 185d12859c Fix sidebars retaining old rendering from mission quick exit
And also a minor typo
2020-07-17 22:26:57 -04:00
Baezon c49cf7fd6a bugfix 2020-07-17 21:00:26 -04:00
Baezon 06322bb977 better names and const fix 2020-07-17 20:07:09 -04:00
JohnAFernandez f832b5baf1 Go back to login if you're trying to use PXO 2020-07-16 22:33:47 -04:00
Goober5000 2191bf9265 Merge pull request #2577 from notimaginative/inputbox_paste
Allow pasting clipboard contents into input boxes
2020-07-16 21:21:11 -04:00
Goober5000 559e38d0cf Merge pull request #2575 from Baezon/fix-moi-init
Improve physics_ship_init safety
2020-07-16 21:21:02 -04:00
Goober5000 d9dd116199 Merge pull request #2578 from Goober5000/fix_show_subtitle
fix show-subtitle
2020-07-16 21:20:28 -04:00
Goober5000 f8f6bbc53c fix show-subtitle
For older campaigns which used show-subtitle, the eval_num conversion inadvertently changed the rgb to default to 0, instead of 255.  This restores the default to 255.
2020-07-16 15:30:52 -04:00
Taylor Richards d778c5864d paste from clipboard into inputbox 2020-07-16 11:52:36 -04:00
Fabian Woltermann 90d3a275ea Merge pull request #2576 from notimaginative/pxo_query_bomb_fix
Fix query bomb in PXO game tracker
2020-07-16 13:58:39 +02:00
Taylor Richards a03cd49d0c fix loop to use reference 2020-07-16 03:20:15 -04:00
Baezon 2d1ae42db0 more specific comments 2020-07-15 23:47:32 -04:00
Baezon ef42b545cf initial commit 2020-07-15 18:15:21 -04:00
Goober5000 e0437727dc Merge pull request #2568 from notimaginative/pxo_game_tracker_cleanup
Clean up PXO client-side game tracker
2020-07-15 13:28:02 -04:00
Goober5000 31fa2ac444 cleanup of tech room, and scripting stuff
1) Upgrade the pilot file code to correctly save flags whether entries are added *or* removed
2) Make the tech-db/tech-db-multi ship flag handling consistent
3) Add scripting support for intel entries
4) Add scripting support for adding and removing entries from the tech room
5) Minor cleanup
2020-07-15 13:27:27 -04:00
Goober5000 e4f7bc8c57 Merge pull request #2572 from Baezon/shockwave-fix
Randomized weapon shockwave orientations
2020-07-15 13:08:59 -04:00
Goober5000 a5667010e1 Merge pull request #2574 from Baezon/no-infinity
Add infinity to invalid vector criteria
2020-07-15 13:01:43 -04:00
Baezon 8de1248713 no infinite vectors allowed 2020-07-15 01:10:47 -04:00
Baezon 8fdc11180f cleaner tau 2020-07-14 12:06:42 -04:00
Goober5000 92bd872caf Merge pull request #2562 from JohnAFernandez/Fix-Standalone-Interactive-Dialog-Crashes
Fix Standalone Crashes
2020-07-14 09:41:00 -04:00
Goober5000 8ffdbba488 Merge pull request #2571 from Baezon/no-docking-collision
Prevent indrectly docked ships from colliding
2020-07-14 09:40:41 -04:00
Goober5000 28c8c3000f Merge pull request #2569 from Goober5000/robustify_json_string
some UTF-8 improvements
2020-07-14 09:40:07 -04:00
Baezon de80a3bacc better name 2020-07-14 01:42:22 -04:00
Baezon 12d6422556 no collision for dockING ships either 2020-07-13 23:51:05 -04:00
Baezon 3adf6e4553 No indirect docking collision 2020-07-13 21:50:07 -04:00
Goober5000 d6b3d8cba7 remove old tests 2020-07-13 20:52:26 -04:00
Goober5000 815de46c6d make _quick quicker
The functions derived from `vm_vec_mag_quick` run *slower* than `vm_vec_mag`, according to @Baezon who did some testing.  So this PR makes all calls to the _quick functions use their more accurate counterparts.
2020-07-13 20:49:50 -04:00
Baezon 5fa9d17cc5 randomized shockwave orientations 2020-07-13 20:15:20 -04:00
Goober5000 8b310a3e08 Merge pull request #2564 from Baezon/cargo-no-recover
Prevent cargo containers from recovering from a collision
2020-07-13 16:05:36 -04:00
Goober5000 4bd49c2b95 address feedback 2020-07-13 15:43:47 -04:00
Goober5000 c13a3330f6 some UTF-8 improvements
1) Write all non-UTF-8 strings to JSON, either by converting or truncating
2) Add `coerce_to_utf8` function
3) Tweak `read_raw_file_text` because the function returns length on success, not 0
2020-07-13 14:33:28 -04:00
Goober5000 7744e177c5 Merge pull request #2567 from Baezon/quick-dist-fix
Relative error for mag and dist_quick, and seeded vecmat tests
2020-07-12 14:33:17 -04:00
Taylor Richards 7db6662978 avoid querying tracker at LAN refresh internals 2020-07-12 14:00:57 -04:00
Taylor Richards 72a610574e set and update game data properly 2020-07-12 13:30:18 -04:00
Baezon 1512e7c8c2 moar bugfix 2020-07-12 12:53:05 -04:00
Goober5000 b49ea7b4c2 Merge pull request #2566 from Goober5000/fix_fred_node_correction
fix FRED's verify_and_fix_arguments
2020-07-12 12:33:34 -04:00
Baezon 96239d4117 formatting 2020-07-12 12:28:19 -04:00
Taylor Richards 4220a426d6 fix gtrack updates to work more reliably 2020-07-12 12:12:59 -04:00
Baezon e0e74c8277 bugfix 2020-07-12 03:51:31 -04:00
Baezon a5a41e8ea6 Review adjustments 2020-07-12 03:14:01 -04:00
Baezon c497aa32d5 relative error for mag and dist_quick, and seeded tests 2020-07-12 00:33:13 -04:00
Goober5000 412c0310d3 Merge pull request #2565 from Goober5000/fix_destroy_before_mission
sometimes the FSO code is like Jenga
2020-07-12 00:28:09 -04:00
Goober5000 42314e5a58 fix FRED's verify_and_fix_arguments
This was a fun one.  Volition used a bizarre and very poorly named "flag" static variable to track iterations through the `verify_and_fix_arguments` function.  I'm not sure how this actually works, but on comparing with the original public source code I see that @asarium didn't quite fix the "declaration masks class variable" compiler warning the right way.  This rolls back that 2016 change and fixes it properly.

The effect of this fix is so that FRED will correctly handle arguments when node data types change, such as when the modify-variable argument is changed from a numeric variable to a string variable.
2020-07-11 23:44:24 -04:00
Goober5000 b12d0986c5 sometimes the FSO code is like Jenga
The #2528 fix broke ships destroyed before mission start because their arrival delay was *already* set up (as a bogus timestamp).  So this change adds a special exception for that.
2020-07-11 22:34:09 -04:00
Baezon c6cbb1f380 Cargo containers won't recover from collisions 2020-07-11 20:18:24 -04:00
Goober5000 ecc678c1e5 Merge pull request #2561 from Goober5000/traitor_cleanup
traitor table addendum
2020-07-11 11:10:07 -04:00
Baezon abe17c7885 comment fix 2020-07-11 02:01:17 -04:00
Baezon 17613e0612 Only one whack
re-factored so that only the 'dock root' is whacked, all other docked ships will adjust to match the root
2020-07-11 00:05:10 -04:00
Baezon b6f1ceeabd PR review changes 2020-07-11 00:05:10 -04:00
Baezon eb64241355 Assert -> Assertion and made a bunch of them 2020-07-11 00:04:48 -04:00
Baezon 3178ef593e NULL -> nullptr 2020-07-11 00:04:48 -04:00
Baezon 47418008f4 unused variable clean up 2020-07-11 00:04:48 -04:00
Baezon 9b33685598 Fix physics whack for docked ships
Properly whacks all ships that are docked together when any are whacked, makes everything more consistent by calling ship_apply_whack instead of physics_apply_whack, whacking in general now unrotates its hit pos to get a world pos like physics whack was expecting and adds a few matrix helper functions.
2020-07-11 00:04:48 -04:00
Goober5000 cc3ebaf965 Merge pull request #2556 from Baezon/vecmat
Addition of matrix3 functions in vecmat
2020-07-10 23:54:05 -04:00
JohnAFernandez 48ccd37d09 Fix Standalone Crashes
Standalones would crash if they had an error dialog pop up because of a nullptr.  This just checks for the nullptr and returns early to prevent the crash.
2020-07-10 23:44:01 -04:00
Goober5000 587abefb45 upon further consideration, the text is what depends on the persona 2020-07-10 21:21:03 -04:00
Goober5000 5951d05587 Merge pull request #2559 from Goober5000/debriefing_persona_enhancements
Debriefing persona enhancements
2020-07-10 21:03:04 -04:00
Baezon 32baf3dc5c Even more appveyor appeasement 2020-07-10 20:23:36 -04:00
Baezon da9442261a more appeasing of appveyor 2020-07-10 13:31:33 -04:00
Baezon 81980e3486 make dist_quick slightly more permissive 2020-07-09 22:42:37 -04:00
Baezon b9fd69285d remove unused variable 2020-07-09 21:54:57 -04:00
Baezon 453a3f213d Merge The_E's vector test functions 2020-07-09 20:39:19 -04:00
Goober5000 baa1bd2a18 Merge pull request #2558 from Goober5000/fix_skipmemymissionyo
fix skipmemymissionyo
2020-07-09 13:50:53 -04:00
Goober5000 a5b8c7b376 add debriefing persona sexp and make a few additional tweaks 2020-07-09 12:49:38 -04:00
Goober5000 26f4531300 fix skipmemymissionyo 2020-07-09 11:47:07 -04:00
Goober5000 1304a36c96 parse traitor.tbl at game launch, and select persona-specific text 2020-07-09 11:18:40 -04:00
Baezon 82c13da494 Added vecmat test
also trying to placate appveyor by using a variable instead of a literal i guess?
2020-07-09 00:34:25 -04:00
Goober5000 e40e54abc0 Merge pull request #2557 from Goober5000/fix_numeric_arguments
Fix numeric arguments
2020-07-08 16:52:32 -04:00
Goober5000 d4053ea2e9 fix <argument> in numeric nodes, and also fix more error printing 2020-07-08 14:51:52 -04:00
Goober5000 4250a4e2bb fix error variable printing 2020-07-08 13:50:12 -04:00
Baezon f4794341bb bugfix 2020-07-08 01:32:49 -04:00
Baezon f1a3ac449e Addition of matrix3 functions in vecmat
Added inverse, add, add2, sub, sub2 and a ZERO_MATRIX.
2020-07-08 00:51:06 -04:00
Goober5000 d7922c843a Merge pull request #2553 from Goober5000/fix_has_xstr
fix XSTR lookup for $Has XSTR:
2020-07-07 18:18:52 -04:00
Goober5000 b319d97b2a fix XSTR lookup for $Has XSTR:
If we specify an XSTR index, we want the internal control lookup to happen regardless of whether the game is running in untranslated mode or not.
2020-07-07 13:34:53 -04:00
Goober5000 07c8f0945b Merge pull request #2547 from Goober5000/event_flags_polishing
lazily write the flag list to prevent empty flag lists
2020-07-07 12:02:51 -04:00
Fabian Woltermann 4819f25c58 Merge pull request #2551 from Goober5000/fix_mantis_2871
fix Mantis 2871
2020-07-07 16:06:19 +02:00
Goober5000 101a1573fa Merge pull request #2550 from Goober5000/fix_mantis_2181
fix Mantis 2181
2020-07-06 23:38:23 -04:00
Goober5000 0c53682ab8 fix Mantis 2871
There was an AI class validity check for the pilot, but not for turret weapons.  This fixes that.

Also, the p_object parameter to this functino was named `objp`, which is misleading because that's usually used for object.  I renamed it p_objp.
2020-07-06 21:39:10 -04:00
Goober5000 36bd7d4c61 Merge pull request #2542 from Goober5000/clear_debris_sexp
add clear-debris sexp
2020-07-06 21:10:17 -04:00
Goober5000 392d9f6dbb fix Mantis 2181
This just uses vm_vec_normalize_safe.  If two objects spawn on top of each other, the code will now sort them properly without printing a null vec3d warning.
2020-07-06 21:04:24 -04:00
Goober5000 5480c004f5 Merge pull request #2548 from Goober5000/fix_endgame
fix the special-warpout-name sexp
2020-07-06 20:29:30 -04:00
Goober5000 d7832b4b39 fix the special-warpout-name sexp
grrr...
2020-07-06 18:42:35 -04:00
Goober5000 4b45a8602d Merge pull request #2546 from Goober5000/fix_get_damage_caused
fix copy-paste mistake
2020-07-05 11:45:38 -04:00
Goober5000 f3672ad12f lazily write the flag list to prevent empty flag lists 2020-07-04 16:44:30 -04:00
Goober5000 4e85009596 fix copy-paste mistake 2020-07-04 15:09:56 -04:00
Goober5000 7a9bd1cfaa blah 2020-07-03 16:48:05 -04:00
Goober5000 d293a9c18b api compatibility 2020-07-03 16:33:49 -04:00
Goober5000 9337c8a4b3 fix compilation 2020-07-03 16:09:59 -04:00
Goober5000 d1e0112cd2 Merge pull request #2541 from Goober5000/background_fix
fix background bug when loading subsequent missions
2020-07-03 16:05:40 -04:00
Goober5000 1a928632e0 fix sexp auto-complete for manually-entered text
The old way of finding the closest match of sexp text to entered text didn't work very well.  This method uses Levenstein distance.
2020-07-03 16:00:43 -04:00
m!m 7cd9359dec Merge pull request #2519 from asarium/feature/externalSexps
Add system for adding SEXPs externally
2020-07-03 19:56:11 +02:00
Goober5000 ef1f462c3b add clear-debris sexp
Simiar to the clear-weapons sexp (renamed from remove-weapons).
2020-07-03 13:34:39 -04:00
Goober5000 cc707264ae fix background bug when loading subsequent missions
FRED's handling of mission loading and creation is a bit wonky.  The `stars_post_level_init()` function should run for each new mission, not just once when FRED is started.  That fixes a background editor crash and I also did a bit of other cleanup.
2020-07-03 12:44:43 -04:00
asarium 62d6b3c834 Add system for adding SEXPs externally
This adds a "clear-debris" SEXP with a new system for declaring SEXPs
outside of sexp.cpp. This makes it easier to keep code modules self
contained since they do not need to export previously private
functionality just for having missiong being able to interface with it.

This is mostly a proof-of-concept which only supports basic parameter
types (booleans and integers).
2020-07-03 18:13:47 +02:00
Goober5000 cb9803a20a Merge pull request #2540 from Goober5000/dock_leader_message
clarify these warnings based on feedback
2020-07-02 18:43:54 -04:00
Goober5000 4a21436b9a Merge pull request #2536 from Goober5000/change_background_sexp
allow switching between multiple backgrounds
2020-07-02 14:56:22 -04:00
Goober5000 d2625be6d8 clarify these warnings based on feedback 2020-07-02 14:25:23 -04:00
Goober5000 42e2c71ca1 Merge pull request #2538 from Goober5000/fix_ship_registry
fix ship registry in regards to wings with multiple waves
2020-07-02 11:47:21 -04:00
Goober5000 e34506d40d Merge pull request #2537 from Goober5000/fix_missing_sexp_error_checks
fill in two missing error checks, and tweak a few others
2020-07-02 01:29:54 -04:00
Goober5000 d440d29d21 fix ship registry in regards to wings with multiple waves
The ship registry previously stored the ship name as a pointer, but that pointer was reused when subsequent waves of a wing overwrote a p_object from the first wave.  So, the name is now copied into an array.

Additionally, subsequent waves of a wing are now "eagerly" stored in the ship registry so that the p_object reference can be stored as well.
2020-07-02 01:23:55 -04:00
Goober5000 69234e3a3c make qtfred happy 2020-07-02 00:46:12 -04:00
Goober5000 595a2f884a make clang happy 2020-07-01 23:53:19 -04:00
Goober5000 c3f58c3cf5 fill in two missing error checks, and tweak a few others 2020-07-01 23:46:38 -04:00
Goober5000 7e947e522e allow switching between multiple backgrounds
For quite some time missions have had the ability to edit more than one background.  This was previously used for fallback loading in case the first background's bitmaps were not available, but I realized it would be very handy to allow switching between backgrounds for in-mission jumps.

The FRED background dialog can now add and remove backgrounds from the list.  Additionally, a new `change-background` sexp can instantly switch between backgrounds without messing around with bitmap references.
2020-07-01 23:32:12 -04:00
Goober5000 48080abbb5 Merge pull request #2534 from Goober5000/fix_hud_message_offset
fix HUD message offset for messages that come from [none]
2020-06-30 17:57:37 -04:00
Goober5000 9359362ea6 make clang happy 2020-06-30 14:23:18 -04:00
Goober5000 a8d0123d63 Merge pull request #2522 from CasparKielwein/ck/cleanup_sexp.cpp
small cleanup in  sexp.cpp
2020-06-30 13:33:07 -04:00
Goober5000 65cdb0232d fix HUD message offset for messages that come from [none]
Tracked down another Volition bug, first reported by recead.  When messages do not have the ": " substring (which only happens when they are from MSG_SOURCE_NONE), they would calculate the wrong string size.  This is because the two-character offset was added to the pointer *before* the pointer was checked for null, and so non-matches were considered matches with strings beginning at memory offset 2.
2020-06-30 13:13:48 -04:00
Goober5000 16bfeee6e1 Merge pull request #2529 from Goober5000/patch_exited_sexps
handle vanished ships for sexps that check exited_index
2020-06-30 02:12:36 -04:00
Goober5000 ec7bac99b5 handle vanished ships for sexps that check exited_index
When ships vanish, they are in the EXITED state but their `exited_index` is -1 *and* their `shipp` pointer is null.  So check for this.
2020-06-29 22:43:32 -04:00
Goober5000 d9ea352dab Merge pull request #2528 from Goober5000/fix_arrival_delay_handling
fix arrival delay handling
2020-06-29 22:13:55 -04:00
Goober5000 36d93db0a4 fix arrival delay handling
Volition's arrival code used eager evaluation of arrival cues even before the mission was finished parsing.  With the new sexp optimization code, this can fail because the sexps can depend on ships which are not even parsed yet and thus are not in the ship registry.  So I moved the arrival_delay initialization and added some comprehensive comments explaining what is going on.
2020-06-29 18:29:00 -04:00
CasparKielwein a8398629d7 in Sexp add to uncalled functions to list of multi_sexp_* calls.
Fix: Call multi_sexp_reset_time_compression instead of non-multi version
2020-06-29 21:58:45 +02:00
CasparKielwein cbb3fda960 in sexp.cpp use make indentation consistent using tabs 2020-06-29 21:58:45 +02:00
CasparKielwein cb5a406204 In sexp.cpp a bit of trivial cleanup as requested by clang-tidy. 2020-06-29 21:58:45 +02:00
CasparKielwein ad0b0ba07a In sexp.cpp remove a few unused functions and variable declarations.
Only code was removed where no reference in the whole project could be found.
Redundant declarations are already imported through inludes.
2020-06-29 21:58:45 +02:00
Goober5000 90163e8208 Merge pull request #2524 from Goober5000/does_not_move_ai
a few fixes for ships which shouldn't move
2020-06-29 00:12:04 -04:00
Goober5000 b5f59c7efc a few fixes for ships which shouldn't move
1) Prevent ships from turning in `ai_turn_towards_vector` if they have the `immobile` flag.  This was missed because it is a rotation that doesn't originate in `obj_move_call_physics`.
2) Prevent ships from evading shockwaves if they're playing dead.

Also there is a small conversion of an int to a bool.
2020-06-28 20:08:29 -04:00
Fabian Woltermann f755af02b9 Merge pull request #2521 from The-E/fix/local_ssms
Fix issue with local ssms not actually working correctly when being fired from a turret
2020-06-28 18:36:53 +02:00
Fabian Woltermann 064fe31df7 When resolving targets for local ssms, check both the weapon's target_num _and_ it's tracking info. 2020-06-28 10:20:46 +02:00
CasparKielwein 4f384d56ef in sexp.cpp replace NULL with nulltpr 2020-06-27 20:58:24 +02:00
Goober5000 c44e681c58 Merge pull request #2518 from Goober5000/constify_ctext
constify CTEXT
2020-06-27 12:16:10 -04:00
wookieejedi a065b7b967 Merge pull request #2514 from wookieejedi/min-range-ai
Allow AI Flag Use Primary Range to work with Min Range Too
2020-06-27 09:29:06 -04:00
Goober5000 7bb5a1d0fc fix CI complaints 2020-06-26 16:04:12 -04:00
Goober5000 51864a08ae reorder functions 2020-06-26 14:47:40 -04:00
Goober5000 5bc1d9da30 constify_ctext 2020-06-26 14:47:39 -04:00
Goober5000 3fc8b307f0 Merge pull request #2513 from Goober5000/more_sexp_caching
giant refactor of sexps to use caching for ships and wings
2020-06-26 14:40:48 -04:00
Goober5000 498ee4ca2d Merge pull request #2515 from Goober5000/fix_2512
better handling of non-truncated hotspot sounds
2020-06-26 12:59:57 -04:00
Goober5000 39858fdfe0 giant refactor of sexps to use caching for ships and wings 2020-06-26 12:59:31 -04:00
Goober5000 921ee8668b better handling of non-trucated hotspot sounds
The cause of the #2512 bug was using the new main hall to look up sounds from the old main hall, which would crash in several cases.  The lookup was performed when testing whether or not to truncate a door sound when changing screens or states.  Dan Wentz requested that "glowy" sounds not be truncated, so this preserves that check.  Rather than test the indexes of the door regions, this tests the indexes of the sounds in sounds.tbl.

Right now the retail sound indexes are hard-coded, but it would be easy to make this configurable from mainhall.tbl if modders wanted that ability.

This fixes #2512.
2020-06-25 17:51:43 -04:00
wookieejedi f390829e91 Allow AI Flag Use Primary Range to work with Min Range Too
The ship table value `+Weapon Min Range:` was ever used for turret firing calculations. This PR adds it as part of the cacluation for other instances, but only if the AI flag `Use_actual_primary_range` is used.
2020-06-25 17:23:55 -04:00
Goober5000 a9122b7e93 Merge pull request #2511 from Goober5000/upgrade_misc_sexps_5
upgrade yet more miscellaneous sexps
2020-06-25 11:17:40 -04:00
Goober5000 233c86b0d4 Merge pull request #2506 from Goober5000/subsys_rotation
upgrade sexps affecting rotating submodels
2020-06-25 11:17:20 -04:00
niffiwan 647081a547 Merge pull request #2492 from asarium/feature/scriptingTypesValidation
Validate scripting documentation type names
2020-06-25 17:05:38 +10:00
Goober5000 0099e0a1c9 Merge pull request #2504 from Goober5000/upgrade_misc_sexps
upgrade misc sexps
2020-06-24 18:23:03 -04:00
Goober5000 6001065901 smol tweak 2020-06-24 14:06:56 -04:00
Goober5000 6d2e653dd1 upgrade yet more miscellaneous sexps 2020-06-24 14:05:27 -04:00
Goober5000 137090fd81 Merge pull request #2510 from Goober5000/upgrade_misc_sexps_4
upgrade some more miscellaneous sexps
2020-06-24 13:53:33 -04:00
Goober5000 5f92d4f3cd Merge pull request #2509 from Goober5000/upgrade_weapon_create_and_ship_effect
upgrade weapon-create and ship-effect
2020-06-24 13:50:31 -04:00
Goober5000 5dca2a95a8 Merge pull request #2508 from Goober5000/upgrade_misc_sexps_3
upgrade armor/damage and arrival/departure sexps
2020-06-24 13:47:04 -04:00
Goober5000 7a37218fd6 Merge branch 'master' into subsys_rotation 2020-06-24 11:53:19 -04:00
asarium 0d7ade0ca8 Validate scripting documentation type names
This will check if the type names specified in the argument lists of
scripting functions actually refer to valid type scripting names.
2020-06-24 17:52:33 +02:00
Goober5000 72a5eb0c49 Merge pull request #2507 from Goober5000/upgrade_misc_2
upgrade more misc sexps
2020-06-24 11:46:14 -04:00
Goober5000 44d29908c2 Merge pull request #2505 from Goober5000/upgrade_visibility_sexps
upgrade sexps affecting ship visibility
2020-06-24 11:39:31 -04:00
Goober5000 8394d0d623 upgrade misc sexps
last-order-time, set-player-orders, ship-vanish, shield-quad-low
2020-06-24 11:30:17 -04:00
wookieejedi 050e9ad67a Merge pull request #2503 from wookieejedi/add-shield-weapon-recharge-to-ship-object
Add Shield and Weapon Regen Rates to Ship Object and Expose to Scripting
2020-06-23 22:17:22 -04:00
Goober5000 2bb4152aab Merge pull request #2502 from Goober5000/exited_ship_tweak
fix exited ship mismatch
2020-06-23 18:52:45 -04:00
Fabian Woltermann c2b7374dc3 Merge pull request #2493 from The-E/feature/more_lab_things
Animations in the lab and code cleanup
2020-06-23 22:44:45 +02:00
Fabian Woltermann 96551f4990 Fix FRED too 2020-06-23 18:19:15 +02:00
Goober5000 698ab9ec07 upgrade some more miscellaneous sexps 2020-06-23 12:07:25 -04:00
Goober5000 3513b2d075 upgrade weapon-create and ship-effect 2020-06-23 12:02:47 -04:00
Goober5000 5ad73b5ead upgrade armor/damage and arrival/departure sexps 2020-06-23 11:58:56 -04:00
Goober5000 15d8c962e9 upgrade more misc sexps 2020-06-23 11:53:26 -04:00
Fabian Woltermann 7487fc3042 Address review comments 2020-06-23 17:44:52 +02:00
Goober5000 cb44c66642 upgrade sexps affecting rotating submodels 2020-06-23 11:42:30 -04:00
Goober5000 06478cd64a upgrade sexps affecting ship visibility 2020-06-23 11:38:28 -04:00
wookieejedi 52030b1cc6 Add Shield and Weapon Regen Rates to Ship Object and Expose to Scripting
Previously a ship's shields and weapon regeneration per second rates were only stored in the ship_info strut, thus they should not be changed during a mission or via scripting (see #2236 and and #2239). There are many precedents for taking a ship_info value ans copying it to a ship_object value so the value can be changed on a per ship basis in mission (auto aim FOV is one of many examples). This PR thus copies the shield and weapon recharge values to the ship_object and exposes those new values to scripting.
2020-06-23 10:45:45 -04:00
Goober5000 f67026e7f5 Merge pull request #2500 from Goober5000/upgrade_docking_sexps
upgrade various docking and cargo sexps
2020-06-23 10:41:58 -04:00
Goober5000 7cfa4d8d7c fix exited ship mismatch 2020-06-23 10:40:32 -04:00
Goober5000 8c18c0cf33 Merge pull request #2497 from Goober5000/num_ships
upgrade num-in-battle, num-in-wing, num-in-box
2020-06-23 09:00:47 -04:00
Goober5000 10705235ed Merge pull request #2498 from Goober5000/escort_list
upgrade add-remove-escort, damaged-escort-priority, and damaged-escort-priority-all
2020-06-23 08:58:01 -04:00
Goober5000 c257e30c49 Merge pull request #2496 from Goober5000/weapon_selected
upgrade weapon_selected and related sexps
2020-06-23 08:45:00 -04:00
Goober5000 01cda9874e Merge pull request #2499 from Goober5000/turret_sexps_1
upgrade various turret sexps
2020-06-23 08:37:12 -04:00
Goober5000 ad54976711 upgrade various docking and cargo sexps 2020-06-23 08:24:58 -04:00
Fabian Woltermann d8aa134c9a Merge pull request #2494 from wookieejedi/expose-damp-to-scripting
Expose 'Damp' to Scripting
2020-06-23 10:40:42 +02:00
Goober5000 89242bc213 upgrade various turret sexps 2020-06-22 18:22:15 -04:00
Goober5000 c845e6ca3d upgrade add-remove-escort, damaged-escort-priority, and damaged-escort-priority-all 2020-06-22 18:13:47 -04:00
Goober5000 16c80bb0bb upgrade num-in-battle, num-in-wing, num-in-box 2020-06-22 18:10:33 -04:00
Goober5000 61a3ab10a3 upgrade weapon_selected and related sexps
primary/secondary weapon selected, energy percent, shields-left
2020-06-22 18:03:47 -04:00
Goober5000 dc28840fd2 Merge pull request #2495 from Goober5000/subsys_fixes
fix a few things with subsystem sexp operations
2020-06-22 18:01:12 -04:00
Goober5000 352a50775a fix a few things with subsystem sexp operations
1) Something wookieejedi noticed: destroying all turrets didn't trigger the DISARMED mission log event.  This is because a code ordering decision intended to accommodate the destroyed check caused the hitpoints to not be correct when they were checked within `do_subobj_destroyed_stuff`.  Instead I changed the blow-up check to use the same code for set-strength as for sabotage-strength.  This handles destruction properly and also tracks hitpoints properly.
2) Aggregate points were being recalculated for every subsystem operation where they only needed to be recalculated at the end of the sexp, so I moved that.
2020-06-22 14:43:41 -04:00
Fabian Woltermann b2306753cd more fixes.... 2020-06-22 18:13:07 +02:00
Fabian Woltermann 4c923d799e Travis demands sacrifice 2020-06-22 18:05:38 +02:00
Fabian Woltermann 3df8b6adee Just kidding, travis is never happy 2020-06-22 14:58:40 +02:00
Fabian Woltermann 3d76c5dde0 Use modern loops to make travis happy 2020-06-22 11:07:13 +02:00
Fabian Woltermann 94e392033e Get scripted animation triggers 2020-06-22 09:04:53 +02:00
Fabian Woltermann 2cb4320072 Code cleanup 2020-06-22 08:48:24 +02:00
Fabian Woltermann bb30c90568 More qtFred fixes 2020-06-22 08:38:42 +02:00
Fabian Woltermann cdc582c196 Fix FRED and QtFred issues 2020-06-21 23:04:01 +02:00
wookieejedi dd31579397 Update info 2020-06-21 15:25:36 -04:00
Fabian Woltermann 977a675a67 Add a default route to this particular switch 2020-06-21 21:22:21 +02:00
Fabian Woltermann 3bc5e7a729 Correct a casting error 2020-06-21 21:12:52 +02:00
Goober5000 13ea38fe2f Merge pull request #2490 from Goober5000/upgrade_subsys_sexps
upgrade the hits-left-subsystem sexps
2020-06-21 15:08:50 -04:00
Goober5000 cfa209530b Merge pull request #2491 from Goober5000/upgrade_iff_sexps
upgrade the iff sexps
2020-06-21 15:07:38 -04:00
Fabian Woltermann 898eabd725 Reorganizes the animation menu to be clearer and filterable 2020-06-21 20:49:36 +02:00
wookieejedi 21342f83c4 Expose 'Damp' to Scripting
Many physics values are exposed to scripting, including rotational damp. This PR exposes the linear damp to scripting. Note that in the code the linear damp is called `side_slip_time_const`.
2020-06-21 14:23:37 -04:00
Fabian Woltermann 74c87e2304 Trigger turret firing and turret fired anims 2020-06-21 19:25:50 +02:00
Fabian Woltermann 2b2d687bc7 Animations! 2020-06-21 18:19:04 +02:00
Fabian Woltermann ec494f0229 Change the model anim type enums to a enum class 2020-06-21 14:51:43 +02:00
Goober5000 c398b1dc73 Merge pull request #2488 from Goober5000/upgrade_ai_class_sexps
upgrade is- and change- ai-class
2020-06-20 23:23:19 -04:00
Goober5000 4034e73438 Merge pull request #2487 from Goober5000/upgrade_subsys_strength_sexps
upgrade subsys strength sexps
2020-06-20 22:13:00 -04:00
Goober5000 a24ba07e1e Merge pull request #2486 from Goober5000/upgrade_guardian_sexps
upgrade guardian sexps
2020-06-20 20:01:45 -04:00
Goober5000 09fe728c76 Merge pull request #2485 from Goober5000/message_and_ets
upgrade message function and ets sexps
2020-06-20 18:42:41 -04:00
Goober5000 d3e06effa1 Merge pull request #2480 from Goober5000/ammo_sexps
Ammo sexps
2020-06-20 17:33:51 -04:00
m!m 31c47509e8 Merge pull request #2483 from asarium/feature/cmdBriefApi
Add support for libRocket command briefing
2020-06-20 21:32:36 +02:00
Goober5000 883d048447 fix logical check 2020-06-20 14:23:09 -04:00
asarium ef395640d3 Add support for libRocket command briefing
This adds access to the command briefing data parsed from the mission
file to the scripting API so it can be used by the UI scripts for the
high res UI.

Also switches the animation support to using the generic anim to use
streaming to improve performance.
2020-06-20 18:17:01 +02:00
Goober5000 fd45163157 Merge pull request #2484 from asarium/build/fixQtInstall
Fix GitHub actions Qt install
2020-06-20 12:16:01 -04:00
Fabian Woltermann 7952622a79 wuip 2020-06-20 15:38:29 +02:00
Fabian Woltermann dd7e0576d4 Initial menus 2020-06-20 15:38:29 +02:00
Fabian Woltermann 1811f6c273 Code cleanup, grouping for primary weapons 2020-06-20 15:38:29 +02:00
asarium 980a9a2e96 Fix GitHub actions Qt install
Seems like there is a bug in aqtinstall in the newest version. 0.8 was
the last version to work correctly.
2020-06-20 10:21:19 +02:00
Goober5000 208198f327 upgrade message function and ets sexps 2020-06-19 16:48:17 -04:00
Goober5000 05784d28e1 upgrade guardian sexps 2020-06-19 16:45:03 -04:00
Goober5000 4e72c93523 upgrade subsys strength sexps 2020-06-19 16:41:23 -04:00
Goober5000 d3454b0486 upgrade is- and change- ai-class 2020-06-19 16:38:59 -04:00
Goober5000 3ffe294f5c upgrade the iff sexps 2020-06-19 16:37:30 -04:00
Goober5000 edc9fd0de4 upgrade the hits-left-subsystem sexps 2020-06-19 16:24:37 -04:00
Goober5000 803363f364 Merge pull request #2482 from Goober5000/fix_argument_detection
fix argument detection in sexps
2020-06-17 19:30:52 -04:00
Goober5000 3c17765ba0 fix argument detection in sexps
The previous method worked for FSO, but not FRED.  This method works for both.
2020-06-17 16:07:22 -04:00
Goober5000 187edb4679 Merge pull request #2481 from wookieejedi/fix-disarmed-delay
Fix new version of `disarmed-delay`
2020-06-17 15:38:12 -04:00
wookieejedi f5c8126783 Fix new version of disarmed-delay
Boolean needs to be false not true since `disarmed-delay` is not checking disabled status.
2020-06-17 12:32:52 -04:00
wookieejedi 4bb3132ebb Merge pull request #2474 from wookieejedi/add-large-path-radius-AI-option
Add Large Radius Option as AI Flag for Following Subsystem Path Points
2020-06-16 17:40:35 -04:00
Goober5000 b7e4f5c3c6 Merge pull request #2475 from Goober5000/time_docked_and_cargo
upgrade time-docked and various cargo sexps
2020-06-16 15:33:44 -04:00
wookieejedi 88866efe97 make min a variable 2020-06-16 15:00:35 -04:00
wookieejedi eab6eb639e update comments 2020-06-16 14:45:08 -04:00
wookieejedi 6ebc378827 incorporate comments 2020-06-16 14:39:37 -04:00
Goober5000 899e0c9967 Merge pull request #2476 from Goober5000/weapons_depleted
some more sexp upgrades
2020-06-16 14:15:12 -04:00
Goober5000 aadd7ecbf1 Merge pull request #2479 from Goober5000/objective_sexp_fix
fix some sexps
2020-06-15 22:56:35 -04:00
Goober5000 54409ec928 upgrade and merge the various ammo sexps 2020-06-15 22:54:38 -04:00
wookieejedi 03adff7e42 update logic 2020-06-15 22:22:29 -04:00
Goober5000 3a5884e2c2 fix some sexps
Fix the waypoints-done-delay sexp to work for both ships and wings.

Also, fix the set-object-speed sexp (which is deprecated anyhow) to work for all ships in a wing, not just the wing leader.
2020-06-15 21:13:01 -04:00
wookieejedi 3d77340917 fix missing print call 2020-06-15 10:49:54 -04:00
wookieejedi addbb683fc incorporate comments 2020-06-15 10:17:08 -04:00
Goober5000 e026558b21 some more sexp upgrades
* Merge primary and secondary weapons depleted
* Upgrade the nav/autopilot sexps
2020-06-15 01:32:13 -04:00
Goober5000 a034c3e8da upgrade time-docked and various cargo sexps 2020-06-15 00:33:49 -04:00
Goober5000 7f1d21e69a Merge pull request #2472 from Goober5000/time_sexps
merge and upgrade the time sexps
2020-06-14 23:43:55 -04:00
Goober5000 dc30a7834a Merge pull request #2470 from Goober5000/combine_goal_sexps
combine goal sexps
2020-06-14 23:25:46 -04:00
Goober5000 095a392d5d Merge pull request #2471 from Goober5000/combine_other_sexps
combine and upgrade more sexps
2020-06-14 22:24:31 -04:00
Goober5000 133d73f14e Merge pull request #2473 from asarium/fix/2468
Completely remove santlr4_shared target
2020-06-14 22:13:30 -04:00
Goober5000 fc36b7ce2c Merge pull request #2469 from Goober5000/ship_flag_check
small sexp upgrades
2020-06-14 21:59:44 -04:00
wookieejedi a4f4670b6d remove print statement 2020-06-14 16:40:01 -04:00
wookieejedi 34dd460efb Update naming 2020-06-14 16:39:10 -04:00
wookieejedi 683b433733 fix name 2020-06-14 16:06:43 -04:00
wookieejedi 217778e165 Add Large Raduis Option as AI Flag for Following Path Points
Previously, the default distance for determining if a ship had finished a point in a model path was only 5. This worked fine for ships with low damp or no Newtonian physics. However, it did not work well with ships that use higher damps or Newtonian physics, becuase those ships contiunatlly overshoot that 5 meter distance and get stuck flying in a large circle trying to reach that point. This fix allows modders to set an AI flag to specify that the path distance check uses a larger value of 775 for points that are not the last point in the path. If desired I can add a game settings option that allows modders to set this value.
2020-06-14 16:03:51 -04:00
asarium 56f82479f8 Completely remove santlr4_shared target
This fixes #2468.
2020-06-14 21:25:59 +02:00
Goober5000 aedf541e37 combine hits-left and sim-hits-left 2020-06-14 14:35:15 -04:00
Goober5000 426498efa4 merge and upgrade the time sexps 2020-06-14 14:29:45 -04:00
Goober5000 63d40b7edc combine and upgrade more sexps
This combines the alt-name and callsign sexps, as well as the ship-class and ship-type sexps.
2020-06-14 14:21:31 -04:00
Goober5000 75d8116451 combine goal sexps 2020-06-14 14:12:36 -04:00
Goober5000 b59da60027 also combine gse_recharge 2020-06-14 14:07:37 -04:00
Goober5000 63ccb84299 combine is_ship_stealthy and is_friendly_stealth_invisible, and fix a spelling mistake 2020-06-14 14:02:05 -04:00
Fabian Woltermann e440b978e7 Merge pull request #2467 from EatThePath/spew-more
Extend weaponspew to handle burst weapons and beam weapons
2020-06-14 12:30:26 +02:00
Fabian Woltermann 47afe9303d Merge pull request #2449 from Goober5000/upgrade_objective_sexps_2
upgrade the objective sexps 2
2020-06-14 12:29:25 +02:00
m!m ae3ea33a8a Merge pull request #2465 from asarium/feature/parameterDocumentation
Add capability to have comments in scripting args
2020-06-14 11:55:29 +02:00
m!m 194bd79029 Merge pull request #2466 from asarium/fix/antlrInstall
Fix Antlr installation step
2020-06-14 11:53:33 +02:00
Goober5000 1861065495 add these tweaks to keep the major merges in optimum shape 2020-06-13 21:37:13 -04:00
David Gibson ed5f6a260f Adjusted spacing on weapon descriptions for beams to match formatting for non-beams 2020-06-13 18:58:57 -05:00
David Gibson e9a5bb3250 Restores mvp-style range and velocity handling, and adapts it properly to consider beam weapons. 2020-06-13 18:22:25 -05:00
David Gibson a5ba2ceba9 Corrected comment inaccuracies 2020-06-13 18:13:06 -05:00
David Gibson 0ad15fd3ef Accounted for the differences in range/velocity handling for beams 2020-06-13 17:05:06 -05:00
David Gibson 930b3fe699 Second pass on burst and beam spew for accuracy 2020-06-13 16:14:59 -05:00
David Gibson ffcb4b8c99 first pass of including beam and burst weapons 2020-06-13 14:48:01 -05:00
Goober5000 3ecc0062ab small tweak 2020-06-13 15:16:59 -04:00
Goober5000 a458a0f608 Merge pull request #2409 from Goober5000/weaponspew_tweak
expand -weaponspew to all non-beam weapons
2020-06-13 15:11:33 -04:00
asarium 54b3b9c05e Fix Antlr installation step
This will remove the installation rules for Antlr since they are not
relevant for us.
2020-06-13 21:07:41 +02:00
Goober5000 ff1e328c60 tweak sexp name 2020-06-13 15:07:32 -04:00
Goober5000 bfc8075226 upgrade the objective sexps 2
There's another chunk of objective sexps farther down in sexp.cpp, so this PR addresses those.
2020-06-13 15:06:21 -04:00
asarium 15db77d7fe Add capability to have comments in scripting args
Putting something between /* and */ behind a parameter will make that
appear in the HTML and JSON output now.
2020-06-13 21:03:22 +02:00
Goober5000 ec31c969a0 Merge pull request #2448 from Goober5000/upgrade_objective_sexps
upgrade the objective sexps
2020-06-13 14:59:15 -04:00
Goober5000 8b0e64fa39 Merge pull request #2464 from Goober5000/shut_up_wesley
fix a couple things with mainhall intercom sounds
2020-06-13 14:55:05 -04:00
Goober5000 6771462206 Merge pull request #2452 from Goober5000/upgrade_distance_sexps
fix the way SEXPs check ship distances
2020-06-13 14:50:29 -04:00
m!m f4a8cfcfa0 Merge pull request #2463 from asarium/feature/unifyLuaDoc
Unify and clean up Lua documentation generation
2020-06-13 20:33:35 +02:00
asarium 4a6628e16f Unify and clean up Lua documentation generation
I added a pretty generic container structure for the scripting
documentation when adding JSON output. However, I did not use that new
structure for the HTML output since that was just too much work.

This moves the HTML output over to the new structure so now the
scripting API handling code is independent from how the resulting
documentation is generated. I also moved that code out of the main
scripting code which removes quite a lot of clutter in those files.

This is mostly a straight port of the old code with no significant
changes (except the changes to make it use the new data).
2020-06-13 16:46:26 +02:00
Goober5000 0d1c0e359c silence door and misc sounds too 2020-06-13 01:31:26 -04:00
Goober5000 0ab274dae8 also stop ambient sounds if we're switching campaigns 2020-06-13 00:02:40 -04:00
Goober5000 67ed3a4c7b fix a couple things with mainhall intercom sounds
As noticed in issue #2458, intercom sounds did not stop when pausing the game or loading a mission.  I fixed this by augmenting `main_hall_stop_ambient()` to also stop the intercom.

Additionally, it turns out that the intercom delays were not being calculated correctly due to a very bizarre random number formula.  I overloaded `rand32()` to add a min/max variant and used this instead.
2020-06-12 23:13:11 -04:00
niffiwan f417a87e98 Merge pull request #2461 from asarium/fix/scriptingExit
Remove debug exit
2020-06-13 13:05:34 +10:00
Goober5000 388e4734c5 Merge pull request #2460 from Goober5000/cache_argument_node
cache on the argument node
2020-06-12 17:09:43 -04:00
Fabian Woltermann 0f551fada7 Merge pull request #2459 from The-E/feature/lab_weapons_display
Allow weapons in the lab
2020-06-12 22:59:49 +02:00
Fabian Woltermann e967bd0d68 Use a subsystem index instead of the subobject number to blow up subsystems 2020-06-12 22:36:10 +02:00
asarium d0a642903b Remove debug exit 2020-06-12 21:19:48 +02:00
Goober5000 1d54eb1755 do not cache argument nodes because the action nodes aren't flushed 2020-06-12 14:55:38 -04:00
Fabian Woltermann bf8416d0cf Merge pull request #2456 from JohnAFernandez/Prevent-Edge-Case-Multi-Crash
Prevent Standalone Crash
2020-06-12 17:01:23 +02:00
Fabian Woltermann 43cc6c458a Merge pull request #2457 from asarium/feature/antlrArgParser
Use Antlr for generating argument list parser
2020-06-12 16:13:16 +02:00
Fabian Woltermann 701a2b8c91 More code cleanup 2020-06-12 09:28:15 +02:00
Fabian Woltermann 9f4aab01ea Defer weapon loading until we actually need them
Small code cleanup
2020-06-12 09:24:53 +02:00
Goober5000 49801a152e move from sexp.h to sexp.cpp, and friendlier-ize arg_item 2020-06-12 00:51:50 -04:00
Goober5000 d182b2d951 cache on the argument node
When special arguments are used, the current node cannot be cached because it always contains "<argument>".  So this feature adds the ability to forward the caching to the SEXP node that contains the value being referenced.  To enable this, the internal argument list now contains both the argument text and the node being referenced.  (If there is no node to reference, such as with `for-counter`, the reference will be -1.)
2020-06-12 00:26:31 -04:00
asarium ca27ae16f2 Use Antlr for generating argument list parser
This adds an Antlr grammar for parsing argument lists instead of using a
hand written parser. This allows to write much more complicated syntax
constructs and have all the code being auto-generated. It will also
produce a much more correct parser instead of having all those hacks in
the hand-written one.

This also adds (in addition to supporting the previous syntax) support
for function types along with support for them in HTML and JSON output
formats.

The ANTLR generated parser is included in source form so that it is not
necessary to have an ANTLR installation around if you are not going to
change the grammar. Also includes the necessary runtime code from Antlr.
2020-06-11 21:57:52 +02:00
Fabian Woltermann df99d49681 Make travis happy..... 2020-06-11 18:09:12 +02:00
Fabian Woltermann cf119d241e Initialize Beams too 2020-06-11 16:37:09 +02:00
Fabian Woltermann c19cfccdfa Remove more unused variables 2020-06-11 16:30:41 +02:00
Fabian Woltermann 531cb27254 Make weapon firing more elegant 2020-06-11 16:20:56 +02:00
Fabian Woltermann 69c511497d Remove unused variable 2020-06-11 14:47:34 +02:00
Fabian Woltermann 0c5040e6e1 Avoid int comparison warnings 2020-06-11 14:39:57 +02:00
Fabian Woltermann 779b45417c Use the correct import path 2020-06-11 14:28:55 +02:00
Fabian Woltermann 9f30736a1a Put the action window submenus into separate windows to avoid overlapping menu items. 2020-06-11 13:41:20 +02:00
Fabian Woltermann 1904979006 Get the external weapons display function back
Add action to switch loadouts
Add action to fire weapons
2020-06-11 11:18:08 +02:00
JohnAFernandez c794bef328 Prevent Standalone Crash
If a standalone has only one player connected in a dogfight mission it will crash.  Not fully sure why this doesn't crash in other circumstances, but this check should just be here, anyway.
2020-06-09 23:37:55 -04:00
Goober5000 8a3a40a617 Merge pull request #2455 from Goober5000/fix_compact_multitext
fix compact_multitext_string
2020-06-09 20:40:00 -04:00
Goober5000 f962804b30 fix compact_multitext_string
This is a follow-up to PR #2373.  Tomimaki noticed that the first character was truncated in the cutscene description, and it turned out that the algorithm was slightly wrong.
2020-06-09 19:11:34 -04:00
Fabian Woltermann 84ee31f12a Merge pull request #2441 from EatThePath/min-angles
Settable minimum spawn angles.
2020-06-08 19:52:57 +02:00
Goober5000 8c60e6c5a8 Merge pull request #2453 from Goober5000/xstr_tweak
match strings.tbl
2020-06-08 13:48:20 -04:00
Goober5000 dcbb528d04 change sexp names 2020-06-08 11:52:16 -04:00
Goober5000 92ffff7fac match strings.tbl 2020-06-08 00:18:58 -04:00
Goober5000 1ba8c66a3a tweak the api 2020-06-07 22:47:13 -04:00
Goober5000 156bc2c5d4 fix the way SEXPs check ship distances
Retail has a hud_find_target_distance function that returns the distance between the player position and a bounding box.  This is useful for the HUD because it shows the distance to the perimeter of an object like a jump node or a large ship.  However, this function was re-used for the `distance` SEXP, resulting in the awkward situation where the distance is measured from one ship's center to another ship's bounding box.  This can lead to unexpected results and it also means that the SEXP returns a different distance when the arguments are swapped.

This PR deprecates the original SEXP and introduces the new SEXPs `center-distance` and `bbox-distance` which use consistent methods for both ships.  It also renames the `distance-ship-subystem` SEXP to `center-distance-subsystem` and adds a new `bbox-distance-subsystem` SEXP.
2020-06-07 22:36:46 -04:00
m!m 25d16c3102 Merge pull request #2446 from asarium/feature/scriptingArgParsing
Add parser for scripting argument documentation
2020-06-07 12:06:28 +02:00
m!m c3ac0a3461 Merge pull request #2421 from asarium/feature/luaExecutors
Add feature to execute Lua coroutines at specific points
2020-06-07 12:04:44 +02:00
Goober5000 f0fea13d04 address parameter shadowing noticed by clang 2020-06-07 01:00:29 -04:00
Goober5000 2eea3d3aa8 this is good to have as well 2020-06-07 00:43:18 -04:00
Goober5000 af187f7fbf add the change in function calls 2020-06-07 00:40:20 -04:00
Goober5000 09183fee12 upgrade the objective sexps
Another - hopefully bite-size - sexp upgrade stage.  This takes the objective SEXPs (those which are primarily concerned with the mission log) and upgrades them to use the ship registry.
2020-06-07 00:22:33 -04:00
Goober5000 fa4743a341 Merge pull request #2438 from Goober5000/get_player_from_ship_node
upgrade get_player_from_ship_node
2020-06-06 23:31:33 -04:00
asarium d54d7d41e6 Output parameter information to JSON
Also fixes the parameter strings which currently could not be parsed by
the argument parser.
2020-06-06 23:45:36 +02:00
asarium 614a636ed5 Fix clang-tidy issues
Not sure why travis saw these since I didn't change anything there but
fixing these is also good.
2020-06-06 23:24:08 +02:00
wookieejedi 812452c492 Merge pull request #2447 from The-E/fix/lab_issues
Fix a lab issue and add more explosions
2020-06-06 16:32:03 -04:00
asarium 016c07dc3a Add feature to execute Lua coroutines at specific points
This adds a mechanism for running generic operations at specific points
of the frame execution. This can be used by any part of the code an not
just Lua since it simply executes std::functions. It also adds an
"execution context" concept that specifies in which situation an
operation should be executed.

This is then used by the Lua Coroutines code for resuming coroutines at
specific points instead of always when the awaited promise resolves.
2020-06-06 21:29:48 +02:00
Goober5000 3a8569daad this is now needed 2020-06-06 14:31:36 -04:00
David Gibson 536e97592d minor style fixes 2020-06-06 13:17:12 -05:00
Goober5000 e38a973e80 use enum class 2020-06-06 14:15:55 -04:00
Goober5000 f0cf899787 This expands -weaponspew to optionally list all non-beam weapons. 2020-06-06 14:15:55 -04:00
Goober5000 716cd15281 address feedback 2020-06-06 13:55:00 -04:00
Goober5000 56f3ffae11 convert to p_objp to be consistent 2020-06-06 13:55:00 -04:00
Goober5000 6d53697725 upgrade get_player_from_ship_node
This PR upgrades the function, and the sexps that use it, to take advantage of the new sexp caching.  It also makes `script_eval_multi` more robust in the face of players who might be respawning.
2020-06-06 13:54:59 -04:00
Goober5000 1b11d0d6a9 Merge pull request #2437 from Goober5000/oswpt_and_ship_flag_refactor
another stage of the sexp refactor
2020-06-06 13:53:42 -04:00
m!m 9eb7b4a27b Merge pull request #2445 from asarium/fix/ensureLuaFunctionState
Ensure Lua functions are executed in correct state
2020-06-06 18:59:28 +02:00
Fabian Woltermann 3ee7200ccd Make Travis happy, maybe? 2020-06-06 17:31:46 +02:00
David Gibson 025cf3c7b9 converted some NULL pointers to nullptr as travis commands 2020-06-06 10:11:46 -05:00
Fabian Woltermann c7d08eead3 Add an action to destroy individual subsystems 2020-06-06 15:00:49 +02:00
asarium 367564733e Add parser for scripting argument documentation
This adds a simple parser that takes the existing argument
documentations and parses them so that better documentation can be
generated from that information. This should be sufficient for providing
proper documentation generation for the most common and simple cases of
argument lists (type, name, possible default value, and optional
groups).
2020-06-06 14:02:33 +02:00
asarium 04174e00f8 Ensure Lua functions are executed in correct state
This will ensure that Lua functions will always be executed in the
correct Lua state. Since we now have multiple threads (which are
different lua_State objects) it is possible that the current code could
execute a Lua function in the main state instead of the thread that is
currently executing. This can lead to weird behavior and probably also
to issues inside Lua.
2020-06-06 14:00:23 +02:00
m!m 9e11710369 Merge pull request #2444 from asarium/feature/luaTracing
Add scripting API for tracing custom code
2020-06-06 13:54:11 +02:00
David Gibson b7aeb763f3 fixed my misunderstanding of the const changes in static_rand_cone 2020-06-05 21:38:06 -05:00
David Gibson 9ec63f0882 fixed inconsistent constness in the new overload for static_rand_cone, and added constness to the existing version. 2020-06-05 21:38:06 -05:00
David Gibson 64f61df93f added multiplayer versionof min angle spawn logic 2020-06-05 21:38:06 -05:00
David Gibson a20096abfa added min-angle supporting version of static_rand_cone 2020-06-05 21:38:06 -05:00
David Gibson bb76e2fdcd Implemented minimum angle option for spawned weapons, single player only currently. 2020-06-05 21:38:06 -05:00
Goober5000 13acf77f5a address feedback 2020-06-05 21:34:50 -04:00
Goober5000 5536fbf13b Merge pull request #2443 from Goober5000/refine_exited_state
refine ShipStatus::EXITED state
2020-06-05 20:36:29 -04:00
Goober5000 05d1262abe Merge pull request #2442 from Goober5000/update_clang_tidy
update .clang-tidy based on Discord comments
2020-06-05 20:26:21 -04:00
asarium e8e549ff08 Add scripting API for tracing custom code
This can be used by Lua code to trace the runtime of their code in the
same way the engine already is capable of doing for most in-mission and
mission loading code.

Also adds some tracing scopes to the libRocket code
2020-06-05 22:14:55 +02:00
Goober5000 5f1957a9f8 Merge pull request #2439 from wookieejedi/fix-armor-string-function
Fix minor mis-setting of script function for displaying armor string
2020-06-05 14:23:55 -04:00
Goober5000 d0f1519f60 refine ShipStatus::EXITED state
There is a slight discontinuity where ships that are destroyed have their mission log entries added a bit before `ship_cleanup` is called.  This addresses that.
2020-06-05 14:20:35 -04:00
Goober5000 fdf2bf6ba2 update .clang-tidy based on Discord comments
This removes `readability-avoid-const-params-in-decls` from the list of things clang checks.  Function declarations and headers should be the same, so it makes no sense to warn about `const` in one but not the other.

This also alphabetizes the exceptions for easier reading.
2020-06-05 13:57:24 -04:00
Fabian Woltermann 67d048aa6c further improvements 2020-06-05 16:26:57 +02:00
wookieejedi 59073533a8 Fix minor missetting of script function for displaying armor string
Previosuly, using the script function ArmorClass did not properly display the actual armor class, instead it always displayed -1. This PR fixes that. I have tested these changes and they now proprely display the armor class.
2020-06-04 18:06:03 -04:00
Goober5000 f7b43e5fd0 convert to p_objp to be consistent 2020-06-04 13:06:06 -04:00
m!m 2e8fc3264d Merge pull request #2430 from asarium/feature/libRocketCampaign
Make the campaign room API available to scripting
2020-06-04 16:55:27 +02:00
wookieejedi 8ce3f1e365 Merge pull request #2436 from wookieejedi/fix-weapon-loading
Fix Pilot and Subsystem Weapon Loading
2020-06-04 10:04:43 -04:00
Goober5000 77d26970ff and another one 2020-06-04 01:58:35 -04:00
Goober5000 57d2cb2871 deal with clang 2020-06-04 01:28:21 -04:00
Goober5000 a5be6ed2ea another stage of the sexp refactor
This PR uses `eval_ship` and `eval_wing` to optimize `object_ship_wing_point_team` and `sexp_deal_with_ship_flags`.  The API changed a bit, but to ensure compatibility, there are fields and functions to support the old behavior.  These are temporary and will be removed when all changes have been merged via PRs.
2020-06-04 00:44:32 -04:00
wookieejedi b2489eff7d add comments 2020-06-04 00:31:10 -04:00
wookieejedi e850f043f7 Fix Pilot and Subsytem Weapon Loading
This PR fixes the logic for setting weapon amounts for both the pilot and subsystems of a ship. Previoisly in #PR 2318 this distinction was not checked, so this PR properly adds that check and distinction.
2020-06-03 23:35:27 -04:00
asarium bf521f1c6b Make the campaign room API available to scripting
This makes the necessary campaign room API available to the scripting
API so that it can be implemented using libRocket. Also adds an
engine.sleep function which I needed for making my Lua debugger work
reliably.
2020-06-03 17:49:15 +02:00
Fabian Woltermann ee3da1cb55 Merge pull request #2435 from Goober5000/constify_autopilot
add const-correctness to the autopilot API
2020-06-03 10:40:31 +02:00
Goober5000 70ee8461ab add const-correctness to the autopilot API
This was suggested by the sexp overhaul but is useful on its own too.  Some of the `const` changes cascade a bit.
2020-06-02 23:06:48 -04:00
Tyler Blount 4b49f49206 Merge pull request #2434 from TRBlount/fix/thruster_depth
Temporary fix for thrusters rendering through ship geometry
2020-06-02 15:28:17 -06:00
Goober5000 f948687ce7 Merge pull request #2429 from Goober5000/beam_turret_sexp_consolidation
consolidate several sexps related to beams and turrets
2020-06-02 17:07:48 -04:00
Goober5000 d1214a0164 Merge pull request #2431 from Goober5000/sexp_overhaul_infrastructure
additional infrastructure for sexp caching and ship registry
2020-06-02 16:08:19 -04:00
Tyler Blount 37bf779e77 Remove unused variable 2020-06-02 13:02:48 -06:00
Tyler Blount 28fd52aa51 Change tertiary thruster depth 2020-06-02 11:52:29 -06:00
Tyler Blount 8a6b784d5f Merge pull request #2433 from The-E/fix/thrusters_in_lab
Switch on the physics system when displaying thrusters
2020-06-02 11:32:51 -06:00
Fabian Woltermann dd2e01d9a9 Also make sure that weapon thrusters work 2020-06-02 08:44:19 +02:00
Fabian Woltermann e566dc2f30 Switch on the physics system when displaying thrusters 2020-06-02 08:34:24 +02:00
Goober5000 ff3939b437 add a couple things to bump the CI build 2020-06-02 00:44:58 -04:00
Goober5000 80f0663cfa shut up, clang 2020-06-01 23:11:29 -04:00
Goober5000 ed5360899e add back the send_ship(shipnum) funcion, and also add the sim-hull fix 2020-06-01 21:29:18 -04:00
Goober5000 6354e5d2ce add non-sexp.cpp (and minimal sexp.cpp changes) from overhaul wip 2020-06-01 21:14:10 -04:00
Goober5000 e47540b47a deal with shadowed declaration 2020-06-01 18:22:50 -04:00
Goober5000 289664dea2 consolidate several sexps related to beams and turrets
This is part of the ongoing sexp overhaul relating to performance and caching.  This PR combines functions for several sexps that are very similar, and it also uses the `eval_ship` speedy lookup function.  As a bonus, it allows `turret-tagged-only` and `turret-tagged-clear` to run for multiple ships at a time.
2020-06-01 00:19:10 -04:00
Goober5000 a782fc560e Merge pull request #2427 from Goober5000/tree_lookup_speedup
optimize sexp tree lookup
2020-05-31 16:49:37 -04:00
wookieejedi 9ad57ee9e3 Merge pull request #2426 from wookieejedi/toggle-intel-entries
Adds `tech-remove-intel-xstr` sexp
2020-05-31 16:48:24 -04:00
wookieejedi 2526fa70dc Add in commented sections 2020-05-31 14:09:31 -04:00
wookieejedi 9109876de7 Fix overlapping ID 2020-05-31 13:53:10 -04:00
wookieejedi 79f98a223d and one more spacing fix 2020-05-31 13:48:46 -04:00
wookieejedi f3a37494f6 Fix last missing character 2020-05-31 13:47:50 -04:00
wookieejedi 855048e126 fix missing character 2020-05-31 13:45:40 -04:00
Goober5000 3663c3f9e9 optimize sexp tree lookup
The `special_argument_appears_in_sexp_tree` function can run multiple times per event, especially for repeating events, so it's a good idea to cache the result.  This avoids the need to iterate through potentially the entire tree, checking every single node.
2020-05-31 13:39:17 -04:00
wookieejedi aa502c4b81 Incorporate feedback 2020-05-31 13:30:48 -04:00
wookieejedi 4ecb35b97f Adds tech-remove-intel-xstr sexp
In regards to @MjnMixael's request in #2425, this PR adds the sexp `tech-remove-intel-xstr`, which simply toggles off the specified intel entry.
2020-05-31 09:35:29 -04:00
Goober5000 c41d9bbf5a Merge pull request #2424 from The-E/fix/weapon_crashes_lab
Fix a crash in the Lab when viewing bombs
2020-05-30 22:35:37 -04:00
Fabian Woltermann 65a8f39479 Remove unnecessary comment 2020-05-30 21:05:11 +02:00
Fabian Woltermann 922b06fe3b These checks are not necessary 2020-05-30 21:04:24 +02:00
Fabian Woltermann fd37e21a11 Clean up objects and particle effects when switching models.
Also pause physics when we do not need them.
2020-05-30 21:01:47 +02:00
Fabian Woltermann b6dceaf692 Do not do any radar processing nonsense while in the lab 2020-05-30 20:46:50 +02:00
Goober5000 3851aba765 Merge pull request #2420 from Goober5000/use_get_operator_optimizations
use get_operator_* optimizations
2020-05-30 12:42:10 -04:00
Goober5000 52be12f262 tweak 2020-05-30 01:19:46 -04:00
Goober5000 a039b41c3b use get_operator_* optimizations
Awhile back, the get_operator_const and get_operator_index functions were enhanced to cache the result of the operator lookup.  But this only works when called on the node itself, not the text.  So let's call these functions on the node whenever possible.
2020-05-30 00:58:29 -04:00
m!m c37ea59cbd Merge pull request #2419 from asarium/fix/mainHallOutOfRange
Fix out of range memory access in main hall
2020-05-29 16:27:27 +02:00
m!m 408fe27c32 Merge pull request #2397 from asarium/feature/luaPromises
Add Lua API for promises and async coroutines
2020-05-29 16:27:15 +02:00
wookieejedi ab0f7d853d Merge pull request #2404 from wookieejedi/fix-draw-offscreen-indicator-lua-call
Fixes gr.drawOffscreenIndicator
2020-05-28 13:29:53 -04:00
asarium 74cc1d4c92 Fix out of range memory access in main hall
If you press a key such as Ctrl the code gets a bitfield with a high bit
set so when the key code is used as an index it produces an out of range
error.

Thank you AddressSanitizer!
2020-05-28 18:03:01 +02:00
wookieejedi 6a36babf54 move restore out of if block 2020-05-28 10:01:13 -04:00
Fabian Woltermann e4f5771420 Merge pull request #2418 from The-E/fix/debris_creation
Make sure that large ship debris is correctly markes as not expiring
2020-05-27 20:34:15 +02:00
Fabian Woltermann 1055d026f6 Make sure that large ship debris is correctly markes as not expiring 2020-05-27 18:20:45 +02:00
Goober5000 d5e7b7ffed Merge pull request #2410 from notimaginative/silence_debug_spew
remove super annoying debug spew on console
2020-05-27 10:38:50 -04:00
Goober5000 27afbed6e1 Merge pull request #2399 from wookieejedi/fix-ai-guard-this
Fix 'Guard Attack This' Behavior with AI Flag
2020-05-26 17:52:46 -04:00
Goober5000 b773ed8fd7 Merge pull request #2416 from The-E/fix/debris_deletion
Fix a bug in the debris deletion code
2020-05-26 17:16:37 -04:00
Fabian Woltermann 9907c98fe2 Fix unintentional behaviour change, add comment about the purpose of the Hull_debris_list 2020-05-26 21:11:55 +02:00
Fabian Woltermann 0c9bbe5223 Fix a bug in the debris deletion code introduced by the lab explosion feature commit. This also makes the debris code use the new flag system to mark debris pieces as nondeleteable instead of relying on a magic lifeleft value. 2020-05-26 16:55:45 +02:00
asarium 08c6e0d072 Introduce error state of promises
This is necessary after all to properly clean up resources if an
operation becomes invalid.

Also bumps Visual Studio version to 2017 on Appveyor.
2020-05-24 22:07:09 +02:00
Goober5000 5cfc3cf059 Merge pull request #2413 from Goober5000/fred_loadout_fix
fix incorrect consolidation
2020-05-24 13:11:43 -04:00
Goober5000 bec5d02750 Merge pull request #2414 from Goober5000/fix_retail_save_format
fix corrupted retail save format
2020-05-24 13:11:29 -04:00
wookieejedi 38e3c425c5 remove flag 2020-05-24 09:00:26 -04:00
asarium ebcf686cf7 Add Lua API for promises and async coroutines
This adds a Lua API for representing asynchronous operations and running
coroutines based on those operations comfortably. This is very similar
to features other languages have introduced such as C# or JavaScript. In
fact, the whole "promise" thing is derived from how JavaScript
represents these operations.

This is the initial and very basic system for supporting async
coroutines in Lua. There is no native support for running these
operations at specific points (they run whenever the awaited promise
resolved) or making sure they do not leak through different game states.
2020-05-24 12:36:01 +02:00
Goober5000 2d3fef4cf2 fix corrupted retail save format
This is a follow-up to #2348.  One part of the change wasn't tested, and it turned out to be important.
2020-05-24 01:11:19 -04:00
Goober5000 89be07116b fix incorrect consolidation
In PR #2318, I consolidated the code a little too much.  The partial-loadout checks should not have been under the `SUBSYS_STATUS_NO_CHANGE` check, because this would cause partial loadouts to fail if the percentage was adjusted but the actual weapon in the loadout was not changed.

Thanks to @wookieejedi for spotting this bug.
2020-05-24 00:22:13 -04:00
Goober5000 96bee4a4fa Merge pull request #2405 from Goober5000/xstr_tweak
tweak some untranslated internal XSTR strings
2020-05-21 23:35:19 -04:00
Goober5000 98d7a9f6f6 tweak some untranslated internal XSTR strings
This is a minor follow-up to PR #2390.  There are a few minor differences between untranslated strings and the internal strings in strings.tbl; this PR fixes them.
2020-05-21 19:09:03 -04:00
Goober5000 3e638bbe9e Merge pull request #2406 from asarium/build/fixQtCache
Use architecture specific cache for Qt
2020-05-21 19:08:31 -04:00
asarium e4d10fd127 Use architecture specific cache for Qt
Otherwise 32-bit might bet binaries for 64-bit or the other way around.
2020-05-21 23:17:54 +02:00
wookieejedi 47e6162eba update so check includes wing section 2020-05-21 15:29:26 -04:00
m!m 7c3e5bc4fc Merge pull request #2403 from asarium/build/githubQt
Install Qt in GitHub actions
2020-05-21 17:34:14 +02:00
Goober5000 539662fd28 Merge pull request #2402 from Goober5000/sexp_data_caching
SEXP data caching
2020-05-21 10:45:04 -04:00
Goober5000 57b534c554 extra insurance 2020-05-20 21:42:00 -04:00
wookieejedi 0b0a78cb06 cleanup whitespace diff 2020-05-20 12:25:25 -04:00
Goober5000 6ec28f6de5 Merge pull request #2389 from Goober5000/ai_goal_target_name_fix
make Goal_target_names dynamic
2020-05-19 23:27:40 -04:00
wookieejedi 94689972b6 refactor function per discussion 2020-05-19 16:28:27 -04:00
wookieejedi 6143953dd9 Fixes gr.drawOffscreenIndicator
Previously the scripting call `gr.drawOffscreenIndicator` did not properly draw the indicator and/or return coordinates. After some bug hunting it turns out it is because there gauge was not being set to active. This PR adds that line and retores the intended functionality. Tested and works as expected.
2020-05-19 15:31:18 -04:00
Goober5000 e265727ea1 add catch based on feedback 2020-05-19 14:50:42 -04:00
Goober5000 fb27a8a599 or this 2020-05-19 13:48:47 -04:00
Goober5000 b4843b466d use default member initializers and non-shadowy parameter names 2020-05-19 13:48:47 -04:00
Goober5000 ee953aa270 don't remove the parse object because it's still valid 2020-05-19 13:48:47 -04:00
Goober5000 9923c87bc1 cache ships, numeric literals, and variables 2020-05-19 13:48:47 -04:00
Goober5000 cf7f8446b2 wip 2020-05-19 13:48:47 -04:00
Goober5000 8667891fc2 use dynamic strings 2020-05-19 13:48:06 -04:00
Goober5000 5f74388790 add newline 2020-05-19 13:48:06 -04:00
Goober5000 067b250be9 make Goal_target_names dynamic
If ever there were more than 100 goal targets in a mission, the old version of ai_get_goal_target_name would start corrupting memory.  Rather than making a hacky workaround, this just makes it dynamic.
2020-05-19 13:48:06 -04:00
Goober5000 775984ae36 Merge pull request #2390 from Goober5000/xstr_revert
clean up handling of translated vs. untranslated English
2020-05-19 12:51:41 -04:00
Goober5000 3a7e604af9 Merge pull request #2401 from Goober5000/small_sexp_fix
make some debug code only run in debug
2020-05-19 12:50:19 -04:00
Goober5000 d4c429f3b1 Merge pull request #2394 from Goober5000/weapon_stats
Weapon statistics for comparison and extended descriptions
2020-05-19 12:49:35 -04:00
Goober5000 933f20efaa Merge pull request #2392 from Goober5000/modify_weapons_loadout_check
modify weapons loadout check
2020-05-19 12:48:59 -04:00
wookieejedi 5155e23430 Add as default to version 20 and up 2020-05-19 11:38:02 -04:00
asarium e3b1beb187 Install Qt in GitHub actions
This allows building QtFred on Windows which was the last thing missing
to achieve parity with Appveyor.
2020-05-19 17:11:05 +02:00
m!m 6ca29a79ba Merge pull request #2400 from asarium/build/clangReadability
Enable sensible clang readability checks
2020-05-19 17:04:29 +02:00
Taylor Richards 95690b1e11 properly update stats info in chat lobby 2020-05-19 04:15:06 -04:00
Taylor Richards 4f2765fdf2 compensate for ignored pad value in stats struct size 2020-05-19 04:15:06 -04:00
Taylor Richards 899997d1c1 fix sizing issues in stats conversion
These issues caused the stats packet to keep growing during
every conversion between network and game structs causing
memory issues and data corruption. These bugs were hidden by
the fact that stats packets were discarded by the server due
to another bug.
2020-05-19 04:15:06 -04:00
Taylor Richards 4e8fa1253b remove super annoying debug spew on console 2020-05-19 04:13:40 -04:00
Goober5000 498e5ef42e make some debug code only run in debug
This code is highly inefficient (find_parent_operator() is O(n) for Num_sexp_nodes, and it runs every frame for all sexps with negative values) and should not actually be necessary.  But it is useful as a debug tool, so I added some #ifdef's.
2020-05-18 21:05:41 -04:00
asarium d29e236250 Enable sensible clang readability checks
This enables the clang readability checks that I found to be sensible. I
disabled a few that would have caused a lot of unnecessary warnings in
our code.
2020-05-18 20:57:19 +02:00
wookieejedi 584db57cce Fix 'Guard Attack This' Behaviow with AI Flag
This PR allows the setting `Guards Attack This` in `objecttype.tbl` to actually work.

Background: there are two instances in the code where AI that is patrolloing/guarding a ship decideds to go attack guardees attacker. One case is if the guardee is hit, and the other case if there are just hostile ships present (ie it scans the mission every so often).
The `Guards Attack This` check was only applied to the scna the mission case, and not the guardee hit case. Thus if the guardee was hit by a ship that had the  `Guards Attack This` setting off, the guard would still attack since that check was never being performed for that guard case. By default all object types hae `Guards Attack This` set to `true.` But if a modder didn't want fighters guarding a ship to go off and try to kill a large captial ship then they may think setting this value would be a good way to do that. Unforunately this wouldn't work, for the reasons outlined above.

Chnage: this PR adds the `Guards Attack This` check into the guardee is hit case, estentally making the behavior work as expected by a modder. Given this is a AI behavior change I have added an optional AI flag to toggle this fix on. I have tested this and it works as expected.
2020-05-18 09:00:38 -04:00
Goober5000 880005f758 or this 2020-05-16 14:22:46 -04:00
Goober5000 ec1a35f624 better variable name 2020-05-16 14:22:46 -04:00
Goober5000 575573334b modify weapons loadout check
Based on feedback, this PR now allows gaps in weapon loadouts, but if any gaps exist they must come at the bottom.
2020-05-16 14:22:46 -04:00
Goober5000 82b9a392e1 fix CI thing 2020-05-16 14:22:00 -04:00
Goober5000 ab2a2d46d6 make cmdline-friendly 2020-05-16 14:22:00 -04:00
Goober5000 b0f812b808 some fixes 2020-05-16 14:22:00 -04:00
Goober5000 7e8ffcec86 also list weapons whose base weapon is player-allowed 2020-05-16 14:22:00 -04:00
Goober5000 7a9bebecf6 fix multiplier based on new info 2020-05-16 14:22:00 -04:00
Goober5000 c005aa5ce2 tweak 2020-05-16 14:22:00 -04:00
Goober5000 1d00c296dd include additional missiles 2020-05-16 14:22:00 -04:00
Goober5000 dd4036d8df add useful comment 2020-05-16 14:22:00 -04:00
Goober5000 4b42829aa0 MVP weapon stats, and fix shockwave determination 2020-05-16 14:22:00 -04:00
Goober5000 7f8eaa275c weapon stats for spreadsheet 2020-05-16 14:22:00 -04:00
Goober5000 329fd023ec Merge pull request #2396 from Goober5000/2298_followup
revert the clang-tidy changes from #2298
2020-05-16 14:20:04 -04:00
Goober5000 2e0a84010e revert the clang-tidy changes from #2298
These are far too pedantic, and were not related to the feature in #2298 anyway.
2020-05-16 00:01:06 -04:00
Goober5000 9e0c37364c Merge pull request #2298 from asarium/feature/pureLuaScriptTable
Add capability to have a pure lua script
2020-05-15 15:39:46 -04:00
Goober5000 d83d1b41ee make clang happy 2020-05-15 15:34:54 -04:00
Goober5000 d26a12464c clean up handling of translated vs. untranslated English
Since the original release of FS2, internal strings have been translated to their English entries in strings.tbl but external strings have not been translated to their English entries in tstrings.tbl.  It appears that string translation was universal until it was disabled via a hack, probably due to FRED idiosyncrasies (see comment in `fred_init()`), and then not re-enabled for release.  PR #2343 re-enabled it, but this turned out to have undesirable side-effects since many mods used incorrect XSTR indexes for external strings.

This PR restores the previous behavior and also cleanly separates localization into translated and untranslated modes.  FRED will always run in untranslated mode.  FSO will run in translated mode for all languages except English, where it will run in untranslated mode UNLESS the new option `$Use tabled strings for the default language` is enabled in game_settings.tbl.
2020-05-14 19:19:52 -04:00
Goober5000 f80693213c Merge pull request #2387 from Goober5000/fix_improper_ai_get_goal_target_name
fix improper usage of ai_get_goal_target_name
2020-05-14 19:08:21 -04:00
Goober5000 dbc26548f5 Merge pull request #2377 from wookieejedi/fix-warp-flag-issues
Fix warp flag and code issues
2020-05-13 23:41:31 -04:00
Goober5000 1ef90d79c4 Apply suggestions from code review
some comment tweaks
2020-05-13 20:15:36 -04:00
Goober5000 caf3eaad98 fix improper usage of ai_get_goal_target_name
The ship goals dialog was incorrectly assigning a goal target name for every dockpoint, which could quickly cause the limit to be exceeded if the FREDder browsed a lot of dockpoints.

This also indicates a need to fix the goal target name system as the counter is never decremented.  That will be in a subsequent PR.
2020-05-13 03:05:17 -04:00
Goober5000 efbace48b8 Merge pull request #2332 from Goober5000/mantis_3147_flag
add an ai-profiles flag to govern the Mantis 3147 fix
2020-05-13 00:48:44 -04:00
Goober5000 d961fa1bb6 use mod_supports_version 2020-05-12 21:46:19 -04:00
Tyler Blount c6a999ab7a Merge pull request #2384 from TRBlount/fix/weapon_render_type
Make sure modular tables can overwrite weapon model info
2020-05-12 00:20:01 -06:00
wookieejedi 5df12322e5 Incorporate feedback 2020-05-11 18:05:21 -04:00
wookieejedi f7d474cb77 Merge branch 'master' into fix-warp-flag-issues 2020-05-11 16:35:37 -04:00
Tyler Blount 764a74dbd2 Make sure modular tables can overwrite weapon model info 2020-05-11 13:54:50 -06:00
Goober5000 1d471e254b Merge pull request #2342 from Goober5000/mantis_1947
implement Mantis 1947, treat ship comm systems the same as player comm systems
2020-05-10 15:36:45 -04:00
Goober5000 771d0c7a38 Merge pull request #2383 from wookieejedi/update-pow)-to-multiply
Update cases of pow(x,2) to just multiply values
2020-05-10 14:45:47 -04:00
wookieejedi 94bfb2fe75 Update cases of pow(x,2) to just multiply values
Having recalled that other SCP folks stated pow shoud not be used to do simple squaring, I figured it might be a good idea to update the two instances I found where that was the case.
2020-05-10 13:17:03 -04:00
Fabian Woltermann 8fd2813ddd Merge pull request #2382 from The-E/fix/particles_in_lab
do on-frame processing for particle effects in the lab
2020-05-10 17:38:11 +02:00
Fabian Woltermann a0180fc004 Init the particle system and use the correct frametime counter 2020-05-10 15:29:28 +02:00
Fabian Woltermann 7a6aa5334d do on-frame processing for particle effects in the lab 2020-05-10 13:20:18 +02:00
Goober5000 d8f388996d Merge pull request #2376 from The-E/feature/kill_ship_in_lab
Make explosions happen in the lab
2020-05-10 00:31:56 -04:00
wookieejedi da55499817 Merge pull request #2381 from wookieejedi/fix-texture-replace-with-showship
Fixes texture replace not working with show ship
2020-05-09 23:32:21 -04:00
wookieejedi e1dbcf4dd6 Add back in disabled check for future use of the engines ok function 2020-05-09 17:18:31 -04:00
wookieejedi cb5a1000a6 Fixes texture replace not working with show ship
This PR allows the `ship_render_show_ship_cockpit` function to properly detect replacement textures. Fortunately just a one line fix.
2020-05-09 15:48:34 -04:00
Fabian Woltermann 94bd8da5db Merge pull request #2373 from Goober5000/parse_tweaks
some code tweaks from an old branch
2020-05-09 20:21:01 +02:00
Fabian Woltermann 03926b8dde Merge pull request #2379 from The-E/fix/naked_int3_in_missionmessage
Remove naked int3() call in missionmessage
2020-05-09 18:44:18 +02:00
Fabian Woltermann 764bbac99f The original Volition code called Int3() here; since there is a way out that does not require us to crash, we should just not crash. 2020-05-09 10:43:13 +02:00
wookieejedi 280ff2d4f0 Incorporate feedback 2020-05-08 22:40:58 -04:00
wookieejedi 45775a0d97 One more update to the scripting function calls 2020-05-08 11:29:07 -04:00
wookieejedi c4d405e33e change to nullptr 2020-05-08 11:14:53 -04:00
wookieejedi 86e1ebaf08 fixed copy paste error with new script function 2020-05-08 10:34:20 -04:00
wookieejedi 82921467a5 Update ship.cpp 2020-05-08 09:58:35 -04:00
wookieejedi c2820f10c8 Updates and fixes multiple warp out related code 2020-05-08 09:53:32 -04:00
Goober5000 d52bddf0dc Merge pull request #2347 from EatThePath/disable-doublefire-take-2
Disable doublefire take 2
2020-05-08 02:01:40 -04:00
Fabian Woltermann cd88663a92 Avoid a signed/unsigned comparison 2020-05-08 07:56:08 +02:00
Goober5000 0e9a72a37b make clang happy 2020-05-07 21:57:18 -04:00
Fabian Woltermann 1c10479d2f Pause the AI while in the lab 2020-05-07 22:27:47 +02:00
David Gibson b88ccfb924 added an explanatory comment. Also reunited some related code I'd inadvertantly pushed apart, per review. 2020-05-07 15:09:19 -05:00
Fabian Woltermann 11e9fa27c6 REdo a few things 2020-05-07 22:00:19 +02:00
Fabian Woltermann f4f6e74456 Add new "Actions" window to the lab viewer and add a "Destroy Ship" action to make explosions happen 2020-05-07 21:35:25 +02:00
Fabian Woltermann de2e9ada72 WIP 2020-05-07 21:34:12 +02:00
Fabian Woltermann 4005a60b32 Merge pull request #2375 from The-E/fix/damage_lightning_in_lab
Make the lab's "show damage lightning" flag work again.
2020-05-07 21:31:48 +02:00
Fabian Woltermann 2e6306d85f Merge pull request #2374 from The-E/fix/texture_replacement_in_lab
Apply tabled texture replacements when loading ships in the F3 lab
2020-05-07 20:36:16 +02:00
Fabian Woltermann e1f231fcf0 Use the tabled max hull strength instead of a constant 2020-05-07 19:01:36 +02:00
Fabian Woltermann 86e898c9ea Use modern loops 2020-05-07 16:04:06 +02:00
Fabian Woltermann df1491fd9e Make the lab's "show damage lightning" flag work again.
Note that it may take a few frames for lightning to disappear when unchecking that checkbox.
2020-05-07 15:18:56 +02:00
Fabian Woltermann 0b8f203371 Apply tabled texture replacements when loading ships in the F3 lab 2020-05-07 14:48:14 +02:00
wookieejedi 1d152fcc73 Merge pull request #2371 from wookieejedi/on-depature-started-hook
Add `On Departure Started` Hook
2020-05-06 22:48:42 -04:00
Goober5000 c9fb046024 update header 2020-05-06 14:38:40 -04:00
Goober5000 c4b8020ebc some code tweaks from an old branch
Minor edits from an obsolete branch that are still useful in cleaning up the code.
2020-05-06 14:25:08 -04:00
wookieejedi a2c7a344da Add On Departure Started Hook
This PR adds a scripting hook which triggers when a ship begins it's departure process. It has one variable that is the ship. I have tested and it works as expected. This new hook is very useful for triggering events whenever a ship needs an alteration to it's departure methods. For example, in Fate of the Galaxy we require ships to warp out along a certain vector. This hook allows us to see when the ship is begining that depature and then break the ship's warp, order the ship to instead follow a waypoint path, and then jump out.
2020-05-06 09:25:10 -04:00
Goober5000 f8e5c9f7a3 Merge pull request #2343 from Goober5000/fix_mantis_2942
implement XSTR check as described in Mantis 2942
2020-05-05 22:28:20 -04:00
wookieejedi bebb69e28f Merge pull request #2369 from wookieejedi/pain-flash-hook
Adds `On Pain Flash` Scripting Hook
2020-05-05 16:59:45 -04:00
Goober5000 aef4c1ba3c address feedback 2020-05-05 14:38:50 -04:00
Goober5000 801a6031e3 Merge pull request #2367 from Goober5000/aiturret_fix
fix some code rot
2020-05-05 14:01:34 -04:00
Goober5000 4c573e2989 Merge pull request #2368 from Goober5000/support_ship_override
add two useful cheat keys
2020-05-05 14:00:59 -04:00
wookieejedi aa4e300153 switch to correct hook type 2020-05-05 13:55:57 -04:00
wookieejedi 3695f0ff93 remove unneeded CHAPAINFLASH 2020-05-05 13:51:36 -04:00
wookieejedi 7dc38f7752 Update to new script format 2020-05-05 13:46:53 -04:00
Goober5000 5ab611a8b1 this reason is only applicable in debug builds 2020-05-05 12:08:22 -04:00
Goober5000 0577b69d69 address CI complaint 2020-05-05 11:48:46 -04:00
wookieejedi 6897024b29 Adds On Pain Flash Scripting Hook
This PR adds a scripting hook which triggers when the pain flash is shown. It has one variable that lists what type of flash was shown, shield with `Pain_Type == 0` and hull with `Pain_Type == 1` .  I have tested and it works as expected.
2020-05-05 10:03:48 -04:00
Fabian Woltermann ffd5fdc764 Merge pull request #2366 from wookieejedi/carry-glowmap-status
Updates glowmap settings for a ship to also apply to ship's cockpit
2020-05-05 10:21:53 +02:00
Goober5000 e985961ed5 add two useful cheat keys
`+Shift+R will enable or disable support ships

`+Shift+U will scan or unscan the targeted ship, or ship subsystem
2020-05-05 01:02:17 -04:00
Goober5000 89a722d41a placeholder for future feature implementation 2020-05-05 00:14:16 -04:00
Goober5000 3ca187127d move comment 2020-05-05 00:01:30 -04:00
Goober5000 35e67d4574 possibly fix some code rot 2020-05-04 23:33:06 -04:00
wookieejedi 8b7253cfc1 Updates glowmap settings for a ship to also apply to ship's cockpit
The sexps that activate and deactive glowmaps are very useful for ships, though previously the glowmap status was not passed to the ship's cockpit. This PR adds the ability for glowmap status to carry to this ship's cockpit (if it has one).
2020-05-04 22:07:49 -04:00
Goober5000 7ec425f341 Merge pull request #2345 from Goober5000/fix_mantis_2791
Fix mantis 2791
2020-05-04 20:27:29 -04:00
Goober5000 e4b2791c4e Merge pull request #2353 from Goober5000/support_ship_cleanup
clean up the support ship code a bit
2020-05-04 16:13:06 -04:00
Fabian Woltermann e5c2b76469 Merge pull request #2363 from The-E/fix/post_process_aa_cmdline
Unify the way post-process antialiasing is switched on
2020-05-04 22:12:39 +02:00
Goober5000 4c5bc1fa6c Merge pull request #2360 from Goober5000/fix_2335
fix issue 2335
2020-05-04 16:12:18 -04:00
Fabian Woltermann 857a622caa Make Travis happy 2020-05-04 21:29:53 +02:00
Fabian Woltermann bdc6145b2c Deprecates the -fxaa and -smaa cmdline parameters in favour of a more generalized -aa; This also ensures that the smaa render targets are always initialized. 2020-05-04 18:30:11 +02:00
wookieejedi 07ce8a9c70 Merge pull request #2362 from wookieejedi/fix-glowmap-explode-flag
Fix Glowmap flag not carrying over to final ship explosion
2020-05-04 07:35:36 -04:00
wookieejedi e42ed47c61 Previously if a ship's glowmaps were deactivated via sexp, then the glowmaps would reaactivie at the ship's final explosinos. This PR fixes that by carrying that flag into the ship explosion FX code.
Previously if a ship's glowmaps were deactivated via sexp, then the glowmaps would reaactivie at the ship's final explosinos. This PR fixes that by carrying that flag into the ship explosion FX code.
2020-05-03 23:36:42 -04:00
Goober5000 ce3b9b62b1 Merge pull request #2336 from Goober5000/hotkey_fixes
add +Hotkey Team: to override IFF designation in hotkey list
2020-05-03 17:29:35 -04:00
Goober5000 794863c5e7 Merge pull request #2348 from Goober5000/mantis_2867
bring save format up to date (Mantis 2867)
2020-05-03 15:42:48 -04:00
asarium 544029f66f Add capability to have a pure lua script
This adds the capability to have a Lua script that does not need to use
our table syntax at all but instead defines the hooks by calling API
functions. This also makes it possible to add hook functions at runtime
if the script requires that.

Also clean up some unused debug stuff.
2020-05-03 14:33:42 +02:00
Goober5000 38e04b6151 Merge pull request #2354 from Goober5000/cue_voice_tweak
add overlooked generic file
2020-05-02 16:48:56 -04:00
Goober5000 3c76cc6524 add overlooked generic file
It turns out that the extant placeholder wav has an underscore in the filename, so add that to the list.
2020-05-02 13:54:13 -04:00
niffiwan 3c7f73f4d8 Merge pull request #2349 from Goober5000/allow_empty_weapons_on_locked_ships
allow empty weapons on locked ships
2020-05-02 20:01:23 +10:00
Fabian Woltermann 5366073356 Merge pull request #2358 from The-E/fix/aa_shader_unloading
A followup to the recent SMAA fixes
2020-05-01 13:30:56 +02:00
Fabian Woltermann 23fbdf7e64 Clean up the aa shader loading/unloading code to handle cases where we switch between FXAA and SMAA correctly 2020-05-01 10:55:20 +02:00
Goober5000 5135cded94 Merge pull request #2357 from chief1983/datacorder
Use full path  in SFTP, unlike the FTP one this was modified from.
2020-04-30 22:42:12 -04:00
Cliff 519d1f59f8 Use full path in SFTP, unlike the FTP one this was modified from. 2020-04-30 16:02:03 -05:00
Fabian Woltermann b9be2ad85e Merge pull request #2356 from The-E/fix/smaa_presets
Fix bug in SMAA application
2020-04-30 13:05:58 +02:00
Fabian Woltermann 7121a3f748 Update the last_frame AA mode during cmdline parsing. 2020-04-30 11:08:25 +02:00
Fabian Woltermann 7439cf2cc3 wording 2020-04-30 10:57:54 +02:00
Fabian Woltermann 570dc5f3de Make sure the SMAA presets are actually passed to the shader stages and that the SMAA shader is recompiled at runtime if the preset changes. 2020-04-30 10:55:24 +02:00
Cliff Gordon 620fdbde08 Merge pull request #2352 from chief1983/datacorder
Fix Travis secure var declaration (use travis encrypt VAR='value')
2020-04-29 17:21:57 -05:00
Cliff fdb7e41ed4 Fix Travis secure var declaration (use travis encrypt VAR='value') 2020-04-29 14:32:08 -05:00
Goober5000 4cb3b393da clean up the support ship code a bit
Due to code rot, the support ship hull repair code was a bit more tangled than it should have been, so I tidied it up.  I also fixed a bug Sarn noticed where a support ship would think all subsystems were repaired if the hull repair rate was set to 0.
2020-04-29 01:39:18 -04:00
Goober5000 9c44e77da0 allow empty weapons on locked ships
As noticed in Discord, in loop1-2 some of your wingmen have missing weapons, but as the ships are locked it's impossible for the player to modify them.  These ships should not be part of the check.
2020-04-28 23:51:37 -04:00
Goober5000 d9d372121a missed one 2020-04-28 23:24:13 -04:00
Goober5000 f286363748 Merge pull request #2346 from EatThePath/ai_linkage_rot_cleanup
Set_primary_weapon_linkage cleanup as requested by Goober5000
2020-04-28 23:22:04 -04:00
Goober5000 6df90a8ec7 newline 2020-04-28 23:12:51 -04:00
Goober5000 289defdeff smol fix 2020-04-28 23:11:33 -04:00
Goober5000 a54ebc3114 bring save format up to date (Mantis 2867)
FSO-specific features should now all be properly marked off with checks for retail format.
2020-04-28 23:02:10 -04:00
David Gibson 4a5ff2860b now check doublefire validity flags before drawing doublefire HUD indicator 2020-04-28 16:06:20 -05:00
David Gibson f8f1b44405 Check doublefire flag validity before firing any missile 2020-04-28 14:50:33 -05:00
David Gibson f13faf4cba added new flags and flag loading for the doublefire disabling options 2020-04-28 13:57:44 -05:00
David Gibson 1520a21062 Code cleanup and rerodering in set_primary_weapon_linkage as requested by Goober5000 2020-04-28 13:02:47 -05:00
Fabian Woltermann cdc831b163 Merge pull request #2344 from chief1983/datacorder
Use datacorder in CI instead of fs2downloads
2020-04-28 16:34:25 +02:00
niffiwan 18718aee74 Merge pull request #2341 from wookieejedi/add_target_box_zoom
Adds Scaling for Target Box Models Separate from Techroom
2020-04-28 17:01:47 +10:00
Cliff c8a5ebe45c Since this is sftp now we don't need the alt ftp functionality. 2020-04-27 23:51:46 -05:00
Goober5000 9dd6bcf81d warn if there is a gap in the path sequence 2020-04-28 00:39:46 -04:00
Goober5000 3356edff2b warn if model paths do not have unique names 2020-04-28 00:16:06 -04:00
Goober5000 07acdde69a fix Mantis 2791
This is a pretty easy fix; sorry it took seven years!

Instead of firing an Int3() when a ship has no arrival paths, just log it and continue.  And change the upstream warnings, which should have been more visible, from WarningEx to Warning.
2020-04-27 23:43:45 -04:00
Cliff 29dd3e1057 Update Travis and AppVeyor CI to use our Datacorder account on FeralHosting instead of the swc.fs2downloads.com server, since it is having issues with uploads now. 2020-04-27 22:26:31 -05:00
Goober5000 c89ea8e8dd update test case 2020-04-27 23:22:34 -04:00
Goober5000 d6c1a3dec4 implement XSTR check as described in Mantis 2942
Certain mods provide their own tstrings.tbl, but this runs into trouble when you localize data meant for one mod using a tstrings.tbl meant for another mod.  See the Mantis ticket:
http://scp.indiegames.us/mantis/view.php?id=2942
and also the HLP post:
http://www.hard-light.net/forums/index.php?topic=85041.msg1716600#msg1716600

This PR adds an optional flag that will check the untranslated string against the "default language" translated string.  The two strings should be identical.  If they aren't, the code assumes there is a tstrings.tbl mismatch.

I modified the mission listing code to enable this check when localizing mission info (titles and descriptions), and to avoid adding the mission to the list if there is a mismatch.  Fortunately, I think mission listing is the only place where this bug is likely to happen.
2020-04-27 22:42:13 -04:00
Goober5000 30d41eff8b fix issue 2335
Modify the early-out condition to remain in the function if we still need to render a dumbfire lead indicator.

Fixes #2335.
2020-04-27 20:32:45 -04:00
Goober5000 cc39cfe6f2 don't send builtin messages for ships with damaged comms, and don't select them when looking for unsilenced ships either 2020-04-27 16:32:43 -04:00
wookieejedi bca6f95621 add first time checks and use copy by assignment 2020-04-27 13:16:14 -04:00
wookieejedi e2010aeda1 Adds Scaling for Target Box Models Seperate from Techroom
Currently `$Closeup_Pos:` and `$Closeup_Zoom:` control the camera zoom and position values for the techroom, briefing and HUD Target Box. Unfortunately, with very large ships this results in an issue, to fit the view of an entire big ship in the HUD Target Box the zoom and position must be set a certain way which results in the ship looking very far away when viewed in the techroom. This PR adds two new fields that control camera postion and zoom but only for the HUD Target Box, thus modders can now set values for both and have the ships look good in both the Techroom and HUD Target Box. The new hud target box values are optional, and if not specifed they default to the values for `$Closeup_Pos:` and `$Closeup_Zoom:` .
2020-04-27 10:25:15 -04:00
Goober5000 d0daa43ccf since the code assumes all subsystems are dead if the ship is dying, add some flag checks to allow death messages to play (and be scrambled appropriately) if we have the ai_profiles flag active 2020-04-27 02:30:42 -04:00
Goober5000 e0cd2806f8 move quick-abort checks to before message priority checking
From the comments:

	// Do some checks to see if we are actually going to play this message at all.  These checks have been moved above the
	// "if ( Num_messages_playing )" block because we don't want to cancel an existing message if we have nothing to replace it with.

Additionally, by not incrementing `Num_playing_messages` if the code skips to `all_done`, this prevents messages that aren't playing from delaying messages in the queue that are actually valid and should play.
2020-04-27 02:24:26 -04:00
Goober5000 4f026a66ab fix small bug where speech was stopped when it wasn't supposed to be 2020-04-27 02:17:42 -04:00
Goober5000 28df82a03f fix bug where scramble status overrode subystem status 2020-04-27 02:13:08 -04:00
Goober5000 06f1b7d872 fix some int/bool stuff 2020-04-26 18:16:08 -04:00
Goober5000 1dfe3a8d9f implement Mantis 1947 feature request
This adds an ai_profiles flag that checks comm systems for non-player ships.  If their comm system is damaged, they will not send messages and you will not be able to issue squadmsg orders.

See also:
http://scp.indiegames.us/mantis/view.php?id=1947
2020-04-26 18:08:28 -04:00
Goober5000 aa46ae6639 add version-specific enabling of bugfix flags 2020-04-26 17:13:13 -04:00
Fabian Woltermann 22f3463397 Merge pull request #2339 from TRBlount/fix/lab_bg_smaa
Small F3 lab fixes
2020-04-25 18:59:48 +02:00
Goober5000 283e1555ba Merge pull request #2340 from JohnAFernandez/vmd-expansion
Add an angles version of zero vector and identity matrix
2020-04-25 11:54:23 -04:00
JohnAFernandez fe8ce74037 Use a constant for declaring angles with no measure 2020-04-25 09:54:40 -04:00
JohnAFernandez c43fa8c9a8 Add an angles version of zero vector and identity matrix 2020-04-25 00:45:34 -04:00
Tyler Blount 5c7fce41f1 Some lab fixes 2020-04-23 23:51:30 -06:00
Fabian Woltermann 0985091f6a Merge pull request #2338 from wookieejedi/music-restart-fix
Reinstates necessary soundtrack function call on level load
2020-04-21 18:33:43 +02:00
wookieejedi 2da7c4e761 Reinstates necessary check for soundtrack on level load
This updates #2299 and restores the use of `event_music_level_start(-1)` in `freespace.cpp`. This call was removed in #2299 because it was thought to be redundant but removal of that call resulted in music not playing upon mission restarts. This PR restores that call and fixes that issue.
2020-04-21 11:00:49 -04:00
m!m 6f109508d0 Merge pull request #2322 from asarium/feature/hookDocumentation
Add extended scripting hook system
2020-04-19 11:28:35 +02:00
Goober5000 e84919fa88 Merge pull request #2331 from Goober5000/interval_msecs
allow intervals and chain delays to use milliseconds
2020-04-18 15:32:17 -04:00
Goober5000 684354c8bd Merge pull request #2334 from Goober5000/fix_2333
fix loading of capship custom weapons
2020-04-16 15:09:36 -04:00
Goober5000 c8b1f56a09 missed one 2020-04-16 13:37:36 -04:00
Goober5000 8cc9eb2352 change to bool, for great C++ justice 2020-04-16 13:20:39 -04:00
Goober5000 3d08119734 add +Hotkey Team: to override IFF designation in hotkey list
This is in response to Mantis 1424:
http://scp.indiegames.us/mantis/view.php?id=1424

Since retail, the hotkey lists have been determined based on what attacks the player.  Mod makers may want to change this, so this PR adds the following options:

Default - retail behavior
Friendly/Enemy (or Hostile) - display in the specified list regardless of who attacks whom
None - don't display in the hotkey list at all

This PR also slightly cleans up the hotkey list function with a small optimization and a few tweaky fixes for edge cases.
2020-04-15 13:47:11 -04:00
Goober5000 45c3ee0b3c this probably makes more sense 2020-04-14 23:52:14 -04:00
Goober5000 89eea8e5d3 this pilot-specific logic should only run for the Pilot subsystem 2020-04-14 23:32:02 -04:00
Goober5000 6f5e500a1e add an ai-profiles flag to govern the Mantis 3147 fix 2020-04-14 17:50:16 -04:00
Goober5000 32730fc362 Merge pull request #2330 from Goober5000/check_no_briefing
actually fix the weapon-bank check
2020-04-14 17:19:11 -04:00
Goober5000 1c8f07b012 allow intervals and chain delays to use milliseconds
This adds the titular feature, as well as FRED support.  There are also some associated minor UI fixes in FRED and some cleanup in missiongoals.cpp.  And "Event Flags" are now a thing in case we want to add any other flags in the future.
2020-04-14 16:28:57 -04:00
Goober5000 892f0a831a actually fix the weapon-bank check
Ships which do not have the maximum number of primary and secondary banks (3 and 4) will have gaps in the loadout slots, so be sure to only check the weapon slots that the ship class is actually equipped with.
2020-04-14 14:38:18 -04:00
Goober5000 6b573bdbf6 Merge pull request #2329 from Goober5000/check_no_briefing
add a missing edge case to the weapon bank check
2020-04-14 12:07:20 -04:00
Goober5000 0e9ad8623b Merge pull request #2323 from Goober5000/fix_2314
sanity check missing numeric sexp arguments
2020-04-14 11:51:37 -04:00
Goober5000 f5edccd98f add a missing edge case to the weapon bank check
Yet another obscure edge case from Aftermath: Reboot.  The FREDder ought not to create this situation in the first place, but if he does, don't enter an endless loop.
2020-04-14 02:49:08 -04:00
Goober5000 007e7118f2 Merge pull request #2327 from Goober5000/jump_node_hud_distance
use consistent jump node distances on HUD
2020-04-13 18:34:27 -04:00
Goober5000 ae41e355ac reduce duplicate code 2020-04-13 16:56:18 -04:00
Goober5000 43d51792f2 apply formatter 2020-04-13 16:56:18 -04:00
Goober5000 f739a3e5c1 fix clang complaint 2020-04-13 16:56:18 -04:00
Goober5000 33c3f556a4 sanity check missing numeric sexp arguments
In the SEXP parser, zero-length strings are valid, as are zero-length operators.  But zero-length numbers are interpreted as missing arguments, since their only syntactic separators are spaces and the parser skips over whitespace.  And in any case, zero-length numbers are not semantically valid anyway.  This PR adds a sanity check to intercept all zero-length numbers, as well as malformed numbers, and convert them to 0.

This fixes issue #2314.
2020-04-13 16:56:17 -04:00
Goober5000 490464b656 Merge pull request #2324 from Goober5000/fix_Mantis_3171
Fix Mantis 3171
2020-04-13 16:54:56 -04:00
Goober5000 d526300483 Merge pull request #2325 from Goober5000/fix_Mantis_2715
prevent player leaving the loadout screen with incomplete weapons
2020-04-13 14:59:01 -04:00
Goober5000 3f3b284dcf use consistent jump node distances on HUD
There is a special function, `hud_find_target_distance`, which is used in most places for target distance.  However it wasn't used for jump nodes in this location.

Incidentally, the player's target's distance is cached, and this distance will always be current for the target box, so we can use the cached value and save a function call.
2020-04-13 14:53:28 -04:00
Goober5000 e0992ed88e add qtfred support 2020-04-13 12:29:02 -04:00
Goober5000 3997237a11 bump XSTR_SIZE and add NOLINT 2020-04-13 11:50:04 -04:00
asarium 1c12349990 Add extended scripting hook system
This moves towards defining the hooks in the code module that executes
them. Also provides the API necessary for better documentation of hooks.
This only covers a few hooks as a test and demonstration of the new API.
If no issues are found with this it can be extended in the future.
2020-04-13 14:45:19 +02:00
Goober5000 5f10b68118 Merge pull request #2326 from fjelliott/improved-subsystem-box-rendering
Cleaned up code that renders subsystem target boxes. (Follow-up to #2315)
2020-04-13 02:02:26 -04:00
Frans Elliott 91edcc4b8c Added a comment to describe the mathematics of subobj_find_2d_bound.
Broke up the projection function to aid in clarity.
2020-04-12 23:43:12 -05:00
Frans Elliott 4139cd890c Cleaned up subsystem bounding box code. 2020-04-12 21:24:13 -05:00
Goober5000 8fa96aeaf3 prevent player leaving the loadout screen with incomplete weapons
This is the best way to address Mantis 2715.  I took a look at allowing empty banks in the course of working on PR #2318, and it was completely intractable.  But in order to prevent certain "funnies" such as violation of bank restrictions, it's a good idea to ensure all banks are populated.

This PR adds a new XSTR for a popup message, and incidentally adds another XSTR to a message that should have had one already but didn't.
2020-04-12 21:34:00 -04:00
Goober5000 282ca0b0dd fix Mantis 3171 2020-04-12 20:39:16 -04:00
Goober5000 d3b1871837 remove Asserts that never worked because they checked invalid iterators 2020-04-12 20:39:16 -04:00
Goober5000 6f7ca147dd Merge pull request #2318 from Goober5000/additional_weapon_fix
simplify and fix the subsystem weapon loading code
2020-04-11 11:49:28 -04:00
Goober5000 ee391940d2 simplify and fix the subsystem weapon loading code
If ships have less than their full allocation of weapons, the code is supposed to compact the array so that these weapons all appear at the beginning.  This is done for small ships (fighters and bombers), but was not done for capital ships.  There was also a lot of code duplication with small ships getting extra error checking than capital ships.  This commit removes the duplicate code, makes the error checking more robust, and incidentally fixes the weapon array compacting for capital ships.
2020-04-08 12:31:43 -04:00
Goober5000 23dbfa5655 Merge pull request #2319 from Goober5000/weapon_info_scripting_fix
fix yet another issue uncovered by vectorization
2020-04-08 12:30:26 -04:00
Goober5000 8f1f308591 fix yet another issue uncovered by vectorization 2020-04-07 23:31:16 -04:00
Goober5000 cc456855e5 Merge pull request #2317 from Goober5000/weapon_bugfixes
Weapon bugfixes
2020-04-07 13:57:13 -04:00
Goober5000 0853c5bf7a clean up these functions in the same way as the weapon cheat functions 2020-04-07 02:20:56 -04:00
Goober5000 96de072bff add a useful assertion 2020-04-07 02:20:41 -04:00
Goober5000 2f0f2d7669 prevent access of out-of-range weapons, and at the same time sync primary and secondary capacity calculations 2020-04-07 02:02:22 -04:00
Goober5000 1c5a361d50 Merge pull request #2315 from fjelliott/master
Force subsystem targetting reticle to be square, even on non-square aspect ratios.
2020-04-06 01:11:56 -04:00
Frans Elliott 44072c026c Force subsystem targetting reticle to be square, even on non-square aspect ratios. 2020-04-05 21:21:37 -05:00
MageKing17 8cb9d311d7 Merge pull request #2312 from JohnAFernandez/target-signature-rename
Clarify Variable Names
2020-03-30 11:47:04 -07:00
MageKing17 bdec29f247 Merge pull request #2308 from Goober5000/vasudan_cheat_tweak
improve detection of vasudan main hall for cheats
2020-03-30 11:38:34 -07:00
JohnAFernandez 4e1b366f9f Clarify Variable Names
Use target_net_signature when talking about net_signature, but leave it at target_signature when talking about ai.target_signature.
2020-03-29 08:02:16 -04:00
Fabian Woltermann de2d1ec602 Merge pull request #2311 from asarium/fix/2310
Fix wrong matrix function calls
2020-03-29 13:37:19 +02:00
asarium 50e365a66c Fix wrong matrix function calls
This was using the wrong functions which caused videos not to show up
properly. This fixes #2310.
2020-03-29 12:19:00 +02:00
Tyler Blount a954a04cf8 Merge pull request #2309 from JohnAFernandez/Fix-ADE-invalid-defaults
Make sure aip->net_signature always defaults to -1 for no target.
2020-03-28 00:16:20 -06:00
Tyler Blount 030bbeb622 Merge pull request #2306 from Goober5000/flyby_sounds_refactor
refactor parsing of flyby sounds to make them optional
2020-03-28 00:15:33 -06:00
JohnAFernandez 6b7df053fa Make sure aip->net_signature always defaults to -1 for no target.
Although not used very often, ai_info.target_signature should be set to -1 whenever no target is specified, just like everywhere else to make sure that the code is as predictable as possible.

(Found while trying to figure out why the heck would the Object update packet send this at all??)
2020-03-27 23:11:19 -04:00
Goober5000 b8c135d162 improve detection of vasudan main hall for cheats 2020-03-25 14:24:37 -04:00
Fabian Woltermann b067e1ac66 Merge pull request #2307 from Goober5000/lab_weapon_bugfix
fix small error in lab
2020-03-24 21:34:58 +01:00
Goober5000 eabead6d41 fix small error in lab 2020-03-24 01:02:50 -04:00
Goober5000 ec50baa9d1 okay then 2020-03-24 00:11:36 -04:00
Goober5000 66f7bc4f50 add newline at end of file 2020-03-23 21:00:02 -04:00
Goober5000 44b7d5a4bd refactor parsing of flyby sounds to make them optional 2020-03-23 20:27:28 -04:00
Goober5000 caebad7077 Merge pull request #2302 from Goober5000/xmt_remove
Xmt remove feature
2020-03-18 09:48:42 -04:00
Goober5000 0caa65a74f address feedback 2020-03-17 17:22:27 -04:00
Goober5000 ff05816e11 add parse blacklist 2020-03-15 20:31:28 -04:00
Goober5000 da326f31f6 additional tweaks after rebase 2020-03-15 17:52:34 -04:00
Goober5000 376a01e82b wip 2020-03-15 17:42:57 -04:00
Goober5000 dc2ce094fc wip 2020-03-15 17:39:21 -04:00
Goober5000 74a0346e0d Merge pull request #2301 from Goober5000/static_cast_tweak
add functions to remove the clutter of static casts for ship and weapon info vectors
2020-03-15 15:08:42 -04:00
Goober5000 3b0d20aaf2 fix clang complaint 2020-03-15 01:35:12 -04:00
Goober5000 a0951f4e28 derp 2020-03-15 00:28:07 -04:00
Goober5000 3da2b99144 maybe these need to be extern'd 2020-03-14 15:13:44 -04:00
Goober5000 c9df8a13f1 add functions to remove the clutter of static casts for ship and weapon info vectors 2020-03-14 13:02:12 -04:00
Goober5000 247d5c453c Merge pull request #2294 from Goober5000/weapon_info_vector
Turn Weapon_info into a vector
2020-03-14 12:30:45 -04:00
Goober5000 5b8e89f37d address feedback 2020-03-14 09:56:56 -04:00
Fabian Woltermann f6083b680a Merge pull request #2299 from The-E/fix/2296_actually_fix_2292
As it turns out, the soundtrack reset issue is a bit more complicated…
2020-03-12 20:29:33 +01:00
Goober5000 fde7fdd854 address feedback 2020-03-07 13:35:17 -05:00
Fabian Woltermann 64531798e7 As it turns out, the soundtrack reset issue is a bit more complicated than I initially thought. The force_soundtrack check I previously removed was apparently vital; without it, calling event_music_level_init() (which in actuality is used to start soundtrack playback!) will result in the music being stopped, as the current soundtrack is set to -1.
This PR refactors the function's name to something more indicative of what it actually does, and removes a call made to it from within freespace.cpp which, due to changes in how the soundtrack system works, is now redundant and doesn't actually do anything anymore.
2020-03-07 19:04:01 +01:00
m!m ecd1cfe59c Merge pull request #2297 from asarium/fix/monoSoundAssert
Fix assertion when playing downsampled sounds
2020-03-07 15:34:09 +01:00
asarium 638bcacb71 Fix assertion when playing downsampled sounds
The sound was passed the data from before the resampling took place so
it though it would be playing a stereo sound and rightly cause an
assertion. This fixes that by refreshing the properties after appliying
the resampling properties.
2020-03-07 13:30:30 +01:00
Fabian Woltermann 4fc82ba334 Merge pull request #2295 from Goober5000/fix_weapon_info_pointer
fix an incorrect optimization
2020-03-07 12:59:23 +01:00
Goober5000 7ebd00e6f5 another fix for CI 2020-03-06 15:48:50 -05:00
Goober5000 fc41984a75 yet another fix for CI 2020-03-06 14:28:39 -05:00
Goober5000 45b5399f08 another fix for CI 2020-03-06 14:03:33 -05:00
Goober5000 fe15752f5e another fix for CI 2020-03-06 12:53:08 -05:00
Goober5000 c0a7be50b4 fixes for CI 2020-03-06 12:23:40 -05:00
Goober5000 bb8fcd428e address feedback 2020-03-06 03:11:31 -05:00
Goober5000 641aa329a5 fix an incorrect optimization 2020-03-05 22:58:00 -05:00
Goober5000 d86332a9d9 fix references 2020-03-05 22:46:07 -05:00
Goober5000 d8e88c1644 oof 2020-03-05 22:31:13 -05:00
Goober5000 1926d3c341 oof, more changes 2020-03-05 20:49:16 -05:00
MageKing17 c502d9bdf7 Merge pull request #2293 from scp-fs2open/fix/2292_reset_soundtrack_index_on_mission_close
Reset the current soundtrack during mission shutdown
2020-03-05 17:02:07 -08:00
Goober5000 20835adef6 convert Weapon_info to a SCP_vector 2020-03-05 19:12:43 -05:00
Fabian Woltermann af5e834250 Also make sure that Current_soundtrack_num is reset whenever event_music_level_init is called 2020-03-05 20:34:00 +01:00
MageKing17 e9051933b9 Merge pull request #2291 from Goober5000/remove_cloakmap
remove CLOAKMAP
2020-03-05 11:21:03 -08:00
Fabian Woltermann bb48ea9c61 Reset the current soundtrack during mission shutdown 2020-03-05 20:15:20 +01:00
Goober5000 939be80c30 wip 2020-03-05 00:01:03 -05:00
Goober5000 732ada474b remove CLOAKMAP 2020-03-04 23:47:22 -05:00
Goober5000 23b5320ec4 Merge pull request #2289 from MageKing17/bugfix/fred-rc-version-refix
Restore fred.rc version fix.
2020-03-02 08:56:34 -05:00
Goober5000 e3f67146b1 Merge pull request #2290 from Goober5000/log_newline
add newlines to mprintf and nprintf
2020-03-02 08:55:24 -05:00
Goober5000 cacee6e5b8 a few more 2020-03-02 01:07:17 -05:00
Goober5000 90c6c91e4f add newlines to mprintf and nprintf 2020-03-02 00:51:58 -05:00
MageKing17 0748ac191c Restore fred.rc version fix.
PR #1514 made this change to avoid having to constantly update fred.rc with new FSO versions, but it was inadvertently reverted in commit 9ac97f24223a7446d4364acfdb451c90697d6577; this also reverts PR #2286, since that's a somewhat more hackish solution to the same problem.
2020-03-01 18:10:23 -08:00
Goober5000 98cb4b6400 Merge pull request #2287 from Goober5000/briefing_stage_1_based
change briefing stage hook to 1-based
2020-03-01 15:36:47 -05:00
m!m 48d1797009 Merge pull request #2288 from asarium/docker-buildOnTagPush
Build docker standalone image on tag push
2020-03-01 16:14:54 +01:00
asarium 50ea017e59 Build docker standalone image on tag push 2020-03-01 14:48:47 +01:00
m!m c42cd25b89 Merge pull request #2284 from asarium/build/makeFFmpegOptional
Make FFmpeg an optional requirement
2020-03-01 11:55:01 +01:00
Goober5000 75099171ef Merge pull request #2286 from Goober5000/fred2_version_small_fix
Fred2 version small fix
2020-02-29 21:57:12 -05:00
Goober5000 809d11e1a8 change to 1-based 2020-02-29 19:21:21 -05:00
Goober5000 dadc65178d update the version number 2020-02-29 13:45:26 -05:00
m!m 52b17c3f8a Merge branch 'master' into build/makeFFmpegOptional 2020-02-29 18:48:13 +01:00
Goober5000 28722d7402 update the version number 2020-02-29 12:34:46 -05:00
m!m bf4243c0b0 Merge pull request #2285 from asarium/docker/fixEventHandling
Fix standalone signal handling
2020-02-29 18:33:46 +01:00
m!m 9dd6d9c874 Merge pull request #2278 from asarium/feature/betterScriptingDeprecation
Improve error message for deprecated functions
2020-02-29 18:33:31 +01:00
m!m 53a3b2b1c7 Merge pull request #2279 from asarium/fix/docker_stuff
Add compile time option to enable logging in release builds
2020-02-29 18:20:26 +01:00
asarium 2dc2295a59 Make FFmpeg an optional requirement
This does some refactoring to make it possible to cimpile and run FSO
without needing to link to FFmpeg. Since that eliminates support for
cutscenes or sound this is mostly useful for running a standalone server
which has no need for this anyway.

This reduces the image size of the standalone Docker image to only 20MB
and also resolves any licensing issues that might have existed.
2020-02-29 17:24:56 +01:00
asarium 582c144cf7 Fix standalone signal handling
The standalone did not initialize SDL and so did not receive the quit
signal when it was sent SIGTERM or SIGINT. This fixes that by making the
standalone server just use the normal os initialization code.

Also includes some other code cleanup and some more logging to make it
more apparent in the log what is currently happening at standalone
startup.
2020-02-29 17:09:55 +01:00
m!m e32cadd06a Merge pull request #2280 from asarium/docker/standalone-image
Add Dockerfile for compiling minimal standalone image
2020-02-27 18:12:30 +01:00
asarium ed6ac7060e Add Dockerfile for compiling minimal standalone image
This adds a Dockerfile which compiles FSO for the alpine Linux
distribution and then creates a standalone image based on those
binaries. That sidesteps the problem that existed with trying to use the
AppImage binaries on that distribution.

This produces a much smaller image (78MB instead of 230MB) so it should
be a bit more managable. Building can be done like this:
docker build --build-arg build_type=FastDebug -t scpfs2open/fso-standalone -f docker/standalone/Dockerfile .
2020-02-26 20:01:31 +01:00
asarium 7029e4a10f Add compile time option to enable logging in release builds
This mostly meant for special docker standalone server builds where it
might be useful to have full release performance but also have the logs
available if necessary. This now always compiles the log statements but
enables or disables them with a constexpr so they should not appear in
actual release binaries.
2020-02-24 18:54:55 +01:00
m!m 4d2cf1d2e0 Merge pull request #2263 from asarium/vulkan/test
Add Vulkan instance and surface creation code
2020-02-23 17:52:56 +01:00
asarium d31b2a971b Improve error message for deprecated functions
This will provide a proper error message when such a function is called
that will mention the name of the function and that it is deprecated and
cannot be used anymore in the targetted engine version.
2020-02-23 16:40:54 +01:00
m!m 74cf0b839d Merge pull request #2276 from asarium/fix/docker_stuff
Add option for logging to stdout
2020-02-23 14:32:08 +01:00
asarium 7f286b726d Add option for logging to stdout
This will make it easier to get logs from FSO running in a docker
container since logging to stdout is the easiest solution there.

Also includes some other changes that will make this work better in
Docker containers.
2020-02-23 13:09:51 +01:00
Goober5000 b0da0ea404 Merge pull request #2272 from Goober5000/briefing_stage_hook
add scripting hook for briefing stage
2020-02-18 14:38:24 -05:00
Goober5000 ca301fdb04 small adjustments 2020-02-18 01:18:07 -05:00
Goober5000 04244ec1ee Merge pull request #2273 from asarium/fix/2269
Handle invalid standard deviation properly
2020-02-17 15:26:56 -05:00
asarium 84b15afa8a Handle invalid standard deviation properly
If anything less than or equal to 0 was specified it would trigger some
kind of an assert in the standard library since that is not a valid
value for a normal distribution. Now a parse warning is generated and a
safe default value is used.

This fixes #2269.
2020-02-17 13:52:25 +01:00
Goober5000 a7063152b7 add scripting hook for briefing stage 2020-02-17 00:58:56 -05:00
Goober5000 5f938169af Merge pull request #2271 from asarium/fix/2266_again
Actually fix shader compilation error
2020-02-16 16:17:03 -05:00
asarium 8763b06c77 Actually fix shader compilation error
And actually compile the shader this time to check if the changes
actually fixed the error.
2020-02-16 13:02:25 +01:00
m!m 90a97021f5 Merge pull request #2267 from asarium/fix/2266
Fix compilation error in shader
2020-02-11 22:00:55 +01:00
asarium 3c6015f6b0 Fix compilation error in shader 2020-02-11 18:05:18 +01:00
Cliff Gordon ca4fcc84ea Merge pull request #2252 from pkubaj/patch-1
Fix build on FreeBSD
2020-02-11 09:35:09 -06:00
Cliff Gordon 94e74cb15f Merge pull request #2264 from pkubaj/patch-2
Fix build on big-endian architectures
2020-02-11 09:32:30 -06:00
pkubaj 3daa819042 Fix build on some LE platforms
Some platforms don't like those variables being unused.
2020-02-11 13:58:26 +01:00
pkubaj 4bb31f4e1b Fix build on big-endian architectures
swap_bsp_data() and swap_sldc_data() use those.
2020-02-10 15:49:52 +01:00
pkubaj 87c5544b7b Change to SCP_BSD 2020-02-10 15:47:17 +01:00
pkubaj 4914c4a452 Change to SCP_BSD 2020-02-10 15:46:56 +01:00
pkubaj 0b33a44004 Change to SCP_BSD 2020-02-10 15:46:30 +01:00
pkubaj 1f98551b12 Change to SCB_BSD 2020-02-10 15:45:57 +01:00
Goober5000 463caecf03 Merge pull request #2262 from niffiwan/fix/issue2261
make small bombs appear smaller in hud targetbox
2020-02-09 14:24:49 -05:00
asarium 2f3f061e75 Add Vulkan instance and surface creation code
This adds a new graphics type for the Vulkan graphics API. All this does
is to create a vulkan instance and a presentation surface with the help
of SDL.
2020-02-09 17:06:21 +01:00
niffiwan 0c0c4ddaef make small bombs appear smaller in hud targetbox
Also cleaned up the code slightly, the factor variable was only used
when missile_view was false
2020-02-09 21:07:04 +10:00
m!m 3fb2f97b43 Merge pull request #2133 from asarium/feature/moreOptionsUI
Add more features for the new Options UI
2020-02-09 11:39:18 +01:00
Goober5000 66daf6ba24 Merge pull request #2259 from Goober5000/update_wiki_cmdling
bring cmdline listing up to date with wiki (update links etc)
2020-02-09 00:55:42 -05:00
asarium a13b503b83 Add more features for the new Options UI
The largest new feature is that it is now possible to include other
files into the RML by using the "include" tag. This is useful for making
markup files more modular.

Also added some more options for existing things (e.g. built-in detail
options).
2020-02-08 13:28:53 +01:00
Goober5000 43a29b4dec address feedback 2020-02-07 12:00:01 -05:00
niffiwan 1c2d8a3b47 Merge pull request #2257 from asarium/gr/genericUniformBlock
Add generic uniform block for low frequency data
2020-02-07 18:06:40 +10:00
MageKing17 aa0a1ae3ed Merge pull request #2253 from scp-fs2open/bump_version
Update Version to 20.1.0
2020-02-05 11:39:11 -08:00
Goober5000 1d12157a07 bring cmdline listing up to date with wiki (update links etc) 2020-02-02 15:46:50 -05:00
asarium ae026f83ca Add generic uniform block for low frequency data
This elimiates all of the remaining "old style" uniforms from our
shaders. This might not be optimal for all situations but I have
confirmed that it is at least not worse at the moment.
2020-02-01 19:18:14 +01:00
Goober5000 facf17a222 Merge pull request #2254 from Kiloku/master
Update changelog with 19.0.0 release
2020-01-29 14:08:46 -05:00
Kiloku bf99541c58 Merge pull request #2 from scp-fs2open/master
Update
2020-01-29 13:32:25 -03:00
Kiloku 34391ebe21 Update changelog with 19.0.0 release 2020-01-29 13:30:49 -03:00
Fabian Woltermann 93f71ec202 Merge pull request #2247 from asarium/gr/matrixUniforms
Use uniform blocks for matrices
2020-01-29 11:04:22 +01:00
m!m e504f6b59e Set minor version to 1
This should be a bit more consistent with how we did versioning before.
2020-01-28 21:29:09 +01:00
m!m 133821952f Update Version to 20.0.0 2020-01-28 21:21:36 +01:00
asarium d7602ec9d1 Disable MinGW in GitHub actions
It fails with the same message as Travis CI :(
2020-01-28 18:20:47 +01:00
asarium fe5dbeccaa Use uniform blocks for matrices
This is a generic way to get matrix data to shaders without using
(old-school) uniforms. This is another step towards more compatibility
with how new APIs (Vulkan) do things to increase the odds for a Vulkan
port at some point.
2020-01-28 18:20:47 +01:00
pkubaj d7e40d2bcc Fix build on FreeBSD
sys/socket.h is needed for AF_INET.
2020-01-28 16:31:23 +01:00
pkubaj 0251fd347f Fix build on FreeBSD
sys/socket.h is necessary for AF_INET.
2020-01-28 16:30:53 +01:00
pkubaj 1cce2d70a3 Fix build on FreeBSD
sys/socket.h is necessary for AF_INET.
2020-01-28 16:30:23 +01:00
pkubaj 68f5b7d524 Fix build on FreeBSD
FreeBSD is similar to Linux and MacOS here.
2020-01-28 16:28:45 +01:00
niffiwan 036d5ed780 Merge pull request #2244 from JohnAFernandez/More-Multi-Cleanup
CleanUp Unused Function
2020-01-28 19:58:09 +10:00
niffiwan c109562c40 Merge pull request #2251 from wookieejedi/fix-rtt-target-display
Fixes RTT Target Box Scaling
2020-01-28 19:56:24 +10:00
niffiwan 0334b3c287 Merge pull request #2249 from wookieejedi/fix-hasfilter-on-weapons-hud
Fix weapon names not filtering # in HUD gauge
2020-01-28 07:06:57 +10:00
wookieejedi 9039081fa7 formatting 2020-01-27 12:23:15 -05:00
wookieejedi 73a5ac7665 specify floats 2020-01-27 12:17:26 -05:00
wookieejedi 6c2e419825 Fixes RTT Target Box Scaling
It seems that when RTT for cockpits was added that the scaling of ships in the target box fell through the cracks. Properly specifying the `clip_aspect` fixes the issue. This PR fixes issue #2250.
2020-01-27 10:04:57 -05:00
wookieejedi c2c2042a38 remove unneeded string filtering 2020-01-27 08:33:41 -05:00
wookieejedi da08ba5932 remove unneeded line 2020-01-26 15:10:32 -05:00
wookieejedi bc14149e84 Fix weapon names not filtering # in HUD gauge
Weapon names with a `#` should not display text after that `#` in the HUD. For the most part this works, but there were a few cases this didn't (such as primaries using the weapon name). This PR fixes two spots that fell between the cracks.
2020-01-26 14:08:28 -05:00
Goober5000 6ceb2a276c Merge pull request #2243 from wookieejedi/allow-engine-wash-intensity
Allows Modders to Actually Use Engine Wash Intensity
2020-01-25 16:32:12 -05:00
m!m d8537843ab Merge pull request #1600 from asarium/opengl/persistentlyMappedBuffer
Add persistent buffer mapping support for uniform data
2020-01-25 21:44:47 +01:00
wookieejedi 539cad66e7 change placement and add reset values 2020-01-20 12:31:18 -05:00
JohnAFernandez b042b27310 Remove Another Unused Multi Function
This function used to help with the sequence number of packets, but that is now done in the object packet functions themselves.
2020-01-20 00:42:56 -05:00
JohnAFernandez 8ee447d8c2 CleanUp Unused Function
This function does not have any contents and should be removed.
2020-01-20 00:28:28 -05:00
wookieejedi 8a36fc138c Allows Modders to Actually Use Engine Wash Intensity
Previously, Engine Wash Intensity didn't actually do anything in the code. This adds a game table setting that let's modders specify to the game to actually take the intensity value into account when calculating engine wash effects.
2020-01-19 16:54:58 -05:00
m!m a86322c49d Merge pull request #2242 from asarium/feature/deprecatedPostProcess
Add -post_process to deprecated flags section
2020-01-19 16:07:00 +01:00
asarium b19d7def54 Add -post_process to deprecated flags section
This should avoid causing warnings to pop up when users still have this
in their command line.
2020-01-19 12:28:06 +01:00
m!m 34577df2ea Merge pull request #2240 from Goober5000/post_processing
Clean up launcher settings a bit
2020-01-18 15:58:08 +01:00
Allen A. Babb b56c0d8bff Merge pull request #2241 from wookieejedi/fix-default_disabled_control-setting
Fix overriding the default values in control table for `disabled`
2020-01-17 21:19:08 -06:00
wookieejedi 48164e447d Fix overriding the default values in control table for disabled
For some reason my repro had some critical issues and I was unable to comitt to the PR #2210. I have closed that PR and opened this one given the discussion in #2210. The result of that discussion was `but omit line 594`. That is what this PR does.
2020-01-17 19:49:05 -05:00
Goober5000 1f4867a640 Clean up launcher settings a bit
Three main changes in this PR:

1) The enums for the "easy settings" launcher options are now clearer and more explicit, and the enum assignments for a lot of graphics options are now fixed, as they were incorrect due to code rot.

2) Some of the command-line flags options have been recategorized: -window, -fullscreen_window, -nomotiondebris and -noscalevid are now Gameplay; and -fps is now HUD.

3) Since post-processing is required for nebula fading, it now defaults to on, and the flag has been changed to -no_post_process.
2020-01-16 18:14:03 -05:00
wookieejedi 648598c729 Merge pull request #2239 from scp-fs2open/revert-2236-add-scripting-support-gun_convergence
Revert "Adds Scripting Support for the Ship Flag `gun convergence`"
2020-01-14 18:22:19 -05:00
wookieejedi 0b6a642a17 Revert "Adds Scripting Support for the Ship Flag gun convergence" 2020-01-13 23:32:03 -05:00
m!m 939492b981 Merge pull request #2196 from JohnAFernandez/Mantis#2129
Mantis#2129 Address Rare Multi Crash
2020-01-13 20:44:11 +01:00
Goober5000 69393f9104 Merge pull request #2236 from wookieejedi/add-scripting-support-gun_convergence
Adds Scripting Support for the Ship Flag `gun convergence`
2020-01-13 14:38:57 -05:00
Goober5000 3a2c680caa Merge pull request #2238 from scp-fs2open/fix/no_emissive_light_flag_behaviour
Update cmdline.cpp
2020-01-13 11:18:50 -05:00
Fabian Woltermann db71f3d550 Update cmdline.cpp
This fixes #2237
2020-01-13 08:58:38 +01:00
asarium 0b2695e9e4 Some more security checks 2020-01-12 22:23:13 +01:00
wookieejedi 51bbb0c1d2 Adds Scripting Support for the Ship Flag Gun Convergence 2020-01-12 15:37:31 -05:00
asarium 362645ce27 Reformat code with clang-format 2020-01-12 12:57:00 +01:00
asarium 10ab4a00f5 Fix clang-tidy issues 2020-01-12 11:59:23 +01:00
asarium 5ce6c251ff Add persistent mapping support
Persistent buffer mapping is an OpenGL technique where the contents of a
buffer object are mapped to a persistent pointer instead of having to
map and unmap a buffer every time it is modified.

This decreases the overhead for updating data in a uniform buffer object
which now only consists of a memcpy and a flush call.
2020-01-12 11:59:23 +01:00
asarium a3651026b1 Improve how the engine handles uniform buffers
This is in preparation for using persistently mapped buffers for uniform
buffers. Since that functionality is not available in the OpenGL version
we are targetting I implemented a fall-back which simply uses
glBufferSubData.

I did a benchmark with these changes and there was no change in
performance to the current master version.
2020-01-12 11:59:23 +01:00
Goober5000 6f18d93a23 Merge pull request #2234 from asarium/fix/warningsInParselo
Replace Warning with error_display in parselo
2020-01-11 18:38:52 -05:00
asarium 8e767bb613 Replace Warning with error_display in parselo
error_display shows the line where the error was detected. Warning
itself is pretty useless for parsing related errors so I replaced all
Warnings (where appropriate) with an equivalent error_display.
2020-01-11 21:57:52 +01:00
Goober5000 06df419429 Merge pull request #2233 from wookieejedi/cleanup-debuglog-output
Proposal to cleanup debug log statement regarding turret fire
2020-01-10 02:10:44 -05:00
Goober5000 98bafefc32 Merge pull request #2231 from JohnAFernandez/Fix-Interpolation
Better Timing For Interpolation Calc
2020-01-10 02:01:02 -05:00
wookieejedi 45e34797ae remove entirely 2020-01-09 23:29:23 -05:00
Goober5000 9eb7884968 Merge pull request #2232 from wookieejedi/fix-random-delay-firerate-calculation
Fixes calculations for random fire rates when using min and max delays
2020-01-09 21:51:13 -05:00
JohnAFernandez 2bdcd1bf04 Better Timing For Interpolation Calc
Does this by refactoring how the timing is calculated.  It also removes the Next Arrival Time Array, which does not actually do a good job of calculating it, anyway.  We can now rely on the other oo_arrive_time arrays exclusively by subtracting from current time.

Squashed Commits:
1. Use function to pull FrametimeOverall to keep from breaking Fred.
2. Remove unsed parameter from multi_oo_calc_interp_splines
3. And also fix the corresponding declarations and functions calls.
2020-01-09 19:34:54 -05:00
wookieejedi 00e750c120 Proposal to cleanup debug log statment regarding turret fire
In aiturret.cpp there is a mprintf, `mprintf(("nothing ok to fire\n"));` which greatly pollutes the debug log in missions with turreted ships. I'm not sure what this message helps debug, thus I propose commenting it out.
2020-01-09 18:03:21 -05:00
wookieejedi 6b872ef93c Fixes calculations for random fire rates when using min and max delays
Previously, using max and min delays resulted in guns firing that were not within the specified range. This PR fixes that while also simplfying the code. `frand_range` is already using in each of those functions so I figured it would be fine to use it and also simplify the code. That, instead of `next_fire_delay = (((float)rand()) / (((float)RAND_MAX + 1.0f) * (winfo_p->max_delay - winfo_p->min_delay + 1.0f) + winfo_p->min_delay))`.
2020-01-09 17:56:02 -05:00
Goober5000 07231d74e6 Merge pull request #2229 from wookieejedi/additional-initial-velocity-fixes
Cleanup Reaming Issues with Initial Velocity
2020-01-08 22:47:42 -05:00
Goober5000 78f113e806 Merge pull request #2230 from JohnAFernandez/Optimize-Multi-in-Debug-Builds
Remove Debilitating Debug Function Calls
2020-01-08 22:31:45 -05:00
wookieejedi da05fa18c5 use nullptr 2020-01-07 12:58:42 -05:00
wookieejedi 89576232a5 Few additional cleanups to hyperspace warpins with initial velocity 2020-01-07 11:08:06 -05:00
JohnAFernandez a73ccee28d Remove Debilitating Debug Functions
These function have been around since retail.  What they were supposed to do was allow the V team to get a baseline of how much data object updating would use without the limiting system.

However, the way that multi_rate_add work, is that they say to the limting system, "The client is getting a lot of data, so limit it some more." And that eventually causes debug build object updates to slow to a crawl.
2020-01-06 21:55:03 -05:00
wookieejedi 15b494b765 Cleanup Remaing Issues with Initial Velocity
This PR tidies up the comments in the initial velocity setting, properly sets the player's throttle, and cleans up issues with initial velocity setting and hyperspace warpin types.

Note the removed code block for hyperspace warpin ending was removed becuase it is not needed, as physics calculatios already handles that. Also the calculations that were there did not properly account for initial ship velocity setting.
2020-01-06 11:29:09 -05:00
Fabian Woltermann 49559c047f Merge pull request #2220 from wookieejedi/fix-min_max-firewait-oversight-for-turrets
Fix Min and Max Delays for Fire-rate not working for Turrets
2020-01-06 13:44:43 +01:00
Fabian Woltermann c6af310178 Merge pull request #2223 from wookieejedi/fix-setting-of-initial-velocity
Fix Setting of Initial Velocity
2020-01-06 13:43:21 +01:00
m!m 3013b76a46 Merge pull request #2224 from JohnAFernandez/Vector-Math-Description-Cleanup
vecmat.cpp quick cleanup
2020-01-06 12:13:08 +01:00
wookieejedi b32f2856fc consolidate variables 2020-01-05 22:57:22 -05:00
wookieejedi 1fdf2876d0 update comment 2020-01-05 21:34:36 -05:00
JohnAFernandez 790949b527 vecmat.cpp quick cleanup
A few early on descriptions in this file are inconsistent or even plain wrong.  This should correct that.

Also, rename vm_vec_imag() to vm_vec_inv_mag_quick() to better describe what it is.
2020-01-05 20:29:59 -05:00
wookieejedi 7d1acf0b08 Fix Setting Initial Velocity
It turns out that the code that set initial ship velocities did not account for local ship rotation changes. This bug is only noticeable when ships are very high speeds, high initial velocities, and have high drift values thus it was never recognized before. This PR fixes that by ensuring that the velocity vectors are set appropriately. As discussed with Goober on Discord, this fixed behaviour is indistingushable when using FS ships and most mods, this the behavipur will be on by default.
2020-01-05 16:45:24 -05:00
Goober5000 1d9eb94726 Merge pull request #2213 from Goober5000/verify_and_load_cleanup
Minor cleanup to Verify and loading bar
2020-01-04 13:51:02 -05:00
Goober5000 4503fc05d5 Merge pull request #2222 from asarium/fix/fogDepth
Fix fog depth computation
2020-01-04 11:52:58 -05:00
asarium 42953b0f0d Fix fog depth computation
This was previously using the wrong direction of the conversion so it
produced wrong values. This should fix that and should hopefully bring
the nebula experience back to how it is supposed to look.
2020-01-04 12:04:26 +01:00
wookieejedi a69e6b1e8e Fix Min and Max Delays for Firerate not working for Turrets
When the `+Max Delay:` and `+Min Delay` for `Fire Wait` were added they were only added to primary firing and not turret firing. Specifically, `turret_set_next_fire_timestamp` uses only `winfo_p->fire_wait` while `ship_fire_primary` uses the delays. Checking with the original author DahBlount they specified it was an oversight, thus this PR fixes that and allows the delays to now work properly with turret firerates.
2020-01-03 13:40:17 -05:00
Goober5000 072105a9c3 Merge pull request #2219 from wookieejedi/restore-3d-weapon-icons
Restore 3D Weapon Icons when Flag Used
2020-01-03 12:57:51 -05:00
wookieejedi 1578e4eab4 Restore 3D Weapon Icons when Flag Used
Overview: This PR restores all expected functionalility of the 3D weapon select flag while also providing modders with a way to use both 3D models and custom weapon icons.

PR #2055 provided a way for modders to use 3D weapons while still using specified weapon icons. Unfortunately that resulted in weapon icons not changing to an image of the 3D model when the 3d weapon selection flag was used. It was requested on the forum that this behaviour be restored. This PR restores that behaviour while still allowing modders to use 3D weapon models and their own weapon icons. Instead of the approach taken in PR #2055, this PR will automatically show a 3D weapon model if there is not weapon animation specified and if a weapon tech model is specified. Thus, if a modder wants to use their custom weapon icon but also have a 3D weapon model shown, they simply do not specify a model animation but do specify a tech model for the weapon (the 3d weapon selection flag does not need to be checked). If the 3d weapon selection flag is checked then the 3D weapon model will of course still be used, but the weapon icons will now show the image of the 3D model instead of any custom weapon icons the modder specified. In other words, the flag acts exactly as expected for the player.

I also tested this for each case and it works as desribed above.
2020-01-02 23:18:32 -05:00
m!m 1c23d90846 Merge pull request #2218 from asarium/cleanup/grDefs
Cleanup some unused functions in the graphics subsystem
2020-01-02 21:33:42 +01:00
asarium bfe507a53a Cleanup some unused functions in the graphics subsystem 2020-01-02 17:05:26 +01:00
MageKing17 bf82ffdf4b Merge pull request #2217 from Goober5000/fix_builtin_messages_sexp
fix disable/enable builtin messages for wingmen
2020-01-02 04:42:24 -08:00
Goober5000 0c26ad40e9 fix disable/enable builtin messages for wingmen
In the case of "any wingman", the sexp logic was flipped.
2019-12-30 18:55:09 -05:00
FSCyborg 56fd6f504a Mantis#2129 Address Rare Multi Crash
Should fix rare multi crash where reserving net signatures for spawened munitions would cause an ushort overflow, triggering an assert in multi_set_network_signature.

Turns out we can just remove the assert, and just guarantee that signature is going to be in the required range.

Squash history:
1. Improve Assertions (as per Taylor's suggestion) and reconfigure Int3
2. Wording change on last assertion
2019-12-28 00:50:35 -05:00
Goober5000 2521228666 accidentally a # 2019-12-27 15:25:41 -05:00
Goober5000 db6520c072 make the loading bar a bit more accurate by updating the count estimate to a recent 'real count' 2019-12-27 14:24:16 -05:00
Goober5000 09f06dc1ed rename VerifyEx to Verification and remove old MSVC 2005 checks 2019-12-27 14:22:44 -05:00
Goober5000 aee6ecb974 Merge pull request #2212 from JohnAFernandez/Fix-Multi_Crash
Urgent Multi Fix
2019-12-27 14:01:41 -05:00
JohnAFernandez b06761bc66 Urgent Multi Fix
Any server build created this year will crash any client connected to it because it will send a packet cotaining hull updating information, but accidentally unset the flag for new hull info. The client was therefore unaligned with the packet, causing the local subsystem_update array to go bonkers.
2019-12-27 11:35:25 -05:00
Goober5000 20e78143ee Merge pull request #2211 from JohnAFernandez/MultiUtil-Cleanup
Multiutil.cpp cleanup#1
2019-12-27 01:06:59 -05:00
JohnAFernandez 861eb14865 Clean Up Error Handling in multitutil.cpp
Removes about half of the Int3()'s in multiutil.cpp by making Assertions more robust, changing two functions to void type (because there was no way to get an error value from them, anyway), and adding two Verify()'s in case we ever decide to start using the multi variable change functions.

Squash History:
1) Forgot to change one Assert to Assertion
2) Change Verify to Assertion, because of better argument support.
3) Fix a couple copy paste errors
2019-12-26 07:59:14 -05:00
JohnAFernandez e34e3378a2 Modernize NULL to nullptr in Multiutil.cpp 2019-12-25 22:51:25 -05:00
FSCyborg 03125df50c Multiutil Minor Cleanup
Just a quick PR to make multiutil slightly more readable by removing one unused function (whose functionality is already in the object update packet), two globals which we only increment and we do nothing with, and some defines that have been commented out because the size returned can actually vary.
2019-12-25 22:06:38 -05:00
Goober5000 67613bbba0 Merge pull request #2209 from wookieejedi/fix-key-numbers-for-multi
Fixes accidental break with multi due to max key numbers
2019-12-23 17:42:10 -05:00
wookieejedi 4f5f3e859e remove keys 5-9 and 0 2019-12-23 16:05:35 -05:00
Goober5000 10bec9ff00 Merge pull request #2208 from CasparKielwein/ck/bitmanip_with_unsigned
make internal variables in static_rand unsigned.
2019-12-23 12:23:12 -05:00
wookieejedi a7e4a72622 add to button_function_critical() 2019-12-23 10:41:42 -05:00
wookieejedi 3167623e31 Fixes accidental break with multi due to key numbers
This PR reduces the number of custom controls back down to 127 so as to keep multi compatibility.
2019-12-23 10:36:23 -05:00
CasparKielwein c3a51296f8 make internal variables in static rand unsigned.
several of the bitwise manipulations on signed integers are technically undefined behaviour.
I made the internal variables unsigned and the results are then converted to signed ints as before.
This should not actually change any observable results.

Did some cleanup as well, while I was at it.
2019-12-23 10:52:33 +01:00
Goober5000 084cd65e97 Merge pull request #2202 from notimaginative/fix_trails_memory_bug
fix Trails.next pointing to invalid address
2019-12-22 12:09:52 -05:00
Goober5000 158448401a Merge pull request #2203 from notimaginative/fix_end_mission_on_death
avoid ending mission on death unless we should
2019-12-22 12:09:22 -05:00
MageKing17 bc5425166c Merge pull request #2206 from FSCyborg/Fix-Multi-Backend
Fix Multiple Multi Backend Issues
2019-12-21 19:25:01 -08:00
MageKing17 3da2bdc0ad Merge pull request #2205 from CasparKielwein/ck/clean_main_file
Refactore: cleanup freespace.cpp
2019-12-21 19:17:33 -08:00
FSCyborg b37c6b9052 Fix Multiple Multi Backend Issues
This fixes string comparison of ship names in multi.  Any respawned ship would be given a default name and would return false for any future name comparison.

The most visible affect of this was being given the default loadout and fighter on respawn instead of the fighter and weapons you selected, but Taylor was spotting a lot of potential other break points as he looked through other unrelated multi issues on mantis.

Squash History:
1) Fix comments and warning to be clearer.
2) Replace NULL with nullptr
2019-12-21 18:17:34 -05:00
CasparKielwein ca3dc4277f made lopps in freespace.cpp range based as per clang tidies request
in test_sound remove the redundant reset of the array lopp.
2019-12-21 21:03:21 +01:00
CasparKielwein 0f65314dd9 in labviewer_close_flags_window call vector.clear instead of empty.
Intent probably was to empty the vectors and not check for state empty.
This was most likely a bug, which was called by the no_discard attribute on the function.
2019-12-21 11:02:15 +01:00
CasparKielwein abaa891b00 cleanup of freespace.cpp replace NULL with nullptr and declare variables at use 2019-12-21 11:02:15 +01:00
CasparKielwein 176de9e928 remove unused code behind TIMER_TEST, it asks to get matt, who is long gone :) 2019-12-19 21:54:36 +01:00
CasparKielwein 84fb5e7610 remove unsused JOHNS_DEBUG_CODE 2019-12-19 21:54:36 +01:00
CasparKielwein 977a8aff91 remove unused compiler flag DYN_CLIP_DIST 2019-12-19 21:54:36 +01:00
CasparKielwein 06ead7c051 removed unused turret debug function in freespace.cpp 2019-12-19 21:53:55 +01:00
CasparKielwein 3d485af4cc remove framerate_check code in freespace.cpp which didn't do anything anymore. 2019-12-19 21:50:16 +01:00
CasparKielwein 7cde541390 remove unused functions in freespace.h
also remove the define STAMPER_PROGRAM, which the author
considered "yuck" in 1997, so lets do him the favor.
2019-12-19 21:50:16 +01:00
CasparKielwein 8b7b9627ed removed unused variables and outcommented code in freespace.cpp 2019-12-19 21:50:15 +01:00
Taylor Richards 7e2193ef2d avoid ending mission on death unless we should
should fix Mantis 2377 and probably several other issues
2019-12-18 09:55:15 -05:00
Taylor Richards f536b0cda2 fix Trails.next pointing to invalid address 2019-12-18 09:54:18 -05:00
Goober5000 58992cfd3a Merge pull request #2201 from MageKing17/bugfix/undinky-shockwaves
Make Dinky Shockwaves not dinky by default.
2019-12-17 02:50:20 -05:00
Goober5000 d9dfce3c25 Merge pull request #2147 from asarium/feature/luaParseObjects
Add Lua access to not yet arrived ships
2019-12-17 02:35:14 -05:00
MageKing17 440162ab24 Use a float multiplier instead of a boolean.
Also, I forgot to initialize the variable in mod_table_reset() before.
2019-12-16 21:43:21 -08:00
MageKing17 c9e38fedd2 Make Dinky Shockwaves not dinky by default.
Adds a new mod table option "$Default Dinky Shockwaves:" that toggles the behavior. See issue #774 for more information.
2019-12-16 17:46:27 -08:00
Goober5000 2856ae3583 Merge pull request #2197 from wookieejedi/update-fred-key-pressed-tree
Allow sexp-tree for `key-pressed` to actually show what the mod will use
2019-12-15 20:14:27 -05:00
Allen A. Babb bb2f19c176 Merge pull request #2198 from FSCyborg/Mark-VM_EXTERNAL_CAMERA_LOCK-Deprecated
Add deprecation warning for VM_EXTERNAL_CAMERA_LOCKED
2019-12-15 18:53:16 -06:00
FSCyborg d16a3fa5cf Add deprecation warning for VM_EXTERNAL_CAMERA_LOCKED
Previously deprecated enum for hasViewmode() lua function didn't have a warning.  This fixes that.

Also, I am adding a check to ignore it while writing scripting.hmtl.
2019-12-15 15:03:00 -05:00
wookieejedi b07a3282ad adjust position of function call 2019-12-15 14:50:34 -05:00
Goober5000 83370f6219 Merge pull request #2194 from wookieejedi/add-default-keys-custom-controls
Allows the custom controls to work with `key-pressed` sexp
2019-12-15 14:39:55 -05:00
asarium 3960af6ba5 Add Lua access to not yet arrived ships 2019-12-15 15:42:07 +01:00
wookieejedi b0edc12985 cleanup whitespace diff 2019-12-15 00:51:08 -05:00
wookieejedi 83c72ec9ae modify location and add to qtfred 2019-12-15 00:39:37 -05:00
Goober5000 d3c5eb3894 Merge pull request #2142 from notimaginative/auto_port_forwarding
Auto port forwarding
2019-12-14 23:51:03 -05:00
wookieejedi 82a53d8fef Allow sexp-tree for key-pressed to actually show what the mod will use
This PR allows modders/FREDers to actually see what default controls available are in FRED and not the hard coded ones from `Control_config` that may not be relevant for their mod. For example, a mod may disable many controls and change the default key for many controls in the table, but that is not reflected in FRED since FRED simply checks the hard coded ones from `Control_config`.

Example:
Previously, if the modder specifies a default key for, say, `Enter Subspace (End Mission)` as `Enter` instead of `Alt-J` in `Controlconfigdefaults.tbl` then the game will only look for if `Enter` was pressed, whereas the `key-pressed` tree in FRED will not show that and will still show `Alt-J`. Then if the FREDer uses `Alt-J` it won't ever actually trigger in-game since the control table has switched it to `Enter`. This PR would allow FRED to properly show `Enter` instead of `Alt-J` in the sexp tree for `key-pressed`.

Background:
1) Game reads the hardcoded values for each key and saves in `Control_config`
2) Game parses `Controlconfigdefaults.tbl` and updates the default keys in `Control_config` with any that are specified in that table.
3) Now the key defaults have been changed, and when `key-pressed` is called it searches for it's argument in the updated `Control_config` array, but only searches for the default. Thus even if the player changed the key, it will still find it and properly convert it.

All of that works well and as expected. But FRED never goes beyond step 1, so when FREDing I don't use the drop down tree for `key-pressed` since it doesn't actually match what the game will know when it parses `Controlconfigdefaults.tbl` in step 2.
2019-12-14 16:16:32 -05:00
wookieejedi 7d60ee882b add keys 0 and 5-9 2019-12-14 15:20:31 -05:00
Goober5000 f958116a64 Merge pull request #2190 from MitoPL/MitoPL-patch-1
Hide FPS counter with the rest of HUD
2019-12-14 15:05:32 -05:00
Goober5000 4b51ac5987 Merge pull request #2184 from FSCyborg/Fix-JumpNode-Briefing-Bug
Fix Crashes In Briefing Screen
2019-12-14 11:57:29 -05:00
Goober5000 d06a3ca72c Merge pull request #2195 from Goober5000/fix_mantis_2542
apply fix for model_anim_get_time_type (Mantis 2542)
2019-12-14 11:31:03 -05:00
m!m fdf37dcb35 Merge pull request #2052 from asarium/feature/scriptingModelPaths
Add scripting API support for model paths
2019-12-14 12:36:18 +01:00
asarium b825f57bf4 Add scripting API support for model paths
This adds a scripting API for querying the paths of a model.
2019-12-14 09:15:44 +01:00
Goober5000 d664f13f97 Merge pull request #2192 from FSCyborg/Fix_FSO_Launch_From_FRED
Open FSO from FRED Using FRED's Directory
2019-12-14 00:47:16 -05:00
Goober5000 a069eb62f9 apply fix for model_anim_get_time_type (Mantis 2542)
This patch was posted in 2011 but never applied.  Here's a PR to remedy that.

Mantis ticket:
http://scp.indiegames.us/mantis/view.php?id=2542

Original thread:
http://www.hard-light.net/forums/index.php?topic=79068.0
2019-12-14 00:39:58 -05:00
wookieejedi 3bc878db9a Allows the custom controls to work with key-pressed sexp
This expands the functionality of the cusotm controls to work with rebindings when using the sexp `key-pressed`. A key default value must be specified in `controlsconfigcommon.cpp` for the sexp `key-pressed` to track key binding changes. This PR adds that functionality by assigning default keys that were not in use (alt shift 1-5).
2019-12-13 23:27:35 -05:00
FSCyborg 0e31be10f5 Switch to nullptr in this function 2019-12-13 21:19:56 -05:00
Goober5000 e96f9400e1 Merge pull request #2193 from The-E/fix/remove_unused_cmdline_flags
Remove the -ogl_spec and -spec_exp cmdline arguments
2019-12-13 13:46:20 -05:00
Fabian Woltermann d703d61cba Remove the -ogl_spec and -spec_exp cmdline arguments, as they are no longer used by anything 2019-12-13 12:37:36 +01:00
FSCyborg f00be46211 Open FSO from FRED Using FRED's Directory
According to the CreateProcess() documentation, passing NULL in the eighth argument starts a process in the same directory as the original process, which is what we're trying to do.

Please note this is a Windows only solution, and cannot be ported to QTFred

Addresses 1775, already tested on Release and Debug
2019-12-12 21:36:18 -05:00
Taylor Richards 826a92745d clean up logging just a bit 2019-12-12 08:06:59 -05:00
Taylor Richards f573706d07 allow for unicast (gateway) route type
this fixes an issue where the default gateway
isn't in the main routing table but is instead
the primary unicast route

(ChromeOS, maybe others)
2019-12-12 08:06:59 -05:00
Taylor Richards 9ae62e9db8 remove some cruft from previous attempts 2019-12-12 08:06:59 -05:00
Taylor Richards 7da6276f07 fix type issue with XP compat code 2019-12-12 08:06:59 -05:00
Taylor Richards c286c4c2ce add support for automatic port forwarding 2019-12-12 08:06:59 -05:00
Goober5000 820d4452d8 Merge pull request #2191 from notimaginative/fix_multi_mode_switch
properly save single/multi mode setting
2019-12-12 03:07:16 -05:00
MitoPL e8a07b6972 Update freespace.cpp
A quick update that should allow for the FPS gauge to be hidden together with the rest of the HUD. Sounds useful for anyone wanting to take clean screenshots.
Also, thanks @wookiejedi for showing me how to do this.
(Will that even work? that's my first real meeting with GitHub so I'm a bit anxious.)
2019-12-12 01:19:34 +01:00
Taylor Richards 7ede543ca7 properly save single/multi mode setting 2019-12-11 17:48:48 -05:00
Goober5000 da1634cdc2 Merge pull request #2158 from Goober5000/never_viewable
add $Never Viewable flag for cutscenes
2019-12-11 12:49:59 -05:00
Goober5000 1183140dc2 Merge pull request #2169 from notimaginative/pxo_banners
fix PXO banners (and inetgetfile stuff)
2019-12-11 12:47:37 -05:00
Allen A. Babb fc29960b3b Merge pull request #2189 from wookieejedi/add-custom-controls-for-modders
Add Extra, Empty Controls for Modders to Use.
2019-12-11 07:59:10 -06:00
wookieejedi 2e3f0e2f80 Add Extra, Empty Controls for Modders to Use
Many mods and scripts use custom features that are triggered by key press. Currently, those keypresses cannot be changed by the player. I want to add 5 controls that do nothing and thus can be used for scripts/modding purposes. This way the modder could add new features/controls easily and have them show up in the controls menu and be bindable. As opposed to using a script which triggers via a keypress, and that keypress cannot be changed by the player in game (and may be bound to another control).

Also, Axem has expressed he would find this feature and Fate of the Galaxy certainly will.
2019-12-10 19:59:04 -05:00
Goober5000 d9bb6625fd Merge pull request #2188 from asarium/fix/1481
Fix #1481: Use a lower default specular factor
2019-12-10 19:07:12 -05:00
Goober5000 d2c9afc853 Merge pull request #2187 from wookieejedi/specify-string-index-via-xstr
Method to fix controls translation issue
2019-12-10 19:06:43 -05:00
wookieejedi 8535c3cbea clarify variable is int 2019-12-10 13:51:03 -05:00
wookieejedi 8fdd8624e4 fix struct issue 2019-12-10 13:44:21 -05:00
asarium c294433741 Fix #1481: Use a lower default specular factor
This is a fix for models with no spec map since the current default
factor looks very odd for retail models.
2019-12-10 19:40:18 +01:00
wookieejedi e89fb04b8c test fix troubleshooting 2019-12-10 13:24:52 -05:00
wookieejedi de0a43940f update comment with correct type 2019-12-10 13:20:28 -05:00
wookieejedi 02aab6cfdf Method to fix controls translation issue
This PR adds functionality to `Has Xstr:` in `controlconfiguredefaults.tbl`. Previously this value was use as a boolean, 0 or 1 to specify if the string should be used. This PR treats that field as an integer, and thus allows modders to specify which string to use for the control. If the value is 0 (default) then the string is not used, if the value is 1 then the defautl string is used and if the value is greater then 1 the game will use that specified index in strings.tbl.

This allows modders to properly translate all control names.  Specifially, six controls overlaped with pre-existing string.tbl indexes adn thus could not be translated properly. These are VIEW_TOPDOWN, VIEW_TRACK_TARGET, AUTO_PILOT_TOGGLE, NAV_CYCLE, TOGGLE_GLIDING, and CYCLE_PRIMARY_WEAPON_SEQUENCE.

This PR will allow modders to now proerly have full control name translations. It also provides a fix for issue #1629.
2019-12-10 12:57:31 -05:00
FSCyborg d0bee3a3ac Fix Crashes In Briefing Screen
Fixes the following:
1. Crash from creating an icon from a jumpnode
2. Crash from creating an icon from a waypoint
3. Waypoint would become a jumpnode icon in briefing screen.

This line is the cause:

                iconp->ship_class = (int)std::distance(Ship_info.cbegin(), it);

The main purpose of this commit is to change iconp to biconp, like the rest of the function uses.

The other change is how it checks for a jumpnode so that it is only true if there *is* a jumpnode.
2019-12-09 21:48:16 -05:00
Goober5000 2049778da8 Merge pull request #2171 from Kiloku/master
Add Documentation Update instructions and moves Building info from Readme to wiki
2019-12-09 16:19:43 -05:00
Goober5000 2972fdc1cf Merge pull request #2186 from wookieejedi/deprecate-set-object-speed
Deprecates `set-object-speed` in favor of `ship-maneuver`
2019-12-09 16:18:48 -05:00
wookieejedi b0dfca91c5 hide set-object-speed in FRED 2019-12-09 14:37:59 -05:00
wookieejedi 55e5351214 Deprecates set-object-position in favor of // wookieejedi - this sexp is deprecated in favor of ship-maneuver`
Per dicussion on Discord and and Github, `set-object-position`  does not work properly and the fix would involve making it act the same way as `ship-maneuver`. With discussions with Goober (who originally made it), we have decided to deprecate the sexp. I have talked with folks who have used it thus I am not removing it from FRED with this PR but I am open to discussion on that point.
2019-12-09 14:15:38 -05:00
MageKing17 2789d143bb Merge pull request #2185 from MageKing17/cleanup/objecttypes-nocreate-behavior
Standardize nonstandard "+nocreate" behavior in objecttypes.tbl
2019-12-09 01:31:40 -08:00
MageKing17 8935075af9 Make clang-tidy happy by changing NULL to nullptr. 2019-12-08 19:25:24 -08:00
MageKing17 90467f8f41 Standardize nonstandard "+nocreate" behavior in objecttypes.tbl
If you modified an existing ship type without using +nocreate, it would both modify it and add it to the vector again, leading to (at the very least) wasted memory. I copied over some more standard behavior from other parsing functions to hopefully avoid problems with modular objecttypes.
2019-12-08 18:53:19 -08:00
Goober5000 4d6ec5c431 Merge pull request #2182 from wookieejedi/fix-rtt-ss-bracket-bug
Fix RTT Subsystem Bracket Bug
2019-12-08 15:08:02 -05:00
wookieejedi 9184ed4224 Fix RTT Subsystem Bracket Bug
Previosuly, subsystem brackets in the target ship gauge were not always drawn in the correct location when using RTT with the gauge. This PR fixes that.
2019-12-07 23:56:54 -05:00
Goober5000 599313da81 Merge pull request #2179 from asarium/fix/ciStuff
Fix some CI issues
2019-12-07 11:26:58 -05:00
Goober5000andMageKing17 f8bdfa2d0b Update code/cutscene/cutscenes.cpp
Slightly compactify flag check

Co-Authored-By: MageKing17 <[email protected]>
2019-12-05 12:22:16 -05:00
asarium f817538567 Fix some CI issues
First one is to allow MinGW failures since that is unreliable at the
moment. Second one is a fix for the regex used by clang-tidy so that it
doesn't try to analyze CMake files.
2019-12-05 18:16:59 +01:00
Goober5000 8bde99654f Merge pull request #2178 from FSCyborg/Free_Look_X_Inversion_bug
Fix Free look turning in the wrong directions
2019-12-05 11:48:30 -05:00
Taylor Richards 7552b50a2e address clang-tidy issues 2019-12-05 01:30:18 -05:00
Taylor Richards f4883401e9 const all the chars 2019-12-05 01:30:18 -05:00
Taylor Richards d223aee4e7 fix PXO banners (and inetgetfile stuff) 2019-12-05 01:30:18 -05:00
FSCyborg d6ec51235b Fix Free look turning in the wrong directions
Free look will now move in the same directions as ship controls, whether pitch or yaw, and whether using keyboard or mouse/joystick.

Also, remove an inaccurate comment, and add a clarifying one.
2019-12-04 23:50:39 -05:00
Goober5000 d84231642d Merge pull request #2177 from MageKing17/bugfix/surround-front-speakers
Make 2D sounds play from front speakers instead of rear.
2019-12-04 22:14:14 -05:00
Goober5000 0f020abf3d use a flagset 2019-12-04 21:26:05 -05:00
MageKing17 39bd7cfdce Make 2D sounds play from front speakers instead of rear.
The Z coordinate, from negative to positive, means "front to back", so a Z value of 1.0 (with relative playback, which is what 2D sounds use) means "as far back as possible", i.e. the rear speakers. It's hard to know if this was intentional or not, but feedback from an actual user with a surround setup is that the opposite is preferable.
2019-12-04 17:10:23 -08:00
MageKing17 4cad3d4fc2 Merge pull request #2174 from Goober5000/repeat_count_fix
better sanity-checking for repeat_count, and also check trigger_count
2019-12-04 14:59:38 -08:00
Goober5000 0eb0cc87d1 correction 2019-12-04 00:57:02 -05:00
MageKing17 520f8f4e04 Merge pull request #2175 from Goober5000/fix_2063_bug
fix set-object-facing for wings not present
2019-12-02 23:05:46 -08:00
Goober5000 85e955a58f fix set-object-facing for wings not present
There was a small but serious bug in PR #2063 that would cause a crash.  This fixes it.
2019-12-02 23:36:28 -05:00
Goober5000 c01e30e393 address CI complaint 2019-12-02 23:09:03 -05:00
Goober5000 52f709a2db address feedback 2019-12-02 18:11:29 -05:00
Goober5000 425a6e67d5 add $Never Viewable flag for cutscenes
There are now three states for cutscenes: always viewable, where they will appear no matter what; never viewable, where they will never appear; and viewable, which can be modified during the campaign.  Currently cutscenes will go from not-viewable to viewable, but organizing the flags this way will allow a future feature to make cutscenes not-viewable, if that is desired.

There's also a small edit to csv_convert to guard against array overflows.  Not directly related to the feature but it's in the same place and affects the same code.
2019-12-02 18:11:29 -05:00
Goober5000 3c7c8486eb better sanity-checking for repeat_count, and also check trigger_count
Sanity checking for repeat counts shouldn't crash the game, so change from Error to Warning and use a sensible default.  Also copy the check (with minor modification) to also check trigger counts.
2019-12-02 17:56:51 -05:00
Goober5000 fadcaa0ca1 Merge pull request #2051 from asarium/feature/genericLuaDocumentation
Make Lua documentation generation more generic
2019-12-02 17:53:14 -05:00
Goober5000 e885203683 Revert "try this compiler flag, per https://stackoverflow.com/questions/43152633/invalid-register-for-seh-savexmm-in-cygwin"
This reverts commit 013f6007f3.
2019-12-02 16:05:04 -05:00
Goober5000 013f6007f3 try this compiler flag, per https://stackoverflow.com/questions/43152633/invalid-register-for-seh-savexmm-in-cygwin 2019-12-02 14:54:19 -05:00
Goober5000 65ced1279d change to nullptr 2019-12-02 10:20:15 -05:00
Goober5000 383b3b7ca9 Merge pull request #2163 from Goober5000/revisiting_1450
don't restart if we are switching to a previously finished campaign
2019-12-01 14:07:53 -05:00
Goober5000 8204de3854 Merge pull request #2172 from wookieejedi/fix-on-goals-cleared
Fix FRED not working
2019-12-01 14:06:27 -05:00
Goober5000 c4a7a234ae Merge branch 'master' into feature/genericLuaDocumentation 2019-12-01 14:01:09 -05:00
Goober5000 8808e26f06 Merge pull request #2170 from Goober5000/small_fixes
Two small fixes
2019-12-01 13:57:30 -05:00
wookieejedi 10150c0640 fix int return 2019-12-01 12:07:44 -05:00
wookieejedi 674b6cd4fb Adds valid scripting state checks to functions that it was missing in 2019-12-01 11:59:15 -05:00
wookieejedi d271e33cca Fix fred not working
The `On Goals Cleared` scripting hook would result in FRED not working, thus this PR adds a check for scripting state to the hook and will only run if the scripting state is active. Now FRED will run proprerly.
2019-12-01 11:32:30 -05:00
Kiloku d340d96202 Formatting fixes 2019-12-01 09:58:53 -02:00
asarium 4ca589a61c Make Lua documentation generation more generic
This adds JSON as an additional scripting documentation output format.
This can be used by external tools to examine the scripting
documentation and generate interface declarations or documentation for
any language. The existing documentation code is left largely in place.
2019-12-01 12:53:51 +01:00
Kiloku 4ae495437b Moved most of the Readme to the wiki and linked it 2019-12-01 09:51:31 -02:00
Goober5000 8ed68efc34 Merge pull request #2154 from FSCyborg/Fix-sexp-set-weapon
Keep set-secondary-weapon from using nonsense
2019-12-01 00:37:30 -05:00
Goober5000 1a8dcb1be9 maybe this instead 2019-12-01 00:35:36 -05:00
Goober5000 821f90c5db add explicit cast to fix CI warning 2019-11-30 23:01:02 -05:00
Goober5000 775359c636 Merge pull request #2168 from notimaginative/multi_config_pxo
sanitize parsed multi.cfg settings for PXO
2019-11-30 22:59:23 -05:00
Goober5000 2d7c4de268 set Shadow_quality to default value 2019-11-30 22:55:20 -05:00
Goober5000 16b4c36cc0 Merge pull request #2167 from wookieejedi/fix-get-pitch-from-matrix
Fixes the extraction of pitch
2019-11-30 21:45:01 -05:00
FSCyborg 0008c5bacb Keeps set-secondary-weapon from using nonsense
Set-secondary-weapon and set-secondary-ammo have been up to know been allowed to exceed tabled cargo sizes, as long as you didn't put a value for requested_ammo in the sexp.

The limits would be inherited from the last secondary weapon in the slot, definitely not idea behavior.

Now includes matching changes to set-primary-ammo
2019-11-30 15:58:11 -05:00
Taylor Richards f518e277f1 sanitize parsed multi.cfg settings for PXO 2019-11-30 15:32:13 -05:00
Goober5000 0ff32b3f3e Merge pull request #2146 from scp-fs2open/feature/1587-new_lighting_defaults
Makes slight adjustments to the lighting defaults.
2019-11-30 12:57:54 -05:00
Fabian Woltermann 6abd8b0b60 Change the link associated with the -emissive_light flag 2019-11-30 15:02:21 +01:00
Goober5000 903e1563ce Merge pull request #2164 from FSCyborg/Mission_Campaign_Duplicate
Only Try To Load a Campaign Once
2019-11-29 17:51:02 -05:00
wookieejedi e519646e28 Optimized a bit
Tried a few different things and still can't find a way to remove the square-root unforuntealy.
2019-11-29 17:49:22 -05:00
Goober5000 4f89dd3c2f Merge pull request #2165 from chief1983/fix/line_ending_tomfoolery
Fix Line Ending Tomfoolery
2019-11-29 17:48:30 -05:00
wookieejedi 48773e3099 Fixes the extraction of pitch
It turns out that `angles_2_matrix ` would return a pitch value that was not the actual pitch from the 3x3 matrix. The pitch line in the code is uses a modifed `cosp` as the demoninator to calculate the pitch angle. I looked up online what the caclulation should be and found a more accurate way than using the modifed cosp, is to use ( fvec.xyz.x^2 + fvec.xyz.z^2 )^0.5 I tested using the new calculation throughouly and in each test it returned the proper pitch value from the 3x3 orientation matrix.
2019-11-29 16:31:41 -05:00
Cliff 5f234426b1 fix/line_ending_tomfoolery: Making everything auto globally is causing more problems than it might be trying to solve. 2019-11-29 10:40:08 -06:00
FSCyborg 7b2e8340c6 Only Try To Load a Campaign Once
Correct me if I'm wrong, but there's no need to try to load the default campaign twice.
2019-11-29 00:50:40 -05:00
Goober5000 1d4dea29d1 Merge pull request #2162 from Goober5000/small_play_sound_fix
very small fix to multi_sexp_close_sound_from_file
2019-11-29 00:29:02 -05:00
Goober5000 bd5fef4861 actually, there is one case where we still need to reset the tech db 2019-11-28 14:40:37 -05:00
Goober5000 1b533d5c7e don't restart if we are switching to a previously finished campaign
This is a follow-up to #1450, based on feedback and preference.  Instead of always resetting campaign progress, just switch to the campaign.  The player can then explore the tech room database or the finished missions if he chooses.

This also fixes a few bugs:

1) Ever since the tech-database-reset feature was introduced in 2003 or so, the game incorrectly checked the campaign being unselected, not the campaign being selected.  This is now obsolete since neither the tech database nor the campaign progress are reset.
2) Not all campaign loading failure types were recorded in `mission_load_campaign`.
2019-11-28 14:03:29 -05:00
Goober5000 c5ae4ca2b9 very small fix to multi_sexp_close_sound_from_file
The default fade argument is `true`, as specified by the sexp help, not false.  This probably doesn't matter here as the multi packet should receive all sexp arguments anyway, but better to be consistent.
2019-11-28 13:00:21 -05:00
Goober5000 9abcd55f23 Merge pull request #2159 from wookieejedi/add-on-goals-cleared-hook
Add `On Goals Cleared` Scripting Hook
2019-11-28 12:00:33 -05:00
Kiloku 88fdae1863 Merge branch 'master' of https://github.com/Kiloku/fs2open.github.com 2019-11-28 00:30:44 -02:00
Kiloku 4c9454274f Merge pull request #1 from scp-fs2open/master
Updating
2019-11-27 23:30:09 -03:00
Kiloku 4fc13dcb72 Added a bit more info to the checklist 2019-11-28 00:11:09 -02:00
Kiloku ceb592b182 Added a simple checklist to help keep the documentation updated 2019-11-28 00:05:23 -02:00
Goober5000 54455522b2 Merge pull request #2156 from Kiloku/master
Tackles most of #711
2019-11-26 22:24:30 -05:00
wookieejedi ea021c6fe3 Add On Goals Cleared Scripting Hook
Adds 'On Goals Cleared' hook variable for scripting system. Previosly there was not scripting or sexp method to determine if a ship had all of it's goals cleared.
2019-11-25 21:12:40 -05:00
Goober5000 ccb7480b53 Merge pull request #2155 from wookieejedi/improve-on-waypoints-done-hook
Add waypoint-path hook variable to `On Waypoints Done` Hook
2019-11-25 00:47:08 -05:00
wookieejedi 06a783cce4 Use more consistent naming with Waypointlist 2019-11-24 23:11:23 -05:00
wookieejedi d56ce4cb56 add missing space 2019-11-24 21:13:56 -05:00
wookieejedi a93be36740 simplify waypointpath set 2019-11-24 18:17:37 -05:00
wookieejedi 3926ee39dd Add waypoint path name to On Waypoints Done Hook
Originall the scripting hook `On Waypoints Done` only provided the ship or wing. This PR adds the waypoint path that was completed as an additional hook variable.
2019-11-24 15:16:11 -05:00
Kiloku 44c9fc2ec9 Corrected formatting in Copying.md 2019-11-24 18:13:42 -02:00
Kiloku b06f6476c9 Add youtube link 2019-11-24 18:12:12 -02:00
Kiloku 8278007cdb Merge branch 'master' of https://github.com/Kiloku/fs2open.github.com 2019-11-24 18:09:55 -02:00
Kiloku c5d201ba67 Linked updated video (1999/2019) and reworded comparison line 2019-11-24 18:09:37 -02:00
Kiloku 30326cb67e Rename COPYING.md to Copying.md 2019-11-24 17:07:13 -03:00
Kiloku d4c960fa13 Added FSU comparison video link to About.md 2019-11-24 18:05:49 -02:00
Kiloku 78c7f375cc Remove FS2OpenSCPReadMe.doc file, which was severely outdated. 2019-11-24 17:59:21 -02:00
Kiloku 851899418e Add About.md file, giving general information meant more for newcomers 2019-11-24 17:58:40 -02:00
Kiloku 58bd966f54 Removed outdated INSTALL file 2019-11-24 17:27:20 -02:00
Kiloku 5dbefc99d0 Changed Authors to a markdown file, updated the information in it 2019-11-24 17:27:09 -02:00
Kiloku d60929cd53 Changed COPYING to MarkDown format, added a link to the FSO's Licensing page at wiki in github 2019-11-24 17:13:39 -02:00
Kiloku fdca5ffeed Added a separator before the Older Changes section 2019-11-24 17:08:03 -02:00
Kiloku 9ac5c7e041 Minor formatting change 2019-11-24 17:07:11 -02:00
Kiloku 75d925e8e8 Re-ordered the sections in 3.6.14 2019-11-24 17:05:04 -02:00
Kiloku bec81ed752 Merged old changelog into the new changelog 2019-11-24 17:03:18 -02:00
Kiloku 0a61706368 Added links to some relevant info and added a section explaining the version number scheme change 2019-11-24 16:59:25 -02:00
Kiloku 368194a23e Added more changes found through some extra sleuthing 2019-11-24 16:54:10 -02:00
Kiloku ff520dbfa4 Added changes all the way to 3.6.14 (2012) 2019-11-24 16:46:06 -02:00
Kiloku e2c6fc3cc2 Increased conformity with Keep A Changelog 2019-11-24 15:54:18 -02:00
Kiloku 6d770c8bc5 Added 2019 RC1 to changelog 2019-11-24 15:44:02 -02:00
Goober5000 6200b380d7 Merge pull request #2144 from notimaginative/winsock2
switch to using winsock2
2019-11-23 09:25:11 -05:00
Goober5000 ea7c454e6a Merge pull request #2149 from FSCyborg/Patch_N-Gon_Radar
Patch n gon radar
2019-11-23 09:23:57 -05:00
Fabian Woltermann 7d40cbb241 Merge pull request #2148 from notimaginative/fix_audiostr_looping
avoid full stream reset when looping music
2019-11-23 11:32:00 +01:00
Fabian Woltermann 6c356692b2 Merge pull request #2152 from FSCyborg/Fix-The-Pirates
Bring Pirates of the FSO Back by
2019-11-23 11:30:18 +01:00
Fabian Woltermann 400440ca63 Merge pull request #2153 from FSCyborg/Fix-1992
Fix#1992
2019-11-23 11:27:56 +01:00
Fabian Woltermann 5ae9623f9e Switches the behaviour of the Lab emissive lighting switch to be in line with the other changes. 2019-11-23 11:06:38 +01:00
Goober5000 166a88d4a6 Merge pull request #2139 from FSCyborg/Fix#1886
Fix#1886 by Upgrading to SDL 2.0.10
2019-11-22 20:25:21 -05:00
Taylor Richards 0dcea8f93e fix building of qtFRED 2019-11-20 22:57:41 -05:00
FSCyborg 4c2a3450f8 Fix 1992
Send the ship to the actual initial position once the engine knows where the ship should end up.
2019-11-18 22:16:33 -05:00
FSCyborg 51d362e447 Bring Pirates of the FSO Back by
Preventing a nullptr deep within shipfx_warpin_start()

Add Assertions to check for nullptr Warp Effect
2019-11-18 21:40:16 -05:00
Taylor Richards 70b14a5c2c fix PORT command
was in wrong order before, did this code
ever work? ...
2019-11-18 17:04:02 -05:00
Taylor Richards e9cf9ac10d deal with type warnings on Windows 2019-11-18 12:00:26 -05:00
Taylor Richards 990820cad8 prevent excess headers being included on Windows 2019-11-18 11:59:19 -05:00
FSCyborg 623be80e48 Move Creation of Hud Gauge to Accomodate gauge_load_common()
We didn't realize that Gauge_load_common had some assumptions about where Origin: and Offset: are, so we accidentally broke custom radars.  Moving this section up forces modders to have an odd order for their entries, but based on the way the code was written, there really doesn't seem to be another choice.
2019-11-17 21:22:22 -05:00
Taylor Richards 6b3f5051ea avoid full stream reset when looping music
fixes #2097
2019-11-17 16:00:38 -05:00
Fabian Woltermann 7451fb36d9 Actually set the bloom intensity 2019-11-17 18:07:33 +01:00
Fabian 9e5cd347be Makes slight adjustments to the lighting defaults.
This commit disables emissive lighting on objects by default (as the new HDR process makes it unnecessary) and switches the -no-emissive commandline parameter to -emissive; Setting that parameter will restore the old behaviour. The -no-emissive parameter is retained to avoid user-facing error messages.
In addition, this commit sets the default bloom value to 25.
2019-11-17 13:38:24 +01:00
FSCyborg 1f41d98e2a Fix#1886 by Upgrading to SDL 2.0.10
This should fix #1886.  I built it and it fixes the immediate problem.

Only two of the documentation files we have in the codebase were actually updated.

Verison name in prebuilt.cmake also needed to be changed due to prebuild SDL version changing during upgrade to the prebuild repository.
2019-11-16 16:39:12 -05:00
Goober5000 1c77ffe07f Merge pull request #1211 from z64555/feature/ngon_radar_vector
[Feature] Ngon Radar
2019-11-16 14:46:43 -05:00
Goober5000 29b853de0c Merge pull request #2028 from Goober5000/clang_tidy_upgrade
upgrade clang-tidy to 8.0, the latest stable release
2019-11-16 13:53:35 -05:00
Goober5000 48c67b563a Merge pull request #2145 from asarium/fix/referenceNullError
Handle invalid Lua reference correctly
2019-11-16 13:52:28 -05:00
asarium 4ccccb526e Upgrade Travis to Xenial to support newer clang-tidy versions 2019-11-16 17:11:57 +01:00
asarium a61324f559 Handle invalid Lua reference correctly
This should never have worked but was only discovered by the recent
switch to the default copy constructors for some reason.
2019-11-16 17:08:34 +01:00
Goober5000 a3d2ca5724 add additional configuration per github comments 2019-11-16 15:46:05 +01:00
Goober5000 97ace6fa8c upgrade clang-tidy to 8.0, the latest stable release 2019-11-16 15:46:05 +01:00
m!m 7a11e247f3 Merge pull request #1740 from asarium/build/clangXstrFinder
Add tool for extracting XSTR calls
2019-11-16 15:36:43 +01:00
Taylor Richards 29ce72f66f switch to using winsock2
also removes some obsolete win32 #ifdef's and
cleans up some windows #include's
2019-11-15 23:33:35 -05:00
Goober5000 a94c4e46a1 Merge pull request #2136 from FSCyborg/dumb_rotate
Fix Dumb_Rotate Regression
2019-11-13 01:15:12 -05:00
Goober5000 e262878add Merge pull request #2143 from wookieejedi/fix_3d_weaponselect
Fixes 3D Weapon Selection Bug
2019-11-12 23:06:57 -05:00
wookieejedi c499cfb192 Fixes 3D Weapon Selection Bug
Fixes 3D weapon selection not working when an animation is already specified.
2019-11-12 21:34:20 -05:00
FSCyborg 2238c0af63 Move Default Values to Class Define
Part of modernizing the code base, Travis, at least, prefers defaults to be in the class definition instead of having multiple constructor functions have the same default values.
2019-11-12 16:58:41 -05:00
Goober5000 6a0023da4b Merge pull request #2141 from FSCyborg/fix_rearm_increment
Set Ballistic Primaries ream increment no matter what
2019-11-11 15:52:43 -05:00
FSCyborg bb19d69b7b Set Ballistic Primaries if not Missiles no matter what
Fix the rearm by not depending on flags that haven't been set yet....
2019-11-11 12:39:20 -05:00
FSCyborg e62b64bac8 Fix Dumb_Rotate Regression
Allows jump nodes to use instrinsic/dumb rotation again by exposing the jump node class to the model instancing code and adding a check for it in modelread.
2019-11-11 11:22:13 -05:00
FSCyborg a17f5031bf Fix the unique pointer and constructor
Unique pointers need to be constructed in very particular ways, but so did this NGON radar class, so we just had to put the constructor function inside unique pointer constructor.

And to keep that special pointer from going out of scope, we switched to the ternery operator.

Also made these changes:
Change to hypotf()
Fix Shadowing, Zero Vector macro not working at all.
Offset changed to offset_incoming
blip changed to blip_instance
Offset changed to = {} to initialize the struct without a problem.
clampBlip() required an override
Give offset a default initializer.
Switch to <cmath>
(Apparently <math.h> was deprecated and needs to be replaced with <cmath>.)
One last complaint from travis about a redundant default value.

Thank you Travis!
2019-11-10 13:49:31 -05:00
z64555 1fb194a729 Use vmd_zero_vector instead of ZERO_VECTOR in places that expect an actual vector.
Refactor plotBlip() a bit.
Rename the variable 'blip' in clampBlip() to the more generic 'b'
Use 'hypotf' instead of '_hypotf'
2019-11-10 13:49:30 -05:00
z64555 f0f72b25a5 Add the ngon source files so cmake can find them. Update doxy of find_intersection. 2019-11-10 13:49:29 -05:00
z64555 f8f9bce7da Adds Ngon radar. This is a standard 2D radar, but uses a polygonal plot area instead of the std's oval.
* Modders can specify how many sides the radar can have (as few as 3) with "Ngon Sides:" and can also define an optional twist angle with "Ngon Offset:".

* Also refactors the standard radar code a bit
2019-11-10 13:49:28 -05:00
z64555 082304a4b8 Adds function to find the intersection of two lines 2019-11-10 13:49:27 -05:00
Goober5000 6614b6cd9a Merge pull request #2138 from notimaginative/fix_std_user_config_reset
fix standalone causing user config reset on *nix
2019-11-10 13:45:13 -05:00
Goober5000 3450a39e75 Merge pull request #2137 from notimaginative/fix_pxo_std_mod_detect
init tracker when attempting to validate game data
2019-11-10 13:44:30 -05:00
Taylor Richards 58ada6cf05 fix standalone causing user config reset on *nix 2019-11-10 00:47:02 -05:00
Taylor Richards 4369f1b555 init tracker when attempting to validate game data 2019-11-09 19:43:28 -05:00
Goober5000 8e94880c7f Merge pull request #2135 from Goober5000/goal_achievable_tweak
Two subsystem-related fixes
2019-11-08 16:06:10 -05:00
Goober5000 0a1bd5be5c Merge pull request #2127 from notimaginative/pxo
replace FS2NetD with PXO
2019-11-08 10:16:32 -05:00
Taylor Richards bd9880bc9b replace FS2NetD with PXO 2019-11-08 02:07:14 -05:00
Goober5000 6433181607 correctly set and recalculate subsystem info when using subsys-set-random 2019-11-07 19:20:25 -05:00
Goober5000 28ce16ba6b make goal-achievable dependent on actual status of subsystem 2019-11-07 19:19:51 -05:00
Goober5000 1b69015b50 Merge pull request #2129 from asarium/build/gcc9
Update Travis to GCC 9 and fix warnings
2019-11-07 15:36:34 -05:00
asarium be24f7f574 Switch back to int 2019-11-07 18:45:09 +01:00
asarium afc7c671d2 Remove Mac actions again
This fails for some obscure reason right after merging it. I don't care
enough about Mac to attempt to fix it so I'll just remove it...
2019-11-07 18:40:03 +01:00
asarium e31e68cba0 Update Travis to GCC 9 and fix warnings
Only one warning type this time, the implicit copy operator for types
with a copy constructor has been deprecated so we need to delcare them
ourself.
2019-11-06 18:22:50 +01:00
m!m b5663cfd89 Merge pull request #2134 from asarium/build/ghActions
Add Mac GitHub Actions
2019-11-05 18:44:15 +01:00
Goober5000 3ec94338d3 Merge pull request #2132 from FSCyborg/Coverity1370825
Coverity1370825
2019-11-04 22:51:05 -05:00
FSCyborg 627294039f Coverity1370825
Covertity is complaining about portions of the verts array being uninitialized, so this is just a quick change to initialize the array first before doing anything else.
2019-11-04 20:13:36 -05:00
Kiloku 86a12c0654 Initial changelog improvement 2019-11-04 21:41:41 -02:00
Goober5000 c5805bcd8d Merge pull request #2131 from FSCyborg/Covertiy-1297186,187,188,190
Address Coverity 1297186,187,188, 190
2019-11-03 20:27:46 -05:00
FSCyborg 601fa75d50 Change while(0) to while(false)
Travis is complaining about while(0), so we're getting it off of our back by switching to while(false).
2019-11-03 16:27:23 -05:00
Goober5000 68df93ccff Merge pull request #2130 from Goober5000/fix_missionnotes_flags
add missing lines for flags
2019-11-03 10:15:40 -05:00
FSCyborg 5084fdd189 Address Coverity 1297186,187,188, 190
These coverity issues are all caused by the same code being copy and pasted in three different places.

There does not seem to be danger of the negative array access, but the changes that "fix" it are also slight optimizations (assuming the compiler hasn't been catching them).

In short, I am basically just moving code around to avoid duiplicate checks and in other places checking for the negative array index explicitly.

Suggested style corrections now included.
2019-11-03 09:37:27 -05:00
asarium 256e5028a1 Add tool for extracting XSTR calls
This uses clangs LibTooling for parsing the FSO source files to ASTs
which can then be used for extracing the strings used in XSTR calls.
This supports both standard XSTR calls and UI_XSTR definitions and
writes the resulting information in the strings.tbl format to stdout.
It also detects duplicate translation id usages with different text
values.
2019-11-03 15:17:05 +01:00
asarium 327ee0fccb Add Mac GitHub Actions
Also separate windows tests into it's own step.
2019-11-03 13:09:30 +01:00
Goober5000 efb3d08494 add missing lines for flags 2019-11-02 00:28:45 -04:00
Allen A. Babb 2e5da03e86 Merge pull request #2128 from Goober5000/backwards_maneuver_fix
fix an oversight with dont-clamp-max-velocity
2019-10-31 10:53:18 -05:00
Goober5000 3a4bd86153 fix an oversight with dont-clamp-max-velocity 2019-10-29 19:59:53 -04:00
Goober5000 f0526e3f7c Merge pull request #2126 from asarium/build/ghActions
Add Windows Checks for GitHub Actions
2019-10-26 21:16:45 -04:00
asarium 963db03f3e Add Windows Checks for GitHub Actions
This will test compilation and tests on Windows as compiled by Visual
Studio and MinGW.
2019-10-26 22:23:48 +02:00
Goober5000 a8cf7f2c69 Merge pull request #2118 from Goober5000/maneuver_flags
Enhanced ship maneuvers
2019-10-26 14:10:40 -04:00
Goober5000 99c23b11cd Merge pull request #2115 from Goober5000/play_sound_from_file_improvements
allow multiple simultaneous sexp-controlled audio streams
2019-10-26 14:09:25 -04:00
Goober5000 8b7e99c4cb Merge pull request #2122 from Goober5000/small_sexp_h_fix
add OP_NONCAMPAIGN_FLAG to a couple sexps
2019-10-26 14:09:14 -04:00
Goober5000 515b0062f4 Merge pull request #2125 from Goober5000/matrix_from_vectors
create matrixes from vectors
2019-10-26 14:08:58 -04:00
Goober5000 ae1e0c90fa address feedback 2019-10-26 11:47:13 -04:00
MageKing17 edad20d562 Merge pull request #2121 from FSCyborg/fix-2120
Fix-2120
2019-10-25 19:15:30 -07:00
MageKing17 481be44713 Merge pull request #2076 from FSCyborg/#1848-Ballistic-Rearm_Time
For Issue #1848 - Add option to change default rearm values
2019-10-25 19:10:12 -07:00
Goober5000 d3c2b17ae9 actually this is correct 2019-10-25 15:01:02 -04:00
m!m f34e76bd55 Merge pull request #2123 from asarium/build/ghActions
Add more GitHub actions configurations
2019-10-25 19:57:53 +02:00
Goober5000 8a388accec create matrixes from vectors 2019-10-25 01:12:10 -04:00
asarium 8379a5c1f5 Add more GitHub actions configurations
This adds more Linux configurations for testing different compilers.
2019-10-24 20:33:54 +02:00
FSCyborg aef0e1f78a For Issue #1848 - Add option to change default rearm values
Although not technically a bug, several mods have been misled by the description of the "$Rearm Rate:" weapons table setting, and specifying an initial ammo value that is less than 100 for ballistic primaries would force the ballistic ammo to be loaded all at once, with "$Rearm Rate:" just specifying how long that one load would take.

This allows modders to use more realistic behavior for things like anti-turret ballistic primaries, where initial ammo could be in the thirties so that any number above zero can be added per load.
2019-10-24 01:10:52 -04:00
FSCyborg 4eac2e0cbc Fix-2120
Move the bottom text reset to inside the if so that it isn't kept empty by accident.

Let me know if I should move the comment around at all.
2019-10-23 23:26:15 -04:00
m!m 404c11e4a5 Merge pull request #2119 from asarium/fix/luaObjectHooks
Clear object events when Lua state is shut down
2019-10-23 18:18:22 +02:00
Goober5000 fc3ae5f93d add OP_NONCAMPAIGN_FLAG to a couple sexps that shouldn't be used in campaign files 2019-10-22 19:57:42 -04:00
asarium 0649f9abaa Clear object events when Lua state is shut down
Since the Lua state is destroyed before all the object events, this was
causing issues. This should fix that by clearing the events when the lua
state is destroyed.
2019-10-22 18:09:57 +02:00
m!m 17c9547d83 Merge pull request #2117 from asarium/build/ghActions
Add GitHub Actions workflow for pull requests
2019-10-21 18:12:00 +02:00
Goober5000 5f8192d1ee actually figure out instantaneous acceleration, and refactor a bit 2019-10-20 16:30:38 -04:00
Goober5000 2bea31dab0 Merge pull request #2116 from asarium/fix/2086-detect_unsupported_pref_chars
Fix #2086: Detect unsupported characters in root paths
2019-10-20 12:38:21 -04:00
asarium a22ef2e19d Add GitHub Actions workflow for pull requests
This currently only does the GCC Linux compilation but it's a good start
to check out how this works and if it will work for us.
2019-10-20 15:06:24 +02:00
asarium cf8fa26187 Fix #2086: Detect unsupported characters in root paths
Since FSO does not support Unicode characters in filesystem paths on
Windows yet, it is necessary to catch these issues early on and display
an appropriate error message. These changes do that by going through the
path with our UTF-8 decoder and detecting any characters that are out of
the ASCII range.
2019-10-20 12:46:00 +02:00
Goober5000 ab3388f397 add sexp and script support for maneuvers with new CIF_ flags 2019-10-20 00:59:43 -04:00
Goober5000 a80e4ba56e add some very useful control flags for ship maneuvers 2019-10-19 00:28:52 -04:00
Goober5000 3a9855ac69 allow multiple simultaneous sexp-controlled audio streams
Enhances play-sound-from-file, etc. to allow more than one audio stream to be played at the same time, provided all stream are referenced by audio handles contained in variables.
2019-10-18 23:23:00 -04:00
MageKing17 cced7e9e3f Merge pull request #2114 from MageKing17/cleanup/misc-typos
Correcting a couple debug typos.
2019-10-17 20:37:10 -07:00
MageKing17 323debfb91 Merge pull request #2113 from MageKing17/cleanup/png-warnings
Give PNG warnings their own category, so they're hidden by default.
2019-10-17 20:10:46 -07:00
MageKing17 4a464b2e8e Merge pull request #2112 from MageKing17/bugfix/csg-radar-range-check
Make .csg loading code check rp_dist, just like .plr loading does.
2019-10-17 20:10:34 -07:00
MageKing17 7a0a9ea475 Merge pull request #2111 from MageKing17/bugfix/filesystem-sort-order
Move filename sort in cf_get_file_list() to before packfile search.
2019-10-17 19:48:59 -07:00
MageKing17 8f619871e6 Move filename sort in cf_get_file_list() to before packfile search.
The intent behind this sort (added in #2094) was to make the order of files returned by the filesystem consistent across platforms; however, the sort occurred not only after the filesystem search, but after the packfile search, which changed the order files load in on all filesystems instead of making it consistent. This moves the sort to be after the filesystem search but before the packfile search, hopefully making load order consistent once more.
2019-10-17 14:14:31 -07:00
MageKing17 52fdb393ae Give PNG warnings their own category, so they're hidden by default.
This probably isn't the kind of information that should appear in the average debug log, since it's unlikely to be of use in standard troubleshooting.
2019-10-17 13:44:02 -07:00
MageKing17 9770d7f59b Make .csg loading code check rp_dist, just like .plr loading does.
When loading a .plr file, HUD_config.rp_dist is loaded and then sanity-checked; if the value is out of bounds, a Warning is generated and RR_INFINITY assigned. HUD_config.rp_dist is also loaded when loading a .csg file, however the sanity check isn't present; this copies the block over so the behavior is identical.
2019-10-17 13:41:12 -07:00
MageKing17 c1e6aca72b Correcting a couple debug typos.
"glowpoint present" should be "glowpoint preset", and there is no "op_num function".
2019-10-17 13:38:11 -07:00
MageKing17 40d3f5d38f Merge pull request #2110 from Goober5000/copy_text_until_errormsg_fix
fix bug in copy_text_until error message
2019-10-17 11:14:01 -07:00
Goober5000 58a4825d9b fix bug in copy_text_until error message
This bug has been around since the original public source code release!

The error message character calculation did not agree with the actual error check.  This PR fixes that.  Thanks to Novachen on Discord for discovering this.
2019-10-15 14:21:22 -04:00
Goober5000 3811eafee6 Merge pull request #2107 from Goober5000/fix_1138
fix FreeBSD warning in stubs.cpp
2019-10-14 00:56:03 -04:00
Goober5000 7703b27e64 Merge pull request #2105 from Goober5000/grant_medal_xstr
miscellaneous XSTR cleanup
2019-10-14 00:55:56 -04:00
Goober5000 18e9746792 formatting tweak, mainly to try to get the builds to trigger 2019-10-13 15:58:15 -04:00
Goober5000 334f392eb1 change token string, per m!m's review 2019-10-13 13:50:37 -04:00
Goober5000 d3d6e2ea41 add informative comment 2019-10-13 13:44:28 -04:00
Goober5000 db1da25272 Merge pull request #2100 from Goober5000/fix_2099
Handle pausing and unpausing music in certain screens
2019-10-13 13:37:11 -04:00
Goober5000 01102e14be Merge pull request #2102 from Goober5000/fix_for_counter
fix default loop increment in for-counter
2019-10-13 13:36:06 -04:00
Goober5000 2be44008da Merge pull request #2104 from Goober5000/fix_issue_1221
fix issue #1221
2019-10-13 13:35:00 -04:00
Goober5000 93effdd31b Merge pull request #2106 from Goober5000/command_sender_enhancement
implement Mantis 3204
2019-10-13 13:30:17 -04:00
Goober5000 aa2cc618d3 Merge pull request #2108 from Goober5000/arrival_departure_pr_from_595
Only update arrival/departure location if ship is not part of a wing
2019-10-13 13:28:04 -04:00
Goober5000 a5d63654fc Merge pull request #2103 from Goober5000/persistent_variable_errormsg_fix
this error message should report the variable name
2019-10-13 13:26:41 -04:00
Goober5000 09f1de6efe ohcomeon.gif 2019-10-12 16:21:09 -04:00
Goober5000 b4a4d70ff4 additional change suggested by MageKing17 2019-10-12 14:33:58 -04:00
Goober5000 c6c2e5b17e add the changes from downwash's PR 2019-10-12 14:25:00 -04:00
Goober5000 15c9533089 Merge pull request #1540 from z64555/enchancement/parse_bookmarks
Extends the existing parse pausing system (used by bmpman) to use a
2019-10-12 13:17:47 -04:00
Goober5000 2de323eb5d fix const conflict 2019-10-12 13:12:41 -04:00
Goober5000 2f00b3a081 fix FreeBSD warning in stubs.cpp
Use m!m's suggestion to fix issue #1138
2019-10-12 13:04:04 -04:00
Goober5000 6895276aea implement Mantis 3204
This adds a mission flag to use the Command Sender as the source of any messages sent from #Command.
2019-10-12 12:53:09 -04:00
Goober5000 ff31bebc9c now CTEXT will never be NULL 2019-10-12 11:46:57 -04:00
Goober5000 6006670439 restore the original grant-medal and was-medal-granted sexps 2019-10-12 11:27:32 -04:00
Goober5000 e91ee3dd4f the variable can never be uninitialized here, but Travis is too dumb to realize it 2019-10-12 01:26:11 -04:00
Goober5000 53ec0d45cb this isn't actually needed 2019-10-11 23:51:18 -04:00
Goober5000 a34d696c29 add xstr capability for medals
The grant-medal and was-medal-granted sexps will now translate medal names, in the same way that tech-add-intel-xstr translates intel entries.  There is also some minor cleanup and the specifying of correct default -1 numbers for the xstr-capable sexps.
2019-10-11 21:51:16 -04:00
Goober5000 ce57c52faf fix issue #1221
Make -get_flags imply -parse_cmdline_only, per asarium's comment
2019-10-11 16:56:06 -04:00
Goober5000 0db66e776a this error message should report the variable name 2019-10-11 01:22:22 -04:00
Goober5000 f9e4a4bb2a fix default loop increment in for-counter
The default loop increment is 1, not 0.  When for-counter was converted to use eval_nums in PR #2035, this was inadvertently broken.
2019-10-11 01:17:31 -04:00
Goober5000 8cb39c424b properly resume music; also properly restore subspace ambient sound 2019-10-08 22:57:29 -04:00
Goober5000 15346dad16 reactivate old code to pause and unpause audio, but this time add the proper check 2019-10-08 22:44:56 -04:00
Goober5000 de501fb3f1 pause and unpause the event music in the ESC dialog, just like we do in the pause screen, and just like the subspace sound was fixed 2019-10-08 22:20:46 -04:00
m!m 81a827dda9 Merge pull request #2094 from tcrayford/fix_modular_table_load_order_on_non_windows
fix modular table loading errors on non windows
2019-09-13 20:09:06 +02:00
Tom Crayford f7f537ff77 fix mod loading errors on non windows
When running a mod on non-windows, that isn't packed into VP files, the
mod can break when loading. On non-windows filesystems, the file
order isn't guaranteed to be alphabetical (but it is on Windows).
As a result, we load tables in an effectively random order.

Lots of mods rely on the filesystem ordering to e.g. implement a very
loose dependency system for their lua scripts.

Referenced on the forum here:
https://www.hard-light.net/forums/index.php?topic=95750.msg1885275#msg1885275

Here's a log from Solaris failing to run:

https://fsnebula.org/log/5d7b4414cb0d332b466b5ee2#True-138

Instead, always sort filesystem listing by name *before* applying the
provided sort order.

I've built a few different versions of this patch, and like this one the
best. The other ones I tried:
1. Adding a `CF_SORT_REVERSE_NAME` and using it everywhere that
`CF_SORT_REVERSE` is used, and replacing all uses of `CF_SORT_NONE` with
`CF_SORT_NAME`. I didn't like this as it was a much larger diff.
2. Adding a `CF_SORT_REVERSE_NAME` to the `scripting.cpp` call for
loading tables. I didn't like this one because this bug can in theory
impact non scripting tables.

Here's a log from Solaris working with the new build:
https://fsnebula.org/log/5d7b4f37cb0d332b3d6b5ed3#True-138

While it might be a reasonable enhancement in the future to build a proper dependency system for lua scripts and tables,
this is a much smaller and easier change, and doesn't require any work from modders.
2019-09-13 17:22:15 +02:00
Goober5000 e1a0a8a2fb Merge pull request #2093 from tcrayford/update_object_facing_help_strings
update set-object-facing and set-object-facing-object sexp help
2019-09-07 15:20:49 -04:00
Tom Crayford 1cd22ba827 update set-object-facing and set-object-facing-object sexp help
As per the discussion in https://github.com/scp-fs2open/fs2open.github.com/issues/2092,
if you specify the turn time, these can behave quite weirdly.
Some mods that we don't want to break backwards compatability with use
that mode, but at least we can note the pitfalls in help.
2019-09-07 18:36:35 +02:00
m!m 4f884b5035 Merge pull request #2091 from asarium/fix/crashInJoystick
Fix crash in joystick code
2019-09-03 22:07:16 +02:00
asarium 894228cc7c Fix crash in joystick code
Not sure why we didn't catch this earlier but this should hopefully fix
the crash. The cause was that we constructed an SCP_string from a null
pointer instead of using the empty string as the default.
2019-09-03 19:53:04 +02:00
Goober5000 8f8afbc189 Merge pull request #2087 from asarium/feature/crashdumps
Write Minidumps when a crash occurs
2019-08-29 14:18:58 -04:00
Cliff Gordon f4bfec5029 Merge pull request #2089 from asarium/build/fixTravisGitHubToken
Update Travis GitHub token
2019-08-28 12:45:13 -05:00
asarium c18f775962 Update Travis GitHub token
The token used by Travis was also out of date so here is a new one. This
is a token created by the SirKnightly user.
2019-08-28 18:14:49 +02:00
Goober5000 608dcb6b44 Merge pull request #2088 from asarium/build/fixAppveyorGitHubToken
Update GitHub token used for AppVeyor release building
2019-08-26 15:10:35 -04:00
asarium b4b23e266b Update GitHub token used for AppVeyor release building
For some reason the old token was removed from the AppVeyor GitHub
account which made the release build fail.
2019-08-26 17:58:12 +02:00
asarium c41eef517b Write Minidumps when a crash occurs
This will write Mini dumps in the event that the executable causes a
crash. This will allow us to take a closer look at any crashes without
having to reproduce them.
2019-08-25 20:22:23 +02:00
m!m 65e2aa88b3 Merge pull request #2059 from asarium/build/travisWindowsAlways
Do not allow failure for Windows Travis builds anymore
2019-08-24 13:11:29 +02:00
asarium fe0c6a629a Do not allow failure for Windows Travis builds anymore 2019-08-22 17:36:28 +02:00
MageKing17 730c62af81 Merge pull request #2085 from Goober5000/issue_2081_actual_fix
Issue 2081 actual fix
2019-08-19 23:52:40 -07:00
Goober5000 13d4ebaceb leave a 'node' variable pointing to the beginning of the sexp node list so that we can manipulate it later 2019-08-19 23:35:55 -04:00
Goober5000 ed6a780898 Revert "fix for issue #2081" 2019-08-19 23:19:30 -04:00
Goober5000 f0b9929cd3 Merge pull request #2083 from Goober5000/eval_nums_redo
fix for issue #2081
2019-08-19 18:13:45 -04:00
Goober5000 f315caad95 fix a bug, and use Error instead of Warning since this indicates a programming error 2019-08-19 16:29:49 -04:00
Goober5000 b5a47e651f fix for issue #2081
This re-implements the eval_nums function to use C varargs, instead of C++11 template parameter packs.  This is necessary because Visual Studio has a bug where template parameter packs corrupt heap memory somehow.
2019-08-19 16:19:53 -04:00
m!m d49299225c Merge pull request #2080 from tcrayford/de_fault_is_in_de_spelling
fix typo: defualt->default
2019-08-11 14:33:32 +02:00
Tom Crayford 3b0bb79d79 fix typo: defualt->default 2019-08-11 11:09:13 +01:00
Goober5000 daacdc0035 Merge pull request #2078 from FSCyborg/Fix-#1433-
Fix 1433 Take two
2019-08-10 22:41:03 -04:00
FSCyborg 39df9ef90e Fix 1433 Take two
Have FSO check for subspace and start the loop up again when subspace is being used.
2019-08-09 22:21:33 -04:00
Goober5000 fc080cccbd Merge pull request #2075 from FSCyborg/fix#1916
"Fix" 1916
2019-07-30 22:59:47 -04:00
FSCyborg 0c07ad9d71 "Fix" 1916
Adds a check to see if the subsystem is the same before restting aspect lock.

More of an enhancement to expected behavior than a bugfix.
2019-07-30 17:58:52 -04:00
Goober5000 7d329bbbc6 Merge pull request #2074 from FSCyborg/fix#1974
Fix#1974
2019-07-30 12:33:40 -04:00
m!m 17a449529f Merge pull request #2060 from Mithi83/bug/1987-lab-thrusters
fix bug #1987: thruster rendering in lab
2019-07-30 11:59:36 +02:00
FSCyborg 73f0addc42 Fix#1974
"Cloning" failure was actually being caused by the pilot verification function resetting all pilot info and then not loading controls from the file to replace them.

The Control_Config array would all be set to -1 and then would get written into the file the next time the player was saved, making it seem that the controls were not being copied.

The original and current code would reset controls to defaults when a pilot was created.  And it would just let the old controls remain in case of a clone. The above problem would occur just as you hit accept on the bottom of the baracks screen.
2019-07-29 21:25:50 -04:00
Goober5000 0ba1583d90 Merge pull request #2035 from Goober5000/patch_nan_handling
when evaluating numeric SEXPs, handle NaN properly
2019-07-28 01:03:11 -04:00
Goober5000 2436697f2c Merge pull request #2071 from FSCyborg/Fix#2067
Fix#2067
2019-07-27 22:51:24 -04:00
FSCyborg 0e10100aad Fix#2067
Original behavior in Fred was accidentally removed when upgrading the FSO mission parser to keep it from crashing FSO from a bad sexp.  But returning false is only necessary in FSO since in FRED, we can fix the error once we know about it.
2019-07-27 21:21:33 -04:00
Goober5000 60bcdefac0 remove unneeded header 2019-07-25 15:14:45 -04:00
Goober5000 5d8ac3cc11 bring up to date with another eval_num 2019-07-25 15:14:45 -04:00
Goober5000 e0bc2f188b help the compiler out a bit, per Gasbow's suggestion 2019-07-25 15:14:45 -04:00
Goober5000 d13bbdd534 move eval-num derivatives out of the header file 2019-07-25 15:14:45 -04:00
Goober5000 44b09d137f let's try a function pointer instead of std::function 2019-07-25 15:14:45 -04:00
Goober5000 4439edcb4d more complaints 2019-07-25 15:14:45 -04:00
Goober5000 a9ddeda40e edits and clang-tidy 2019-07-25 15:14:45 -04:00
Goober5000 d606e4d952 complaints and stuff 2019-07-25 15:14:44 -04:00
Goober5000 2fa8a0bd84 that const crept back in again 2019-07-25 15:14:44 -04:00
Goober5000 f9d178d46b additional small fixes 2019-07-25 15:14:44 -04:00
Goober5000 989235936e when evaluating numeric SEXPs, handle NaN properly
NaN should propagate through the SEXP tree, but not all SEXPs do this properly.  The problem was made worse after I introducted `eval_num()` which silently ignored NaN values.  This commit adds new boolean arguments to `eval_num()` to flag NaN results, and changes all calls of `eval_num()` to properly handle the new arguments.  Additionally, this adds `eval_nums()` and `eval_array()` functions to more smoothly handle cases where many numbers appear in a row.
2019-07-25 15:14:44 -04:00
Goober5000 6df9c73a4c Merge pull request #2063 from Goober5000/modify_set_object_position
Allow positioning sexps to work on ships yet to arrive
2019-07-25 14:13:38 -04:00
Goober5000 d794eb6e77 Merge pull request #2070 from FSCyborg/Coverity#1093387
Coverity 1093387
2019-07-20 20:31:01 -04:00
Goober5000 e5c06c9554 Merge pull request #2069 from FSCyborg/Cyborg-Coverity-Fixes
Coverity 1093370
2019-07-20 18:14:38 -04:00
FSCyborg bc00b79922 Coverity 1093387
We already verify that the variable will not be null in the previous code block.
2019-07-20 16:12:45 -04:00
Goober5000 e1e86667b3 Merge pull request #2068 from FSCyborg/Fix#1791
Fix#1791 ChangeIFF & Laser_Flag
2019-07-20 01:05:33 -04:00
FSCyborg 881f787ac8 Fix#1791 ChangeIFF & Laser_Flag
Extremely rare bug caused by use of multiple protect from weapon flags. One of the Ai-Turret functions was setting only one of the flags because "else if" was typed instead of "if".
2019-07-19 21:21:58 -04:00
FSCyborg 88d5bed064 Coverity 1093370
Copy paste error, I can think of no reason to compare Max y and Min z
2019-07-19 09:11:14 -04:00
m!m d9b1659efc Merge pull request #2064 from asarium/fix/scriptingDeprecation
Move deprecation of createParticle to the next version
2019-07-15 19:46:50 +02:00
Goober5000 f6408113f2 fix stuffing of vector pointer 2019-07-15 13:15:21 -04:00
asarium 6075c17255 Move deprecation of createParticle to the next version
This should fix a problem with the MVPs.
2019-07-15 17:54:41 +02:00
Goober5000 da9f71dac0 might as well do set-object-facing and set-object-facing-object as well 2019-07-14 23:26:18 -04:00
Goober5000 03f1344794 might as well do set-object-orientation too 2019-07-14 21:24:22 -04:00
Goober5000 59e9d7cb0c add missing break to case 2019-07-14 21:20:33 -04:00
Goober5000 910595880a Allow set-object-position to work on ships yet to arrive
This adds `set-object-position` functionality for ships and wingmen still on the arrival list.  Requested by JSRNerdo.
2019-07-13 14:24:06 -04:00
MageKing17 9f07e43455 Merge pull request #2020 from asarium/feature/scriptingDeprecation
Add deprecation feature for the scripting API
2019-07-11 15:08:45 -07:00
m!m 7b8c156980 Merge pull request #2022 from asarium/opengl/smaa
Add SMAA post processing step
2019-07-11 18:02:47 +02:00
Thomas Jansen f8c11ccd2e fix bug #1987: thruster rendering in lab
Lab_selected_index must remain unchanged until labviewer_change_model is
called. There the variable is used to determine if a new ship must be
created and updated afterwards.
2019-07-07 08:36:55 +02:00
Goober5000 7e36dc8afe Merge pull request #2058 from FSCyborg/master
Coverity 1093382
2019-07-05 12:25:53 -04:00
FSCyborg b1ad89a9fa Update chttpget.cpp 2019-07-04 10:14:07 -04:00
FSCyborg 4d9b1a7674 Update chttpget.cpp 2019-07-03 15:03:34 -04:00
FSCyborg 72f3871b7b Update chttpget.cpp 2019-07-03 10:14:24 -04:00
FSCyborg 7906ff460a Coverity 1093382
Coverity spotted this dead code.  Looks like the original coder forgot that they had checked for !p already or was a case of mindless copy-pasting code..

Because of
pcode = strchr(p,' ')+1;
it looks like it really is safe to remove.
2019-07-02 23:18:13 -04:00
asarium 1eb1923751 Add SMAA 2019-06-30 13:28:05 +02:00
asarium 6d1931bf99 Add function for drawing full screen using oversized triangles
This replaces the current instances where two triangles are used for
drawing a full screen quad.
2019-06-30 13:08:45 +02:00
asarium f75cb1edd3 Add deprecation feature for the scripting API
This allows to mark certain functions or virtvars to be declared as
"deprecated" starting with a specific engine version. What this means is
that a special message will be added to the documentation stating since
when the function is deprecated and can contain an optional message. The
actual enforcement of the deprecation depends on the target version of
the mod so that we can stay backwards compatible.

If the mod supports the version since when the function is deprecated,
it will not be added to the Lua state which means that it doesn't exist
for the calling script. If the targetted version is before the stated
version, the function will still be added to the Lua state.

As the first function to use this feature, I have deprecated
createParticle in the testing library and moved it to the graphics
library with a new name reflecting that it creates a persistent
particle. I also added the corresponding function for adding a
non-persistent particle.
2019-06-30 11:31:32 +02:00
Goober5000 48586bc857 Merge pull request #2055 from wookieejedi/fix_weapon_icon_override
Bug fix: adds missing conditional when using weapon icons and 3D weapon selection
2019-06-28 18:29:07 -04:00
Goober5000 3adb861640 Merge pull request #2057 from wookieejedi/fix_blownoff_bug
Fix blown_off bug for good
2019-06-28 18:17:34 -04:00
wookieejedi 7b1f407c22 Fix blown_off bug for good
Thanks for @SamuelCho for telling me what to put to fix this bug for good. This PR fixes #2046 (for good it seems!).
2019-06-28 15:33:29 -04:00
Goober5000 ed5b4b9b5a Merge pull request #2054 from Goober5000/itld_bugfix
properly indicate that player ships have departed at the end of a mission
2019-06-27 15:21:09 -04:00
niffiwan b63ddf08bb Merge pull request #2056 from SamuelCho/subsys_destroyed_fix
Make sure various model rendering/collision code reference submodel instances instead of the prototype data
2019-06-27 20:39:19 +10:00
SamuelCho 816d8e5415 Make sure various model rendering/collision code reference submodel instances instead of the prototype data. 2019-06-25 22:33:52 -07:00
Goober5000 e7e43e9466 Merge pull request #2044 from niffiwan/fix/capitalplus_vs_shields
Fix AI selection of capital+ weps vs shields
2019-06-25 22:19:49 -04:00
wookieejedi 48e630dfd1 Add () to fix travis error 2019-06-25 17:17:02 -04:00
wookieejedi 00f2ddc8da Bug fix: adds missing conditional when using custom icons and 3D weapon selection
Previously if the 3D_weapon flag was used it would always create a weapon icon and overrride any pre-existing icons the modder would specify. This PR fixes that by adding an extra set of conditionals, which specify if a weapon has an icon file name then it should be used, and if the weapon does not have an `$Anim:` but does have a model then that model should be used if the 3D_weapon flag is enabled.
2019-06-25 16:20:13 -04:00
Goober5000 c6d93275c2 address clang complaint 2019-06-24 13:03:38 -04:00
Goober5000 e2ce0bea9b tweak comment 2019-06-24 02:13:19 -04:00
Goober5000 a98fd2cb54 use the new 'mission_check_ship_yet_to_arrive' function when appropriate 2019-06-24 02:11:35 -04:00
Goober5000 5444e81fab add new function for properly evaluating ship arrivals 2019-06-24 01:28:07 -04:00
Goober5000 83276a355d if ship is departing to jump node, add that to the script hook 2019-06-23 16:05:36 -04:00
m!m 98606b37e4 Merge pull request #2053 from wookieejedi/arc_color-options
Adds Table Option to Modify Arc Colors
2019-06-23 09:17:00 +02:00
wookieejedi c4a7e9694f Fix error message vars 2019-06-22 20:50:29 -04:00
wookieejedi 2db1758ec2 Use stuff_int_list
Incorporate m!m feedback
2019-06-22 17:59:59 -04:00
wookieejedi cff070dc07 Update to using tuples and error checks
Incorporates m!m's feedback.
2019-06-22 16:07:55 -04:00
wookieejedi 7b3ad77f36 Adds Table Option to Modify Arc Colors
This PR adds a table entry that allows modders to specify the RGBI values for the damage and emp arc colors (which were previosuly hardcoded).

This option adds the table entry to `Game_settings.tbl` under `#Graphic Settings` with the lines:
```
$EMP Arc Color:
	+Primary Color Option 1: rgb
	+Primary Color Option 2: rgb
	+Secondary Color Option 1: rgb

$Damage Arc Color:
	+Primary Color Option 1: rgb
	+Primary Color Option 2: rgb
	+Secondary Color Option 1: rgb
```
2019-06-21 14:58:05 -04:00
Goober5000 d67e79a44b Merge pull request #2042 from Goober5000/nested_subsys_destruction
properly handle destruction/repair of subsystem tree
2019-06-06 01:48:03 -04:00
niffiwan 977190b358 Address review feedback
Make wip an actual pointer!
Rename some vars to better reflect their usage (vs previous copy-pasta)
2019-06-04 18:39:21 +10:00
m!m ba3237604e Merge pull request #2048 from wookieejedi/per_shipclass_help_threshold
Add per ship class options for when AI sends "Help Me" message
2019-05-29 18:44:46 +02:00
Goober5000 a94550ee1a Merge pull request #2049 from plieblang/MapIteratorCleanup
Clean up map::iterator usage
2019-05-25 00:45:46 -04:00
wookieejedi d55a6632ca and one more float to specify 2019-05-24 23:58:52 -04:00
wookieejedi 680cb580cd specify rest of floats 2019-05-24 23:49:19 -04:00
wookieejedi 2f74940f6a specify float 2019-05-24 23:00:55 -04:00
plieblang 3dbe27e772 Clean up map::iterator usage 2019-05-24 13:43:04 -07:00
wookieejedi 72d876bd4b Switch to const and add error checks
Incorporatea ll of m!m's feedback.
2019-05-23 15:35:59 -04:00
wookieejedi e22398bec8 Add per ship class options for when AI sends "Help Me" message
This PR allows modders to set, on a per-ship class basis, the fields for what hull and shiled integrity the AI wingmen send the "Help" message at. One good use case is when ships have low hitpoints, thus now the modder can set AI can call for help sooner then at simply 30% hull.
2019-05-23 13:19:30 -04:00
Goober5000 11661db6ab oops -- get distance before setting it to 9999999 2019-05-17 14:31:16 -04:00
Goober5000 6164004df3 repair parent submodel if it needs repairing 2019-05-17 14:31:16 -04:00
Goober5000 505aa3cdd1 organize subsystem modification sexps to all call one function 2019-05-17 14:31:16 -04:00
Goober5000 cfeb8da3d3 don't reuse subsystems that are skipped 2019-05-17 14:31:15 -04:00
Goober5000 ec7945276a handle child subobjects being destroyed 2019-05-17 14:31:15 -04:00
Goober5000 2bf19afb94 make sure all instances of ship_recalc_subsys_strength happen after do_subobj_destroyed_stuff 2019-05-17 14:31:15 -04:00
Goober5000 34b38f63fa remove unneeded function 2019-05-17 14:31:15 -04:00
m!m 8f11d2e11c Merge pull request #2037 from Goober5000/on_subsystem_destroyed
add $On Subsystem Destroyed scripting hook
2019-05-17 19:47:11 +02:00
Goober5000 e4036b9e5a Merge pull request #2045 from MageKing17/bugfix/multi-sexp-flag-validity
Check flags are valid in multi_sexp_deal_with_ship_flag().
2019-05-17 13:42:09 -04:00
MageKing17 c86e94a4e7 Correct NULL to nullptr so clang-tidy is happy. 2019-05-17 09:13:02 -07:00
MageKing17 a6475f59f0 Check flags are valid in multi_sexp_deal_with_ship_flag().
In single-player, or while running as a server, sexp_deal_with_ship_flag() makes sure that object_flag, ship_flag, and p_object_flag aren't NUM_VALUES (i.e. not set) before trying to call flags.set() with them. However, the client code in multi_sexp_deal_with_ship_flag() had no such security checks, and as such would try to set NUM_VALUES, which is outside the range of valid flags; this led to a crash in Release builds and an Assertion otherwise.
2019-05-13 12:29:54 -07:00
Goober5000 69ebdd0417 Merge pull request #2043 from wookieejedi/add_gethotkey_sexp
Adds `get-hotkey` sexp
2019-05-13 13:32:21 -04:00
niffiwan 9444b9ff9f Merge pull request #2024 from CasparKielwein/collision_cleanup_ck
Refactoring of objcollision
2019-05-13 19:41:38 +10:00
niffiwan 4c7470fbf2 Fix AI selection of capital+ weps vs shields
Current the AI always selects capital+ weapons vs big/huge ships. This
makes the AI take shields into accounts, and not use the weapon if
either the shields are still up, or the weapon isn't good vs shields.

I don't greatly like the magic number 1.33 to determine if a weapon is
good vs shields, I'm happy to take alternative suggestions. I have
checked DE, WoD & BP tables and I don't think this change will affect
any of them (picked them because their either use capital+ weapons or
have shielded capships)

There's one DE weapon that the AI won't select anymore while shields
are up; however its fluff says it's bad vs shields and suggests a
paired shield-breaker so think it should be OK.
2019-05-12 15:50:13 +10:00
wookieejedi 8d3eeec238 Updated description 2019-05-11 14:03:15 -04:00
Goober5000 da0ff33fcb address feedback and implement asarium's suggestion 2019-05-11 13:06:21 -04:00
wookieejedi 764b4b8422 Improve comments and description 2019-05-11 10:38:40 -04:00
m!m a5d22589ec Merge pull request #2036 from wookieejedi/class_flyby_sounds
Adds per-class flyby sounds
2019-05-11 12:28:09 +02:00
wookieejedi 6a6940e0f0 Adds get-hotkey sexp
This PR adds a sexp that returns the integer value of a ship or wing hotkey. No hotkey returns -1, F5 returns 0, F6 returns 1, ... and the sexp takes one arguemnt, the ship or wing name.
2019-05-10 23:09:00 -04:00
niffiwan 2dfd9936d8 Merge pull request #2041 from niffiwan/fix/issue2040
Don't link if ship has 'no primary linking' flag
2019-05-11 10:19:29 +10:00
Goober5000 fb0847f4b5 Merge pull request #2038 from wookieejedi/add_sethotkey_sexp
Add new sexp: `add-remove-hotkey`
2019-05-10 17:50:48 -04:00
wookieejedi 7b959b09d2 Incorporate Goober's feedback 2019-05-10 15:34:05 -04:00
wookieejedi f4b713c56c Add bool arg 2019-05-10 15:12:49 -04:00
wookieejedi d32d3f55d1 Updated name and function
Incorporated all revisions and suggestions
2019-05-10 09:32:15 -04:00
niffiwan 1ebb72ee88 Don't link if ship has 'no primary linking' flag
Also adds/enhances some handy nprintf debug statements.
Fixes #2040
2019-05-10 23:06:16 +10:00
wookieejedi a988d0e972 Adds a new sexp, set-hotkey
This new sexp allows a FREDer to set a hotkey for a ship or wing. The sexp takes 2 or more arguemnts, the integer of the hotkey to set (F5=0, F6=1, ... F12=7) and the names of the ship(s) and/or wing(s).
2019-05-09 13:46:21 -04:00
Goober5000 8aa2f3b099 tweak spacing 2019-05-08 20:04:19 -04:00
Goober5000 8365f0abb7 add $On Subsystem Destroyed scripting hook
Implements the feature request from issue #610.

As an aside, this PR also patches the `ship_set_subsystem_strength` function (which is only used by the debug console and in the event you fire at your training instructor) to use the same code as the `set-subystem-strength` sexp.  This properly handles submodels blown off, sounds, etc.
2019-05-08 19:55:03 -04:00
wookieejedi 4afe739cbb Clean and shorten per request
Fixes spelling error in comment, uses proper flyby_snd and makes code more concise.
2019-05-08 14:14:01 -04:00
wookieejedi 2c469e0c88 Adds per-class flyby sounds
Previosuly, flyby sounds were only specified on a per-species basis. This PR allows each ship class to use a specific flyby sound. This will allow modders to set the custom sound in ships.tbl, just like any other per-class sound.
2019-05-08 14:00:28 -04:00
MageKing17 822e61665d Merge pull request #2026 from Goober5000/some_sexp_fixes
various sexp formatting and cleanup changes
2019-05-07 07:18:28 -07:00
niffiwan 5f5616c0fa Merge pull request #2030 from niffiwan/feature/deathroll_customisation
Allow death max rotation to be set per ship
2019-05-07 19:28:54 +10:00
Goober5000 b38f6aa014 HA! 2019-05-06 14:07:11 -04:00
Goober5000 d88e6f5a88 Merge pull request #2034 from niffiwan/fix/issue2033
Null wp_list on setting order, same as for sexps
2019-05-06 14:01:58 -04:00
niffiwan 760b601a95 Null wp_list on setting order, same as for sexps
Making wp_list null lets ai_mission_goal_achievable reset the waypoints
list correctly, otherwise it thinks the waypoints are ok when in fact
something has invalidated them
2019-05-06 18:30:38 +10:00
Fabian Woltermann 0bf116b0cc Merge pull request #2032 from The-E/fix/2031_copy_paste_error_in_lua_vecmath
Fix for error in validation of matrices accessed by lua
2019-05-06 07:51:40 +02:00
The_E 2180296f9c When setting individual elements of a matrix through lua, we need to mark the matrix as either having out of date angles or out of date vectors. 2019-05-05 20:06:28 +02:00
niffiwan b84fe72778 address feedback
This moves DEATHROLL_ROTVEL_CAP to shiphit.h & converts it to a
constexpr float
2019-05-05 22:13:32 +10:00
niffiwan c5e460a90d Allow death max rotation to be set per ship
This allows modders to restrict the amount of rotation in a death roll.
It's fairly simple to fit in with the existing code which has a lot of
hard coded constants. The intended use case is to restrict pitch &
heading changes so there's less chance of rapid forward rolls or flat
spins, especially with faster-than-FS2 ships.

I'd almost rather rewrite the entire code to dynamically use ships mass
& velocity except for retail compatibility issues.
2019-05-05 10:07:21 +10:00
CasparKielwein 271d3f97bd remove unused functions obj_add_pair and obj_add_pairs in object code.
These functions where not used anymore and probably made redundant
by swifties changes to the collision system in 2012.
2019-05-04 11:30:54 +02:00
CasparKielwein e70d6a89ee objcollide cleanup: declare local variables at point of first use
made some loops range based.
removed some typedef struct, as it is c++.
2019-05-04 11:30:16 +02:00
Goober5000 d1a8e66fce Merge pull request #2029 from niffiwan/fix/qtfred_mission_load_failure
Allow qtFred to open missions again
2019-05-04 01:58:58 -04:00
niffiwan 964f8f5ef1 Allow qtFred to open missions again
Minor miss from 9332311b57
Also has trivial comment fix
2019-05-04 14:02:50 +10:00
Goober5000 8ebe012e12 more complaints 2019-05-03 15:24:16 -04:00
Goober5000 92f142452a even more complaints 2019-05-03 14:07:13 -04:00
Goober5000 cfb80cfd16 fix modulo 2019-05-03 13:59:48 -04:00
Goober5000 39313ed8d7 Address feedback. Also fix a few things github complained about. Also fix depart-node-delay by correctly handling the 'delay' parameter as a value of type 'fix', just like the other *-delay sexps. 2019-05-03 13:06:51 -04:00
MageKing17 1da2c03cef Merge pull request #2016 from Goober5000/a_few_good_sexps
Three sexps and some sexp improvements
2019-05-01 20:13:11 -07:00
Goober5000 f9dbe4941b various sexp formatting and cleanup changes 2019-05-01 22:45:59 -04:00
Goober5000 46319f1b4e Merge pull request #2025 from Mithi83/bug/1827-targeting-brackets
fix bug #1827: targeting brackets stuck in top left corner
2019-05-01 14:31:47 -04:00
Thomas Jansen 8653d824cd fix bug #1827: targeting brackets stuck in top left corner
Every g3_start_frame must have a matching g3_end_frame. Thus, a return
in the middle of a function after an opening g3_start_frame must make
sure to call g3_end_frame before it leaves to avoid a dangling frame
context.

As described in the bug report at
https://github.com/scp-fs2open/fs2open.github.com/issues/1827
a floating point rounding issue could be the trigger for the problem.
2019-05-01 18:32:26 +02:00
CasparKielwein 3e7e7cde00 made functions from objcollide, which are only used in .cpp local to compilation unit 2019-05-01 10:41:27 +02:00
CasparKielwein f63667b29e Cleanup in objcollide: Remove code that was commented out 2019-05-01 10:07:35 +02:00
CasparKielwein b42fc2122a Cleanup in object collide code.
A bit of small cleanups in preparation of larger scale refactoring.

remove unused member heavy_collision_cm_pos of collision info struct,
which was set in several places but never used.
2019-05-01 09:44:19 +02:00
Goober5000 3ca4ba16fe Merge pull request #1892 from asarium/feature/optionsUI
Add new options system
2019-04-29 17:16:21 -04:00
Goober5000 36c14e21e8 Merge pull request #2021 from asarium/feature/axemWantsLuaAudioAPIs
Add unload function for freeing audio memory of a soundfile handle
2019-04-29 17:07:48 -04:00
asarium ce1ea75714 Add unload function for freeing audio memory of a soundfile handle
This can be used by scripts for explicitly freeing up some memory when
necessary.
2019-04-27 08:53:07 +02:00
Goober5000 30373e9138 Merge pull request #2019 from wookieejedi/clean_fix_showship_detailbox_bug
Cleaner fix for show-ship bug with detail_box calculations
2019-04-22 19:15:56 -04:00
wookieejedi 9e460332a6 add ship check
per Goober's request added a ship check
2019-04-22 17:53:07 -04:00
wookieejedi 473e2588bf Cleaner fix for show-ship bug with detail_box calculations
This provides a cleaner fix for the bug where using show ship caused detail_box calculations to incorrectly work on the player's ship.

It also reverts the changes made by PR #2018.
2019-04-22 10:28:41 -04:00
niffiwan 6350110b21 Merge pull request #2018 from wookieejedi/fix_detailbox_with_showship
Fix `detail_box` calculations when using `show ship`
2019-04-21 18:49:16 +10:00
wookieejedi 0c92134de5 fix detailbox using show ship
This PR fixes issue #2015, which is a bug where using `show ship` caused detail_box calculations to incorrectly use world coordinates for submodels on the player's ship, rather then the correct local coordinates.
2019-04-20 20:45:14 -04:00
Goober5000 681dd9b871 Merge pull request #1993 from niffiwan/fix/blackdetailboxes
detail boxes can ignore default distance scaling
2019-04-19 13:43:51 -04:00
Goober5000 213422076e KNOWN_ values aren't returned after all, derp 2019-04-19 00:34:39 -04:00
Goober5000 41aff9d094 ooooooops 2019-04-19 00:14:53 -04:00
Goober5000 337ca94b53 write out the full word 'number' 2019-04-18 01:18:05 -04:00
Goober5000 13f5037b0c add is-nan, nan-t-num, and functional-if-then-else 2019-04-18 01:12:00 -04:00
Goober5000 221d96f5d6 defensively check both regular and known sexp boolean values 2019-04-18 01:11:19 -04:00
Goober5000 bd6441004b optimize eval_sexp by not reconciling positive/negative if we have a magic number 2019-04-18 01:09:36 -04:00
Goober5000 14b6e86e5d made the SEXP_ numbers even more unlikely, in case someone wants to use large negative numbers 2019-04-17 12:32:51 -04:00
m!m 4824428971 Merge pull request #2014 from MageKing17/feature/ssm-strike-warp-effect-field
Add "+WarpEffect:" field to ssm.tbl.
2019-04-14 13:01:52 +02:00
MageKing17 6af8d4ccbd Add "+WarpEffect:" field to ssm.tbl.
Allows subspace strikes to choose which fireball to use for the warp effect. If absent, FIREBALL_WARP is used as the default (which was the previous hardcoded behavior).

"+WarpEffect:" can be specified as either an index or using the fireball's unique ID.
2019-04-13 20:35:52 -07:00
niffiwan d2d730138f Merge pull request #2013 from chief1983/fix/revert_nightly_test
Revert "Test the upload"
2019-04-08 02:38:22 +10:00
Cliff 7d67d16094 Revert "Test the upload"
This reverts commit 5fa5a199bf.
2019-04-07 09:15:41 -05:00
niffiwan 3f4eb05f3e Merge pull request #2012 from chief1983/fix/travis_uploads
Make sure to use a path that contains the new curl binary
2019-04-07 08:54:36 +10:00
Cliff Gordon 49f8660f7a fix/travis_uploads: Make sure to use a path that contains the new curl binary. 2019-04-06 13:20:35 -05:00
niffiwan 2833ae150f detail boxes can ignore default distance scaling
Add a submodel property that overrides the hard-coded distance
multipliers applied to the distances at which details boxes & spheres
are rendered. The distance multipliers are set by the "model detail"
setting in the options screen. Note that this is different to the LOD
distance multipliers which are not hard-coded.

This allows some more creative uses of detail boxes & spheres, e.g. to
stop models subobjects from being rendered when they're out of player
view. Past testing showed a reasonable performance improvement with
complicated models.

This is a submodel property rather than global, or a ship flag, to allow
flexibility, i.e. a single model could choose this option only for the
submodels that want to use detail boxes/spheres in this fashion, which
other detail boxes/spheres use the conventional approach.

Code & ideas originally from zookeeper, I've just packaged it up for
the PR.

This has been rebased & squashed based on feedback in the PR
2019-04-06 15:24:27 +10:00
niffiwan 8470548376 Merge pull request #2011 from wookieejedi/fix_drawRect_for_scripted_gauge
Fixes minor bug with `drawRectangle` for scripted HUD gauges
2019-04-05 20:20:12 +10:00
wookieejedi ea6bd1d9a4 Update hudgauge.cpp
Fixes a minor bug that incorrectly draws Rectangles to a scripted HUD gauge. The third and fourht arguments needed to be width and heigth, not x2 and y2.
2019-04-04 16:03:45 -04:00
m!m 18c0314652 Merge pull request #2010 from wookieejedi/Add_more_draw_functions_toScriptedGauge
Add more draw functions to scripted gauge
2019-03-30 21:22:28 +01:00
wookieejedi 98165dbce5 Fix typo, drawCirle -> drawCircle 2019-03-30 13:55:12 -04:00
wookieejedi 60bf6dec2c Merge branch 'Add_more_draw_functions_toScriptedGauge' of https://github.com/wookieejedi/fs2open.github.com into Add_more_draw_functions_toScriptedGauge 2019-03-30 09:54:35 -04:00
wookieejedi 252ab4e282 Follw m!m request for optional arg 2019-03-30 09:54:01 -04:00
wookieejedi bd93c8e661 Merge pull request #2 from wookieejedi/master
Rebase
2019-03-30 09:50:35 -04:00
wookieejedi 0e4056f795 Merge pull request #1 from scp-fs2open/master
Rebase
2019-03-30 09:49:10 -04:00
wookieejedi 8f877d3826 Fixed typo 2019-03-29 09:36:10 -04:00
wookieejedi 6025ab8318 Update drawCircle too to match gr.drawCircle 2019-03-29 08:57:54 -04:00
wookieejedi 679cbe2526 Made the draw functions more consistent with gr draw functions 2019-03-29 08:53:37 -04:00
m!m fa0140fea7 Merge pull request #2009 from wookieejedi/Add_drawImage_toScriptGauge
Add `drawImage` to Scripted Gauge
2019-03-29 10:57:31 +01:00
wookieejedi 5343503385 Add more draw functions to scripted gauge
This adds the following functions to the scripted gauge API: drawCircle, drawRect, and drawLine. Also note that I created an additional function, for HUDGauge:renderCircle_unfilled, becuase the precedent shown by having two functions for `gr_unfilled_circle` and `gr_circle` and adding a fourth argument to `renderCircle` seemed to affect a lot of other functions.
2019-03-28 16:58:25 -04:00
wookieejedi edd2cb89c7 Removed unneeded include 2019-03-28 13:44:54 -04:00
wookieejedi 6a2327088f Add drawImage to Scripted Gauge
Adds an additional draw function, `drawImage` to the new Scripted Gauge API.
2019-03-28 09:53:19 -04:00
niffiwan f798c5b916 Merge pull request #2007 from asarium/feature/scriptedHudGauges
Add new HUD gauge type for scripted gauges
2019-03-28 21:31:47 +10:00
m!m 76115122a0 Merge pull request #2003 from Goober5000/abort_processing_missions_which_failed_to_parse
cancel mission load when a syntax error is found
2019-03-27 17:58:00 +01:00
MageKing17 b4cb602e31 Merge pull request #2008 from NovachenFS2/new-strings
New translateable strings for the strings.tbl
2019-03-23 09:13:07 -07:00
m!mandNovachenFS2 d26b5310e7 Update code/controlconfig/controlsconfigcommon.cpp
Suggestion

Co-Authored-By: NovachenFS2 <[email protected]>
2019-03-23 14:14:36 +01:00
niffiwan cdb65c154c Merge pull request #2004 from wookieejedi/chase_displays
Add `Chase View Only` Option for HUD Gauges
2019-03-23 10:58:25 +10:00
Jenna Trassa fd0b612c64 New translateable strings for the strings.tbl
This commit adds new id for existing strings, so that they are translateable through the strings.tbl.
The following is translateable now:
- The 'or' seperator in the Keypress Directive gauge, if one function is bound to two keys.
- The Supernova warning.
- The error message that is displayed prior the pilot selection screen, if something is wrong with the loaded modification.
2019-03-22 22:44:35 +01:00
MageKing17 07d83d473c Merge pull request #1999 from asarium/cleanup/cleanupCfileType
Unify Cfile blocks and CFILE handles
2019-03-21 09:02:57 -07:00
asarium 1662a3c317 Add new HUD gauge type for scripted gauges
The new gauge can be accessed by the scripting API with which a function
can be set which will be called when this gauge is rendered. This can be
used for exposing the HUD gauge positioning and RTT options to the
scripting API without a lot of work needed for the script writer.

There is currently only one rendering function implemented since this is
only a proof of concept.
2019-03-17 09:27:58 +01:00
Goober5000 c70e4a0e7e Merge pull request #1991 from niffiwan/fix/issue1867
Fix issues with docked ships warping
2019-03-12 12:53:47 -04:00
niffiwan d82479fb14 tweak variable name for clarity 2019-03-12 21:13:02 +10:00
niffiwan be90059b65 fix documentation & var-name issue
Thanks to Goober5000 for noticing a very confusing var-name & errors in
the comments. Also switch to using bool check without '=='
2019-03-11 19:05:00 +10:00
niffiwan 04abbf55ed address feedback
Switch from 3x specific is_arriving functions to a single with params
Change flag names; replace "ndl" with "dock_follower"
Change dock-arrival helpers to not set follower flag on leaders
2019-03-10 09:26:12 +10:00
niffiwan 1bc925ee9b Merge pull request #2005 from wookieejedi/fix_font_lua_bug
Fixes bug with lua font handle
2019-03-09 10:12:04 +10:00
wookieejedi d558c2d632 Fixes bug with lua font handle
This PR fixes a bug where an invalid lua font handle would not be properly returned as invalid. An invalid handle is returned properly if the font name is invalid, but not if the index is invalid, thus this PR fixes that.
2019-03-08 17:07:21 -05:00
asarium 1c799653ce Unify Cfile blocks and CFILE handles
The only thing a CFILE contained was a version field which isn't used
anymore so that could be removed which basically meant that CFILE was
just an indirection to a Cfile_block which I then just renamed to CFILE.
The CFILE type is an opaque handle now since the contents are not
relevant to a user of Cfile.
2019-03-08 18:34:00 +01:00
wookieejedi 35af3a8b73 Place in correct order 2019-03-07 18:27:00 -05:00
wookieejedi 8586a319b0 Attempt Travis to rebuild 2019-03-07 18:10:30 -05:00
wookieejedi 15748adfda Adding Chase View Only Option for HUD Gauges
Currently, the player is unable to see a RTT hud gauge if in chase view. This adds an option in the hud_gauges.tbl that tells the game whether to draw a gauge based on if chase view is the active view. So for example, a modder using RTT mapped gauges can now make a HUD that displays on the interior of the ship (ie RTT with the cockpit model) and a HUD that displays when the player switches to chase view.
2019-03-07 16:06:51 -05:00
Cliff Gordon 6b0f73e427 Merge pull request #1990 from ngld/fix/curl-mac-upload
Compile curl ourselves on macOS and cache the result
2019-03-06 11:55:46 -06:00
Goober5000 1d744d347c add changes for qtfred 2019-03-06 00:18:40 -05:00
Goober5000 9332311b57 change C-style 0 on success, nonzero on failure to true on success, false on failure 2019-03-05 16:27:06 -05:00
Goober5000 47e9c01ce6 cancel mission load when a syntax error is found 2019-03-05 11:00:57 -05:00
MageKing17 5f176173bd Merge pull request #2000 from asarium/build/luaNatvis
Add natvis file for Lua
2019-03-04 19:48:20 -08:00
MageKing17 8d6538d7a9 Merge pull request #2002 from Goober5000/detroy
spelling fix
2019-03-04 19:39:13 -08:00
Goober5000 cc9e0a1096 spelling fix
now that all troys have been removed from all subsystems, this word can be changed
2019-03-04 17:32:29 -05:00
Goober5000 223e78926f Merge pull request #1998 from Goober5000/fix_missing_weapon_hook_variable
make sure to set all hook variables when the script hook is called
2019-03-04 17:09:31 -05:00
Goober5000 6679b623e4 same script stuff in beam.cpp 2019-03-03 15:20:45 -05:00
Goober5000 8aa2d0e212 a bit of minor housekeeping 2019-03-03 15:02:47 -05:00
Goober5000 1dc449ffa6 standardize order of parameters 2019-03-03 14:39:53 -05:00
Goober5000 6369cdec7c standardize comment 2019-03-03 14:39:25 -05:00
Goober5000 31fe15c4f4 remove hook variables immediately 2019-03-03 14:34:36 -05:00
Goober5000 dd384e7f1d standardize order of parameters 2019-03-03 14:32:54 -05:00
Goober5000 c8fa5803b9 set all hook variables (and unset them immediately after) for debris and asteroids 2019-03-03 14:24:50 -05:00
Goober5000 b57a608177 set all hook variables (and unset them immediately after) for debris and asteroids 2019-03-03 14:20:25 -05:00
Goober5000 f9f7a23b4d clearer invocation of the script hook 2019-03-03 14:11:29 -05:00
asarium 7e88feff16 Add natvis file for Lua
This should make debugging issues with Lua easier by providing a better
view on how the Lua state looks like.
2019-03-03 12:57:40 +01:00
Goober5000 c6bf5e927b make sure to set all hook variables when the script hook is called
In this block of code, the conditions were checked with a set of four hook variables but then subsequently run with only two.  This adds all four previously used variables.  More importantly, it adds the hook variables with expected and user-friendly names, since 'self' and 'object' are not necessarily intuitive.
2019-03-02 21:16:00 -05:00
asarium ad1ede7b74 Add new options system
This is a system for storing arbitrary data in the config file and then
easily retrieving it later on. This has full Lua support for exposing
the available options in a custom UI and changing the values of the
options. This ported some of the existing command line options over to
the new system which is opt-in for the moment by using a mod_table flag.
2019-03-02 14:02:21 +01:00
niffiwan 3c812915e4 add dock-related is_arriving helper functions
Address feedback from PR; reduce the number of hardcoded flags
2019-03-01 19:26:02 +10:00
Goober5000 62963d23ec Merge pull request #1908 from asarium/feature/scriptingFileAutoClose
Add scripting file handle auto-closing and error message
2019-02-27 22:47:18 -05:00
asarium dc71bb47d7 Add scripting file handle auto-closing and error message
This adds some auto-closing code to the scripting API of the CFile
system. If a file has to be auto-closed then an error will be displayed
to let the the script writer know that something is wrong.

This should not break existing scripts since causing file handle leaks
should never happen and if it does, this will make it easier to find
these issues.
2019-02-27 21:16:30 +01:00
m!m b79a3385a1 Merge pull request #1994 from asarium/build/circleci
Add CircleCI config file
2019-02-27 18:05:10 +01:00
asarium dfac2e98e9 Add CircleCI config file 2019-02-26 19:53:11 +01:00
niffiwan 37f2c8249d Fix issues with docked ships warping
There's a number of issues fixed here:
* Radar blips of docked ships were the wrong colour in stage 1
* You could target docked ships in stage 1
* Docked ships thrusters were visible in stage 1
* Hyperspace warptype ship could initially appear at their
warp-destination, then spring back to the correct location to complete
the rest of their warpin (because a docked ship had higher speed than
the dock leader)

There may also be a number of other subtle bugs with docked warpin;
e.g. I suspect (but haven't tested) that AI turrets could fire on
docked ships during warpin
These should also be fixed

Lastly, fixes issue #1867
2019-02-24 09:20:57 +10:00
ngld 5fa5a199bf Test the upload 2019-02-21 19:18:29 +01:00
ngld c00a2897f4 Compile curl ourselves on macOS and cache the result (for Linux as well).
We need to build our own curl binary since Homebrew doesn't support
 --with-libssh2 anymore.
I've also added caching to both the Linux and macOS code to avoid
rebuilding curl for each nightly.
2019-02-21 19:14:41 +01:00
Goober5000 ad4b1ca965 Merge pull request #1988 from niffiwan/fix/isdockedsingle
make is-docked work with a single argument
2019-02-17 11:13:40 -05:00
niffiwan f1f784f237 make is-docked work with a single argument
Currently is-docked always returns true if only a single argument is
supplied. This is probably as designed (except for not erroring on a
single arg) however it's quite easy to update to work for a single
argument and this case is useful for FotG, and might be useful for
others.
2019-02-17 19:19:03 +10:00
Goober5000 2c307ef5d3 Merge pull request #1983 from Goober5000/ship_initialization_tweaks
some tweaks and minor improvements to ship initialization
2019-02-07 14:40:58 -05:00
Goober5000 6f24d8d079 never mind, this is handled in the preloader 2019-02-05 02:23:58 -05:00
Goober5000 9fc94ab873 reconcile script and sexp 2019-02-05 02:21:20 -05:00
Goober5000 728ee2921f move ship_assign_sound into ship_create. also only assign sounds on change_ship_type if Fred is not running 2019-02-05 02:14:05 -05:00
MageKing17 caea0f56ed Merge pull request #1984 from Goober5000/ship_info_flag_fix
fix some flag information
2019-02-04 08:16:10 -08:00
niffiwan 94c9e1b494 Merge pull request #1985 from wookieejedi/AddWaypointHook
Add 'On Waypoints Done' Hook
2019-02-04 19:01:48 +10:00
wookieejedi 7dd1788aee Add 'On Waypoint Done' Hook
Adds 'On Waypoint Done' hook variable for scripting system.
2019-02-03 13:26:35 -05:00
Goober5000 77934c7215 actually it's better to document this 2019-02-02 23:32:57 -05:00
Goober5000 4a7c69082e ¯\_(ツ)_/¯ 2019-02-02 23:27:08 -05:00
Goober5000 74c4075aa6 address clang complaint 2019-01-29 23:43:28 -05:00
Goober5000 008d66c706 fix some flag information
Somewhere along the line, "sentry gun" was replaced with "escape pod" in the inverted is_flyable check.  This made the game think an escape pod wasn't flyable and therefore things like waypoint orders were not displayed.  This PR fixes that.

Additionally, I fixed a potential bug in weapons.cpp where the HUGE flag should really check against HUGE ships.  And there's a no-op formatting change in hudtargetbox.cpp.
2019-01-29 23:35:37 -05:00
Goober5000 1c385901cb prune a bit 2019-01-27 22:27:31 -05:00
Goober5000 5b9b06ab84 some tweaks and minor improvements to ship initialization
The core bug fixed here is #1982.  After ship_create sets up the ship, parse_object_create_sub does further initialization by copying some values from the parse object.  In most cases there are sensible defaults, but a few special cases require some post-processing...

- ship sounds
- the new way of initializing warp effects to allow per-ship customization
- intrinsic-no-shields
- an arrival entry in the mission log
- script hooks

I also took a further look at normal ship creation and tweaked some things...

- initialize ai mode in ai_object_init
- remove redundant assigment of ship name from parse_object_create_sub (it's also done in ship_create)
- remove redundant goal clearing from parse_object_create_sub (it's also done in ai_clear_ship_goals via ship_create)
- avoid overwriting the initial ai mode if the fix-ai-class-bug flag is set
- make the code slightly more efficient by not redundantly setting flags while searching for subsystems
2019-01-27 22:13:14 -05:00
MageKing17 f8da2cdc83 Merge pull request #1979 from MageKing17/bugfix/lua-control-info-player-nullptr-checks
Add checks for Player being nullptr to l_Control_Info.
2019-01-23 06:36:50 -08:00
niffiwan b790d6a388 Merge pull request #1978 from MageKing17/bugfix/lua-useButtonControl-command-definition
Use modulo instead of division in Lua useButtonControl() function.
2019-01-23 19:16:50 +10:00
niffiwan a7ba3fa373 Merge pull request #1977 from MageKing17/bugfix/lua-setButtonControlMode-additive-override-swap
Swap back return values for lua setButtonControlMode() function.
2019-01-23 17:55:25 +10:00
niffiwan 6d7c786a38 Merge pull request #1976 from MageKing17/bugfix/special-messages-skip-lookup
Avoid ship name lookup when sending "special" messages.
2019-01-23 17:54:54 +10:00
MageKing17 49d5356043 Add checks for Player being nullptr to l_Control_Info.
If various functions on l_Control_Info were called while Player was nullptr, FSO would CTD due to a null pointer dereference. This commit adds nullptr checks to avoid the problem.
2019-01-22 20:21:28 -08:00
MageKing17 572565c7bc Swap back return values for lua setButtonControlMode() function.
When setting LUA_ADDITIVE_BUTTON_CONTROL, the setButtonControlMode() function (in l_Base) would return "LUA OVERRIDE BUTTON CONTROL", and when setting LUA_OVERRIDE_BUTTON_CONTROL, "LUA ADDITIVE BUTTON CONTROL" would be returned. This commit simply swaps these back so that the appropriate return value is with the corresponding enum value.
2019-01-22 20:19:14 -08:00
MageKing17 c090ee5405 Use modulo instead of division in Lua useButtonControl() function.
When using a string to define the appropriate control in the useButtonControl() function (in l_Control_Info), the command definition was being divided by 32 when the appropriate mathematical operator was modulo; as a result, the only controls that could actually wind up being referenced are these four: TARGET_NEXT, MAX_THROTTLE, END_MISSION, and MULTI_MESSAGE_HOSTILE. By using the modulo operator, the string lookup now appropriately references the relevant button.
2019-01-22 20:15:46 -08:00
MageKing17 5597b56139 Avoid ship name lookup when sending "special" messages.
MESSAGE_SOURCE_SPECIAL indicates messages whose sender starts with "#", indicating that it's not a ship; however, the code was looking up the source as a ship name regardless, and if the message had a persona set, failing to find that ship name would result in the message failing to send. Commit f67596bc5e (a.k.a. SVN revision 5383) was supposed to fix this, however it was checking if q->source was MESSAGE_SOURCE_SPECIAL when q->source was one of the HUD_SOURCE_* #defines (specifically, MESSAGE_SOURCE_SPECIAL resulted in HUD_SOURCE_TERRAN_CMD). It turned out there was an unused HUD_SOURCE_* #define which behaves identically to HUD_SOURCE_TERRAN_CMD, namely HUD_SOURCE_IMPORTANT. By making MESSAGE_SOURCE_SPECIAL use HUD_SOURCE_IMPORTANT and changing the conditional to compare q->source to HUD_SOURCE_IMPORTANT, the intent behind the original fix can be carried out with minimal effort.

This also fixes issue #1706, which is basically the same as the original mantis issue.
2019-01-22 20:06:22 -08:00
MageKing17 c72a062a84 Merge pull request #1975 from asarium/feature/effectsPerSecond
Add support for "Effects per second" feature
2019-01-21 10:53:23 -08:00
asarium 422753976f Add support for "Effects per second" feature
This allows specifying how many times per second an effect should be
triggered for a particle source instead of triggering the effect every
frame. This will allow modders to achieve more consistent particle
effects regardless of FPS.
2019-01-19 13:56:45 +01:00
Goober5000 374383bacb Merge pull request #1973 from Goober5000/more_lenient_subsys_set_random
replace most Errors in sexp.cpp with Warnings
2019-01-17 23:16:37 -05:00
Goober5000 adfce4ec60 replace most Errors in sexp.cpp with Warnings
This is a follow-up to commit 1614384a6a.  `Error` is to be avoided if possible because almost all sexp problems are recoverable, and we don't want to bring the entire game to a halt.

Also add some more information to warnings about sexp operators on strings.
2019-01-17 12:52:17 -05:00
MageKing17 08faf52871 Merge pull request #1962 from asarium/fix/1961
Update internal NanoVG bitmap data buffer when updating texture
2019-01-14 02:43:08 -08:00
MageKing17 d99121cd52 Merge pull request #1970 from Goober5000/per_ship_warp_type_fixes
fix some bugs with the per_ship_warp_type feature
2019-01-14 01:56:47 -08:00
MageKing17 6ff292a43c Merge pull request #1971 from MageKing17/bugfix/dont-repeatedly-set-selection-effect
Don't repeatedly set selection_effect in parse_ship_values().
2019-01-13 23:26:26 -08:00
Goober5000 09f4f63be4 preserve warp params if we are parsing a TBM 2019-01-14 00:53:51 -05:00
MageKing17 2d67fd3ef8 Don't repeatedly set selection_effect in parse_ship_values().
Every time an entry for a ship was parsed (e.g. every time it showed up in a .tbm), the selection effect would be reset to the default. Since it's already set to the default in the ship_info constructor, this was both redundant and would make it extremely difficult to actually use a selection effect other than the default without constantly setting it in every .tbm.
2019-01-13 21:52:24 -08:00
Goober5000 5666eb5014 tweak comment 2019-01-13 23:51:30 -05:00
Goober5000 8542e9e113 fix some bugs with the per_ship_warp_type feature
Since FRED and FS2 load mission data slightly differently, the warp effect loading code had to be slightly reorganized in order for the warp effects to not be based on invalid data.  Additionally, the warp effects had to be initialized a little bit later so that it could accommodate a new set of warp parameters from the parse object.  As a bonnus, this PR also handles warp effects being reassigned in change_ship_class.
2019-01-13 23:40:59 -05:00
Goober5000 699c9e8d52 Merge pull request #1966 from Goober5000/per_ship_warp_type
per-ship warp type
2019-01-12 13:27:43 -05:00
Goober5000 5b45a89287 restore missing caption 2019-01-12 02:36:32 -05:00
Goober5000 741fc311cd fix comment rot 2019-01-12 02:31:09 -05:00
Goober5000 aaa9c779c0 remove spurious newline; word choice 2019-01-12 01:18:14 -05:00
Goober5000 bfae614189 fix bug: only reverse the warp effect when the ship is warping out; and while we're at it, change that parameter to bool 2019-01-12 01:05:19 -05:00
Fabian Woltermann cb956961f6 Merge pull request #1968 from MageKing17/bugfix/replacement-textures-initialization
Remember to initialize Replacement_textures array after allocation.
2019-01-11 19:24:59 +01:00
MageKing17 6d2ebd1ed7 Remember to initialize Replacement_textures array after allocation.
In commit 9e4c6df219 (PR #1265), the model_render_params::set_replacement_textures() override that accepts a vector of texture replacements was added, which includes allocating its own Replacement_textures array. However, unlike its counterpart from missionparse.cpp, this array doesn't then have all of its elements set to -1. Since it works just fine there, I copied that code here so both versions should behave the same.
2019-01-11 05:21:22 -08:00
Goober5000 d7e6187ba8 Merge pull request #1967 from MageKing17/bugfix/glow-texture-assert-data-check
Avoid using Asserts for data security in modelread properties-reading code.
2019-01-11 00:32:12 -05:00
MageKing17 62f6ee86ef Remove redundant length check, remove asserts from ID_FUEL case.
The (length > base_length) conditional was redundant with the other conditions. Additionally, the code from the ID_FUEL case (thruster points) checking for "$engine_subsystem=" was making the exact same mistake, so I made the same changes there.
2019-01-10 17:58:46 -08:00
Goober5000 56ae91c973 maybe it will work now 2019-01-09 16:08:05 -05:00
Goober5000 dfc8cbd1c9 okay this is pretty stupid 2019-01-09 11:01:32 -05:00
Goober5000 77e61af23c add new files to the project 2019-01-09 09:30:47 -05:00
Goober5000 7b80b0c564 minor header reorganization 2019-01-09 01:44:19 -05:00
Goober5000 a98d3bb064 more clang complaints 2019-01-09 00:59:12 -05:00
Goober5000 741ee07249 address warnings 2019-01-09 00:17:20 -05:00
Goober5000 04cefad927 inherit from ship_info warp params instead of resetting to default 2019-01-09 00:00:53 -05:00
Goober5000 3d68476505 remove WD_ prefix 2019-01-08 23:44:09 -05:00
Goober5000 81c63929b5 stage 3: add FRED2 support 2019-01-08 23:03:37 -05:00
Goober5000 d6d03fbb14 format saves using two-decimal floats, and insert missing newlines 2019-01-08 23:03:37 -05:00
Goober5000 9acd25bc28 create a new convenience function 2019-01-08 23:03:37 -05:00
Goober5000 7e00a8b10f stage 2: allow individual ships to also use Warp_params; implement loading and saving 2019-01-08 23:03:36 -05:00
Goober5000 bb0df2dc43 stage 1: replace individual parameters with an index into Warp_params 2019-01-08 23:03:36 -05:00
Goober5000 38f858198b Merge pull request #1964 from Goober5000/warp_direction_enum
create WarpDirection enum
2019-01-08 22:35:38 -05:00
MageKing17 a83307402a Avoid using Asserts for data security in glow texture reading code.
In a Release build, there was absolutely no code making sure that the text "$glow_texture=" was actually present in the properties field of a glow point bank, beyond a simple strlen() check. Even in Debug builds, there was no guarantee that the text was at the start of the properties field; it was just assumed (without even an assertion verifying it). Now, the assertions have been removed and the appropriate conditions are checked in both Release and Debug.
2019-01-08 15:04:42 -08:00
Goober5000 097148c2c2 remove WD_ prefix 2019-01-07 12:01:17 -05:00
Goober5000 fbf8a931c4 fix warning 2019-01-06 22:38:31 -05:00
Goober5000 32d951b27a create WarpDirection enum 2019-01-06 17:33:47 -05:00
Goober5000 630e6c3e96 Merge pull request #1963 from CasparKielwein/enable_wunusedfunction
enable Warnings for unused functions
2019-01-02 00:12:52 -05:00
CasparKielwein 72ed33502b remove unused and undeclared function hatEnumToIdx in joy-sdl 2018-12-31 16:06:37 +01:00
CasparKielwein d3806b2107 remove unused graphics function is_power_of_two. There is a generic one in ddutils. 2018-12-31 16:05:34 +01:00
CasparKielwein c9a481f4f3 wrapped function only used in debug mode in ifndef NDEBUG in ffmeg 2018-12-31 16:03:15 +01:00
CasparKielwein 0a02f677fe remove unused (and undeclared) function get_subsys_bounding_rect in qtfred 2018-12-31 16:03:15 +01:00
CasparKielwein d55e4343f9 enable Warnings for unused functions in gcc and clang toolchain files. 2018-12-31 14:28:25 +01:00
m!m e902934e89 Merge pull request #1958 from CasparKielwein/dead_code_remove_ck5
remove unused functions O to R
2018-12-31 11:54:18 +01:00
m!m 26395f7c12 Merge pull request #1959 from CasparKielwein/dead_code_remove_ck3
Remove unused Code S to Z
2018-12-30 15:08:15 +01:00
asarium de92fe25e3 Update internal NanoVG bitmap data buffer when updating texture
This was causing issues since the new bitmap data was never stored in
the internal buffer FSO uses for getting the image data. Instead, it was
only uploaded to the GPU texture which could be deleted at any time.
This was the case when changing the "3D Hardware Texture" setting which
causes a texture flush.

This fixes #1961.
2018-12-30 14:00:09 +01:00
CasparKielwein c72fa0917b remove unused functions in render code.
Left those functions in 3dmath alone, as it is more of a library.
2018-12-29 16:45:47 +01:00
CasparKielwein bc0f47269d remove unused functions in radar 2018-12-29 16:45:47 +01:00
CasparKielwein 94469dc43f remove unused functions in playerman 2018-12-29 16:45:47 +01:00
CasparKielwein ce335dbcc2 remove unused functions in physics 2018-12-29 16:45:47 +01:00
CasparKielwein 6660d21f7e remove unused and commented out functions in pcxutils. 2018-12-29 16:45:47 +01:00
CasparKielwein e622d81e89 remove unused functions and defines in object/code 2018-12-29 16:45:47 +01:00
CasparKielwein 10c8e16cda remove unused function in nebula code 2018-12-29 16:45:47 +01:00
CasparKielwein 25029bfdf1 remove unused functions and defines in weapon code 2018-12-29 16:41:23 +01:00
CasparKielwein 2255616ed5 remove unused functions in stats 2018-12-29 16:41:23 +01:00
CasparKielwein 62ab705d75 remove unused and not implemented functions in starfield. 2018-12-29 16:41:23 +01:00
CasparKielwein 77fc335580 remove unused functions in ship/shield and afterburner 2018-12-29 16:41:23 +01:00
CasparKielwein 981b01eea2 remove unused functions in ship/shipfx 2018-12-29 16:41:23 +01:00
CasparKielwein 366dc3749c remove unused functions and variables in ship/ship.cpp and .h 2018-12-29 16:41:23 +01:00
CasparKielwein e693367dd0 remove unused functions in sound 2018-12-29 16:41:23 +01:00
m!m da53960003 Merge pull request #1960 from asarium/fix/cppLuaHandlesPointer
Add Lua state destruction event
2018-12-28 18:46:18 +01:00
Goober5000 687c1ba4f7 Merge pull request #1957 from CasparKielwein/dead_code_remove_ck4
remove unused functions I to O
2018-12-28 11:52:24 -05:00
CasparKielwein d901470880 remove unused functions in model/ code. 2018-12-28 10:29:22 +01:00
CasparKielwein 7e74153a3d remove unused functions in mission code.
There where serval relics of prior refactorings like unimplemented functions.
2018-12-28 10:29:22 +01:00
CasparKielwein 6cf75b77dc remove unused functions in localization code. 2018-12-28 10:29:21 +01:00
CasparKielwein 3ec0a9c35e remove unused functions in lighting code. 2018-12-28 10:29:21 +01:00
CasparKielwein 519f60a63b remove unused globals and functions in mouse support io code 2018-12-28 10:29:21 +01:00
CasparKielwein 252da89782 remove unused function in keyboard support io code 2018-12-28 10:29:21 +01:00
CasparKielwein 0f1b3fd6c2 remove unused function in joystick support code. 2018-12-28 10:29:21 +01:00
CasparKielwein 58722425a3 remove unused function in osapi/dialog.cpp 2018-12-28 10:29:21 +01:00
asarium 211110d415 Add Lua state destruction event
This can be used by the various subsystems for cleaning up Lua
references before the Lua state is destroyed. This avoids having
dangling references to the Lua state which would cause segfaults later
on.

The first subsystem to use this is the dynamic SEXP system which had
dangling references due to keeping Lua references to the SEXP functions.

This fixes #1954.
2018-12-27 14:14:34 +01:00
m!m 61a8aa5592 Merge pull request #1956 from CasparKielwein/unused_function_ck2
remove unused Functions D to H
2018-12-27 13:50:52 +01:00
CasparKielwein 0692286bba Remove dead code in hud directory.
Removed a lot of unused functions.
This is mostly a cleanup of a prior refactoring.
There where a lot of unimplemented functions remaining from renaming.
Removed several outcommented parts of code.
2018-12-26 20:40:20 +01:00
CasparKielwein 72dae916a9 remove dead code in gamessnd/eventmusik
remove unused functions.
remove some uncommented code.
remove unused global variables.
2018-12-26 20:40:20 +01:00
CasparKielwein 189ad9f694 remove two unused functions in gamesequence 2018-12-26 20:40:20 +01:00
CasparKielwein b9f9fa0f73 remove unused function in gameplayhelp: gameplay_help_close 2018-12-26 20:40:20 +01:00
CasparKielwein dc7e88c888 remove unused deinfe in fireball.cpp and unused function fireball_render_plane 2018-12-26 20:40:20 +01:00
CasparKielwein b5dae2a56e remove dead code in debugconsole
remove unused functions.
Remove some unused defines and an unused class in console.h
2018-12-26 20:40:20 +01:00
CasparKielwein 969bfd0bdd remove unused functions in debris 2018-12-26 20:40:20 +01:00
m!m 63e8ae53c5 Merge pull request #1953 from plieblang/SupportDontAddPrimaries
AI profile flag for support to not equip new primary
2018-12-26 14:09:54 +01:00
m!m d57aaac8e4 Merge pull request #1952 from CasparKielwein/dead_code_remove_ck
remove unused functions A to C
2018-12-26 14:02:36 +01:00
plieblang ab981bd415 Document why the flag exists 2018-12-22 14:22:58 -08:00
CasparKielwein df7c91f3e7 remove some unused functions in ai code.
There is a lot of dead code left, but my IDE failds on the 15k file.
2018-12-22 20:10:56 +01:00
CasparKielwein ee73694cc8 remove unused functions on anim
Functionality related to pausing animations was not being used anymore.
2018-12-22 20:10:56 +01:00
CasparKielwein 65dcfe0a7c remove unused functions in autopilot 2018-12-22 20:10:56 +01:00
CasparKielwein ae8f8baade remove unused functions in cutscene 2018-12-22 20:10:56 +01:00
CasparKielwein 86fcdb1502 remove unused functions and variables in controlconfig 2018-12-22 20:10:56 +01:00
CasparKielwein b71fc4595c remove unused functions in cmeasures 2018-12-22 20:10:56 +01:00
CasparKielwein 471402ec5d remove unused functions in cfile 2018-12-22 20:10:56 +01:00
CasparKielwein 97fdca6b52 remove unused functions in camera 2018-12-22 20:10:56 +01:00
CasparKielwein b50833e6fb remove unused or unread variables in bmpman.
Global variables, function pointers and fields,
that where either unused or only set and never read.
2018-12-22 20:10:56 +01:00
CasparKielwein 4429cbb21c remove unused functions in bmpman 2018-12-22 20:10:56 +01:00
plieblang 4a6d8573a0 AI profile flag for support to not equip new primary 2018-12-21 13:26:32 -08:00
m!m 2c6039759c Merge pull request #1951 from Goober5000/fix_comment_rot
fix comment rot in speech.h
2018-12-18 17:42:41 +01:00
Goober5000 f3a0d56a85 remove comment that is no longer applicable 2018-12-18 00:07:40 -05:00
Goober5000 243aac1667 Merge pull request #1934 from plieblang/LabLightingSlidersResetView
Set initial slider values to the command line parameters and add functionality to reset view
2018-12-17 23:58:29 -05:00
Goober5000 19fbe05cee Merge pull request #1949 from Goober5000/small_collision_optimization
simple optimization for obj_sort_and_collide
2018-12-17 16:00:50 -05:00
Goober5000 e581a3b8a3 make these variables global 2018-12-16 14:28:47 -05:00
m!m 67a2d99a9b Merge pull request #1950 from asarium/fix/particleEffectParsing
Improve particle parsing code
2018-12-16 19:12:23 +01:00
asarium 569f1ee237 Improve particle parsing code
This makes some general changes to the particle parsing code. It moves
the trail effect option to the end of the options list to remove an
ambiguity in the resulting parsing code. This is done in a backwards
compatible manner so existing tables will not be broken by this.

This also introduces support for specifying single number ranges
without the parentheses to make that easier to use.
2018-12-16 14:23:22 +01:00
Goober5000 e9a8b9d8a2 make vectors static, per discussion on Discord 2018-12-15 16:45:58 -05:00
m!m 0efb98d4a9 Merge pull request #1948 from MageKing17/bugfix/sexp-nonexistent-AI-class
Don't rely on Assert to check for a valid AI class in SEXP code.
2018-12-13 20:10:34 +01:00
MageKing17 ec99bf9c03 Don't rely on Assert to check for a valid AI class in SEXP code.
Bad data can cause the name search to fail, and if change-ai-class was called with an invalid AI class, it could cause later invalid array accesses (using an index of -1).
2018-12-13 07:00:17 -08:00
plieblang bd6ff021fd Hopefully fix compilation bug 2018-12-09 12:14:43 -06:00
MageKing17 69213c3338 Merge pull request #1947 from asarium/fix/audiofile_play_api_fix
Add missing parameters to soundfile:play
2018-12-08 10:09:03 -08:00
asarium 0bffac7615 Add missing parameters to soundfile:play
This was missing from the API code and was uncovered by the new
scripting API changes.
2018-12-08 17:32:49 +01:00
niffiwan ba089bd95e Merge pull request #1945 from asarium/fix/1944
Fix move constructor of streaminganim_h
2018-12-08 16:17:35 +10:00
m!m 0a1519284f Merge pull request #1943 from TheMatthew/fast-path-microoptimization
Add a cache map for shaders in order to accelerate shader lookup
2018-12-07 18:09:08 +01:00
Matthew Khouzam 877a138192 Update gropenglshader.cpp 2018-12-06 22:53:42 -05:00
m!mandTheMatthew 8a34ceef91 Update code/graphics/opengl/gropenglshader.cpp
Co-Authored-By: TheMatthew <[email protected]>
2018-12-06 22:51:35 -05:00
niffiwan d638cacc51 Merge pull request #1932 from Goober5000/fix_warp_clipping
Fix warp clipping
2018-12-07 07:56:33 +10:00
asarium 871317b5bd Fix move constructor of streaminganim_h
The move constructor was written wrongly which caused issues when moving
the value into the Lua memory. This fixes that issue.

This fixes #1944.
2018-12-06 19:53:50 +01:00
m!mandTheMatthew 9b7a87d4c5 Update code/graphics/opengl/gropenglshader.cpp
Co-Authored-By: TheMatthew <[email protected]>
2018-12-03 20:04:30 -05:00
Matthew Khouzam 3b07636a16 Add a cache map for shaders in order to accelerate shader lookup
Shaders lookup in opengl_get_shader_idx performance reduces from
O(n) shader to O(1).

Signed-off-by: Matthew Khouzam <[email protected]>
2018-12-03 20:03:25 -05:00
m!m 8840d238d7 Merge pull request #1942 from TRBlount/lua/WeaponCreatedHook
Add On Weapon Created Hook
2018-12-03 17:58:03 +01:00
TRBlount 95128dd734 Fix Travis Errors 2018-12-02 01:10:22 -07:00
TRBlount 30866afbd6 Add On Weapon Created Hook 2018-12-02 01:10:22 -07:00
plieblang 2b43677c82 Improve UpdateSlider and add help text 2018-12-01 19:18:36 -06:00
Goober5000 94a542a2a3 Merge pull request #1940 from TheMatthew/minor_cleanup
objectsort: remove useless check
2018-11-29 02:02:44 -05:00
Matthew Khouzam 5c064afd95 Update objectsort.cpp 2018-11-28 23:12:55 -05:00
Matthew Khouzam 6ee41c06d8 Update objectsort.cpp 2018-11-28 23:12:34 -05:00
Matthew Khouzam 58fa411ad3 Update objectsort.cpp 2018-11-28 23:11:57 -05:00
Matthew Khouzam 08c2449672 Update objectsort.cpp 2018-11-28 23:11:27 -05:00
Matthew Khouzam 726af82c56 objectsort: remove useless check
if an object is a ship, it is a model. No need
to check twice.
2018-11-28 20:41:45 -05:00
m!m c11dce4a92 Merge pull request #1939 from TheMatthew/clean-fast-path
objectsort: Move nebula detection to common area
2018-11-28 19:11:56 +01:00
Matthew Khouzam 0121eb6123 objectsort: Move nebula detection to common area
Run nebula test once per frame rather than once
per object.

Use a common function to avoid drifting errors.
2018-11-27 23:45:09 -05:00
niffiwan 8a325362f6 Merge pull request #1938 from asarium/fix/optionalScriptingParameters
Check optional scripting parameters before using them
2018-11-27 20:07:29 +10:00
asarium 4eb0e41142 Check optional scripting parameters before using them
These were all cases where the parameter was the new value when setting
a variable. The variables should always be initialized when that code is
reached but it is still better to check the pointers before using them.

These were found by @niffiwan.
2018-11-26 18:50:12 +01:00
Goober5000 5528e4e42d Merge pull request #1933 from Goober5000/multi_sexp_destroy_and_subsys
multi capability for destroy-instantly and destroy-subsys-instantly
2018-11-25 13:41:33 -05:00
Goober5000 968695f851 fix handling of multiplayer packets 2018-11-25 00:27:14 -05:00
Goober5000 8f00c6e842 since we switched from a while-loop to a for-loop, don't repeat the CDR 2018-11-25 00:27:14 -05:00
Goober5000 8a9edb1215 remove error_bypass from new function 2018-11-25 00:27:14 -05:00
Goober5000 1c9e47ad3d address clang-tidy complaints 2018-11-25 00:26:29 -05:00
Goober5000 74fd3c0637 multi capability for destroy-instantly and destroy-subsys-instantly
Previously, these two SEXPs could only be used in single-player; now they can be used in multiplayer.  (This now allows Admiral MS's ship save/load script to work in multiplayer too.)

Inspired by Parias's patch included in the FSPort Co-Op Mod Beta (https://www.hard-light.net/forums/index.php?topic=88385.0) though with some modifications.
2018-11-25 00:26:29 -05:00
Goober5000 fe0f0558c2 Merge pull request #1937 from Goober5000/remove_error_bypass
remove error bypass in subsys functions
2018-11-25 00:20:34 -05:00
Goober5000 11ded47bd5 qtfred too 2018-11-24 14:57:38 -05:00
Goober5000 f8801446db fix function references 2018-11-24 14:11:26 -05:00
Goober5000 7492615a31 remove error_bypass 2018-11-24 14:05:37 -05:00
m!m 53cfc1eae4 Merge pull request #1936 from niffiwan/fix/issue1935
Fixes issue #1935
2018-11-24 09:25:06 +01:00
niffiwan 252facb6c4 Merge pull request #1927 from asarium/fix/decalObjectTypeChanges
Add additional validity check for decals
2018-11-24 10:52:18 +10:00
niffiwan 65417be571 Fixes issue #1935
If the optional arg isn't present; just pass -1 to bm_set_render_target
2018-11-24 09:04:12 +10:00
Goober5000 0da41b3943 address clang-tidy complaint 2018-11-22 16:07:00 -05:00
plieblang 97f9a6c91b Set default lighting to cmdline params and add reset view 2018-11-22 13:40:05 -06:00
m!m 10cd82456d Merge pull request #1914 from Goober5000/small_collision_optimization
only recompute collision pairs if we moved a colliding object
2018-11-21 18:59:08 +01:00
Goober5000 7878ba0d19 only recompute collision pairs if we moved a colliding object
The code already only recomputed collisions if we moved a ship or a wing, but this further optimizes things so that only ships or wings that can collide will cause a recomputation.
2018-11-20 13:54:39 -05:00
Goober5000 a6879a1b40 remove warning 2018-11-20 13:49:50 -05:00
Goober5000 cf7706eb1c might as well add the extents functionality too 2018-11-20 13:49:50 -05:00
Goober5000 09ed127d06 fix typo 2018-11-20 13:49:50 -05:00
Goober5000 77c3c79143 update special-warp-dist 2018-11-20 13:49:50 -05:00
Goober5000 62b74b8743 upgrade position_ship_for_knossos_warpin 2018-11-20 13:49:50 -05:00
Goober5000 4d99a3b8b3 fix determination of dist_to_plane 2018-11-20 13:49:49 -05:00
Goober5000 3a9a840633 forgot one of these 2018-11-20 13:49:49 -05:00
Goober5000 86f67c3c84 warp should be pretty much working correctly now
precalculate warp values before beginning warp, and use them throughout the warp instead of recalculating in every function
standardize on always using the entire docked assembly for length and half-length calculation, instead of some places the assembly and some places just the dock leader
consolidate and simplify the compute_warpout* functions in light of the above
2018-11-20 13:49:49 -05:00
Goober5000 28bb3bf914 rewrite dock_calc_docked_center to find the true physical center of the docked assembly 2018-11-20 13:49:49 -05:00
Goober5000 bd4b116188 this should fix the warpin/warpout distances for regular warpin 2018-11-20 13:49:49 -05:00
Tyler Blount 0a429e8a32 Merge pull request #1931 from asarium/fix/qtAppveyorNightlies
Also fix Appveyor Qt path for nightly builds
2018-11-18 16:59:09 -07:00
asarium f70253e219 Also fix Appveyor Qt path for nightly builds 2018-11-18 19:45:32 +01:00
m!m e901e44418 Merge pull request #1881 from asarium/cleanup/adeSignature
Add proper class support to Lua API
2018-11-18 19:09:45 +01:00
asarium 651268eeea Fix rvalue reference issue in SetHookVar 2018-11-18 12:43:39 +01:00
asarium 9b7c32d0c1 Fix merge issue 2018-11-18 12:43:39 +01:00
asarium d014e53505 Fix clang-tidy issues 2018-11-18 12:43:39 +01:00
asarium 00b0a80ad9 Call scripting handle destructor when Lua collects garbage
This will automatically call the destructor of a type of Lua calls the
garbage collector for an object of that type. This is the last step
towards fully supporting non-trivial objects in the Lua API and all
previous workarounds have been removed.
2018-11-18 12:43:39 +01:00
asarium 4a7109e1d5 Convert scripting value getting to templates
This is pretty much similar to the value setting changes. This is a much
safer solution for getting values out of the scripting system which has
compile time validation for move-only types.
2018-11-18 12:43:39 +01:00
asarium 1484ddbe77 Convert scripting value setting to using placement-new
This commit changes the way the scripting API works by properly using
the newly available type information for moving the FSO resources into
the memory supplied by lua. This has full support for rvalue references
which will make it possible to use move-only types with the scripting
API.

This also makes the API much safer to use since it doesn't use pointers
to local values anymore which made it very hard to use the API in a
different context without causing issues.

This only covers writing the FSO values to Lua. Getting values back is
not covered yet.
2018-11-18 12:43:39 +01:00
asarium 48b03a1789 Remove ADE signature from scripting API
This was previously used for allowing scripts to set arbitrary values on
scripting objects. However, it was used by only a few scripting
functions and, as far as I know, no script uses this features.

This removes that feature which simplifies the code ade_index_handler
of.

This also simplifies the code that handles the userdata for libraries
provided by FSO.
2018-11-18 12:43:39 +01:00
asarium e790cf209a Add additional validity check for decals
This tracks the original object type of a decal and marks a decal as
invalid if the type changes. This should fix a bug reported by Spoon.
2018-11-18 12:41:55 +01:00
Tyler Blount 1eea298fe1 Merge pull request #1929 from TRBlount/fix/lab_insignia
Fix oversights when a mod has zero Insignias
2018-11-13 19:08:43 -07:00
TRBlount 1de63cc881 Make sure having no insignias doesn't trigger asserts and prevent insignias from being rendered 2018-11-13 14:57:22 -07:00
Tyler Blount c7be4734d3 Merge pull request #1930 from asarium/build/appveyorDebug
Fix Appveyor Qt directory
2018-11-13 14:55:19 -07:00
asarium fbc2a2dab2 Fix Appveyor Qt directory
They updated their Qt version and didn't update the documentation page.
This fixes the recent build errors by using the 5.9 symlink which is
linked to the most recent version.
2018-11-13 18:27:02 +01:00
Tyler Blount e5be2372e1 Merge pull request #1928 from TRBlount/fix/share_fire_dir_access
Fix access violation in ship_get_global_turret_gun_info
2018-11-12 21:06:21 -07:00
TRBlount 9c69e11fe5 Add requested changes 2018-11-12 17:56:50 -07:00
TRBlount 0173f44070 Fix access violation in share_fire_direction code path 2018-11-11 16:09:05 -07:00
Fabian Woltermann 45559c13a9 Merge pull request #1912 from asarium/cleanup/noOldCollision
Remove -old_collision command line option
2018-11-10 17:52:17 +01:00
Fabian Woltermann 34888cb1a6 Merge pull request #1923 from asarium/cleanup/speechAPI
Cleanup the speech API code a bit
2018-11-10 17:51:32 +01:00
Fabian Woltermann b77b425f2f Merge pull request #1920 from The-E/feature/lab_camera_controls
Make the lab camera better
2018-11-10 17:40:51 +01:00
Fabian Woltermann 49b5c10295 Addresses feedback, switches default rotation mode to "Both" 2018-11-07 17:13:11 +01:00
niffiwan 0396d5670b Merge pull request #1924 from tomimaki/fix-incomplete-fb-attachment
Fix for incomplete attachment in shadow framebuffer
2018-11-07 07:54:12 +10:00
tomimaki bb6c00a516 Update gropengltnl.cpp 2018-11-06 15:13:59 +01:00
Fabian Woltermann 4d0703ad98 Remove the "disabled" rotation mode 2018-11-04 12:06:00 +01:00
asarium 27e91d8f6c Cleanup the speech API code a bit
This replaces the previously used defines with inline functions which
fixes a few warnings if the macros were ever used. This also changes
fsspeech.cpp so it is compiled always since it has no dependency on the
underlying speech system.
2018-11-03 14:54:29 +01:00
Fabian Woltermann 3c4ab2eef1 Add roll controls 2018-11-03 10:34:17 +01:00
Fabian Woltermann 4e7f29ea88 MORE CI fixes 2018-11-03 10:34:17 +01:00
Fabian Woltermann 793a3d8dd3 Even more CI fixes 2018-11-03 10:34:16 +01:00
Fabian Woltermann 49abb88385 Avoid CI errors 2018-11-03 10:33:06 +01:00
Fabian Woltermann 4c2ed1501e Switch the model rotation controls to a "turntable" model, add constraints, make speed configurable 2018-11-03 10:33:06 +01:00
Fabian Woltermann 6b425c1e6b Merge pull request #1922 from asarium/fix/1921
Fix cubemap offset computation for texture uploads
2018-11-03 10:27:58 +01:00
m!m 978a58dba2 Merge pull request #1917 from plieblang/LabArrowScrolling
Add arrow key scrolling to the lab
2018-11-03 09:07:20 +01:00
plieblang 3de05aefef Fire the item's existing function when selected 2018-11-03 01:21:47 -05:00
asarium da951e8be4 Fix cubemap offset computation for texture uploads
The changes from #1752 changed how the offset was computed but the
cubemap code did not update the initial offset computation to account
for this.

This fixes #1921.
2018-11-02 17:33:16 +01:00
m!m 483a6096bb Merge pull request #1885 from ngld/fix/rocketUI/tooMuchSound
Only play UI sounds if the event is triggered on the element where the property is set.
2018-10-31 19:14:19 +01:00
ngld 0ac810e7f0 Only play UI sounds if the event is triggered on the element where the property is set. 2018-10-31 06:46:27 +01:00
plieblang 0de1e55fb7 CI feedback 2018-10-28 17:25:43 -05:00
plieblang 3827bb9783 Fix nullptr crash and use vectors for *_list_endpoints 2018-10-28 12:59:36 -05:00
plieblang 69013f1d41 Add arrow key scrolling to the lab 2018-10-28 12:31:12 -05:00
m!m 3ac7864ac6 Merge pull request #1752 from asarium/opengl/baseLevelImprovement
Only upload mipmap levels that are actually needed
2018-10-28 18:22:01 +01:00
asarium 35a654660f Only upload mipmap levels that are actually needed
Previously, the game uploaded all mipmap levels found in the image files
and then selected which ones it will use by using GL_TEXTURE_BASE_LEVEL.
This unnecessarily used additional GPU memory which is especially bad if
the player already needs to use a lower detail level. This fixes that by
only uploading the necessary mipmap levels.
2018-10-28 14:57:00 +01:00
Goober5000 f975edd343 Merge pull request #1911 from asarium/feature/noSubsystemSparks
Add option for disabling spark spawning for subsystem
2018-10-27 12:50:50 -04:00
asarium 9219712ff0 Add option for disabling impact debris spawning 2018-10-27 16:37:42 +02:00
plieblang ead6cd9825 Separate ships by species properly 2018-10-26 00:21:08 -05:00
Goober5000 a32c5dad27 Merge pull request #1913 from Goober5000/whack_from_center_of_mass
calculate physics whack from docked center-of-mass, not docked center
2018-10-25 15:42:25 -04:00
plieblang 34d4ed5dba Scroll through ships/weapons with up/down keys 2018-10-25 11:50:16 -05:00
Goober5000 eb012584d6 Merge pull request #1880 from Goober5000/play_dead_persistent
add ai-play-dead-persistent
2018-10-24 14:50:40 -04:00
Goober5000 7cadce113d calculate physics whack from docked center-of-mass, not docked center 2018-10-24 00:17:10 -04:00
Goober5000 17b01fa8eb Merge pull request #1906 from plieblang/LabShipMenuImprovement
Show ship directly when clicking on it in the F3 lab
2018-10-23 22:41:16 -04:00
Goober5000 45ea62a9a2 Merge pull request #1907 from plieblang/ShipInvisibleAutoTargeting
ship-invisible doesn't turn off autotargeting
2018-10-23 22:41:02 -04:00
plieblang 979a4b0924 Flip default param value 2018-10-22 14:42:42 -05:00
Goober5000 e1db71fb69 Merge pull request #1910 from wookieejedi/FixOnShipDepart
Fix to "On Ship Depart" to incorporate Goober's feedback
2018-10-22 14:27:03 -04:00
niffiwan c33d406942 Merge pull request #1909 from asarium/build/travis_windows
Test Windows compilation with Travis CI
2018-10-22 22:03:25 +10:00
plieblang 30baac39a9 Combine cease_targeting functions 2018-10-21 13:13:08 -05:00
asarium 15dc45cc0a Remove -old_collision command line option
The new system has been tested pretty thoroughly so I think it is time
to remove this option.
2018-10-21 18:36:59 +02:00
asarium 3c41b56449 Add option for disabling spark spawning for subsystem
This adds the "no sparks" flag for subsystems which disables the
generation of spark sources for that subsystem when it is hit.

This was requested by Axem.
2018-10-21 18:03:48 +02:00
wookieejedi 50dbbc4687 Incorporates Goober's feedback
Moved new "On Ship Depart" hook exectuion to ship_cleanup.
2018-10-21 01:11:16 -04:00
niffiwan e19a6f9e01 Merge pull request #1905 from wookieejedi/OnDepartHook
Add '$On Ship Depart' Conditional Hook
2018-10-21 08:52:53 +10:00
niffiwan d9184545f7 Merge pull request #1902 from plieblang/BriefingVoiceUnpause
Play simulated speech if mission is launched while briefing is paused
2018-10-21 08:52:18 +10:00
asarium 5c07d181ad Test Windows compilation with Travis CI
Travis CI recently added support for running builds in Windows. This
adds support for testing compilation on Windows using that feature.

The newer version of Visual Studio and MinGW required some code changes
and an update of Google Test which is included in this commit.
2018-10-20 23:44:10 +02:00
wookieejedi 140fed2812 Added "Method" hook variable to "On Ship Depart" 2018-10-20 16:41:59 -04:00
plieblang dd2fd3ee5c Address feedback 2018-10-20 10:45:51 -05:00
plieblang dd7c36e43d ship-invisible doesn't turn off autotargeting 2018-10-19 18:49:53 -05:00
plieblang 409c7da2d7 Clicking on a ship in the lab shows it directly 2018-10-19 15:00:07 -05:00
wookieejedi 791e22bc1d Add On Ship Depart Conditional Hook 2018-10-18 17:50:22 -04:00
plieblang 6a93715c9b Clarify fsspeech_pause call 2018-10-18 11:28:45 -05:00
Goober5000 8fee9804df Merge pull request #1903 from plieblang/LabUpdatePOFName
Update displayed POF name in the F3 lab when new ship is selected
2018-10-17 23:32:53 -04:00
plieblang 2dc6d64c37 Update POF name when new ship is selected 2018-10-17 19:31:37 -05:00
plieblang a8142b8f80 Solution that actually compiles 2018-10-17 15:56:12 -05:00
plieblang 53f98cda99 Play simulated speech if mission is launched while briefing is paused 2018-10-17 01:03:39 -05:00
m!m 115d06a051 Merge pull request #1899 from Artyrm/Fix_missing_HUD
Fix missing HUD bug
2018-10-14 19:22:37 +02:00
m!m 485af1bad3 Merge pull request #1895 from Artyrm/Adapt_barracks_interface
Barracks stats adaptation for longer Unicode strings.
2018-10-14 19:22:27 +02:00
Goober5000 0ca5ade5ef Merge pull request #1894 from Artyrm/master
More friendly assert if used font misses a glyph.
2018-10-14 13:22:05 -04:00
Artyrm ff601db6fc Switched to hud_config_as_player() 2018-10-14 18:15:18 +03:00
Artyrm 686bc35cff Moved variables, gave mean. names and descr. 2018-10-14 16:07:59 +03:00
Artyrm ffe9a085b6 Improved readability. 2018-10-14 15:39:48 +03:00
Artyrm 33df766edf #ifdefed debug parts. 2018-10-14 15:25:17 +03:00
Artyrm 9a6227e7b0 Fixed grammar. 2018-10-14 14:58:53 +03:00
m!m c664eac1ee Merge pull request #1898 from ngld/enhance/betterBmErrors
If an icon can't be loaded, display an error instead of asserting.
2018-10-14 12:31:03 +02:00
Artyrm a7a9514fd1 Little cleanups. 2018-10-13 19:37:17 +03:00
Artyrm b402d9158c Use .is_observer flag. Add HUD restore in DEBRIEF state. 2018-10-13 18:56:21 +03:00
Artyrm c1b055a685 Start using hud_config_restore(). 2018-10-13 16:58:17 +03:00
ngld 412197d3e9 Gracefully handle missing briefing icons. 2018-10-13 06:16:16 +02:00
Artyrm 98f1d690f6 Fix Clang warnings. 2018-10-12 19:18:24 +03:00
Goober5000 842dbb1b75 Merge pull request #1888 from plieblang/AIProfileABFlag
Add "$free afterburner use" flag to ai_profiles.tbl
2018-10-12 12:12:26 -04:00
Artyrm df8e85f22e String width adapts, orig. behaviour is intact. 2018-10-12 17:57:44 +03:00
Goober5000 73482a6d62 Merge pull request #1896 from wookieejedi/FixOnArriveforDockWings
Fixes missing "On Ship Arrive" with Docked Wings
2018-10-11 22:38:04 -04:00
wookieejedi afa7976018 Removed redundant syntax 2018-10-11 18:36:05 -04:00
wookieejedi 0d355982d4 Update code/mission/missionparse.cpp 2018-10-11 11:43:40 -04:00
wookieejedi 7f9021cbdb Fixed missing "=" 2018-10-11 11:41:53 -04:00
wookieejedi 1450c71e2e Improve dock check with bool
Uses boolean value to determine if wing is docked, incoroprates that bool into if block for setting On Ship Arrive hook.
2018-10-11 11:39:16 -04:00
wookieejedi d80e6d0f71 Fixed missing "_" 2018-10-10 18:05:48 -04:00
wookieejedi f6dd3b09ab Remove incorrect placement 2018-10-10 17:05:22 -04:00
wookieejedi bc5ef0b28d Fixed anchor call and null bug 2018-10-10 13:12:18 -04:00
wookieejedi 8e618ffaec Add HV to Docked Wings
Fixs bug by adding the conditional hook call "On Ship Arrive" to docked wings that arrive.
2018-10-10 12:24:30 -04:00
Artyrm 889474688c Barracks stats adaptation for longer Unicode strings. 2018-10-10 18:01:06 +03:00
Artyrm d56cb8fc62 Even mor specific, gcc syntax. 2018-10-09 19:29:00 +03:00
Artyrm 98f196ee48 Compiler-specific fallthrough. 2018-10-09 19:13:36 +03:00
Artyrm 9f4ad9d1eb #ifdefed print for Release. Tried the strictest fallthrough comment 2018-10-09 18:29:00 +03:00
Artyrm a69e1d7308 Proper args handling. Extern C is also back. 2018-10-09 17:48:42 +03:00
Artyrm 34d1bf03f9 Got rid of unnes. #ifded. 2018-10-09 17:28:03 +03:00
wookieejedi 9fcd96ff97 Adds Accept Mission Outcome as new Conditional Hook (#1893)
* Adds Accept Mission Outcome Event to Game Events

Adds Accept Mission Outcome Event to Game Events, so scritps and other things can be called only when a campaign mission is accepted.

* Fixed double entry

* Define CHA_CMISSIONACCEPT

Adds line to define new conditional hook, CHA_CMISSIONACCEPT

* Add flag_def_list for On Campaign Mission Accept

Adds the proper flag_def_list for "On Campaign Mission Accept" CHA_CMISSIONACCEPT

* Runs New Conditional Hook

Runs the new conditional hook for "On Campaign Mission Accept"

* Reverts event changes

* Reverts state changese

* Reverts post_event change
2018-10-08 18:13:02 +02:00
Artyrm 2b77721c79 Tweaked function type a little for compilers. 2018-10-08 12:45:14 +03:00
Artyrm 95fafa50c4 Changed printf function. Explicit fallthrough. 2018-10-08 12:01:55 +03:00
Artyrm cac07391ca More user-friendly assert on missed glyph in font. 2018-10-07 23:44:27 +03:00
Goober5000 9daeb7f417 Merge pull request #1891 from Artyrm/master
Switch communication messages to use SCP_string
2018-10-07 11:11:06 -04:00
Artyrm f0ba0265fd New version of stb_truetype.h, just in case. 2018-10-07 15:35:12 +03:00
Artyrm 5b77cad5ac Merge branch 'ComMsg_Unicode_fix' 2018-10-07 14:57:16 +03:00
Artyrm 3f024cb324 And FRED fix as well. 2018-10-07 14:56:50 +03:00
m!m 1d60d25cf5 Merge pull request #1890 from wookieejedi/HyperspaceSounds
Fix missing Warpin sounds from Hyperspace Warpin Effect
2018-10-07 09:36:16 +02:00
Artyrm be5c98c7e2 Merge branch 'ComMsg_Unicode_fix' 2018-10-06 19:57:36 +03:00
Artyrm 6212ad29f1 One dependency in qtfred. Fixed. 2018-10-06 19:57:06 +03:00
wookieejedi 5ec30bdaee Update code/ship/shipfx.cpp 2018-10-06 11:37:50 -04:00
wookieejedi b9b74a3201 Fixed sound variable error
Pos variable not used, so removed it.
2018-10-06 09:45:36 -04:00
wookieejedi 09c24313d7 Added sounds to WE Hyperspace
Allows warpin enter and exit sounds to be properly used with the Hyperspace warpin effect.
2018-10-06 08:35:28 -04:00
Artyrm afdaa3a3ee Merge branch 'ComMsg_Unicode_fix' 2018-10-06 13:32:20 +03:00
Artyrm 68dcef639d Clean-up commented variants. 2018-10-06 13:31:21 +03:00
wookieejedi 91f351b990 Update code/ship/shipfx.cpp 2018-10-06 01:35:52 -04:00
wookieejedi dd1def4f4c Update code/ship/shipfx.cpp 2018-10-06 00:36:23 -04:00
wookieejedi 8b770792fb Update code/ship/shipfx.cpp 2018-10-05 22:17:30 -04:00
plieblang 23f9cfc815 Add free-afterburner-use flag to ai_profiles.tbl 2018-10-02 14:10:27 -05:00
niffiwan 11f9175425 Merge pull request #1887 from TRBlount/feature/mod_play_warp_settings
Make player warpout settings customizable
2018-10-01 11:08:14 +10:00
Artyrm 4fb9c27e71 Comm_orders assign fix. MsgItems to SCP_string too. 2018-09-30 23:51:47 +03:00
TRBlount 4c7b7a0fef Make player warpout settings customizable 2018-09-30 11:31:41 -06:00
Artyrm 3dc1689936 Switched to SCP_string in HUDSquadMsg 2018-09-30 17:23:23 +03:00
niffiwan 94df2777e0 Merge pull request #1884 from niffiwan/fix/setetsvalues_doco
Fix set-ets-values sexp documentation bug
2018-09-30 12:52:38 +10:00
niffiwan c9ebc33d98 apply similar to get-ets-values 2018-09-30 10:12:18 +10:00
niffiwan 9bd459d549 further enhance doco (per feedback) 2018-09-30 09:27:10 +10:00
m!m d9db8bdb71 Merge pull request #1883 from asarium/fix/linuxRelease
Fix linux release building
2018-09-29 16:30:46 +02:00
niffiwan f3cdfcc229 Fix set-ets-values sexp documentation bug
Found by Asteroth - thanks!
2018-09-29 19:16:06 +10:00
asarium 44e3f1f9b5 Fix linux release building
I removed too much code when disabling qtFRED deployment...
2018-09-29 10:30:15 +02:00
niffiwan da5e7f1510 Merge pull request #1882 from asarium/build/disableLinuxQtFred
Disable Linux qtFRED building again
2018-09-29 10:51:55 +10:00
asarium d830a01381 Disable Linux qtFRED building again
There are still some unresolved issues and the file size is pretty large
due to some issues with how the AppImage is built.
2018-09-28 23:13:20 +02:00
m!m d24d536731 Merge pull request #1862 from asarium/feature/libRocket
Add scripting features for barracks libRocket UI
2018-09-28 10:27:01 +02:00
Goober5000 6d0e166dea Merge pull request #1875 from asarium/opengl/shadowFboFix
Remove duplicate shadow FBO creation
2018-09-27 16:34:33 -04:00
m!m e0301da596 Merge pull request #1879 from Goober5000/fred_choose_dock_leader
always choose a dock leader in FRED
2018-09-27 11:46:55 +02:00
asarium a815c0247c Add scripting features for barracks libRocket UI
This mostly adds the scripting features required for accessing the
various internal variables required for the barracks screen.
2018-09-27 11:45:09 +02:00
m!m f42eaf9637 Merge pull request #1817 from asarium/cleanup/luaVarargs
Convert scripting interaction function to variadic templates
2018-09-27 11:44:22 +02:00
Goober5000 c667668c17 don't override play-dead goals 2018-09-27 01:33:44 -04:00
Goober5000 8d4643bc7a add ai-play-dead-persistent
This adds a new AI goal which is equivalent to play-dead except that it "sticks".  It doesn't clear the goal list
so it will continue playing dead until the goal is removed or another goal with a higher priority is added.
2018-09-27 00:48:57 -04:00
Goober5000 01fb2c1243 Merge pull request #1878 from Goober5000/fireball_warp_type
allow custom fireballs to be used as ship warp effects
2018-09-26 17:21:29 -04:00
Goober5000 408f259368 always choose a dock leader in FRED
In FRED, if all docked ships had their arrival cue set to false, none of them would be loaded
in the mission because there was no dock leader to bring in the entire group.  This PR fixes that
by choosing an arbitrary ship (the biggest ship according to ship_class_compare) to be the
dock leader.  This consequently fixes issue #1877 because the wing is able to find its ship.
2018-09-26 15:35:23 -04:00
Goober5000 a9b8e5c043 address clang-tidy complaints 2018-09-26 14:17:39 -04:00
asarium cfb9540e2c Fix issues with ignoring parameters 2018-09-26 19:15:42 +02:00
asarium 88115c7703 Fix clang-tidy issues 2018-09-26 19:15:42 +02:00
asarium 8dba6770ae Convert ade argument setting to variadic templates
Same as with argument getting, this preserves the type information and
makes the system generally much safer.
2018-09-26 19:15:42 +02:00
asarium 8f4d51b14a Convert ade_get_args to variadic template based solution
This maintains the type information which can be used for enforce
const-correctness and also for implementing more advanced ways of
handling the type information.
2018-09-26 19:15:42 +02:00
asarium 185aece470 Remove duplicate shadow FBO creation
This appears to be a leftover from the development of the shadow
rendering code. The shadow FBO was allocated twice but only one was
used. This removed the unused code and also ports the improved error
handling of that code over to the actual shadow FBO creation code.
2018-09-26 14:10:35 +02:00
m!m 0e962e269b Merge pull request #1876 from plieblang/MemUsageFlagRemoval
Don't show nonexistent memory usage flag
2018-09-26 09:02:20 +02:00
Goober5000 095a2efc56 allow custom fireballs to be used as ship warp effects
This allows the WE_Default warp type to be used with any warp fireball in fireball.tbl.  The fireball can be used by specifying its unique ID for the existing $Warpin type and $Warpout type options in ships.tbl.  The warp type is managed by bitwise-OR'ing a flag to the fireball's index.
2018-09-26 00:19:17 -04:00
plieblang 944a254551 Don't show nonexistent memory usage flag 2018-09-25 16:37:21 -05:00
Goober5000 f628999ef9 Merge pull request #1872 from asarium/fix/libRocketTTF
Disable libRocket unless unicode mode is active
2018-09-24 12:02:33 -04:00
Goober5000 e2fb4d84d7 Merge pull request #1871 from asarium/fix/linuxBuildTransferSh
Remove release build uploading to transfer.sh
2018-09-23 19:59:38 -04:00
asarium ff952298a2 Disable libRocket unless unicode mode is active
Since libRocket requires unicode mode this doesn't change anything but
it fixes an error when a mod uses TrueType fonts without unicode mode.
2018-09-23 14:18:35 +02:00
m!m 66b3fdfed8 Merge pull request #1870 from Goober5000/issue_1869
fix issue #1869
2018-09-23 12:19:41 +02:00
asarium 451c03f76a Remove release build uploading to transfer.sh
I think I used that for debugging some things but now it's causing
issues.
2018-09-23 12:16:12 +02:00
Goober5000 da30c5a38e fix issue 1869 2018-09-22 18:33:00 -04:00
m!m 5206aaabdf Merge pull request #1866 from Goober5000/custom_warpglow
Custom warp glows, balls, and models
2018-09-20 23:20:34 +02:00
Goober5000 f6ed93f7a9 address Travis complaint 2018-09-20 15:29:05 -04:00
Goober5000 4f0e2ae9f1 additional small fixes 2018-09-20 00:25:42 -04:00
Goober5000 c3f595ba0e tweaks 2018-09-19 22:51:57 -04:00
Goober5000 d02d98681a apply new warp attributes for remodularized fireball.tbl 2018-09-19 20:08:19 -04:00
Goober5000 98e37b2570 Merge pull request #1865 from Goober5000/remodularize_fireball_tbl
Remodularize fireball.tbl
2018-09-19 19:50:18 -04:00
Goober5000 3c8b87c958 address PR feedback 2018-09-19 13:00:05 -04:00
niffiwan 8d44946b2b Merge pull request #1863 from asarium/fix/jsonPilotModConversion
Use the correct location flags for enumerating pilots
2018-09-19 21:24:08 +10:00
Goober5000 98b9d5c899 a few more corrections 2018-09-18 19:43:11 -04:00
Goober5000 2f5079fcd1 populate the fireball entry IDs when fred2 starts up
fix various issues with both strings and positive numbers being accepted as sexp arguments
2018-09-18 17:33:45 -04:00
asarium 59a8a347a1 Use the correct location flags for enumerating pilots
This was an oversight in the JSON changes since those were made long
before the CFile location flags were a thing. This uses the correct
location flags for enumerating pilots for conversion.
2018-09-18 22:33:51 +02:00
niffiwan e04f1b4ca4 Merge pull request #1861 from Artyrm/master
Training messages fix.
2018-09-18 20:08:19 +10:00
Fabian Woltermann 7da41c32e3 Merge pull request #1267 from asarium/feature/jsonPilotReading
Add JSON pilot reading implementation
2018-09-18 10:26:07 +02:00
Goober5000 73770845b6 use enhanced fireball.tbl to create OPF_FIREBALL for use in explosion-effect and warp-effect 2018-09-18 00:56:38 -04:00
Goober5000 5828d7f634 generate a unique ID for each fireball, if one isn't specified 2018-09-17 23:06:04 -04:00
Goober5000 45f6cdc687 make fireball modular tables simpler, without using the confusing lod_checker logic, and also add an optional unique id 2018-09-17 22:49:23 -04:00
Artyrm 13fe34a3c7 Merge branch 'training_messages_fix' 2018-09-17 22:26:33 +03:00
asarium da64f285bc Fix issue with file location flags 2018-09-17 20:12:38 +02:00
asarium 45f9ea2ea4 Suppress false-positives in valgrind tests 2018-09-17 19:47:40 +02:00
asarium eb73328c14 Add std::ostream operator to ID class
This will print the internal valie to the stream which can be useful for
debugging.
2018-09-17 19:24:20 +02:00
asarium 380ca12b0d Fix clang-tidy issues 2018-09-17 19:24:11 +02:00
asarium c7e66e26fb Delete old pilot files as well when deleting a pilot 2018-09-17 19:23:18 +02:00
asarium ff911e666d More fixes
This finally fixes the seemingly non-deterministic failure of the
unit-tests (among other things).
2018-09-17 19:23:12 +02:00
asarium c8619ddd0d Fix uninitialized variable error detected by valgrind 2018-09-17 19:23:05 +02:00
asarium 721b2da37b Fix copy-paste error
This caused the continuous conversion of old binary pilots to the JSON
format which reset all the changes made to the JSON data.
2018-09-17 19:22:59 +02:00
asarium e9f4c1618e Add unit tests for validating pilot loading 2018-09-17 19:22:50 +02:00
asarium 4eef54c10b Add JSON reading implementation
This changes the pilot reading code to always use JSON files for storing
the pilot data. Old pilots are converted to the new format when FSO
starts and after that point only JSON pilots will be used.
2018-09-17 19:22:43 +02:00
Artyrm f5ba1e470c Training messages fix. Their delay could be too small with voices volume ste to 0. 2018-09-17 20:12:58 +03:00
asarium 94a00ca6ee Add reading code to FileHandler
Currently only implemented for the BinaryFileHandler
2018-09-17 19:06:50 +02:00
Goober5000 3a8c10bec5 Merge pull request #1858 from Goober5000/enhanced_warp_effect
add additional parameters to warp-effect
2018-09-17 13:00:28 -04:00
niffiwan e92cc5161e Merge pull request #1859 from asarium/feature/loopingParticles
Add support for looping particles
2018-09-17 19:47:26 +10:00
asarium ea73ea33ca Add support for looping particles
This introduces support for keeping particles around forever and letting
them be controlled by a Lua script.
2018-09-17 09:26:20 +02:00
Goober5000 8fe7dc4a1b Merge pull request #1860 from Goober5000/friendlier_warning
rewrite the mod warning dialog a bit
2018-09-16 19:33:58 -04:00
Goober5000 f5bbb21199 rewrite the mod warning dialog a bit 2018-09-16 14:16:57 -04:00
Goober5000 c2761a6142 address clang-tidy complaints 2018-09-16 13:44:38 -04:00
Fabian Woltermann 88b0dba208 Merge pull request #1466 from asarium/feature/libRocket
Add new libRocket UI system
2018-09-16 15:20:34 +02:00
asarium 7173299ca7 Add new libRocket UI system
This new system allows to create a user interface that goes beyond the
existing UI system.
2018-09-16 13:55:29 +02:00
Fabian Woltermann e35fc10530 Merge pull request #1856 from Goober5000/sexp_reset_post_effects
add reset-post-effects sexp
2018-09-16 10:43:39 +02:00
Goober5000 46e8e735b6 more complaining by clang-tidy 2018-09-16 00:31:58 -04:00
Goober5000 e3e40ee576 fix build warning 2018-09-15 23:42:29 -04:00
Goober5000 f0b99e24ff add additional parameters to warp-effect
The warp-effect SEXP can now specify other animations from fireball.tbl that are not necessarily the standard or Knossos animations.  Additionally, the SEXP can now specify the duration for the opening and closing of the warp effect.
2018-09-15 23:30:17 -04:00
Goober5000 e0f76e0cfa tweak sexp documentation as well 2018-09-14 21:59:05 -04:00
Goober5000 5303440dfb add reset-post-effects sexp
Nobody ever thought to add a reset-post-effects SEXP to complement set-post-effects, so this remedies that.  Also, a few minor edits were made to the scripting documentation.
2018-09-14 21:54:35 -04:00
Fabian Woltermann 138a1d01d4 Merge pull request #1854 from TRBlount/fix/share_fire_dir
Fix share_fire_direction logic
2018-09-11 08:04:40 +02:00
TRBlount 0814bf0ae1 Fix share_fire_direction logic 2018-09-10 16:40:36 -06:00
niffiwan 39a0cfecbb Merge pull request #1853 from asarium/feature/sdlVersionDebugLog
Write SDL version to debug log
2018-09-10 23:31:03 +10:00
asarium b78d940136 Write SDL version to debug log
This adds the runtime and compile version of the used SDL library to the
start of the debug log. This was requested by ngld and should make
diagnosing some errors easier.
2018-09-10 09:36:24 +02:00
Goober5000 bc03442a3c Merge pull request #1850 from asarium/fix/1722
Handle DIRECTIVE_WING_ZERO in is-destroyed SEXPs correctly
2018-09-07 12:33:43 -04:00
asarium 8ce1a6f490 Handle DIRECTIVE_WING_ZERO in is-destroyed SEXPs correctly
The special value DIRECTIVE_WING_ZERO (defined to be -999) is used to
signify to the directives system that an is-destroyed SEXP was found
which specified an empty wing. However, if a second is-destroyed-delay
SEXP is present in the same directive then the count of the parameters
is added to -999 which makes means that the directives system then
displays it on the HUD as a negative number.

This fixes that by resetting the counter to 0 if a second SEXP
encounters the special value which fixes the issue in the supplied test
mission. There are probably other edge cases when using multiple
is-destroyed SEXPs in a directive so I added a warning to the SEXP help
which lets the mission designer know that it is preferable to specify
multiple parameters instead of using multiple is-destroyed SEXPs.

This fixes #1722.
2018-09-07 13:38:10 +02:00
Fabian Woltermann 18d2ef8580 Merge pull request #1849 from asarium/fix/1655
Apply clipping offsets when using the line draw list
2018-09-06 12:29:17 +02:00
asarium 4a86b70a69 Apply clipping offsets when using the line draw list
This should make the line draw list class behave identically to the old
line rendering functions. This caused a few issues where the lines were
drawn outside the scissor area which made them invisible.

This fixes #1655.
2018-09-04 15:04:57 +02:00
m!m f717c41083 Merge pull request #1846 from asarium/fix/nebulaBackground
Fix nebula background rendering
2018-09-02 22:59:59 +02:00
asarium 92aacc8479 Fix nebula background rendering
This makes the deferred fog rendering code use the nebula background
instead of the single fog color for the background.

This is not an ideal solution since objects fade to the fog color
instead of the color of the background but it's better than rendering no
background.
2018-09-02 19:07:48 +02:00
Fabian Woltermann 2ae7990c61 Merge pull request #1845 from asarium/fix/1828
Disable movie looping for MVE cutscenes
2018-09-02 15:53:38 +02:00
asarium 4e8ebedfa0 Disable movie looping for MVE cutscenes
This changes the FFmpeg code to not use av_seek_frame anymore if looping
is not required. This fixes an issue when playing MVE movies since that
format does not support seeking.

This fixes #1828.
2018-08-30 23:10:22 +02:00
m!m 01f418f2fb Merge pull request #1844 from The-E/fix/hdr_spec_maps
HDR color space conversion for spec maps is not applied correctly
2018-08-30 15:52:03 +02:00
Fabian Woltermann 0ed47de357 Update main-f.sdr 2018-08-30 13:53:20 +02:00
Fabian Woltermann f5f1c97c0f HDR color space conversion for spec maps only happened in one code path, not all of them. This fixes that. 2018-08-29 21:19:48 +02:00
Goober5000 b0d3957df7 Merge pull request #1841 from niffiwan/feature/per_ship_scan_range
add per-ship-class scanning range feature
2018-08-28 12:59:07 -04:00
niffiwan 332bd01f0f address feedback
remove static keyword & add comment for new constant variable
switch to using #define values for the default scan ranges
2018-08-28 21:51:06 +10:00
niffiwan eb8717f051 add per-ship-class scanning range feature
Requested for FotG - allow dedicated scanning ship options
e.g. Y-wing Longprobe & TIE/rc
2018-08-28 21:13:50 +10:00
m!m af8ae03d9e Merge pull request #1839 from Goober5000/ignore_multiplayer_campaigns
ignore multiplayer as well as singleplayer campaigns
2018-08-24 18:41:53 +02:00
Goober5000 0ca7299bbc ignore multiplayer as well as singleplayer campaigns 2018-08-24 10:58:11 -04:00
Fabian Woltermann 98234c3bc2 Merge pull request #1834 from The-E/fix/team_color_srgb
The team color process is only valid for srgb color space
2018-08-23 18:53:36 +02:00
niffiwan 50691c41da Merge pull request #1837 from niffiwan/feature/autoaim_frame
add feature: change reticle when autoaim is active
2018-08-22 08:42:08 +10:00
m!m 4a66cb190a Merge pull request #1824 from The-E/fix/vm_vec_random_cone_params
vm_vec_random_cone needs to be called with the smaller angle first.
2018-08-21 15:04:39 +02:00
niffiwan 9ba3a0ccf9 clang-tidy: remove FALSE & NULL 2018-08-21 22:53:31 +10:00
niffiwan b625f51645 add feature: change reticle when autoaim is active
Optionally play a sound when autoaim becomes active, and another sound
when autoaim becomes inactive
Credit to zookeeper - I'm just pushing this into master!
2018-08-21 20:56:58 +10:00
Fabian Woltermann c2c8acbf13 REdo properly 2018-08-20 17:12:38 +02:00
Fabian Woltermann ac58950ac5 Revert "vm_vec_random_cone needs to be called with the smaller angle first."
This reverts commit 5b01036723.
2018-08-20 17:10:31 +02:00
Fabian Woltermann 8a84fffe12 Small copy/paste error fix 2018-08-19 20:18:31 +02:00
Fabian Woltermann 0c216ede98 The team color process is only valid for srgb color space, so we need to convert everything into it when we do the thing 2018-08-19 20:14:15 +02:00
m!m 3e543729fc Merge pull request #1832 from Goober5000/ignored_missions
add game_settings feature to ignore single missions
2018-08-19 16:39:49 +02:00
Goober5000 6385bf73be we should not only match without regard to file extension but also without regard to letter case -- and do this for campaigns as well 2018-08-18 15:20:04 -04:00
Goober5000 b7a32329db Merge pull request #1831 from Goober5000/make_getmissionfilename_consistent
make sure getMissionFilename never has a .fs2 extension
2018-08-18 15:05:06 -04:00
m!m b363bda60d Merge pull request #1833 from Goober5000/fix_insufficient_loadout_crash
fix bug introduced in pr #1736
2018-08-18 09:08:23 +02:00
Goober5000 0b547d971e make sure getMissionFilename never has a .fs2 extension 2018-08-18 01:52:48 -04:00
Goober5000 9ac04b9349 fix bug introduced in pr #1736 2018-08-18 01:35:16 -04:00
Goober5000 453b1ca619 address clang-tidy complaint 2018-08-17 23:16:48 -04:00
Goober5000 e6f1332980 add game_settings feature to ignore single missions 2018-08-17 18:32:58 -04:00
Goober5000 5840ca84d6 make sure getMissionFilename has a .fs2 extension 2018-08-17 16:47:51 -04:00
m!m aa0e1c755f Merge pull request #1825 from niffiwan/feature/qtfred_asteroid
qtfred asteroid editor
2018-08-17 13:37:26 +02:00
niffiwan 97469d65ef Merge pull request #1820 from asarium/build/updatedFFmpeg
Update prebuilt FFmpeg libraries to version 3.4.4
2018-08-17 19:24:11 +10:00
niffiwan 5834c01ca9 use UNREACHABLE macro in switch default:
addresses review feedback from m!m
2018-08-14 19:50:08 +10:00
niffiwan 13076364d6 Merge pull request #1714 from asarium/qtfred2_/linuxqtdeploy
Enable qtFRED for all deployments
2018-08-13 23:38:07 +10:00
niffiwan e2905e76ca fix clang-tidy (3): const auto & (!) ;) 2018-08-13 19:09:47 +10:00
niffiwan accea7bb4d fix clang-tidy warnings (2): const auto 2018-08-12 22:39:52 +10:00
niffiwan 733b67ada3 fix clang-tidy warnings
change CLAMP macro to use boolean rather than implicit conversion int
2018-08-12 21:42:11 +10:00
niffiwan de06d1e36f fix clang-tidy warnings (1)
add override to functions
convert to range based for loops
set default dtor
2018-08-12 21:40:47 +10:00
niffiwan 7e6eb25492 triple braces clang? really? 2018-08-11 22:37:57 +10:00
niffiwan 9de5d8d011 add asteroid editor to qtfred 2018-08-11 20:49:55 +10:00
Fabian Woltermann 62d178d896 Merge pull request #1818 from asarium/feature/loopingMovies
Add support for looping movies
2018-08-10 20:46:36 +02:00
Fabian Woltermann f8b210b659 Merge pull request #1819 from asarium/feature/vec3dOperators
Add C++ operators for vector math operations
2018-08-10 20:45:45 +02:00
Fabian Woltermann d3e6ee81e1 Merge pull request #1822 from asarium/fix/fredFlags
Terminate FRED/qtFRED when command line demands it
2018-08-10 20:44:56 +02:00
Fabian Woltermann 5b01036723 vm_vec_random_cone needs to be called with the smaller angle first.
This also adds a check to that function to swap the values around should that not be the case
2018-08-10 17:26:42 +02:00
asarium 66f95312ae Terminate FRED/qtFRED when command line demands it
This was reported by ngld who experienced issues with Knossos since FRED
did not terminate properly when asked to provide the command line flags.
This should fix that.
2018-08-01 09:20:18 +02:00
asarium a737c7a373 Update prebuilt FFmpeg libraries to version 3.4.4
This should fix an issue with the playback speed of APNG files which is
present in the current builds. This does not include the Mac libraries
since I cannot compile the libraries for that platform.
2018-07-31 15:43:52 +02:00
asarium ead93f3175 Add C++ operators for vector math operations
This makes it a bit easier to use the vector types since they are now
usable with the standard C++ operators.
2018-07-30 23:38:51 +02:00
asarium 48b1e3f289 Add support for looping movies
This adds a playback property for making the movie loop to the start
when the end is reached. The way this is done is by simply keeping the
decoder running even if the end of the movie is reached. Then the movie
is reset to the beginning and decoding continues. The player detects
this reset by examining the frame times which keeps the playback
constant.

This also includes support for this in the movie scripting API.
2018-07-30 18:10:48 +02:00
Fabian Woltermann 8a2641181f Merge pull request #1816 from asarium/fix/1815
Don't reset mission file name on mission end
2018-07-28 18:47:17 +02:00
m!m 36e8c3b623 Merge pull request #1814 from TRBlount/fix/random_cone
Fix vm_vec_random_cone/sphere functions
2018-07-28 18:44:58 +02:00
TRBlount 1c2a136ef7 Fix vm_vec_random_cone/sphere functions 2018-07-28 09:11:59 -06:00
asarium 72272cb8cf Don't reset mission file name on mission end
This was needed by the restart dialog action and got removed since the
Discord changes needed to know if a mission was active or not.

I removed the code which changed the mission file name and replaced it
with some internal handling in the discord code which should now handle
mission restarts better.

This fixes #1815.
2018-07-28 16:12:26 +02:00
m!m 4062f59128 Merge pull request #1813 from asarium/fix/stupidIfTypos
Fix crash when launching FSO without a mod option
2018-07-28 09:38:29 +02:00
asarium 24ab091671 Fix crash when launching FSO without a mod option 2018-07-27 18:17:18 +02:00
Fabian Woltermann 7cd17205b5 Merge pull request #1785 from asarium/feature/soundHandleIds
Use strongly typed handles for sound handles
2018-07-27 15:04:02 +02:00
Fabian Woltermann d58bd7db69 Merge pull request #1811 from asarium/fix/1754
Properly handle invalid UTF-8 sequences in NanoVG
2018-07-26 08:22:37 +02:00
m!m ce11936e56 Merge pull request #1810 from asarium/fix/discordLinkingIssue
Fix MSVC linking issue in new Discord Code
2018-07-25 23:18:00 +02:00
asarium feda97c148 Properly handle invalid UTF-8 sequences in NanoVG
The original issue was reported by Novachen in #1754 where a significant
slowdown was encountered in the controls menu (Ship and Misc tabs). I
traced the cause of the slowdown to repeated uploads of the NanoVG font
atlas texture even though no changes were necessary.

The root cause of the issue was that NanoVG did not handle invalid UTF-8
sequences at the end of a string properly. The UTF-8 decoder returned a
success code even though no code point was decoded which lead the rest
of the code to believe that the font atlas needed to be recreated.

This fixes #1754 by properly handling that case.

This also fixed an assertion failure if NanoVG was asked to render
2D elements without any vertices.
2018-07-25 14:17:06 +02:00
asarium a0e85e7ef5 Fix MSVC linking issue in new Discord Code
The CMake file did not contain the required target_link_libraries which
made the build fail when compiling it for the FastDebug configuration.
2018-07-25 13:31:33 +02:00
m!m 6939403262 Merge pull request #1808 from plieblang/MissionInfoParsing
Improve parsing of mission info text fields
2018-07-25 09:02:24 +02:00
Fabian Woltermann 33e8703555 Merge pull request #1788 from asarium/feature/discord
Add discord Rich Presence support
2018-07-25 08:21:23 +02:00
Fabian Woltermann 8a87d20415 Merge pull request #1801 from asarium/feature/shaderCacheLocation
Add CFile API for specifying the file location
2018-07-25 08:20:16 +02:00
Fabian Woltermann b324d2892c Merge pull request #1809 from EatThePath/master
Corrected faulty lifetime randomization for weapons in weapons.cpp
2018-07-25 08:16:46 +02:00
David Gibson 54bd7e3963 Corrected faulty lifetime randomization for weapons in weapons.cpp 2018-07-24 19:38:44 -05:00
plieblang b2230f723b Undo reformatting 2018-07-24 11:59:13 -07:00
m!m f75dafde4a Merge pull request #1746 from asarium/feature/objectDisplayString
Add ship display name feature
2018-07-24 15:49:11 +02:00
m!m d70f92e782 Merge pull request #1807 from asarium/fix/luaCallbackCrash
Fix crash on game shutdown if Lua object callbacks are used
2018-07-24 09:02:59 +02:00
plieblang d7e042b38a Dumb copy/paste mistake 2018-07-23 17:52:37 -07:00
plieblang 941a0c3c8a PR feedback and make methods static 2018-07-23 17:47:42 -07:00
plieblang edc6b94f7f Namespace resolution and size_type vs int mismatch 2018-07-23 13:38:34 -07:00
plieblang 1182a485ac Strip quotes from text and improve mission notes handling 2018-07-23 12:18:07 -07:00
asarium 3cd2c40331 Clear objects on game close 2018-07-23 19:21:16 +02:00
asarium c13cb44df4 Add ship display name feature
This adds a mission file option for ships which allows specifying a
different string which should be used for displaying the name of the
ship to the user. This name will not be used in SEXPs or other ship
lookup functions so it can be freely translated and two ships can also
have the same display name.

The new feature can be used by adding $Display name: <string> after $Name
for a ship in a mission file. I think I added proper support for FRED
(and qtFRED) so that this new value is properly saved but it would be
great if someone could test that.

This implements one of the features requested in #1730.
2018-07-22 23:16:00 +02:00
m!m aede65107b Merge pull request #1805 from asarium/feature/scriptingParsingApi
Add scripting API for accessing parsing system
2018-07-22 22:15:48 +02:00
asarium 197767ce94 Fix clang-tidy warnings 2018-07-22 11:47:33 +02:00
asarium 7924c66d37 Add function for listing files from CFile
This is basically a wrapper around cf_get_file_list which returns the
results in a table.
2018-07-22 11:47:33 +02:00
asarium 3106191cea Rename Mission_text to something better
The variable is now used by a lot of other things so it makes sense to
rename it to something that better describes what it is used for.
2018-07-22 11:47:33 +02:00
asarium 8c4ec9b91c Add scripting API for accessing parsing system
This allows scripts to use the same parsing functions which are also
used by the engine for parsing tables.
2018-07-22 11:47:33 +02:00
m!m 5bfcd1d063 Merge pull request #1804 from PeterMitsis/aicode-api-updates
Unused parameter removal from aicode.cpp module
2018-07-20 14:11:40 +02:00
Peter Mitsis 923265988c Fix warnings found by clang_tidy.sh
Signed-off-by: Peter Mitsis <[email protected]>
2018-07-19 19:24:23 -04:00
Peter Mitsis c485ed8199 aicode: Update maybe_cheat_fire_synaptic() API
Removes an unused parameter from the routine's API.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-19 13:09:35 -04:00
m!m 4353d4d47f Merge pull request #1803 from plieblang/MissionNoteSemicolonCrash
Write newline after mission notes
2018-07-19 17:06:11 +02:00
plieblang da65a66932 Semicolon fix for qtFRED as well 2018-07-18 13:57:29 -07:00
plieblang 7df8313b8b Force newline after mission notes 2018-07-18 13:33:27 -07:00
Peter Mitsis 187affe004 aicode: Update cheat_fire_synaptic() API
1. Removes unused parameter
2. Applies 'static' keyword to the routine.

Together, these two changes should help the compiler generate
more efficient code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:17 -04:00
Peter Mitsis f29cc2ef86 aicode: Update ai_ship_destroy() API
Removes unused parameters from the routine.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:17 -04:00
Peter Mitsis 97e15ca135 aicode: Update ai_ship_hit() API
Removes two unused parameters from ai_ship_hit(). Instances where this
routine are called are also updated.

This should result in slightly more efficient code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:17 -04:00
Peter Mitsis 868418c100 aicode: Update big_ship_collide_recover_start() API
Removes the unused parameter from the routine. This has a small
ripple effect such that it results in an unused parameter in one
of the routines from which it is called.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:17 -04:00
Peter Mitsis e413b10ce1 aicode: Update ai_control_info_check() API
1. Removes unused parameter
2. Applies the 'static' keyword to the routine.

Together, these two changes should help the compiler generate slightly
more efficient code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:17 -04:00
Peter Mitsis bdd740eabd aicode: Update ai_find_shockwave_ship() API
1. Removes unused parameter
2. Applies 'static' keyword to the routine

Together, these two changes should help the compiler generate slightly
more efficient code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:17 -04:00
Peter Mitsis d24e3c9295 aicode: Update ai_find_shockwave_weapon() API
1. Removes an unused parameter.
2. Applies the 'static' keyword to the routine.
3. Applies the 'const' keyword to the remaining parameter.

Together these changes should help the compiler generate slightly more
efficient code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 16:24:13 -04:00
Peter Mitsis 13be144495 aicode: Update ai_preprocess_ignore_objnum() API
Applies the 'static' keyword to the routine as it is only used in the
module in which it is defined.

Removes an unused parameter.

Together, these two changes should help the compiler generate slightly
more efficient code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:27:35 -04:00
Peter Mitsis 8857c4561a aicode: Update gwlr_object_1() API
Adds the 'static' keyword and removes unused parameters.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
Peter Mitsis af4a2555db aicode: Update get_behind_ship() API
Adds the 'static' keyword to the routine as it is only used in the
module in which it is defined.

Removes its  unused parameter (and updates location where it is called).

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
Peter Mitsis ae2c4ef098 aicode: Update ai_chase_eb() API
Removes the unused parameter from the routine and adds the 'static'
keyword to the routine as it is only used in the module in which it
is defined.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
Peter Mitsis 6e509868d2 aicode: Update ai_fire_secondary_weapon() API
Removes unused parameters from the routine.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
Peter Mitsis d0bc3cf91d aicode: Update ai_select_primary_weapon_OLD() API
This routine is only used in the module in which it is defined, so the
'static' keyword has been applied to it.

One of its three parameters was unused, so it has been removed.

Finally, the 'const' keyword has been applied to appropriate arguments.

These changes should help the compiler generate slightly more efficient
code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
Peter Mitsis 10079c88cd aicode: Remove fds_aux()
The routine fds_aux() is not used anywhere.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
Peter Mitsis 3aacb6cb42 aicode: Update ai_turn_towards_vector() API
The routine ai_turn_towards_vector() had an unused parameter (frametime)
and it has been removed.

Each of the instances where this routine is called have also been updated
to reflect the parameter removal. As this resulted in the routine
swarm_update_direction() suddenly having an unused parameter, that routine
and the places where it is called have also been updated (remove
unused parameter).

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-17 15:25:22 -04:00
asarium b434776d53 Fix clang-tidy issues 2018-07-17 17:20:55 +02:00
asarium 20925f23cc Use new cfile location feature for pilot files
This was previously hard-coded but it is now possible to solve this
using the new location API.
2018-07-17 17:20:55 +02:00
asarium 64a9e3d03a Use location API for specifying shader cache location
The files are now exclusively stored in the top level user directory to
make the shader cache not dependent on the current mod. This also adds
some code which removes all old shader cache files which may be stored
in the old (per-mod) location.
2018-07-17 17:20:55 +02:00
asarium fe01372f46 Add CFile API for specifying location
This adds the capability for specifying a bit field for certain API
functions which will limit where they search for files.
2018-07-17 17:20:55 +02:00
asarium 7134e22322 Convert cfile find_location functions to return structs
The amount of output parameters is becoming quite large which makes it
harder to add new input parameters. For that reason I converted the
existing output parameters to a struct which cleans up the function
signature a lot.
2018-07-17 17:20:55 +02:00
m!m fac618c7f0 Merge pull request #1800 from PeterMitsis/remove-unused-parameters
Remove unused parameters
2018-07-16 22:33:22 +02:00
Fabian Woltermann b333104f45 Merge pull request #1799 from NovachenFS2/strings-translation-fix
Strings.tbl translation adjustments AddOn
2018-07-16 22:28:25 +02:00
Jenna Trassa c0401c24e5 Ballistic Weapon Energy Gauge 2018-07-16 10:46:02 +02:00
asarium 2ded9aa35d Format changes with clang-format 2018-07-16 10:21:52 +02:00
asarium ad54f588bb Use strongly typed handles for sound handles
This is similar to the other changes I already posted. Here the sound
instance handles are converted to their own handle type which will make
it easier to use the sound API.
2018-07-16 10:21:52 +02:00
Peter Mitsis a64ebca805 aibig: Update ai_big_maybe_enter_strafe_mode() API
Removes the unused parameter from ai_big_maybe_enter_strafe_mode().
Each place where this routine is called has been corrected to reflect
the updated API.

The 'const' keyword has been applied to remaining parameters as
necessary.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-15 22:27:43 -04:00
Peter Mitsis 69781cec25 aibig: Update ai_big_strafe_maybe_attack_turret() API
Adds the 'const' keyword to the parameters in the routine
ai_big_strafe_maybe_attack_turret() as they are unchanged
by the routine.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-15 22:19:56 -04:00
Peter Mitsis 137457e570 aibig: Update ai_big_strafe_maybe_retreat() API
The routine ai_big_strafe_maybe_retreat() is only used in the module in
which it is defined. Consequently it now sports the 'static' keyword, and
no longer uses the 'extern' keyword in its forward declaration (which has
been moved to be colocated with other forward declarations).

Secondly, since it was only using one of its two parameters, the unused
parameter has been removed.

Thirdly, since its only remaining parameter is not modified by the routine,
the 'const' keyword has been applied to it.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-15 22:02:35 -04:00
Peter Mitsis b7f3ba3660 aibig: Remove routine ai_big_ship()
The routine ai_big_ship() is empty, and appears to have been since it
was initially added many years ago. Removing it helps eliminate some
unused code.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-15 21:44:49 -04:00
Peter Mitsis bf6cfe61d7 aibig: Update ai_big_maybe_fire_weapons() API
The routine ai_big_maybe_fire_weapons() is only used in the file in
which it is defined and is thus a good candidate for being declared
'static'.

Furthermore, as it was only using two of the five parameters, the
three unused parameters have been removed and all instances where the
routine is called have been updated.

Signed-off-by: Peter Mitsis <[email protected]>
2018-07-15 21:44:08 -04:00
m!m 990838051a Merge pull request #1137 from asarium/lua/defaultScripts2
Add a lua loader that uses the CFile system
2018-07-15 22:57:40 +02:00
m!m 597104c479 Merge pull request #1798 from asarium/fix/debrisObjectsAssert
Convert debris object count Assert to Error
2018-07-15 22:57:25 +02:00
asarium 2ee5d21a10 Add discord Rich Presence support
This uses the Discord Rich Presence API for improving the integration of
FSO into Discord. At the moment this includes state notifications for
being in the main hall, the command and mission briefing and in-mission.
When in-mission it also includes the elapsed time of the mission with
support for time compression.

The details part of the notification includes the campaign name and
mission name if possible.
2018-07-15 19:37:24 +02:00
asarium 8c1d3492eb Convert debris object count Assert to Error
This will make the error message clearer instead of just showing a
cryptic Assert message. This cannot be handled by a simple warning since
capping num_debris_objects to MAX_DEBRIS_OBJECTS would then cause issues
when reading the rest of the header.
2018-07-15 18:34:44 +02:00
asarium ba5fcb971a Format changes with clang-format 2018-07-15 18:10:40 +02:00
asarium 5359b12b4f Only run valgrind on debug builds
In release builds there are a lot of false-positives probably due to the
optimizations of the compiler.
2018-07-15 18:10:40 +02:00
asarium 0fb7345617 Fix clang-tidy issues in gtest
Some of those are fixed in the newest version from their git repository
but I don't want to do a full update just for that.

modernize-make-unique was disabled since clang-tidy apparently doesn't
respect the language setting and make_unique is only present in C++14.
2018-07-15 18:10:40 +02:00
asarium a34ca578ba Add a lua loader that uses the CFile system
This allows to use the built-in lua "require" function with our file
system. This will help organize complicated scripts and it will also
allow to use libraries which were designed for this system.

To enable this change, this includes a new mechanism which allows to
load scripts from the default file system so that the files don't need
to be included in every mod. The default files can be overridden by a
mod if a special mod-table option has been set, similar to how external
shaders are handled right now.
2018-07-15 18:10:40 +02:00
m!m 7f03ac31ae Merge pull request #1797 from asarium/fix/particleEffectHandles
Use type-safe handles for particle effects
2018-07-15 16:37:31 +02:00
Fabian Woltermann 25b396f6a0 Merge pull request #1795 from NovachenFS2/strings-translation
Strings.tbl translation adjustments
2018-07-15 15:35:21 +02:00
asarium c6e2f94d0b Use type-safe handles for particle effects
Nightmare discovered an off-by-one error when checking the validity of a
particle effect handle. Since the new ID system makes that much easier
and less error-prone I decided to go ahead and convert all handles to
an ID typedef which also fixes the reported bug.
2018-07-15 14:50:32 +02:00
Jenna Trassa 9de8d45f19 Review changes for barracks.cpp 2018-07-15 09:25:17 +02:00
m!m 7f5168e9d6 Merge pull request #1796 from asarium/fix/movieBufferOffset
Use byte offset into immediate buffer for movie rendering
2018-07-14 23:47:34 +02:00
Jenna Trassa 490c5d8357 Review Changes in the hud.cpp 2018-07-14 22:28:18 +02:00
Fabian Woltermann 011ca4bb85 Merge pull request #1772 from asarium/build/betterSourceGroupFunction
CMake: Unify how source files are added to CMake
2018-07-14 21:50:00 +02:00
Fabian Woltermann a4f499ce8c Merge pull request #1789 from asarium/fix/shipCleanupMode
Fix assert in ship_cleanup
2018-07-14 21:48:47 +02:00
asarium 5578588894 Use byte offset into immediate buffer for movie rendering
This was causing issues when using the new scripting API in JAD where
there were a lot of 2D operations which filled up the immediate mode
buffer. The reason was that GL_ARB_vertex_attrib_binding the relative
offset is limited and the movie code adds the immediate buffer offset to
the vertex layout which then hit the offset limit set by OpenGL.

This fixes that by using the normal byte offset method which is already
used by the render_primitives functions.
2018-07-14 20:57:29 +02:00
Jenna Trassa dbee42bdec strings.tbl translation adjustments
Previously untranslateable strings can now translated, because they got an unique ID in the strings.tbl.
2018-07-14 14:43:05 +02:00
Jenna Trassa 783e4b5ab2 strings.tbl translation adjustments
Another duplicate that now uses a unique ID.
2018-07-14 14:39:24 +02:00
Jenna Trassa cea27244dc strings.tbl translation adjustments
A duplicate string that had an unique ID even there was an ID for this string. This one uses the initial ID for this string.
2018-07-14 14:36:03 +02:00
Jenna Trassa 09084395a5 strings.tbl translation adjustments
This string, that is used for the Docking precedure of the Support ship was untranslateable before. Now there is a given ID for the strings.tbl
2018-07-14 14:34:26 +02:00
Jenna Trassa 886b14e595 strings.tbl translation adjustments
A previously untranslateable string got an unique ID, that is translateable through the strings.tbl
2018-07-14 14:32:10 +02:00
Jenna Trassa 2fca5fd965 strings.tbl translation adjustments
The strings that got no ID got one. Aswell the duplicate string uses the id that is already predefined.
2018-07-14 14:30:24 +02:00
Jenna Trassa 69cb4f0136 strings.tbl translation adjustments
The string is getting an ID from the strings.tbl that is translateable.
2018-07-14 14:27:56 +02:00
Jenna Trassa 76d36b1c5f strings.tbl translation adjustments
A fix so that the duplicate string is using the id for the first string.
2018-07-14 14:26:48 +02:00
Jenna Trassa bf37a36e89 strings.tbl translation adjustments 2018-07-14 14:18:52 +02:00
Fabian Woltermann 6750f0a4cc Merge pull request #1794 from asarium/feature/scriptingMovies
Add scripting API for displaying movie files
2018-07-14 09:14:15 +02:00
asarium 06a21a0f9b Add scripting API for displaying movie files
This adds an API for the scripting system which allows it to load and
display movie files using the standard movie player code which includes
multi-threaded frame decoding.
2018-07-13 21:54:41 +02:00
m!m 3d653bd770 Merge pull request #1793 from asarium/feature/rgbMovies
Add support for movies with RGB(A) pixel format
2018-07-13 21:50:12 +02:00
asarium db3d92732f Add support for movies with RGB(A) pixel format
This allows to directly display RGB(A) movies without transcoding them
to YUV first. This allows the movie player to support APNG files (which
are supported natively by FFmpeg) with an alpha channel and without
converting them to YUV first.
2018-07-13 19:28:53 +02:00
MageKing17 4fbc0d02fa Merge pull request #1792 from fjelliott/shockwaves-check-huge-supercap-flags
Shockwaves caused by weapons respect big ship flags while calculating damage
2018-07-12 20:25:40 -07:00
Frans Elliott c6f75e7d14 Moved SUPERCAP_DAMAGE_SCALE macro from weapons.cpp to weapon.h so it can be used in shiphit.cpp. 2018-07-12 19:56:44 -05:00
Frans Elliott 8f4d2a27db Added a mod_table option that can enable/disable whether weapon shockwaves will respect the huge and supercap ship flags. The option is disabled by default to mirror retail behavior. 2018-07-12 19:17:31 -05:00
Frans Elliott c4bb136d80 Shockwaves caused by weapons will no longer deal lethal damage to big ships if the weapon that caused the shockwave isn't flagged as being able to deal lethal damage to that ship. For example, helios warheads now cannot kill a Sathanas, and small missiles that cause shockwaves (such as the EMP Adv.) cannot be used to kill corvettes. 2018-07-12 18:17:28 -05:00
m!m ea2656e75f Merge pull request #1790 from MageKing17/bugfix/inverted-sound-validity-check
Fix inverted validity check in snd_time_remaining().
2018-07-11 17:27:38 +02:00
MageKing17 d70672d7bc Fix inverted validity check in snd_time_remaining().
Overlooked mistake from PR #1777.
2018-07-10 17:17:38 -07:00
m!m ccc727a148 Merge pull request #1631 from Karajorma/Feature/EternalVariables
Feature/eternal variables
2018-07-10 15:15:29 +02:00
asarium 87ac2ca6a3 CMake: Unify how source files are added to CMake
This unifies how our CMake system handles adding source files to the
project so that all subprojects use the same mechanism. This also makes
it easier to add a new source folder to the code project since you don't
need to editor three places at the same time anymore.
2018-07-10 15:13:18 +02:00
Karajorma e8bd6b3929 Looks like I missed one. 2018-07-10 18:07:42 +08:00
Karajorma 4e7756d29f Fix errors in clang-tidy 2018-07-10 17:02:47 +08:00
asarium fd96dd287d Fix assert in ship_cleanup
The Assert did no cover all possible input values which caused some
isues for me. This fixes that.
2018-07-10 10:58:31 +02:00
m!m dea5fd9f30 Merge pull request #1784 from MageKing17/bugfix/target-priority-parsing
Make parse_weapon_targeting_priorities() work when weapon missing.
2018-07-10 10:46:18 +02:00
MageKing17 5ebf48b9b0 Adjustment in response to feedback/CI warning.
Warning() replaced with error_display(0), and a line changed to get rid of a clang-tidy warning about repeated types.
2018-07-09 12:07:42 -07:00
MageKing17 2dc2c0643f Merge pull request #1786 from asarium/fix/luaShipClassesIndex
Fix bounds check and string->int conversion in lua ship classes API
2018-07-09 03:14:47 -07:00
asarium e761d8a8e9 Fix bounds check and string->int conversion in lua ship classes API
The bounds check was not correct for 1-based indices. I moved the
Lua->C++ index conversion before the bounds check so that it makes
more sense.
Also, atoi isn't a reliable way for converting a string to an integer.
2018-07-09 10:32:08 +02:00
MageKing17 36b97487c6 Merge pull request #1787 from asarium/fix/invalidCampaignFile
Don't make invalid data in campaign file fatal
2018-07-08 19:20:22 -07:00
asarium 367825b1e0 Don't make invalid data in campaign file fatal
The previous code simply set a boolean flag to indicate that the data is
"invalid" which failed the campaign loading operation. With these
changes, those entries will simply be skipped. That can happen if a mod
added or removed a ship or weapon class or if two campaigns share the
same campaign name.
2018-07-08 10:29:59 +02:00
MageKing17 8f5a364345 Make parse_weapon_targeting_priorities() work when weapon missing.
Previously, if parse_weapon_targeting_priorities() couldn't find a weapon matching the name, it wouldn't parse the "+Target Priority:" line, so it would cause a parsing error when the parser failed to find "$Name:" or "#End" there. Now, the "match not found" codepath still parses it so that no mismatch occurs. Also, I reordered the function so that the parsing wasn't happening in the middle of a loop through the list of weapon types, because it made me cringe.
2018-07-07 10:48:23 -07:00
Fabian Woltermann 07a15286b4 Merge pull request #1777 from asarium/feature/soundIds
Use strongly-typed handles for sound entries
2018-07-07 14:21:44 +02:00
m!m 8e4deb0454 Merge pull request #1783 from MageKing17/bugfix/scripting-createship-safety
Lua's createShip() function now checks for a valid ship class.
2018-07-07 10:50:35 +02:00
MageKing17 aed44067df Lua's createShip() function now checks for a valid ship class.
Ideally it wouldn't be an optional argument at all, but that would break backwards-compatibility, so instead it'll just return an invalid ship handle instead of calling ship_create() with a class of -1. In addition, the Assert from ship_create() meant to guard against invalid ship_type values is now an Assertion that actually says what the invalid value of ship_type was, to make future debugging easier.
2018-07-06 19:25:31 -07:00
MageKing17 83844222c4 Merge pull request #1780 from asarium/build/prebuiltRetry
Retry prebuilt library download if it fails
2018-07-06 10:14:14 -07:00
MageKing17 ba5233e33b Merge pull request #1782 from asarium/fix/removeQuitMissionPopupHack
Remove hack for On Frame scripting hook and quit mission popup
2018-07-06 10:13:58 -07:00
MageKing17 b0bb660eb2 Merge pull request #1781 from asarium/fix/luaBackgroundDoc
Fix inconsistency in Lua background API documenation
2018-07-06 10:13:15 -07:00
MageKing17 74f258a9b3 Merge pull request #1776 from The-E/cleanup/downgrade_null_vec3d
Downgrade null vec3d warning to a log print
2018-07-06 09:58:02 -07:00
asarium d7d3b8c8e2 Remove hack for On Frame scripting hook and quit mission popup
I added this hack a long time ago and it always bothered me why I didn't
come up with a better solution. This is the better solution which uses
the popup_active function for determining if gr_flip is called within a
popup.
2018-07-06 17:03:29 +02:00
asarium 90aeb3651c Fix inconsistency in Lua background API documenation
The Lua type for matrices is called orientation instead of matrix.
2018-07-06 16:06:25 +02:00
asarium 6ee7679dd6 Retry prebuilt library download if it fails
This has been a problem for nighty and release builds which should be
fixed by this.
2018-07-06 14:48:32 +02:00
Karajorma 5baae08bdf Fix the qtFRED output to match that from regular FRED 2018-07-06 11:10:08 +08:00
MageKing17 646fb64c2f Merge pull request #1778 from asarium/feature/scriptingCallbacks
Add more generic scripting callback system
2018-07-05 15:13:02 -07:00
MageKing17 7544f321d6 Merge pull request #1771 from asarium/feature/scriptingBackgroundSupport
Add scripting API for manipulating mission backgrounds
2018-07-05 15:12:50 -07:00
Karajorma b2ff79fb38 That variable was meant to have a better name. 2018-07-05 14:06:04 +08:00
Karajorma 94c1cf65b3 Let's try this again. 2018-07-05 12:34:39 +08:00
Karajorma 0ce2908ce6 Fix the issues from the review and also fix an issue with qtFred 2018-07-05 12:20:30 +08:00
Karajorma 32fbe572e4 Merge branch 'master' of https://github.com/scp-fs2open/fs2open.github.com into Feature/EternalVariables 2018-07-05 10:31:54 +08:00
Goober5000 fb0ff8f1d0 Merge pull request #1779 from MageKing17/bugfix/lua-ship-targetsubsystem
Stop accessing Ships[] array with an objnum.
2018-07-03 21:53:09 -04:00
MageKing17 2cef1d4aa1 Stop accessing Ships[] array with an objnum.
Lua's Ship.TargetSubsystem VIRTVAR, when set, would write to an attribute of the Ships[] array based on an objnum instead of a ship instance index. Since MAX_OBJECTS is drastically higher than MAX_SHIPS, then depending on how many objects happen to be in the mission, an out-of-bounds array access can be easily generated. This commit makes sure to use the objnum instead as an index to the Objects[] array, and then retrieve the ship instance from it.
2018-07-03 16:50:36 -07:00
asarium 9dfb8faea3 Use strongly-typed handles for sound entries
This converts the previous int handles to a strongly-typed wrapper
handle which will make the API more self-documenting and will ensure
that wrongly used handles are detected at compile time.

I already found a few mistakes with these changes which I also fixed
here.
2018-07-03 10:43:10 +02:00
asarium 9651e7dca6 Add more generic scripting callback system
The current scripting hook is pretty simple and straight forward but it
makes a couple of scripting applications harder to implement than
needed.

For example, a lot of scripts need to do some work every frame
for all or some objects. The script needs to manage an internal list of
all the objects that are affected by that list which includes removing
invalid objects to conserve resources. This effectively mirrors what the
engine already does and adds unnecessary overhead.

In these changes I added a generic event system which can be used by any
part of the code for providing callbacks when a specific event occurs.
As an example, I added hooks for the pre- and post-move events to the
object class which are called before and after physics are applied to an
object.

I integrated that feature into the scripting system so now a script can
simply register a function as a callback which will be called whenever
the target event is executed.
2018-07-02 22:56:45 +02:00
Fabian Woltermann 51557d3aa3 remove extra braces 2018-07-01 09:00:36 +02:00
Fabian Woltermann 521a9b9461 Downgrade the null vec3d in vec3d normalize warning to a log print 2018-07-01 08:59:27 +02:00
m!m 130057c64a Merge pull request #1773 from asarium/fix/variableDlgInvalidName
Validate variable name when adding new variable
2018-07-01 00:45:31 +02:00
asarium f63e18957b Add scripting API for manipulating mission background
This adds a scripting API which can be used for adding and removing
background from a mission similarly to the existing SEXPs but with full
support for floating point numbers.

This was requested by Axem on Discord.
2018-06-30 23:22:07 +02:00
m!m df0be20d22 Merge pull request #1774 from The-E/cleanup/remove_path_warning
Remove "not enough points in path" warning
2018-06-30 23:20:22 +02:00
Fabian Woltermann cee37e7a2f Change this warning to a log print. This is only an issue when it's an issue, and most of the time it's not 2018-06-30 21:35:04 +02:00
asarium 90e16ffed2 Validate variable name when adding new variable
This is present in the variable modification dialog but not in the
editor which is used for adding a variable. This also adds the
validation to the editor for adding a new variable.
2018-06-30 17:42:20 +02:00
Fabian Woltermann c2a52174ba Merge pull request #1760 from asarium/build/gcc8Fixes
Fix GCC8 and FFmpeg warnings
2018-06-30 07:22:22 +02:00
Fabian Woltermann e389f7669d Merge pull request #1768 from asarium/feature/alwaysCacheBitmaps
Enable cache bitmaps by default and remove option
2018-06-30 07:20:56 +02:00
Fabian Woltermann 20681f1550 Merge pull request #1769 from TRBlount/feature/RNGSub
Add $Failure Rate:
2018-06-30 07:20:20 +02:00
TRBlount be8ea029da Resolve feedback 2018-06-29 11:19:56 -06:00
asarium 3dbcebb56e Enable cache bitmaps by default and remove option
Caching bitmaps between missions is no longer a problem for modern
system and this will improve the default load times when playing more
than one mission.
2018-06-29 12:15:21 +02:00
TRBlount 37453ae229 Add Failure Rate 2018-06-28 10:38:37 -06:00
m!m 9d907c99fe Merge pull request #1767 from MageKing17/feature/actual-weapon-range
Add AI profile flag to allow primary weapons to consider range.
2018-06-28 11:08:27 +02:00
MageKing17 490ef52b85 Add AI profile flag to allow primary weapons to consider range.
By enabling the "$Use Actual Primary Range:" profile flag (which can also be set on a per-AI-class basis), the code to determine if the AI should fire its primary weapons will not only perform its current "range based on speed of weapon and target" calculation, but it will also compute the weapon's actual range and not fire if the target is outside of it.
2018-06-27 23:11:40 -07:00
MageKing17 cf1cc5e862 Merge pull request #1765 from MageKing17/bugfix/primary-nolink-out-of-ammo
Nolink ballistic primaries no longer disallow linking when depleted.
2018-06-27 19:56:31 -07:00
m!m fc0105141b Merge pull request #1766 from asarium/fix/deferredSpecStatic
Apply spec_* values to lights in deferred pass
2018-06-27 23:27:57 +02:00
asarium 9878b48dd3 Apply spec_* values to lights in deferred pass
This was not present previously which meant that the command line values
were simply ignored by the engine. This adds the scaling back in which
should restore the lighting behavior to the previous status.
2018-06-27 19:39:14 +02:00
Fabian Woltermann af99fee8fc Merge pull request #1762 from asarium/feature/shaderCachePurge
Purge old shader cache files from file system
2018-06-27 19:13:25 +02:00
MageKing17 1cc09d5b8b Merge pull request #1764 from asarium/fix/emptyGameSoundPitch
Make sure that sound pitch range is initialized properly
2018-06-27 09:39:55 -07:00
MageKing17 d5c5cc6eb3 Nolink ballistic primaries no longer disallow linking when depleted.
When a ship with three primary banks has a Nolink weapon in one bank, the other two banks are still allowed to link; if that Nolink weapon has a limited ammo supply, however, depleting that ammo supply would disallow primary linking even though the weapon never contributed to primary linking in the first place. This commit changes the logic to only care if the depleted weapon doesn't have the Nolink flag. The ideal solution is probably to change how primary linking works so that even if the weapon doesn't have the Nolink flag the remaining primaries can still link, but that would be much more involved.
2018-06-27 09:04:14 -07:00
asarium b5bb5097b9 Make sure that sound pitch range is initialized properly
If a sound did not receive a valid sound name then the parsing function
would exit early and not set the pitch range properly. This would cause
a divide by zero if the duration of the sound was queried.

This moves the initialization of the pitch range to the start of the
parsing functions which makes sure that the range is initialized even if
the function exits early.
2018-06-27 17:23:13 +02:00
asarium f87e5bf318 Fix new warnings reported by GCC8
This also enabled GCC8 in Travis CI so that no new warnings are
introduced in other commits.
2018-06-26 11:51:08 +02:00
asarium 48667f0cbd Fix FFmpeg deprecation warnings 2018-06-24 23:07:00 +02:00
asarium 66637ef5cb Purge old shader cache files from file system
This automatically removes old shader cache files from the mod directory
when FSO is started. Those old files are likely to not be used anymore
so this will reduce the amount of disk space FSO uses for the shader
cache.
2018-06-24 22:21:33 +02:00
MageKing17 3b2b58e2cc Merge pull request #1757 from asarium/opengl/betterShaderCache
Improve handling of the shader cache
2018-06-23 21:51:07 -07:00
asarium d5282ca697 Improve handling of the shader cache
This adds an identification of the OpenGL implementation to the shader
content hash to avoid issues when using the same FSO install with
multiple graphics drivers.

Also adds support for querying the supported binary formats and
gracefully handling missing support for the format of a stored shader.
This can be useful when downgrading the version of a graphics driver
since the older version may not support the binary format yet.
2018-06-23 23:19:13 +02:00
m!m 6a099d2adc Merge pull request #1761 from asarium/fix/tgaLocking
Fix loading of TGA files with unexpected bit depths
2018-06-23 17:42:14 +02:00
Fabian Woltermann 6aa1f4899f Merge pull request #1756 from asarium/fix/modelClippingFlicker
Discard submodels by generating clipped vertices
2018-06-23 11:19:53 +02:00
asarium 4ec7d21965 Fix loading of TGA files with unexpected bit depths
The TGA loading code pretends that it does pixel conversion but doesn't
actually do that. This changes ensures that this circumstance is
communicated to the caller of bm_lock which will allow that code to
handle the case properly.

This was reported by Bomb3rman on discord.
2018-06-23 10:24:17 +02:00
MageKing17 bd5a4c4348 Merge pull request #1759 from Goober5000/cap_waypoint_speed_documentation
clarify documentation in cap-waypoint-speed
2018-06-21 18:13:00 -07:00
Goober5000 9135a01b1d clarify documentation in cap-waypoint-speed
The cap-waypoint-speed sexp only works for speeds above 0; this PR changes the documentation to clarify that.  I also tweaked an if() block in ship_return_time_to_goal because it used a >=0 comparison whereas every other comparison used >0.  (This is only for consistency, because the >0 check is used before this point would be reached.)
2018-06-21 17:04:02 -04:00
Fabian Woltermann 032579923e Merge pull request #1755 from asarium/fix/fullLogPathInLog
Write full log path and add legacy mode reason to log file
2018-06-18 08:08:36 +02:00
asarium 8c1e753991 Add log output for legacy mode reason
This will make debugging config location issues easier since the log
will state which path os_is_legacy_mode took while determining the
legacy mode status.
2018-06-17 20:51:11 +02:00
asarium 6a4c74084e Discard submodels by generating clipped vertices
This removes the clipping plane submodel removal code and replaces it
with shader code that generates vertices outside the clipping volume if
a model should not be rendered. This even improved performance since
clipping no longer needs to be active for all model rendering
operations.

This should finally fix #1579.
2018-06-17 14:27:19 +02:00
asarium 3799ce7d2f Write full log path to log file
This should make it a bit easier to determine if FSO is using the new
config file or the old one from only a log file.
2018-06-17 12:56:42 +02:00
m!m 2e213d5c97 Merge pull request #1659 from The-E/fix/1653
Delete all objects on mission end (Fix for #1653)
2018-06-17 12:14:22 +02:00
m!m 0c17177a1e Merge pull request #1713 from asarium/qtfred2_/goalsDialog
Port goal editor dialog code to qtFRED
2018-06-17 12:14:04 +02:00
m!m 93ced64c6f Merge pull request #1725 from asarium/opengl/thickModelOutlines
Render hardpoint model outlines using geometry shaders
2018-06-17 12:13:44 +02:00
m!m 4020b7c594 Merge pull request #1723 from asarium/feature/intelligentLegacyMode
Enable legacy config mode if legacy config is newer
2018-06-17 12:03:40 +02:00
m!m 13b26fd59f Merge pull request #1735 from asarium/cleanup/2dCallDereferences
Remove unnecessary function pointer dereferences in gr API
2018-06-15 12:03:14 +02:00
Goober5000 15bda8c4ac Merge pull request #1748 from asarium/build/unreachable
Add macro for marking unreachable code
2018-06-11 00:31:15 -04:00
asarium 39ab45dc7c Add macro for marking unreachable code
This can be used for mark parts of the code which should be unreachable
in normal execution. In debug mode, if such a statement is reached an
Error dialog is shown which aborts the execution. In release mode the
macro is replaced with a compiler specific expression that lets the
compiler know that this part is unreachable which allows it to optimize
the code better.
2018-06-09 17:38:17 +02:00
Fabian Woltermann 16a19783ae Merge pull request #1744 from asarium/fix/openAlGetErrorError
Fix OpenAL errors when sound is disabled
2018-06-09 08:41:15 +02:00
Goober5000 b1bc4ef44f Merge pull request #1743 from asarium/fix/1739
Respect trailing white space in tstrings.tbl strings
2018-06-08 21:14:33 -04:00
Goober5000 08e664a93a Merge pull request #1749 from asarium/feature/movieSrtSubtitles
Add support for external subtitle files
2018-06-08 20:55:42 -04:00
asarium aeee05c8dd Add support for external subtitle files
This allows to use external subtile files (currently only SRT is
configured) for providing subtitles for movie files. This should be more
universal since it also supports container formats with no support for
subtitle streams.

To use this code the srt file needs to be named
"<movie name>-<language code>.srt" where the language code is the file
extension name specified in the localization table. For english the
"-..." part can be omitted.
2018-06-08 23:29:15 +02:00
asarium 1fb3a65a90 Fix function brace wrapping in clang-format config 2018-06-08 23:28:54 +02:00
Goober5000 d53dc195ee Merge pull request #1742 from asarium/fix/1741
Enable log output for qtFRED
2018-06-08 15:21:14 -04:00
m!m 5b8880daa7 Merge pull request #1737 from Goober5000/fix_issue_1601
Change Warning about missing 640x480 interface art to a log statement
2018-06-08 19:42:41 +02:00
Goober5000 b0fc9cb31a address code review 2018-06-07 22:18:10 -04:00
m!m 323354295f Merge pull request #1751 from plieblang/PsnetTypoFix
Fix rsequence being reset twice and ssequence not being reset at all
2018-06-07 23:24:38 +02:00
plieblang b1881a700d Fix copy/paste error when closing socket 2018-06-07 12:12:54 -07:00
asarium 357cd76252 Render hardpoint model outlines using geometry shaders
This adds support for rendering models using thick lines (that means
lines wider than 1 pixel) which is required by the hardpoint HUD gauge.
This feature was present before the switch to OpenGL code and had to be
removed since the core profile does not support rendering lines wider
than 1 pixel.

This uses a geometry shader for converting all the triangles from a
model to 3 quads along the triangle lines which are as thick as set by
the model renderer. Geometry shaders are quite slow if they generate a
lot of geometry (and this generates 4 times the usual amount of geometry
in the shader) so it's probably not a very fast rendering operation but
it is only needed once per frame so it shouldn't be too bad.

I also added support for the RenderDoc API since I needed that for
debugging and it might be useful in the future. It will only become
active if RenderDoc is actually attached to the process so in most cases
the new code will do nothing.
2018-06-07 16:44:41 +02:00
Fabian Woltermann 30e70db561 Merge pull request #1750 from asarium/build/clang-format-config
Add initial clang-format config file
2018-06-07 13:40:14 +02:00
Goober5000 2c106f8c4b Merge pull request #1747 from ngld/pr/convertSexpInt3
Converted all Int3() calls in sexp.cpp into Warnings, Errors and Asserts
2018-06-06 22:59:50 -04:00
asarium 73bfb7a97e Add initial clang-format config file
This is largely based on how the existing code is formatted and is in no
way enforced by CI or anything else. This is only so that we actually
have a clang format file in the VCS since it's very useful.
2018-06-06 23:04:08 +02:00
ngld 4bead819f9 Implemented requested changes from code review 2018-06-06 03:35:13 +02:00
Goober5000 268828f092 Merge pull request #1736 from asarium/fix/translationBugs
Implement various translation features requested by Novachen
2018-06-05 21:28:14 -04:00
ngld 1614384a6a Converted all Int3() calls in sexp.cpp into Warnings, Errors and Asserts. 2018-06-06 02:20:52 +02:00
asarium 29b6af84cc Fix OpenAL errors when sound is disabled
Since there is no OpenAL context if sound is disabled there were errors
when calling alGetError on a non-existant context. This fixes that by
aborting the sound API call when the sound system wasn't initialized.
2018-06-05 12:31:37 +02:00
asarium cafee143c4 Respect trailing white space in tstrings.tbl strings
The current code drops trailing white space which can cause issues if
the translated string is used in concatenations. The retail tstrings.tbl
has some entries with white space at the end but since those strings are
not used for concatenations (or else this issue would have been found
earlier) this change should not cause issues there.

This fixes #1739.
2018-06-05 11:17:00 +02:00
asarium 6e21c8a736 Enable log output for qtFRED
This fixes #1741.
2018-06-05 11:09:31 +02:00
asarium bb56958dfc Fix various issues in the medal_stuff class
The assignment operator and copy constructors could be replaced with
their default implementations. The destrutor was also not needed since
it only executed the same action the default constructor would have
done.
2018-06-04 11:56:45 +02:00
asarium 120750ebd2 Adress code review feedback 2018-06-04 11:56:45 +02:00
asarium 3430a1c438 Disable hard-coded "cluster bomb" hack
This disables the old hack code if the weapon class has an alternate
name which may have been translated. See #1730 for more information.
2018-06-04 11:56:45 +02:00
asarium 1dc2e848cd Add option for disabling built-in translations 2018-06-04 11:56:45 +02:00
asarium 305429bf8b Add alternative display name for medals
This will only be used in the GUI which will allow translating the name
without having to change missions which use the name of the medal in
SEXPs.
2018-06-04 11:56:44 +02:00
asarium ae149b6061 Add convencience function for retrieving weapon alt name
I also fixed a few issues where the internal char array was used as a
mutable string which changed the string after it was parsed which is not
good(TM).

This also replaces all user-facing occurences of usages of name to use
the new function so that the correct, possibly translated, name is displayed
to the user.
2018-06-04 11:56:44 +02:00
Goober5000 429858d02e fix GitHub issue #1601
This turns the Warning about missing 640 interface art into a log print.  This applies to all instances of 640/1024: loading screens, cbrief and briefing backgrounds, and ship/weapon selection backgrounds.
2018-06-02 17:39:38 -04:00
asarium 1448277c29 Enable legacy config mode if legacy config is newer
There were some reports that using a newer launcher together with an
outdated launcher was causing some issues since the new launcher would
write the new config file which would cause FSO to ignore the changes of
the old launcher since the new config file already exists.

This fixes that by adding a check for when the config locations were
last modified. On Linux and Mac it checks when the old config locations
were modified last while on Windows it checks the registry to determine
if there was a change after the new config file was created.
2018-06-02 12:09:21 +02:00
Fabian Woltermann b848823a2f Merge pull request #1670 from asarium/feature/bitmapBlocks
Add new bmpman slot management system
2018-06-02 12:08:22 +02:00
Fabian Woltermann 61c533559b Removes an assert in object.cpp that was commented out and sets the number of retail stars to 0 when resetting the background in the lab 2018-06-02 11:58:01 +02:00
Goober5000 04b0f5bb75 Merge pull request #1721 from asarium/fix/unicodeScramble
Fix scrambling unicode messages
2018-06-01 17:24:04 -04:00
Goober5000 fdbba84a5b Merge pull request #1733 from Goober5000/fix_issue_1708
fix issue #1708
2018-05-31 15:52:46 -04:00
asarium e92121bed4 Remove unnecessary function pointer dereferences in gr API
Multiple function pointer dereferences are valid in C but do not change
the result of the operation. The graphics API had some function
definitions which used multiple pointer dereferences while the rest of
the functions did not.

This changes all occurences of the double dereferences to normal GR_CALL
declarations to keep the style in the API definitions consistent.
2018-05-31 15:07:20 +02:00
asarium 079ad97987 Fix clang-tidy issues in Assertion macro 2018-05-30 10:00:42 +02:00
asarium 7ae276fe6a Fix scrambling unicode messages
The code did not account for unicode escape sequences when inserting
scrambling characters which distorted the text and fequently caused
invalid UTF-8 sequences to appear in the text. This fixes that by
using the text iterators already present in the game code. I needed to
rewrite the logic of this block a bit since the previous logic could not
be converted to the way we need to handle unicode sequences at the
moment.

This fixes #1720.
2018-05-30 10:00:42 +02:00
Goober5000 45ddc8ac44 Merge pull request #1729 from chief1983/lib/sdl208
lib/sdl208: Upgrade the included SDL libs to 2.0.8.
2018-05-29 18:57:48 -04:00
Goober5000 6fa422c5e7 fix issue #1708 2018-05-29 17:04:31 -04:00
Cliff Gordon 35c830062d lib/sdl208: Upgrade the included SDL libs to 2.0.8. 2018-05-29 08:39:28 -05:00
Goober5000 243a5bb473 Merge pull request #1702 from Goober5000/minor_sexp_subsystem_cleanup
minor sexp subsystem cleanup
2018-05-29 00:21:29 -04:00
asarium 09abbe1789 Add new bmpman slot management system
This changes how the bitmap slots are managed by the bmpman system.
Instead of allocating a fixed-size array when the game starts this will
manage multiple "blocks" of bitmap slots. When the engine runs out of
slots in the already allocated blocks it simply creates a new block and
allocates the new slot in that.

This removed the hard limit on how many bitmaps can be loaded at the
same time and should fix issues encountered by mods which use a lot of
bitmap slots (I'm looking at you Spoon).

This implements the idea described in #1503.
2018-05-28 09:51:15 +02:00
asarium ad52278a67 Fix clang-tidy issues in Assertion macro 2018-05-28 09:51:15 +02:00
m!m e0a9c88241 Merge pull request #1716 from asarium/build/clang-tidy-diff
Use clang-tidy-diff to only check changed lines
2018-05-27 18:00:25 +02:00
m!m f45dcfc09a Merge pull request #1732 from asarium/fix/appveyorQt
Fix Appveyor Qt build issue
2018-05-26 16:54:23 +02:00
asarium 2036ebd3a0 Fix Appveyor Qt build issue
Apparently, Appveyor has removed the Qt version 5.7 from their servers
which was used by FSO previously. I have updated the paths to use Qt
5.9.5 instead now but there is a problem with Visual Studio 2013 since
there is no 32-bit Qt version for that compiler installed in the
Appveyor system.

For that reason, I decided to use Visual Studio 2015 instead for the
32-bit builds which means that Visual Studio 2013 will not be tested by
Appveyor anymore. Since no one is using that compiler version anymore
that shouldn't be a big issue.

This should fix the CI issues seen on recent PRs and commits.
2018-05-26 14:05:30 +02:00
m!m 469270d4b6 Merge pull request #1701 from Goober5000/is_in_turret_fov
is-in-turret-fov sexp
2018-05-17 19:34:49 +02:00
m!m e59df5d83c Merge pull request #1726 from Goober5000/sexp_bitwise_tweak
make the set-bit and is-bit-set operators fail gracefully
2018-05-17 19:31:22 +02:00
Goober5000 880e03e5d1 requested changes from code review 2018-05-15 22:04:20 -04:00
Goober5000 c1196f8286 requested changes from code review 2018-05-15 21:56:39 -04:00
Goober5000 40cd9e4c07 make the set-bit and is-bit-set operators fail gracefully
These operators used to warn and return NAN if they were given a bit index out of range.  For FREDding convenience, out-of-range bit indexes are now a no-op.  This is particularly helpful in the situation where a FREDder needs to evaluate an extended bit array, one 32-bit chunk at a time, e.g.

0-31 bits: offset 0
32-63 bits: offset -32
64-95 bits: offset -64
96-127 bits: offset -96

Because the sexp system always evaluates every argument, three out of four branches were always evaluated with invalid bit indexes (negative or too large) even if the sexp logic only used one branch.  The new method silently bypasses this behavior.
2018-05-07 18:44:58 -04:00
MageKing17 a90e480b61 Merge pull request #1724 from asarium/fix/showShipViewerMode
Fix "show-ship" flag
2018-05-05 11:35:27 -07:00
asarium 142ae846f4 Fix "show-ship" flag
The viewer mode check seemed to be wrong but I am not entirely sure if I
fixed this correctly. The Viewer_mode variable is a big mess of bitflags
that are not very consistent in what they mean.
2018-05-05 12:25:44 +02:00
asarium 7a827dcb0e Enable all modernize tests by default
This will report the usage of old coding patterns in new code.
modernize-raw-string-literal is disabled since it doesn't work right
with strings with special escape sequences in them.
modernize-use-using is disabled since typedefs are more common in the
FSO code.
2018-05-04 10:03:22 +02:00
asarium 619cb607d0 Use clang-tidy-diff to only check changed lines
This will only check the lines that were changed by a commit or pull
request. This makes it possible to enable more clang-tidy checks without
having to fix all occurences of the warnings in the code base.

Please note that the changes do not work correctly with rebased branches
due to the way Travis CI supplies the commit range. Pull requests will
always be checked properly though.
2018-05-02 12:26:05 +02:00
m!m 56c34eee6d Merge pull request #1685 from asarium/build/clang-tidy-2
Enable and fix more clang-tidy warnings
2018-05-01 19:35:46 +02:00
Fabian Woltermann 379031534d Merge pull request #1718 from asarium/fix/1717
Fix fog rendering in forward renderer
2018-04-29 18:49:04 +02:00
asarium 64b08f51c0 Fix fog rendering in forward renderer
There were actually two bugs here that were fixed:
1. The model draw list code disabled the fog rendering when it thought
it was it deferred rendering mode but did not account for explicitly
disabling the deferred renderer.
2. The fog effect was applied to both the emissive color and the base
color simultaneously which caused visual errors when rendering fogged
objects using the deferred renderer.

This fixes #1717.
2018-04-28 13:53:09 +02:00
asarium adfa12a706 Disable clang-tidy in release mode
The unused parameter warning cannot be disabled easily in release mode
for clang-tidy so this needs to be done to avoid false-positived in
release mode.
2018-04-25 11:57:56 +02:00
asarium d71a589b0f Use CMake 3.8 to make sure clang-tidy warnings fail the build
Previous versions do not support failing the build if warnings should be
treated as errors.
2018-04-25 11:57:56 +02:00
asarium 5118d94d5d Update header filter regex in .clang-tidy 2018-04-25 11:57:56 +02:00
asarium 17179d5b0b Fix unreferenced local variable warning 2018-04-25 11:57:55 +02:00
asarium bd3632d1bf Enable remaining misc- checks and fix detected issues 2018-04-25 11:57:55 +02:00
asarium eeed22b91a Enable misc-unused-parameters
clang-tidy was used for fixing the warnings. It is not clear if this is
actually an improvement so this may still be disabled later.
2018-04-25 11:57:55 +02:00
asarium 48873185ce Another batch of misc- checks 2018-04-25 11:13:20 +02:00
asarium e28ebc2a6c Enable and fix misc-suspicious-string-compare check 2018-04-25 11:13:19 +02:00
asarium dcac9e7223 Enable more misc- checks 2018-04-25 11:12:41 +02:00
asarium 0b4ca71eba Enable modernize-deprecated-headers 2018-04-25 11:12:41 +02:00
asarium 24c3c439d5 Test clang-tidy issues in test code 2018-04-25 11:12:41 +02:00
m!m 706973cb6b Merge pull request #1672 from asarium/feature/typesafeIDs
Add typesafe handle types and use it in game sound system
2018-04-25 10:36:46 +02:00
Fabian Woltermann 91a5bfa74a Merge pull request #1707 from asarium/feature/persistentParticles
Improve handling of non-persistent particles
2018-04-25 10:14:39 +02:00
asarium 7e399681cd Enable qtFRED for all deployments
This enabled qtFRED building for all deployments (releases, nightlies
and test builds). qtFRED is relatively stable now and should be
available for wider testing which may be provided by nightly builds.

This also adds AppImage support fot qtFRED although I still couldn't get
it to work entirely since there is some sort of libpng issue which
prevents icons from showing up correctly.
2018-04-24 14:57:52 +02:00
asarium f7b0f93c00 Port goal editor dialog code to qtFRED
The sexp_tree widget makes the model based dialog a bit ugly here since
it is required for some model operations even though it is a UI
component. In the future it could be split into a model component and an
UI component to allow better separation between model and UI.
2018-04-22 21:43:01 +02:00
m!m 2721c452c4 Merge pull request #1680 from asarium/qtfred2_/eventDialog
Port event editor dialog code to qtFRED
2018-04-22 21:39:57 +02:00
m!m 1030e29ef7 Merge pull request #1703 from asarium/qtfred2_/missionSave
Port mission save code to qtFRED
2018-04-22 17:40:48 +02:00
asarium 8f06e338a4 Add typesafe handle types and use it in game sound system
This adds a new class which allows to create type safe resource handle
types. At the moment, the engine uses ints pretty much everywhere for
providing handles to resources created by the specific subsystems. Since
all ints are the same to the C/C++ typesystem it is perfectly legal to
pass a sound handle to the graphics API as a buffer handle which will
obviously cause issues.

This adds a new type called "ID" which is a wrapper class for a generic
handle but with added type safety. An instance of this class cannot be
passed to a function expecting another type of handle which provided
compile-time type safety for these APIs.

As an initial test I converted the game sound handles to this new type.
I already found a bug in the mainhall system thanks to this new type.
The mainhall used the game sound handles as sound instance handles which
probably meant that that specific code never really worked right. I
removed the code since there was no better alternative for fixing it.
2018-04-22 16:22:45 +02:00
asarium d1a6b48beb Improve handling of non-persistent particles
The current particle system uses dynamic allocation of particle
instances for keeping track of particle instances. This adds unnecessary
overhead in case the code does not need a handle to this particle which
is the case in pretty much all instances.

The new non-persistent particles are stored in a standard vector without
dynamic allocation which should make the processing steps using this
vector much faster and allow better scalability in case more particles
are used by a mission.
2018-04-22 16:22:28 +02:00
asarium ce8fc0a373 Try to close the window on Esc key presses
This will allow the user to cancel the operation or save their changes
instead of discarding them without question.
2018-04-22 16:21:55 +02:00
asarium 991f131376 Fix Clang warnings 2018-04-22 16:21:55 +02:00
asarium ed7917cb26 Port event handling part of Event editor code 2018-04-22 16:21:55 +02:00
asarium e6e6288423 Replace interface functions with qt signals 2018-04-22 16:21:55 +02:00
asarium 48a6361586 Port message handling code of event editor dialog 2018-04-22 16:21:55 +02:00
asarium 8a2faa8b99 Port mission save code to qtFRED
This is pretty much an exact copy of the mission save code of FRED2. I
removed the campaign save code for now since it requires some
interactions with the campaign editor which does not exist yet.
2018-04-22 16:21:41 +02:00
m!m 7d139f9e80 Merge pull request #1667 from asarium/build/teaci
Add TeaCI config file and fix MinGW warnings
2018-04-22 11:23:18 +02:00
m!m cf93aa43c5 Merge pull request #1709 from jg18/qtfred2_/shieldSystemDialog
Finish shield system editor dialog in qtFRED
2018-04-21 23:24:08 +02:00
asarium 89e3533106 Add TeaCI config file
TeaCI is a CI service which provides MinGW CI builds (in Docker
containers so no "real" Windows machines). This would be useful for
validating the Windows only code with additional GCC warnings. It would
also make sure that the MinGW setup we currently have continues to work.
2018-04-21 23:01:19 +02:00
m!m a3f9febdc4 Merge pull request #1668 from asarium/build/minGWFixes
Fix various issues detected by MinGW
2018-04-21 22:59:54 +02:00
jg18 3c738312de make corrections to shield system dialog based on feedback 2018-04-21 12:52:01 -07:00
jg18 363d6d3ba0 finish shield system editor dialog in qtFRED 2018-04-21 12:52:01 -07:00
niffiwan 5578825bf3 Merge pull request #1662 from asarium/fix/luaWaypointAPI
Fix Assert in Lua API when passing invalid name to mn.WaypointList
2018-04-21 23:31:51 +10:00
asarium 9b5710e8c3 Fix various issues detected by MinGW
This fixes various issues I found while trying to compile FSO in a cross
compilation setup using MinGW. This is a prerequisite for merging Tea-CI
support.
2018-04-21 15:13:25 +02:00
m!m b527dd5449 Merge pull request #1665 from asarium/fix/1664
Validate number of parsed briefing stages and icons
2018-04-21 12:47:26 +02:00
m!m 175668e2bb Merge pull request #1700 from asarium/qtfred2_/fixWindowsError
Fix Windows deployment issue
2018-04-21 12:45:55 +02:00
m!m cbf3052094 Merge pull request #1673 from asarium/build/ciFRED
Reenable FRED building for Appveyor
2018-04-21 12:45:34 +02:00
m!m 3507cf96d1 Merge pull request #1711 from asarium/fix/fredStaticInitializer
Fix crash on FRED startup in debug mode
2018-04-20 21:05:10 +02:00
asarium e624f6c1a8 Fix crash on FRED startup in debug mode
The crash was caused by a static initialization order problem where the
static initializer of the FRED app was called before the initializer of
the outwnd filter vector.

This fixes that by initializing the vector as soon as necessary through
the use of a function with a static variable.
2018-04-20 19:52:57 +02:00
asarium 371aad8f8c Fix warnings in FRED code 2018-04-20 14:46:21 +02:00
asarium cb3fd31db4 Reenable FRED building for Appveyor
Apparently this was also disabled accidentally when qtFRED was merged
into master.
2018-04-20 14:46:21 +02:00
niffiwan e2e7eac0c6 Merge pull request #1705 from asarium/qtfred2_/updatedReadme
Update qtFRED readme and add some documentation
2018-04-18 20:46:01 +10:00
asarium 80faaf88b0 Update qtFRED readme and add some documentation
This fixes #1696.
2018-04-18 11:41:29 +02:00
Goober5000 fb0f7dd7de minor sexp subsystem cleanup
Synchronize the two subsystem-of-ship checks in sexp.cpp and sexp_tree.cpp.  Mostly this is just adding OP_BEAM_FLOATING_FIRE to sexp_tree.cpp because whoever added that sexp forgot to add it there.
2018-04-15 18:49:37 -04:00
Goober5000 62aae9d793 add optional argument for distance/range 2018-04-15 18:24:58 -04:00
Goober5000 15663a3551 add is-in-turret-fov sexp
Returns true if the ship is in a turret's FOV, false otherwise.  Requested by JSRNerdo.  Uses the object_in_turret_fov internal function which is the same one used by the turret code when it checks whether it can fire.
2018-04-15 17:59:04 -04:00
m!m 6df837e7f3 Merge pull request #1686 from PeterMitsis/experiment
Minor clean up
2018-04-15 23:06:38 +02:00
asarium 512d08e443 Fix Windows deployment issue
The CMake code did not specify that qwindows.cll also needed to be
distributed with the application which caused errors for users who had
not installed Qt on their system.

This should make qtFRED redistributable without needing a QT
installation.
2018-04-15 19:35:06 +02:00
Peter Mitsis 504abeb305 ship: Remove unused routine ship_select_next_valid_secondary_bank()
Signed-off-by: Peter Mitsis <[email protected]>
2018-04-15 12:58:05 -04:00
Peter Mitsis 2ae2f2910c asteroid: Remove unused routine hud_target_asteroid()
Signed-off-by: Peter Mitsis <[email protected]>
2018-04-15 10:51:50 -04:00
Peter Mitsis 3b4fbde8e6 collide: Apply static keyword to applicable routines
Applying the 'static' keyword to applicable routines both informs the
developer where the routine is likely to be used as well as allows the
compiler to perform additional optimizations.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:04 -04:00
Peter Mitsis 2d01cd2366 shiphit: apply static keyword to applicable routines
Applies the 'static' keyword to applicable routines to both make it
more clear to the developer where such routines are likely to be used
as well as to provide additional information to the compiler so it can
make better optimizations.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:04 -04:00
Peter Mitsis 2beb136ecf shipfx: Apply static keyword to applicable routines
Applying the static keyword to applicable routines makes it both
more clear to the developer where those routines are likely to be
used as well as provide additional information to the compiler to
allow it to make better optimization choices.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:04 -04:00
Peter Mitsis c728cc40b2 ship: Apply static keyword to ship routines
Applies the 'static' keyword to various sihp related routines. This both
makes it more clear to the developer where those routines might be used
as well as allowing the compiler to leverage that knowledge and potentially
make additional optimizations.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:04 -04:00
Peter Mitsis d13ddb387f asteroid: Remove unused routines
Removes the following two routines as not only are they unused, but
they have been unused for years.
    get_debris_from_same_group()
    asteroid_get_random_in_cone()

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:03 -04:00
Peter Mitsis 666c177dec Fix asteriod typo
Replaces instances of 'asteriod' with 'asteroid'.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:03 -04:00
Peter Mitsis d5ba2369a2 asteroid: Apply static keyword to asteroid routines
Applies the 'static' keyword to various asteroid routines. This both
makes it more clear to the developer where those routines might be used
as well as allowing the compiler to leverage that knowledge and potentially
make additional optimizations.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:03 -04:00
Peter Mitsis 7bf7a8fc66 keycontrol: Remove reference to hud_target_asteroid()
Removes the extern declaration of hud_target_asteroid() from
keycontrol.cpp as it is not used in that module.

Signed-off-by: Peter Mitsis <[email protected]>
2018-04-14 19:57:03 -04:00
Fabian Woltermann a3d2320f0a Merge pull request #1681 from asarium/build/clang-tidy
Add clang-tidy to Travis CI configuration
2018-04-14 11:48:30 +02:00
asarium 9d352ddc5f Fix .clang-tidy format 2018-04-13 16:26:57 +02:00
MageKing17 299e584284 Merge pull request #1684 from asarium/fix/1683
Set team_glow_enabled uniform to proper value
2018-04-13 07:13:48 -07:00
asarium 4f22b12ec6 Mark all external libraries as system includes 2018-04-13 15:40:11 +02:00
asarium 57985b5f1a Enable misc-new-delete-overloads 2018-04-13 12:10:24 +02:00
asarium 513115ceeb Enable misc-noexcept-move-constructor check 2018-04-13 12:10:24 +02:00
asarium 95acebfce8 Add misc-multiple-statement-macro check 2018-04-13 12:10:24 +02:00
asarium ca5605cfb4 Add misc-move-forwarding-reference check 2018-04-13 12:10:24 +02:00
asarium ea4e5f222d Make .clang-tidy easier to read 2018-04-13 12:10:22 +02:00
asarium 538afc73a2 Keep building on Travis CI until more errors have occured
This will make it easier to find warnings and clang-tidy notifications
since ninja won't stop after the first warning or error was reported.
2018-04-13 12:10:03 +02:00
asarium 16560326e7 Add more clang-tidy checks 2018-04-13 12:10:01 +02:00
asarium 68372b18a2 Enable performance clang-tidy warnings 2018-04-13 12:08:56 +02:00
asarium c6abe74f06 Replace noexcept with compatibility macro 2018-04-13 12:08:07 +02:00
asarium f1c79c2ca7 Fix override warnings produced by clang-tidy 2018-04-13 12:08:06 +02:00
asarium 7944eda1cb Add Clang-tidy support 2018-04-13 11:40:38 +02:00
asarium 1571caa95e Set team_glow_enabled uniform to proper value
This was missed when converting the model uniforms to a uniform buffer
and caused some issues with team colors. This sets that uniform to the
value it had before the uniform buffer changes.

This fixes #1683.
2018-04-13 10:36:32 +02:00
m!m 9f97ea909a Merge pull request #1669 from jg18/qtfred2_/fictionViewerDialog
Add fiction viewer dialog to qtFRED
2018-04-13 09:57:01 +02:00
MageKing17 7469558e97 Merge pull request #1676 from asarium/fix/jsonOutputEfxSupport
Write EFX support information to JSON output
2018-04-12 17:10:38 -07:00
jg18 6747c630af Finish up qtFRED fiction viewer dialog 2018-04-11 21:45:38 -07:00
jg18 d80d8dd08e Use SignalBlockers with fiction viewer dialog 2018-04-09 23:51:19 -07:00
jg18 5ebf806c72 fix CI error about unused variable 2018-04-09 23:51:19 -07:00
jg18 6d2d092cc6 wrapup fiction viewer dialog corrections 2018-04-09 23:51:18 -07:00
jg18 cafee9c66a Add qtFRED notice about multiple fiction viewer stages 2018-04-09 23:51:18 -07:00
jg18 8fc281c7be Fix bugs in qtFRED fiction viewer dialog 2018-04-09 23:51:02 -07:00
jg18 8cae09bfe8 Add fiction viewer dialog to qtFRED (WIP) 2018-04-09 23:43:10 -07:00
jg18 5c5e48847e Add qtFRED keyboard shortcut for fiction viewer dialog 2018-04-09 23:42:47 -07:00
Joshua Glatt ae17e3f4b7 Merge pull request #1679 from asarium/qtfred2_/initSystem
Copy original FRED initialization code
2018-04-09 08:08:27 -07:00
m!m ebfc904e52 Merge pull request #1678 from jg18/qtfred2_/guisGalore
Add GUIs for background, shield system, and voice acting editors to qtFRED
2018-04-09 09:47:24 +02:00
asarium f3a3ed982f Copy original FRED initialization code
This copies the original FRED code for initializing the individual game
systems to qtFRED. This should fix the various issues caused by missing
game system initialization calls.
2018-04-09 09:45:41 +02:00
jg18 fabf05454b Make corrections to background editor UI and add dialog shortcut 2018-04-08 21:12:35 -07:00
m!m d309644e53 Merge pull request #1677 from jg18/qtfred2_/blockUiUpdate
Add SignalBlockers to qtFRED
2018-04-08 10:56:37 +02:00
jg18 63b21893df add stub dialog implementations and more corrections 2018-04-07 23:58:43 -07:00
jg18 81f4c03364 corrections to new GUIs 2018-04-07 23:01:04 -07:00
jg18 3668ce67d5 Add SignalBlockers to qtFRED 2018-04-07 19:52:23 -07:00
asarium 28ddf7d8d2 Write EFX support information to JSON output
The initial JSON flags output lacked this information but it is needed
for proper support by the launcher. This adds a new entry in the JSON
structure without changing anything else so it does not require a new
output version.
2018-04-06 13:48:49 +02:00
jg18 b2d427fb00 Add .ui files for background, shield system, and voice acting editor dialogs 2018-04-01 15:31:46 -07:00
asarium 5258066545 Validate number of parsed briefing stages and icons
This fixes two possible assertions and two possible buffer overflows
which could have been caused by a mission with wrong values for
$num_stages and $num_icons.

This fixes #1664.
2018-03-18 15:50:10 +01:00
asarium 55c1c3ce9d Fix wrong handle return type 2018-03-16 23:53:34 +01:00
asarium 2bddcf8344 Fix Assert in Lua API when passing invalid name to mn.WaypointLists
Since atoi return 0 on error the code tries to access the waypoint list
with index -1 which causes an assert in the lookup code. This fixes that
by using the error detection capabilities of strtol.
2018-03-16 23:53:19 +01:00
Fabian Woltermann 758ca86f6f And fix the other one too 2018-03-16 20:10:21 +01:00
Fabian Woltermann 6406e2fbd4 fix variable conversion warning 2018-03-16 15:53:19 +01:00
Fabian Woltermann 18c2dbbde9 WIP fix for #1653.
This adds a step to the post-mission cleanup where we explicitly go through Objects and call obj_delete on everything not already deleted; this obviously needs testing.

Also a few cleanup steps in lab_init to make sure the lab isn't contaminated by leftover data from previously played missions.
2018-03-16 12:59:43 +01:00
Karajorma ef6c5d4da7 Still have some old variable names 2018-03-01 20:09:34 +08:00
Karajorma cb960a3416 Fix the saving for non-eternal variables. 2018-03-01 19:26:41 +08:00
Karajorma 194d944108 Merge branch 'master' of https://github.com/scp-fs2open/fs2open.github.com into Feature/EternalVariables 2018-03-01 18:53:03 +08:00
Karajorma 9ac97f2422 Eternal Variables initial commit - Saving non-eternals on restart or mission quit not working properly. 2018-02-24 17:52:08 +08:00
z64555 ef0381d29f Extends the existing parse pausing system (used by bmpman) to use a bookmark stack. 2017-12-22 03:25:40 -06:00
1877 changed files with 307395 additions and 77224 deletions

No files matched your search

+182
View File
@@ -0,0 +1,182 @@
version: 2
references:
container_config: &container_config
docker:
- image: "debian:stretch"
working_directory: /root/build
restore_repo: &restore_repo
restore_cache:
keys:
- source-repo-{{ .Branch }}-{{ .Revision }}
- source-repo-{{ .Branch }}
- source-repo
cmake_configure: &cmake_configure
run:
name: Creating Build Files
command: |
mkdir build
cd build
CXXFLAGS="-m64 -mtune=generic -mfpmath=sse -msse -msse2 -pipe -Wno-unknown-pragmas"
CFLAGS="-m64 -mtune=generic -mfpmath=sse -msse -msse2 -pipe -Wno-unknown-pragmas"
if [[ "$CC" =~ ^clang.*$ ]]; then
CXXFLAGS="$CXXFLAGS -stdlib=libc++"
fi
eval $CC --version
export CXXFLAGS
export CFLAGS
CMAKE="cmake -G Ninja -DFSO_FATAL_WARNINGS=ON $CMAKE_OPTIONS"
eval $CMAKE -DCMAKE_BUILD_TYPE=$CONFIGURATION -DFSO_BUILD_TESTS=ON -DFSO_BUILD_INCLUDED_LIBS=ON ..
compile: &compile
run:
name: Compiling Source code
command: |
cd build
ninja -k 20 all
run_tests: &run_tests
run:
name: Run unit tests
command: |
./build/bin/unittests --gtest_shuffle
compile_steps: &compile_steps
steps:
- *restore_repo
- *cmake_configure
- *compile
- *run_tests
jobs:
checkout_code:
<<: *container_config
steps:
- run:
name: Installing Git
command: 'apt-get update && apt-get -yq install git'
- *restore_repo
- checkout
- run:
name: Updating submodules
command: 'git submodule update --init --recursive'
- save_cache:
key: source-repo-{{ .Branch }}-{{ .Revision }}
paths:
- .
build_gcc_lowest_debug:
docker:
- image: asarium/fso_compile:gcc-lowest
working_directory: /root/build
environment:
CC: gcc
CXX: g++
CONFIGURATION: Debug
<<: *compile_steps
build_gcc_lowest_release:
docker:
- image: asarium/fso_compile:gcc-lowest
working_directory: /root/build
environment:
CC: gcc
CXX: g++
CONFIGURATION: Release
<<: *compile_steps
build_gcc_latest_debug:
docker:
- image: asarium/fso_compile:gcc-latest
working_directory: /root/build
environment:
CC: gcc
CXX: g++
CONFIGURATION: Debug
<<: *compile_steps
build_gcc_latest_release:
docker:
- image: asarium/fso_compile:gcc-latest
working_directory: /root/build
environment:
CC: gcc
CXX: g++
CONFIGURATION: Release
<<: *compile_steps
build_clang_latest_debug:
docker:
- image: asarium/fso_compile:clang-latest
working_directory: /root/build
environment:
CC: clang-8
CXX: clang++-8
CONFIGURATION: Debug
<<: *compile_steps
build_clang_latest_release:
docker:
- image: asarium/fso_compile:clang-latest
working_directory: /root/build
environment:
CC: clang-8
CXX: clang++-8
CONFIGURATION: Release
<<: *compile_steps
build_clang_lowest_debug:
docker:
- image: asarium/fso_compile:clang-lowest
working_directory: /root/build
environment:
CC: clang
CXX: clang++
CONFIGURATION: Debug
<<: *compile_steps
build_clang_lowest_release:
docker:
- image: asarium/fso_compile:clang-lowest
working_directory: /root/build
environment:
CC: clang
CXX: clang++
CONFIGURATION: Release
<<: *compile_steps
workflows:
version: 2
build_test:
jobs:
- checkout_code
- build_gcc_lowest_debug:
requires:
- checkout_code
- build_gcc_lowest_release:
requires:
- checkout_code
- build_gcc_latest_debug:
requires:
- checkout_code
- build_gcc_latest_release:
requires:
- checkout_code
- build_clang_latest_debug:
requires:
- checkout_code
- build_clang_latest_release:
requires:
- checkout_code
- build_clang_lowest_debug:
requires:
- checkout_code
- build_clang_lowest_release:
requires:
- checkout_code
+104
View File
@@ -0,0 +1,104 @@
---
Language: Cpp
Standard: Cpp11
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: DontAlign
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowAllArgumentsOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^(<.*\.(h|hh|hpp)>)$' # Includes of external libraries
Priority: 5
- Regex: '^(<.*>)$' # standard library includes (won't match deprecated C headers)
Priority: 6
- Regex: '^"globalincs\/.*\.h"$' # globalincs always come first
Priority: 1
- Regex: '^"[^/]*\.(h)"$' # Local includes
Priority: 2
- Regex: '^".*\.(h)"$' # standard engine includes
Priority: 3
- Regex: '.*' # Catch all in case something is unhandled above
Priority: 4
IncludeIsMainRegex: '$'
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 4
UseTab: ForContinuationAndIndentation
...
+41
View File
@@ -0,0 +1,41 @@
---
Checks: "-*,\
modernize-*,\
-modernize-avoid-c-arrays,\
-modernize-make-unique,\
-modernize-raw-string-literal,\
-modernize-use-trailing-return-type,\
-modernize-use-using,\
performance-*,\
-performance-type-promotion-in-math-fn,\
misc-*,\
-misc-macro-parentheses,\
-misc-misplaced-widening-cast,\
-misc-non-private-member-variables-in-classes,\
-misc-static-assert,\
-misc-unused-parameters,\
readability-*,\
-readability-avoid-const-params-in-decls,\
-readability-else-after-return,\
-readability-function-size,\
-readability-identifier-naming,\
-readability-implicit-bool-conversion,\
-readability-inconsistent-declaration-parameter-name,\
-readability-isolate-declaration,\
-readability-magic-numbers,\
-readability-named-parameter,\
-readability-qualified-auto,\
-readability-uppercase-literal-suffix,\
"
WarningsAsErrors: ''
HeaderFilterRegex: 'code/.*$|freespace2/.*$|qtfred/.*$|test/src/.*$|build/.*$'
AnalyzeTemporaryDtors: false
CheckOptions:
- key: 'misc-assert-side-effect.AssertMacros'
value: 'assert,Assert,Assertion'
- key: 'modernize-use-emplace.ContainersWithPushBack'
value: 'std::vector;std::deque;std::list;SCP_vector;SCP_deque;SCP_list'
- key: 'readability-braces-around-statements.ShortStatementLines'
value: '4' # Avoid flagging simple if (...) return false; statements
...
+2
View File
@@ -0,0 +1,2 @@
/build
/.git
+21
View File
@@ -0,0 +1,21 @@
build:
image: teaci/msys$$arch
pull: true
shell: mingw$$arch
commands:
- git submodule update --init --recursive
- if [ $$arch = 32 ]; then target=i686; fi
- if [ $$arch = 64 ]; then target=x86_64; fi
- pacman -S --needed --noconfirm --noprogressbar mingw-w64-${target}-pkg-config mingw-w64-${target}-cmake
- mkdir build && cd build
- cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=$$CONFIGURATION -DFSO_USE_SPEECH=OFF -DFSO_USE_VOICEREC=OFF -DFSO_FATAL_WARNINGS=ON -DFSO_BUILD_FRED2=OFF ..
- make -j$(nproc) all
matrix:
arch:
- 64
- 32
CONFIGURATION:
- Debug
- Release
+8
View File
@@ -5,3 +5,11 @@ indent_style = tab
[*.sdr]
indent_style = tab
[*.{yml,yaml}]
indent_style = space
indent_size = 2
[*.sh]
indent_style = space
indent_size = 4
+7
View File
@@ -0,0 +1,7 @@
# Default for everything
# * text=auto
# For the test data and built-in files to make them consistent on all platforms
*.tbl text eol=lf
*.tbm text eol=lf
*.sdr text eol=lf
+10
View File
@@ -0,0 +1,10 @@
cmake/ @asarium
code/executor/ @asarium
code/scpui/ @asarium
code/scripting/ @asarium
code/controlconfig/ @z64555
+212
View File
@@ -0,0 +1,212 @@
name: Build Nightly package
on:
push:
tags:
- 'nightly_*'
env:
QT_VERSION: 5.12.9
jobs:
build_linux:
strategy:
matrix:
configuration: [FastDebug, Release]
name: Linux
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/linux_build:sha-e29f882
steps:
- name: Cache Qt
id: cache-qt-lin
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
cached: ${{ steps.cache-qt-lin.outputs.cache-hit }}
setup-python: 'false'
aqtversion: ==1.1.3
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: gcc-5
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
run: |
LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
XDG_RUNTIME_DIR: /root
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
- name: Generate AppImage
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install
- name: Upload build result
uses: actions/upload-artifact@v2
with:
name: linux-${{ matrix.configuration }}
path: ${{ github.workspace }}/build/install/*.AppImage
linux_zip:
name: Build Linux distribution zip
needs: build_linux
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
fetch-depth: '0'
- name: Download Release builds
uses: actions/download-artifact@v1
with:
name: linux-Release
path: builds
- name: Download FastDebug builds
uses: actions/download-artifact@v2
with:
name: linux-FastDebug
path: builds
- name: Create Distribution package
working-directory: ./builds
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Linux
- name: Upload result package
working-directory: ./builds
env:
INDIEGAMES_USER: ${{ secrets.INDIEGAMES_USER }}
INDIEGAMES_SSHPASS: ${{ secrets.INDIEGAMES_PASSWORD }}
DATACORDER_USER: ${{ secrets.DATACORDER_USER }}
DATACORDER_SSHPASS: ${{ secrets.DATACORDER_PASSWORD }}
run: $GITHUB_WORKSPACE/ci/linux/upload_dist_package.sh nightly
build_windows:
strategy:
matrix:
configuration: [FastDebug, Release]
arch: [Win32, x64]
simd: [SSE2]
name: Windows
runs-on: windows-2019
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Cache Qt
id: cache-qt-win
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt (32 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.arch == 'Win32' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win32_msvc2017
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Install Qt (64 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.arch == 'x64' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win64_msvc2017_64
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
ARCHITECTURE: ${{ matrix.arch }}
SIMD: ${{ matrix.simd }}
shell: bash
run: |
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \
-DFSO_USE_VOICEREC="ON" -DMSVC_SIMD_INSTRUCTIONS="$SIMD" \
-DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \
-DFSO_INSTALL_DEBUG_FILES="ON" -A "$ARCHITECTURE" \
-G "Visual Studio 16 2019" -T "v142" ..
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
shell: bash
run: |
cmake --build . --config "$CONFIGURATION" --target INSTALL -- /verbosity:minimal
ls -alR "$(pwd)/install"
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
shell: bash
run: ./bin/$CONFIGURATION/unittests --gtest_shuffle
- name: Upload build result
uses: actions/upload-artifact@v2
with:
name: windows-${{ matrix.configuration }}-${{ matrix.arch }}-${{ matrix.simd }}
path: ${{ github.workspace }}/build/install/*
windows_zip:
name: Build Windows distribution zip
needs: build_windows
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d
strategy:
matrix:
arch: [Win32, x64]
simd: [SSE2]
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
fetch-depth: '0'
- name: Download Release builds
uses: actions/download-artifact@v1
with:
name: windows-Release-${{ matrix.arch }}-${{ matrix.simd }}
path: builds
- name: Download FastDebug builds
uses: actions/download-artifact@v2
with:
name: windows-FastDebug-${{ matrix.arch }}-${{ matrix.simd }}
path: builds
- name: Create Distribution package
working-directory: ./builds
shell: bash
env:
ARCH: ${{ matrix.arch }}
SIMD: ${{ matrix.simd }}
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Windows
- name: Upload result package
working-directory: ./builds
shell: bash
env:
INDIEGAMES_USER: ${{ secrets.INDIEGAMES_USER }}
INDIEGAMES_SSHPASS: ${{ secrets.INDIEGAMES_PASSWORD }}
DATACORDER_USER: ${{ secrets.DATACORDER_USER }}
DATACORDER_SSHPASS: ${{ secrets.DATACORDER_PASSWORD }}
run: $GITHUB_WORKSPACE/ci/linux/upload_dist_package.sh nightly
+265
View File
@@ -0,0 +1,265 @@
name: Build Release package
on:
push:
tags:
- 'release_*'
env:
QT_VERSION: 5.12.9
jobs:
create_release:
name: Create GitHub release
runs-on: ubuntu-latest
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Store upload URL
run: |
echo -n "${{ steps.create_release.outputs.upload_url }}" > upload_url
- name: Persist upload URL
uses: actions/upload-artifact@v2
with:
name: upload_url
path: ${{ github.workspace }}/upload_url
build_linux:
strategy:
matrix:
configuration: [FastDebug, Release]
name: Linux
needs: create_release
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/linux_build:sha-e29f882
steps:
- name: Cache Qt
id: cache-qt-lin
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
cached: ${{ steps.cache-qt-lin.outputs.cache-hit }}
setup-python: 'false'
aqtversion: ==1.1.3
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: gcc-5
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
run: |
LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
XDG_RUNTIME_DIR: /root
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
- name: Generate AppImage
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install
- name: Upload build result
uses: actions/upload-artifact@v2
with:
name: linux-${{ matrix.configuration }}
path: ${{ github.workspace }}/build/install/*.AppImage
linux_zip:
name: Build Linux distribution zip
needs: build_linux
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
fetch-depth: '0'
- name: Download upload URL
uses: actions/download-artifact@v1
with:
name: upload_url
path: .
- name: Extract upload URL
id: extractUploadUrl
run: echo "::set-output name=upload_url::$(cat upload_url)"
- name: Download Release builds
uses: actions/download-artifact@v1
with:
name: linux-Release
path: builds
- name: Download FastDebug builds
uses: actions/download-artifact@v2
with:
name: linux-FastDebug
path: builds
- name: Create Distribution package
id: generate_package
working-directory: ./builds
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Linux
- name: Upload result package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.extractUploadUrl.outputs.upload_url }}
asset_path: ${{ steps.generate_package.outputs.package_path }}
asset_name: ${{ steps.generate_package.outputs.package_name }}
asset_content_type: ${{ steps.generate_package.outputs.package_mime }}
build_windows:
strategy:
matrix:
configuration: [FastDebug, Release]
arch: [Win32, x64]
simd: [SSE2, AVX]
needs: create_release
name: Windows
runs-on: windows-2019
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Cache Qt
id: cache-qt-win
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt (32 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.arch == 'Win32' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win32_msvc2017
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Install Qt (64 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.arch == 'x64' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win64_msvc2017_64
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
ARCHITECTURE: ${{ matrix.arch }}
SIMD: ${{ matrix.simd }}
shell: bash
run: |
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \
-DFSO_USE_VOICEREC="ON" -DMSVC_SIMD_INSTRUCTIONS="$SIMD" \
-DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \
-DFSO_INSTALL_DEBUG_FILES="ON" -A "$ARCHITECTURE" \
-G "Visual Studio 16 2019" -T "v142" ..
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
shell: bash
run: |
cmake --build . --config "$CONFIGURATION" --target INSTALL -- /verbosity:minimal
ls -alR "$(pwd)/install"
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
shell: bash
run: ./bin/$CONFIGURATION/unittests --gtest_shuffle
- name: Upload build result
uses: actions/upload-artifact@v2
with:
name: windows-${{ matrix.configuration }}-${{ matrix.arch }}-${{ matrix.simd }}
path: ${{ github.workspace }}/build/install/*
windows_zip:
name: Build Windows distribution zip
needs: build_windows
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d
strategy:
matrix:
arch: [Win32, x64]
simd: [SSE2, AVX]
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
fetch-depth: '0'
- name: Download upload URL
uses: actions/download-artifact@v1
with:
name: upload_url
path: .
- name: Extract upload URL
id: extractUploadUrl
run: echo "::set-output name=upload_url::$(cat upload_url)"
- name: Download Release builds
uses: actions/download-artifact@v1
with:
name: windows-Release-${{ matrix.arch }}-${{ matrix.simd }}
path: builds
- name: Download FastDebug builds
uses: actions/download-artifact@v2
with:
name: windows-FastDebug-${{ matrix.arch }}-${{ matrix.simd }}
path: builds
- name: Create Distribution package
id: generate_package
working-directory: ./builds
shell: bash
env:
ARCH: ${{ matrix.arch }}
SIMD: ${{ matrix.simd }}
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Windows
- name: Upload result package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.extractUploadUrl.outputs.upload_url }}
asset_path: ${{ steps.generate_package.outputs.package_path }}
asset_name: ${{ steps.generate_package.outputs.package_name }}
asset_content_type: ${{ steps.generate_package.outputs.package_mime }}
- name: Upload debug symbols
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.extractUploadUrl.outputs.upload_url }}
asset_path: ${{ steps.generate_package.outputs.debug_path }}
asset_name: ${{ steps.generate_package.outputs.debug_name }}
asset_content_type: ${{ steps.generate_package.outputs.debug_mime }}
+226
View File
@@ -0,0 +1,226 @@
name: Build Test package
on:
push:
branches:
- 'test/*'
env:
QT_VERSION: 5.12.9
jobs:
build_linux:
strategy:
matrix:
configuration: [FastDebug, Release]
name: Linux
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/linux_build:sha-e29f882
steps:
- name: Cache Qt
id: cache-qt-lin
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
cached: ${{ steps.cache-qt-lin.outputs.cache-hit }}
setup-python: 'false'
aqtversion: ==1.1.3
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Set up test version
shell: bash
run: |
[[ "${{ github.ref }}" =~ ^refs\/heads\/test\/(.*)$ ]]
# Override the revision string so that the builds are named correctly
echo "set(FSO_VERSION_REVISION_STR ${BASH_REMATCH[1]})" > "version_override.cmake"
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: gcc-5
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
run: |
LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
XDG_RUNTIME_DIR: /root
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
- name: Generate AppImage
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install
- name: Upload build result
uses: actions/upload-artifact@v2
with:
name: linux-${{ matrix.configuration }}
path: ${{ github.workspace }}/build/install/*.AppImage
linux_zip:
name: Build Linux distribution zip
needs: build_linux
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d
steps:
- uses: actions/checkout@v2
name: Checkout
with:
submodules: true
fetch-depth: '0'
ref: '${{ github.ref }}'
- name: Download Release builds
uses: actions/download-artifact@v1
with:
name: linux-Release
path: builds
- name: Download FastDebug builds
uses: actions/download-artifact@v2
with:
name: linux-FastDebug
path: builds
- name: Create Distribution package
working-directory: ./builds
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Linux
- name: Upload result package
working-directory: ./builds
env:
INDIEGAMES_USER: ${{ secrets.INDIEGAMES_USER }}
INDIEGAMES_SSHPASS: ${{ secrets.INDIEGAMES_PASSWORD }}
DATACORDER_USER: ${{ secrets.DATACORDER_USER }}
DATACORDER_SSHPASS: ${{ secrets.DATACORDER_PASSWORD }}
run: $GITHUB_WORKSPACE/ci/linux/upload_dist_package.sh test
build_windows:
strategy:
matrix:
configuration: [FastDebug, Release]
arch: [Win32, x64]
simd: [SSE2]
name: Windows
runs-on: windows-2019
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Set up test version
shell: bash
run: |
[[ "${{ github.ref }}" =~ ^refs\/heads\/test\/(.*)$ ]]
# Override the revision string so that the builds are named correctly
echo "set(FSO_VERSION_REVISION_STR ${BASH_REMATCH[1]})" > "version_override.cmake"
- name: Cache Qt
id: cache-qt-win
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt (32 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.arch == 'Win32' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win32_msvc2017
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Install Qt (64 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.arch == 'x64' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win64_msvc2017_64
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
ARCHITECTURE: ${{ matrix.arch }}
SIMD: ${{ matrix.simd }}
shell: bash
run: |
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \
-DFSO_USE_VOICEREC="ON" -DMSVC_SIMD_INSTRUCTIONS="$SIMD" \
-DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \
-DFSO_INSTALL_DEBUG_FILES="ON" -A "$ARCHITECTURE" \
-G "Visual Studio 16 2019" -T "v142" ..
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
shell: bash
run: |
cmake --build . --config "$CONFIGURATION" --target INSTALL -- /verbosity:minimal
ls -alR "$(pwd)/install"
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
shell: bash
run: ./bin/$CONFIGURATION/unittests --gtest_shuffle
- name: Upload build result
uses: actions/upload-artifact@v2
with:
name: windows-${{ matrix.configuration }}-${{ matrix.arch }}-${{ matrix.simd }}
path: ${{ github.workspace }}/build/install/*
windows_zip:
name: Build Windows distribution zip
needs: build_windows
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d
strategy:
matrix:
arch: [Win32, x64]
simd: [SSE2]
steps:
- uses: actions/checkout@v2
name: Checkout
with:
submodules: true
fetch-depth: '0'
ref: '${{ github.ref }}'
- name: Download Release builds
uses: actions/download-artifact@v1
with:
name: windows-Release-${{ matrix.arch }}-${{ matrix.simd }}
path: builds
- name: Download FastDebug builds
uses: actions/download-artifact@v2
with:
name: windows-FastDebug-${{ matrix.arch }}-${{ matrix.simd }}
path: builds
- name: Create Distribution package
working-directory: ./builds
shell: bash
env:
ARCH: ${{ matrix.arch }}
SIMD: ${{ matrix.simd }}
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Windows
- name: Upload result package
working-directory: ./builds
shell: bash
env:
INDIEGAMES_USER: ${{ secrets.INDIEGAMES_USER }}
INDIEGAMES_SSHPASS: ${{ secrets.INDIEGAMES_PASSWORD }}
DATACORDER_USER: ${{ secrets.DATACORDER_USER }}
DATACORDER_SSHPASS: ${{ secrets.DATACORDER_PASSWORD }}
run: $GITHUB_WORKSPACE/ci/linux/upload_dist_package.sh test
+153
View File
@@ -0,0 +1,153 @@
name: Check a pull request
on: [pull_request]
env:
QT_VERSION: 5.12.9
jobs:
build_linux:
strategy:
matrix:
configuration: [Debug, Release]
compiler: [gcc-5, gcc-10, clang-9]
cmake_options: [""]
include:
# Also include configurations that check if the code compiles without the graphics backends
- configuration: Debug
compiler: gcc-10
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
- configuration: Release
compiler: gcc-10
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
name: Linux
runs-on: ubuntu-latest
container: ghcr.io/scp-fs2open/linux_build:sha-e29f882
steps:
- name: Cache Qt
id: cache-qt-lin
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
cached: ${{ steps.cache-qt-lin.outputs.cache-hit }}
setup-python: 'false'
aqtversion: ==1.1.3
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
fetch-depth: 0
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }}
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
- name: Compile
working-directory: ./build
run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
XDG_RUNTIME_DIR: /root
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh
- name: Run Clang Tidy
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers
if: startsWith(matrix.compiler, 'clang-')
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
- name: Process clang-tidy warnings
if: startsWith(matrix.compiler, 'clang-')
uses: asarium/clang-tidy-action@v1
with:
fixesFile: clang-fixes.yaml
build_windows:
strategy:
matrix:
configuration: [Debug, Release]
compiler: [MSVC]
arch: [Win32, x64]
name: Windows
runs-on: windows-2019
steps:
- name: Prepare Environment
run: choco install ninja
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Cache Qt
id: cache-qt-win
uses: actions/cache@v1
with:
path: ${{ github.workspace }}/../Qt
key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }}
- name: Install Qt (32 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.compiler == 'MSVC' && matrix.arch == 'Win32' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win32_msvc2017
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Install Qt (64 bit)
uses: jurplel/install-qt-action@v2
if: ${{ matrix.compiler == 'MSVC' && matrix.arch == 'x64' }}
with:
version: ${{ env.QT_VERSION }}
dir: ${{ github.workspace }}/..
arch: win64_msvc2017_64
cached: ${{ steps.cache-qt-win.outputs.cache-hit }}
aqtversion: ==0.8
- name: Configure CMake
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
ARCHITECTURE: ${{ matrix.arch }}
shell: bash
run: |
mkdir build
cd build
if [ "$COMPILER" = "MinGW" ]; then
cmake -DFSO_USE_SPEECH="OFF" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \
-DFSO_BUILD_FRED2="OFF" -DCMAKE_BUILD_TYPE=$CONFIGURATION -G "Ninja" ..
else
cmake -DFSO_USE_SPEECH="ON" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \
-DMSVC_SIMD_INSTRUCTIONS=SSE2 -DFSO_BUILD_FRED2="ON" -G "Visual Studio 16 2019" \
-DFSO_BUILD_QTFRED=ON -T "v142" -A "$ARCHITECTURE" ..
fi
- name: Compile
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
shell: bash
run: |
if [ "$COMPILER" = "MinGW" ]; then
cmake --build . --config "$CONFIGURATION"
else
cmake --build . --config "$CONFIGURATION" -- /verbosity:minimal
fi
- name: Run Tests
working-directory: ./build
env:
CONFIGURATION: ${{ matrix.configuration }}
COMPILER: ${{ matrix.compiler }}
shell: bash
run: |
if [ "$COMPILER" = "MinGW" ]; then
./bin/unittests --gtest_shuffle
else
"./bin/$CONFIGURATION/unittests" --gtest_shuffle
fi
@@ -0,0 +1,52 @@
name: Publish Standalone docker image
on:
push:
tags:
- 'nightly_*'
- 'release_*'
jobs:
build_images:
strategy:
matrix:
configuration: [FastDebug, Release]
include:
- configuration: FastDebug
tag_suffix: -debug
- configuration: Release
tag_suffix: ""
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
name: Checkout
with:
submodules: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Docker meta
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
with:
images: ghcr.io/scp-fs2open/standalone_server
tag-latest: false
- name: Login to GitHub Docker Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./docker/standalone/Dockerfile
push: true
tags: ${{ steps.docker_meta.outputs.tags }}${{ matrix.tag_suffix }}
labels: ${{ steps.docker_meta.outputs.labels }}
build-args: |
build_type=${{ matrix.configuration }}
+1 -3
View File
@@ -26,9 +26,6 @@
*.unsuccessfulbuild
ipch/
[Oo]bj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
*.VC.db
*.VC.VC.opendb
@@ -260,3 +257,4 @@ CMakeSettings.json
# This gets ignored by one of the rules above for some reason...
!/code/scripting/lua/LuaConvert.h
!/code/debugconsole/
!/docker/build
+3
View File
@@ -1,3 +1,6 @@
[submodule "cmake/external/rpavlik-cmake-modules"]
path = cmake/external/rpavlik-cmake-modules
url = https://github.com/asarium/cmake-modules.git
[submodule "lib/libRocket"]
path = lib/libRocket
url = https://github.com/asarium/libRocket.git
+160 -136
View File
@@ -1,151 +1,175 @@
language: generic
language: bash
sudo: required
dist: trusty
dist: xenial
cache:
directories:
- $HOME/cmake
directories:
- $HOME/cmake-3.8
- $HOME/.ccache
- $HOME/curl_cache
addons:
apt:
packages: &global_deps
- ninja-build
- libopenal-dev
- libreadline6-dev
- libpng12-dev
- libjpeg62-dev
- liblua5.1-0-dev
- libjansson-dev
- libsdl2-dev
- valgrind
- qt57base
coverity_scan:
project:
name: "scp-fs2open/fs2open.github.com"
notification_email: [email protected]
build_command: "ci/travis/script.sh"
# must match TRAVIS_BRANCH check below
branch_pattern: coverity_scan
apt:
packages: &global_deps
- ninja-build
- libopenal-dev
- libreadline6-dev
- libpng12-dev
- libjpeg62-dev
- liblua5.1-0-dev
- libjansson-dev
- libsdl2-dev
- libfreetype6-dev
- qt57base
coverity_scan:
project:
name: "scp-fs2open/fs2open.github.com"
notification_email: [email protected]
build_command: "ci/travis/script.sh"
# must match TRAVIS_BRANCH check below
branch_pattern: coverity_scan
env:
global:
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
# also note that fork's don't get access to secure keys
# you have to test using a branch in the main repo
- secure: "C3wF967ZeliwwP1vC12EMIBOaC568n26Z/cPnwzn317ve59DWH3YSfPZVgvt08GzmaXITGGsJvPB+qxfGoKvQzYE4O1B73q81RpUe5pB3IhF+ThQ91VfQZIRJR5xEGJaLINUlHTTZGX5jxlkVO9wAcauVj/s3b8sQ3dvUZauPvk="
# These declarations set INDIEGAMES_USER and INDIEGAMES_PASSWORD for uploading nightly builds to the indiegames server
- secure: "lUuRu8XIi8MKNf1ebOfyC4iVEpPyASojJIDWXRo2bNqEF4ILAljXdkVeXeN6H5yKCHD52cxCNTtyePIG/o3p3QEuGSVud9bDS3D7LaQicLETGGrsw3l07U49gF2OKHXGopg0MzBbZUU9QmhoFTAe8t6PV9NDuEayYCheqvTqjZg="
- secure: "E/DHLYcPK/hBUqxBYYlUqp5sjgvIqY5A0qRHyQ4bmjsB+WB/Xx71bGCSiF7hk6lTxar1ZI1i5RAXXh9AIvNVaYAIdEOlCP+q3gvwCYuc5naZEKmkxlUCf0oEL4O9Fye93A/3VkFHuBdC1TGPYYf69m4W5r4367wWO9dPRIdWpJA="
# These declarations set FS2DOWNLOADS_USER and FS2DOWNLOADS_PASSWORD
- secure: "h6GbMX2jLsW1bS9fCM9fthOSJ1nfQQIRWi6EUH2p8u4NFLD5Bfi/C8JhQPKHUzyo3wvKkSHl+PsW7bgr1oXLusRwAur/dtv2N3imqvtbfIz305b00hZlsvbcYmQmUzQFSAdOGShK57JJ5aKQKccaUBP25KqB7Q+JaqBRdaMBS54="
- secure: "fUDAPAUUaaYZy8I4zU3SJ0JcK7aw4eb6eTdaEr7LyNyTMSfPgwY6P1MrbSQC0lJNQIUQ5ffjdxE5g7D7OYpoJF9L14ni4UY8t2QASt7kmpgcYihmjeuYy8FQXgmFG8CTxiWBPKTybZJ7voQcvIvRaNG7b2wM9PMfc5lRIondB6c="
global:
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
# also note that fork's don't get access to secure keys
# you have to test using a branch in the main repo
- secure: "C3wF967ZeliwwP1vC12EMIBOaC568n26Z/cPnwzn317ve59DWH3YSfPZVgvt08GzmaXITGGsJvPB+qxfGoKvQzYE4O1B73q81RpUe5pB3IhF+ThQ91VfQZIRJR5xEGJaLINUlHTTZGX5jxlkVO9wAcauVj/s3b8sQ3dvUZauPvk="
# These declarations set INDIEGAMES_USER and INDIEGAMES_PASSWORD for uploading nightly builds to the indiegames server
- secure: "lUuRu8XIi8MKNf1ebOfyC4iVEpPyASojJIDWXRo2bNqEF4ILAljXdkVeXeN6H5yKCHD52cxCNTtyePIG/o3p3QEuGSVud9bDS3D7LaQicLETGGrsw3l07U49gF2OKHXGopg0MzBbZUU9QmhoFTAe8t6PV9NDuEayYCheqvTqjZg="
- secure: "E/DHLYcPK/hBUqxBYYlUqp5sjgvIqY5A0qRHyQ4bmjsB+WB/Xx71bGCSiF7hk6lTxar1ZI1i5RAXXh9AIvNVaYAIdEOlCP+q3gvwCYuc5naZEKmkxlUCf0oEL4O9Fye93A/3VkFHuBdC1TGPYYf69m4W5r4367wWO9dPRIdWpJA="
# These declarations set DATACORDER_USER and DATACORDER_PASSWORD
- secure: "dpBH/dDN3bmU/NFlh+2v9isNx9wX0ocoRy+W+kBXRH32sosUGp26REhMqgVRpBNP5oxPBU8ic5bEogxAYWCB+0xUygBbkxAwyMPgoA34s0OXdTCY/ofw14ni8qqV2Ffy7fQJbP/jkMURyiMHx3kBTxNv3YjxKJqLnOuOMlQLpT8="
- secure: "tLMRBD1Ufp5iKNwlqPDVbbuczgusaXNoBJyAnPATpJq2YwlkW4j3PqP9rW5vd85+52xam2EOP20w9PoBR5J6FLdiXRu4Lf7yCEhSHFAgowVqQj8QcJpPlyXr90bM4emFGrGqpdxVwxyQ5AFhKwLuEZKsI14GYLN+UMEwpNCMing="
deploy:
- provider: releases
api_key:
secure: "Wdt4Ccefo7a0ZDjEJQJgpghh7n72FtNJuKSAPUvoz4gtEX6Ct9J8yJI1t9V3jE3CTbbLJ21/Q6eZRDfT7UfNJe5DdepoJsP9DeFhKMWqQCq+AChqQWlm0KeZAffJoJreL8vXYhnRYcLT9ceZHEH6AqwN9TPV+xJziGPISAkYNZ8="
skip_cleanup: true
file_glob: true
file: "/tmp/builds/*"
on:
condition: '"$RELEASE_BUILD" == true'
tags: true
- provider: releases
api_key:
secure: "q619+eQTe7lv8UVphK4OIzU8Jw84KBbVkuprN2sWIubRcV3IbZr2+WahJoUMt+nyhiy3YjDYtstO2ZgkxupwnZgwGUBVIiD1c4SPuyy+HTjNMOtiVsEUHT2hf+xPAemWpTlK5HcwhMmHAOh6rt6dEj57QOg0gcmGiwD/tCbEriA="
skip_cleanup: true
file_glob: true
file: "/tmp/builds/*"
on:
condition: '"$RELEASE_BUILD" == true'
tags: true
- provider: script
script: bash ci/travis/ftp_deploy.sh
on:
condition: '"$NIGHTLY_BUILD" == true'
tags: true
- provider: script
script: bash ci/travis/ftp_deploy.sh
on:
condition: '"$NIGHTLY_BUILD" == true'
tags: true
- provider: script
skip_cleanup: true
script: bash ci/travis/ftp_deploy.sh
on:
condition: $TEST_BUILD = true
all_branches: true
- provider: script
skip_cleanup: true
script: bash ci/travis/ftp_deploy.sh
on:
condition: $TEST_BUILD = true
all_branches: true
matrix:
include:
# note that gcc Debug MUST be 1st for Coverity
- os: linux
env: CONFIGURATION="Debug" CC=gcc-5 CXX=g++-5
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages:
- *global_deps
- g++-5
- os: linux
env: CONFIGURATION="Debug" CC=gcc-7 CXX=g++-7
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages:
- g++-7
- *global_deps
- os: linux
env: CONFIGURATION="Debug" CC=clang-3.6 CXX=clang++-3.6
addons:
apt:
sources:
- llvm-toolchain-precise
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages:
- *global_deps
- clang-3.6
- libc++-dev
- os: osx
env: CONFIGURATION="Debug"
include:
# note that gcc Debug MUST be 1st for Coverity
- os: linux
env: CONFIGURATION="Debug" CC=gcc-5 CXX=g++-5
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-xenial'
packages:
- *global_deps
- g++-5
- os: linux
env: CONFIGURATION="Debug" CC=gcc-9 CXX=g++-9
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-xenial'
packages:
- g++-9
- *global_deps
- os: linux
env: CONFIGURATION="Debug" CC=clang-9 CXX=clang++-9 CMAKE_OPTIONS="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-xenial'
packages:
- *global_deps
- g++-9
script:
- ./ci/travis/script.sh
- ./ci/travis/clang_tidy.sh
- os: osx
env: CONFIGURATION="Debug"
- os: windows
env: CONFIGURATION="Debug" CMAKE_TOOLSET=v141 CMAKE_GENERATOR="Visual Studio 15 2017"
- os: windows
env: CONFIGURATION="Debug" CMAKE_TOOLSET="" CMAKE_GENERATOR="Ninja"
- os: linux
env: CONFIGURATION="Release" CC=gcc-5 CXX=g++-5
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-xenial'
packages:
- *global_deps
- g++-5
- os: linux
env: CONFIGURATION="Release" CC=gcc-9 CXX=g++-9
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-xenial'
packages:
- g++-9
- *global_deps
- os: linux
env: CONFIGURATION="Release" CC=clang-9 CXX=clang++-9 CMAKE_OPTIONS="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-xenial'
packages:
- *global_deps
- g++-9
script:
- ./ci/travis/script.sh
- ./ci/travis/clang_tidy.sh
- os: osx
env: CONFIGURATION="Release"
- os: windows
env: CONFIGURATION="Release" CMAKE_TOOLSET=v141 CMAKE_GENERATOR="Visual Studio 15 2017"
- os: windows
env: CONFIGURATION="Release" CMAKE_TOOLSET="" CMAKE_GENERATOR="Ninja"
# There is a GCC compiler bug with MinGW that causes compilation failures on Windows at the moment
allow_failures:
- os: windows
env: CONFIGURATION="Debug" CMAKE_TOOLSET="" CMAKE_GENERATOR="Ninja"
- os: windows
env: CONFIGURATION="Release" CMAKE_TOOLSET="" CMAKE_GENERATOR="Ninja"
fast_finish: true
- os: linux
env: CONFIGURATION="Release" CC=gcc-5 CXX=g++-5
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages:
- *global_deps
- g++-5
- os: linux
env: CONFIGURATION="Release" CC=gcc-7 CXX=g++-7
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages:
- g++-7
- *global_deps
- os: linux
env: CONFIGURATION="Release" CC=clang-3.6 CXX=clang++-3.6
addons:
apt:
sources:
- llvm-toolchain-precise
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages:
- *global_deps
- clang-3.6
- libc++-dev
- os: osx
env: CONFIGURATION="Release"
before_install:
# ugly hack; if running a coverity scan abort all except the 1st build
# see note re gcc compiler above needing to be 1st
# also note that branch_pattern & the TRAVIS_BRANCH check must match
# unfortunately COVERITY_SCAN_BRANCH isn't defined until later in the
# build process
- if ([[ "${TRAVIS_JOB_NUMBER##*.}" != "1" ]] && [[ "${TRAVIS_BRANCH}" == "coverity_scan" ]]); then false ; fi
- source "./ci/travis/check_release.sh"
- "./ci/travis/before_install.sh"
# ugly hack; if running a coverity scan abort all except the 1st build
# see note re gcc compiler above needing to be 1st
# also note that branch_pattern & the TRAVIS_BRANCH check must match
# unfortunately COVERITY_SCAN_BRANCH isn't defined until later in the
# build process
- if ([[ "${TRAVIS_JOB_NUMBER##*.}" != "1" ]] && [[ "${TRAVIS_BRANCH}" == "coverity_scan" ]]); then false ; fi
- source "./ci/travis/check_release.sh"
- "./ci/travis/before_install.sh"
install:
- "./ci/travis/install.sh"
- export PATH=$HOME/cmake/bin:$PATH
- if [ "$TRAVIS_OS_NAME" = "windows" ]; then export PATH="/c/Program Files/CMake/bin":$PATH; fi
- "./ci/travis/install.sh"
- export PATH=$HOME/cmake-3.6/bin:$PATH
before_script:
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then QT_ENV_SCRIPT=$(find /opt -name 'qt*-env.sh'); source $QT_ENV_SCRIPT; fi
- "./ci/travis/before_script.sh"
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then QT_ENV_SCRIPT=$(find /opt -name 'qt*-env.sh'); source $QT_ENV_SCRIPT; fi
- "./ci/travis/before_script.sh"
script:
- if [ "$BUILD_DEPLOYMENT" = true ] ; then ./ci/travis/release.sh ; else ./ci/travis/script.sh ; fi
- if [ "$BUILD_DEPLOYMENT" = true ] ; then ./ci/travis/release.sh ; else ./ci/travis/script.sh ; fi
-29
View File
@@ -1,29 +0,0 @@
Original source (Freespace 2) by Volition, Inc.; see "credits.tbl"
Modifications by the FreeSpace Source Code Project (FSSCP)
http://fs2source.warpcore.org
FS2_OPEN STAFF:
Project leader:
Edward "Inquisitor" Gardner
Programmers:
"Bobboau"
Dennis "DTP" Pedersen
Ian "Goober5000" Warfield
Joe "Righteous1" Dowd
Mike "penguin" Harris
"Mysterial"
"PhReAk"
Thomas "Random Tiger" Whittaker
Will "Unknown PLayer" Rousnel
"WMCoolmon"
Web support:
Icefire and the staff at Volitionwatch.com
Alex "Thunder" Avery and the staff at Hard Light Productions
Special thanks to:
Volition for making FS2 such a great game
Dave Baranec for giving us the code and keeping us sanity checked
+41
View File
@@ -0,0 +1,41 @@
## FreeSpace
FreeSpace: The Great War (Released 1998) and FreeSpace 2 (1999) are mission-based space combat simulators, like X-Wing/TIE Fighter and Wing Commander. Among the greatest games of the genre, they were also effectively the last.
The FreeSpace series follows humanity and their Vasudan allies as they fight to withstand the xenocidal, enigmatic Shivans, a species of unknown origin, vast technological capability, and seemingly limitless malice.
## FreeSpace Open
Thanks to Volition's generosity, we've continued development of FreeSpace 2 as FreeSpace Open, building graphical enhancements to bring the original games up to modern standards, telling new stories set in the FreeSpace universe and original worlds, and creating spectacular total conversions that let players fly in the beloved universes of Babylon 5, Battlestar Galactica, Wing Commander, and Star Wars.
## Hard-Light Productions
HLP is a fan community built on love and open-source code. We're dedicated to bringing modders together and giving them a place to share their own hard work and draw inspiration from the work of others. Thanks to Volition's generosity, we've continued development of FreeSpace 2 as FreeSpace Open, building graphical enhancements to bring the original games up to modern standards, telling new stories set in the FreeSpace universe and original worlds, and creating spectacular total conversions that let players fly in the beloved universes of Babylon 5, Battlestar Galactica, Wing Commander, and Star Wars.
Find us at:
- Our [website](http://www.hard-light.net/) and [forums](http://www.hard-light.net/forums/)
- [Discord](https://discord.gg/YNVP3WR)
- [Facebook](https://www.facebook.com/groups/Hardlightproductions/)
- [Youtube](https://www.youtube.com/channel/UCxKkd609hDtY6yNetR1iT4w)
- [Reddit](https://www.reddit.com/r/freespace/)
- [Twitter](https://twitter.com/hardlightpro)
- [IRC](irc://irc.esper.net/hard-light)
## How to get the game
FreeSpace Open requires a retail installation of FreeSpace 2, which is available at the following stores:
- [GOG.com](https://www.gog.com/game/freespace_2)
- [Steam](https://store.steampowered.com/app/273620/Freespace_2/)
After installing retail FS2, use [Knossos](https://fsnebula.org/knossos/) to upgrade to the most recent release of FSO. Knossos is an advanced mod manager and launcher for FSO.
## Improvements
The new open source game engine has several distingushing features including:
- Linux and Mac OS X support
- OpenGL support
- OpenAL audio support
- Easy mod installation
- OGG support
- Hardware transform, clipping, and lighting
## The FreeSpace Upgrade Project
While the SCP improves the code of the game engine to enable new and exciting features, the FreeSpace Upgrade Project (FSU) creates material that takes advantage of the improved game engine.
The FSU improves the ships, effects, and background elements of FreeSpace 2. Every now and then these improvements are released as a pack called MediaVPs. These assorted improvements enhance the graphics of the game.
While the best way to experience the FSU is by playing the game with it, you can watch this [comparison video](https://www.youtube.com/watch?v=RM1YC_gK-qo) between 1999 and 2019 to have an idea of how much more beautiful FSU makes the game.
^(Much of this content was pulled from existing sources, such as InsaneBaron's "What Is Hard Light Productions" [thread](https://www.hard-light.net/forums/index.php?topic=86650.0), the Wiki's [Getting Started article](https://wiki.hard-light.net/index.php/Getting_started) and more.)
+8
View File
@@ -0,0 +1,8 @@
Original source (Freespace 2) by Volition, Inc.; see "`credits.tbl`"
Modifications by the FreeSpace 2 Source Code Project [(FSO SCP)](https://www.hard-light.net/forums/index.php?board=50.0)
[Project Contributors](https://github.com/scp-fs2open/fs2open.github.com/graphs/contributors)
Special thanks to:
Volition for making FS2 such a great game
Dave Baranec for giving us the code and keeping us sanity checked
+34 -5
View File
@@ -8,9 +8,10 @@ if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
endif()
include(cmake/util.cmake)
include(cmake/embed_file.cmake)
# Set a few policies
set_policy(CMP0051 OLD)
set_policy(CMP0051 NEW)
set_policy(CMP0053 NEW)
set_policy(CMP0054 NEW)
@@ -43,9 +44,14 @@ PROJECT(FS2_Open)
find_program(CCACHE_PROGRAM ccache)
# Currently only GCC support ccache properly without generating additional warnings
if(CCACHE_PROGRAM AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
message(STATUS "Using ccache for compilation: ${CCACHE_PROGRAM}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}")
if(NOT CMAKE_C_COMPILER_LAUNCHER)
message(STATUS "Using ccache for C compilation: ${CCACHE_PROGRAM}")
SET(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
endif()
if(NOT CMAKE_CXX_COMPILER_LAUNCHER)
message(STATUS "Using ccache for C++ compilation: ${CCACHE_PROGRAM}")
SET(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
endif()
endif()
IF(CMAKE_CROSSCOMPILING)
@@ -84,7 +90,6 @@ IF (WIN32)
OPTION(FSO_BUILD_FRED2 "Build FRED2 binary" ON)
elseif(UNIX)
option(FSO_BUILD_APPIMAGE "Build an AppImage package" OFF)
set(APPIMAGE_ASSISTANT "" CACHE STRING "The root directory of an AppImage clone.")
ENDIF(WIN32)
OPTION(FSO_BUILD_TOOLS "Build tools related to FSO" OFF)
@@ -116,6 +121,16 @@ SET(FSO_RUN_ARGUMENTS "" CACHE STRING "Additional arguments passed to a generate
option(FSO_INSTALL_DEBUG_FILES "Install some debug files (currently only PDB files on windows)" OFF)
option(ENABLE_COTIRE "Enable cotire for faster compilation. Enabled by default." ON)
option(FSO_RELEASE_LOGGING "Enable logging output for release builds" OFF)
OPTION(FSO_BUILD_WITH_FFMPEG "Enable the usage of FFmpeg for sound and custscenes" ON)
OPTION(FSO_BUILD_WITH_OPENGL "Enable compilation of the OpenGL renderer" ON)
OPTION(FSO_BUILD_WITH_VULKAN "Enable compilation of the Vulkan renderer" ON)
MARK_AS_ADVANCED(FORCE FSO_CMAKE_DEBUG)
MARK_AS_ADVANCED(FORCE FSO_BUILD_INCLUDED_LIBS)
MARK_AS_ADVANCED(FORCE FSO_USE_OPENALSOFT)
@@ -123,6 +138,11 @@ MARK_AS_ADVANCED(FORCE FSO_USE_LUAJIT)
MARK_AS_ADVANCED(FORCE FSO_DEVELOPMENT_MODE)
MARK_AS_ADVANCED(FORCE FSO_FATAL_WARNINGS)
mark_as_advanced(FORCE FSO_INSTALL_DEBUG_FILES)
mark_as_advanced(FORCE ENABLE_COTIRE)
mark_as_advanced(FORCE FSO_RELEASE_LOGGING)
mark_as_advanced(FORCE FSO_BUILD_WITH_FFMPEG)
mark_as_advanced(FORCE FSO_BUILD_WITH_OPENGL)
mark_as_advanced(FORCE FSO_BUILD_WITH_VULKAN)
# Include cotire file from https://github.com/sakra/cotire/
include(cotire)
@@ -142,11 +162,15 @@ if(FSO_BUILD_APPIMAGE)
include(appimage)
endif()
include(clang-tidy)
# This includes source code for some tools, either used in the build or also for something else
ADD_SUBDIRECTORY(tools)
ADD_SUBDIRECTORY(lib)
ADD_SUBDIRECTORY(parsers)
ADD_SUBDIRECTORY(code)
ADD_SUBDIRECTORY(freespace2)
@@ -186,9 +210,14 @@ include(doxygen)
IF (WIN32)
message(STATUS "Using text to speech: ${FSO_USE_SPEECH}")
message(STATUS "Using voice recogition: ${FSO_USE_VOICEREC}")
message(STATUS "Building FRED2: ${FSO_BUILD_FRED2}")
elseif(UNIX)
message(STATUS "Building AppImage: ${FSO_BUILD_APPIMAGE}")
ENDIF()
message(STATUS "Building FSO tools: ${FSO_BUILD_TOOLS}")
message(STATUS "Building qtFRED: ${FSO_BUILD_QTFRED}")
message(STATUS "Fatal warnings: ${FSO_FATAL_WARNINGS}")
message(STATUS "Release logging: ${FSO_RELEASE_LOGGING}")
message(STATUS "With FFmpeg: ${FSO_BUILD_WITH_FFMPEG}")
message(STATUS "With OpenGL: ${FSO_BUILD_WITH_OPENGL}")
message(STATUS "With Vulkan: ${FSO_BUILD_WITH_VULKAN}")
-14
View File
@@ -1,14 +0,0 @@
Volition Copyright (applies to original FreeSpace2 source code
developed and released by Volition):
"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."
Modifications by members of the FreeSpace Source Code Project are
released under whatever terms the individual authors choose, but the
above notice continues to apply to all fs2_open code.
+128 -19
View File
@@ -1,23 +1,131 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [19.0.0] - 2020-01-25 ([Thread](https://www.hard-light.net/forums/index.php?topic=96226.0))
### Meta
- With this release we decided to drop the "`3.Major_revision.Minor_revision`" versioning scheme in favor of a year based scheme since the Major and Minor versions did not have much meaning anymore. Instead the scheme will now be "`<year>.<number that is incremented every release>.0`". The last 0 is still there because some of our systems expect that. It will be gone at some point.
### Added
- Full Unicode text support: You can now use non-ASCII characters without having to worry about special fonts and special characters. This is an opt-in mod flag.
- Translation features for making it easier to only distribute one version of a mod which includes all languages.
- OpenAL Soft is included by default in binary distributions of FSO now.
- System for dynamically adding new SEXPs. With this a Lua script can expose functionality to the mission which can be used exactly the same as a standard SEXP with all the usual editing features in FRED.
- Support for displaying decals on the surface of an object.
- Integrated support for the [Discord Rich Presence API](https://discordapp.com/rich-presence).
- New markup based user interface system using [libRocket](https://github.com/libRocket/libRocket).
### Changed
- Exposed the movie player to the scripting API for advanced display features
- Various OpenGL optimizations for better graphics performance:
- Animations now use texture arrays
- Model uniforms get sent to the GPU using uniform buffers for less overhead
- Various other minor changes
- Converted pilot files from custom binary format to JSON
- Replaced Blinn-Phong BRDF with GGX BRDF
### Fixed
- Refactored bitmap slot handling and removed the fixed upper limit on the number of bitmaps. No more bmpman corruption!
## [3.8.0] - 2017-08-22 ([Release Thread](https://www.hard-light.net/forums/index.php?topic=93812.0))
### Added
- Support for APNG animations: [APNG](https://en.wikipedia.org/wiki/APNG) is a variant of the established PNG format which allows to store animations instead of single frames in a PNG file. This change allows to use these animation files in FSO which significantly improves usability for modders since they no longer have to store all individual frames as separate images.
- Physically-Based Rendering (PBR): This upgrade of our rendering engine allows to use [PBR](https://en.wikipedia.org/wiki/Physically_based_rendering) assets to make models look more realistic and allow more artistic freedom for modders since they have more control over how a model looks. This also added support for HDR lighting which should improve the overall graphics experience.
- Native particle systems: Particles have always been supported by FSO but the effects that could be created by them were very limited. There were some attempts to fix this by using Lua scripting for more advanced features but that suffered from performance issues. With these new particle systems that feature has been integrated directly into the engine which should improve performance and allow for better effects in the future.
- TrueType Font support: [TrueType](https://en.wikipedia.org/wiki/TrueType) fonts improve the text rendering capabilities of FSO by allowing to use freely scaleable font faces instead of the previous bitmap fonts.
### Changed
- We now use SDL2 on all platforms: SDL is a library for abstracting away the differences between different platforms. We now use SDL2 for all platforms which reduces the amount of platform-specific code tremendously and should result in better usability on all platforms. This was a major change that has been in development for several years. Here are a few key features that were added:
- Pilot and configuration data is now stored in the correct location across all platforms (this allows to run FSO on Windows from the Program Files directory without administrator rights)
- All platforms now use the ini files for storing settings. This fixes a lot of issues with the registry on Windows.
- Better support for input devices. Since SDL handles keyboard, mouse and joystick input we now have better support on newer OS versions. Note: This does not mean that we support multiple joysticks (yet). There is ongoing development effort to support this but this release does not have that yet.
- CMake build system generation: This isn't relevant for players but we are now using [CMake](https://en.wikipedia.org/wiki/CMake) for handling compiling our builds. This improves cross-platform support and allows to implement advanced compilation features across multiple platforms. Modders will like the new "FastDebug" builds which are like the previous "Debug" builds but are compiled with all the optimizations of normal Release builds. That should make modding a lot easier since you can now debug your mod with almost the same performance as a Release build.
- Improved shield effects: Rendering of the shields is now handled by special shaders which improves the overall quality of the effects and allows more freedom for future effects.
- Use OpenGL Core Profile for rendering: This is another major graphical upgrade which adds support for the OpenGL Core profile across all platforms (this was also made possible by the SDL2 integration). This upgrade allows us to use more modern rendering techniques and is especially useful for our Linux users who use the open-source Mesa drivers since our shaders failed to compile with those drivers. Now everyone will be able to enjoy the new graphical features added in this and previous releases. This also made some internal changes to how we handle rendering which improves the usability of our rendering engine within our code.
- Use FFmpeg for video & audio decoding: [FFmpeg](https://www.ffmpeg.org/) is a multi-media library which exposes functionality for decoding video and audio files to their raw form so that we can use that data. Thanks to this library we can now play 1080p cutscenes without any stuttering or frame-timing issues. It also allows to use more advanced audio and video codecs such as H.264 for video or Opus for audio.
## [3.7.4] - 2016-07-04 ([Release thread](http://www.hard-light.net/forums/index.php?topic=92181.0))
### Changed
- Major graphics update including deferred lighting and shadows
- Enhanced sound (up to 128 channels)
### Fixed
- "Tons" of bugfixes
## [3.7.2] - 2015-04-23 ([Release thread](http://www.hard-light.net/forums/index.php?topic=89597.0))
### Added
- MediaVPS 2014 Support
- Autospread on model point shields
- WebUI based multiplayer standalone server (for non-Windows platforms)
- Toggle subsytem scanning, scannable, cargo revealed, hidden from sensors, stealth and friendly stealth added to the `alter-ship-flag` SEXP
- Support added to add more languages besides English, French, German and Polish, leading the way to better localization!
- `player-is-cheating` SEXP
- New ship flag to enable smarter AI use of afterburners. Now it can use them while flying waypoints or attacking capital ships (use the `free-afterburner-use` flag with `alter-ship-flag`)
- Experimental configurations to make AVX builds (see [this post](http://www.hard-light.net/forums/index.php?topic=85566.0) for more explanations)
- Frame profiling code, see what exactly is slowing down FreeSpace. (Mostly for devs or coders)
### Changed
- Unstretched interface screens
- Automatically non stretched HUD gauges and simpler modder options for placing HUD gauges
- `show-subtitle-text` can now display messages as well as raw text
- Allow a user-specified number of credit images
- event.log can now snapshot events checked in a frame and record the status of an event the previous time it was checked as well as the current state
- Allow the specification of the positions of medals, callsigns and labels on the medal screen.
- The number of medals is now dynamic!
- `is-facing` now works for things that aren't ships (like waypoints!)
- allowing `fade-in` and `fade-out` sexps to use any color, not just black, white and red.
## [3.7.0] - 2013-08-31 ([Release thread](http://www.hard-light.net/forums/index.php?topic=85435.0))
### Major Change
- New Flexible Pilot Save File Code (combines single/multi pilots & allows safe switching between unfinished campaigns)
### Changed
- Raised the per-model debris limit to 48 (previously 32).
- Increased the per-frame debris limit to 96 (previously 64)
## [3.6.18] - 2013-03-01 ([Release thread](http://www.hard-light.net/forums/index.php?topic=83889.0))
### Fixed
- Critical damage bug which caused heavy balance issues in the game
## [3.6.16] - 2013-01-31 ([Release thread](http://www.hard-light.net/forums/index.php?topic=83577.0))
### Added
- Diaspora TC support
### Changed
- Performance Improvements
## [3.6.14] - 2012-10-23 - ([Release thread](https://www.hard-light.net/forums/index.php?topic=82648.0))
### Added
- Objecttype tables support for deciding how enemies respond to ship classes when disabled
- Allow modders to set a [mood](http://www.hard-light.net/forums/index.php?topic=81991.msg1639770#msg1639770) for builtin messages and then switch the mood for the mission on the fly using a SEXP
- Allow modders to set the chance of builtin messages being sent, how many will be sent per mission and how long is the delay between two messages
- Allow campaigns to be hidden in the campaign and tech rooms ([Game settings.tbl](https://wiki.hard-light.net/index.php/Game_settings.tbl#.23Ignored_Campaign_File_Names))
- Allow mods to set a default campaign ([Game settings.tbl](https://wiki.hard-light.net/index.php/Game_settings.tbl#.24Default_Campaign_File_Name:))
- New SEXPs
- `set-player-orders`
- `is-event\goal-true\false-msecs-delay`
- `get\set-num-countermeasures`
- `directive-value`
- `invalidate-all-arguments`
- `validate-all-arguments`
- `has-primary-weapon`
- `has-secondary-weapon`
- [`hud-display-gauge`](http://www.hard-light.net/forums/index.php?topic=68837.msg1361711#msg1361711)
- `get-object-speed-x`
- `get-object-speed-y`
- `get-object-speed-z`
### Changed
- Major HUD gauges overhaul
- Split the Locked flag so that you can lock Ships or Weapons on the game loadout screen independently
- Mixed ammo for primary and secondary weapons - [`$Substitute`](http://www.hard-light.net/wiki/index.php/Weapons.tbl#.24Substitute:) - Allows you to have a weapon that fires other weapon ammo in a specific pattern (say a Gatling gun with tracers).
- [`show-subtitle`](https://wiki.hard-light.net/index.php/SCP_SEXPs#show-subtitle) SEXP supports custom fonts
- The active support ship limit per side is now dynamic. See [`set-support-ship`](https://wiki.hard-light.net/index.php/SCP_SEXPs#set-support-ship) for more info.
### Fixed
- Various multiplayer SEXP fixes
- `rotating-subsys-set-time` now accelerates properly
- [Fixed a whole heap of memory, logic and coding errors](http://www.hard-light.net/forums/index.php?topic=78044.0) -- using PVS-Studio: C/C++ source code analysis and checking tool
----
## [Older Changes] - Unformatted
```
ChangeLog for fs2_open. All times are UTC.
Features: September 2013
http://www.hard-light.net/forums/index.php?topic=85700.0
- show-subtitle-text can now display messages as well as raw text - Goober5000
- toggle subsytem scanning, scannable, cargo revealed, hidden from sensors, stealth and friendly stealth added to the alter-ship-flag sexp - karajorma
- Support added to add more languages besides English, French, German and Polish, leading the way to better localization! - karajorma
- event.log can now snapshot events checked in a frame and record the status of an event the previous time it was checked as well as the current state - karajorma
- added a player-is-cheating sexp - The E
- allow a user-specified number of credit images - Goober5000
- allow the specification of the positions of medals, callsigns and labels on the medal screen. - Goober5000
- lua function to check if a ship is warp capable, and access to a ship's auto-aim FOV - zookeeper
- is-facing now works for things that aren't ships (like waypoints!) - zookeeper
- experimental configurations to make AVX builds (see this post for more explainations) - The E
- new ship flag to enable smarter AI use of afterburners. Now it can use them while flying waypoints or attacking capital ships (use the free-afterburner-use flag with alter-ship-flag) - Admiral MS
- the number of medals is now dynamic! - Goober5000
- frame profiling code, see what exactly is slowing down FreeSpace. (Mostly for devs or coders) - Swifty + The E
- allowing fade-in and fade-out sexps to use any color, not just black, white and red. - Goober5000
==================================================================
( massive gap in updates, maybe this will be filled in someday...)
==================================================================
@@ -351,7 +459,7 @@ http://www.hard-light.net/forums/index.php?topic=85700.0
(2.1.2.4), weapon/weapons.cpp (2.1.2.2):
Sorted out some bits and pieces. The background nebula blends now
which is nice. – RT
which is nice. – RT
2002-09-28 12:20 randomtiger
@@ -1886,3 +1994,4 @@ NOTE:
# generated by cvs2cl.pl
# cvs2cl.pl -r -S --utc -f ChangeLog2
```
+22
View File
@@ -0,0 +1,22 @@
Volition Copyright (applies to original FreeSpace2 source code
developed and released by Volition):
>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.
Modifications by members of the FreeSpace Source Code Project are
released under whatever terms the individual authors choose, but the
above notice continues to apply to all fs2_open code.
All modifications made on or after November 1, 2020, shall be released under
the terms within [Unlicense](Unlicense.md). Modifications made before said date are released
under the previous terms with the exception of modifications made by members
of the FreeSpace Source Code Project that opt-in to the terms of Unlicense. Additionally,
a list of contributors who have opted in to the Unlicense terms can be found
in [**Licensing**](https://github.com/scp-fs2open/fs2open.github.com/wiki/Licensing).
See [**Licensing**](https://github.com/scp-fs2open/fs2open.github.com/wiki/Licensing) for more information.
Binary file not shown.
-29
View File
@@ -1,29 +0,0 @@
This is still in pretty rough form.
=== for people building fs2_open:
Win32-MSVC:
Use the Freespace2.dsw workspace and build within the IDE.
Win32-MinGW:
make
Linux and other unix variants (NOT YET COMPLETE)
./configure [options]
make
=== for the project maintainers (people who need to
=== keep the makefiles up to date) and those building
=== from CVS:
./autogen.sh (should only has to be done once)
./configure [options]
make
automake v1.6.1+ and
autoconf v2.54+ are required
+1 -32
View File
@@ -7,36 +7,5 @@ FreeSpace2 *S*ource *C*ode *P*roject
Building
--
Before you do anything, make sure you have updated your git submodules, either by running `git submodule update --init --recursive` or by cloning the repository with the `--recursive` flag.<br/>
<br/>
For building you will need [CMake](http://www.cmake.org/cmake/resources/software.html). Version 3.4 is required. Once you have installed CMake you should create a build directory where the project/make files should be created, **do not create them inside the source tree!**<br>
<br>
On Windows you can use the `cmake-gui` executable to get a nice GUI, on Unix just use `cmake`. Use the newly created directory as build directory (change to this directory on Unix) and run cmake. On Windows this can be done by clicking the `Configure` button. Choose your compiler version and hit `Generate` when configuring is done. <br>
Depending on the makefile generator used build the `all` or `ALL_BUILD` target to compile the project.<br>
### Available variables to control the build
* `FSO_BUILD_WXFRED2`: Build the wxfred2 project, requires wxWidgets
* `FSO_FREESPACE_PATH`: Sets the path of your FreeSpace install, can be used to automatically run the generated executables with the correct working directory, this is an optional variable. By default this will use the value of the `FS2PATH` environment variable.
* `FSO_BUILD_TOOLS`: Build some tools related to FSO
* `CMAKE_BUILD_TYPE`: Sets the binary build type between `Debug` and `Release` (default)
#### Windows only variables
* `FSO_BUILD_FRED2`: Build FRED2, requires a Visual Studio version that ships with MFC
* `FSO_USE_SPEECH`: Build a binary with text-to-speech support
* `FSO_USE_VOICEREC`: Build a binary with voice recognition support
#### Advanced variables
You should only use these variables if you know what you're doing
* `FSO_CMAKE_DEBUG`: Print CMake debugging informations
* `FSO_BUILD_INCLUDED_LIBS`: Build libraries from the included source
* `FSO_USE_OPENALSOFT`: Use [OpenALSoft](http://kcat.strangesoft.net/openal.html) for OpenAL support
* `FSO_USE_LUAJIT`: Use [luajit](http://luajit.org/) as a replacement for lua
* `FSO_DEVELOPMENT_MODE`: Toggles some development behavior, only use if you really need it.
* `FSO_RUN_ARGUMENTS`: If you run an executable from within the project, these arguments will also be passed to the executable
* `FSO_BUILD_POSTFIX`: Sets a postfix to be added to the executable name, may be useful for release candidates.
#### Visual Studio specific variables
* `MSVC_USE_RUNTIME_DLL`: Use the DLL version of the runtime, experimental and not well tested.
* `MSVC_SIMD_INSTRUCTIONS`: The instruction set the executables will be optimized for.
### Generating an installation package
CMake can automatically generate installation packages of the project. To do this you will just need to run the `package` target of the build system and the package will be placed inside your build directory. On Windows you will have to install [NSIS](http://nsis.sourceforge.net/Main_Page) to use this.
The main instructions for building can be found at our github wiki, on the [Building](https://github.com/scp-fs2open/fs2open.github.com/wiki/Building) page.
+24
View File
@@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to [**Unlicense**](https://unlicense.org).
+18
View File
@@ -0,0 +1,18 @@
#Updating Documentation
####The goal of this file is simply to offer a comprehensive checklist of things we must check when updating the documentation.
1. Changelog:
- Is [Changelog.md](https://github.com/scp-fs2open/fs2open.github.com/blob/master/Changelog.md) up-to-date with the latest release?
- Is it in the proper [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format?
2. Build instructions:
- If a programmer who never built FSO before read the build instruction at [Readme.md](https://github.com/scp-fs2open/fs2open.github.com/blob/master/Readme.md), would they manage to build FSO?
- Is the information in the file up-to-date regarding other matters (such as versions of tools mentioned, links to other guides, etc.)?
- Is the information in the [Building](https://github.com/scp-fs2open/fs2open.github.com/wiki/Building) article, and its sub-articles, still up-to-date?
3. Forums:
- Does the [Forum](https://www.hard-light.net/forums/index.php?board=50.0) contain enough clear information to help a new developer find their way into the up-to-date instructions?
- Is there anything that might mislead a new developer to stumble onto old tools, dead links and/or old versions of the project?
4. General documentation files:
- Is the information in the following files up-to-date?
- [About.md](https://github.com/scp-fs2open/fs2open.github.com/blob/master/About.md) (Should contain general information about FS, FS2, HLP, FSO and FSU)
- [Authors.md](https://github.com/scp-fs2open/fs2open.github.com/blob/master/Authors.md) (Should contain information about the original developers, a way to see FSO's contributors, and special thanks to Volition and Dave Baranec)
- [Copying.md](https://github.com/scp-fs2open/fs2open.github.com/blob/master/Copying.md) (Should contain Volition's Copyright terms and a way to check FSO's Licensing info)
+19 -20
View File
@@ -1,4 +1,5 @@
version: 1.0.0.{build}
image: Visual Studio 2015
configuration:
- Debug
- Release
@@ -6,13 +7,13 @@ clone_depth: 10
environment:
matrix:
- BuildID: 0
CMAKE_GENERATOR: Visual Studio 12 2013
PlatformToolset: v120_xp
QT_DIR: C:\Qt\5.7\msvc2013
CMAKE_GENERATOR: Visual Studio 14 2015
PlatformToolset: v140
QT_DIR: C:\Qt\5.9\msvc2015
- BuildID: 1
CMAKE_GENERATOR: Visual Studio 14 2015 Win64
PlatformToolset: v140_xp
QT_DIR: C:\Qt\5.7\msvc2015_64
PlatformToolset: v140
QT_DIR: C:\Qt\5.9\msvc2015_64
before_build:
- git submodule update --init --recursive
build_script:
@@ -23,7 +24,7 @@ test_script:
deploy:
- provider: GitHub
auth_token:
secure: 3kV4efHXwRnfXzmJPRAOs8D7+MhwXUXYeayI/P5y114L09kJa6b6L70beXdW7yYr
secure: h55Scpy+3vmo1Yb7WlSIGA4d9DRnsbzUYc2LYsQdByQHZHbqrqjBpicH0D2FFLEO
on:
ReleaseBuild: true # deploy on release push only
@@ -39,25 +40,23 @@ deploy:
NightlyBuild: true # deploy on nightly push only
- provider: FTP
protocol: ftp
host: swc.fs2downloads.com
username:
secure: EXg2ADoKzMduZF90ip2Q0g==
protocol: sftp
host: porphyrion.feralhosting.com
username:
secure: 36+bVD8eJgI0BVbi7TZ4zQ==
password:
secure: x0LL0uY9yBAQ7JTARhQ6AA==
folder: swc.fs2downloads.com/builds/nightly/$(VersionName)
beta: true
secure: CrzmDVca8AGG08iWPA1gOD4Ge06+wJ3rcBagBGclwYQ=
folder: www/datacorder.porphyrion.feralhosting.com/public_html/builds/nightly/$(VersionName)
on:
NightlyBuild: true # deploy on nightly push only
- provider: FTP
protocol: ftp
host: swc.fs2downloads.com
username:
secure: EXg2ADoKzMduZF90ip2Q0g==
protocol: sftp
host: porphyrion.feralhosting.com
username:
secure: 36+bVD8eJgI0BVbi7TZ4zQ==
password:
secure: x0LL0uY9yBAQ7JTARhQ6AA==
folder: swc.fs2downloads.com/builds/test/$(VersionName)
beta: true
secure: CrzmDVca8AGG08iWPA1gOD4Ge06+wJ3rcBagBGclwYQ=
folder: www/datacorder.porphyrion.feralhosting.com/public_html/builds/test/$(VersionName)
on:
TestBuild: true # deploy on test build push only
+55 -50
View File
@@ -9,56 +9,56 @@ class BuildConfig {
}
$NightlyConfigurations = @(
[BuildConfig]@{
Generator="Visual Studio 14 2015 Win64";
PackageType="Win64";
Toolset="v140_xp";
SimdType="SSE2";
QtDir="C:\Qt\5.7\msvc2015_64";
SourcePackage=$false;
},
[BuildConfig]@{
Generator="Visual Studio 14 2015";
PackageType="Win32";
Toolset="v140_xp";
SimdType="SSE2";
QtDir="C:\Qt\5.7\msvc2015";
SourcePackage=$false;
}
# [BuildConfig]@{
# Generator="Visual Studio 14 2015 Win64";
# PackageType="Win64";
# Toolset="v140";
# SimdType="SSE2";
# QtDir="C:\Qt\5.9\msvc2015_64";
# SourcePackage=$false;
# },
# [BuildConfig]@{
# Generator="Visual Studio 14 2015";
# PackageType="Win32";
# Toolset="v140";
# SimdType="SSE2";
# QtDir="C:\Qt\5.9\msvc2015";
# SourcePackage=$false;
# }
)
$ReleaseConfigurations = @(
[BuildConfig]@{
Generator="Visual Studio 14 2015";
PackageType="Win32";
Toolset="v140_xp";
SimdType="SSE2";
QtDir="C:\Qt\5.7\msvc2015";
SourcePackage=$true;
}
[BuildConfig]@{
Generator="Visual Studio 14 2015";
PackageType="Win32-AVX";
Toolset="v140_xp";
SimdType="AVX";
QtDir="C:\Qt\5.7\msvc2015";
SourcePackage=$false;
}
[BuildConfig]@{
Generator="Visual Studio 14 2015 Win64";
PackageType="Win64";
Toolset="v140_xp";
SimdType="SSE2";
QtDir="C:\Qt\5.7\msvc2015_64";
SourcePackage=$false;
}
[BuildConfig]@{
Generator="Visual Studio 14 2015 Win64";
PackageType="Win64-AVX";
Toolset="v140_xp";
SimdType="AVX";
QtDir="C:\Qt\5.7\msvc2015_64";
SourcePackage=$false;
}
# [BuildConfig]@{
# Generator="Visual Studio 14 2015";
# PackageType="Win32";
# Toolset="v140";
# SimdType="SSE2";
# QtDir="C:\Qt\5.9\msvc2015";
# SourcePackage=$true;
# }
# [BuildConfig]@{
# Generator="Visual Studio 14 2015";
# PackageType="Win32-AVX";
# Toolset="v140";
# SimdType="AVX";
# QtDir="C:\Qt\5.9\msvc2015";
# SourcePackage=$false;
# }
# [BuildConfig]@{
# Generator="Visual Studio 14 2015 Win64";
# PackageType="Win64";
# Toolset="v140";
# SimdType="SSE2";
# QtDir="C:\Qt\5.9\msvc2015_64";
# SourcePackage=$false;
# }
# [BuildConfig]@{
# Generator="Visual Studio 14 2015 Win64";
# PackageType="Win64-AVX";
# Toolset="v140";
# SimdType="AVX";
# QtDir="C:\Qt\5.9\msvc2015_64";
# SourcePackage=$false;
# }
)
$BuildConfigurations = $null
@@ -133,6 +133,8 @@ if ($DeployBuild) {
cmake -DCMAKE_INSTALL_PREFIX="$env:APPVEYOR_BUILD_FOLDER/../install" -DFSO_USE_SPEECH="ON" `
-DFSO_USE_VOICEREC="ON" -DMSVC_SIMD_INSTRUCTIONS="$($buildConfig.SimdType)" `
-DQT5_INSTALL_ROOT="$($buildConfig.QtDir)" -DFSO_BUILD_QTFRED=ON `
-DFSO_INSTALL_DEBUG_FILES="ON" `
-G "$($buildConfig.Generator)" -T "$($buildConfig.Toolset)" ..
$Configs = @("Release", "FastDebug")
@@ -144,11 +146,14 @@ if ($DeployBuild) {
}
}
7z a "$($PackageName)-builds-$($buildConfig.PackageType).zip" "$env:APPVEYOR_BUILD_FOLDER/../install/*"
7z a -xr'!*.pdb' "$($PackageName)-builds-$($buildConfig.PackageType).zip" "$env:APPVEYOR_BUILD_FOLDER/../install/*"
Push-AppveyorArtifact "$($PackageName)-builds-$($buildConfig.PackageType).zip"
7z a "$($PackageName)-debug-$($buildConfig.PackageType).7z" "$env:APPVEYOR_BUILD_FOLDER/../install/*.pdb"
Push-AppveyorArtifact "$($PackageName)-debug-$($buildConfig.PackageType).7z"
} else {
cmake -DFSO_USE_SPEECH="ON" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="ON" -DFSO_BUILD_TESTS="ON" -DMSVC_SIMD_INSTRUCTIONS=SSE2 `
-DFSO_BUILD_QTFRED=ON -DQT5_INSTALL_ROOT="$env:QT_DIR" -DFSO_BUILD_FRED2="OFF" `
-DFSO_BUILD_QTFRED=ON -DQT5_INSTALL_ROOT="$env:QT_DIR" -DFSO_BUILD_FRED2="ON" `
-G "$Env:CMAKE_GENERATOR" -T "$Env:PlatformToolset" ..
cmake --build . --config "$Env:CONFIGURATION" -- /verbosity:minimal
+268
View File
@@ -0,0 +1,268 @@
#!/usr/bin/env python3
#
#===- clang-tidy-diff.py - ClangTidy Diff Checker ------------*- python -*--===#
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===------------------------------------------------------------------------===#
r"""
ClangTidy Diff Checker
======================
This script reads input from a unified diff, runs clang-tidy on all changed
files and outputs clang-tidy warnings in changed lines only. This is useful to
detect clang-tidy regressions in the lines touched by a specific patch.
Example usage for git/svn users:
git diff -U0 HEAD^ | clang-tidy-diff.py -p1
svn diff --diff-cmd=diff -x-U0 | \
clang-tidy-diff.py -fix -checks=-*,modernize-use-override
"""
import argparse
import glob
import json
import multiprocessing
import os
import re
import shutil
import subprocess
import sys
import tempfile
import threading
import traceback
try:
import yaml
except ImportError:
yaml = None
is_py2 = sys.version[0] == '2'
if is_py2:
import Queue as queue
else:
import queue as queue
def run_tidy(task_queue, lock, timeout):
watchdog = None
while True:
command = task_queue.get()
try:
proc = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
if timeout is not None:
watchdog = threading.Timer(timeout, proc.kill)
watchdog.start()
stdout, stderr = proc.communicate()
with lock:
sys.stdout.write(stdout.decode('utf-8'))
sys.stdout.flush()
if stderr:
sys.stderr.write(stderr.decode('utf-8'))
sys.stderr.flush()
except Exception as e:
with lock:
sys.stderr.write('Failed: ' + str(e) + ': '.join(command) + '\n')
finally:
with lock:
if (not timeout is None) and (not watchdog is None):
if not watchdog.is_alive():
sys.stderr.write('Terminated by timeout: ' +
' '.join(command) + '\n')
watchdog.cancel()
task_queue.task_done()
def start_workers(max_tasks, tidy_caller, task_queue, lock, timeout):
for _ in range(max_tasks):
t = threading.Thread(target=tidy_caller, args=(task_queue, lock, timeout))
t.daemon = True
t.start()
def merge_replacement_files(tmpdir, mergefile):
"""Merge all replacement files in a directory into a single file"""
# The fixes suggested by clang-tidy >= 4.0.0 are given under
# the top level key 'Diagnostics' in the output yaml files
mergekey = "Diagnostics"
merged = []
for replacefile in glob.iglob(os.path.join(tmpdir, '*.yaml')):
content = yaml.safe_load(open(replacefile, 'r'))
if not content:
continue # Skip empty files.
merged.extend(content.get(mergekey, []))
if merged:
# MainSourceFile: The key is required by the definition inside
# include/clang/Tooling/ReplacementsYaml.h, but the value
# is actually never used inside clang-apply-replacements,
# so we set it to '' here.
output = { 'MainSourceFile': '', mergekey: merged }
with open(mergefile, 'w') as out:
yaml.safe_dump(output, out)
else:
# Empty the file:
open(mergefile, 'w').close()
def main():
parser = argparse.ArgumentParser(description=
'Run clang-tidy against changed files, and '
'output diagnostics only for modified '
'lines.')
parser.add_argument('-clang-tidy-binary', metavar='PATH',
default='clang-tidy',
help='path to clang-tidy binary')
parser.add_argument('-p', metavar='NUM', default=0,
help='strip the smallest prefix containing P slashes')
parser.add_argument('-regex', metavar='PATTERN', default=None,
help='custom pattern selecting file paths to check '
'(case sensitive, overrides -iregex)')
parser.add_argument('-iregex', metavar='PATTERN', default=
r'.*\.(cpp|cc|c\+\+|cxx|c|cl|h|hpp|m|mm|inc)',
help='custom pattern selecting file paths to check '
'(case insensitive, overridden by -regex)')
parser.add_argument('-j', type=int, default=1,
help='number of tidy instances to be run in parallel.')
parser.add_argument('-timeout', type=int, default=None,
help='timeout per each file in seconds.')
parser.add_argument('-fix', action='store_true', default=False,
help='apply suggested fixes')
parser.add_argument('-checks',
help='checks filter, when not specified, use clang-tidy '
'default',
default='')
parser.add_argument('-path', dest='build_path',
help='Path used to read a compile command database.')
if yaml:
parser.add_argument('-export-fixes', metavar='FILE', dest='export_fixes',
help='Create a yaml file to store suggested fixes in, '
'which can be applied with clang-apply-replacements.')
parser.add_argument('-extra-arg', dest='extra_arg',
action='append', default=[],
help='Additional argument to append to the compiler '
'command line.')
parser.add_argument('-extra-arg-before', dest='extra_arg_before',
action='append', default=[],
help='Additional argument to prepend to the compiler '
'command line.')
parser.add_argument('-quiet', action='store_true', default=False,
help='Run clang-tidy in quiet mode')
clang_tidy_args = []
argv = sys.argv[1:]
if '--' in argv:
clang_tidy_args.extend(argv[argv.index('--'):])
argv = argv[:argv.index('--')]
args = parser.parse_args(argv)
# Extract changed lines for each file.
filename = None
lines_by_file = {}
for line in sys.stdin:
match = re.search('^\+\+\+\ \"?(.*?/){%s}([^ \t\n\"]*)' % args.p, line)
if match:
filename = match.group(2)
if filename is None:
continue
if args.regex is not None:
if not re.match('^%s$' % args.regex, filename):
continue
else:
if not re.match('^%s$' % args.iregex, filename, re.IGNORECASE):
continue
match = re.search('^@@.*\+(\d+)(,(\d+))?', line)
if match:
start_line = int(match.group(1))
line_count = 1
if match.group(3):
line_count = int(match.group(3))
if line_count == 0:
continue
end_line = start_line + line_count - 1
lines_by_file.setdefault(filename, []).append([start_line, end_line])
if not any(lines_by_file):
print("No relevant changes found.")
sys.exit(0)
max_task_count = args.j
if max_task_count == 0:
max_task_count = multiprocessing.cpu_count()
max_task_count = min(len(lines_by_file), max_task_count)
tmpdir = None
if yaml and args.export_fixes:
tmpdir = tempfile.mkdtemp()
# Tasks for clang-tidy.
task_queue = queue.Queue(max_task_count)
# A lock for console output.
lock = threading.Lock()
# Run a pool of clang-tidy workers.
start_workers(max_task_count, run_tidy, task_queue, lock, args.timeout)
# Form the common args list.
common_clang_tidy_args = []
if args.fix:
common_clang_tidy_args.append('-fix')
if args.checks != '':
common_clang_tidy_args.append('-checks=' + args.checks)
if args.quiet:
common_clang_tidy_args.append('-quiet')
if args.build_path is not None:
common_clang_tidy_args.append('-p=%s' % args.build_path)
for arg in args.extra_arg:
common_clang_tidy_args.append('-extra-arg=%s' % arg)
for arg in args.extra_arg_before:
common_clang_tidy_args.append('-extra-arg-before=%s' % arg)
for name in lines_by_file:
line_filter_json = json.dumps(
[{"name": name, "lines": lines_by_file[name]}],
separators=(',', ':'))
# Run clang-tidy on files containing changes.
command = [args.clang_tidy_binary]
command.append('-line-filter=' + line_filter_json)
if yaml and args.export_fixes:
# Get a temporary file. We immediately close the handle so clang-tidy can
# overwrite it.
(handle, tmp_name) = tempfile.mkstemp(suffix='.yaml', dir=tmpdir)
os.close(handle)
command.append('-export-fixes=' + tmp_name)
command.extend(common_clang_tidy_args)
command.append(name)
command.extend(clang_tidy_args)
task_queue.put(command)
# Wait for all threads to be done.
task_queue.join()
if yaml and args.export_fixes:
print('Writing fixes to ' + args.export_fixes + ' ...')
try:
merge_replacement_files(tmpdir, args.export_fixes)
except:
sys.stderr.write('Error exporting fixes.\n')
traceback.print_exc()
if tmpdir:
shutil.rmtree(tmpdir)
if __name__ == '__main__':
main()
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -e
SCRIPT=$(readlink -f "$0")
HERE=$(dirname "$SCRIPT")
COMMIT_RANGE=$1..$2
if ! git rev-list $COMMIT_RANGE 2>&1 >/dev/null; then
echo "\$COMMIT_RANGE ($COMMIT_RANGE) is not valid for this build (probably caused by a rebase)."
exit 0
fi
# In order to get a proper diff without irrelevant changes, we need to determine where we branched off from the base
# branch
BASE_COMMIT=$(git merge-base $1 $2)
echo "Running clang-tidy on changed files"
git diff -U0 --no-color "$BASE_COMMIT..$2" | \
$HERE/clang-tidy-diff.py -path "$(pwd)/build" -p1 \
-regex '(code(?!\/graphics\/shaders\/compiled)|freespace2|qtfred|test|build|tools)\/.*\.(cpp|h)' \
-clang-tidy-binary /usr/bin/clang-tidy-9 -j$(nproc) -export-fixes "$(pwd)/clang-fixes.yaml"
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
if [ "$COMPILER" = "gcc-5" ]; then
export CC=gcc-5
export CXX=g++-5
fi
if [ "$COMPILER" = "gcc-10" ]; then
export CC=gcc-10
export CXX=g++-10
fi
if [ "$COMPILER" = "clang-9" ]; then
# Work around bug in clang that uses the wrong installation directory: https://bugs.llvm.org/show_bug.cgi?id=47460
export CC=$(readlink -f $(which clang-9))
export CXX=$(readlink -f $(which clang++-9))
fi
LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH
CXXFLAGS="-m64 -mtune=generic -mfpmath=sse -msse -msse2 -pipe -Wno-unknown-pragmas"
CFLAGS="-m64 -mtune=generic -mfpmath=sse -msse -msse2 -pipe -Wno-unknown-pragmas"
CMAKE_OPTIONS="$JOB_CMAKE_OPTIONS"
if [[ "$COMPILER" =~ ^clang.*$ ]]; then
CMAKE_OPTIONS="$CMAKE_OPTIONS -DCLANG_USE_LIBCXX=ON"
fi
mkdir build
cd build
export CXXFLAGS
export CFLAGS
export LD_LIBRARY_PATH
cmake -G Ninja -DFSO_FATAL_WARNINGS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON $CMAKE_OPTIONS \
-DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_BUILD_APPIMAGE=ON -DCMAKE_BUILD_TYPE=$CONFIGURATION \
-DFFMPEG_USE_PRECOMPILED=ON -DFSO_BUILD_TESTS=ON -DFSO_BUILD_INCLUDED_LIBS=ON -DFSO_BUILD_QTFRED=ON \
-DSHADERS_ENABLE_COMPILATION=ON ..
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
SCRIPT=$(readlink -f "$0")
HERE=$(dirname "$SCRIPT")
OS="$1"
source $HERE/dist_functions.sh
if [ "$OS" = "Linux" ]; then
tar -cvzf "$(get_package_name)-builds-Linux.tar.gz" *
echo "::set-output name=package_path::$(pwd)/$(get_package_name)-builds-Linux.tar.gz"
echo "::set-output name=package_name::$(get_package_name)-builds-Linux.tar.gz"
echo "::set-output name=package_mime::$(file -b --mime-type "$(pwd)/$(get_package_name)-builds-Linux.tar.gz")"
elif [ "$OS" = "Windows" ]; then
7z a -xr'!*.pdb' "$(get_package_name)-builds-$ARCH-$SIMD.zip" "*"
echo "::set-output name=package_path::$(pwd)/$(get_package_name)-builds-$ARCH-$SIMD.zip"
echo "::set-output name=package_name::$(get_package_name)-builds-$ARCH-$SIMD.zip"
echo "::set-output name=package_mime::$(file -b --mime-type "$(pwd)/$(get_package_name)-builds-$ARCH-$SIMD.zip")"
7z a "$(get_package_name)-debug-$ARCH-$SIMD.7z" "*.pdb"
echo "::set-output name=debug_path::$(pwd)/$(get_package_name)-debug-$ARCH-$SIMD.7z"
echo "::set-output name=debug_name::$(get_package_name)-debug-$ARCH-$SIMD.7z"
echo "::set-output name=debug_mime::$(file -b --mime-type "$(pwd)/$(get_package_name)-debug-$ARCH-$SIMD.7z")"
else
echo "Invalid OS: $OS"
fi
+70
View File
@@ -0,0 +1,70 @@
function get_package_name() {
if git describe --match 'nightly_*' --exact-match 2>/dev/null >/dev/null; then
echo -n "$(git describe --match "nightly_*" --exact-match)"
return
fi
if git describe --match 'release_*' --exact-match 2>/dev/null >/dev/null; then
echo -n "$(git describe --match "release_*" --exact-match | sed 's/release_/fs2_open_/i')"
return
fi
if [[ "$(git branch --show-current)" =~ ^test\/(.*)$ ]]; then
echo -n "test_${BASH_REMATCH[1]}"
return
fi
echo "unknown_config"
}
function get_version_name() {
if git describe --match 'nightly_*' --exact-match 2>/dev/null >/dev/null; then
local tag_name=$(git describe --match "nightly_*" --exact-match)
# Use the bash regex matching for getting the relevant part of the tag name
[[ $tag_name =~ ^nightly_(.*)$ ]]
echo -n "${BASH_REMATCH[1]}"
return
fi
if git describe --match 'release_*' --exact-match 2>/dev/null >/dev/null; then
local tag_name=$(git describe --match "release_*" --exact-match)
# Use the bash regex matching for getting the relevant part of the tag name
[[ $tag_name =~ ^release_(.*)$ ]]
echo -n "${BASH_REMATCH[1]}"
return
fi
if [[ "$(git branch --show-current)" =~ ^test\/(.*)$ ]]; then
echo -n "${BASH_REMATCH[1]}"
return
fi
echo "unknown_config"
}
function upload_files_to_sftp() {
# We need empty glob patterns to "disappear" in the for loop below since this will be run for different configurations
# where it may be possible that some of the file patterns will not be present
shopt -s nullglob
echo "cd $2/" > sftp_batch
echo "mkdir $(get_version_name)" >> sftp_batch
# Create directory but do not cause an error if it already exists
sshpass -e sftp -oBatchMode=no -o "StrictHostKeyChecking no" -b sftp_batch $1 || true
echo "cd $2/$(get_version_name)/" > sftp_batch
for file in *.tar.gz *.7z *.zip; do
echo "put $file" >> sftp_batch
done
echo "bye" >> sftp_batch
sshpass -e sftp -oBatchMode=no -o "StrictHostKeyChecking no" -b sftp_batch $1
rm sftp_batch
}
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
INSTALL_FOLDER=$1
# Install Freespace2 targets
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER -DCOMPONENT=Unspecified -P cmake_install.cmake
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER -DCOMPONENT=Freespace2 -P cmake_install.cmake
# We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name
FILENAME="$(find $INSTALL_FOLDER/bin -name 'fs2_open_*' -type f -printf "%f\n").AppImage"
appimagetool -n $INSTALL_FOLDER "$INSTALL_FOLDER/$FILENAME"
chmod +x "$INSTALL_FOLDER/$FILENAME"
ls -al $INSTALL_FOLDER
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
SCRIPT=$(readlink -f "$0")
HERE=$(dirname "$SCRIPT")
export LD_LIBRARY_PATH=$(pwd)/bin/lib:$LD_LIBRARY_PATH
if [ "$CONFIGURATION" = "Debug" ]; then
valgrind --leak-check=full --error-exitcode=1 --gen-suppressions=all \
--suppressions="$HERE/valgrind.supp" ./bin/unittests --gtest_shuffle
else
./bin/unittests --gtest_shuffle
fi
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -e
UPLOAD_TYPE=$1
SCRIPT=$(readlink -f "$0")
HERE=$(dirname "$SCRIPT")
source $HERE/dist_functions.sh
if [ "$UPLOAD_TYPE" = "nightly" ]; then
SSHPASS=$INDIEGAMES_SSHPASS upload_files_to_sftp "$INDIEGAMES_USER@scp.indiegames.us" "public_html/builds/nightly"
SSHPASS=$DATACORDER_SSHPASS upload_files_to_sftp "$DATACORDER_USER@porphyrion.feralhosting.com" "www/datacorder.porphyrion.feralhosting.com/public_html/builds/nightly"
elif [ "$UPLOAD_TYPE" = "test" ]; then
SSHPASS=$DATACORDER_SSHPASS upload_files_to_sftp "$DATACORDER_USER@porphyrion.feralhosting.com" "www/datacorder.porphyrion.feralhosting.com/public_html/builds/test"
else
echo "Unknown upload type $UPLOAD_TYPE"
exit 1
fi
+163
View File
@@ -0,0 +1,163 @@
{
liblsan Invalid read
Memcheck:Addr8
obj:/usr/lib64/liblsan.so.0.0.0
obj:/usr/lib64/liblsan.so.0.0.0
obj:/usr/lib64/liblsan.so.0.0.0
obj:*
obj:*
obj:*
}
{
Travis memleak
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_dl_signal_error
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.2.5
obj:/usr/lib/x86_64-linux-gnu/libmirclient.so.7
fun:call_init.part.0
fun:call_init
fun:_dl_init
fun:dl_open_worker
fun:_dl_catch_error
}
{
CLang Lua unitialized value error
Memcheck:Cond
...
fun:luaH_get
fun:lua_rawget
fun:_ZN12_GLOBAL__N_117ade_index_handlerEP9lua_State
}
{
False-positive uninitialized variable warning
Memcheck:Cond
fun:_Z23cf_check_location_flagsjj
fun:_Z29cf_create_default_path_stringPcjiPKcbj
...
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:_Znwm
obj:*
obj:*
obj:*
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
fun:_Z7gr_initOSt10unique_ptrIN2os18GraphicsOperationsESt14default_deleteIS1_EEiiii
fun:_ZN4test13FSTestFixture5SetUpEv
fun:_ZN7testing8internal38HandleSehExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
fun:_ZN7testing8internal35HandleExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
fun:_ZN7testing4Test3RunEv
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:_Znwm
obj:*
obj:*
obj:*
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
fun:_Z7gr_initOSt10unique_ptrIN2os18GraphicsOperationsESt14default_deleteIS1_EEiiii
fun:_ZN4test13FSTestFixture5SetUpEv
fun:_ZN8FontTest5SetUpEv
fun:_ZN7testing8internal38HandleSehExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
fun:_ZN7testing8internal35HandleExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_Znwm
obj:*
obj:*
obj:*
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
fun:_Z7gr_initONSt3__110unique_ptrIN2os18GraphicsOperationsENS_14default_deleteIS2_EEEEiiii
fun:_ZN4test13FSTestFixture5SetUpEv
fun:_ZN8FontTest5SetUpEv
fun:_ZN7testing8internal38HandleSehExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_Znwm
obj:*
obj:*
obj:*
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
fun:_Z7gr_initONSt3__110unique_ptrIN2os18GraphicsOperationsENS_14default_deleteIS2_EEEEiiii
fun:_ZN4test13FSTestFixture5SetUpEv
fun:_ZN8FontTest5SetUpEv
fun:_ZN7testing8internal38HandleSehExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_Znwm
obj:*
obj:*
obj:*
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
obj:/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.4.0
fun:_Z7gr_initONSt3__110unique_ptrIN2os18GraphicsOperationsENS_14default_deleteIS2_EEEEiiii
fun:_ZN4test13FSTestFixture5SetUpEv
fun:_ZN7testing8internal38HandleSehExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
fun:_ZN7testing8internal35HandleExceptionsInMethodIfSupportedINS_4TestEvEET0_PT_MS4_FS3_vEPKc
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_dl_signal_error
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.2.5
obj:*
obj:*
fun:call_init.part.0
fun:call_init
fun:_dl_init
fun:dl_open_worker
}
{
dlopen leak
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_dl_exception_create
fun:_dl_signal_error
fun:_dl_map_object
fun:dl_open_worker
fun:_dl_catch_exception
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_exception
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.2.5
}
+11 -2
View File
@@ -3,9 +3,18 @@
set -ex
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
# Nothing to do here
:
export DEBIAN_FRONTEND=noninteractive
sudo add-apt-repository -y "ppa:msulikowski/valgrind" # For fixing a bug with valgrind 3.11 which does not recognize the rdrand instruction
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
sudo add-apt-repository -y 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
sudo apt-get -yq update
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
# Nothing to do here
:
elif [ "$TRAVIS_OS_NAME" = "windows" ]; then
# Nothing to do here
:
fi
+20 -13
View File
@@ -2,33 +2,32 @@
set -ex
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
mkdir -p /tmp/builds
if [ "$RELEASE_BUILD" = true ]; then
# Package the source code in release builds
PARENT_DIR="$(basename "$PWD")"
(cd .. && tar -czvf /tmp/builds/$PACKAGE_NAME-source-Unix.tar.gz --exclude-vcs "$PARENT_DIR")
fi
fi
mkdir -p build
cd build
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
if [ "$RELEASE_BUILD" = true ]; then
PARENT_DIR="$(basename $PWD)"
(cd .. && tar -czvf /tmp/builds/$PACKAGE_NAME-source-Unix.tar.gz --exclude-vcs "$PARENT_DIR")
fi
CXXFLAGS="-m64 -mtune=generic -mfpmath=sse -msse -msse2 -pipe -Wno-unknown-pragmas"
CFLAGS="-m64 -mtune=generic -mfpmath=sse -msse -msse2 -pipe -Wno-unknown-pragmas"
if [[ "$CC" =~ ^clang.*$ ]]; then
CXXFLAGS="$CXXFLAGS -stdlib=libc++"
fi
export CXXFLAGS
export CFLAGS
CMAKE="cmake -G Ninja -DFSO_FATAL_WARNINGS=ON"
CMAKE="cmake -G Ninja -DFSO_FATAL_WARNINGS=ON $CMAKE_OPTIONS"
if [ "$BUILD_DEPLOYMENT" = true ]; then
for config in $BUILD_CONFIGS
do
mkdir -p $config
cd $config
eval $CMAKE -DFSO_INSTALL_DEBUG_FILES=ON -DCMAKE_BUILD_TYPE=$config -DCMAKE_INSTALL_PREFIX="/tmp/release/$config" \
-DFSO_BUILD_APPIMAGE=ON -DAPPIMAGE_ASSISTANT="$HOME/AppImageAssistant" \
-DFSO_BUILD_INCLUDED_LIBS=ON -DFFMPEG_USE_PRECOMPILED=ON ../..
-DFSO_BUILD_APPIMAGE=ON -DFSO_BUILD_INCLUDED_LIBS=ON -DFFMPEG_USE_PRECOMPILED=ON -DFSO_BUILD_QTFRED=OFF ../..
cd ..
done
else
@@ -38,6 +37,14 @@ elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
if [ "$BUILD_DEPLOYMENT" = true ]; then
cmake -G "Xcode" -DFSO_FATAL_WARNINGS=ON -DFSO_INSTALL_DEBUG_FILES=ON -DCMAKE_INSTALL_PREFIX="/tmp/release" ..
else
cmake -G "Xcode" ..
cmake -G "Xcode" $CMAKE_OPTIONS ..
fi
elif [ "$TRAVIS_OS_NAME" = "windows" ]; then
if [ "$CMAKE_GENERATOR" = "Ninja" ]; then
cmake -DFSO_USE_SPEECH="OFF" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \
-DFSO_BUILD_FRED2="OFF" -G "$CMAKE_GENERATOR" ..
else
cmake -DFSO_USE_SPEECH="ON" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \
-DMSVC_SIMD_INSTRUCTIONS=SSE2 -DFSO_BUILD_FRED2="ON" -G "$CMAKE_GENERATOR" -T "$CMAKE_TOOLSET" ..
fi
fi
+5
View File
@@ -58,6 +58,11 @@ if [ "$BUILD_DEPLOYMENT" = true ]; then
echo "Skipping non-release configuration";
exit 0;
fi
if [ "$TRAVIS_OS_NAME" = "windows" ]; then
echo "Skipping non-release platform"
exit 0
fi
fi
export RELEASE_BUILD
+57 -22
View File
@@ -10,27 +10,62 @@ if [[ ! "$(curl -V)" == *"sftp"* ]]; then
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
# Since the Travis CI people are not capable of enabling SSH/SCP support for their libcurl we need to build that manually...
# These commands are based on the tutorial from here: http://zeroset.mnim.org/2013/03/14/sftp-support-for-curl-in-ubuntu-12-10-quantal-quetzal-and-later/
mkdir /tmp/curl
cd /tmp/curl
sudo apt-get update
sudo apt-get install build-essential debhelper libssh2-1-dev libgnutls-dev libidn11-dev libkrb5-dev libldap2-dev libnss3-dev librtmp-dev libtool openssh-server quilt
apt-get source curl
sudo apt-get build-dep curl
if [ -f ~/curl_cache/curl*.deb ]; then
cd ~/curl_cache
sudo dpkg -i libcurl3*.deb
sudo dpkg -i curl*.deb
else
# Since the Travis CI people are not capable of enabling SSH/SCP support for their libcurl we need to build that manually...
# These commands are based on the tutorial from here: http://zeroset.mnim.org/2013/03/14/sftp-support-for-curl-in-ubuntu-12-10-quantal-quetzal-and-later/
mkdir /tmp/curl
cd /tmp/curl
sudo apt-get update
sudo apt-get install build-essential debhelper libssh2-1-dev libgnutls-dev libidn11-dev libkrb5-dev libldap2-dev libnss3-dev librtmp-dev libtool openssh-server quilt
apt-get source curl
sudo apt-get build-dep curl
cd curl-*
export DEB_BUILD_OPTIONS="nocheck"
sudo dpkg-buildpackage -uc -us -j"$(grep -c ^processor /proc/cpuinfo)"
cd curl-*
export DEB_BUILD_OPTIONS="nocheck"
sudo dpkg-buildpackage -uc -us -j"$(grep -c ^processor /proc/cpuinfo)"
cd ..
dpkg -l | grep curl
ls -al
sudo dpkg -i libcurl3*.deb
sudo dpkg -i curl*.deb
cd ..
dpkg -l | grep curl
ls -al
if [ ! -d ~/curl_cache ]; then
mkdir ~/curl_cache
fi
cp libcurl3*.deb curl*.deb ~/curl_cache
sudo dpkg -i libcurl3*.deb
sudo dpkg -i curl*.deb
fi
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
brew install curl --with-libssh2
export PATH="/usr/local/opt/curl/bin:$PATH"
brew install libssh2
if [ -d ~/curl_cache/curl ]; then
cd ~/curl_cache/curl
sudo make install
else
mkdir /tmp/curl
cd /tmp/curl
curl -LO "https://curl.haxx.se/download/curl-7.64.0.tar.bz2"
tar -xjf curl-7.64.0.tar.bz2
cd curl-7.64.0
./configure --disable-debug --disable-dependency-tracking --disable-silent-rules --with-libssh2 --with-darwinssl --without-ca-bundle --without-ca-path
make -j"$(sysctl hw.logicalcpu | cut -d " " -f 2)"
if [ ! -d ~/curl_cache ]; then
mkdir ~/curl_cache
fi
cp -a . ~/curl_cache/curl
sudo make install
fi
export PATH=/usr/local/bin:$PATH
fi
# After
@@ -42,13 +77,13 @@ cd /tmp/builds
for file in *; do
if [ "$TEST_BUILD" = true ]; then
# Upload to fs2downloads
curl -k "ftp://swc.fs2downloads.com/swc.fs2downloads.com/builds/test/$VERSION_NAME/" --user "$FS2DOWNLOADS_USER:$FS2DOWNLOADS_PASSWORD" -T "$file" --ftp-create-dirs
# Upload to datacorder
curl -k "sftp://porphyrion.feralhosting.com/www/datacorder.porphyrion.feralhosting.com/public_html/builds/test/$VERSION_NAME/" --user "$DATACORDER_USER:$DATACORDER_PASSWORD" -T "$file" --ftp-create-dirs
else
# Upload to indiegames
curl -k "sftp://scp.indiegames.us/~/public_html/builds/nightly/$VERSION_NAME/" --user "$INDIEGAMES_USER:$INDIEGAMES_PASSWORD" -T "$file" --ftp-create-dirs
# Upload to fs2downloads
curl -k "ftp://swc.fs2downloads.com/swc.fs2downloads.com/builds/nightly/$VERSION_NAME/" --user "$FS2DOWNLOADS_USER:$FS2DOWNLOADS_PASSWORD" -T "$file" --ftp-create-dirs
# Upload to datacorder
curl -k "sftp://porphyrion.feralhosting.com/~/www/datacorder.porphyrion.feralhosting.com/public_html/builds/nightly/$VERSION_NAME/" --user "$DATACORDER_USER:$DATACORDER_PASSWORD" -T "$file" --ftp-create-dirs
fi
done
+26 -10
View File
@@ -1,31 +1,47 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
set -ex
FILENAME=
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
if [ ! -d "$HOME/cmake/bin" ]; then
export DEBIAN_FRONTEND=noninteractive
if [ ! -d "$HOME/cmake-3.8/bin" ]; then
# If the cache does not currently contain CMake then download and install it
FILENAME=cmake-3.4.3-Linux-x86_64
mkdir -p $HOME/cmake-3.8/
mkdir -p $HOME/cmake/
wget -O /tmp/cmake.tar.gz --no-check-certificate https://www.cmake.org/files/v3.4/$FILENAME.tar.gz
tar -xzf /tmp/cmake.tar.gz -C $HOME/cmake/ --strip-components=1
wget -O /tmp/cmake.tar.gz --no-check-certificate https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz
tar -xzf /tmp/cmake.tar.gz -C $HOME/cmake-3.8/ --strip-components=1
fi
export PATH=$HOME/cmake/bin:$PATH
export PATH=$HOME/cmake-3.8/bin:$PATH
cd $HOME
if [ "${BUILD_DEPLOYMENT}" = true ]; then
wget -c "https://github.com/probonopd/AppImageKit/releases/download/5/AppImageAssistant" # (64-bit)
chmod a+x ./AppImageAssistant
wget -O appimagetool -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" # (64-bit)
chmod a+x ./appimagetool
wget -O linuxdeployqt -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" # (64-bit)
chmod a+x ./linuxdeployqt
fi
sudo apt-get -yq install valgrind
if [[ "$CC" = "clang-9" ]]; then
sudo apt-get -yq install clang-9 clang-tidy-9
fi
if [[ "$CC" = "clang-4.0" ]]; then
# Fix a header bug present in ubuntu...
sudo ln -s /usr/include/libcxxabi/__cxxabi_config.h /usr/include/c++/v1/__cxxabi_config.h
fi
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
gem install xcpretty
brew update
brew outdated cmake || brew upgrade cmake
elif [ "$TRAVIS_OS_NAME" = "windows" ]; then
choco install mingw ninja
fi
cmake --version
+34 -1
View File
@@ -8,7 +8,40 @@ if [ "$TRAVIS_OS_NAME" = "linux" ]; then
for config in $BUILD_CONFIGS
do
cd "$config"
ninja appimage
# Compile all targets
ninja all
# Install Freespace2 targets
cmake -DCMAKE_INSTALL_PREFIX=/tmp/release/$config/fso -DCOMPONENT=Unspecified -P cmake_install.cmake
cmake -DCMAKE_INSTALL_PREFIX=/tmp/release/$config/fso -DCOMPONENT=Freespace2 -P cmake_install.cmake
# We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name
FILENAME="$(find /tmp/release/$config/fso/bin -name 'fs2_open_*' -type f -printf "%f\n").AppImage"
$HOME/appimagetool -n /tmp/release/$config/fso "/tmp/release/$config/fso/$FILENAME"
: <<'END'
# Install qtFRED targets
cmake -DCMAKE_INSTALL_PREFIX=/tmp/release/$config/qtfred/usr -DCOMPONENT=Unspecified -P cmake_install.cmake
cmake -DCMAKE_INSTALL_PREFIX=/tmp/release/$config/qtfred/usr -DCOMPONENT=qtFRED -P cmake_install.cmake
PREV="$(pwd)"
cd /tmp/release/$config/qtfred
unset QTDIR; unset QT_PLUGIN_PATH; unset LD_LIBRARY_PATH
$HOME/linuxdeployqt usr/qtfred.desktop -bundle-non-qt-libs
# Move our AppRun script to the right location
mv usr/AppRun AppRun
echo "Embed newer libstdc++ for distros that don't come with it (ubuntu 14.04)";
mkdir -p usr/optional/; mkdir -p usr/optional/libstdc++/;
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./usr/optional/libstdc++/;
$HOME/appimagetool -n . "$(find /tmp/release/$config/qtfred/usr/bin -name 'qtfred_*' -type f -printf "%f\n").AppImage"
cd "$PREV"
END
cd ..
done
+14 -4
View File
@@ -5,16 +5,26 @@ set -e
cd build
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
ninja all
ninja -k 20 all
valgrind --leak-check=full --error-exitcode=1 --gen-suppressions=all \
--suppressions="$TRAVIS_BUILD_DIR/ci/travis/valgrind.supp" ./bin/unittests --gtest_shuffle
if [ "$CONFIGURATION" = "Debug" ]; then
valgrind --leak-check=full --error-exitcode=1 --gen-suppressions=all \
--suppressions="$TRAVIS_BUILD_DIR/ci/travis/valgrind.supp" ./bin/unittests --gtest_shuffle
else
./bin/unittests --gtest_shuffle
fi
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
cmake --build . --config "$CONFIGURATION" | tee build.log | xcpretty
XCODE_RET=${PIPESTATUS[0]}
if [ "$XCODE_RET" -ne "0" ]; then
tar -cvzf build.log.tar.gz build.log
curl --upload-file build.log.tar.gz "https://transfer.sh/build.log.tar.gz"
curl --upload-file build.log.tar.gz "https://keep.sh"
exit $XCODE_RET
fi
elif [ "$TRAVIS_OS_NAME" = "windows" ]; then
if [ "$CMAKE_GENERATOR" = "Ninja" ]; then
cmake --build . --config "$CONFIGURATION"
else
cmake --build . --config "$CONFIGURATION" -- /verbosity:minimal
fi
fi
-28
View File
@@ -1,28 +0,0 @@
{
liblsan Invalid read
Memcheck:Addr8
obj:/usr/lib64/liblsan.so.0.0.0
obj:/usr/lib64/liblsan.so.0.0.0
obj:/usr/lib64/liblsan.so.0.0.0
obj:*
obj:*
obj:*
}
{
Travis memleak
Memcheck:Leak
match-leak-kinds: definite
fun:malloc
fun:_dl_signal_error
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.2.5
obj:/usr/lib/x86_64-linux-gnu/libmirclient.so.7
fun:call_init.part.0
fun:call_init
fun:_dl_init
fun:dl_open_worker
fun:_dl_catch_error
}
+3 -1
View File
@@ -1,4 +1,6 @@
[Desktop Entry]
Type=Application
Name=FreeSpace Open
Exec=$<TARGET_FILE_NAME:Freespace2>
Icon=app_icon.png
Icon=app_icon
Categories=Game;
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/sh
HERE=$(dirname $(readlink -f "${0}"))
export LD_LIBRARY_PATH="${HERE}"/lib:"$LD_LIBRARY_PATH"
"${HERE}"/bin/$<TARGET_FILE_NAME:Freespace2> $@
exec "${HERE}"/bin/$<TARGET_FILE_NAME:Freespace2> $@
-2
View File
@@ -4,8 +4,6 @@ include(WriteCompilerDetectionHeader)
set(CMAKE_CXX_STANDARD_REQUIRED 11)
set(CMAKE_CXX_STANDARD 11)
set(REQUIRED_CXX_FEATURES cxx_rvalue_references cxx_nullptr)
get_property(CMAKE_CXX_KNOWN_FEATURES GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
write_compiler_detection_header(
+6 -8
View File
@@ -6,18 +6,16 @@ configure_file("${CMAKE_CURRENT_LIST_DIR}/AppRun.in" "${CMAKE_CURRENT_BINARY_DIR
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AppRun-$<CONFIG>"
INPUT "${CMAKE_CURRENT_BINARY_DIR}/AppRun.gen")
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/AppRun-$<CONFIG>" DESTINATION "." RENAME "AppRun")
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/AppRun-$<CONFIG>" DESTINATION "." RENAME "AppRun"
COMPONENT "Freespace2")
configure_file("${CMAKE_CURRENT_LIST_DIR}/AppImage.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/AppImage.desktop.gen" @ONLY)
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AppImage-$<CONFIG>.desktop"
INPUT "${CMAKE_CURRENT_BINARY_DIR}/AppImage.desktop.gen")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AppImage-$<CONFIG>.desktop" DESTINATION "." RENAME "fso.desktop")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AppImage-$<CONFIG>.desktop" DESTINATION "." RENAME "fso.desktop"
COMPONENT "Freespace2")
install(FILES "${CMAKE_SOURCE_DIR}/freespace2/resources/app_icon.png" DESTINATION ".")
add_custom_target(appimage
COMMAND "${APPIMAGE_ASSISTANT}" "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/fs2_open_${FSO_BINARY_SUFFIX}.AppImage")
add_dependencies(appimage install)
install(FILES "${CMAKE_SOURCE_DIR}/freespace2/resources/app_icon.png" DESTINATION "."
COMPONENT "Freespace2")
+37
View File
@@ -0,0 +1,37 @@
option(ENABLE_CLANG_TIDY "Enable source code checking using clang-tidy" OFF)
find_program(
CLANG_TIDY_EXE
NAMES "clang-tidy"
DOC "Path to clang-tidy executable"
)
function(enable_clang_tidy target)
# Not enabled in this configuration
endfunction()
if(NOT ENABLE_CLANG_TIDY)
return()
endif()
if(NOT EXISTS "${CLANG_TIDY_EXE}")
message(SEND_ERROR "clang-tidy: Could not find clang-tidy executable (value of variable is \"${CLANG_TIDY_EXE}\".")
return()
endif()
if(CMAKE_VERSION VERSION_LESS "3.6.0")
message(SEND_ERROR "Clang-tidy support requires CMake 3.6")
return()
endif()
message(STATUS "clang-tidy: Using \"${CLANG_TIDY_EXE}\"")
function(enable_clang_tidy target)
SET(TIDY_OPTIONS "${CLANG_TIDY_EXE}")
if(FSO_FATAL_WARNINGS)
set(TIDY_OPTIONS "${TIDY_OPTIONS};-warnings-as-errors=*")
endif()
set_target_properties(${target} PROPERTIES CXX_CLANG_TIDY "${TIDY_OPTIONS}")
endfunction()
+114
View File
@@ -0,0 +1,114 @@
set(_EMBEDD_FILE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
function(target_embed_files _target)
set(options)
set(oneValueArgs RELATIVE_TO PATH_TYPE_PREFIX)
set(multiValueArgs FILES)
cmake_parse_arguments(EMBED "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (NOT DEFINED EMBED_RELATIVE_TO)
set(EMBED_RELATIVE_TO "${CMAKE_CURRENT_SOURCE_DIR}")
endif()
if (NOT IS_ABSOLUTE "${EMBED_RELATIVE_TO}")
get_filename_component(EMBED_RELATIVE_TO "${EMBED_RELATIVE_TO}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
endif()
foreach (file ${EMBED_FILES})
get_filename_component(_absoluteFile "${file}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
file(RELATIVE_PATH _pathType "${EMBED_RELATIVE_TO}" "${_absoluteFile}")
get_filename_component(_pathType ${_pathType} DIRECTORY)
if (DEFINED EMBED_PATH_TYPE_PREFIX)
if (_pathType)
set(_pathType "${EMBED_PATH_TYPE_PREFIX}/${_pathType}")
else()
# Avoid trailing / when we are in the same directory
set(_pathType "${EMBED_PATH_TYPE_PREFIX}")
endif()
endif()
if (NOT _pathType)
# If it is still empty then we need to work around yet another annoying CMake behavior where it ignores
# "empty" property strings
set(_pathType ".")
endif()
set_property(TARGET ${_target} APPEND PROPERTY EMBEDDED_FILES "${_absoluteFile}")
set_property(TARGET ${_target} APPEND PROPERTY EMBEDDED_FILES_BASE_DIR "${EMBED_RELATIVE_TO}")
set_property(TARGET ${_target} APPEND PROPERTY EMBEDDED_FILES_PATH_TYPE "${_pathType}")
endforeach()
endfunction()
function(handle_embedded_files _target)
get_target_property(_filesToEmbed ${_target} EMBEDDED_FILES)
get_target_property(_baseDirs ${_target} EMBEDDED_FILES_BASE_DIR)
get_target_property(_pathTypes ${_target} EMBEDDED_FILES_PATH_TYPE)
SET(DEF_OUT_FILES)
set(INCLUDE_LIST)
set(ARRAY_ELEMENTS)
list(LENGTH _filesToEmbed _numFiles)
FOREACH(i RANGE ${_numFiles})
# Why must CMake always do the unexpected thing? The foreach variant includes the last index as opposed to every
# other sensible language which does not include it...
if (i GREATER_EQUAL _numFiles)
break()
endif()
list(GET _filesToEmbed ${i} _filePath)
list(GET _baseDirs ${i} _baseDir)
list(GET _pathTypes ${i} _pathType)
if (_pathType STREQUAL ".")
# Handle the workaround we had to do for empty path types
set(_pathType "")
endif()
file(RELATIVE_PATH _relativeFilePath "${_baseDir}" "${_filePath}")
SET(_outputBasePath "${CMAKE_CURRENT_BINARY_DIR}/embedded_files/${_relativeFilePath}")
# For some reason this is needed...
get_filename_component(_outputDirectory ${_outputBasePath} DIRECTORY)
file(MAKE_DIRECTORY ${_outputDirectory})
# Retrieve the path type name from the relative path
file(TO_NATIVE_PATH "${_pathType}" _pathType)
if (MINGW)
# There is a bug in CMake where it thinks MinGW uses forward slashes for paths but we need backslashes for Windows builds
string(REPLACE "/" "\\" _pathType "${_pathType}")
endif()
# Properly escape back slashes in strings
string(REPLACE "\\" "\\\\" _pathType "${_pathType}")
get_filename_component(FILE_NAME "${_relativeFilePath}" NAME)
string(MAKE_C_IDENTIFIER "${_relativeFilePath}" FIELD_NAME)
set(HEADER_FILE "${_outputBasePath}.h")
set(SOURCE_FILE "${_outputBasePath}.cpp")
set(ALL_OUTPUTS "${HEADER_FILE}" "${SOURCE_FILE}")
set(FIELD_NAME "Embedded_${FIELD_NAME}")
set(INCLUDE_LIST "${INCLUDE_LIST}\n#include \"${HEADER_FILE}\"")
set(ARRAY_ELEMENTS "${ARRAY_ELEMENTS}\n\t{ \"${_pathType}\", \"${FILE_NAME}\" , ${FIELD_NAME} , ${FIELD_NAME}_size },")
add_custom_command(
OUTPUT ${ALL_OUTPUTS}
COMMAND embedfile "${_filePath}" "${_outputBasePath}" "${FIELD_NAME}"
MAIN_DEPENDENCY "${_filePath}"
COMMENT "Generating string file for ${_filePath}"
)
list(APPEND DEF_OUT_FILES ${ALL_OUTPUTS})
ENDFOREACH()
configure_file("${_EMBEDD_FILE_BASE_DIR}/embedded_files.inc.in" "${CMAKE_CURRENT_BINARY_DIR}/embedded_files/embedded_files.inc")
target_include_directories(${_target} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/embedded_files")
target_sources(${_target} PRIVATE ${DEF_OUT_FILES})
source_group("Generated Files\\Embedded Files" FILES ${DEF_OUT_FILES})
endfunction()
File renamed without changes.
+1 -1
View File
@@ -3,7 +3,7 @@ INCLUDE(util)
MESSAGE(STATUS "Configuring UNIX specific things and stuff...")
target_compile_definitions(platform INTERFACE SCP_UNIX USE_OPENAL)
target_compile_definitions(platform INTERFACE SCP_UNIX USE_OPENAL _REENTRANT)
# Set RPATH
set(CMAKE_SKIP_BUILD_RPATH TRUE)
+3 -3
View File
@@ -8,7 +8,7 @@ SET(WIN32_LIBS
odbccp32
vfw32
winmm
wsock32
ws2_32
psapi
)
@@ -20,8 +20,8 @@ target_link_libraries(platform INTERFACE ${WIN32_LIBS})
target_compile_definitions(platform INTERFACE WIN32 USE_OPENAL _WINDOWS)
# Specify minimum Windows version for the headers (currently this is XP)
target_compile_definitions(platform INTERFACE NTDDI_VERSION=0x05010000 _WIN32_WINNT=0x0501)
# Specify minimum Windows version for the headers (currently this is Vista)
target_compile_definitions(platform INTERFACE NTDDI_VERSION=0x06000000 _WIN32_WINNT=0x0600)
SET(EXE_GUI_TYPE WIN32)
set(PLATFORM_WINDOWS TRUE CACHE INTERNAL "" FORCE)
+10 -8
View File
@@ -10,8 +10,8 @@ include(CheckSymbolExists)
include(CheckCXXSymbolExists)
include(CheckTypeSize)
CHECK_INCLUDE_FILE("execinfo.h" HAVE_EXECINFO_H)
CHECK_INCLUDE_FILE_CXX("cxxabi.h" HAVE_CXXAPI_H)
CHECK_INCLUDE_FILE("execinfo.h" SCP_HAVE_EXECINFO_H)
CHECK_INCLUDE_FILE_CXX("cxxabi.h" SCP_HAVE_CXXAPI_H)
CHECK_TYPE_SIZE("max_align_t" MAX_ALIGN_T)
@@ -31,15 +31,17 @@ CHECK_TYPE_SIZE("U'b'" UNICODE_CHAR_LITERAL LANGUAGE CXX)
set(CMAKE_REQUIRED_FLAGS)
CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP)
CHECK_FUNCTION_EXISTS(strcasecmp SCP_HAVE_STRCASECMP)
CHECK_FUNCTION_EXISTS(strncasecmp SCP_HAVE_STRNCASECMP)
CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
CHECK_FUNCTION_EXISTS(_strnicmp HAVE__STRNICMP)
CHECK_FUNCTION_EXISTS(_stricmp SCP_HAVE__STRICMP)
CHECK_FUNCTION_EXISTS(_strnicmp SCP_HAVE__STRNICMP)
CHECK_FUNCTION_EXISTS(strlwr HAVE_STRLWR)
CHECK_FUNCTION_EXISTS(strlwr SCP_HAVE_STRLWR)
CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H)
CHECK_INCLUDE_FILE("strings.h" SCP_HAVE_STRINGS_H)
check_symbol_exists(snprintf "stdio.h" SCP_HAVE_SNPRINTF)
set(PLATFORM_CHECK_HEADER "${GENERATED_SOURCE_DIR}/platformChecks.h")
CONFIGURE_FILE(${CMAKE_CURRENT_LIST_DIR}/platformChecks.h.in "${PLATFORM_CHECK_HEADER}")
+14 -12
View File
@@ -3,26 +3,28 @@
#define __PLATFORM_CHECKS_H__
#pragma once
#cmakedefine HAVE_EXECINFO_H
#cmakedefine HAVE_CXXAPI_H
#cmakedefine HAVE_MAX_ALIGN_T
#cmakedefine HAVE_STD_MAX_ALIGN_T
#cmakedefine SCP_HAVE_EXECINFO_H
#cmakedefine SCP_HAVE_CXXAPI_H
#cmakedefine SCP_HAVE_MAX_ALIGN_T
#cmakedefine SCP_HAVE_STD_MAX_ALIGN_T
#cmakedefine HAVE_STD_IS_TRIVIALLY_COPYABLE
#cmakedefine HAVE_STD_IS_TRIVIALLY_COPYABLE_ARRAY
#cmakedefine01 HAVE_STD_IS_TRIVIALLY_COPYABLE
#cmakedefine01 IS_64BIT
#cmakedefine01 HAVE_STRCASECMP
#cmakedefine01 HAVE_STRNCASECMP
#cmakedefine01 HAVE__STRICMP
#cmakedefine01 HAVE__STRNICMP
#cmakedefine01 SCP_HAVE_STRCASECMP
#cmakedefine01 SCP_HAVE_STRNCASECMP
#cmakedefine01 SCP_HAVE__STRICMP
#cmakedefine01 SCP_HAVE__STRNICMP
#cmakedefine01 HAVE_STRLWR
#cmakedefine01 SCP_HAVE_STRLWR
#cmakedefine01 HAVE_STRINGS_H
#cmakedefine01 SCP_HAVE_STRINGS_H
#cmakedefine01 HAVE_CHAR32_T
#cmakedefine01 HAVE_UNICODE_CHAR_LITERAL
#cmakedefine01 SCP_HAVE_SNPRINTF
#cmakedefine01 SCP_HAVE__SNPRINTF
#endif // __PLATFORM_CHECKS_H__
-2
View File
@@ -9,8 +9,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -funroll-loops -fsigned-char -Wno-
# Omit "conversion from string literal to 'char *' is deprecated" warnings.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wno-char-subscripts")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
+23 -5
View File
@@ -7,6 +7,8 @@ MESSAGE(STATUS "Doing configuration specific to clang...")
option(CLANG_ENABLE_LEAK_CHECK "Enable -fsanitize=leak" OFF)
option(CLANG_ENABLE_ADDRESS_SANITIZER "Enable -fsanitize=address" OFF)
option(CLANG_USE_LIBCXX "Use libc++" OFF)
# These are the default values
set(C_BASE_FLAGS "-march=native -pipe")
set(CXX_BASE_FLAGS "-march=native -pipe")
@@ -19,6 +21,11 @@ if(DEFINED ENV{CFLAGS})
set(C_BASE_FLAGS $ENV{CFLAGS})
endif()
if (CLANG_USE_LIBCXX)
set(CXX_BASE_FLAGS "${CXX_BASE_FLAGS} -stdlib=libc++")
target_link_libraries(compiler INTERFACE "c++" "c++abi")
endif()
# Initialize with an empty string to make sure we always get a clean start
set(COMPILER_FLAGS "")
@@ -66,21 +73,17 @@ set(COMPILER_FLAGS "${COMPILER_FLAGS} ${SANITIZE_FLAGS}")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wformat-security")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-unused-function")
# Dear Clang, please tell us if a function does not return a value since that part of the standard is stupid!
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wreturn-type")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-char-subscripts")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-unused-parameter")
check_cxx_compiler_flag(-Wshift-negative-value SUPPORTS_SHIFT_NEGATIVE_VALUE)
if(SUPPORTS_SHIFT_NEGATIVE_VALUE)
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-shift-negative-value")
endif()
set(COMPILER_FLAGS_RELEASE "-O2 -Wno-unused-variable")
set(COMPILER_FLAGS_RELEASE "-O2 -Wno-unused-variable -Wno-unused-parameter")
set(COMPILER_FLAGS_DEBUG "-O0 -g -Wshadow")
@@ -97,6 +100,10 @@ set(CMAKE_C_FLAGS_DEBUG ${COMPILER_FLAGS_DEBUG})
set(CMAKE_EXE_LINKER_FLAGS "")
if (CLANG_USE_LIBCXX)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
endif()
if (SANITIZE_FLAGS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SANITIZE_FLAGS}")
endif()
@@ -111,3 +118,14 @@ endif()
# Always define this to make sure that the fixed width format macros are available
target_compile_definitions(compiler INTERFACE __STDC_FORMAT_MACROS)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR MINGW)
# GNU ar: Create thin archive files.
# Requires binutils-2.19 or later.
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcTP <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> qTP <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcTP <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> qTP <TARGET> <LINK_FLAGS> <OBJECTS>")
endif()
target_link_libraries(compiler INTERFACE m)
+52 -13
View File
@@ -8,6 +8,8 @@ MESSAGE(STATUS "Doing configuration specific to gcc...")
option(GCC_ENABLE_LEAK_CHECK "Enable -fsanitize=leak" OFF)
option(GCC_ENABLE_ADDRESS_SANITIZER "Enable -fsanitize=address" OFF)
option(GCC_ENABLE_SANITIZE_UNDEFINED "Enable -fsanitize=undefined" OFF)
option(GCC_USE_GOLD "Use the gold linker instead of the standard linker" OFF)
option(GCC_GENERATE_GDB_INDEX "Adds linker option to generate the gdb index for debug builds" OFF)
# These are the default values
set(C_BASE_FLAGS "-march=native -pipe")
@@ -23,6 +25,16 @@ endif()
# Initialize with an empty string to make sure we always get a clean start
set(COMPILER_FLAGS "")
set(LINKER_FLAGS "")
if (GCC_USE_GOLD)
OPTION(GCC_INCREMENTAL_LINKING "Use incremental linking" OFF)
set(LINKER_FLAGS "${LINKER_FLAGS} -fuse-ld=gold")
if (GCC_INCREMENTAL_LINKING)
set(LINKER_FLAGS "${LINKER_FLAGS} -fno-use-linker-plugin -Wl,-z,norelro -Wl,--incremental")
endif()
endif()
# This is a slight hack since our flag setup is a bit more complicated
_enable_extra_compiler_warnings_flags()
@@ -30,9 +42,11 @@ set(COMPILER_FLAGS "${COMPILER_FLAGS} ${_flags}")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -funroll-loops -fsigned-char -Wno-unknown-pragmas")
# Place each function and data in its own section so the linker can
# perform dead code elimination
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fdata-sections -ffunction-sections")
if (NOT GCC_INCREMENTAL_LINKING)
# Place each function and data in its own section so the linker can
# perform dead code elimination
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fdata-sections -ffunction-sections")
endif()
if ("${CMAKE_GENERATOR}" STREQUAL "Ninja")
# Force color diagnostics for Ninja generator
@@ -78,20 +92,27 @@ set(COMPILER_FLAGS "${COMPILER_FLAGS} ${SANITIZE_FLAGS}")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wformat-security")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-unused-function")
# Dear GCC, please tell us if a function does not return a value since that part of the standard is stupid!
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wreturn-type")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-deprecated -Wno-char-subscripts")
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-unused-parameter")
# These two warnings cause a lot of false-positives in the FSO code base
check_cxx_compiler_flag(-Wstringop-truncation SUPPORTS_STRINGOP_TRUNCATION)
if(SUPPORTS_STRINGOP_TRUNCATION)
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-stringop-truncation")
endif()
set(COMPILER_FLAGS_RELEASE "-O2 -Wno-unused-variable -Wno-unused-but-set-variable -Wno-array-bounds -Wno-empty-body -Wno-clobbered")
check_cxx_compiler_flag(-Wstringop-overflow SUPPORTS_STRINGOP_OVERFLOW)
if(SUPPORTS_STRINGOP_TRUNCATION)
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-stringop-overflow")
endif()
set(COMPILER_FLAGS_RELEASE "-O2 -Wno-unused-variable -Wno-unused-but-set-variable -Wno-array-bounds -Wno-empty-body -Wno-clobbered -Wno-unused-parameter")
set(COMPILER_FLAGS_DEBUG "-O0 -g -Wshadow")
# Always use the base flags and add our compiler flags at the bacl
# Always use the base flags and add our compiler flags at the back
set(CMAKE_CXX_FLAGS "${CXX_BASE_FLAGS} ${COMPILER_FLAGS}")
set(CMAKE_C_FLAGS "${C_BASE_FLAGS} ${COMPILER_FLAGS}")
@@ -101,10 +122,11 @@ set(CMAKE_C_FLAGS_RELEASE ${COMPILER_FLAGS_RELEASE})
set(CMAKE_CXX_FLAGS_DEBUG ${COMPILER_FLAGS_DEBUG})
set(CMAKE_C_FLAGS_DEBUG ${COMPILER_FLAGS_DEBUG})
set(CMAKE_EXE_LINKER_FLAGS "")
set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}")
IF (MINGW)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -static-libgcc -static-libstdc++ -Wl,--enable-auto-import")
target_compile_definitions(compiler INTERFACE __USE_MINGW_ANSI_STDIO=1)
ENDIF(MINGW)
if (SANITIZE_FLAGS)
@@ -113,17 +135,25 @@ endif()
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-g")
if (GCC_GENERATE_GDB_INDEX)
# For pure debug binaries, generate a gdb index for better debugging
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Wl,--gdb-index")
endif()
IF(NOT MINGW)
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -rdynamic")
# Allow the linker to perform dead code elimination; this is considered
# experimental for COFF and PE formats and thus disabled for Windows builds
# (https://sourceware.org/binutils/docs/ld/Options.html)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
if (NOT GCC_INCREMENTAL_LINKING AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
endif()
ENDIF(NOT MINGW)
IF(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,-zignore")
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-zignore")
ENDIF()
if (FSO_FATAL_WARNINGS)
# Make warnings fatal if the right variable is set
@@ -131,4 +161,13 @@ if (FSO_FATAL_WARNINGS)
endif()
# Always define this to make sure that the fixed width format macros are available
target_compile_definitions(compiler INTERFACE __STDC_FORMAT_MACROS)
target_compile_definitions(compiler INTERFACE __STDC_FORMAT_MACROS=1)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR MINGW)
# GNU ar: Create thin archive files.
# Requires binutils-2.19 or later.
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcTP <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> qTP <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcTP <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> qTP <TARGET> <LINK_FLAGS> <OBJECTS>")
endif()
+11 -10
View File
@@ -36,21 +36,24 @@ set(WARNING_FLAGS
/wd4592 # "symbol will be dynamically initialized" is being generated by a compiler bug, see https://stackoverflow.com/a/34027257 for an explanation - m!m
$<$<CONFIG:Release>:/wd4101> # In release mode there are unreferenced variables because debug needs them
/wd4995 # "'vsprintf': name was marked as #pragma deprecated" is being caused by our custom definition of vsprintf. I have no idea what causes this or how to fix it - m!m
/wd4723 # "potential divide by 0" is caused by some code that definitely will not divide by zero - m!m
/wd4121 # "alignment of a member was sensitive to packing" happens in a Windows header - m!m
)
target_compile_options(compiler INTERFACE ${WARNING_FLAGS})
# Base
set(CMAKE_C_FLAGS "/MP /GS- /analyze- /Zc:wchar_t /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo /Zm200")
set(CMAKE_CXX_FLAGS "/MP /GS- /analyze- /Zc:wchar_t /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo /Zm200")
set(CMAKE_C_FLAGS "/MP /GS- /analyze- /Zc:wchar_t /errorReport:prompt /Zc:forScope /Gd /EHsc /nologo /Zm200")
set(CMAKE_CXX_FLAGS "/MP /GS- /analyze- /Zc:wchar_t /errorReport:prompt /Zc:forScope /Gd /EHsc /nologo /Zm200")
set(CMAKE_EXE_LINKER_FLAGS "/MANIFEST /DYNAMICBASE:NO /SAFESEH:NO /ERRORREPORT:PROMPT /NOLOGO")
set(CMAKE_STATIC_LINKER_FLAGS "")
# Release
set(CMAKE_C_FLAGS_RELEASE "/GL /W2 /Gy- /Ox /Ot /Ob2 /fp:precise /GF /Oy /Oi /Zi /W3")
set(CMAKE_CXX_FLAGS_RELEASE "/GL /W2 /Gy- /Ox /Ot /Ob2 /fp:precise /GF /Oy /Oi /Zi /W3")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/OPT:REF /LTCG /INCREMENTAL:NO")
set(CMAKE_C_FLAGS_RELEASE "/GL /Gy- /Ox /Ot /Ob2 /fp:precise /GF /Oy /Oi /Zi /W3")
set(CMAKE_CXX_FLAGS_RELEASE "/GL /Gy- /Ox /Ot /Ob2 /fp:precise /GF /Oy /Oi /Zi /W3")
# /DEBUG:FULL so that we get PDBs which is needed for debugging crashdumps
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/OPT:REF /LTCG /INCREMENTAL:NO /DEBUG:FULL")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG")
globally_enable_extra_compiler_warnings()
@@ -62,8 +65,6 @@ if (MSVC_RELEASE_DEBUGGING)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zo")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zo")
endif()
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG")
endif()
IF(MSVC_USE_RUNTIME_DLL)
@@ -135,9 +136,9 @@ else()
ENDIF()
endif()
target_compile_definitions(compiler INTERFACE _CRT_SECURE_NO_DEPRECATE
_CRT_SECURE_NO_WARNINGS _SECURE_SCL=0 NOMINMAX "$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>")
target_compile_definitions(compiler INTERFACE _CRT_SECURE_NO_DEPRECATE _CRT_SECURE_NO_WARNINGS _SECURE_SCL=0 NOMINMAX
"$<$<CONFIG:FastDebug>:_ITERATOR_DEBUG_LEVEL=0>" _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
if (FSO_FATAL_WARNINGS)
# Make warnings fatal if the right variable is set
target_compile_options(compiler INTERFACE "/WX")
+3
View File
@@ -17,6 +17,9 @@ ELSE("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
MESSAGE(STATUS "No special handling for this compiler present, good luck!")
ENDIF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
find_package(Threads REQUIRED)
target_link_libraries(compiler INTERFACE Threads::Threads)
# Copy release settings to FastDebug
set(CMAKE_C_FLAGS_FASTDEBUG "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_FASTDEBUG "${CMAKE_CXX_FLAGS_RELEASE}")
+55 -7
View File
@@ -10,7 +10,7 @@ FUNCTION(ADD_IMPORTED_LIB NAME INCLUDES LIBS)
target_link_libraries(${NAME} INTERFACE "${LIBS}")
target_include_directories(${NAME} INTERFACE "${INCLUDES}")
target_include_directories(${NAME} SYSTEM INTERFACE "${INCLUDES}")
ENDFUNCTION(ADD_IMPORTED_LIB)
MACRO(PKG_CONFIG_LIB_RESOLVE NAME OUTVAR)
@@ -140,12 +140,34 @@ macro(set_if_not_defined VAR VALUE)
endif()
endmacro(set_if_not_defined)
macro(configure_cotire target)
# Disable unity build as it doesn't work well for us
set_target_properties(${target} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE)
function(set_precompiled_header _target _headerPath)
if (COMMAND target_precompile_headers)
target_compile_definitions(${_target} PRIVATE CMAKE_PCH)
target_precompile_headers(${_target} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${_headerPath}>")
else()
if (ENABLE_COTIRE)
message("${_headerPath}")
set_target_properties(${_target} PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${_headerPath}")
cotire(${target})
endmacro(configure_cotire)
# Disable unity build as it doesn't work well for us
set_target_properties(${_target} PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE)
cotire(${_target})
else()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
target_compile_options(${_target} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:-include${_headerPath}>")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
target_compile_options(${_target} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:/FI ${_headerPath}>")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
target_compile_options(${_target} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:-include${_headerPath}>")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
target_compile_options(${_target} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:-include${_headerPath}>")
ELSE()
MESSAGE("Unknown compiler for global includes. This will probably break the build.")
ENDIF()
endif()
endif()
endfunction()
macro(add_target_copy_files)
foreach(file ${ARGN})
@@ -182,7 +204,7 @@ function(detect_simd_instructions _out_var)
endfunction()
function (check_linker_flag _flag _out_var)
SET(CMAKE_REQUIRED_FLAGS "${_flag}")
SET(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
CHECK_C_COMPILER_FLAG("" ${_out_var})
endfunction(check_linker_flag)
@@ -196,6 +218,22 @@ function(suppress_warnings _target)
endif()
endfunction(suppress_warnings)
# Suppresses warnings for the specified files
function(suppress_file_warnings)
if (MSVC)
set_source_files_properties(
${ARGN}
PROPERTIES
COMPILE_FLAGS "/W0")
else()
# Assume everything else uses GCC style options
set_source_files_properties(
${ARGN}
PROPERTIES
COMPILE_FLAGS "-w")
endif()
endfunction(suppress_file_warnings)
function(list_target_dependencies _target _out_var)
set(out_list)
@@ -223,3 +261,13 @@ function(list_target_dependencies _target _out_var)
list(REMOVE_DUPLICATES out_list)
set(${_out_var} ${out_list} PARENT_SCOPE)
endfunction(list_target_dependencies)
macro(add_file_folder FOLDER_NAME)
string(MAKE_C_IDENTIFIER "${FOLDER_NAME}" VARIABLE_NAME)
set(files_${VARIABLE_NAME} ${files_${VARIABLE_NAME}} ${ARGN})
string(REPLACE "/" "\\" FIXED_FOLDER_FILE "${FOLDER_NAME}")
source_group("${FIXED_FOLDER_FILE}" FILES ${ARGN})
set(source_files ${source_files} ${ARGN})
endmacro(add_file_folder)
+4 -4
View File
@@ -6,9 +6,9 @@ if (EXISTS "${PROJECT_SOURCE_DIR}/version_override.cmake")
include("${PROJECT_SOURCE_DIR}/version_override.cmake")
endif()
set_if_not_defined(FSO_VERSION_MAJOR 3)
set_if_not_defined(FSO_VERSION_MINOR 8)
set_if_not_defined(FSO_VERSION_BUILD 1)
set_if_not_defined(FSO_VERSION_MAJOR 21)
set_if_not_defined(FSO_VERSION_MINOR 1)
set_if_not_defined(FSO_VERSION_BUILD 0)
# A numeric revision e.g. the CI build number
set_if_not_defined(FSO_VERSION_REVISION 0)
@@ -49,4 +49,4 @@ IF (NOT "${FSO_BUILD_POSTFIX}" STREQUAL "")
ENDIF()
set(CONFIG_POSTFIX "$<$<CONFIG:Release>:>$<$<CONFIG:Debug>:-DEBUG>$<$<CONFIG:FastDebug>:-FASTDBG>")
set(FSO_BINARY_SUFFIX "${FSO_BINARY_SUFFIX}${CONFIG_POSTFIX}")
set(FSO_BINARY_SUFFIX "${FSO_BINARY_SUFFIX}${CONFIG_POSTFIX}")
+49 -10
View File
@@ -1,13 +1,12 @@
include(util)
INCLUDE(source_groups.cmake)
INCLUDE(voice_rec.cmake)
ADD_LIBRARY(code STATIC ${file_root} ${VOICE_REC_FILES})
ADD_LIBRARY(code STATIC ${source_files} ${VOICE_REC_FILES})
target_compile_features(code PUBLIC ${REQUIRED_CXX_FEATURES})
INCLUDE(default_files.cmake)
target_compile_features(code PUBLIC cxx_std_11)
if (MSVC)
target_compile_definitions(code PUBLIC "PDB_DEBUGGING=1")
@@ -19,16 +18,21 @@ TARGET_INCLUDE_DIRECTORIES(code PUBLIC ${FREESPACE_HEADERS})
TARGET_INCLUDE_DIRECTORIES(code PUBLIC ${GENERATED_SOURCE_DIR})
TARGET_INCLUDE_DIRECTORIES(code PUBLIC ${GENERATED_SOURCE_DIR}/code)
target_link_libraries(code PUBLIC OpenGL)
if (FSO_BUILD_WITH_OPENGL)
target_link_libraries(code PUBLIC OpenGL)
endif()
TARGET_LINK_LIBRARIES(code PUBLIC openal)
TARGET_LINK_LIBRARIES(code PUBLIC ${LUA_LIBS})
TARGET_LINK_LIBRARIES(code PUBLIC ${PNG_LIBS})
TARGET_LINK_LIBRARIES(code PUBLIC ${JPEG_LIBS})
TARGET_LINK_LIBRARIES(code PUBLIC lz4)
TARGET_LINK_LIBRARIES(code PUBLIC sdl2)
TARGET_LINK_LIBRARIES(code PUBLIC ffmpeg)
if (FSO_BUILD_WITH_FFMPEG)
TARGET_LINK_LIBRARIES(code PUBLIC ffmpeg)
endif()
TARGET_LINK_LIBRARIES(code PUBLIC utfcpp)
@@ -37,6 +41,22 @@ TARGET_LINK_LIBRARIES(code PUBLIC compiler)
target_link_libraries(code PUBLIC md5)
target_link_libraries(code PUBLIC discord-rpc)
target_link_libraries(code PUBLIC libRocket)
target_link_libraries(code PUBLIC pcp)
if (FSO_BUILD_WITH_VULKAN)
target_link_libraries(code PUBLIC vulkan-hpp)
endif()
target_link_libraries(code PUBLIC parsers)
target_link_libraries(code PUBLIC mdns)
enable_clang_tidy(code)
IF (FSO_USE_SPEECH)
find_package(Speech REQUIRED)
target_link_libraries(code PUBLIC speech)
@@ -44,6 +64,8 @@ ENDIF(FSO_USE_SPEECH)
TARGET_LINK_LIBRARIES(code PUBLIC jansson)
target_link_libraries(code PUBLIC variant)
# Headers for standalone "gui" on UNIX
IF(UNIX)
TARGET_LINK_LIBRARIES(code PUBLIC ${MONGOOSE_LIBS})
@@ -55,10 +77,27 @@ IF(FSO_BUILD_TOOLS)
ADD_SUBDIRECTORY(cfileextractor)
ENDIF(FSO_BUILD_TOOLS)
set_target_properties(code PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "prefix_header.h")
if (FSO_RELEASE_LOGGING)
target_compile_definitions(code PUBLIC SCP_RELEASE_LOGGING)
endif()
include(util)
configure_cotire(code)
if (FSO_BUILD_WITH_FFMPEG)
target_compile_definitions(code PUBLIC WITH_FFMPEG)
endif()
if (FSO_BUILD_WITH_OPENGL)
target_compile_definitions(code PUBLIC WITH_OPENGL)
endif()
if (FSO_BUILD_WITH_VULKAN)
target_compile_definitions(code PUBLIC WITH_VULKAN)
endif()
include(shaders.cmake)
target_embed_files(code FILES ${default_files_files} RELATIVE_TO "def_files")
handle_embedded_files(code)
set_precompiled_header(code "${CMAKE_CURRENT_SOURCE_DIR}/prefix_header.h")
# Ensure that Xcode generates debug symbols on macOS for Debug builds
set_target_properties(code PROPERTIES XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Debug] "YES")
+8
View File
@@ -0,0 +1,8 @@
#include "Action.h"
namespace actions {
Action::~Action() = default;
}
+23
View File
@@ -0,0 +1,23 @@
#pragma once
#include "common.h"
namespace actions {
enum class ActionResult
{
Finished,
Errored,
Wait
};
class Action {
public:
virtual ~Action() = 0;
virtual ActionResult execute(ProgramLocals& locals) const = 0;
virtual std::unique_ptr<Action> clone() const = 0;
};
} // namespace actions
+21
View File
@@ -0,0 +1,21 @@
#include "ActionDefinition.h"
namespace actions {
ActionDefinition::ActionDefinition(SCP_string name, SCP_vector<ActionParameter> parameters)
: m_name(std::move(name)), m_parameters(std::move(parameters))
{
}
ActionDefinition::~ActionDefinition() = default;
const SCP_string& ActionDefinition::getName() const
{
return m_name;
}
const SCP_vector<ActionParameter>& ActionDefinition::getParameters() const
{
return m_parameters;
}
} // namespace actions
+33
View File
@@ -0,0 +1,33 @@
#pragma once
#include "Action.h"
#include "actions/expression/ActionExpression.h"
#include "actions/expression/Value.h"
namespace actions {
struct ActionParameter {
SCP_string name;
expression::ValueType type;
};
class ActionDefinition {
public:
ActionDefinition(SCP_string name, SCP_vector<ActionParameter> parameters);
virtual ~ActionDefinition();
const SCP_string& getName() const;
const SCP_vector<actions::ActionParameter>& getParameters() const;
virtual flagset<ProgramContextFlags> getRequiredContext() const = 0;
virtual std::unique_ptr<Action> createAction(
const SCP_unordered_map<SCP_string, expression::ActionExpression>& parameterExpressions) const = 0;
private:
SCP_string m_name;
SCP_vector<ActionParameter> m_parameters;
};
} // namespace actions
+145
View File
@@ -0,0 +1,145 @@
#include "ActionDefinitionManager.h"
#include "BuiltinActionDefinition.h"
#include "actions/types/MoveToSubmodel.h"
#include "actions/types/ParticleEffectAction.h"
#include "actions/types/PlaySoundAction.h"
#include "actions/types/SetDirectionAction.h"
#include "actions/types/SetPositionAction.h"
#include "actions/types/WaitAction.h"
#include "utils/join_string.h"
namespace actions {
namespace {
void parseActionParameters(const SCP_vector<ActionParameter>& params,
SCP_unordered_map<SCP_string, expression::ActionExpression>& parameterExpressions,
const expression::ParseContext& context)
{
// We do not impose a set order of the parameters so we need to do something similar to the outer loop and
// check for every possibility in a loop.
for (size_t i = 0; i < params.size(); ++i) {
// We might be doing some empty loops here in case of errors but there is a bound so this will finish
// eventually
for (const auto& parameter : params) {
// Do not check for parameters which we already found
if (parameterExpressions.find(parameter.name) != parameterExpressions.end()) {
continue;
}
const auto paramString = "+" + parameter.name + ":";
if (!optional_string(paramString.c_str())) {
continue;
}
// We found our parameter!
parameterExpressions[parameter.name] =
expression::ActionExpression::parseFromTable(parameter.type, context);
break;
}
}
}
} // namespace
const ActionDefinitionManager& ActionDefinitionManager::instance()
{
static const ActionDefinitionManager manager;
return manager;
}
void ActionDefinitionManager::addDefinition(std::unique_ptr<ActionDefinition> def)
{
m_definitions.push_back(std::move(def));
}
std::unique_ptr<Action> ActionDefinitionManager::parseAction(const flagset<ProgramContextFlags>& context_flags,
const expression::ParseContext& context) const
{
// We search through all definitions for every time we want to check for an action. This is not the most efficient
// way to handle this since it results in an O(n^2) runtime. A better alternative would be to either construct a
// regex with all the accepted actions as alternatives (although runtime of this is also doubtful) or peek at the
// next token, extract the relevant part (The stuff between "+" and ":") and then look that up in a map. Then we
// would get down to O(n).
// Since this only happens at parse time, this is good enough for now.
for (const auto& actionDef : m_definitions) {
const auto parseString = "+" + actionDef->getName() + ":";
if (!optional_string(parseString.c_str())) {
continue;
}
SCP_unordered_map<SCP_string, expression::ActionExpression> parameterExpressions;
const auto& params = actionDef->getParameters();
if (params.size() == 1) {
// Single parameters are expected to be placed directly after the action name
parameterExpressions[params.front().name] =
expression::ActionExpression::parseFromTable(params.front().type, context);
} else {
parseActionParameters(params, parameterExpressions, context);
if (parameterExpressions.size() != params.size()) {
SCP_vector<ActionParameter> missingParameters;
std::copy_if(params.cbegin(),
params.cend(),
std::back_inserter(missingParameters),
[&parameterExpressions](const ActionParameter& param) {
const auto iter = parameterExpressions.find(param.name);
return iter == parameterExpressions.cend();
});
SCP_vector<SCP_string> missingParameterNames;
std::transform(missingParameters.cbegin(),
missingParameters.cend(),
std::back_inserter(missingParameterNames),
[](const ActionParameter& param) { return "+" + param.name; });
const auto namesList = util::join_container(missingParameterNames, ", ");
error_display(0, "Missing parameters for action '%s': %s", parseString.c_str(), namesList.c_str());
// Fix up the parameter list so that we can continue parsing
for (const auto& missingParam : missingParameters) {
parameterExpressions[missingParam.name] = expression::ActionExpression();
}
}
}
auto actionInstance = actionDef->createAction(parameterExpressions);
const auto requiredFlags = actionDef->getRequiredContext();
if ((context_flags & requiredFlags) != requiredFlags) {
// We are missing at least one context flag so this action is not valid here. We still return the action
// here though since that is the only way we can keep parsing the table without throwing random error
// messages at the user. However, this will trigger an Assertion (in debug) or crashes when the action is
// actually run later.
error_display(0,
"The action %s is not available in the current context. This will lead to an Assertion failure when "
"this action is triggered.",
parseString.c_str());
}
return actionInstance;
}
return std::unique_ptr<Action>();
}
ActionDefinitionManager::ActionDefinitionManager()
{
addDefinition(
std::unique_ptr<ActionDefinition>(new BuiltinActionDefinition<types::MoveToSubmodel>("Move To Subobject")));
addDefinition(std::unique_ptr<ActionDefinition>(
new BuiltinActionDefinition<types::ParticleEffectAction>("Start Particle Effect")));
addDefinition(
std::unique_ptr<ActionDefinition>(new BuiltinActionDefinition<types::PlaySoundAction>("Play 3D Sound")));
addDefinition(
std::unique_ptr<ActionDefinition>(new BuiltinActionDefinition<types::SetDirectionAction>("Set Direction")));
addDefinition(
std::unique_ptr<ActionDefinition>(new BuiltinActionDefinition<types::SetPositionAction>("Set Position")));
addDefinition(std::unique_ptr<ActionDefinition>(new BuiltinActionDefinition<types::WaitAction>("Wait")));
}
} // namespace actions
+29
View File
@@ -0,0 +1,29 @@
#pragma once
#include "ActionDefinition.h"
namespace actions {
class ActionDefinitionManager {
public:
// This type is supposed to be global so it may not be copied
ActionDefinitionManager(const ActionDefinitionManager&) = delete;
ActionDefinitionManager& operator=(const ActionDefinitionManager&) = delete;
ActionDefinitionManager(ActionDefinitionManager&&) noexcept = default;
ActionDefinitionManager& operator=(ActionDefinitionManager&&) noexcept = default;
std::unique_ptr<Action> parseAction(const flagset<ProgramContextFlags>& context_flags,
const expression::ParseContext& context) const;
static const ActionDefinitionManager& instance();
private:
ActionDefinitionManager();
void addDefinition(std::unique_ptr<ActionDefinition> def);
SCP_vector<std::unique_ptr<ActionDefinition>> m_definitions;
};
} // namespace actions
+37
View File
@@ -0,0 +1,37 @@
#pragma once
#include "ActionDefinition.h"
#include "expression/Value.h"
namespace actions {
template <typename TAction>
class BuiltinActionDefinition : public ActionDefinition {
using ActionValueType = typename TAction::ValueType;
public:
BuiltinActionDefinition(SCP_string name)
: ActionDefinition(std::move(name), {{"parameter", expression::ValueTypeTraits<ActionValueType>::type}})
{
}
~BuiltinActionDefinition() override = default;
flagset<ProgramContextFlags> getRequiredContext() const override
{
return flagset<ProgramContextFlags>(TAction::getRequiredExecutionContextFlags());
}
std::unique_ptr<Action> createAction(
const SCP_unordered_map<SCP_string, expression::ActionExpression>& parameterExpressions) const override
{
const auto paramIter = parameterExpressions.find("parameter");
// This should have been caught earlier
Assertion(paramIter != parameterExpressions.cend(), "Could not find built-in parameter!");
return std::unique_ptr<Action>(new TAction(paramIter->second.template asTyped<ActionValueType>()));
}
};
} // namespace actions
+174
View File
@@ -0,0 +1,174 @@
#include "Program.h"
#include "Action.h"
#include "actions/ActionDefinitionManager.h"
#include "executor/global_executors.h"
#include "tracing/Monitor.h"
#include "tracing/categories.h"
#include "tracing/tracing.h"
namespace {
using namespace actions;
tracing::Monitor<int> RunningProgramsMonitor("RunningPrograms", 0);
struct ProgramRunner {
tracing::RunningCounter runningCounter{RunningProgramsMonitor};
ProgramInstance instance;
explicit ProgramRunner(const ProgramInstance& _instance) : instance(_instance) {}
executor::Executor::CallbackResult operator()()
{
TRACE_SCOPE(tracing::ProgramStepOne);
auto res = instance.step();
switch (res) {
case ProgramState::Running:
// If the program is still running then we need to reschedule our execution
return executor::Executor::CallbackResult::Reschedule;
case ProgramState::Done:
case ProgramState::Errored:
default:
return executor::Executor::CallbackResult::Done;
}
}
};
} // namespace
namespace actions {
ProgramInstance::ProgramInstance(const actions::Program* program) : _program(program) {}
ProgramState ProgramInstance::step()
{
if (!_locals.host.IsValid()) {
return ProgramState::Done;
}
auto& actions = _program->getActions();
for (; _currentInstruction < actions.size(); ++_currentInstruction) {
auto& action = actions[_currentInstruction];
auto result = action->execute(_locals);
if (result == ActionResult::Errored) {
return ProgramState::Errored;
}
if (result == ActionResult::Wait) {
// Action is not done yet, call again next frame
return ProgramState::Running;
}
// Action finished, run next action in program
}
// End of program reached, we are done now
return ProgramState::Done;
}
ProgramLocals& ProgramInstance::locals()
{
return _locals;
}
const ProgramLocals& ProgramInstance::locals() const
{
return _locals;
}
const SCP_vector<std::unique_ptr<actions::Action>>& Program::getActions() const
{
return _actions;
}
Program::Program() = default;
ProgramInstance Program::newInstance() const
{
return ProgramInstance(this);
}
void Program::parseActions(const flagset<ProgramContextFlags>& context_flags, const expression::ParseContext& context)
{
while (true) {
auto action = ActionDefinitionManager::instance().parseAction(context_flags, context);
if (!action) {
break;
}
_actions.push_back(std::move(action));
}
}
Program::Program(const Program& other) { *this = other; }
Program& Program::operator=(const Program& other)
{
_actions.clear();
_actions.reserve(other._actions.size());
for (auto& action : other._actions) {
_actions.emplace_back(action->clone());
}
return *this;
}
Program& Program::operator=(Program&&) noexcept = default;
Program::Program(Program&&) noexcept = default;
bool ProgramSet::isEmpty() const
{
return _programs.empty();
}
ProgramSet::ProgramSet() = default;
ProgramSet::ProgramSet(const flagset<ProgramContextFlags>& context_flags) : _contextFlags(context_flags) {}
void ProgramSet::start(object* objp, const vec3d* local_pos, const matrix* local_orient, int submodel) const
{
if (_contextFlags[ProgramContextFlags::HasObject]) {
Assertion(objp != nullptr, "Invalid object pointer supplied.");
}
if (_contextFlags[ProgramContextFlags::HasSubobject]) {
Assertion(submodel >= 0, "Invalid subobject supplied.");
}
for (const auto& prog : _programs) {
auto instance = prog.newInstance();
instance.locals().host = object_h(objp);
instance.locals().localPosition = *local_pos;
instance.locals().localOrient = *local_orient;
instance.locals().hostSubobject = submodel;
instance.locals().variables = getDefaultTableVariables();
// Just use the executor system to take care of running this program
executor::OnSimulationExecutor->post(ProgramRunner(instance));
}
}
ProgramSet ProgramSet::parseProgramSet(const char* tag, const flagset<ProgramContextFlags>& context_flags)
{
ProgramSet set(context_flags);
const auto parseContext = getTableParseContext();
while (optional_string(tag)) {
Program p;
p.parseActions(context_flags, parseContext);
set._programs.push_back(std::move(p));
}
return set;
}
} // namespace actions
+112
View File
@@ -0,0 +1,112 @@
#pragma once
#include "globalincs/pstypes.h"
#include "Action.h"
#include "common.h"
namespace actions {
class Program;
class ProgramSet;
enum class ProgramState
{
Running,
Done,
Errored
};
/**
* @brief An instance of a program execution
*
* A program instance contains all information related to a single execution of a program. A program instance is
* independent from other instances. Local variables used by actions are stored in a specific structure which can be
* used by actions to keep track of state in this specific instance.
*/
class ProgramInstance {
size_t _currentInstruction = 0;
ProgramLocals _locals;
const Program* _program = nullptr;
public:
explicit ProgramInstance(const Program* program);
ProgramState step();
ProgramLocals& locals();
const ProgramLocals& locals() const;
};
/**
* @brief A program specified in a table
*
* A program is a sequential collection of Actions which are executed in sequence.
*/
class Program {
SCP_vector<std::unique_ptr<Action>> _actions;
public:
Program();
Program(const Program& other);
Program& operator=(const Program& other);
Program(Program&& other) noexcept;
Program& operator=(Program&& other) noexcept;
const SCP_vector<std::unique_ptr<actions::Action>>& getActions() const;
/**
* @brief Creates a new program instance from this program
*
* The program instance is initialized to its initial values.
*
* @return The new program instance
*/
ProgramInstance newInstance() const;
void parseActions(const flagset<ProgramContextFlags>& context_flags, const expression::ParseContext& context);
};
/**
* @brief A set of parsed programs
*
* Programs are parsed in sets of zero or more programs to make it possible for the content creator to split up
* programs.
*/
class ProgramSet {
flagset<ProgramContextFlags> _contextFlags;
SCP_vector<Program> _programs;
public:
ProgramSet();
explicit ProgramSet(const flagset<ProgramContextFlags>& context_flags);
bool isEmpty() const;
/**
* @brief Starts the execution of all programs within this set with the specified parameters
* @param objp The object on which this program is executed
* @param local_pos The local position relative to the object or the subsystem if specified
* @param local_orien The local orientation relative to the object or the subsystem if specified
* @param submodel The submodel of the model to which this program is attached to.
*/
void start(object* objp, const vec3d* local_pos, const matrix* local_orient, int submodel = -1) const;
/**
* @brief Parses a program set of zero or more programs
*
* The tag is entirely optional and if it doesn't appear in the current table then an empty set will be returned
* which does nothing if started.
*
* @param tag The tag which is required before a program can be specified
* @param context_flags A set of flags which specify in which environment the program will be used. This is used
* mainly for validating the used actions.
* @return The parsed program set.
*/
static ProgramSet parseProgramSet(const char* tag, const flagset<ProgramContextFlags>& context_flags = {});
};
} // namespace actions
+27
View File
@@ -0,0 +1,27 @@
#include "common.h"
namespace actions {
expression::ParseContext getTableParseContext()
{
expression::ParseContext ctx;
auto& locals = ctx.variables.addScope("locals");
locals.addMember("position", expression::ValueType::Vector);
locals.addMember("direction", expression::ValueType::Vector);
return ctx;
}
expression::ProgramVariables getDefaultTableVariables()
{
expression::ProgramVariables vars;
vars.setValue({"locals", "position"}, expression::Value(vmd_zero_vector));
vars.setValue({"locals", "direction"}, expression::Value(vmd_zero_vector));
return vars;
}
} // namespace actions
+59
View File
@@ -0,0 +1,59 @@
#pragma once
#include "globalincs/flagset.h"
#include "actions/expression/ParseContext.h"
#include "actions/expression/ProgramVariables.h"
#include "math/vecmat.h"
#include "object/object.h"
class object;
class ship_subsys;
namespace actions {
struct ProgramLocals {
object_h host;
vec3d localPosition = vmd_zero_vector;
matrix localOrient = vmd_identity_matrix;
int hostSubobject = -1;
int waitTimestamp = 0;
expression::ProgramVariables variables;
};
/**
* @brief A list of flags for altering the program parsing behavior
*
* This should be used for differentiating between different program environments when validating the program (e.g. a
* particle effect requires an object host).
*/
// clang-format off
FLAG_LIST(ProgramContextFlags) {
HasObject = 0, //!< The program will be started with an object host
HasSubobject, //!< The program will be started with a subobject host
NUM_VALUES
};
// clang-format on
/**
* @brief Constructs the "table" parse context
*
* This is the context that is available when parsing a program from an external table (e.g. ships or weapons).
*
* @return The parse context
*/
expression::ParseContext getTableParseContext();
/**
* @brief Gets a program variables instance initialized with the default values
*
* The values are consistent with what is required for the default table parse context;
*
* @return The program variables
*/
expression::ProgramVariables getDefaultTableVariables();
} // namespace actions
@@ -0,0 +1,66 @@
#include "ActionExpression.h"
#include "ExpressionParser.h"
#include "TypeDefinition.h"
#include "actions/expression/nodes/AbstractExpression.h"
namespace actions {
namespace expression {
namespace {
SCP_string getTypeName(ValueType type)
{
const auto& typeDef = TypeDefinition::forValueType(type);
return typeDef.getName();
}
} // namespace
ActionExpression ActionExpression::parseFromTable(ValueType expectedReturnType, const ParseContext& context)
{
SCP_string expressionText;
stuff_string(expressionText, F_NAME);
ExpressionParser parser(expressionText);
auto expression = parser.parse(context);
if (!expression) {
error_display(0, "Failed to parse action expression:\n%s", parser.getErrorText().c_str());
return ActionExpression();
}
auto type = expression->getExpressionType();
// Check if the type this evaluates to matches what we expect
if (!checkTypeWithImplicitConversion(type, expectedReturnType)) {
error_display(0,
"Expression evaluates to type <%s> but <%s> was expected!",
getTypeName(type).c_str(),
getTypeName(expectedReturnType).c_str());
return ActionExpression();
}
// Everything is valid
return ActionExpression(expression);
}
Value ActionExpression::execute(const ProgramVariables& variables) const
{
// Do not crash on invalid expressions
if (!isValid()) {
return Value();
}
return m_expression->execute(variables);
}
bool ActionExpression::isValid() const
{
return m_expression != nullptr;
}
} // namespace expression
} // namespace actions
@@ -0,0 +1,83 @@
#pragma once
#include "ParseContext.h"
#include "ProgramVariables.h"
#include "TypeDefinition.h"
#include "parse/parselo.h"
namespace actions {
namespace expression {
namespace nodes {
class AbstractExpression;
}
template <typename T>
class TypedActionExpression;
/**
* @brief An expression that can be executed to compute a value at runtime
*
* This is the basis of having dynamic values in actions by allowing mods to specify complex expressions that make use
* of variables and functions for computing their values at runtime.
*/
class ActionExpression {
public:
ActionExpression() = default;
Value execute(const ProgramVariables& variables) const;
bool isValid() const;
template <typename T>
TypedActionExpression<T> asTyped() const;
static ActionExpression parseFromTable(ValueType expectedReturnType, const ParseContext& context);
protected:
explicit ActionExpression(std::shared_ptr<nodes::AbstractExpression> expression)
: m_expression(std::move(expression))
{
}
std::shared_ptr<nodes::AbstractExpression> m_expression;
};
/**
* @brief An action expression with a specific type specified at compile time
*
* This is most useful for built-in actions that have the required type fixed at compile time.
*
* @tparam T The type of the expression value.
*/
template <typename T>
class TypedActionExpression {
public:
explicit TypedActionExpression(ActionExpression expression) : m_expression(std::move(expression)) {}
T execute(const ProgramVariables& variables) const
{
// Do not crash on invalid expressions
if (!m_expression.isValid()) {
return T();
}
return m_expression.execute(variables).template get<T>();
}
static TypedActionExpression<T> parseFromTable(const ParseContext& context)
{
return ActionExpression::parseFromTable(ValueTypeTraits<T>::type, context).template asTyped<T>();
}
private:
ActionExpression m_expression;
};
template <typename T>
TypedActionExpression<T> ActionExpression::asTyped() const
{
return TypedActionExpression<T>(*this);
}
} // namespace expression
} // namespace actions
@@ -0,0 +1,194 @@
#include "ExpressionParser.h"
#include "actions/expression/nodes/FunctionCallExpression.h"
#include "actions/expression/nodes/LiteralExpression.h"
#include "actions/expression/nodes/RandomRangeExpression.h"
#include "actions/expression/nodes/VariableReferenceExpression.h"
#include "actions/expression/nodes/VectorConstructorExpression.h"
#include "libs/antlr/ErrorListener.h"
PUSH_SUPPRESS_WARNINGS
#include "action_expression/generated/ActionExpressionLexer.h"
#include "action_expression/generated/ActionExpressionParser.h"
#include "action_expression/generated/ActionExpressionVisitor.h"
POP_SUPPRESS_WARNINGS
namespace actions {
namespace expression {
namespace {
class ExpressionBuilderVisitor : public ActionExpressionVisitor {
public:
antlrcpp::Any visitExpression_main(ActionExpressionParser::Expression_mainContext* context) override
{
return visit(context->expression());
}
antlrcpp::Any visitExpression(ActionExpressionParser::ExpressionContext* context) override
{
if (context->value_expression() != nullptr) {
return visit(context->value_expression());
}
if (context->parenthesis_expression()) {
return visit(context->parenthesis_expression());
}
if (context->random_range_expression()) {
return visit(context->random_range_expression());
}
if (context->variable_reference_expression()) {
return visit(context->variable_reference_expression());
}
// This is an operator so treat it as one.
antlr4::Token* operatorTok;
SCP_string operatorText;
if (context->PLUS() != nullptr) {
operatorTok = context->PLUS()->getSymbol();
operatorText = context->PLUS()->getText();
} else {
operatorTok = context->MINUS()->getSymbol();
operatorText = context->MINUS()->getText();
}
const auto leftExpr = visit(context->expression(0)).as<std::shared_ptr<nodes::AbstractExpression>>();
const auto rightExpr = visit(context->expression(1)).as<std::shared_ptr<nodes::AbstractExpression>>();
auto operatorExpression = std::make_shared<nodes::FunctionCallExpression>(operatorTok,
true,
std::move(operatorText),
SCP_vector<std::shared_ptr<nodes::AbstractExpression>>{leftExpr, rightExpr});
return std::static_pointer_cast<nodes::AbstractExpression>(operatorExpression);
}
antlrcpp::Any visitVariable_reference_expression(
ActionExpressionParser::Variable_reference_expressionContext* context) override
{
const auto identifiers = context->IDENTIFIER();
SCP_vector<SCP_string> partNames;
partNames.reserve(identifiers.size());
std::transform(identifiers.begin(),
identifiers.end(),
std::back_inserter(partNames),
[](antlr4::tree::TerminalNode* node) { return node->getText(); });
SCP_vector<antlr4::Token*> partTokens;
partTokens.reserve(identifiers.size());
std::transform(identifiers.begin(),
identifiers.end(),
std::back_inserter(partTokens),
[](antlr4::tree::TerminalNode* node) { return node->getSymbol(); });
auto expression =
std::make_shared<nodes::VariableReferenceExpression>(std::move(partNames), std::move(partTokens));
return std::static_pointer_cast<nodes::AbstractExpression>(expression);
}
antlrcpp::Any visitRandom_range_expression(ActionExpressionParser::Random_range_expressionContext* context) override
{
auto expression = std::make_shared<nodes::RandomRangeExpression>(context->RAND_L_PAREN()->getSymbol(),
visit(context->expression(0)).as<std::shared_ptr<nodes::AbstractExpression>>(),
visit(context->expression(1)).as<std::shared_ptr<nodes::AbstractExpression>>());
return std::static_pointer_cast<nodes::AbstractExpression>(expression);
}
antlrcpp::Any visitLiteral_expression(ActionExpressionParser::Literal_expressionContext* context) override
{
std::shared_ptr<nodes::LiteralExpression> expression;
if (context->FLOAT() != nullptr) {
expression = std::make_shared<nodes::LiteralExpression>(context->FLOAT()->getSymbol(),
Value(std::stof(context->FLOAT()->getText())));
} else if (context->INT() != nullptr) {
expression = std::make_shared<nodes::LiteralExpression>(context->INT()->getSymbol(),
Value(std::stoi(context->INT()->getText())));
} else {
const auto idText = context->STRING()->getText();
// Cut off the first and last characters since those are the < > braces
expression = std::make_shared<nodes::LiteralExpression>(context->STRING()->getSymbol(),
Value(idText.substr(1, idText.size() - 2)));
}
return std::static_pointer_cast<nodes::AbstractExpression>(expression);
}
antlrcpp::Any visitParenthesis_expression(ActionExpressionParser::Parenthesis_expressionContext* context) override
{
return visit(context->expression());
}
antlrcpp::Any visitValue_expression(ActionExpressionParser::Value_expressionContext* context) override
{
return visitChildren(context);
}
antlrcpp::Any visitVec3d_constructor(ActionExpressionParser::Vec3d_constructorContext* context) override
{
auto xExpression = visit(context->expression(0)).as<std::shared_ptr<nodes::AbstractExpression>>();
auto yExpression = visit(context->expression(1)).as<std::shared_ptr<nodes::AbstractExpression>>();
auto zExpression = visit(context->expression(2)).as<std::shared_ptr<nodes::AbstractExpression>>();
auto expression = std::make_shared<nodes::VectorConstructorExpression>(context->L_PAREN()->getSymbol(),
xExpression,
yExpression,
zExpression);
return std::static_pointer_cast<nodes::AbstractExpression>(expression);
}
};
} // namespace
ExpressionParser::ExpressionParser(SCP_string expressionText) : m_expressionText(std::move(expressionText)) {}
std::shared_ptr<nodes::AbstractExpression> ExpressionParser::parse(const ParseContext& context)
{
antlr4::ANTLRInputStream input(m_expressionText);
ActionExpressionLexer lexer(&input);
antlr4::CommonTokenStream tokens(&lexer);
::ActionExpressionParser parser(&tokens);
// By default we log to stderr which we do not want
parser.removeErrorListeners();
libs::antlr::ErrorListener errListener;
parser.addErrorListener(&errListener);
antlr4::tree::ParseTree* tree = parser.expression_main();
std::shared_ptr<nodes::AbstractExpression> exprReturn;
if (errListener.diagnostics.empty()) {
// Only do semantic checking if syntax is valid
ExpressionBuilderVisitor builder;
exprReturn = tree->accept(&builder).as<std::shared_ptr<nodes::AbstractExpression>>();
if (!exprReturn->validate(&parser, context)) {
exprReturn = nullptr;
} else {
exprReturn->validationDone();
}
}
if (!errListener.diagnostics.empty()) {
SCP_stringstream outStream;
for (const auto& diag : errListener.diagnostics) {
SCP_string tokenUnderline;
if (diag.tokenLength > 1) {
tokenUnderline = SCP_string(diag.tokenLength - 1, '~');
}
outStream << m_expressionText << "\n"
<< SCP_string(diag.columnInLine, ' ') << "^" << tokenUnderline << "\n"
<< diag.errorMessage << "\n";
}
m_errorText = outStream.str();
return nullptr;
}
return exprReturn;
}
const SCP_string& ExpressionParser::getErrorText() const
{
return m_errorText;
}
} // namespace expression
} // namespace actions
@@ -0,0 +1,27 @@
#pragma once
#include "globalincs/pstypes.h"
#include "ParseContext.h"
#include "actions/expression/nodes/AbstractExpression.h"
namespace actions {
namespace expression {
class ExpressionParser {
public:
ExpressionParser(SCP_string expressionText);
std::shared_ptr<nodes::AbstractExpression> parse(const ParseContext& context);
const SCP_string& getErrorText() const;
private:
SCP_string m_expressionText;
SCP_string m_errorText;
};
} // namespace expression
} // namespace actions
@@ -0,0 +1,90 @@
#include "FunctionManager.h"
#include "TypeDefinition.h"
#include "math/vecmat.h"
namespace actions {
namespace expression {
namespace {
template <typename T>
Value value_plus(const SCP_vector<Value>& parameters)
{
return Value(parameters[0].get<T>() + parameters[1].get<T>());
}
template <typename T>
Value value_minus(const SCP_vector<Value>& parameters)
{
return Value(parameters[0].get<T>() - parameters[1].get<T>());
}
} // namespace
const FunctionManager& FunctionManager::instance()
{
static const FunctionManager manager;
return manager;
}
void FunctionManager::addOperator(const SCP_string& name,
std::initializer_list<ValueType> parameterTypes,
ValueType returnType,
FunctionImplementation implementation)
{
m_operators[name].push_back({name, parameterTypes, returnType, std::move(implementation)});
}
const FunctionDefinition* FunctionManager::findOperator(const SCP_string& name,
const SCP_vector<ValueType>& parameters) const
{
const auto iter = m_operators.find(name);
if (iter == m_operators.end()) {
return nullptr;
}
// Prefer exact matches
for (const auto& funcDef : iter->second) {
if (funcDef.parameterTypes == parameters) {
return &funcDef;
}
}
// Now check if there are matches with implicit conversions
for (const auto& funcDef : iter->second) {
// Reject functions with different amount of elements
if (funcDef.parameterTypes.size() != parameters.size()) {
continue;
}
auto funcParamIter = funcDef.parameterTypes.cbegin();
auto actualParamIter = parameters.cbegin();
bool match = true;
for (; funcParamIter != funcDef.parameterTypes.cend(); ++funcParamIter, ++actualParamIter) {
if (!checkTypeWithImplicitConversion(*actualParamIter, *funcParamIter)) {
// Also doesn't match with implicit conversions
match = false;
break;
}
}
if (match) {
return &funcDef;
}
}
return nullptr;
}
FunctionManager::FunctionManager()
{
addOperator("+", {ValueType::Integer, ValueType::Integer}, ValueType::Integer, value_plus<int>);
addOperator("+", {ValueType::Float, ValueType::Float}, ValueType::Float, value_plus<float>);
addOperator("+", {ValueType::Vector, ValueType::Vector}, ValueType::Vector, value_plus<vec3d>);
addOperator("-", {ValueType::Integer, ValueType::Integer}, ValueType::Integer, value_minus<int>);
addOperator("-", {ValueType::Float, ValueType::Float}, ValueType::Float, value_minus<float>);
addOperator("-", {ValueType::Vector, ValueType::Vector}, ValueType::Vector, value_minus<vec3d>);
}
} // namespace expression
} // namespace actions
+45
View File
@@ -0,0 +1,45 @@
#pragma once
#include "Value.h"
namespace actions {
namespace expression {
using FunctionImplementation = std::function<Value(const SCP_vector<Value>& parameters)>;
struct FunctionDefinition {
SCP_string name;
SCP_vector<ValueType> parameterTypes;
ValueType returnType;
FunctionImplementation implementation;
};
class FunctionManager {
public:
// This type is supposed to be global so it may not be copied
FunctionManager(const FunctionManager&) = delete;
FunctionManager& operator=(const FunctionManager&) = delete;
FunctionManager(FunctionManager&&) noexcept = default;
FunctionManager& operator=(FunctionManager&&) noexcept = default;
void addOperator(const SCP_string& name,
std::initializer_list<ValueType> parameterTypes,
ValueType returnType,
FunctionImplementation implementation);
const FunctionDefinition* findOperator(const SCP_string& name, const SCP_vector<ValueType>& parameterTypes) const;
static const FunctionManager& instance();
private:
FunctionManager();
SCP_unordered_map<SCP_string, SCP_vector<FunctionDefinition>> m_operators;
};
} // namespace expression
} // namespace actions
+13
View File
@@ -0,0 +1,13 @@
#pragma once
#include "ProgramVariables.h"
namespace actions {
namespace expression {
struct ParseContext {
ProgramVariablesDefinition variables;
};
} // namespace expression
} // namespace actions
@@ -0,0 +1,61 @@
#include "ProgramVariables.h"
namespace actions {
namespace expression {
ProgramVariablesDefinition& ProgramVariablesDefinition::addScope(const SCP_string& name)
{
auto scope = std::unique_ptr<ProgramVariablesDefinition>(new ProgramVariablesDefinition());
auto scopePtr = scope.get();
m_scopes.insert(std::make_pair(name, std::move(scope)));
return *scopePtr;
}
void ProgramVariablesDefinition::addMember(const SCP_string& name, ValueType type)
{
m_memberTypes[name] = type;
}
ProgramVariablesDefinition* ProgramVariablesDefinition::getScope(const SCP_string& name) const
{
const auto iter = m_scopes.find(name);
if (iter == m_scopes.cend()) {
return nullptr;
}
return iter->second.get();
}
ValueType ProgramVariablesDefinition::getMemberType(const SCP_string& name) const
{
const auto iter = m_memberTypes.find(name);
if (iter == m_memberTypes.cend()) {
return ValueType::Invalid;
}
return iter->second;
}
Value ProgramVariables::getValue(std::initializer_list<const char*> memberPathParts) const
{
return getValue<decltype(memberPathParts)>(memberPathParts);
}
void ProgramVariables::setValue(std::initializer_list<const char*> memberPathParts, Value value)
{
setValue<decltype(memberPathParts)>(memberPathParts, std::move(value));
}
Value ProgramVariables::getValue(const SCP_string& fullMemberName) const
{
const auto iter = m_values.find(fullMemberName);
// This should have been validated earlier
Assertion(iter != m_values.end(), "Could not find member %s in variables!", fullMemberName.c_str());
return iter->second;
}
} // namespace expression
} // namespace actions
@@ -0,0 +1,61 @@
#pragma once
#include "Value.h"
#include "utils/join_string.h"
namespace actions {
namespace expression {
struct ProgramVariables {
public:
template <typename TContainer>
static SCP_string getMemberName(const TContainer& memberPathParts)
{
return util::join_container(memberPathParts, ".");
}
template <typename TContainer>
Value getValue(const TContainer& memberPathParts) const
{
const auto name = getMemberName(memberPathParts);
return getValue(name);
}
Value getValue(std::initializer_list<const char*> memberPathParts) const;
Value getValue(const SCP_string& fullMemberName) const;
template <typename TContainer>
void setValue(const TContainer& memberPathParts, Value value)
{
const auto name = getMemberName(memberPathParts);
m_values[name] = std::move(value);
}
void setValue(std::initializer_list<const char*> memberPathParts, Value value);
private:
SCP_unordered_map<SCP_string, Value> m_values;
};
class ProgramVariablesDefinition {
public:
ProgramVariablesDefinition& addScope(const SCP_string& name);
void addMember(const SCP_string& name, ValueType type);
ProgramVariablesDefinition* getScope(const SCP_string& name) const;
ValueType getMemberType(const SCP_string& name) const;
private:
SCP_unordered_map<SCP_string, std::unique_ptr<ProgramVariablesDefinition>> m_scopes;
SCP_unordered_map<SCP_string, ValueType> m_memberTypes;
};
} // namespace expression
} // namespace actions
@@ -0,0 +1,60 @@
#include "TypeDefinition.h"
namespace actions {
namespace expression {
// Integers can be safely converted to floats (for the most part)
TypeDefinition TypeDefinition::s_integer("Integer", {ValueType::Float});
// No implicit conversions here
TypeDefinition TypeDefinition::s_float("Float", {});
TypeDefinition TypeDefinition::s_vector("Vector", {});
// Identifiers are a technicality needed for making non-math values work but they have no further use other than their
// string content
TypeDefinition TypeDefinition::s_identifier("Identifier", {});
TypeDefinition::TypeDefinition(SCP_string name, SCP_vector<actions::expression::ValueType> allowedImplicitConversion)
: m_name(std::move(name)), m_allowedImplicitConversions(std::move(allowedImplicitConversion))
{
}
const SCP_string& TypeDefinition::getName() const
{
return m_name;
}
const SCP_vector<actions::expression::ValueType>& TypeDefinition::getAllowedImplicitConversions() const
{
return m_allowedImplicitConversions;
}
const TypeDefinition& TypeDefinition::forValueType(ValueType type)
{
switch (type) {
case ValueType::Integer:
return s_integer;
case ValueType::Float:
return s_float;
case ValueType::Vector:
return s_vector;
case ValueType::String:
return s_identifier;
default:
UNREACHABLE("Invalid value type!");
return s_integer; // Make compiler happy
}
}
bool checkTypeWithImplicitConversion(ValueType currentType, ValueType expectedType)
{
if (currentType == expectedType) {
// No need to consider implicit conversions;
return true;
}
const auto& currentTypeDef = TypeDefinition::forValueType(currentType);
const auto& allowedConversions = currentTypeDef.getAllowedImplicitConversions();
// For now, no transitiv conversions are allowed
return std::find(allowedConversions.cbegin(), allowedConversions.cend(), expectedType) != allowedConversions.cend();
}
} // namespace expression
} // namespace actions
+40
View File
@@ -0,0 +1,40 @@
#pragma once
#include "Value.h"
namespace actions {
namespace expression {
class TypeDefinition {
public:
TypeDefinition(SCP_string name, SCP_vector<actions::expression::ValueType> allowedImplicitConversion);
const SCP_string& getName() const;
const SCP_vector<actions::expression::ValueType>& getAllowedImplicitConversions() const;
static const TypeDefinition& forValueType(ValueType type);
// This type is supposed to be global so it may not be copied
TypeDefinition(const TypeDefinition&) = delete;
TypeDefinition& operator=(const TypeDefinition&) = delete;
TypeDefinition(TypeDefinition&&) = delete;
TypeDefinition& operator=(TypeDefinition&&) = delete;
private:
SCP_string m_name;
// The types this type is allowed to implicitly convert to
SCP_vector<ValueType> m_allowedImplicitConversions;
static TypeDefinition s_integer;
static TypeDefinition s_float;
static TypeDefinition s_vector;
static TypeDefinition s_identifier;
};
bool checkTypeWithImplicitConversion(ValueType currentType, ValueType expectedType);
} // namespace expression
} // namespace actions
+80
View File
@@ -0,0 +1,80 @@
#include "Value.h"
#include "math/vecmat.h"
namespace actions {
namespace expression {
Value::Value(int val) : m_value(val) {}
Value::Value(float val) : m_value(val) {}
Value::Value(const vec3d& val) : m_value(val) {}
Value::Value(SCP_string val) : m_value(std::move(val)) {}
ValueType actions::expression::Value::getType() const
{
switch (m_value.index()) {
case 1:
return ValueType::Integer;
case 2:
return ValueType::Float;
case 3:
return ValueType::Vector;
case 4:
return ValueType::String;
default:
return ValueType::Invalid;
}
}
int Value::getInteger() const
{
return get<int>();
}
float Value::getFloat() const
{
return get<float>();
}
vec3d Value::getVector() const
{
return get<vec3d>();
}
SCP_string Value::getIdentifier() const
{
return get<SCP_string>();
}
bool operator==(const Value& lhs, const Value& rhs)
{
return lhs.m_value == rhs.m_value;
}
bool operator!=(const Value& lhs, const Value& rhs)
{
return !(rhs == lhs);
}
std::ostream& operator<<(std::ostream& os, const Value& value)
{
os << "Value<";
switch (value.getType()) {
case ValueType::Invalid:
os << "INVALID";
break;
case ValueType::Integer:
os << value.get<int>();
break;
case ValueType::Float:
os << value.get<float>();
break;
case ValueType::Vector:
os << value.get<vec3d>();
break;
case ValueType::String:
os << value.get<SCP_string>();
break;
}
os << ">";
return os;
}
} // namespace expression
} // namespace actions
+104
View File
@@ -0,0 +1,104 @@
#pragma once
#include "globalincs/pstypes.h"
#include <mpark/variant.hpp>
namespace actions {
namespace expression {
namespace detail {
template <typename ToType>
struct implicit_conversion {
template <typename T>
ToType operator()(const T&)
{
throw std::runtime_error("Invalid implicit conversion.");
}
};
template<>
struct implicit_conversion<float> {
inline float operator()(int val) {
return i2fl(val);
}
template <typename T>
float operator()(const T&)
{
throw std::runtime_error("Invalid implicit conversion.");
}
};
} // namespace detail
enum class ValueType
{
Invalid,
Integer,
Float,
Vector,
String,
};
template <typename T>
struct ValueTypeTraits;
template <>
struct ValueTypeTraits<int> {
static constexpr ValueType type = ValueType::Integer;
};
template <>
struct ValueTypeTraits<float> {
static constexpr ValueType type = ValueType::Float;
};
template <>
struct ValueTypeTraits<vec3d> {
static constexpr ValueType type = ValueType::Vector;
};
template <>
struct ValueTypeTraits<SCP_string> {
static constexpr ValueType type = ValueType::String;
};
class Value {
public:
Value() = default;
explicit Value(int val);
explicit Value(float val);
explicit Value(const vec3d& val);
explicit Value(SCP_string val);
ValueType getType() const;
int getInteger() const;
float getFloat() const;
vec3d getVector() const;
SCP_string getIdentifier() const;
template <typename T>
T get() const
{
const auto currentType = getType();
const auto expectedType = ValueTypeTraits<T>::type;
if (currentType == expectedType) {
// No conversion necessary
return mpark::get<T>(m_value);
}
return mpark::visit(detail::implicit_conversion<T>{}, m_value);
}
friend bool operator==(const Value& lhs, const Value& rhs);
friend bool operator!=(const Value& lhs, const Value& rhs);
friend std::ostream& operator<<(std::ostream& os, const Value& value);
private:
mpark::variant<mpark::monostate, int, float, vec3d, SCP_string> m_value;
};
} // namespace expression
} // namespace actions
@@ -0,0 +1,31 @@
#include "AbstractExpression.h"
namespace actions {
namespace expression {
namespace nodes {
AbstractExpression::AbstractExpression(antlr4::Token* token) : m_token(token) {}
AbstractExpression::~AbstractExpression() = default;
antlr4::Token* AbstractExpression::getToken() const
{
return m_token;
}
ValueType AbstractExpression::getExpressionType() const
{
// Since expressions are immutable, caching this will be more efficient
if (m_cachedType == ValueType::Invalid) {
m_cachedType = determineReturnType();
}
return m_cachedType;
}
void AbstractExpression::validationDone()
{
// This pointer will become invalid after this so reset it now to avoid issues
m_token = nullptr;
}
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,38 @@
#pragma once
#include "actions/expression/ParseContext.h"
#include "actions/expression/Value.h"
#include <Parser.h>
#include <Token.h>
namespace actions {
namespace expression {
namespace nodes {
class AbstractExpression {
public:
AbstractExpression(antlr4::Token* token);
virtual ~AbstractExpression();
virtual Value execute(const ProgramVariables& variables) const = 0;
virtual bool validate(antlr4::Parser* parser, const ParseContext& context) = 0;
virtual void validationDone();
ValueType getExpressionType() const;
antlr4::Token* getToken() const;
protected:
virtual ValueType determineReturnType() const = 0;
antlr4::Token* m_token = nullptr;
mutable ValueType m_cachedType = ValueType::Invalid;
};
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,95 @@
#include "FunctionCallExpression.h"
#include "actions/expression/TypeDefinition.h"
namespace actions {
namespace expression {
namespace nodes {
FunctionCallExpression::FunctionCallExpression(antlr4::Token* token,
bool isOperator,
SCP_string functionName,
SCP_vector<std::shared_ptr<AbstractExpression>> parameterExpressions)
: AbstractExpression(token), m_isOperator(isOperator), m_functionName(std::move(functionName)),
m_parameterExpressions(std::move(parameterExpressions))
{
}
FunctionCallExpression::~FunctionCallExpression() = default;
Value FunctionCallExpression::execute(const ProgramVariables& variables) const
{
SCP_vector<Value> parameterValues;
parameterValues.reserve(m_parameterExpressions.size());
std::transform(m_parameterExpressions.cbegin(),
m_parameterExpressions.cend(),
std::back_inserter(parameterValues),
[&variables](const std::shared_ptr<AbstractExpression>& expression) { return expression->execute(variables); });
return m_functionDef->implementation(parameterValues);
}
bool FunctionCallExpression::validate(antlr4::Parser* parser, const ParseContext& context)
{
bool valid = true;
for (const auto& paramExpression : m_parameterExpressions) {
valid &= paramExpression->validate(parser, context);
}
if (!valid) {
// Exit early if there were errors since the values below are meaningless otherwise
return false;
}
Assertion(m_isOperator, "Non-operator functions are not supported yet!");
SCP_vector<ValueType> parameterTypes;
std::transform(m_parameterExpressions.cbegin(),
m_parameterExpressions.cend(),
std::back_inserter(parameterTypes),
[](const std::shared_ptr<AbstractExpression>& expression) { return expression->getExpressionType(); });
const auto functionDef = FunctionManager::instance().findOperator(m_functionName, parameterTypes);
if (functionDef == nullptr) {
SCP_stringstream paramListStream;
if (!parameterTypes.empty()) {
paramListStream << "<" << TypeDefinition::forValueType(parameterTypes.front()).getName() << ">";
for (auto iter = parameterTypes.cbegin() + 1; iter != parameterTypes.cend(); ++iter) {
paramListStream << ", <" << TypeDefinition::forValueType(*iter).getName() << ">";
}
}
parser->notifyErrorListeners(m_token,
SCP_string("Could not find a definition for the ") + (m_isOperator ? "operator" : "function") + " '" +
m_functionName + "' with parameters (" + paramListStream.str() + ")",
nullptr);
return false;
}
m_functionDef = functionDef;
return true;
}
ValueType FunctionCallExpression::determineReturnType() const
{
return m_functionDef->returnType;
}
void FunctionCallExpression::validationDone()
{
AbstractExpression::validationDone();
// We no longer need this so we can save some memory
m_functionName.clear();
m_functionName.shrink_to_fit();
for (const auto& paramExpression : m_parameterExpressions) {
paramExpression->validationDone();
}
}
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,38 @@
#pragma once
#include "AbstractExpression.h"
#include "actions/expression/FunctionManager.h"
#include "actions/expression/Value.h"
namespace actions {
namespace expression {
namespace nodes {
class FunctionCallExpression : public AbstractExpression {
public:
FunctionCallExpression(antlr4::Token* token,
bool isOperator,
SCP_string functionName,
SCP_vector<std::shared_ptr<AbstractExpression>> parameterExpressions);
~FunctionCallExpression() override;
Value execute(const ProgramVariables& variables) const override;
bool validate(antlr4::Parser* parser, const ParseContext& context) override;
void validationDone() override;
protected:
ValueType determineReturnType() const override;
private:
bool m_isOperator;
SCP_string m_functionName;
const FunctionDefinition* m_functionDef = nullptr;
SCP_vector<std::shared_ptr<AbstractExpression>> m_parameterExpressions;
};
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,30 @@
#include "LiteralExpression.h"
namespace actions {
namespace expression {
namespace nodes {
LiteralExpression::LiteralExpression(antlr4::Token* token, Value literalValue)
: AbstractExpression(token), m_literalValue(std::move(literalValue))
{
}
LiteralExpression::~LiteralExpression() = default;
Value LiteralExpression::execute(const ProgramVariables& /*variables*/) const
{
return m_literalValue;
}
bool LiteralExpression::validate(antlr4::Parser* /*parser*/, const ParseContext& /*context*/)
{
// Literals are always valid
return true;
}
ValueType LiteralExpression::determineReturnType() const
{
return m_literalValue.getType();
}
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,28 @@
#pragma once
#include "AbstractExpression.h"
#include "actions/expression/Value.h"
namespace actions {
namespace expression {
namespace nodes {
class LiteralExpression : public AbstractExpression {
public:
LiteralExpression(antlr4::Token* token, Value literalValue);
~LiteralExpression() override;
Value execute(const ProgramVariables& variables) const override;
bool validate(antlr4::Parser* parser, const ParseContext& context) override;
protected:
ValueType determineReturnType() const override;
private:
Value m_literalValue;
};
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,108 @@
#include "RandomRangeExpression.h"
#include "actions/expression/TypeDefinition.h"
#include "utils/RandomRange.h"
namespace actions {
namespace expression {
namespace nodes {
namespace {
template <typename T>
Value executeHelper(const Value& leftVal, const Value& rightVal)
{
auto leftContentVal = leftVal.get<T>();
auto rightContentVal = rightVal.get<T>();
if (leftContentVal == rightContentVal) {
// no need to do random stuff here
return Value(rightContentVal);
}
if (rightContentVal < leftContentVal) {
// We can fix this issue
std::swap(leftContentVal, rightContentVal);
}
// Might be a bit inefficient not to cache this somehow but the bounds can be dynamic
return Value(util::UniformRange<T>(leftContentVal, rightContentVal).next());
}
} // namespace
RandomRangeExpression::RandomRangeExpression(antlr4::Token* token,
std::shared_ptr<AbstractExpression> leftExpression,
std::shared_ptr<AbstractExpression> rightExpression)
: AbstractExpression(token), m_leftExpression(std::move(leftExpression)),
m_rightExpression(std::move(rightExpression))
{
}
RandomRangeExpression::~RandomRangeExpression() = default;
Value RandomRangeExpression::execute(const ProgramVariables& variables) const
{
const auto leftVal = m_leftExpression->execute(variables);
const auto rightVal = m_rightExpression->execute(variables);
if (leftVal.getType() == ValueType::Integer) {
return executeHelper<int>(leftVal, rightVal);
} else {
return executeHelper<float>(leftVal, rightVal);
}
}
bool RandomRangeExpression::validate(antlr4::Parser* parser, const ParseContext& context)
{
bool valid = true;
valid &= m_leftExpression->validate(parser, context);
valid &= m_rightExpression->validate(parser, context);
if (!valid) {
// Exit early if there were errors since the values below are meaningless otherwise
return false;
}
const auto leftType = m_leftExpression->getExpressionType();
const auto rightType = m_rightExpression->getExpressionType();
const auto& leftTypedef = TypeDefinition::forValueType(leftType);
const auto& rightTypedef = TypeDefinition::forValueType(rightType);
// Both values must be the same
if (leftType != rightType) {
parser->notifyErrorListeners(m_rightExpression->getToken(),
"Inconsistent types for random range. Must be the same but got <" + leftTypedef.getName() + "> and <" +
rightTypedef.getName() + ">.",
nullptr);
return false;
}
// And we only support floats or integers
if (leftType != ValueType::Float && leftType != ValueType::Integer) {
parser->notifyErrorListeners(m_leftExpression->getToken(),
"Invalid parameter type for random range. Must be <Float> or <Integer> but got <" + leftTypedef.getName() +
">.",
nullptr);
return false;
}
// Everything is fine.
return true;
}
ValueType RandomRangeExpression::determineReturnType() const
{
// Return type is the same as the contained return types
return m_leftExpression->getExpressionType();
}
void RandomRangeExpression::validationDone()
{
AbstractExpression::validationDone();
m_leftExpression->validationDone();
m_rightExpression->validationDone();
}
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,30 @@
#pragma once
#include "AbstractExpression.h"
namespace actions {
namespace expression {
namespace nodes {
class RandomRangeExpression : public AbstractExpression {
public:
RandomRangeExpression(antlr4::Token* token,
std::shared_ptr<AbstractExpression> leftExpression,
std::shared_ptr<AbstractExpression> rightExpression);
~RandomRangeExpression() override;
Value execute(const ProgramVariables& variables) const override;
bool validate(antlr4::Parser* parser, const ParseContext& context) override;
void validationDone() override;
protected:
ValueType determineReturnType() const override;
private:
std::shared_ptr<AbstractExpression> m_leftExpression;
std::shared_ptr<AbstractExpression> m_rightExpression;
};
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,69 @@
#include "VariableReferenceExpression.h"
namespace actions {
namespace expression {
namespace nodes {
VariableReferenceExpression::VariableReferenceExpression(SCP_vector<SCP_string> references,
SCP_vector<antlr4::Token*> referenceTokens)
: AbstractExpression(referenceTokens.back()), m_references(std::move(references)),
m_referenceTokens(std::move(referenceTokens))
{
}
VariableReferenceExpression::~VariableReferenceExpression() = default;
Value VariableReferenceExpression::execute(const ProgramVariables& variables) const
{
return variables.getValue(m_fullVariablePath);
}
bool VariableReferenceExpression::validate(antlr4::Parser* parser, const ParseContext& context)
{
// Start out in the global scope
auto currentScope = &context.variables;
SCP_string currentScopeName("<global>");
for (size_t i = 0; i < m_references.size() - 1; ++i) {
const auto nextScope = currentScope->getScope(m_references[i]);
if (nextScope == nullptr) {
parser->notifyErrorListeners(m_referenceTokens[i],
"Could not find scope " + m_references[i] + " in scope " + currentScopeName + ".",
nullptr);
return false;
}
currentScope = nextScope;
currentScopeName = m_references[i];
}
auto variableType = currentScope->getMemberType(m_references.back());
if (variableType == ValueType::Invalid) {
parser->notifyErrorListeners(m_referenceTokens.back(),
"Could not find variable " + m_references.back() + " in scope " + currentScopeName + ".",
nullptr);
return false;
}
// Cache this so we don't duplicate all this code in determineReturnType()
m_variableType = variableType;
m_fullVariablePath = ProgramVariables::getMemberName(m_references);
return true;
}
ValueType VariableReferenceExpression::determineReturnType() const
{
return m_variableType;
}
void VariableReferenceExpression::validationDone()
{
AbstractExpression::validationDone();
// Clear these since they are not necessary anymore
m_references.clear();
m_referenceTokens.clear();
}
} // namespace nodes
} // namespace expression
} // namespace actions
@@ -0,0 +1,32 @@
#pragma once
#include "AbstractExpression.h"
namespace actions {
namespace expression {
namespace nodes {
class VariableReferenceExpression : public AbstractExpression {
public:
VariableReferenceExpression(const SCP_vector<SCP_string> references,
SCP_vector<antlr4::Token*> referenceTokens);
~VariableReferenceExpression() override;
Value execute(const ProgramVariables& variables) const override;
bool validate(antlr4::Parser* parser, const ParseContext& context) override;
void validationDone() override;
protected:
ValueType determineReturnType() const override;
private:
ValueType m_variableType = ValueType::Invalid;
SCP_string m_fullVariablePath;
SCP_vector<SCP_string> m_references;
SCP_vector<antlr4::Token*> m_referenceTokens;
};
} // namespace nodes
} // namespace expression
} // namespace actions
Loaded 100 of 1877 files, more files were not shown because too many files have changed in this diff. Show more