namespace AcDream.Runtime.Chat;
///
/// Outbound chat channel selector. Mirrors holtburger's ChatChannelKind
/// (references/holtburger/crates/holtburger-core/src/client/types.rs
/// lines 35-49) plus a synthetic + for
/// the two non-channel cases — local speech and whispers — so a single
/// can carry every outbound flavour the chat
/// panel emits.
///
///
/// Channels split into:
///
/// - Legacy (Fellowship, Vassals, Patron, Monarch, CoVassals,
/// AllegianceBroadcast): map to a fixed ChatChannel bitflag id
/// via and ride 0x0147 ChatChannel.
/// - Turbine (Allegiance, General, Trade, Lfg, Roleplay, Society,
/// Olthoi): resolve to a server-assigned Turbine room id at runtime via
/// TurbineChatMembershipGate and ride 0xF7DE TurbineChat.
/// Campaign CH slice CH3 (2026-08-09) moved
/// here unconditionally — retail's @a binds to
/// DoTurbineChat_Allegiance, never the legacy bitflag; see
/// for the legacy sibling
/// (retail's @ab).
/// - Say / Tell: route to the dedicated 0x0015 / 0x005D
/// opcodes — no channel id needed.
///
///
///
public enum ChatChannelKind
{
Say,
Tell,
Fellowship,
Allegiance,
Vassals,
Patron,
Monarch,
CoVassals,
General,
Trade,
Lfg,
Roleplay,
Society,
Olthoi,
///
/// Campaign CH slice CH3 (2026-08-09): the legacy
/// ChatChannel.AllegianceBroadcast (0x02000000) bound to retail's
/// @ab verb — a monarch/speaker-permission broadcast over the
/// legacy 0x0147 pipe. Distinct from , which is
/// ALWAYS the Turbine room now: retail's @a binds unconditionally
/// to DoTurbineChat_Allegiance once Turbine chat starts (research
/// doc §4.3), so it never falls back to this bitflag.
///
AllegianceBroadcast,
Unknown,
}