From 3cca9c29f2999e79eb3a3d3872ebd45814d9279e Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 20 Feb 2014 12:09:10 +0100 Subject: [PATCH] Gamemenu intergration. --- src/mangavalk/tetris/CanvasView.java | 25 ++-- src/mangavalk/tetris/GameMenu.java | 113 ++++++++++++++++++- src/mangavalk/tetris/GamePlay.java | 2 +- src/mangavalk/tetris/GameStateInterface.java | 20 ++-- 4 files changed, 135 insertions(+), 25 deletions(-) diff --git a/src/mangavalk/tetris/CanvasView.java b/src/mangavalk/tetris/CanvasView.java index 5b87bc2..405ccbc 100644 --- a/src/mangavalk/tetris/CanvasView.java +++ b/src/mangavalk/tetris/CanvasView.java @@ -40,6 +40,7 @@ public class CanvasView extends View Gamemenu.SetActivity(activity); Gamemenu.SetCanvas(this); Gamemenu.SetPayedVersion(PayedVersion); + Gamemenu.SetGameState(GamePlay.GS_LOAD, true); Gameplay.SetActivity(activity); Gameplay.SetCanvas(this); @@ -47,13 +48,16 @@ public class CanvasView extends View Foreground = Gamemenu; + //temp + //this.gameStateChanged(GameStateInterface.GS_MENU_START); + // Game Start. First Load - ((GamePlay)Gameplay).SetStartLevel(startLevel); - ((GamePlay)Gameplay).SetGameState(GamePlay.GS_LOAD, true); + //((GamePlay)Gameplay).SetStartLevel(startLevel); + //((GamePlay)Gameplay).SetGameState(GamePlay.GS_LOAD, false); // Start Game. - if (((GamePlay)Gameplay).GetGameState() == GameStateInterface.GS_READY) - ((GamePlay)Gameplay).SetGameState(GameStateInterface.GS_START, true); + //if (((GamePlay)Gameplay).GetGameState() == GameStateInterface.GS_READY) + // ((GamePlay)Gameplay).SetGameState(GameStateInterface.GS_START, false); } @Override @@ -77,18 +81,19 @@ public class CanvasView extends View gameStateChanged(gameState); } - /*public void OnGameStateChanged(int gameState, boolean isPostBack) - { - if (isPostBack == false) - gameStateChanged(gameState); - }*/ - private void gameStateChanged(int gameState) { switch(gameState) { + case GameStateInterface.GS_MENU_START: + { + ((GamePlay)Gameplay).SetStartLevel(startLevel); + ((GamePlay)Gameplay).SetGameState(GamePlay.GS_LOAD, true); + break; + } case GameStateInterface.GS_READY: { + ((GamePlay)Gameplay).SetGameState(GameStateInterface.GS_START, true); Foreground = Gameplay; break; } diff --git a/src/mangavalk/tetris/GameMenu.java b/src/mangavalk/tetris/GameMenu.java index c5dbd8c..2221a60 100644 --- a/src/mangavalk/tetris/GameMenu.java +++ b/src/mangavalk/tetris/GameMenu.java @@ -1,6 +1,13 @@ package mangavalk.tetris; +import android.content.res.Resources; import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Paint.Style; +import android.media.MediaPlayer; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.view.Display; public class GameMenu extends GameStateInterface { @@ -14,8 +21,6 @@ public class GameMenu extends GameStateInterface @Override public void DrawFrame(Canvas canvas) { - // TODO Auto-generated method stub - switch(GameState) { case GS_PAUSED: @@ -24,16 +29,21 @@ public class GameMenu extends GameStateInterface break; } } - - //canvasView.postInvalidate(); } @Override public void SendMove(float x, float y, boolean pointerUp) { - // TODO Auto-generated method stub switch(GameState) { + case GS_MENU_READY: + { + if (!pointerUp) + { + SetGameState(GS_MENU_START, false); + } + break; + } case GS_PAUSED: { if (!pointerUp) @@ -52,6 +62,16 @@ public class GameMenu extends GameStateInterface switch(GameState) { + case GS_LOAD: + { + Load(); + break; + } + case GS_READY: + { + canvasView.postInvalidate(); + break; + } case GS_PAUSED: { canvasView.postInvalidate(); @@ -83,10 +103,93 @@ public class GameMenu extends GameStateInterface } // Internal. + + // Variabelen. + Resources r; + + // Display + float dpHeight; + float dpWidth; + + float Height; + float Width; + + // Audio. + MediaPlayer mp; + + // Load + + private void Load() + { + SetGameState(GS_LOADING, false); + + // Set Display Info. + Display display = activity.getWindowManager().getDefaultDisplay(); + DisplayMetrics outMetrics = new DisplayMetrics (); + display.getMetrics(outMetrics); + + r = activity.getResources(); + + float density = r.getDisplayMetrics().density; + + dpHeight = outMetrics.heightPixels / density; + dpWidth = outMetrics.widthPixels / density; + + Height = outMetrics.heightPixels; + Width = outMetrics.widthPixels; + + // Load Bitmap's. + //LoadSprites(); + + //LoadFont(); + + // Initlialize. + + // Audio + mp = MediaPlayer.create(activity, R.raw.tetris_a); + + SetGameState(GS_MENU_READY, false); + } + + // Draw functions. private void ShowPauseMenu() { // TODO Auto-generated method stub } + + // other logic + private void Rect(Canvas canvas, float Top, float Bottom, float Left, float Right, int Color) + { + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setColor(Color); + paint.setStyle(Style.FILL); + + canvas.drawRect( + GetRealPixelSize(DIP_W, dpWidth, Left), + GetRealPixelSize(DIP_H, dpHeight, Top), + GetRealPixelSize(DIP_W, dpWidth, Right), + GetRealPixelSize(DIP_H, dpHeight, Bottom), paint); + } + + final static int DIP_H = 0; + final static int DIP_W = 1; + + private float GetRealPixelSize(int wH, float dpWH, double DIP) + { + if (wH == DIP_H) + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float)(dpWH * ( DIP / 160 )), r.getDisplayMetrics()); + else if (wH == DIP_W) + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float)(dpWH * ( DIP / 90 )), r.getDisplayMetrics()); + else + return 0; + } + + float map(float x, float in_min, float in_max, float out_min, float out_max) + { + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; + } + } diff --git a/src/mangavalk/tetris/GamePlay.java b/src/mangavalk/tetris/GamePlay.java index 2bb4c36..441048d 100644 --- a/src/mangavalk/tetris/GamePlay.java +++ b/src/mangavalk/tetris/GamePlay.java @@ -131,7 +131,7 @@ public class GamePlay extends GameStateInterface // Variabelen Resources r; - // Sizes + // Display float dpHeight; float dpWidth; diff --git a/src/mangavalk/tetris/GameStateInterface.java b/src/mangavalk/tetris/GameStateInterface.java index 3f8ec73..c564762 100644 --- a/src/mangavalk/tetris/GameStateInterface.java +++ b/src/mangavalk/tetris/GameStateInterface.java @@ -8,15 +8,17 @@ public abstract class GameStateInterface //public GameStateInterface Instance; // GameState Parameters - final static int GS_STOPPED = 0; - final static int GS_LOADING = 1; - final static int GS_PLAYING = 2; - final static int GS_GAMEOVER = 3; - final static int GS_PAUSED = 4; - final static int GS_START = 5; - final static int GS_LOAD = 6; - final static int GS_READY = 7; - final static int GS_RESUME = 8; + final static int GS_STOPPED = 0; + final static int GS_LOADING = 1; + final static int GS_PLAYING = 2; + final static int GS_GAMEOVER = 3; + final static int GS_PAUSED = 4; + final static int GS_START = 5; + final static int GS_LOAD = 6; + final static int GS_READY = 7; + final static int GS_RESUME = 8; + final static int GS_MENU_START = 9; + final static int GS_MENU_READY = 10; // Variabelen. CanvasView canvasView;