Android Open Source - jmjuanesFramework Game Main






From Project

Back to project page jmjuanesFramework.

License

The source code is released under:

MIT License

If you think the Android project jmjuanesFramework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package jmjuanes;
/*w ww . ja  v a  2 s . com*/
import java.util.ArrayList;

import jmjuanes.core.GameData;
import jmjuanes.core.GameFrames;
import jmjuanes.core.GameTouch;
import jmjuanes.core.GameView;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Canvas;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;

public abstract class GameMain extends Activity
{
  //Screen actual
  public String screen_actual = "";
  
  //Array de Screens
  public ArrayList<MyScreen> screen;
  
  //Screen inicial
  public String screen_loading = "";
  
  //Screen menu
  public String screen_menu = "";
  
  //View
  public GameView view;
  
  //Touch
  public GameTouch Touch;
  
  //Record
  public GameData Data;
  
  //Puntuacion
  public int score = 0;
  
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    //Constructor
    super.onCreate(savedInstanceState);
    
    //Sin titulo
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    
    //No se apague la pantalla
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    
    //Pantalla completa
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
    //Iniciamos el array de screens
    screen = new ArrayList<MyScreen>();
    
    //Inciamos el touch
    Touch = new GameTouch();
    
    //Iniciamos el record
    Data = new GameData(this);
    
    //Iniciamos el view
    view = new GameView(this, this);
    setContentView(view);
  }
  
  public void onPause()
  {
    super.onPause();
    
    //Detenemos la screen
    ScreenGetActual().Stop();
    
    //Pausamos el bucle
    ThreadStop();
  }
  
  public void ResumeView()
  {
    //Iniciamos de nuevo la screen actual
    ScreenGetActual().Resume();
    
    //Iniciamos el bucle
    ThreadStart();
  }
  
  
  //Para abrir una ventana del navegador
  public void OpenWeb(String url)
  {
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(browserIntent);
  }
  
  //Funcion que detiene el bucle
  public void ThreadStop()
  {
    //Paramos el thread
    view.ThreadStop();
  }
  
  //Funcion que inicia el bucle
  public void ThreadStart()
  {
    //Arrancamos el thread
    view.ThreadStart();
  }
  
  //Funcion que se activa al hacer touch
  @SuppressLint("ClickableViewAccessibility")
  @Override
    public boolean onTouchEvent(MotionEvent event)
  {
    //Cogemos la posicion
    int x = (int) event.getX();
    int y = (int) event.getY();
    
    //Caso de que solo haya pulsado
    if(event.getAction() == MotionEvent.ACTION_DOWN && Touch.Status() == true)
    {
      ScreenGetActual().TouchDown(x, y);
    }
    
    //Caso de que este manteniendo
    else if(event.getAction() == MotionEvent.ACTION_MOVE && Touch.Status() == true)
    {
      ScreenGetActual().TouchMove(x, y);
    }
    
    //Caso de que levante el dedo
    else if(event.getAction() == MotionEvent.ACTION_UP && Touch.Status() == true)
    {
      ScreenGetActual().TouchUp(x, y);
    }
    
    return true;
    }
  
  //Funcion que manda a dibujar a la screen correspondiente
  public void Draw(Canvas canvas) 
  {
    //Comprobamos que la screen actual no sea nula
    if(screen_actual != "")
    {
      //Mandamos a dibujar a la screen
      ScreenGetActual().Draw(canvas);
    }
  }
  
  //Clase para las screens
  class MyScreen
  {
    //Nombre de la screen
    public String name;
    
    //Screen
    public Screen screen;
    
    //Constructor
    public MyScreen(String n, Screen s)
    {
      //Guardamos el nombre de la screen
      this.name = n;
      
      //Guardamos la screen
      this.screen = s;
    }
    
    //Funcion que devuelve el nombre
    public String GetName()
    {
      return this.name;
    }
    
    //Funcion que devuelve la screen
    public Screen GetScreen()
    {
      return this.screen;
    }
  }
  
  //Funcion que crea una nueva screen
  public void ScreenCreate(String name, Screen screen)
  {
    //Lo sumamos al array
    this.screen.add(new MyScreen(name, screen));
  }
  
  //Funcion que establece la screen inicial
  public void ScreenSetLoading(String name)
  {
    //Lo guardamos
    this.screen_loading = name;
  }
  
  //Funcion que establece la screen del menu
  public void ScreenSetMainMenu(String name)
  {
    //Lo guardamos
    this.screen_menu = name;
  }
  
  //Funcion que devuelve una screen concreta
  public Screen ScreenGet(String name)
  {
    //Recorremos el array
    for(int i = 0; i < screen.size(); i++)
    {
      //Comprobamos si coincide
      if(name == screen.get(i).name)
      {
        //Lo devolvemos
        return screen.get(i).screen;
      }
    }
    
    //Devolvemos null
    return null;
  }
  
  //Funcion que devuelve la screen actual
  public Screen ScreenGetActual()
  {
    //Cogemos el actual
    return ScreenGet(screen_actual);
  }
  
  //Funcion que abre una nueva screen
  public void ScreenOpen(String name)
  {
    //Cogemos la screen actual y detenemos el bucle
    ScreenGetActual().Stop();
    
    //Detenemos el bucle
    ThreadStop();
    
    //Iniciamos la nueva screen
    screen_actual = name;
    
    //Iniciamos las variables
    ScreenGetActual().Start();
    
    //Iniciamos el bucle si estaba parado
    ThreadStart();
  }
  
  //Funcion que inicia las screens
  public abstract void Screens();
  
  //funcion que establece los frames
  public void SetFrames(int fps)
  {
    //Cogemos el tiempo necesatio
    view.thread_time = GameFrames.GetTime(fps);
  }
}




Java Source Code List

jmjuanes.Config.java
jmjuanes.GameMain.java
jmjuanes.Screen.java
jmjuanes.core.GameData.java
jmjuanes.core.GameFrames.java
jmjuanes.core.GameLoad.java
jmjuanes.core.GameThread.java
jmjuanes.core.GameTouch.java
jmjuanes.core.GameView.java
jmjuanes.util.Mathm.java
jmjuanes.util.Ui.java