1/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17// Android JET demonstration code:
18// See the JetBoyView.java file for examples on the use of the JetPlayer class.
19
20package com.example.android.jetboy;
21
22import com.example.android.jetboy.JetBoyView.JetBoyThread;
23
24import android.app.Activity;
25import android.os.Bundle;
26import android.util.Log;
27import android.view.KeyEvent;
28import android.view.View;
29import android.widget.Button;
30import android.widget.TextView;
31
32public class JetBoy extends Activity implements View.OnClickListener {
33
34    /** A handle to the thread that's actually running the animation. */
35    private JetBoyThread mJetBoyThread;
36
37    /** A handle to the View in which the game is running. */
38    private JetBoyView mJetBoyView;
39
40    // the play start button
41    private Button mButton;
42
43    // used to hit retry
44    private Button mButtonRetry;
45
46    // the window for instructions and such
47    private TextView mTextView;
48
49    // game window timer
50    private TextView mTimerView;
51
52    /**
53     * Required method from parent class
54     *
55     * @param savedInstanceState - The previous instance of this app
56     */
57    public void onCreate(Bundle savedInstanceState) {
58        super.onCreate(savedInstanceState);
59
60        setContentView(R.layout.main);
61
62        // get handles to the JetView from XML and the JET thread.
63        mJetBoyView = (JetBoyView)findViewById(R.id.JetBoyView);
64        mJetBoyThread = mJetBoyView.getThread();
65
66        // look up the happy shiny button
67        mButton = (Button)findViewById(R.id.Button01);
68        mButton.setOnClickListener(this);
69
70        mButtonRetry = (Button)findViewById(R.id.Button02);
71        mButtonRetry.setOnClickListener(this);
72
73        // set up handles for instruction text and game timer text
74        mTextView = (TextView)findViewById(R.id.text);
75        mTimerView = (TextView)findViewById(R.id.timer);
76
77        mJetBoyView.setTimerView(mTimerView);
78
79        mJetBoyView.SetButtonView(mButtonRetry);
80
81        mJetBoyView.SetTextView(mTextView);
82    }
83
84
85    /**
86     * Handles component interaction
87     *
88     * @param v The object which has been clicked
89     */
90    public void onClick(View v) {
91        // this is the first screen
92        if (mJetBoyThread.getGameState() == JetBoyThread.STATE_START) {
93            mButton.setText("PLAY!");
94            mTextView.setVisibility(View.VISIBLE);
95
96            mTextView.setText(R.string.helpText);
97            mJetBoyThread.setGameState(JetBoyThread.STATE_PLAY);
98
99        }
100        // we have entered game play, now we about to start running
101        else if (mJetBoyThread.getGameState() == JetBoyThread.STATE_PLAY) {
102            mButton.setVisibility(View.INVISIBLE);
103            mTextView.setVisibility(View.INVISIBLE);
104            mTimerView.setVisibility(View.VISIBLE);
105            mJetBoyThread.setGameState(JetBoyThread.STATE_RUNNING);
106
107        }
108        // this is a retry button
109        else if (mButtonRetry.equals(v)) {
110
111            mTextView.setText(R.string.helpText);
112
113            mButton.setText("PLAY!");
114            mButtonRetry.setVisibility(View.INVISIBLE);
115            // mButtonRestart.setVisibility(View.INVISIBLE);
116
117            mTextView.setVisibility(View.VISIBLE);
118            mButton.setText("PLAY!");
119            mButton.setVisibility(View.VISIBLE);
120
121            mJetBoyThread.setGameState(JetBoyThread.STATE_PLAY);
122
123        } else {
124            Log.d("JB VIEW", "unknown click " + v.getId());
125
126            Log.d("JB VIEW", "state is  " + mJetBoyThread.mState);
127
128        }
129    }
130
131    /**
132     * Standard override to get key-press events.
133     */
134    @Override
135    public boolean onKeyDown(int keyCode, KeyEvent msg) {
136        if (keyCode == KeyEvent.KEYCODE_BACK) {
137            return super.onKeyDown(keyCode, msg);
138        } else {
139            return mJetBoyThread.doKeyDown(keyCode, msg);
140        }
141    }
142
143    /**
144     * Standard override for key-up.
145     */
146    @Override
147    public boolean onKeyUp(int keyCode, KeyEvent msg) {
148        if (keyCode == KeyEvent.KEYCODE_BACK) {
149            return super.onKeyUp(keyCode, msg);
150        } else {
151            return mJetBoyThread.doKeyUp(keyCode, msg);
152        }
153    }
154}
155