문서 추가: 레거시 엔진 아키텍처에 대한 상세 설명 및 관련 정보 추가
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# Legacy General Pools
|
||||
|
||||
This document summarizes the general pool system used for character selection
|
||||
and event-driven recruitment. References include `legacy/hwe/sammo/AbsGeneralPool.php`,
|
||||
`legacy/hwe/sammo/AbsFromUserPool.php`, and `legacy/hwe/sammo/GeneralPool/*`.
|
||||
|
||||
## Core Abstractions
|
||||
|
||||
- `AbsGeneralPool`
|
||||
- Wraps a `Scenario\GeneralBuilder` and a raw `info` payload.
|
||||
- Provides `getGeneralBuilder()`, `getInfo()`, and `occupyGeneralName()`.
|
||||
- Abstract method: `pickGeneralFromPool(...)`.
|
||||
|
||||
- `AbsFromUserPool`
|
||||
- Implements reservation logic backed by the `select_pool` table.
|
||||
- Reserves candidates for a user (`owner`) until `reserved_until`.
|
||||
- On selection, clears reservation and binds `general_id`.
|
||||
|
||||
## Pool Implementations
|
||||
|
||||
- `GeneralPool/RandomNameGeneral`
|
||||
- Generates random names using `GameConst::$randGen*` lists.
|
||||
- Checks duplicate counts and appends suffixes if needed.
|
||||
- Inserts reservation rows into `select_pool` for user selection.
|
||||
|
||||
- `GeneralPool/SPoolUnderU30`
|
||||
- Loads a curated pool from `GeneralPool/Pool/UnderS30.json`.
|
||||
- Inserts rows into `select_pool` with pre-defined stats and specials.
|
||||
|
||||
## Data Model
|
||||
|
||||
`select_pool` table fields (observed usage):
|
||||
|
||||
- `unique_name` (pool key)
|
||||
- `info` (JSON: stats, portrait, specials, dex, etc.)
|
||||
- `owner` (reservation user id)
|
||||
- `reserved_until` (reservation expiry)
|
||||
- `general_id` (assigned after creation)
|
||||
|
||||
## RNG Notes
|
||||
|
||||
Pool selection uses injected `RandUtil` to choose candidates and generate
|
||||
random names; deterministic seeding depends on caller context.
|
||||
Reference in New Issue
Block a user