-
Notifications
You must be signed in to change notification settings - Fork 2
/
GameView.java
52 lines (43 loc) · 1.41 KB
/
GameView.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
package frontend.ui.run;
import static com.google.common.base.Preconditions.checkState;
import static common.logging.AppLogger.logMethod;
import static frontend.ui.run.GameThread.ThreadState.STATE_TERMINATED;
import android.content.Context;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* @author sfraim
*/
public class GameView extends SurfaceView implements SurfaceHolder.Callback {
private GameThread gameThread;
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
logMethod();
SurfaceHolder holder = getHolder();
holder.addCallback(this);
this.gameThread = new GameThread(holder, this);
}
public GameThread getGameThread() {
return gameThread;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
logMethod();
checkState(!gameThread.isAlive(), "The GameThread should not be alive when the surface is called."
+ "is created. State was " + gameThread.getGameThreadState());
if (gameThread.getGameThreadState() == STATE_TERMINATED) {
gameThread = new GameThread(getHolder(), this);
}
gameThread.startGameThread();
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
logMethod();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
logMethod();
gameThread.terminateGameThread();
}
}