mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-18 21:25:21 +02:00
51 lines
2.4 KiB
C++
51 lines
2.4 KiB
C++
#include "Extension/Profile/profile_internal.h"
|
|
#include <cmath>
|
|
#include <set>
|
|
#include <type_traits>
|
|
|
|
namespace dingosdk::profile {
|
|
using namespace detail;
|
|
std::uint32_t noclip_binding(const Snapshot& s) {
|
|
const auto bindings = s.settings.find("bindings");
|
|
if (bindings == s.settings.end()) return 0;
|
|
require(bindings->is_object(), "Bindings must be an object");
|
|
const auto value = bindings->find("noclip");
|
|
if (value == bindings->end()) return 0;
|
|
require(value->is_number_unsigned() || (value->is_number_integer() && value->get<std::int64_t>() >= 0),
|
|
"Noclip binding must be a nonnegative integer");
|
|
const auto mask = value->get<std::uint64_t>();
|
|
require(mask <= controller_button_mask && valid_controller_combo(static_cast<std::uint32_t>(mask)),
|
|
"Unsupported controller buttons in Noclip binding");
|
|
return static_cast<std::uint32_t>(mask);
|
|
}
|
|
|
|
std::uint32_t forward_velocity_binding(const Snapshot& s) {
|
|
const auto bindings = s.settings.find("bindings");
|
|
if (bindings == s.settings.end()) return 0;
|
|
require(bindings->is_object(), "Bindings must be an object");
|
|
const auto value = bindings->find("forward_velocity");
|
|
if (value == bindings->end()) return 0;
|
|
require(value->is_number_unsigned() || (value->is_number_integer() && value->get<std::int64_t>() >= 0),
|
|
"Forward velocity binding must be a nonnegative integer");
|
|
const auto mask = value->get<std::uint64_t>();
|
|
require(mask <= controller_button_mask && valid_controller_combo(static_cast<std::uint32_t>(mask)),
|
|
"Unsupported controller buttons in Forward Boost binding");
|
|
return static_cast<std::uint32_t>(mask);
|
|
}
|
|
|
|
std::uint32_t up_velocity_binding(const Snapshot& s) {
|
|
const auto bindings = s.settings.find("bindings");
|
|
if (bindings == s.settings.end()) return 0;
|
|
require(bindings->is_object(), "Bindings must be an object");
|
|
const auto value = bindings->find("up_velocity");
|
|
if (value == bindings->end()) return 0;
|
|
require(value->is_number_unsigned() || (value->is_number_integer() && value->get<std::int64_t>() >= 0),
|
|
"Up velocity binding must be a nonnegative integer");
|
|
const auto mask = value->get<std::uint64_t>();
|
|
require(mask <= controller_button_mask && valid_controller_combo(static_cast<std::uint32_t>(mask)),
|
|
"Unsupported controller buttons in Up Boost binding");
|
|
return static_cast<std::uint32_t>(mask);
|
|
}
|
|
|
|
}
|