Fixed implementation of rounded rectangles for hiliting the active PC in combat

This commit is contained in:
2014-04-15 17:03:20 -04:00
parent ed212d5f6b
commit 1cd0b09749

View File

@@ -841,7 +841,7 @@ public:
}
sf::Vector2f getPoint(unsigned int i) const override {
int t = i * divSz;
float t = i * divSz;
return sf::Vector2f(a + a*sin(t), b + b*cos(t));
}
@@ -857,7 +857,7 @@ public:
w = size.x;
h = size.y;
r = cornerRadius;
divSz = 0.5 * pi<float>() / points;
divSz = 2 * pi<float>() / points;
update();
}
@@ -866,20 +866,22 @@ public:
}
sf::Vector2f getPoint(unsigned int i) const override {
int t = i * divSz;
const float pi = ::pi<float>();
const float half_pi = 0.5 * pi;
float t = i * divSz;
switch(i / points) {
case 0:
return sf::Vector2f(r*sin(t), r*cos(t));
case 1:
return sf::Vector2f(w + r*sin(t), r*cos(t));
case 2:
return sf::Vector2f(w + r*sin(t), h + r*cos(t));
case 3:
return sf::Vector2f(r*sin(t), h + r*cos(t));
case 0: // top left corner
return {r + r*sin(t + pi), r + r*cos(t + pi)};
case 1: // bottom left corner
return {r + r*cos(t + half_pi), h - r + r*sin(t - half_pi)};
case 2: // bottom right corner
return {w - r + r*cos(t + half_pi), h - r - r*sin(t + half_pi)};
case 3: // top right corner
return {w - r - r*cos(t - half_pi), r + r*sin(t - half_pi)};
}
// Unreachable
printf("Whoops, rounded rectangle had bad point!");
return sf::Vector2f();
return {0,0};
}
// TODO: Additional functions?