Android Open Source - Hungry-Mouse Android Game






From Project

Back to project page Hungry-Mouse.

License

The source code is released under:

MIT License

If you think the Android project Hungry-Mouse 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

//Name:   AndroidGame.java
//Purpose:  the most important class that holds everything together
//w  w w.  j  a v  a  2 s .  c o m
package com.hungry.mouse.framework.implementation;
import com.hungry.mouse.framework.Audio;
import com.hungry.mouse.framework.FileIO;
import com.hungry.mouse.framework.Game;
import com.hungry.mouse.framework.Graphics;
import com.hungry.mouse.framework.Input;
import com.hungry.mouse.framework.Screen;

//android libraries stored in SDK platform
import android.app.Activity;//important part of an application's overall lifecycle
import android.content.Context;// allows access to application-specific resources and classes
import android.content.res.Configuration;//all device configuration information
import android.graphics.Bitmap;//make use of bitmap operations
import android.graphics.Bitmap.Config;//describes how pixels are stored
import android.os.Bundle;//mapping from String values to various Parcelable types
import android.os.PowerManager;//control the power state of device
import android.os.PowerManager.WakeLock;//indicate that application needs to have the device stay on. Request in manifest
import android.view.Window;//window look and behavior policy
import android.view.WindowManager;//interface that apps use to talk to the window manager



public abstract class AndroidGame extends Activity implements Game {
    AndroidFastRenderView renderView;
    Graphics graphics;
    Audio audio;
    Input input;
    FileIO fileIO;
    Screen screen;
    WakeLock wakeLock;

    //
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
        
        //check current orientation of device and set width and height dimensions
        int frameBufferWidth = isPortrait ? 480: 800;
        int frameBufferHeight = isPortrait ? 800: 480;
        Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
                frameBufferHeight, Config.RGB_565);//rgb565 no waste to much memory, drawing is faster
        
        //adjust everything to device`s aspect ratio
        float scaleX = (float) frameBufferWidth
                / getWindowManager().getDefaultDisplay().getWidth();
        float scaleY = (float) frameBufferHeight
                / getWindowManager().getDefaultDisplay().getHeight();
        
        //instantiate the helper classes that will run in the background
        renderView = new AndroidFastRenderView(this, frameBuffer);
        graphics = new AndroidGraphics(getAssets(), frameBuffer);
        fileIO = new AndroidFileIO(this);
        audio = new AndroidAudio(this);
        input = new AndroidInput(this, renderView, scaleX, scaleY);
        screen = getInitScreen();
        setContentView(renderView);
        
        //keep screen from turn off, to save battery
        PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyGame");
    }

    @Override
    public void onResume() {
  
        super.onResume();
        
        //current screen is informed that the game/activity resumed
        wakeLock.acquire();
        screen.resume();
        
        //resume the rendering thread
        renderView.resume();
    }

    @Override
    public void onPause() {
      
        super.onPause();
        
        //release the wakelock
        wakeLock.release();
        
        //rendering thread is terminated
        renderView.pause();
        
        //after the rendering thread is terminated,is allowed to pause screen
        screen.pause();
        
        //clean what is is necessary
        if (isFinishing())
            screen.dispose();
    }
    
    //the following 4 methods just return the respective instances to the caller
    @Override
    public Input getInput() {
        return input;
    }

    @Override
    public FileIO getFileIO() {
        return fileIO;
    }

    @Override
    public Graphics getGraphics() {
        return graphics;
    }

    @Override
    public Audio getAudio() {
        return audio;
    }

    //setter//
    @Override
    public void setScreen(Screen screen) {
      
      //do null checking, null-screen is not allowed
        if (screen == null)
            throw new IllegalArgumentException("Screen must not be null");
        
        //pause the current screen and dispose to make space for the new screen
        this.screen.pause();
        this.screen.dispose();
        
        //resume screen and update when the delta time is ZERO
        screen.resume();
        screen.update(0);
        
        //set screen member to the new screen
        this.screen = screen;
    }
    //getter//
    
    //simply return the current active screen
    public Screen getCurrentScreen() {

      return screen;
    }
}




Java Source Code List

com.hungry.mouse.framework.Audio.java
com.hungry.mouse.framework.FileIO.java
com.hungry.mouse.framework.Game.java
com.hungry.mouse.framework.Graphics.java
com.hungry.mouse.framework.Image.java
com.hungry.mouse.framework.Input.java
com.hungry.mouse.framework.Music.java
com.hungry.mouse.framework.Pool.java
com.hungry.mouse.framework.Screen.java
com.hungry.mouse.framework.Sound.java
com.hungry.mouse.framework.implementation.AccelerometerHandler.java
com.hungry.mouse.framework.implementation.AndroidAudio.java
com.hungry.mouse.framework.implementation.AndroidFastRenderView.java
com.hungry.mouse.framework.implementation.AndroidFileIO.java
com.hungry.mouse.framework.implementation.AndroidGame.java
com.hungry.mouse.framework.implementation.AndroidGraphics.java
com.hungry.mouse.framework.implementation.AndroidImage.java
com.hungry.mouse.framework.implementation.AndroidInput.java
com.hungry.mouse.framework.implementation.AndroidMusic.java
com.hungry.mouse.framework.implementation.AndroidSound.java
com.hungry.mouse.framework.implementation.MultiTouchHandler.java
com.hungry.mouse.framework.implementation.SingleTouchHandler.java
com.hungry.mouse.framework.implementation.TouchHandler.java
com.hungry.mouse.main.AboutScreen.java
com.hungry.mouse.main.Animation.java
com.hungry.mouse.main.Assets.java
com.hungry.mouse.main.Background.java
com.hungry.mouse.main.Bomb.java
com.hungry.mouse.main.Cheese.java
com.hungry.mouse.main.Enemy.java
com.hungry.mouse.main.GameScreen.java
com.hungry.mouse.main.HelpScreen1.java
com.hungry.mouse.main.HelpScreen2.java
com.hungry.mouse.main.HelpScreen3.java
com.hungry.mouse.main.HelpScreen4.java
com.hungry.mouse.main.Kamikazi.java
com.hungry.mouse.main.LevelSelectorScreen.java
com.hungry.mouse.main.LoadingScreen.java
com.hungry.mouse.main.MainMenuScreen.java
com.hungry.mouse.main.Mouse.java
com.hungry.mouse.main.Projectile.java
com.hungry.mouse.main.Rewards.java
com.hungry.mouse.main.SampleGame.java
com.hungry.mouse.main.Settings.java
com.hungry.mouse.main.Sign.java
com.hungry.mouse.main.SplashLoadingScreen.java
com.hungry.mouse.main.Tile.java