1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#include "game/gltron.h"
#include "game/timesystem.h"
void GameMode_Idle(void) {
Sound_idle();
Time_Idle();
if(game2->time.dt == 0)
return;
Game_Idle();
Video_Idle();
Input_Idle();
Scripting_Idle();
SystemPostRedisplay();
}
void enterGame(void) { /* called when game mode is entered */
updateSettingsCache();
SystemHidePointer();
SystemWarpPointer(MOUSE_ORIG_X, MOUSE_ORIG_Y);
game2->time.offset = SystemGetElapsedTime() - game2->time.current;
Audio_EnableEngine();
// disable booster and cam offset
{
int i;
for(i = 0; i < game->players; i++) {
game->player[i].data->boost_enabled = 0;
game->player[i].camera->movement[CAM_PHI_OFFSET] = 0;
}
}
/* reset pause flag */
if (game->pauseflag != PAUSE_GAME_FINISHED) {
game->pauseflag = PAUSE_GAME_RUNNING;
}
/* fprintf(stderr, "init game\n"); */
}
void exitGame(void) {
Audio_DisableEngine();
/* fprintf(stderr, "exit game\n"); */
}
void gameMouseMotion(int x, int y) {
if(x != MOUSE_ORIG_X || y != MOUSE_ORIG_Y) {
gInput.mousex += x - MOUSE_ORIG_X;
gInput.mousey += y - MOUSE_ORIG_Y;
/* fprintf(stderr, "Mouse: dx: %d\tdy: %d\n",
x - MOUSE_ORIG_Y, y - MOUSE_ORIG_Y); */
/*
cam_phi += - (x - MOUSE_ORIG_X) * MOUSE_CX;
cam_chi += (y - MOUSE_ORIG_Y) * MOUSE_CY;
if(cam_chi < CAM_CHI_MIN) cam_chi = CAM_CHI_MIN;
if(cam_chi > CAM_CHI_MAX) cam_chi = CAM_CHI_MAX;
*/
SystemWarpPointer(MOUSE_ORIG_X, MOUSE_ORIG_Y);
}
}
void gameMouse(int buttons, int state, int x, int y) {
if(state == SYSTEM_MOUSEPRESSED) {
if(buttons == SYSTEM_MOUSEBUTTON_LEFT) gInput.mouse1 = 1;
if(buttons == SYSTEM_MOUSEBUTTON_RIGHT) gInput.mouse2 = 1;
} else if(state == SYSTEM_MOUSERELEASED) {
if(buttons == SYSTEM_MOUSEBUTTON_LEFT) gInput.mouse1 = 0;
if(buttons == SYSTEM_MOUSEBUTTON_RIGHT) gInput.mouse2 = 0;
}
/*
if(getSettingi("camType") == CAM_TYPE_MOUSE)
if(state == SYSTEM_MOUSEPRESSED) {
if(buttons == SYSTEM_MOUSEBUTTON_LEFT) {
cam_r -= CAM_DR;
if(cam_r < CAM_R_MIN) cam_r = CAM_R_MIN;
} else if(buttons == SYSTEM_MOUSEBUTTON_RIGHT) {
cam_r += CAM_DR;
if(cam_r > CAM_R_MAX) cam_r = CAM_R_MAX;
}
}
*/
/* fprintf(stderr, "new cam_r: %.2f\n", cam_r); */
}
Callbacks gameCallbacks = {
displayGame, GameMode_Idle, keyGame, enterGame, exitGame, initGLGame, gameMouse, gameMouseMotion, "game"
};
|