]> icculus.org git repositories - divverent/nexuiz.git/blob - data/source/base/cursor.qc
restructure
[divverent/nexuiz.git] / data / source / base / cursor.qc
1 // NG-Menu
2 // base/cursor.qc
3
4 void() Cursor_Init =
5 {
6         // default cursor (embedded into DP): ui/mousepointer.tga
7         if( Gfx_Precache( CURSOR_PATH ) )
8                 Cursor_Current = CURSOR_PATH;
9         else {
10                 Cursor_Current = "ui/mousepointer.tga";
11                 Gfx_Precache( Cursor_Current );
12         }
13
14         Cursor_Position = Cursor_Relative = '0 0 0';
15
16         Cursor_Animation = Cursor_DefaultAnimation;
17 };
18
19 void() Cursor_Quit =
20 {
21 };
22
23 void() Cursor_Display =
24 {
25         setmousetarget( MT_MENU );
26 };
27
28 void() Cursor_Hide =
29 {
30         setmousetarget( MT_CLIENT );
31 };
32
33 void() Cursor_Draw =
34 {
35         local vector lPos;
36         local vector lSize;
37
38         lSize = Gfx_GetImageSize( Cursor_Current ) * Cursor_Scale;
39         lPos_x = Cursor_Position_x + lSize_x * Cursor_Offset_x;
40         lPos_y = Cursor_Position_y + lSize_y * Cursor_Offset_y;
41         lPos_z = 0.0;
42
43         Gfx_DrawPic( lPos, Cursor_Current, lSize, Cursor_Color, Cursor_Transparency, Cursor_Flag );
44 };
45
46 void() Cursor_Update =
47 {
48         local vector lRelPos;
49
50         lRelPos = getmousepos();
51         lRelPos = Gfx_ConToMen( lRelPos );
52
53         Cursor_Relative_x = lRelPos_x * Cursor_Speed_x;
54         Cursor_Relative_y = lRelPos_y * Cursor_Speed_y;
55
56         Cursor_Relative_x = bound( 0.0, Cursor_Position_x + Cursor_Relative_x, Gfx_Menu_Width ) - Cursor_Position_x;
57         Cursor_Relative_y = bound( 0.0, Cursor_Position_y + Cursor_Relative_y, Gfx_Menu_Height ) - Cursor_Position_y;
58
59         Cursor_Position_x = Cursor_Position_x + Cursor_Relative_x;
60         Cursor_Position_y = Cursor_Position_y + Cursor_Relative_y;
61         Cursor_Position_z = 0.0;
62
63         Cursor_Animation();
64 };
65
66 void() Cursor_DefaultAnimation =
67 {
68 };
69
70 void( vector pRelPos, string pText, vector pScale, vector pColor, float pAlpha, float pDrawFlag ) Cursor_PrintInfo =
71 {
72         local vector lPosition;
73         local vector lSize;
74
75         lSize = Gfx_GetImageSize( Cursor_Current ) * Cursor_Scale;
76
77         if( pRelPos_x != 0 ) {
78                 if( pRelPos_x > 0 ) // align it on the left
79                         lPosition_x = Cursor_Position_x + lSize_x * (Cursor_Offset_x + 0.5 + pRelPos_x / 2) ;
80                 else if( pRelPos_x < 0 ) // align it on the right
81                         lPosition_x = Cursor_Position_x + lSize_x * (Cursor_Offset_x + 0.5 + pRelPos_x / 2) -
82                                         pScale_x * strlen( pText );
83                 lPosition_y = Cursor_Position_y + lSize_y * (Cursor_Offset_y + 0.5 + pRelPos_y / 2 ) - pScale_y / 2;
84         } else
85                 lPosition_x = Cursor_Position_x + lSize_x * (Cursor_Offset_x + 0.5) -
86                                 pScale_x * strlen( pText ) / 2;
87
88         if( pRelPos_y != 0 ) {
89                 if( pRelPos_y > 0 )
90                         lPosition_y = Cursor_Position_y + lSize_y * (Cursor_Offset_y + 0.5 - pRelPos_y / 2) - pScale_y;
91                 else if( pRelPos_y < 0 )
92                         lPosition_y = Cursor_Position_y + lSize_y * (Cursor_Offset_y + 0.5 - pRelPos_y / 2);
93         }
94
95         Gfx_DrawString( lPosition, pText, pScale, pColor, pAlpha, pDrawFlag );
96 };