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