Skip to content

Commit da36f6c

Browse files
committed
Add support for changing anchor point
1 parent 042b036 commit da36f6c

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/trigger/text_area.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
#include "video/drawing_context.hpp"
2626
#include "video/layer.hpp"
2727

28+
namespace
29+
{
30+
std::string anchor_points[] = { "middle", "topleft", "top", "topright", "left", "right", "bottomleft", "bottom", "bottomright" };
31+
}
32+
2833
TextArea::TextArea(const ReaderMapping& mapping) :
2934
TriggerBase(mapping),
3035
m_once(false),
@@ -33,7 +38,8 @@ TextArea::TextArea(const ReaderMapping& mapping) :
3338
m_fade_delay(1.0f),
3439
m_current_text(0),
3540
m_status(Status::NOT_STARTED),
36-
m_timer()
41+
m_timer(),
42+
m_anchor(0)
3743
{
3844
float w, h;
3945

@@ -45,6 +51,7 @@ TextArea::TextArea(const ReaderMapping& mapping) :
4551
mapping.get("delay", m_delay);
4652
mapping.get("once", m_once);
4753
mapping.get("fade-delay", m_fade_delay);
54+
mapping.get("anchor-point", m_anchor, 0);
4855

4956
m_col.m_bbox.set_size(w, h);
5057
}
@@ -56,7 +63,8 @@ TextArea::TextArea(const Vector& pos) :
5663
m_fade_delay(1.0f),
5764
m_current_text(0),
5865
m_status(Status::NOT_STARTED),
59-
m_timer()
66+
m_timer(),
67+
m_anchor(0)
6068
{
6169
m_col.m_bbox.set_pos(pos);
6270
m_col.m_bbox.set_size(32, 32);
@@ -88,6 +96,7 @@ TextArea::event(Player& player, EventType type)
8896
m_current_text = 0;
8997
m_status = Status::FADING_IN;
9098
m_timer.start(m_fade_delay);
99+
text_object.set_anchor_point(string_to_anchor_point(anchor_points[m_anchor]));
91100
text_object.set_text(m_items[m_current_text]);
92101
text_object.fade_in(m_fade_delay);
93102
}
@@ -130,6 +139,7 @@ TextArea::update(float dt_sec)
130139
{
131140
m_status = Status::FADING_IN;
132141
m_timer.start(m_fade_delay);
142+
text_object.set_anchor_point(string_to_anchor_point(anchor_points[m_anchor]));
133143
text_object.set_text(m_items[m_current_text]);
134144
text_object.fade_in(m_fade_delay);
135145
}
@@ -149,6 +159,8 @@ TextArea::get_settings()
149159
settings.add_bool(_("Once"), &m_once, "once");
150160
settings.add_float(_("Text change time"), &m_delay, "delay");
151161
settings.add_float(_("Fade time"), &m_fade_delay, "fade-delay");
162+
settings.add_string_select(_("Anchor"), &m_anchor,
163+
{ _("Middle"), _("Top-left"), _("Top"), _("Top-right"), _("Left"), _("Right"), _("Bottom-left"), _("Bottom"), _("Bottom-right") }, 0, "anchor-point");
152164
settings.add_string_array(_("Texts"), "texts", m_items);
153165

154166
return settings;

src/trigger/text_area.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class TextArea final : public TriggerBase
5454
size_t m_current_text;
5555
Status m_status;
5656
Timer m_timer;
57+
int m_anchor;
5758

5859
private:
5960
TextArea(const TextArea&) = delete;

0 commit comments

Comments
 (0)