| 764 | } |
| 765 | |
| 766 | Maybe<Json> Player::receiveMessage(ConnectionId fromConnection, String const& message, JsonArray const& args) { |
| 767 | bool localMessage = fromConnection == world()->connection(); |
| 768 | if (message == "queueRadioMessage" && args.size() > 0) { |
| 769 | float delay = 0; |
| 770 | if (args.size() > 1 && args.get(1).canConvert(Json::Type::Float)) |
| 771 | delay = args.get(1).toFloat(); |
| 772 | |
| 773 | queueRadioMessage(args.get(0), delay); |
| 774 | } else if (message == "warp") { |
| 775 | Maybe<String> animation; |
| 776 | if (args.size() > 1) |
| 777 | animation = args.get(1).toString(); |
| 778 | |
| 779 | bool deploy = false; |
| 780 | if (args.size() > 2) |
| 781 | deploy = args.get(2).toBool(); |
| 782 | |
| 783 | setPendingWarp(args.get(0).toString(), animation, deploy); |
| 784 | } else if (message == "interruptRadioMessage") { |
| 785 | m_interruptRadioMessage = true; |
| 786 | } else if (message == "playCinematic" && args.size() > 0) { |
| 787 | bool unique = false; |
| 788 | if (args.size() > 1) |
| 789 | unique = args.get(1).toBool(); |
| 790 | setPendingCinematic(args.get(0), unique); |
| 791 | } else if (message == "playAltMusic" && args.size() > 0) { |
| 792 | float fadeTime = args.size() > 1 ? args.get(1).toFloat() : 0.f; |
| 793 | int loops = args.size() > 2 ? args.get(2).toInt() : -1; |
| 794 | StringList trackList; |
| 795 | if (args.get(0).canConvert(Json::Type::Array)) |
| 796 | trackList = jsonToStringList(args.get(0).toArray()); |
| 797 | else |
| 798 | trackList = StringList(); |
| 799 | m_pendingAltMusic = pair<Maybe<pair<StringList, int>>, float>(make_pair(trackList, loops), fadeTime); |
| 800 | } else if (message == "stopAltMusic") { |
| 801 | float fadeTime = 0; |
| 802 | if (args.size() > 0) |
| 803 | fadeTime = args.get(0).toFloat(); |
| 804 | m_pendingAltMusic = pair<Maybe<pair<StringList, int>>, float>({}, fadeTime); |
| 805 | } else if (message == "recordEvent") { |
| 806 | statistics()->recordEvent(args.at(0).toString(), args.at(1)); |
| 807 | } else if (message == "addCollectable") { |
| 808 | auto collection = args.get(0).toString(); |
| 809 | auto collectable = args.get(1).toString(); |
| 810 | if (Root::singleton().collectionDatabase()->hasCollectable(collection, collectable)) |
| 811 | addCollectable(collection, collectable); |
| 812 | } else { |
| 813 | Maybe<Json> result = m_tools->receiveMessage(message, localMessage, args); |
| 814 | if (!result) |
| 815 | result = m_statusController->receiveMessage(message, localMessage, args); |
| 816 | if (!result) |
| 817 | result = m_companions->receiveMessage(message, localMessage, args); |
| 818 | if (!result) |
| 819 | result = m_deployment->receiveMessage(message, localMessage, args); |
| 820 | if (!result) |
| 821 | result = m_techController->receiveMessage(message, localMessage, args); |
| 822 | if (!result) |
| 823 | result = m_questManager->receiveMessage(message, localMessage, args); |
no test coverage detected