-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.cpp
More file actions
69 lines (60 loc) · 2.13 KB
/
Copy pathconfig.cpp
File metadata and controls
69 lines (60 loc) · 2.13 KB
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
#include "config.h"
#include <SDL2/SDL.h>
EmulatorConfig::EmulatorConfig(){
ops_mult = 2;
layout[0] = {"A", SDL_SCANCODE_A};
layout[1] = {"B", SDL_SCANCODE_S};
layout[2] = {"SLCT", SDL_SCANCODE_Q};
layout[3] = {"STRT", SDL_SCANCODE_W};
layout[4] = {"U", SDL_SCANCODE_UP};
layout[5] = {"D", SDL_SCANCODE_DOWN};
layout[6] = {"L", SDL_SCANCODE_LEFT};
layout[7] = {"R", SDL_SCANCODE_RIGHT};
layout[8] = {"SPEED_CHANGE", SDL_SCANCODE_LCTRL};
layout[9] = {"SVSTATE_SV", SDL_SCANCODE_K};
layout[10] = {"SVSTATE_LD", SDL_SCANCODE_L};
}
SDL_Scancode string_to_scancode(std::string keyname){
return SDL_GetScancodeFromName(keyname.c_str());
}
EmulatorConfig::EmulatorConfig(std::string filename){
// Defaults
ops_mult = 2;
layout[0] = {"A", SDL_SCANCODE_A};
layout[1] = {"B", SDL_SCANCODE_S};
layout[2] = {"SELECT", SDL_SCANCODE_Q};
layout[3] = {"START", SDL_SCANCODE_W};
layout[4] = {"U", SDL_SCANCODE_UP};
layout[5] = {"D", SDL_SCANCODE_DOWN};
layout[6] = {"L", SDL_SCANCODE_LEFT};
layout[7] = {"R", SDL_SCANCODE_RIGHT};
layout[8] = {"SPEED_CHANGE", SDL_SCANCODE_LCTRL};
layout[9] = {"SVSTATE_SV", SDL_SCANCODE_K};
layout[10] = {"SVSTATE_LD", SDL_SCANCODE_L};
std::ifstream ifs (filename, std::ifstream::binary);
std::string line;
while(std::getline(ifs, line)){
std::string token;
std::stringstream linestream(line);
if(std::getline(linestream, token, ' ')){
for(int i = 0; i < 9; i++){
if(token != layout[i].name){
continue;
}
if(!std::getline(linestream, token, '\r')){
break;
}
SDL_Scancode key = string_to_scancode(token);
if(key != SDL_SCANCODE_UNKNOWN){
layout[i].key = key;
}
break;
}
if(token == "SPEED_MULT"){
if(std::getline(linestream, token, '\r')){
ops_mult = std::atof(token.c_str());
}
}
}
}
}