]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/base/cursor.qc
cleaned up teamplay damage checks and fixed teamplay 4 damage to
[divverent/nexuiz.git] / data / qcsrc / menu / 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         local float lMenuMouseSpeed;
50         lMenuMouseSpeed = cvar("scmenu_mouse_speed");
51         if(lMenuMouseSpeed == 0)
52                 lMenuMouseSpeed = 1;
53         else
54                 lMenuMouseSpeed = bound(0.7, lMenuMouseSpeed, 3.0);
55
56         lRelPos = getmousepos();
57         lRelPos = Gfx_ConToMen( lRelPos );
58
59         Cursor_Relative_x = lRelPos_x * Cursor_Speed_x * lMenuMouseSpeed;
60         Cursor_Relative_y = lRelPos_y * Cursor_Speed_y * lMenuMouseSpeed;
61
62         Cursor_Relative_x = bound( 0.0, Cursor_Position_x + Cursor_Relative_x, Gfx_Menu_Width ) - Cursor_Position_x;
63         Cursor_Relative_y = bound( 0.0, Cursor_Position_y + Cursor_Relative_y, Gfx_Menu_Height ) - Cursor_Position_y;
64
65         Cursor_Position_x = Cursor_Position_x + Cursor_Relative_x;
66         Cursor_Position_y = Cursor_Position_y + Cursor_Relative_y;
67         Cursor_Position_z = 0.0;
68
69         Cursor_Animation();
70 };
71
72 void() Cursor_DefaultAnimation =
73 {
74 };
75
76 void( vector pRelPos, string pText, vector pScale, vector pColor, float pAlpha, float pDrawFlag ) Cursor_PrintInfo =
77 {
78         local vector lPosition;
79         local vector lSize;
80
81         lSize = Gfx_GetImageSize( Cursor_Current ) * Cursor_Scale;
82
83         if( pRelPos_x != 0 ) {
84                 if( pRelPos_x > 0 ) // align it on the left
85                         lPosition_x = Cursor_Position_x + lSize_x * (Cursor_Offset_x + 0.5 + pRelPos_x / 2) ;
86                 else if( pRelPos_x < 0 ) // align it on the right
87                         lPosition_x = Cursor_Position_x + lSize_x * (Cursor_Offset_x + 0.5 + pRelPos_x / 2) -
88                                         pScale_x * strlen( pText );
89                 lPosition_y = Cursor_Position_y + lSize_y * (Cursor_Offset_y + 0.5 + pRelPos_y / 2 ) - pScale_y / 2;
90         } else
91                 lPosition_x = Cursor_Position_x + lSize_x * (Cursor_Offset_x + 0.5) -
92                                 pScale_x * strlen( pText ) / 2;
93
94         if( pRelPos_y != 0 ) {
95                 if( pRelPos_y > 0 )
96                         lPosition_y = Cursor_Position_y + lSize_y * (Cursor_Offset_y + 0.5 - pRelPos_y / 2) - pScale_y;
97                 else if( pRelPos_y < 0 )
98                         lPosition_y = Cursor_Position_y + lSize_y * (Cursor_Offset_y + 0.5 - pRelPos_y / 2);
99         }
100
101         Gfx_DrawString( lPosition, pText, pScale, pColor, pAlpha, pDrawFlag );
102 };