metaforce/Runtime/CGameHintInfo.hpp

50 lines
1.3 KiB
C++
Raw Normal View History

2018-10-06 20:42:33 -07:00
#pragma once
2016-09-07 19:01:29 -07:00
#include <string_view>
#include <vector>
#include "Runtime/IFactory.hpp"
#include "Runtime/RetroTypes.hpp"
2016-09-07 19:01:29 -07:00
2021-04-10 01:42:06 -07:00
namespace metaforce {
2018-12-07 21:30:43 -08:00
class CGameHintInfo {
2016-09-07 19:01:29 -07:00
public:
2018-12-07 21:30:43 -08:00
struct SHintLocation {
CAssetId x0_mlvlId;
CAssetId x4_mreaId;
TAreaId x8_areaId = kInvalidAreaId;
CAssetId xc_stringId;
SHintLocation(CInputStream&, s32);
};
class CGameHint {
std::string x0_name;
float x10_immediateTime;
float x14_normalTime;
CAssetId x18_stringId;
float x1c_textTime;
std::vector<SHintLocation> x20_locations;
public:
CGameHint(CInputStream&, s32);
float GetNormalTime() const { return x14_normalTime; }
float GetImmediateTime() const { return x10_immediateTime; }
float GetTextTime() const { return x1c_textTime; }
std::string_view GetName() const { return x0_name; }
CAssetId GetStringID() const { return x18_stringId; }
const std::vector<SHintLocation>& GetLocations() const { return x20_locations; }
};
2016-09-07 19:01:29 -07:00
private:
2018-12-07 21:30:43 -08:00
std::vector<CGameHint> x0_hints;
2016-09-07 19:01:29 -07:00
public:
2018-12-07 21:30:43 -08:00
CGameHintInfo(CInputStream&, s32);
const std::vector<CGameHint>& GetHints() const { return x0_hints; }
static int FindHintIndex(std::string_view str);
2016-09-07 19:01:29 -07:00
};
CFactoryFnReturn FHintFactory(const SObjectTag&, CInputStream&, const CVParamTransfer&, CObjectReference*);
2021-04-10 01:42:06 -07:00
} // namespace metaforce