diff --git a/.codacy.yml b/.codacy.yml index a184e7151f..094f6deb22 100644 --- a/.codacy.yml +++ b/.codacy.yml @@ -14,7 +14,7 @@ # IS NUL-terminated, and no core calls that overload at all -- every one of them uses # the two-iterator form. # -# src/modules/{Bots,AhWorker} are deliberately absent: they are in-tree, they +# src/modules/{Bots,AuctionHouseBot,AhService} are deliberately absent: they are in-tree, they # are ours, and they are analysed. exclude_paths: - "dep/**" diff --git a/.github/workflows/core_windows_build.yml b/.github/workflows/core_windows_build.yml index 222fc45f66..65657c74b3 100644 --- a/.github/workflows/core_windows_build.yml +++ b/.github/workflows/core_windows_build.yml @@ -14,8 +14,8 @@ concurrency: cancel-in-progress: true env: - OPENSSL_VERSION: 3.6.4 - OPENSSL_SHA512: 4FF8244287A027B1A138F4E1B56F425DD0988A6247830F1D7A47C179DCDB29A6A485490630647A7638569EC09D5B75FF4DC2B10ACFA41AFC4C68D7C21B44EC7F + OPENSSL_VERSION: 3.6.5 + OPENSSL_SHA512: A7526344337A14EA270A1A7BDE590C4950CF08DCE631E9D485CCCDFCB14F737F42AFC73403656226B605A013D8E191BF831CEE34EEE6CDB810FFA4E0AEC53764 jobs: build: diff --git a/CLAUDE.md b/CLAUDE.md index 3e796c801e..4ae83a2c0a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,7 +12,8 @@ this repo. Humans: also read [`doc/CodingStandard.md`](doc/CodingStandard.md). `Rel##_##_###_*.sql` migrations that chain via `db_version`. - Clone/update **recursively**: `dep`, `src/realmd`, `src/modules/{SD3,Eluna}`, `src/tools/Extractor_projects` and `win` are submodules. Never shallow-update a submodule to a non-tip pinned SHA. -- Less-obvious locations: out-of-process services in `src/ipc/` + `src/ah-service/`; scripting in +- Less-obvious locations: auction modules in `src/modules/AuctionHouseBot/` and `src/modules/AhService/` + (registered through `src/game/Object/AuctionHouseModule.h`); scripting in `src/modules/` (Eluna = Lua, SD3 = C++, Bots = playerbots). ## Build & test @@ -34,7 +35,7 @@ make -j"$(nproc)" && make install -j"$(nproc)" Windows: use the EasyBuild helper in `win/`. **A PR MUST keep CI green:** the Linux build compiles with **both** GCC and Clang, Windows builds on AppVeyor, and Codacy/CodeFactor gate quality. If you touch -`src/ipc/` or `src/ah-service/`, keep `ah-service --selftest` passing (it must print `intent codec selftest OK` +`src/modules/AhService/`, keep `ah-service --selftest` passing (it must print `intent codec selftest OK` and `ipc selftest OK`). ## Code style @@ -56,9 +57,11 @@ Source of truth: [`doc/CodingStandard.md`](doc/CodingStandard.md). Non-default r ## Architecture note -The **in-process AuctionHouseBot is the default**; the out-of-process AH service is additive and default-off -(`AH.Service.Enabled`). `mangosd` is the **sole authority** over game state — worker/service "intents" are -re-validated server-side before they are applied. +Auction house extras are **modules**: the core knows only `AuctionHouseModule` and never names one. Each +module is a CMake option (`BUILD_AHBOT`, default on; `BUILD_AH_SERVICE`, default off), brings its own +`.conf` whose first key is `Enable`, and registers itself from a static object. The playerbots' ike3 AhBot +(`src/modules/Bots/ahbot/`) is not built; `src/modules/Bots/AhBotPrices.cpp` answers its price queries. `mangosd.conf` stays module-agnostic. `mangosd` is the **sole authority** over game state — +worker/service "intents" are re-validated server-side before they are applied. ## Review focus (for `@claude`) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ea7e48c27..4e4360baa6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,8 @@ option(PCH "Enable precompiled headers" ON) option(WITH_IO_URING "Use the io_uring network backend (Linux, needs liburing)" OFF) option(DEBUG "Enable debug build (only on non IDEs)" OFF) option(WITHOUT_GIT "Disable Git revision detection" OFF) -option(BUILD_AH_SERVICE "Build the out-of-process auction-house service" ON) +option(BUILD_AHBOT "Build the auction house bot module" ON) +option(BUILD_AH_SERVICE "Build the out-of-process auction house service module" OFF) option(WITH_TESTS "Build the unit tests" OFF) option(WITH_NET_TESTS "Build the socket tests (slow; never in CI)" OFF) #================================================================================== @@ -99,6 +100,8 @@ message( SCRIPT_LIB_SD3 Compile with support for ScriptDev3 scripts Modules: PLAYERBOTS Enable Player Bots + BUILD_AHBOT Build the auction house bot module + BUILD_AH_SERVICE Build the out-of-process auction house service module To set an option simply type -D