• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。


Commit MetaInfo

Revision242 (tree)
Time2020-05-04 03:15:04
Authorxops-mikan

Log Message

スクロールバー操作時の挙動を改善

Change Summary

Incremental Difference

--- trunk/gui-object.cpp (revision 241)
+++ trunk/gui-object.cpp (revision 242)
@@ -88,7 +88,7 @@
8888 knob_height = (float)h / totalitems * showtems;
8989 knob_scale = ((float)h - knob_height) / (totalitems - showtems);
9090 }
91- knob_y = (int)(knob_scale * scrollitem);
91+ knob_y = (int)Round(knob_scale * scrollitem);
9292 mouse_mode = 0;
9393 }
9494
@@ -150,6 +150,10 @@
150150 //! @param scroll_y y方向のスクロール量
151151 void ScrollbarObject::Input(int mouse_x, int mouse_y, bool mouse_click, int scroll_y)
152152 {
153+ //mouse_mode = 0 : マウスカーソルがスクロールバーのエリア外
154+ //mouse_mode = 1 : マウスカーソルがスクロールバーに乗っている
155+ //mouse_mode = 2 : マウスカーソルがスクロールバーをクリックしている
156+
153157 //スクロールバーの操作判定
154158 if( mouse_mode == 2 ){
155159 if( mouse_click == false ){
@@ -178,12 +182,12 @@
178182 if( knob_y < 0 ){ knob_y = 0; }
179183 if( knob_y > (height - (int)knob_height) ){ knob_y = (height - (int)knob_height); }
180184
181- scrollitem = (int)((float)knob_y / knob_scale);
185+ scrollitem = (int)Round((float)knob_y / knob_scale);
182186 if( scrollitem < 0 ){ scrollitem = 0; }
183187 if( scrollitem > (totalitems - showtems) ){ scrollitem = (totalitems - showtems); }
184188 }
185189 else{
186- knob_y = (int)(knob_scale * scrollitem);
190+ knob_y = (int)Round(knob_scale * scrollitem);
187191 }
188192 }
189193
--- trunk/window.cpp (revision 241)
+++ trunk/window.cpp (revision 242)
@@ -351,6 +351,14 @@
351351 //return x%num;
352352 }
353353
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+
354362 #ifdef ENABLE_PATH_DELIMITER_SLASH
355363 //! @brief パス区切り文字を変換
356364 //! @param *str ファイルパスのポインタ
--- trunk/window.h (revision 241)
+++ trunk/window.h (revision 242)
@@ -77,6 +77,7 @@
7777 void GetTimeName(char *str);
7878 void InitRand();
7979 int GetRand(int num);
80+float Round(float r);
8081
8182 #ifdef ENABLE_PATH_DELIMITER_SLASH
8283 char* ChangePathDelimiter(char *str);