#pragma once #include "entities/camera.hpp" #include "entities/game_object.hpp" #include "text/handler.hpp" #include "text/token.hpp" #include "utils/globals.hpp" #include "wall/wall.hpp" namespace Nimbin { enum class PickKind : uint8_t { None, Scenery, Word, WallWord }; struct PickResult { size_t word_index { 0 }; GameObject* scenery_obj { nullptr }; Text::Handler* wall_handler { nullptr }; Text::Token::Data* wall_token { nullptr }; PickKind kind { PickKind::None }; bool hit() const { return kind != PickKind::None; } }; namespace PickSystem { PickResult pick(const Camera& camera, const DynArray& words, const DynArray& scenery, const DynArray& walls); Text::Token::Data* pick_WallToken(const Camera& camera, Text::Handler& wall); } } // namespace Nimbin