/* * window.cpp * * Created on: 2011/07/14 * Author: N2885 */ #include "window.h" u16 waitTime = 40; u16 waitAcceleTime = 5; u16 n = 4; void Window::Initialize(void) { mIndex = 0; mOriginIndex = 0; mSelectPos = 0; mCursorCounter = 0; mAcceleCounter = 0; isSelectedWindow = false; } //カーソル上下・押しっぱなしで加速 void Window::UpDown(nn::hid::PadStatus& status) { if(mCursorCounter == 0) { if(status.hold & nn::hid::BUTTON_UP || status.hold & nn::hid::BUTTON_DOWN) { if(status.hold & nn::hid::BUTTON_UP) { mSelectPos--; } else { mSelectPos++; } mAcceleCounter++; for(u16 i = 1; i < n; i++) { if( mAcceleCounter >= waitAcceleTime * ( i - 1 ) && mAcceleCounter <= waitAcceleTime * i ) { mCursorCounter = waitTime/ i; i = n; } else { mCursorCounter = waitTime / n; } } } else { mAcceleCounter = 0; } } else { mCursorCounter--; } } static u16 Min(u16 a, u16 b) { return (a > b) ? b : a; } void Window::Update(u16 fileSize) { if( mSelectPos < 0 ) { if( mOriginIndex == 0 ) { mSelectPos = Min(fileSize, mScreenHeight) - 1; mOriginIndex = fileSize - Min(fileSize,mScreenHeight); } else { mSelectPos = 0; mOriginIndex--; } } else if( mSelectPos >= Min(fileSize, mScreenHeight) ) { if( mOriginIndex < fileSize - mScreenHeight) { mSelectPos = mScreenHeight - 1; mOriginIndex++; } else { mSelectPos = 0; mOriginIndex = 0; } } mIndex = mSelectPos + mOriginIndex; }