package
com.mycompany.framework;
import
org.Game.GameState;
import
android.R.color;
import
android.content.Context;
import
android.graphics.Canvas;
import
android.graphics.Color;
import
android.graphics.Paint;
import
android.view.KeyEvent;
import
android.view.MotionEvent;
import
android.view.SurfaceHolder;
import
android.view.SurfaceView;
public
class
GameView
extends
SurfaceView
implements
SurfaceHolder.Callback{
private
GameViewThread m_thread;
private
IState m_state;
int
Width,Height;
int
x, y;
String str;
public
void
setWindowSize(
int
w,
int
h){
Width = w;
Height = h;
}
public
GameView(Context context,
int
w,
int
h) {
super
(context);
setFocusable(
true
);
AppManager.getInstance().setGameView(
this
);
AppManager.getInstance().setResources(getResources());
AppManager.getInstance().setSize(getWidth(), getHeight());
GameState gamestate = GameState.getInstance();
ChangeGameState(gamestate);
gamestate.setWindowSize(w, h);
getHolder().addCallback(
this
);
m_thread =
new
GameViewThread(getHolder(),
this
);
getHolder().setFixedSize(getWidth(),getHeight());
}
@Override
public
void
onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
m_state.Render(canvas);
}
public
void
Update() {
m_state.Update();
}
@Override
public
void
surfaceChanged(SurfaceHolder holder,
int
format,
int
width,
int
height) {
}
@Override
public
void
surfaceCreated(SurfaceHolder holder) {
m_thread.setRunning(
true
);
m_thread.start();
}
@Override
public
boolean
onKeyDown(
int
keyCode, KeyEvent event) {
m_state.onKeyDown(keyCode, event);
return
super
.onKeyDown(keyCode, event);
}
@Override
public
boolean
onTouchEvent(MotionEvent event) {
m_state.onTouchEvent(event);
return
super
.onTouchEvent(event);
}
public
void
ChangeGameState(IState _state){
if
(m_state!=
null
)
m_state.Destroy();
_state.Init();
m_state = _state;
}
@Override
public
void
surfaceDestroyed(SurfaceHolder arg0) {
boolean
retry =
true
;
m_thread.setRunning(
false
);
while
(retry) {
try
{
m_thread.join();
retry =
false
;
}
catch
(InterruptedException e) {
e.getStackTrace();
}
}
}
}