Subversion Repositories AndroidProjects

Rev

Rev 105 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.pingK.gamestates;

import java.util.Random;

import javax.microedition.khronos.opengles.GL10;

import android.util.Log;

import com.gebauz.framework.util.GLUtil;
import com.gebauz.framework.util.Sprite2D;
import com.gebauz.pingK.MultitouchInput;
import com.gebauz.pingK.R;
import com.gebauz.pingK.MultitouchInput.Finger;
import com.gebauz.pingK.game.Font;
import com.gebauz.pingK.game.GameConsts;
import com.gebauz.pingK.game.TextButton;

public class TitleState extends BaseGameState
{
        private Font mFont = null;
        private float mTimer = 0.0f;
       
        private TextButton mGameStartButton;
        private TextButton mOptionsButton;
        private TextButton mHelpButton;
       
        private Sprite2D mTitle = null;
        private Random mRandomizer = new Random();
       
        TextButton.TouchListener mGameStartListener = new TextButton.TouchListener()
        {
                @Override
                public void onTouched()
                {
                        GameStateManager.getInstance().switchState("MainGameState");
                }
        };
       
        TextButton.TouchListener mOptionsListener = new TextButton.TouchListener()
        {
                @Override
                public void onTouched()
                {
                       
                }
        };
       
        TextButton.TouchListener mHelpListener = new TextButton.TouchListener()
        {
                @Override
                public void onTouched()
                {
                       
                }
        };
       
        public TitleState()
        {
               
        }
       
        @Override
        public void init()
        {
                mFont = new Font();
                mTitle = new Sprite2D();
                mTitle.init(R.drawable.logo, GameConsts.VIRTUAL_SCREEN_WIDTH/2.0f, GameConsts.TITLE_POSITION_Y, GameConsts.TITLE_WIDTH, GameConsts.TITLE_HEIGHT);
                mTitle.pivotX = GameConsts.TITLE_WIDTH / 2.0f;
                mTitle.pivotY = 0.0f;

                mGameStartButton = new TextButton(mFont, GameStateManager.getInstance().getContext().getString(R.string.title_start_game));
                mGameStartButton.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mGameStartButton.y = GameConsts.TITLE_POSITION_Y + GameConsts.TITLE_HEIGHT + 5.0f;
                mGameStartButton.scale = 2.5f;
                mGameStartButton.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.MIDDLE);
                mGameStartButton.setTouchListener(mGameStartListener);
               
                mOptionsButton = new TextButton(mFont, GameStateManager.getInstance().getContext().getString(R.string.title_options));
                mOptionsButton.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mOptionsButton.y = GameConsts.TITLE_POSITION_Y + GameConsts.TITLE_HEIGHT + 45.0f;
                mOptionsButton.scale = 2.5f;
                mOptionsButton.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.MIDDLE);
                mOptionsButton.setTouchListener(mOptionsListener);
               
                mHelpButton = new TextButton(mFont, GameStateManager.getInstance().getContext().getString(R.string.title_help));
                mHelpButton.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mHelpButton.y = GameConsts.TITLE_POSITION_Y + GameConsts.TITLE_HEIGHT + 85.0f;
                mHelpButton.scale = 2.5f;
                mHelpButton.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.MIDDLE);
                mHelpButton.setTouchListener(mHelpListener);
        }
       
        @Override
        public void exit()
        {
                mGameStartButton = null;
                mOptionsButton = null;
                mHelpButton = null;
                mFont = null;
        }
       
        @Override
        public void onSurfaceChanged(int width, int height)
        {
                GLUtil.getGL().glViewport(0, 0, width, height);
        }
       
        @Override
        public void update(float deltaTime)
        {
                mTimer += deltaTime;
                mTitle.update(deltaTime);
               
/*              Finger finger = MultitouchInput.getInstance().getTouchPointInside(0.0f, 0.0f, GameConsts.VIRTUAL_SCREEN_WIDTH, GameConsts.VIRTUAL_SCREEN_HEIGHT);
                if (finger != null)
                {
                        // switch state
                        GameStateManager.getInstance().switchState("MainGameState");
                }*/

               
                mGameStartButton.update(deltaTime);
                mOptionsButton.update(deltaTime);
                mHelpButton.update(deltaTime);
        }
       
        @Override
        public void render()
        {
        GL10 gl = GLUtil.getGL();

        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

                gl.glMatrixMode(GL10.GL_PROJECTION);
                gl.glLoadIdentity();
        gl.glOrthof(0, GameConsts.VIRTUAL_SCREEN_WIDTH-1.0f, GameConsts.VIRTUAL_SCREEN_HEIGHT-1.0f, 0, 0, 1);

                float alpha = 0.7f + 0.3f * mRandomizer.nextFloat();
                mTitle.setColor(GameConsts.PINGK_COLOR.x, GameConsts.PINGK_COLOR.y, GameConsts.PINGK_COLOR.z, alpha);
        mTitle.render();
               
/*              if (Math.cos(mTimer * GameConsts.TITLE_FLASH_INTERVAL) > 0.0f)
                {
                        Log.v(GameConsts.LOG_TAG, "t=" + mTimer);
                        renderText(R.string.title_touch_to_start, 300.0f, 3.0f);
                }*/

               
        mGameStartButton.render();
                mOptionsButton.render();
                mHelpButton.render();
        }
       
/*      public void renderText(int id, float posY, float scale)
        {
                String text = GameStateManager.getInstance().getContext().getString(id);
               
                float w = text.length() * Font.CHARACTER_SIZE * scale;
               
                mFont.drawText(text, (GameConsts.VIRTUAL_SCREEN_WIDTH - w) / 2.0f, posY, scale);
        }
        */

        @Override
        public boolean doFadeIn()
        {
                return true;
        }
       
        @Override
        public boolean doFadeOut()
        {
                return true;
        }
}