Commit Graph

1519 Commits

Author SHA1 Message Date
Lioncash 8dcffbb67f CBurstFire: Use std::array where applicable
Makes the array type strongly typed and prevents implicit array to
pointer decay.
2019-09-22 09:48:07 -04:00
Lioncash adf9610138 CBurstFire: Tidy up includes
Includes all necessary headers and uses a forward declaration where
applicable. Ensures inclusion changes in other headers don't break the compilation
of these headers and source files.
2019-09-22 09:45:01 -04:00
Phillip Stephens 2e8eec91ea
Missed one 2019-09-21 06:10:54 -07:00
Phillip Stephens 68e2fad74f
Fix TCastTo.hpp inclusions, add comment to warn against modifying include path 2019-09-21 06:07:13 -07:00
Phillip Stephens a89852fc46
Merge pull request #79 from lioncash/trunc
CAuiEnergyBarT01: Prevent truncation within DownloadBarCoordFunc
2019-09-21 05:44:27 -07:00
Phillip Stephens 88e057bf11
Merge pull request #78 from lioncash/const2
CGuiWidgetDrawParms: Mark Default instance as const
2019-09-21 05:44:00 -07:00
Phillip Stephens 110f07256d
Merge pull request #77 from lioncash/state
CPlayerState: Make use of std::array where applicable
2019-09-21 05:43:49 -07:00
Lioncash 3f06dd0a64 CAuiEnergyBarT01: Prevent truncation within DownloadBarCoordFunc
Without float literals, the calculation is performed in double precision
and then truncated down to float implicitly.
2019-09-19 22:31:46 -04:00
Lioncash 04cc300019 CGuiWidgetDrawParms: Mark Default instance as const
This isn't ever modified, so it can be made const to prevent
unintentional modification (and allow it to be placed within the RO
segment).
2019-09-19 21:46:11 -04:00
Lioncash f49c8e9d6c CPlayerState: Use std::array where applicable
Prevents implicit array->pointer decay and makes for a more convenient
data type.
2019-09-19 15:42:50 -04:00
Lioncash f4fd182741 CPlayerState: Move arrays into an anonymous namespace where applicable
Keeps local arrays together and makes it impossible to accidentally
violate the ODR.
2019-09-19 15:36:39 -04:00
Lioncash bc285913c8 CPlayerState: Organize includes 2019-09-19 15:27:20 -04:00
Lioncash 019ee29a0c CPlayer: Make file-scope CMaterialFilter instances constexpr
Now that the interface is constexpr, we can mark these as constexpr.
2019-09-19 15:18:44 -04:00
Phillip Stephens 9c2fd54546
Merge pull request #75 from lioncash/matlist
CMaterialFilter/CMaterialList: Make interface constexpr
2019-09-19 01:21:56 -07:00
Lioncash 2d8111531f CMaterialFilter: Make interface constexpr
A few instances of CMaterialFilter are constructed at file-scope using
the Make* functions and the constructor. Given these aren't constexpr,
this means these are technically runtime function calls. We can make
these constexpr to allow the initialization to be done at compile-time,
slightly improving startup time.
2019-09-18 13:00:04 -04:00
Lioncash 0e39c64bfc CMaterialList: Make interface constexpr 2019-09-18 12:45:11 -04:00
Lioncash 1f13fc05a0 CMaterialFilter/CMaterialList: Amend inclusions 2019-09-18 12:38:14 -04:00
Lioncash 6ec903f9ac CPlayer: Use std::array where applicable
Makes the arrays strongly-typed and impervious to implicit
array->pointer decay. We can also eliminate a few hardcoded magic
values.
2019-09-18 12:28:44 -04:00
Lioncash 70fb763180 CPlayer: Enclose translation-unit-local data within an anonymous namespace
Keeps all local data within one spot and prevents any potential ODR
violations related to them from occurring.
2019-09-18 12:27:15 -04:00
Lioncash 33f10e2552 CPlayer: Organize includes 2019-09-18 11:50:26 -04:00
Lioncash 45cdc38ac0 CPlayer: Use size_t with SfxIdFromMaterial
Allows passing in sizes without potential truncation from size_t,
allowing nicer use of std::size() to dehardcode some magic values.
2019-09-17 14:52:42 -04:00
Lioncash 96f035f24b CMorphBall: Use std::array where applicable
Makes the arrays strongly-typed and impervious to implicit
array->pointer decay.

