Commit Graph
56 Commits
Author SHA1 Message Date
Goober5000 6bc6426672 clean up static alias lists used for name lookups
Refactor `Ship_class_names`, `Iff_info_names`, and `Ai_class_names` to be populated once at parse time, as opposed to ad-hoc and possibly many times.

Also make `Ai_classes` and `Spawn_names` proper SCP_vectors.
2026-08-02 18:26:47 -04:00
Goober5000andClaude Opus 4.6 fa86575606 Suppress Coverity GLOBAL_INIT_ORDER false positives for safe globals
Add coverity[GLOBAL_INIT_ORDER] annotations to ~50 global variables
across 27 files. These were all analyzed and confirmed safe:

- ~48 OptionBuilder::finish() globals use a Meyers singleton
  (OptionsManager::instance()), which guarantees safe init order.
  Destruction is also safe due to shared_ptr ref-counting.
- 6 default-constructed container globals (vectors, maps) have no
  cross-TU dependencies at construction or destruction time.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
2026-03-22 15:00:25 -04:00
Goober5000 afcb4871a3 upgrade stuff_int_list with enum class types
For type safety, use enum class rather than int.

Also make a few miscellaneous tweaks such as adding a new casting macro and making detail level settings a bit cleaner.
2025-10-01 21:47:01 -04:00
Goober5000 1c9066485c STL fixes and cleanup (#6455)
* fix some usages of std::transform

* change parse_string_flag_list to use a reference

* add a variant of parse_string_flag_list that can use a SCP_set, and make a templated version of flag_def_list
2024-12-16 18:12:30 +01:00
Asteroth bec860e9d8 Small optimization (#6321)
* small optimization

* put this comment where it was before
2024-08-27 02:30:03 -04:00
Mike Nelson 6280ffe0e1 Accessibility IFF colors (#6300)
* accessibility iff colors

* appease clang the conqueror
2024-08-27 00:36:18 +02:00
Asteroth e65803b747 add bad-rearm-time sexp 2024-03-25 20:13:16 -04:00
Goober5000 803f08f969 Merge pull request #5992 from MageKing17/cleanup/iff-modular-special-colors
Change special IFF color `#define`s into `extern int`s.
2024-03-02 11:36:17 -05:00
Goober5000 58053a02b2 several coverity fixes
Some false positive annotations, some range checks, and commenting dead code.
2024-03-01 13:47:00 -05:00
MageKing17 a7b795e965 Change special IFF color #defines into extern ints.
Before this commit, `IFF_COLOR_SELECTION`, `IFF_COLOR_MESSAGE`, and `IFF_COLOR_TAGGED` were hardcoded indices into the `Iff_colors` vector. This could cause problems if any of these three colors were set to the same RGB values (since `iff_init_color()` doesn't create a new entry if the color already exists in the vector), and if a modular table tried to change any of these colors nothing would happen (since it would just create a new entry in `Iff_colors` without doing anything to the hardcoded indices).

This commit instead changes the `#define`s into `extern int`s, and assigns the return value of `iff_init_color()` to those global variables upon parsing the special color values, meaning that any combination of the three can be set to the same color without causing issues, and modular tables can actually modify them.

Potential clutter from unused values in the `Iff_colors` vector is basically unchanged (technically slightly worse if a modular table overrides any of these special colors with a color that doesn't already exist in the vector), but should maybe be looked at in the future.
2024-02-13 13:51:09 -08:00
Goober5000 bcc964d0fa color tweaks 2023-04-15 00:06:33 -04:00
MjnMixael 6e1b194c38 Modular iff table (#4845)
* split up init, parsing, and data resolution

* modular iff table

* address feedback
2022-11-07 22:52:44 +09:00
Goober5000 8694c042f7 add wing flags
Add setFlag and getFlag for wings, just like for ships and parse objects
2022-10-04 23:59:30 -04:00
Goober5000 ef4c3984b5 fix good-rearm-time bug
The original implementation of `ai_good_time_to_rearm` did not revert to being a "bad" time to rearm when the time was up.  This fixes that and adds an AI profiles flag to toggle it.

Also converts `ai_rearm_timestamp` to use the new TIMESTAMP type.
2022-08-29 00:00:15 -04:00
BMagnu 391de411ee Vectorize IFF Defs for unlimited IFFs (#3634)
* make IFF limit a vector

* Also change QTFred

* Warnings

* remove decltypes, wrap arrays in unique_ptr
2021-09-30 14:17:28 +09: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 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
Taylor Richards bd9880bc9b replace FS2NetD with PXO 2019-11-08 02:07:14 -05:00
asarium f819db3ac5 More string const correctness fixes 2017-01-04 00:12:41 +01:00
Fabian Woltermann d7e6e5e152 Fixes an issue in flagsets where the sanity check for flagset::set was inverted. 2016-08-13 18:26:17 +02:00
Fabian Woltermann 770fce8de5 Bitset flags -- take 2 (#775)
This introduces a new mechanism for handling bit flags. Instead of using an int (or two, or three) to write bits into, this uses the std::bitset in a wrapper class that accepts an enum class as input. This means that certain classes of errors we've had a few of in the engine, where a coder used the wrong set of flags or checked them against the wrong variable (SF_STEALTH vs SIF_STEALTH, for example) can now be detected at a compiler level rather than not at all.
2016-08-12 16:13:50 -07:00
asarium 1bcd5400d3 Move build system to CMake 2016-07-22 12:07:19 +02:00
Goober5000 bd3cd7eb18 Merge pull request #195 from Echelon9/fix/sort-uniq-includes
Review and refactor #include's
2015-08-19 00:05:02 -04:00
Echelon9 4885807d82 Fix: iff_defs/iff_defs.cpp:68:4: warning: declaration of ‘temp_color_t’ shadows a previous local [-Wshadow] 2015-07-05 16:57:35 +10:00
Echelon9 c5493bb480 Scripted sort and uniq on (internal) project includes. Improves search time and as a by product removed a number of duplicative includes. 2015-06-22 20:24:30 +10:00
asarium 9aed627ce7 Replace longjmp with exceptions
Also added a EditorConfig file
2015-04-24 15:03:59 +02:00
Goober5000 762045168a merp
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@9918 387891d4-d844-0410-90c0-e4c51a9137d3
2013-10-16 19:46:01 +10:00
Goober5000 73ebcda173 additional memory management improvements
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@9917 387891d4-d844-0410-90c0-e4c51a9137d3
2013-10-16 19:46:01 +10:00
Goober5000 138e6b853f yeesh... a veritable cascade of const-correctness
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@9783 387891d4-d844-0410-90c0-e4c51a9137d3
2013-09-13 20:18:32 +10:00
Goober5000 154356924e allow alternate spelling 2012-12-30 18:01:02 +00:00
Zacam f6ad6b14b6 Synchronization of differences between Antipodes and Trunk. Cause unknown, just commit drift issues. Regular auditing will catch these faster, but people need to pay more attention when syncing Trunk changes over to Antipodes. 2012-01-13 17:49:57 +00:00
Echelon9 21c2449f0b Documentation: Changes such that the Doxygen log reports clean, in anticipation of 3.6.14 release 2011-11-28 13:03:38 +00:00
Echelon9 375ca512ad Documentation: Code cleanup of iff_deffs.cpp and related 2011-10-09 02:52:41 +00:00
Wanderer 2ee628829a fixes to various things listed in the prefast log 2009-09-11 15:52:18 +00:00
Wanderer 0dc516368a commit of target highlighting options mostly for radar icons 2009-07-31 17:25:29 +00:00
Echelon9 aadd6ca7c1 Fix use of uninitialised variable reported by valgrind 2009-07-22 09:48:01 +00:00
portej05 719825f80d The big CVS comment removal. This chops approx. 3.5mb off a full checkout.
I've tested this through compiling and through hand checking. 
Normalises line endings in ALL files to \n.
2009-06-20 08:08:20 +00:00
karajorma 8bdc2c1a9f Portej05's second set of preFAST fixes. 2009-05-24 21:38:22 +00:00
Wanderer 9c7b1a1292 merge from wanderer branch - alt iff colors 2009-05-19 21:17:48 +00:00
taylor 0253d298e9 only load tbls from tables/ (Mantis #1725) 2008-10-13 06:34:48 +00:00
Backslash 251e565593 Add "orders hidden", "orders shown", and "wing name hidden" to iff_defs.tbl flags.
Use these flags instead of wcsaga command line for certain HUD displays.
2008-04-29 05:26:34 +00:00
taylor c5235c6428 FS2NetD v.2 (still a work in progress, but is ~98% complete) 2007-10-15 06:43:23 +00:00
Goober5000 6ab0b17acc added fixes for #1415 and #1483, made sure every read_file_text had a corresponding setjmp, and sync'd the parse error messages between HEAD and stable 2007-09-02 02:10:29 +00:00
Goober5000 6182e6063b fix two bugs:
--default ship flags in the iff_defs table were not correctly translated from parse flags to ship/object flags
--ships were created with default allowed comm orders regardless of which team they were on
2007-02-08 07:39:35 +00:00
taylor 6ab6cd71ce fixes for stuff_string() bounds checking 2006-09-11 01:17:07 +00:00
Goober5000 488ab9a5dc iff defs should allow specification of both flag fields
--Goober5000
2006-07-08 19:36:04 +00:00
Goober5000 7e41877b7b proper capitalization according to Volition 2006-04-20 06:32:30 +00:00
Goober5000 a9642a2a86 more tweaks, plus clarification of checks for the existence of files
--Goober5000
2006-02-13 00:20:46 +00:00
Goober5000 7720a40fd6 fix all teams at war IFF behavior
--Goober5000
2006-01-28 04:33:06 +00:00