mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 10:53:44 +00:00
Mapped from the 1.10.64 client and live captures (docs/BuildWorkflow.md). Model placement (PropertyManagementComponent): - A brick built model placed from the inventory spawned at the world origin with no rotation and without PlaceModelResponse/PreCreate, and was saved to properties_contents with ugc_id 0; it is now placed where the client put it, keeps its UGID and blueprint and is saved with them. - Picking up, putting away and taking apart a brick built model gave it to MODELS_IN_BBB and then deleted it; every way off the property now puts it in MODELS (carried when picked up), as live, with its blueprint config. Taking a premade model apart no longer deletes it either. - Placing and removing a model saves the property at once, so a crash or a disconnect before PropertyEditorEnd does not lose it. - DoneArrangingWithItem only answers when something new is picked (not when leaving), with the subject as build area; SetBuildModeConfirmed's warnVisitors matches live. Brick by brick (BrickByBrick): - BBBLoadItemRequest moves the model to MODELS_IN_BBB keeping its id and fails cleanly when the player has no such model. - MoveInventoryBatch moves bricks between BRICKS and BRICKS_IN_BBB (it was not handled, so the client and server disagreed until a relog). - BBBSaveRequest uses up the opened models, places the new ones through the property, returns the bricks (or uses them with bbb_consume_bricks=1), clears the autosave and sends RequeryPropertyModels. Every save makes new ugc rows (is_optimized 0, so the UGC server processes them). - Quick save: SetBBBAutosave is stored per character (bbb_autosave). - UnUseBBBModel puts a model back on the property where it was when it came from there, otherwise back in MODELS. - Leaving brick mode without a save, a disconnect or a crash: the autosave is rebuilt into models (RebuildBBBAutosaveMsg) or the opened models go back to MODELS. MODELS_IN_BBB is saved with the character now and loads into MODELS, BRICKS_IN_BBB into BRICKS. Fixes #1632 Fixes #159 Fixes #1565 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
1.4 KiB
CMake
45 lines
1.4 KiB
CMake
set(DGAME_DUTILITIES_SOURCES "BrickDatabase.cpp"
|
|
"BrickByBrick.cpp"
|
|
"ChatServerLink.cpp"
|
|
"CheatDetection.cpp"
|
|
"DashboardActions.cpp"
|
|
"EconomyLedger.cpp"
|
|
"DashboardNotify.cpp"
|
|
"GUID.cpp"
|
|
"LiveEvents.cpp"
|
|
"Contraband.cpp"
|
|
"PropertyRent.cpp"
|
|
"PropertyReputation.cpp"
|
|
"Loot.cpp"
|
|
"Mail.cpp"
|
|
"MessageInspector.cpp"
|
|
"ObjectIDManager.cpp"
|
|
"PlayerReports.cpp"
|
|
"Preconditions.cpp"
|
|
"SlashCommandHandler.cpp"
|
|
"VanityUtilities.cpp"
|
|
"WorldMigration.cpp")
|
|
|
|
add_subdirectory(SlashCommands)
|
|
|
|
foreach(file ${DGAME_DUTILITIES_SLASHCOMMANDS})
|
|
set(DGAME_DUTILITIES_SOURCES ${DGAME_DUTILITIES_SOURCES} "SlashCommands/${file}")
|
|
endforeach()
|
|
|
|
add_library(dUtilities OBJECT ${DGAME_DUTILITIES_SOURCES})
|
|
target_precompile_headers(dUtilities REUSE_FROM dGameBase)
|
|
target_include_directories(dUtilities PUBLIC "." "SlashCommands"
|
|
PRIVATE
|
|
"${PROJECT_SOURCE_DIR}/dGame/dComponents"
|
|
"${PROJECT_SOURCE_DIR}/dGame/dInventory" # transitive via PossessableComponent.h
|
|
"${PROJECT_SOURCE_DIR}/dGame/dGameMessages"
|
|
"${PROJECT_SOURCE_DIR}/dGame/dBehaviors" # transitive via InventoryComponent.h
|
|
"${PROJECT_SOURCE_DIR}/dGame/dMission" # transitive via MissionComponent.h
|
|
"${PROJECT_SOURCE_DIR}/dGame/dEntity" # transitive via dZoneManager/Spawner.h
|
|
"${PROJECT_SOURCE_DIR}/dZoneManager" # Mail.cpp
|
|
"${PROJECT_SOURCE_DIR}/dChatFilter" # DashboardActions.cpp (messages sent into chat)
|
|
)
|
|
target_link_libraries(dUtilities
|
|
PUBLIC dDatabase dPhysics
|
|
INTERFACE dZoneManager)
|