X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 242 (tree) |
|---|---|
| Time | 2020-05-04 03:15:04 |
| Author | |
スクロールバー操作時の挙動を改善
| @@ -88,7 +88,7 @@ | ||
| 88 | 88 | knob_height = (float)h / totalitems * showtems; |
| 89 | 89 | knob_scale = ((float)h - knob_height) / (totalitems - showtems); |
| 90 | 90 | } |
| 91 | - knob_y = (int)(knob_scale * scrollitem); | |
| 91 | + knob_y = (int)Round(knob_scale * scrollitem); | |
| 92 | 92 | mouse_mode = 0; |
| 93 | 93 | } |
| 94 | 94 |
| @@ -150,6 +150,10 @@ | ||
| 150 | 150 | //! @param scroll_y y方向のスクロール量 |
| 151 | 151 | void ScrollbarObject::Input(int mouse_x, int mouse_y, bool mouse_click, int scroll_y) |
| 152 | 152 | { |
| 153 | + //mouse_mode = 0 : マウスカーソルがスクロールバーのエリア外 | |
| 154 | + //mouse_mode = 1 : マウスカーソルがスクロールバーに乗っている | |
| 155 | + //mouse_mode = 2 : マウスカーソルがスクロールバーをクリックしている | |
| 156 | + | |
| 153 | 157 | //スクロールバーの操作判定 |
| 154 | 158 | if( mouse_mode == 2 ){ |
| 155 | 159 | if( mouse_click == false ){ |
| @@ -178,12 +182,12 @@ | ||
| 178 | 182 | if( knob_y < 0 ){ knob_y = 0; } |
| 179 | 183 | if( knob_y > (height - (int)knob_height) ){ knob_y = (height - (int)knob_height); } |
| 180 | 184 | |
| 181 | - scrollitem = (int)((float)knob_y / knob_scale); | |
| 185 | + scrollitem = (int)Round((float)knob_y / knob_scale); | |
| 182 | 186 | if( scrollitem < 0 ){ scrollitem = 0; } |
| 183 | 187 | if( scrollitem > (totalitems - showtems) ){ scrollitem = (totalitems - showtems); } |
| 184 | 188 | } |
| 185 | 189 | else{ |
| 186 | - knob_y = (int)(knob_scale * scrollitem); | |
| 190 | + knob_y = (int)Round(knob_scale * scrollitem); | |
| 187 | 191 | } |
| 188 | 192 | } |
| 189 | 193 |
| @@ -351,6 +351,14 @@ | ||
| 351 | 351 | //return x%num; |
| 352 | 352 | } |
| 353 | 353 | |
| 354 | +//! @brief 四捨五入 | |
| 355 | +//! @param r 値 | |
| 356 | +//! @return 値 | |
| 357 | +float Round(float r) | |
| 358 | +{ | |
| 359 | + return (r > 0.0f) ? floor(r + 0.5f) : ceil(r - 0.5f); | |
| 360 | +} | |
| 361 | + | |
| 354 | 362 | #ifdef ENABLE_PATH_DELIMITER_SLASH |
| 355 | 363 | //! @brief パス区切り文字を変換 |
| 356 | 364 | //! @param *str ファイルパスのポインタ |
| @@ -77,6 +77,7 @@ | ||
| 77 | 77 | void GetTimeName(char *str); |
| 78 | 78 | void InitRand(); |
| 79 | 79 | int GetRand(int num); |
| 80 | +float Round(float r); | |
| 80 | 81 | |
| 81 | 82 | #ifdef ENABLE_PATH_DELIMITER_SLASH |
| 82 | 83 | char* ChangePathDelimiter(char *str); |