-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathImageFrame.angelscript
More file actions
90 lines (74 loc) · 2.58 KB
/
Copy pathImageFrame.angelscript
File metadata and controls
90 lines (74 loc) · 2.58 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
class ImageFrame : Displayable
{
private string m_backgroundTiles;
private vector2 m_pos;
private vector2 m_origin;
private vector2 m_size;
private bool m_borderOutside;
private float m_scale;
private uint m_color;
ImageFrame(const string &in backgroundTiles, const vector2 &in pos, const vector2 &in origin,
const vector2 &in size, const float scale = 1.0f, const bool borderOutside = false)
{
m_pos = pos;
m_size = size;
m_origin = origin;
m_borderOutside = borderOutside;
m_scale = scale;
m_backgroundTiles = backgroundTiles;
m_color = 0xFFFFFFFF;
}
void setColor(const uint color)
{
m_color = color;
}
uint getColor() const
{
return m_color;
}
void draw(const vector2 &in offset)
{
vector2 pos(offset + m_pos);
vector2 sizeFix(m_size);
SetupSpriteRects(m_backgroundTiles, 3, 3);
SetSpriteOrigin(m_backgroundTiles, vector2(0, 0));
const vector2 tileSize(GetSpriteFrameSize(m_backgroundTiles) * m_scale);
if (!m_borderOutside)
{
sizeFix -= tileSize * 2.0f;
pos += tileSize;
}
pos -= m_origin * (sizeFix + ((m_borderOutside) ? vector2(0, 0) : (tileSize * 2)));
// top left corner
SetSpriteRect(m_backgroundTiles, 0);
drawSprite(m_backgroundTiles, pos, vector2(1, 1), tileSize);
// top bar
SetSpriteRect(m_backgroundTiles, 1);
drawSprite(m_backgroundTiles, pos, vector2(0, 1), vector2(sizeFix.x, tileSize.y));
// top right corner
SetSpriteRect(m_backgroundTiles, 2);
drawSprite(m_backgroundTiles, pos + vector2(sizeFix.x, 0.0f), vector2(0, 1), tileSize);
// left bar
SetSpriteRect(m_backgroundTiles, 3);
drawSprite(m_backgroundTiles, pos, vector2(1, 0), vector2(tileSize.x, sizeFix.y));
// middle
SetSpriteRect(m_backgroundTiles, 4);
drawSprite(m_backgroundTiles, pos, vector2(0, 0), sizeFix);
// right bar
SetSpriteRect(m_backgroundTiles, 5);
drawSprite(m_backgroundTiles, pos + vector2(sizeFix.x, 0.0f), vector2(0, 0), vector2(tileSize.x, sizeFix.y));
// bottom left corner
SetSpriteRect(m_backgroundTiles, 6);
drawSprite(m_backgroundTiles, pos + vector2(0.0f, sizeFix.y), vector2(1, 0), tileSize);
// bottom bar
SetSpriteRect(m_backgroundTiles, 7);
drawSprite(m_backgroundTiles, pos + vector2(0.0f, sizeFix.y), vector2(0, 0), vector2(sizeFix.x, tileSize.y));
// bottom right corner
SetSpriteRect(m_backgroundTiles, 8);
drawSprite(m_backgroundTiles, pos + sizeFix, vector2(0, 0), tileSize);
}
private void drawSprite(const string &in sprite, const vector2 &in pos, const vector2 &in origin, const vector2 &in size)
{
DrawShapedSprite(sprite, pos - (origin * size), size, m_color, 0.0f);
}
}