* EntityManager: ranges and cleanup
Use LWOOBJID for ghosting entities
use ranges::views::values for associative container iteration
remove dead code
comment magic numbers
little bit of optimization (not enough to be game changing or take the time to measure, they are free speedups anyways, we take those)
use cstdint types
* use size_t
* use lwoobjid for ghost candidate
* Moved unrelated changes out of the TryParse PR branch
* const correctness and cstdint type usage
* removing a few "== nullptr"
* amf constexpr, const-correctness, and attrib tagging
* update to account for feedback
* Fixing accidentally included header and hopefully fixing the MacOS issue too
* try reordering the amf3 specializations to fix the MacOS issue again
* Amf3 template class member func instantiation fix
* try including only on macos
* Using if constexpr rather than specialization
* Trying a different solution for the instantiation problem
* Remove #include "dPlatforms.h"
* Changed how the TryParse function works (and also did some general cleanup along the way)
* Update noexcept attributes (verified these are correct)
* Add fp overload for MacOS functionality
* resolving some feedback
* Split out unrelated changes to CleanupRoundup branch
* Update in response to feedback
* the consequences of emo's member variable renaming request
* Revert "the consequences of emo's member variable renaming request"
This reverts commit bf318caeda.
* Fully revert renaming attempt
* Revert "the consequences of emo's member variable renaming request"
This reverts commit bf318caeda.
Fully revert renaming attempt
* Created ClientVersion.h and moved the client version defaults to it
* Fix partial parsing and MacOS floating point errors
* attempting fix to MacOS compiler error
* syntax pass (should be the last commit unless the CI fails)
* ah, wait, forgot to uncomment the preprocessor statements for MacOS. THIS should be the last commit pending CI
* Okay, one last thing I noticed: We were including C headers here. Now they're C++ headers. Pinky swear this is it!
* typo and I am OCD. please let this be the last
* hash is usally but not always noexcept, so the specifier should go
* Address MOST of the feedback
* address the claim codes issue
* Move CDClientManager to be a namespace
Tested that worlds still load data as expected. Had no use being a singleton anyways.
* Move cdclient data storage to tu local containers
Allows some data from these containers to be saved on object by reference instead of always needing to copy.
iteration 2
- move all unnamed namespace containers to a singular spot
- use macro for template specialization and variable declaration
- use templates to allow for as little copy paste of types and functions as possible
* remember to use typename!
compiler believes T::StorageType is accessing a member, not a type.
* Update CDClientManager.cpp
* move to cpp?
* SystemAddress and destructor
* move respawn logic to character comp
Tested that respawn pos and rot can be set as per previously by crossing a respawn point and smashing to see if I would respawn at the new place.
* Move loot cheat checking
* Remove GetParentUser overload
Tested completing missions
control behaviors
collecting life crate
completing a bunch of missions using macros
loading into worlds
brick-by-brick
placing models
digging the x spot in gnarled forest
can still ban and mute players
cheat detection is still doing its thing
flags are still set (checked with flag 45)
claim codes still work (created new char, checked the lego club mail was there)
* Move player constructor logic
Its now at the bottom of Entity constructor. Time to remove Player
* Remove Player class
Removes the Player class. Tested that I can still login and see another player in Venture Explorer and logging out a few times still works as well as smashing enemies
* store ptr
* Update SlashCommandHandler.cpp
* Update a few components to use smart pointers for memory management
* 'final' keyword added to classes
* removed duplicate 'const'
* removed unused code
* Updated render component to store effects directly in a vector
* Use move instead of copy
* make pointers const
* attribute tags
* nitpicking
* delete default effect constructor
* Added a vector size check to the RemoveEffect() function
* use empty() instead of size()
* allow usage of NiPoint3 and NiQuaternion in constexpr context
* removed .cpp files entirely
* moving circular dependency circumvention stuff to an .inl file
* real world usage!!!!!
* reverting weird branch cross-pollination
* removing more weird branch cross-pollination
* remove comment
* added inverse header guard to inl file
* Update NiPoint3.inl
* trying different constructor syntax
* reorganize into .inl files for readability
* uncomment include
* moved non-constexpr definitions to cpp file
* moved static definitions back to inl files
* testing fix
* moved constants into seperate namespace
* Undo change in build-and-test.yml
* nodiscard
* fix faction change issue
fixes an issue where enemies who would have their faction changed would not change aggro targets.
Tested that stromling mechs and ronin/horsemen in forbidden valley still aggro on spawn as expected.
* use erase remove if
Removes the singleton inheritance from dpWorld.
Tested that crux prime, nimbus station, avant gardens and nexus tower still use navmeshes and physics and that physics volumes are still collided with.
* Update PlayerContainer.cpp
fix: turn warnings into errors
for the few warnings we get, at least make sure we listen to them now on unix platforms. Windows has too many right now to enable /WX
resolve warning
actually fix it
Update CMakeLists.txt
* detour pls
* Update CMakeLists.txt
* I HAVE 20 DOLLARS AND I NEED A WII GAME FOR MY KID
* I HAVE 0 DOLLARS NOW
* don't look don't look
* Revert "don't look don't look"
This reverts commit 5603eb5980.
* Revert "Revert "don't look don't look""
This reverts commit a334832a4d.
* could it be
* we found one (but its already reported)
not resolved yet though.
* Revert "don't look don't look"
This reverts commit 5603eb5980.
* ignore warning for file
* another one
* Update .gitmodules
* comments
adds an announcement sent to the system address which had the mismatched FDB to let the developer know they have a mis-matched one.
Tested that if a civilian tries to login without a gm level > developer, they are kicked.
Tested that if a GM is found to have a mismatched FDB, they are let in but have an announcement sent to them.
Use auth packets for msg
added comment as to why
ff
remove default
add comment
Remove broadcast
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
- Remove static storage container (static containers can be destroyed before exit/terminate handler executes)
* remove player cast
* Remove extra includes
* Add a player manager
Used for the static Player functions. Further removes stuff from the Player class/file.
* chore: Move ghosting functionality to component
Tested that ghosting still works and players are still firing off the OnPlayerLeave and relevant handlers.
* move to unordered_set
* remove pending timers
they serve no purpose anymore since iterator invalidation is a non-issue. I added this initially to make it so if you added a timer this frame, there would be at least 1 frame before you would start it, but this in practice doesnt serve a purpose
* timers still work
* chore: default size to 33 on LU(W)Strings since that's the most common lenght
Was doing this on other places, but not the main one
* chore: remove all raw packet reading from chat packet handler
and general chat packet cleanup
* fix team invite/promote/kick
* Address feedback
* fix friends check
* update comments
* Address feedback
Add GM level handeling
* Address feedback
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
- Remove static storage container (static containers can be destroyed before exit/terminate handler executes)
* remove player cast
* Remove extra includes
* Add a player manager
Used for the static Player functions. Further removes stuff from the Player class/file.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
* Moving and organizing Player code
- Move code to CharacterComponent
- Remove extraneous interfaces
- Simplify some code greatly
- Change some types to return and take in const ref (only structs larger than 8 bytes benefit from this change.)
- Update code to use CharacterComponent for sending to zone instead of Player*.
- Remove static storage container (static containers can be destroyed before exit/terminate handler executes)
* remove player cast
* Remove extra includes
* Assorted pet improvements
* remove unecessary include
* updates to address some feedback
* fixed database code for testing
* Removed reference member (for now)
* Removed cmake flag
* chore: continue work on removing raw packet reading
tested that logging in, deleted a char, renaming a char, and transfeering to a zone all work still
* Address Feedback
* Add addstrip handling
add SendBehaviorBlocksToClient serialization
add id generation and auto updating
add behaviorlisttoclient serialization
* fix crash
happened if you added state 0 and 6 and nothing in between
* Section off code
Use proper encapsulation to hide code away and only let specific objects do certain jobs.
* Organize serialization
Section off into operational chunks
Write data at the level most appropriate
* Remove and simplify BlockDefinitions
Remove pointer usage for BlockDefinitions and move to optional.
* ControlBehaviors: Add addaction handling
* re-organization
remove const from return value
change to int from uint
use generic methods to reduce code clutter
* add strip ui position handling
* add split strip functionality
* fix issues
fix an issue where if you were on an empty state, the server would allow you to remain on that state
fix an issue where the ui would not open on the previously opened state
fix an issue where deleting strips in order caused the wrong strips to be deleted
* update how you remove behaviors from models
* Add remove actions and rename
* migrate actions
* update action and rearrange strip
* merge strips
* add and move to inventory
* Remove dead code
* simplify code
* nits and move finish MoveToInventory
constify serialize
further include path fixes
use const, comments
fix amf message
Update ModelComponent.cpp
replace operator subscript with at
* Update ModelComponent.cpp
* Update MigrateActionsMessage.h
* const
* Move to separate translation units
* include amf3
its precompiled, but just in case
* chore: organize build flags
* Remove ambiguous include path
Don't be default incluyde bcrypt so you need to specify the folder. Allows pre-processor to find the correct file.
* Revert settings
* working
f
* chore: make scripted activity derived from activity
this paves the way for other component being properly derived from the activity component
* use a dirty flag instead
* address feedback
fixes an issue where NPCs would offer the incorrect missions which caused odd blocks. Consolidated logic for mission offering and removed redundant code.
Players do not need access to leave Return to the Venture Explorer (rttve) via a slash command. They can leave through the usual zone method.
Tested that you cannot leavezone in rttve
* Remove std::couts littered throughout the base
* working
End of optimizations for now
going faster
* Remove extraneous compare function
std::less<LWOSCENEID> already does this in a map.
* gaming
* Update Zone.cpp
* dlu is moving to bitbucket again
* Update Level.cpp
---------
Co-authored-by: Jettford <mrjettbradford@gmail.com>
* add enum stringification functionality from third party source
* squashed commit
* Macros: Add test and improve speed
Space macros out
utilize cache locality
ensure no lost functionality
* moved stringify code to dCommon
* Rename #defines in stringify enum tests
* Revert "moved stringify code to dCommon"
This reverts commit 33fa5f8d2f.
* improve macro functionality
change function handle
formatting and function definition tweaks
* typo fixes
* moved code to dCommon/dEnums and tests to dCommonTests/dEnumsTests
* initial magic_enums alternate implementation of enum stringification
* deleted unused tests
* reverted compile flag oopsy and fixed output types
* fixed testing suite
* test formatting improvement
* formatting again :(
* added gm string to "aborting gm!" message
* Push my suggestion for CI tests.
* updated magic enum test
* fix test variable type
* added gm test
* making sure magic_enum is on a release branch
* tidying up console outputs
* re-implemented enum array access for performance
* now it is bugged :(
* nvm, working
* helping out the snowflake compilers
* changed return type too
* optimization too
* formatting too I guess because why not
* being even more painfully specific
* Update WorldServer.cpp to match emo's feedback
* Update MagicEnumTests.cpp to use srand(time(NULL))
* Update eGameMessageType.h - formatting
* Trying to fix the crash but can't actually compile the code to check on my own rn
* Update WorldServer.cpp - third try at this
* Update MagicEnumTests.cpp - use better macro definitions
* Update MagicEnumTests.cpp - c string comparison fix
* addressing all but the cmake feedback
* fixed cmake to the best of my very limited ability
* added tests to verify magic enum arrays are pre-sorted
* updated
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
Co-authored-by: Jettford <mrjettbradford@gmail.com>
add final missing scripts for nt
also fix the turnin for the breadcrumb missions not showing the completion window.
Fix another missing script
Add another script
fix include guards
Fix dirt clouds not appearing on mission accept
Tested that new achievements progress exactly once
Tested that already accepted achievements progress as expeected
Tested that tiered achievements only count the progress to the current tier and not the next one as well
Update MissionComponent.cpp
* Fix crashes
fix crash with chat filter
fix ldf_config being empty in database on windows debug
* WorldServer: Fix further crashes on windows
address multi threaded signal handling on worldservers
Remove iterator invalidation code in zone manager
* fix: Buff FX not playing
Fixes an issue where buff effects would not play at all.
Tested that frakjaw and maelstrom dagger now play their respective effects when you are effected by them
fix: buffs general improvements
add new arguments
* Remove duplicated code
* fix times and remove buff
* Fix UB in remote input info
Yes i should have made this first
no this wouldnt have happened with rust
* fix end of race leaderboard
Tested that with two players, both players see the others time at the end of the race and all other metrics are shown correctly.
Technically the outBitStream->Write(static_cast<uint16_t>(m_RacingPlayers.size())); should only be written once but how we do it now it is written as we load players in and this is the cheap option compared to the number of bits we are supposed to waste at the end of races
* create new character fixes
Don't use persistentIds, guarantee ids are unique by using do while to generate the id
* Update queries to actually use prep stmt
* Update UserManager.cpp
* Update UserManager.cpp
* feat: reward codes
this is for giving rewards across characters as the did in live.
Tested that the default config works
Tested that all claim codes work
Tested that saving and loading claim codes work
Tested that mail sends correctly
* newlines
* include array
* delete cascade
* newline
* address feedback
* Database: Convert to proper namespace
* Database: Use base class and getter
* Database: Move files around
* Database: Add property Management query
Database: Move over user queries
Tested at gm 0 that pre-approved names are pre-approved, unapproved need moderator approval
deleting characters deletes the selcted one
refreshing the character page shows the last character you logged in as
tested all my characters show up when i login
tested that you can delete all 4 characters and the correct character is selected each time
tested renaming, approving names as gm0
Database: Add ugc model getter
Hey it works, look I got around the mariadb issue.
Database: Add queries
Database: consolidate name query
Database: Add friends list query
Update name of approved names query
Documentation
Database: Add name check
Database: Add BFF Query
Database: Move BFF Setter
Database: Move new friend query
Database: Add remove friend queries
Database: Add activity log
Database: Add ugc & prop content removal
Database: Add model update
Database: Add migration queries
Database: Add character and xml queries
Database: Add user queries
Untested, but compiling code
Need to test that new character names are properly assigned in the following scenarios
gm 0 and pre-approved name
gm 0 and unapproved name
gm 9 and pre-approved name
gm 9 and unapproved name
Database: constify function arguments
Database: Add pet queries
* Database: Move property model queries
Untested. Need to test
placing a new model
moving existing one
removing ugc model
placing ugc model
moving ugc model(?)
changing privacy option variously
change description and name
approve property
can properly travel to property
* Property: Move stale reference deletion
* Database: Move performance update query
* Database: Add bug report query
* Database: Add cheat detection query
* Database: Add mail send query
* Untested code
need to test mailing from slash command, from all users of SendMail, getting bbb of a property and sending messages to bffs
* Update CDComponentsRegistryTable.h
Database: Rename and add further comments
Datavbase: Add comments
Add some comments
Build: Fix PCH directories
Database: Fix time
thanks apple
Database: Fix compiler warnings
Overload destructor
Define specialty for time_t
Use string instead of string_view for temp empty string
Update CDTable.h
Property: Update queries to use mapId
Database: Reorganize
Reorganize into CDClient folder and GameDatabase folder for clearer meanings and file structure
Folders: Rename to GameDatabase
MySQL: Remove MySQL Specifier from table
Database: Move Tables to Interfaces
Database: Reorder functions in header
Database: Simplify property queries
Database: Remove unused queries
Remove extra query definitions as well
Database: Consolidate User getters
Database: Comment logs
Update MySQLDatabase.cpp
Database: Use generic code
Playkey: Fix bad optional access
Database: Move stuff around
WorldServer: Update queries
Ugc reduced by many scopes
use new queries
very fast
tested that ugc still loads
Database: Add auth queries
I tested that only the correct password can sign into an account.
Tested that disabled playkeys do not allow the user to play the game
Database: Add donation query
Database: add objectId queries
Database: Add master queries
Database: Fix mis-named function
Database: Add slash command queries
Mail: Fix itemId type
CharFilter: Use new query
ObjectID: Remove duplicate code
SlashCommand: Update query with function
Database: Add mail queries
Ugc: Fix issues with saving models
Resolve large scope blocks as well
* Database: Add debug try catch rethrow macro
* General fixes
* fix play key not working
* Further fixes
---------
Co-authored-by: Aaron Kimbre <aronwk.aaron@gmail.com>
* Ugc: Make it so we dont bin the model
Users must dismantle the model as opposed to accidentally picking it up in model mode
* Fix editing model in brick mode
* PropEntrance: Remove debug log
* feat: use more zoneTable options
Allow setting framrate for the zone
Allow setting if pets are allowed in the zone
Allow setting if mounts are allowed in a zone
Allow disabling saving location to a zone
* address feedback
* Added cooldown handling
* Made most of the logs hidden outside of debug mode
* removed weird submodule
* kill this phantom submodule
* updated to reflect reviewed feedback
* Added IsCooldownImmune() method to DestroyableComponent
* friggin typo
* Implemented non-pending changes and added cooldown immunity functions to DestroyableComponentTests
* add trailing linebreak
* another typo :(
* flipped cooldown test order (not leaving immune)
* Clean up comment and add DestroyableComponent test
Tested that, if a user has followed the guide and turned UGCUSE3DSERVICES from 1 to 0, the do not get booted to login for having a rocket with a subkey in their inventory.
Add bouncer logic
Ugc: Use random Id
* Visiblity and effect records
* Recorder will catch effects from behaviors
* Documentation for setting up a scene to play automatically.
* Documentation for server-side preconditions.
* Components: Make ComponentType inline
Prevents the next commits ODR violation
* Components: Add new components
* Entity: Add headers
inline script component ComponentType
* Components: Flip constructor argument order
Entity comes first always
* Entity: Add generic AddComponent
Allows for much easier adding of components and is error proof by not allowing the user to add more than 1 of a specific component type to an Entity.
* Entity: Migrate all component constructors
Move all to the new variadic templates AddComponent function to reduce clutter and ways the component map is modified.
The new function makes no assumptions. Component is assumed to not exist and is checked for with operator[]. This will construct a null component which will then be newed if the component didnt exist, or it will just get the current component if it does already exist. No new component will be allocated or constructed if the component already exists and the already existing pointer is returned instead.
* Entity: Add placement new
For the case where the component may already exist, use a placement new to construct the component again, it would be constructed again, but would not need to go through the allocator.
* Entity: Add comments on likely new code
* Tests: Fix tests
* Update Entity.cpp
* Update SGCannon.cpp
* Entity: call destructor when re-constructing
* Update Entity.cpp
Update Entity.cpp
---------
Co-authored-by: Aaron Kimbrell <aronwk.aaron@gmail.com>
* Logger: Rename logger to Logger from dLogger
* Logger: Add compile time filename
Fix include issues
Add writers
Add macros
Add macro to force compilation
* Logger: Replace calls with macros
Allows for filename and line number to be logged
* Logger: Add comments
and remove extra define
Logger: Replace with unique_ptr
also flush console at exit. regular file writer should be flushed on file close.
Logger: Remove constexpr on variable
* Logger: Simplify code
* Update Logger.cpp
Adds a missing edge case on the client where you may have the is_smashable flag set, but dont actually have a destroyable component. In this case you should create only a destroyable component and add it to the component and serialize it last after all other data. We also needed to add the set_faction var reading and setting as this is how Oliver Sudden actually gets their faction since they have no actual information in the database, it is all stored in ldf keys.
Tested that Oliver Sudden no longer logs Unable to unserialize logs when serialized or constructed.
Fixes#1222
addresses an issue where the death behavior of a destructible component was not being respected and enemies with destroyable components that had special death animations were not able to play the animation on death. This pr adds in the hardcoded constant the client uses for the same metric of 12 seconds.
Tested that claiming Nimbus Rock and completing the property guards mission allows him to vacuum away and then network the destruction packet 12 seconds later.
Fix gravity not being adjusted when colliding with a phantom physics object
Tested that while on moonbase, the players gravity is no longer reset to 1 when they change their cheat info.
* Move away from constructor queries
Fix up other large tables to have proper backup lookups
Revert "idk im just dumb ig"
This reverts commit 5d5be5df53b8959b42b291613d7db749a65a3585.
idk im just dumb ig
* Fix slow components registry lookup
* add define for cdclient cache all
* Huge loot namespace rework
- Remove all excess memory usage
- do not cache components registry
- cache loot matrices on startup of the destroyable component
- convert loot singleton class to a namespace
- rework loot cdclient tables to operate closer to how someone would actually use them (basically doing the previous LootGenerator::LootGenerator caching but in those tables)
- Memory usage reduced by 10%+ across the board
* cache rebuild matrix
* Database: move reading to own function
Also change name of cache to PascalCase
* Database: Move common function rading
* Make serialize actually virtual
yep
* Abstract to PhysicsComponent
Move shared functionality of all physics related classes to a base class.
Tested that there were no failed to unserialize errors when in main gameplay in Gnarled Forest or in a race.
Tested that 2 players were able to see each other in the above scenarios just fine as well.
* Update PhantomPhysicsComponent.cpp
* Add SimplePhysicsTest
* Add construction test
* Update SimplePhysicsComponentTests.cpp
* remove flags and fix override
* Update VendorComponent.h
* Re-write AOE behavior for new filter targets
Update Tacarc to use new filter targets
Added dev commands for skill and attack debugging
* Get all entities by detroyable
rather than controllable physics
Since destroyables are what can be hit
* Re-work filter targets to be 100% live accurate
reduce memory usage by only using one vector and removing invalid entries
get entities in the proximity rather than all entities with des comps in the instance, as was done in live
* remove debuging longs and remove oopsie
* address feedback
* make log more useful
* make filter more flat
* Add some more checks to filter targets
add pvp checks to isenemy
* fix typing
* Add filter target to TacArc and update filter target
* fix double declaration
* Some debugging logs
* Update TacArc reading
* make log clearer
* logs
* Update TacArcBehavior.cpp
* banana
* fix max targets
* remove extreanous parenthesesuuesdsds
* make behavior slot use a real type
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
This reverts commit d7e16ab589697fd1a0a270a02c622b8fa752638f.
Fixes an issue where the incorrect mission is marked as being offerable and this overwrote the original mission offered by wisp lee and forced him to offer a different, unacceptable mission.
Tested that completing the mission twice from a new daily state and a repeatable state both completed the chain correctly. Unsure what the original bug was, but it does not appear to be present.
On top of that, there is no pre-requisite for mission 1883 anywhere in the cdclient, so at best, this check was always false, but the correct behavior is exact equivalence for the mission state.
* Fixed Scrapped Racecar Stuck Issue
Changed RacingControlComponent to boot players back to the hub world when trying to race after dismantling a vehicle.
* Modified OnPlayerLoaded to fix Vehicle Inventory issue
* Change 3
---------
Co-authored-by: David Markowitz <EmosewaMC@gmail.com>
* Fix deleting last character
Fix an issue where deleting your last character caused the character to still show up on the character selection screen.
Tested that deleting my final character results in an empty character selection scene.
* Update UserManager.cpp
* chore: cleanup LU(W)string writing
and add methods for reading
remove redunent "packet" from packet reading helpers
move write header to bitstreamutils since it's not packet related
add tests for reading/writing LU(W)Strings
* remove un-needed function defintions in header
* make reading and writing more efficient
* p
p
* quotes
* remove unneeded default
---------
Co-authored-by: David Markowitz <39972741+EmosewaMC@users.noreply.github.com>