TretrisView.java :  » Graphics-3D-2D-OpenGL » tretris » com » google » code » tretris » rendering » Android Open Source

Android Open Source » Graphics 3D 2D OpenGL » tretris 
tretris » com » google » code » tretris » rendering » TretrisView.java
package com.google.code.tretris.rendering;

import java.util.List;

import android.content.Context;
import android.content.SharedPreferences;
import android.opengl.GLSurfaceView;
import android.util.Log;
import android.view.MotionEvent;

import com.google.code.tretris.SettingsDialog;
import com.google.code.tretris.Tretris;
import com.google.code.tretris.common.WKC;
import com.google.code.tretris.events.MoveEvent;
import com.google.code.tretris.events.UpdateBoardEvent;

public class TretrisView extends GLSurfaceView {

  private static final String LOG_TAG = TretrisView.class.getName();

  private final TretrisRenderer renderer;

  public interface MovementListener {
    public void onMovement(MoveEvent moveEvent);
  }
  
  private final String userId;
  private float lastX;
  private boolean rotate = false;
  private MovementListener movementListener;
  private final Shape activeShape;

  public TretrisView(Context context) {
    super(context);
    movementListener = (Tretris)context;

    SharedPreferences prefs = context.getSharedPreferences(
        SettingsDialog.PREFS_NAME, 0);
    userId = prefs.getString(SettingsDialog.USER_ID, "");
    //Scene scene = new Scene(userId);
    activeShape = new Shape();
    renderer = new TretrisRenderer(activeShape);
    setRenderer(renderer);
  }

  @Override
  public boolean onTouchEvent(final MotionEvent event) {

    final float x = event.getX();
    final float deltaX;    
    switch (event.getAction()) {    
    case MotionEvent.ACTION_MOVE:
      rotate = false;
      deltaX = lastX - x;      
      send(movement(deltaX));
      break;
    case MotionEvent.ACTION_DOWN:      
      lastX = x;
      rotate = true;
      return true;
    case MotionEvent.ACTION_UP:            
      if (rotate) {
        send(rotation());
      } else {
        deltaX = lastX - x;
        send(movement(deltaX));
      }
      rotate = false;
      break;
    default:
      break;
    }
    
    lastX = x;
    return true;
  }
  
  private void send(final MoveEvent event) {
    queueEvent(new Runnable() {
      public void run() {
        movementListener.onMovement(event);
      }
    });    
  }
  
  private MoveEvent movement(final float deltaX) {
    String user = Integer.toString(WKC.GRAPHICAL_CLIENT_IPC_UID);
    return (deltaX > 0) ? MoveEvent.left(user) : MoveEvent.right(user);
  }

  private MoveEvent rotation() {
    String user = Integer.toString(WKC.GRAPHICAL_CLIENT_IPC_UID);
    return MoveEvent.rotate(user);
    
  }
  public void onGameUpdate(final List<UpdateBoardEvent> events) {
    queueEvent(new Runnable() {
      public void run() {
        renderer.update(events);
      }
    });
  }

  public void onGameOver() {

  }  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.