| 150 | } |
| 151 | |
| 152 | void 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 |
no test coverage detected