Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- */
- package net.obviam.walking;
- import net.obviam.walking.model.ElaineAnimated;
- import android.content.Context;
- import android.content.res.Resources;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Rect;
- import android.graphics.drawable.BitmapDrawable;
- import android.util.Log;
- import android.view.MotionEvent;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- /**
- * @author impaler
- * This is the main surface that handles the ontouch events and draws
- * the image to the screen.
- */
- public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback {
- private static final String TAG = MainGamePanel.class.getSimpleName();
- private MainThread thread;
- private ElaineAnimated elaine;
- private Bitmap background;
- // the fps to be displayed
- private String avgFps;
- public void setAvgFps(String avgFps) {
- this.avgFps = avgFps;
- }
- public MainGamePanel(Context context) {
- super(context);
- // adding the callback (this) to the surface holder to intercept events
- getHolder().addCallback(this);
- // create Elaine and load bitmap
- elaine = new ElaineAnimated(
- BitmapFactory.decodeResource(getResources(), R.drawable.guybrush3)
- , 0, 0 // initial position
- , 30, 30 // width and height of sprite
- , 7, 6); // FPS and number of frames in the animation
- Resources res = getResources();
- background = BitmapFactory.decodeResource(res, R.drawable.background);
- // create the game loop thread
- thread = new MainThread(getHolder(), this);
- // make the GamePanel focusable so it can handle events
- setFocusable(true);
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- // at this point the surface is created and
- // we can safely start the game loop
- thread.setRunning(true);
- thread.start();
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- Log.d(TAG, "Surface is being destroyed");
- // tell the thread to shut down and wait for it to finish
- // this is a clean shutdown
- boolean retry = true;
- while (retry) {
- try {
- thread.join();
- retry = false;
- } catch (InterruptedException e) {
- // try again shutting down the thread
- }
- }
- Log.d(TAG, "Thread was shut down cleanly");
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- // handle touch
- }
- return true;
- }
- public void render(Canvas canvas) {
- canvas.drawColor(Color.BLACK);
- canvas.drawBitmap(background, null, new Rect(0, 0, getWidth(), getHeight()), new Paint());
- elaine.draw(canvas);
- // display fps
- displayFps(canvas, avgFps);
- }
- /**
- * This is the game update method. It iterates through all the objects
- * and calls their update method if they have one or calls specific
- * engine's update method.
- */
- public void update() {
- elaine.update(System.currentTimeMillis());
- }
- private void displayFps(Canvas canvas, String fps) {
- if (canvas != null && fps != null) {
- Paint paint = new Paint();
- paint.setARGB(255, 255, 255, 255);
- canvas.drawText(fps, this.getWidth() - 50, 20, paint);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement