I would love to see subscribable events for messages sent in text chat with the option to cancel the default action.
For example:
MessageSentEvent<public>():listenable(TempMessage : message_payload)
GetPlayspace().MessageSentEvent().Subscribe(HandleMessage)
SplitString(TempString : string, TargetChar : char)<suspends> : [][]string =
var WorkingString : string = TempString
var SplitStrings : [][]string = array{}
loop:
if(TempIndex := WorkingString.Find[TargetChar]):
if(SubString := WorkingString.Slice[0, TempIndex]):
set SplitStrings = SplitStrings + array{array{SubString}}
if(RemainingString := SubString.RemoveFirstElement[TargetChar]):
set WorkingString = RemainingString
else:
break
Sleep(0.0)
return SplitStrings
PlayerSentMessage(TempMessage : message_payload)<suspends> : void =
SendingPlayer := TempMessage.GetAgent()
TempStringMessage := TempMessage.GetMessage()
if(FirstByte := TempStringMessage[0]):
if(FirstByte = "/"): #Is a text command
CommandArgs := SplitString(TempStringMessage, " ")
#Cancel the message from reaching chat
if(TempMessage.PreventDefaultAction[]):
Print("Debug: Message was unsent!")
else:
Print("Debug: Couldn't unsend message :(.")
#Handle a / command
DoPlayerCommand(SendingPlayer, CommandsArgs)
HandleMessage(TempMessage : message_payload) : void =
spawn:
PlayerSentMessage(TempMessage)