MCPcopy Create free account
hub / github.com/deathkiller/jazz2-native / OnConsoleCommand

Method OnConsoleCommand

Sources/Jazz2/Multiplayer/MpLevelHandler.cpp:784–822  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

782 }
783
784 bool MpLevelHandler::OnConsoleCommand(StringView line)
785 {
786 if (LevelHandler::OnConsoleCommand(line)) {
787 return true;
788 }
789
790 if (_isServer) {
791 if (line.hasPrefix('/')) {
792 _console->WriteLine(UI::MessageLevel::Echo, line);
793 return ProcessCommand({}, line, true);
794 }
795
796 auto peerDesc = _networkManager->GetPeerDescriptor(LocalPeer);
797 String prefixedMessage = "\f[c:#907060]"_s + peerDesc->PlayerName + ":\f[/c] "_s + line;
798 _console->WriteLine(UI::MessageLevel::Echo, prefixedMessage);
799
800 // Chat message
801 MemoryStream packet(9 + prefixedMessage.size());
802 packet.WriteVariableUint32(0); // TODO: Player index
803 packet.WriteValue<std::uint8_t>((std::uint8_t)UI::MessageLevel::Chat);
804 packet.WriteVariableUint32((std::uint32_t)prefixedMessage.size());
805 packet.Write(prefixedMessage.data(), (std::uint32_t)prefixedMessage.size());
806
807 _networkManager->SendTo([this](const Peer& peer) {
808 auto peerDesc = _networkManager->GetPeerDescriptor(peer);
809 return (peerDesc && peerDesc->LevelState != PeerLevelState::Unknown);
810 }, NetworkChannel::Main, (std::uint8_t)ServerPacketType::ChatMessage, packet);
811 } else {
812 // Chat message
813 MemoryStream packet(9 + line.size());
814 packet.WriteVariableUint32(_lastSpawnedActorId);
815 packet.WriteValue<std::uint8_t>(0); // Reserved
816 packet.WriteVariableUint32((std::uint32_t)line.size());
817 packet.Write(line.data(), (std::uint32_t)line.size());
818 _networkManager->SendTo(AllPeers, NetworkChannel::Main, (std::uint8_t)ClientPacketType::ChatMessage, packet);
819 }
820
821 return true;
822 }
823
824 void MpLevelHandler::OnTouchEvent(const TouchEvent& event)
825 {

Callers 1

ProcessCurrentLineMethod · 0.45

Calls 8

WriteLineMethod · 0.80
WriteVariableUint32Method · 0.80
SendToMethod · 0.80
hasPrefixMethod · 0.45
GetPeerDescriptorMethod · 0.45
sizeMethod · 0.45
WriteMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected