56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
# 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.
|