ksys/act: Implement more Query functions

This commit is contained in:
Léo Lam
2020-12-09 18:32:25 +01:00
parent fcbe17a3f0
commit 930b780cd1
9 changed files with 151 additions and 24 deletions
@@ -326,6 +326,17 @@ AIProgram::Definition::findSInstParam(const sead::SafeString& name) const {
return findSInstParam(agl::utl::ParameterBase::calcHash(name));
}
bool AIProgram::getSInstParam(const char** value, const AIProgram::Definition& def,
const sead::SafeString& param_name) const {
const auto* param = def.findSInstParam(param_name);
if (!param || param->getParameterType() != agl::utl::ParameterType::StringRef) {
*value = &sead::SafeString::cNullChar;
return false;
}
*value = param->ptrT<char>();
return true;
}
bool AIProgram::getSInstParam(sead::SafeString* value, const AIProgram::Definition& def,
const sead::SafeString& param_name) const {
const auto* param = def.findSInstParam(param_name);
@@ -343,6 +354,12 @@ bool AIProgram::getSInstParam(const s32** value, const AIProgram::Definition& de
return getSInstParam_(value, def, param_name, agl::utl::ParameterType::Int, &sDefault);
}
bool AIProgram::getSInstParam(const f32** value, const AIProgram::Definition& def,
const sead::SafeString& param_name) const {
static const f32 sDefault{};
return getSInstParam_(value, def, param_name, agl::utl::ParameterType::F32, &sDefault);
}
bool AIProgram::getSInstParam(const sead::Vector3f** value, const AIProgram::Definition& def,
const sead::SafeString& param_name) const {
return getSInstParam_(value, def, param_name, agl::utl::ParameterType::Vec3,
@@ -64,12 +64,14 @@ public:
const sead::Buffer<BehaviorDef>& getBehaviors() const { return mBehaviors; }
const sead::Buffer<QueryDef>& getQueries() const { return mQueries; }
bool getSInstParam(const char** value, const Definition& def,
const sead::SafeString& param_name) const;
bool getSInstParam(sead::SafeString* value, const Definition& def,
const sead::SafeString& param_name) const;
bool getSInstParam(const f32** value, const Definition& def,
const sead::SafeString& param_name) const;
bool getSInstParam(const s32** value, const Definition& def,
const sead::SafeString& param_name) const;
bool getSInstParam(const f32** value, const Definition& def,
const sead::SafeString& param_name) const;
bool getSInstParam(const sead::Vector3f** value, const Definition& def,
const sead::SafeString& param_name) const;
bool getSInstParam(const bool** value, const Definition& def,
@@ -129,10 +131,4 @@ inline bool AIProgram::getSInstParam_(const T** value, const AIProgram::Definiti
return true;
}
inline bool AIProgram::getSInstParam(const f32** value, const AIProgram::Definition& def,
const sead::SafeString& param_name) const {
static const f32 sDefault{};
return getSInstParam_(value, def, param_name, agl::utl::ParameterType::F32, &sDefault);
}
} // namespace ksys::res