-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMultiControler.java
136 lines (115 loc) · 3.36 KB
/
MultiControler.java
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package bomber;
import java.awt.event.KeyListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;
public class MultiControler implements Control{
private KeyControl kl;
private GameControl gl;
private ArrayList<Control> profiles=new ArrayList<Control>();
private ArrayList<Integer> profilesID=new ArrayList<Integer>();
public void rescan() {
gl.rescan();
}
public String getControllerName(int i) {
return gl.getDevice(i);
}
public MultiControler(String propertiesFile) {
kl=new KeyControl();
gl=new GameControl();
FileInputStream input =null;
Properties properties=null;
try {
input=new FileInputStream(propertiesFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
properties = new Properties();
properties.load(input);
} catch (IOException e) {
e.printStackTrace();
}
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
//add profile to keyListener
int keyProf=Integer.parseInt(properties.getProperty("KEYPROFILES"));
for(int i=0;i<keyProf;i++) {
String file=properties.getProperty("KEYPROF"+i);
if(!file.isEmpty())
if(i==0)
kl.setProfile(0, file);//special case if 0
else
kl.addProfile(file);
}
//setup profiles
int Nprofiles=Integer.parseInt(properties.getProperty("PROFILES"));
for(int i=0;i<Nprofiles;i++) {
//System.out.println(i);
String type=properties.getProperty("P"+i+"TYPE");
int id=Integer.parseInt(properties.getProperty("P"+i));
profiles.add(type.equals("KEY")?kl:gl);
profilesID.add(id);
}
}
public MultiControler(Properties properties) {
kl=new KeyControl();
gl=new GameControl();
//add profile to keyListener
int keyProf=Integer.parseInt(properties.getProperty("KEYPROFILES"));
for(int i=0;i<keyProf;i++) {
String file=properties.getProperty("KEYPROF"+i);
if(!file.isEmpty())
if(i==0)
kl.setProfile(0, file);//special case if 0
else
kl.addProfile(file);
}
//setup profiles
int Nprofiles=Integer.parseInt(properties.getProperty("PROFILES"));
for(int i=0;i<Nprofiles;i++) {
//System.out.println(i);
String type=properties.getProperty("P"+i+"TYPE");
int id=Integer.parseInt(properties.getProperty("P"+i));
profiles.add(type.equals("KEY")?kl:gl);
profilesID.add(id);
}
}
public KeyListener getKeyListener() {
return kl;
}
public int MovementX() {
return MovementX(0);
}
public int MovementY() {
return MovementY(0);
}
public boolean action() {
return action(0);
}
@Override
public int MovementX(int profile) {
return profiles.get(profile).MovementX(profilesID.get(profile));
}
@Override
public int MovementY(int profile) {
return profiles.get(profile).MovementY(profilesID.get(profile));
}
@Override
public boolean action(int profile) {
return profiles.get(profile).action(profilesID.get(profile));
}
@Override
public boolean pauseActivate() {
return kl.pauseActivate()||gl.pauseActivate();
}
@Override
public void updateControl() {
gl.updateControl();
}
}