This also uncovered an out of bounds memory read within UpdateEffects
cause by said array->pointer decay.
2019-09-16 21:11:30 -04:00
Lioncash e4b22ea9d8 CMorphBall: Place internally linked data within an anonymous namespace
Keeps all internal data within one place and also prevents any potential
ODR violations from occurring in relation to any of these.
2019-09-16 14:53:52 -04:00
Lioncash 8c59ace5fe CMorphBall: Clean up includes 2019-09-16 14:43:33 -04:00
Phillip Stephens 823df9643a
Merge pull request #71 from lioncash/enum
CSortedLists: Minor changes
2019-09-15 22:06:06 -07:00
Lioncash a5ab077dc3 CSortedLists: Use std::array where applicable
Prevents implicit array to pointer decay and allows us to simplify a bit
of the code.
2019-09-15 19:27:19 -04:00
Lioncash f5d486f0ca CSortedLists: Turn ESortedList into an enum class
Prevents namespace pollution and makes the type more strongly-enforced
with regards to implicit conversions
2019-09-15 18:52:02 -04:00
Lioncash 0281029015 CEntityInfo: std::move vector in constructor
Allows calling code to potentially avoid copies altogether by moving
into the constructor.
2019-09-15 16:22:35 -04:00
Phillip Stephens cc236dcaba
Merge pull request #69 from lioncash/frontend
CFrontEndUI: Use std::array where applicable
2019-09-14 19:24:12 -07:00
Phillip Stephens 0120a43e0e
Merge pull request #68 from lioncash/insensitive
CStringExtras: Prevent potential out of bounds reads with CompareCaseInsensitive
2019-09-14 19:23:59 -07:00
Lioncash 991d048694 CStringExtras: Prevent undefined behavior within IndexOfSubstring
Unlikely to occur, but does completely prevent the case of undefined
behavior if a non-ascii character ends up within the given string.
2019-09-14 16:43:06 -04:00
Lioncash 0d2b2f45a8 CStringExtras: Prevent potential out of bounds reads with CompareCaseInsensitive
The strcasecmp and _stricmp functions expect the passed in strings to
be null-terminated, however we we're also exposing a std::string_view
overload for that function. std::string_view instances aren't required
to be null-terminated, so this makes the interface a little unsafe.

We can use std::lexicographical_compare() to provide the same behavior
and also properly handle the case of non-null-terminated strings.
2019-09-14 16:43:04 -04:00
Lioncash 86218421f5 CFrontEndUI: Use std::array where applicable
Makes the array types strongly-typed and also allows us to eliminate a
few magic values within the code.
2019-09-14 16:26:29 -04:00
Lioncash b6ea391755 CFrontEndUI: Enclose file-local data within an anonymous namespace
Gets rid of the need to write static, and also makes it impossible to
violate the ODR for any declared types within the namespace (e.g.
FEMovie).
2019-09-14 15:45:17 -04:00
Lioncash 2a10e547d2 CFrontEndUI: Sort includes
Tidies up the includes for the translation unit and alphabetizes them
for easier reading.
2019-09-14 15:42:12 -04:00
Phillip Stephens 9b816d471b
Compile fixes 2019-09-14 10:08:09 -07:00
Phillip Stephens 613f690c42
Merge pull request #66 from lioncash/lockfire
CCompoundTargetReticle: Fix typo in lock fire string
2019-09-13 00:11:37 -07:00
Lioncash 0aa749ce0c CCompoundTargetReticle: Fix typo in lock fire string
In the actual game executable, the string is stored with a lower-case 'i', not an upper-case one.
2019-09-12 06:40:52 -04:00
Lioncash 20696fd500 CCompoundTargetReticle: Declare file-scope strings as arrays
Reduces the overall size of the resulting binary, as only the string
data will be stored rather than the string and a pointer pointing to
said string data.
2019-09-12 06:38:05 -04:00
Lioncash 267fd2962a CCompoundTargetReticle: Move private strings into the cpp file
This is an internal detail, so we don't need to expose this in the
header,
2019-09-12 05:45:53 -04:00
Lioncash f9079f0215 Runtime: Make use of std::make_unique where applicable
Makes use of the C++14 make_unique allocation function to allocate class
instances where applicable instead of a reset with a new operator within
it.

This doesn't touch cases where buffers are allocated, given make_unique
would zero-initialize them.
2019-09-12 04:09:48 -04:00
Lioncash 9983366a53 RumbleFxTable: Use std::array for the lookup table
Strongly enforces the type of the array and also allows size querying,
etc, directly from the type.
2019-09-10 19:13:34 -04:00
Lioncash d7493d5920 CRumbleVoice: Make SAdsrDelta interface constexpr
Makes the API consistent between SAdsrData and SAdsrDelta.
2019-09-10 19:13:34 -04:00
Lioncash 6ca5143b15 CRumbleVoice: Make SAdsrData constructors constexpr
Technically all file-scope instances have runtime-static constructors
otherwise. This allows the compiler to completely elide them from a
language point of view.
2019-09-10 19:02:22 -04:00
Phillip Stephens 60409d2f6a
Merge pull request #63 from lioncash/char
CActorModelParticles: Make DGRP array constexpr
2019-09-10 04:03:06 -07:00
Lioncash 5baf3206f4 CActorModelParticles: Make DGRP array constexpr
Technically this array wasn't readonly and contained a sequence of
modifiable elements. We can make this constexpr so that the compiler can
definitively place it into the read-only segment.
2019-09-09 20:44:23 -04:00
Phillip Stephens e2ab93dfac
Update submodules 2019-09-09 04:21:01 -07:00
Phillip Stephens f07fc458d2
Merge pull request #62 from lioncash/crc
CCRC32: Move table declaration into the cpp file
2019-09-08 17:49:44 -07:00
Lioncash f430a00314 CCRC32: Move table declaration into the cpp file
This can be moved entirely into the cpp file, making it an
implementation detail.
2019-09-08 18:18:29 -04:00
Lioncash c9271809a7 CAiFuncMap: Remove unused static std::vector
This isn't used, so we can remove it and get rid of a static
constructor.
2019-09-08 18:08:10 -04:00