문서 추가: 레거시 엔진 아키텍처에 대한 상세 설명 및 관련 정보 추가
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Legacy Diplomacy and Messaging
|
||||
|
||||
This document summarizes the legacy message system and how diplomatic messages
|
||||
trigger nation command flows. References include
|
||||
`legacy/hwe/sammo/Message.php`, `legacy/hwe/sammo/DiplomaticMessage.php`,
|
||||
`legacy/hwe/sammo/MessageTarget.php`, and `legacy/hwe/sammo/Target.php`.
|
||||
|
||||
## Message Types and Mailboxes
|
||||
|
||||
`Message` supports multiple mailbox types:
|
||||
|
||||
- **Public**: `MAILBOX_PUBLIC` (global announcements).
|
||||
- **National**: `MAILBOX_NATIONAL + nationID` for diplomacy/nation mail.
|
||||
- **Private**: mailbox id is the receiver general id.
|
||||
|
||||
Message types (`MessageType`) include `public`, `national`, `private`,
|
||||
and `diplomacy`.
|
||||
|
||||
## Message Lifecycle
|
||||
|
||||
- `Message::send()` (not shown here) writes to the `message` table.
|
||||
- `Message::getMessagesFromMailBox()` reads by mailbox/type with validity
|
||||
filtering (`valid_until > now`).
|
||||
- `Message::buildFromArray()` instantiates:
|
||||
- `DiplomaticMessage` when type is diplomacy.
|
||||
- `ScoutMessage` or `RaiseInvaderMessage` when `option.action` matches.
|
||||
|
||||
## DiplomaticMessage Flow
|
||||
|
||||
`DiplomaticMessage` wraps diplomacy requests and accepts/rejects them:
|
||||
|
||||
- Supported actions:
|
||||
- `TYPE_NO_AGGRESSION` (불가침)
|
||||
- `TYPE_CANCEL_NA` (불가침 파기)
|
||||
- `TYPE_STOP_WAR` (종전)
|
||||
- `agreeMessage()` validates:
|
||||
- message is still valid
|
||||
- receiver is a valid diplomacy officer
|
||||
- On accept, builds and runs the matching nation command:
|
||||
- `che_불가침수락`, `che_불가침파기수락`, `che_종전수락`
|
||||
- Uses `NoRNG` to avoid randomness in acceptance.
|
||||
|
||||
Each acceptance updates `diplomacyDetail` with command briefs and writes logs.
|
||||
|
||||
## Message Targets
|
||||
|
||||
`MessageTarget` and `Target` provide lightweight identifiers:
|
||||
|
||||
- `MessageTarget` includes general/nation names, colors, and icons.
|
||||
- Helper constructors (`buildQuick`, `buildFromGeneralObj`) resolve from DB.
|
||||
|
||||
## Open Questions / Follow-ups
|
||||
|
||||
- The full list of `MessageType` values and message table schema live outside
|
||||
this file and can be documented alongside the UI mailbox APIs.
|
||||
Reference in New Issue
Block a user