Enable rotating over multiple filters, add src code doc

This commit is contained in:
Tobias Loose
2013-12-08 12:03:13 +01:00
parent 2b9977a334
commit 1cc65ab611
5 changed files with 132 additions and 23 deletions
+5 -10
View File
@@ -4,6 +4,7 @@ const float CarouselDeckView::max_scale = 0.96f;
const float CarouselDeckView::x_center = 180;
const float CarouselDeckView::right_border = SCREEN_WIDTH + 180;
const float CarouselDeckView::slide_animation_duration = 0.6f;
const float CarouselDeckView::scroll_animation_duration = 0.3f;
CarouselDeckView::CarouselDeckView() :
DeckView(10), mScrollOffset(0), mSlideOffset(0), mScrollEasing(mScrollOffset), mSlideEasing(mSlideOffset)
@@ -180,21 +181,15 @@ MTGCard *CarouselDeckView::Click()
void CarouselDeckView::changePositionAnimated(int offset)
{
mScrollEasing.start((float)offset, (float)(0.3f*abs(offset)));
if(mScrollEasing.finished())
mScrollEasing.start((float)offset, (float)(scroll_animation_duration * abs(offset)));
last_user_activity = 0;
}
void CarouselDeckView::changeFilterAnimated(int offset)
{
if(offset < 0)
{
mSlideEasing.start(-2.0f, slide_animation_duration);
}
else if(offset > 0)
{
mSlideEasing.start(2.0f, slide_animation_duration);
}
if(mSlideEasing.finished())
mSlideEasing.start(2.0f * float(offset), float(slide_animation_duration * abs(offset)));
last_user_activity = 0;
}
+8 -1
View File
@@ -1536,7 +1536,14 @@ void GameStateDeckViewer::OnScroll(int inXVelocity, int inYVelocity)
}
}
else
mView->changeFilterAnimated(flickUp ? 1 : -1);
{
if(abs(inYVelocity) > 300)
{
//FIXME: this 500 is a bit arbitrary
int numFilters = (magnitude / 500);
mView->changeFilterAnimated(flickUp ? numFilters : - numFilters);
}
}
last_user_activity = 0;
}
+4 -9
View File
@@ -233,20 +233,15 @@ MTGCard * GridDeckView::Click()
void GridDeckView::changePositionAnimated(int offset)
{
mScrollEasing.start(-1.0f * offset, scroll_animation_duration * abs(offset));
if(mScrollEasing.finished())
mScrollEasing.start(-1.0f * offset, scroll_animation_duration * abs(offset));
last_user_activity = 0;
}
void GridDeckView::changeFilterAnimated(int offset)
{
if(offset < 0)
{
mSlideEasing.start(-2.0f, slide_animation_duration);
}
else if(offset > 0)
{
mSlideEasing.start(2.0f, slide_animation_duration);
}
if(mSlideEasing.finished())
mSlideEasing.start(2.0f * offset, float(slide_animation_duration * abs(offset)));
last_user_activity = 0;
}