Remove unused `using namespace Extensions` from isleapp.cpp and replace
per-header forward declaration blocks in 7 LEGO1 headers with a single
shared forward declarations header.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move world state synchronization logic (snapshots, events, entity
mutation routing) into a dedicated WorldStateSync class, reducing
NetworkManager from ~790 to ~420 lines.
Revert plant/building manager globals back to private class statics
(matching master) and use friend declarations for extension access.
Move CreateCharacterClone out of LegoCharacterManager into a new
CharacterCloner class in the multiplayer extension.
Add serialization framework using C++ templates and table-driven lookup
to sync plant and building state between players. Includes world snapshot
routing to requesting peer, relay server Docker support, and fixes for
building color sync, ride vehicle visibility, and ARM compilation.
* Use strcasecmp, strncasecmp, strlwr, strupr and itoa from SDL
* Use SDL_GetTicks instead of timeGetTime
* Use MxDSFile::OPEN_READ instead of OF_READ
* Use SDL_IOStream to read bitmaps
* Use SDL_LogXXX instead of OutputDebugString
* Undo mxvideoparam.h change
* Revert "Undo mxvideoparam.h change"
This reverts commit 4a20cf6c46.
* Fix _MxTrace
* Reapply "Undo mxvideoparam.h change"
This reverts commit b3a09dc520.
* fix _MxTrace
* Use __declspec(dllexport) for exporting symbols from dll
Refactored CMake script such that all objects are passed to the lego1 library.
* clang-format
* fix msvc build
* MSVC fixed for real now?
* Forgot about d3drm_guid
* Fix naming issue
* Use Uint64 in LegoCarBuild::Tickle for dTime
* LegoBuildingManager Round 2
* 100% match most of the remaining methods, only
Tickle and FUN_10030630 remain.
* The interesting finding is that the curious
members of the LegoBuildingManager form a short
embedded fixed-length array used to store info
about current animation of buildings.
* I saw that you removed the SetY which I had
added to MxMatrix. Agree that this method
doesn't make sense on MxMatrix, however I've
added it back to Matrix4. I see the pattern of
setting / getting the Y component used in enough
places that I doubt they were just hoping they
remembered the subscript correctly every time.
Let me know if you agree or still don't think it
makes sense to include.
* Formatting
* Order
* Satisfy name checker
* Add beta annotations and adjust style/naming
* Make function STUB
---------
Co-authored-by: Christian Semmler <mail@csemmler.com>
* Start work on building save data
* Add LegoBuildingData struct to LegoBuildingManager, naming mirrors
LegoCharacterData in LegoCharacterManager.
* 100% match of many methods in LegoBuildingManager using the struct.
* Formatting
* Add required includes post merge
* Format again
* Better follow naming conventions
* Format again again
* Also fill in template data
* Fix data
* Change braces
* Match functions, consistent style, add missing annotations, some BETA annotations
---------
Co-authored-by: Christian Semmler <mail@csemmler.com>
* Implement Save, Load, DeleteState
* WIP
* WIP
* Match LegoGameState::Save
* Spacing
* Match LegoGameState::DeleteState()
* More match
* Match
* Move vars
* Other fixes
* Rename
* Fix error
---------
Co-authored-by: Christian Semmler <mail@csemmler.com>
* cmake+ci: run clang-tidy
* Remove DESCRIPTION from LEGO1/LegoOmni.mingw.def
* Add initial .clang-tidy and fixes
* fix file perms
* Comment out DESCRIPTION
* Remove LegoEntity::~LegoEntity and MxPresenter::~MxPresenter from mingw's LEGO1.def
* Looks like clang is allergic to the libs in the directx5 SDK
* Update .clang-tidy
* Fix typo in .clang-tidy
* Attempt to generate an action error
* Revert "Attempt to generate an action error"
This reverts commit 96c4c65fedbc4102837f4bcbbb9ee83a7d14cba3.
* cmake: test with -Wparentheses + optionally with -Werror
* ci: -k0 is a Ninja argument
* Use -Werror only for msys2 builds
* cmake: only emit warnings for specific warnings
* cmake: and don't do -Werror/-WX anymore
* Fix warnings
* Fix mingw warnings
---------
Co-authored-by: Christian Semmler <mail@csemmler.com>
* cmake: use imported targets for 3rd party libs
* Fix casing of skateboard.h include
* cmake: tglrl realtime viewmanager mxgeometry
* cmake: spin off some source in static libraries
* dx5 for everyone
* ci: bump actions/checkout to v4
* move LEGO1/realtime/realtimeview.cpp to lego1 because it exports symbols
* add misc library
* Add omni library
* Return of the .def's
* Remove COMPAT_CONST in MxVideoParam::MxVideoParam
* Run clang-format
* move LEGO1/realtime/realtimeview.cpp to realtime lib
* Add 3dmanager library
* Rename .def files
* Remove incorrect deps to Omni
* Remove DLL expor decls
* Remove unnecessary library dep from ROI
* Remove COMPAT_CONST
* Move 3dmanager lib before Omni
* Remove mxgeometry lib (`geom` is actually `lego/sources/geom`, which we don't have in our decomp yet)
* viewmanager has a dependency on realtime + fix mingw's def
* Remove Smacker::Smacker from lego1 link libraries
---------
Co-authored-by: Christian Semmler <mail@csemmler.com>