| 831 | class MessageHandler : public PlayerFirstHandler { |
| 832 | public: |
| 833 | virtual bool execute(uint16_t& /*code*/, void* buf, int len) { |
| 834 | if (!player || len < MessageLen + 1) { |
| 835 | return false; |
| 836 | } |
| 837 | if (!player->player.isCompletelyAdded()) { |
| 838 | return false; |
| 839 | } |
| 840 | |
| 841 | // data: target player/team, message string |
| 842 | PlayerId dstPlayer; |
| 843 | char message[MessageLen]; |
| 844 | |
| 845 | buf = nboUnpackUInt8(buf, dstPlayer); |
| 846 | buf = nboUnpackString(buf, message, sizeof(message)); |
| 847 | message[MessageLen - 1] = '\0'; |
| 848 | |
| 849 | player->player.hasSent(); |
| 850 | if (dstPlayer == AllPlayers) { |
| 851 | debugf(1, "Player %s [%d] -> All: %s\n", player->player.getCallSign(), player->getIndex(), message); |
| 852 | } |
| 853 | else { |
| 854 | if (dstPlayer == AdminPlayers) { |
| 855 | debugf(1, "Player %s [%d] -> Admin: %s\n", player->player.getCallSign(), player->getIndex(), message); |
| 856 | } |
| 857 | else { |
| 858 | if (dstPlayer > LastRealPlayer) { |
| 859 | debugf(1, "Player %s [%d] -> Team: %s\n", player->player.getCallSign(), player->getIndex(), message); |
| 860 | } |
| 861 | else { |
| 862 | GameKeeper::Player* p = GameKeeper::Player::getPlayerByIndex(dstPlayer); |
| 863 | if (p != NULL) { |
| 864 | debugf(1, "Player %s [%d] -> Player %s [%d]: %s\n", player->player.getCallSign(), player->getIndex(), p->player.getCallSign(), dstPlayer, message); |
| 865 | } |
| 866 | else { |
| 867 | debugf(1, "Player %s [%d] -> Player Unknown [%d]: %s\n", player->player.getCallSign(), player->getIndex(), dstPlayer, message); |
| 868 | } |
| 869 | } |
| 870 | } |
| 871 | } |
| 872 | // check for spamming and garbage |
| 873 | if (!checkChatSpam(message, player, player->getIndex()) && !checkChatGarbage(message, player, player->getIndex())) { |
| 874 | sendPlayerMessage(player, dstPlayer, message); |
| 875 | } |
| 876 | |
| 877 | return true; |
| 878 | } |
| 879 | }; |
| 880 | |
| 881 |
nothing calls this directly
no test coverage detected