2 using Microsoft.Xna.Framework;
24 string styleSetting =
string.Empty;
35 Client senderClient =
null;
41 => c.SessionOrAccountIdMatches(userId));
42 if (senderClient !=
null) { senderName = senderClient.
Name; }
55 Color? textColor =
null;
69 if (orderMessageInfo.OrderIdentifier == Identifier.Empty)
71 DebugConsole.ThrowError(
"Invalid order message - order index out of bounds.");
72 if (NetIdUtils.IdMoreRecent(
id,
LastID)) {
LastID = id; }
75 var orderPrefab = orderMessageInfo.OrderPrefab ??
OrderPrefab.
Prefabs[orderMessageInfo.OrderIdentifier];
76 Identifier orderOption = orderMessageInfo.OrderOption;
77 orderOption = orderOption.IfEmpty(
78 orderMessageInfo.OrderOptionIndex.HasValue && orderMessageInfo.OrderOptionIndex >= 0 && orderMessageInfo.OrderOptionIndex < orderPrefab.Options.Length
79 ? orderPrefab.Options[orderMessageInfo.OrderOptionIndex.Value]
83 if (orderMessageInfo.TargetEntity is
Hull targetHull)
85 targetRoom = targetHull.DisplayName.Value;
95 switch (orderMessageInfo.TargetType)
98 order =
new Order(orderPrefab, orderOption, orderMessageInfo.TargetEntity, orderPrefab.GetTargetItemComponent(orderMessageInfo.TargetEntity as
Item), orderGiver: senderCharacter);
101 order =
new Order(orderPrefab, orderOption, orderMessageInfo.TargetPosition, orderGiver: senderCharacter);
104 order =
new Order(orderPrefab, orderOption, orderMessageInfo.TargetEntity as
Structure, orderMessageInfo.WallSectionIndex, orderGiver: senderCharacter);
113 var fadeOutTime = !orderPrefab.
IsIgnoreOrder ? (
float?)orderPrefab.FadeOutTime :
null;
118 orderMessageInfo.TargetCharacter?.SetOrder(order, orderMessageInfo.IsNewOrder);
123 if (NetIdUtils.IdMoreRecent(
id,
LastID))
126 if (orderMessageInfo.TargetPosition !=
null)
128 order =
new Order(orderPrefab, orderOption, orderMessageInfo.TargetPosition, orderGiver: senderCharacter)
131 else if (orderMessageInfo.WallSectionIndex !=
null)
133 order =
new Order(orderPrefab, orderOption, orderMessageInfo.TargetEntity as
Structure, orderMessageInfo.WallSectionIndex, orderGiver: senderCharacter)
138 order =
new Order(orderPrefab, orderOption, orderMessageInfo.TargetEntity, orderPrefab.GetTargetItemComponent(orderMessageInfo.TargetEntity as
Item), orderGiver: senderCharacter)
142 new OrderChatMessage(order, txt, orderMessageInfo.TargetCharacter, senderCharacter));
147 txt = TextManager.GetServerMessage(txt).Value;
151 txt = TextManager.GetServerMessage(txt).Value;
155 if (NetIdUtils.IdMoreRecent(
id,
LastID))
165 if (textColor !=
null) { messageBox.
Text.
TextColor = textColor.Value; }
171 if (textColor !=
null) { messageBox.
Text.
TextColor = textColor.Value; }
182 GameMain.
Client.ServerSettings.ServerLog?.WriteLine(txt, messageType);
188 Signal s =
new Signal(txt, sender: senderCharacter, source: radio.Item);
189 radio.TransmitSignal(s, sentFromChat:
true);
bool AddOrder(Order order, float? fadeOutTime)
static Entity FindEntityByID(ushort ID)
Find an entity based on the ID
static GUIComponent VisibleBox
static GameSession?? GameSession
static GameScreen GameScreen
LocalizedString DisplayName
static void ClientRead(IReadMessage msg)
static Color[] MessageColor
static bool CanUseRadio(Character sender, bool ignoreJamming=false)
virtual void ClientWrite(in SegmentTableWriter< ClientNetSegment > segmentTableWriter, IWriteMessage msg)
override IReadOnlyList< Client > ConnectedClients
override void AddChatMessage(ChatMessage message)
static OrderMessageInfo ReadOrder(IReadMessage msg)
static string NameFromEntityOrNull(Entity entity)
Order WithManualPriority(int newPriority)
static readonly PrefabCollection< OrderPrefab > Prefabs
Microsoft.Xna.Framework.Color ReadColorR8G8B8A8()
int ReadRangedInteger(int min, int max)
void WriteRangedInteger(int val, int min, int max)
void WriteString(string val)
void WriteUInt16(UInt16 val)
PlayerConnectionChangeType