summaryrefslogtreecommitdiff
path: root/src/interface/SaveButton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/SaveButton.cpp')
-rw-r--r--src/interface/SaveButton.cpp61
1 files changed, 35 insertions, 26 deletions
diff --git a/src/interface/SaveButton.cpp b/src/interface/SaveButton.cpp
index 877dfda..fa848bf 100644
--- a/src/interface/SaveButton.cpp
+++ b/src/interface/SaveButton.cpp
@@ -9,36 +9,29 @@
namespace ui {
-SaveButton::SaveButton(Window* parent_state, Save * save):
- Component(parent_state),
- save(save),
- thumbnail(NULL),
- isMouseInside(false),
- isButtonDown(false),
- actionCallback(NULL)
-{
-
-}
-
SaveButton::SaveButton(Point position, Point size, Save * save):
Component(position, size),
save(save),
thumbnail(NULL),
isMouseInside(false),
isButtonDown(false),
- actionCallback(NULL)
+ actionCallback(NULL),
+ voteColour(255, 0, 0)
{
+ if(save->votesUp==0)
+ voteRatio = 0.0f;
+ else if(save->votesDown==0)
+ voteRatio = 1.0f;
+ else
+ voteRatio = 1.0f-(float)(((float)(save->votesDown))/((float)(save->votesUp)));
+ if(voteRatio < 0.0f)
+ voteRatio = 0.0f;
+ if(voteRatio > 1.0f) //Not possible, but just in case the server were to give a negative value or something
+ voteRatio = 1.0f;
-}
-SaveButton::SaveButton(Save * save):
- Component(),
- save(save),
- thumbnail(NULL),
- isMouseInside(false),
- isButtonDown(false),
- actionCallback(NULL)
-{
+ voteColour.Red = (1.0f-voteRatio)*255;
+ voteColour.Green = voteRatio*255;
}
@@ -68,9 +61,9 @@ void SaveButton::Tick(float dt)
{
scaleFactorY = ((float)(Size.Y-25))/((float)thumbnail->Size.Y);
}
- if(thumbnail->Size.X > Size.X)
+ if(thumbnail->Size.X > Size.X-3)
{
- scaleFactorX = ((float)Size.X)/((float)thumbnail->Size.X);
+ scaleFactorX = ((float)Size.X-3)/((float)thumbnail->Size.X);
}
if(scaleFactorY < 1.0f || scaleFactorX < 1.0f)
{
@@ -90,16 +83,32 @@ void SaveButton::Draw(const Point& screenPos)
{
Graphics * g = ui::Engine::Ref().g;
float scaleFactor;
+ ui::Point thumbBoxSize(0, 0);
if(thumbnail)
{
- g->draw_image(thumbnail->Data, screenPos.X+(Size.X-thumbnail->Size.X)/2, screenPos.Y+((Size.Y-25)-thumbnail->Size.Y)/2, thumbnail->Size.X, thumbnail->Size.Y, 255);
- g->drawrect(screenPos.X+(Size.X-thumbnail->Size.X)/2, screenPos.Y+((Size.Y-25)-thumbnail->Size.Y)/2, thumbnail->Size.X, thumbnail->Size.Y, 180, 180, 180, 255);
+ thumbBoxSize = ui::Point(thumbnail->Size.X, thumbnail->Size.Y);
+ if(save->id)
+ g->draw_image(thumbnail->Data, screenPos.X-3+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-25-thumbBoxSize.Y)/2, thumbnail->Size.X, thumbnail->Size.Y, 255);
+ else
+ g->draw_image(thumbnail->Data, screenPos.X+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-25-thumbBoxSize.Y)/2, thumbnail->Size.X, thumbnail->Size.Y, 255);
}
else
{
scaleFactor = (Size.Y-25)/((float)YRES);
- g->drawrect(screenPos.X+(Size.X-((float)XRES)*scaleFactor)/2, screenPos.Y+((Size.Y-21)-((float)YRES)*scaleFactor)/2, ((float)XRES)*scaleFactor, ((float)YRES)*scaleFactor, 180, 180, 180, 255);
+ thumbBoxSize = ui::Point(((float)XRES)*scaleFactor, ((float)YRES)*scaleFactor);
+ }
+ if(save->id)
+ {
+ g->drawrect(screenPos.X-3+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, thumbBoxSize.X, thumbBoxSize.Y, 180, 180, 180, 255);
+ g->drawrect(screenPos.X-3+thumbBoxSize.X+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, 6, thumbBoxSize.Y, 180, 180, 180, 255);
+
+ int voteBar = max(10.0f, ((float)(thumbBoxSize.Y))*voteRatio);
+ g->fillrect(screenPos.X-3+thumbBoxSize.X+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(thumbBoxSize.Y-voteBar)+(Size.Y-21-thumbBoxSize.Y)/2, 6, voteBar, voteColour.Red, voteColour.Green, voteColour.Blue, 255);
+ }
+ else
+ {
+ g->drawrect(screenPos.X+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, thumbBoxSize.X, thumbBoxSize.Y, 180, 180, 180, 255);
}
if(isMouseInside)