settings live in one registry, and the net drain starts to peel

- the CVars are one engine-side table that outlives every interface reload: a change fires its observer, the eight latched rows wait for RestartGx, and /console gains set, cvar_reset, cvar_default, cvarlist and help (2303)
- every push into the interface runs in one feed phase after the net drain and before the tick, held by a structural test on the built schedule (2304)
- subsystems own their packet handlers, dispatched in packet order; the auction house is the first family out of the 273-arm drain (2305)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Sam
2026-09-17 16:47:09 +07:00
co-authored by Claude Fable 5.1
parent 6019703a14
commit aa207b4050
117 changed files with 3844 additions and 2067 deletions
+15 -1
View File
@@ -146,7 +146,14 @@ impl LoginRefusal {
/// One decoded event from the world stream. Carries only primitives + the coarse [`EntityKind`]
/// classification — no wire types leak to the app, and no running state lives here.
#[derive(Debug, Clone)]
///
/// [`SessionEventKind`] is its fieldless twin (one variant per variant, derived): the key the
/// app's packet-handler table dispatches on, as the reference's table is keyed by opcode.
#[derive(Debug, Clone, strum::EnumDiscriminants)]
#[strum_discriminants(
name(SessionEventKind),
derive(Hash, PartialOrd, Ord, strum::EnumIter, strum::IntoStaticStr)
)]
pub enum SessionEvent {
/// A login attempt progressed to `stage` (decision 0539) — IO-thread-emitted, like
/// [`Self::CharacterList`], never wire-decoded.
@@ -1609,6 +1616,13 @@ pub enum SessionEvent {
},
}
impl SessionEventKind {
/// Every kind, in declaration order — for a census that asks "who handles each?".
pub fn all() -> impl Iterator<Item = Self> {
<Self as strum::IntoEnumIterator>::iter()
}
}
/// The result of polling the reader for the next packet's events.
pub enum Poll {
/// A packet decoded into these events. `events` is **empty** for an opcode we parse but do not
+1 -1
View File
@@ -15,7 +15,7 @@ pub mod world;
pub use auth::AuthReject;
pub use events::{
decode, CharAction, EntityKind, LoginRefusal, LoginStage, MoveSpeeds, Poll, SessionEnd,
SessionEvent,
SessionEvent, SessionEventKind,
};
pub use messages::field;
pub use messages::{