MCPcopy Create free account
hub / github.com/OpenDUNE/OpenDUNE / Mouse_SetMouseMode

Function Mouse_SetMouseMode

src/input/mouse.c:152–225  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

150}
151
152void Mouse_SetMouseMode(uint8 mouseMode, const char *filename)
153{
154 switch (mouseMode) {
155 default: break;
156
157 case INPUT_MOUSE_MODE_NORMAL:
158 g_mouseMode = mouseMode;
159 if (g_mouseFileID != FILE_INVALID) {
160 Input_Flags_ClearBits(INPUT_FLAG_KEY_RELEASE);
161 File_Close(g_mouseFileID);
162 g_mouseFileID = FILE_INVALID;
163 }
164 g_mouseNoRecordedValue = true;
165 break;
166
167 case INPUT_MOUSE_MODE_RECORD:
168 if (g_mouseFileID != FILE_INVALID) break;
169
170 File_Delete_Personal(filename);
171 File_Create_Personal(filename);
172
173 Tools_RandomLCG_Seed(0x1234);
174 Tools_Random_Seed(0x12344321);
175
176 g_mouseFileID = File_Open_Personal(filename, FILE_MODE_READ_WRITE);
177
178 g_mouseMode = mouseMode;
179
180 Input_Flags_SetBits(INPUT_FLAG_KEY_RELEASE);
181
182 Input_HandleInput(0x2D);
183 break;
184
185 case INPUT_MOUSE_MODE_PLAY:
186 if (g_mouseFileID == FILE_INVALID) {
187 g_mouseFileID = File_Open_Personal(filename, FILE_MODE_READ);
188 if (g_mouseFileID == FILE_INVALID) {
189 Error("Cannot open '%s', replay log is impossible.\n", filename);
190 return;
191 }
192
193 Tools_RandomLCG_Seed(0x1234);
194 Tools_Random_Seed(0x12344321);
195 }
196
197 g_mouseNoRecordedValue = true;
198
199 File_Read(g_mouseFileID, &g_mouseInputValue, 2);
200 if (File_Read(g_mouseFileID, &g_mouseRecordedTimer, 2) != 2) break;;
201
202 if ((g_mouseInputValue >= 0x41 && g_mouseInputValue <= 0x44) || g_mouseInputValue == 0x2D) {
203 /* 0x2D == '-' 0x41 == 'A' [...] 0x44 == 'D' */
204 File_Read(g_mouseFileID, &g_mouseRecordedX, 2);
205 if (File_Read(g_mouseFileID, &g_mouseRecordedY, 2) == 2) {
206 g_mouseX = g_mouseRecordedX;
207 g_mouseY = g_mouseRecordedY;
208 g_prevButtonState = 0;
209

Callers 2

GameLoop_MainFunction · 0.85
PrepareEndFunction · 0.85

Calls 12

Input_Flags_ClearBitsFunction · 0.85
File_CloseFunction · 0.85
File_Delete_PersonalFunction · 0.85
File_Create_PersonalFunction · 0.85
Tools_RandomLCG_SeedFunction · 0.85
Tools_Random_SeedFunction · 0.85
Input_Flags_SetBitsFunction · 0.85
Input_HandleInputFunction · 0.85
File_ReadFunction · 0.85
GUI_Mouse_Hide_SafeFunction · 0.85
GUI_Mouse_Show_SafeFunction · 0.85
ErrorFunction · 0.50

Tested by

no test coverage detected