blob: 6ce121dfdc52c69c012a4a7621952291f865922c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#pragma once
#include "StarItem.hpp"
#include "StarPointableItem.hpp"
#include "StarToolUserItem.hpp"
#include "StarEntityRendering.hpp"
#include "StarInspectableEntity.hpp"
namespace Star {
STAR_CLASS(InspectionTool);
class InspectionTool
: public Item,
public PointableItem,
public ToolUserItem {
public:
struct InspectionResult {
String message;
Maybe<String> objectName = {};
Maybe<EntityId> entityId = {};
};
InspectionTool(Json const& config, String const& directory, Json const& parameters = JsonObject());
ItemPtr clone() const override;
void update(float dt, FireMode fireMode, bool shifting, HashSet<MoveControlType> const& moves) override;
List<Drawable> drawables() const override;
List<LightSource> lightSources() const;
float inspectionHighlightLevel(InspectableEntityPtr const& inspectableEntity) const;
List<InspectionResult> pullInspectionResults();
private:
InspectionResult inspect(Vec2F const& position);
float inspectionLevel(InspectableEntityPtr const& inspectableEntity) const;
float pointInspectionLevel(Vec2F const& position) const;
bool hasLineOfSight(Vec2I const& targetPosition, Set<Vec2I> const& targetSpaces = {}) const;
String inspectionFailureText(String const& failureType, String const& species) const;
float m_currentAngle;
Vec2F m_currentPosition;
String m_image;
Vec2F m_handPosition;
Vec2F m_lightPosition;
Color m_lightColor;
float m_beamWidth;
float m_ambientFactor;
bool m_showHighlights;
bool m_allowScanning;
Vec2F m_inspectionAngles;
Vec2F m_inspectionRanges;
float m_ambientInspectionRadius;
size_t m_fullInspectionSpaces;
float m_minimumInspectionLevel;
FireMode m_lastFireMode;
List<InspectionResult> m_inspectionResults;
};
}
|