1 /*
2  * Copyright (C) 2010 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 package com.replica.replicaisland;
18 
19 import java.lang.reflect.InvocationTargetException;
20 
21 import android.app.Activity;
22 import android.content.Context;
23 import android.content.SharedPreferences;
24 import android.graphics.Canvas;
25 import android.os.Bundle;
26 import android.os.SystemClock;
27 import android.util.AttributeSet;
28 import android.view.View;
29 import android.widget.Button;
30 import android.widget.TextView;
31 
32 public class GameOverActivity extends Activity {
33 	private float mPearlPercent = 100.0f;
34 	private float mEnemiesDestroyedPercent = 100.0f;
35 	private float mPlayTime = 0.0f;
36 	private int mEnding = AnimationPlayerActivity.KABOCHA_ENDING;
37 
38 	private IncrementingTextView mPearlView;
39 	private IncrementingTextView mEnemiesDestroyedView;
40 	private IncrementingTextView mPlayTimeView;
41 	private TextView mEndingView;
42 
43     public static class IncrementingTextView extends TextView {
44     	private static final int INCREMENT_DELAY_MS = 2 * 1000;
45     	private static final int MODE_NONE = 0;
46     	private static final int MODE_PERCENT = 1;
47     	private static final int MODE_TIME = 2;
48 
49     	private float mTargetValue;
50     	private float mIncrement = 1.0f;
51     	private float mCurrentValue = 0.0f;
52     	private long mLastTime = 0;
53     	private int mMode = MODE_NONE;
54 
IncrementingTextView(Context context)55     	public IncrementingTextView(Context context) {
56             super(context);
57         }
58 
IncrementingTextView(Context context, AttributeSet attrs)59         public IncrementingTextView(Context context, AttributeSet attrs) {
60             super(context, attrs);
61         }
62 
IncrementingTextView(Context context, AttributeSet attrs, int defStyle)63         public IncrementingTextView(Context context, AttributeSet attrs, int defStyle) {
64             super(context, attrs, defStyle);
65         }
66 
setTargetValue(float target)67         public void setTargetValue(float target) {
68         	mTargetValue = target;
69         	postInvalidate();
70         }
71 
setMode(int mode)72         public void setMode(int mode) {
73         	mMode = mode;
74         }
75 
setIncrement(float increment)76         public void setIncrement(float increment) {
77         	mIncrement = increment;
78         }
79 
80         @Override
onDraw(Canvas canvas)81         public void onDraw(Canvas canvas) {
82             final long time = SystemClock.uptimeMillis();
83             final long delta = time - mLastTime;
84             if (delta > INCREMENT_DELAY_MS) {
85             	if (mCurrentValue < mTargetValue) {
86             		mCurrentValue += mIncrement;
87             		mCurrentValue = Math.min(mCurrentValue, mTargetValue);
88             		String value;
89             		if (mMode == MODE_PERCENT) {
90             			value = mCurrentValue + "%";
91             		} else if (mMode == MODE_TIME) {
92             			float seconds = mCurrentValue;
93             			float minutes = seconds / 60.0f;
94             			float hours = minutes / 60.0f;
95 
96             			int totalHours = (int)Math.floor(hours);
97             			float totalHourMinutes = totalHours * 60.0f;
98             			int totalMinutes = (int)(minutes - totalHourMinutes);
99             			float totalMinuteSeconds = totalMinutes * 60.0f;
100             			float totalHourSeconds = totalHourMinutes * 60.0f;
101             			int totalSeconds = (int)(seconds - (totalMinuteSeconds + totalHourSeconds));
102 
103             			value = totalHours + ":" + totalMinutes + ":" + totalSeconds;
104             		} else {
105             			value = mCurrentValue + "";
106             		}
107             		setText(value);
108                     postInvalidateDelayed(INCREMENT_DELAY_MS);
109             	}
110             }
111             super.onDraw(canvas);
112         }
113     }
114 
115     private View.OnClickListener sOKClickListener = new View.OnClickListener() {
116         public void onClick(View v) {
117         	finish();
118         	if (UIConstants.mOverridePendingTransition != null) {
119    		       try {
120    		    	  UIConstants.mOverridePendingTransition.invoke(GameOverActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out);
121    		       } catch (InvocationTargetException ite) {
122    		           DebugLog.d("Activity Transition", "Invocation Target Exception");
123    		       } catch (IllegalAccessException ie) {
124    		    	   DebugLog.d("Activity Transition", "Illegal Access Exception");
125    		       }
126          	}
127         }
128     };
129 
130 	@Override
onCreate(Bundle savedInstanceState)131     public void onCreate(Bundle savedInstanceState) {
132         super.onCreate(savedInstanceState);
133         setContentView(R.layout.game_over);
134 
135         mPearlView = (IncrementingTextView)findViewById(R.id.pearl_percent);
136         mEnemiesDestroyedView = (IncrementingTextView)findViewById(R.id.enemy_percent);
137         mPlayTimeView = (IncrementingTextView)findViewById(R.id.total_play_time);
138         mEndingView = (TextView)findViewById(R.id.ending);
139 
140         SharedPreferences prefs = getSharedPreferences(PreferenceConstants.PREFERENCE_NAME, MODE_PRIVATE);
141         final float playTime = prefs.getFloat(PreferenceConstants.PREFERENCE_TOTAL_GAME_TIME, 0.0f);
142         final int ending = prefs.getInt(PreferenceConstants.PREFERENCE_LAST_ENDING, -1);
143         final int pearlsCollected = prefs.getInt(PreferenceConstants.PREFERENCE_PEARLS_COLLECTED, 0);
144         final int pearlsTotal = prefs.getInt(PreferenceConstants.PREFERENCE_PEARLS_TOTAL, 0);
145 
146         final int enemies = prefs.getInt(PreferenceConstants.PREFERENCE_ROBOTS_DESTROYED, 0);
147 
148         if (pearlsCollected > 0 && pearlsTotal > 0) {
149         	mPearlView.setTargetValue((int)((pearlsCollected / (float)pearlsTotal) * 100.0f));
150         } else {
151         	mPearlView.setText("--");
152         }
153         mPearlView.setMode(IncrementingTextView.MODE_PERCENT);
154         mEnemiesDestroyedView.setTargetValue(enemies);
155         mPlayTimeView.setTargetValue(playTime);
156         mPlayTimeView.setIncrement(90.0f);
157         mPlayTimeView.setMode(IncrementingTextView.MODE_TIME);
158 
159         if (ending == AnimationPlayerActivity.KABOCHA_ENDING) {
160         	mEndingView.setText(R.string.game_results_kabocha_ending);
161         } else if (ending == AnimationPlayerActivity.ROKUDOU_ENDING) {
162         	mEndingView.setText(R.string.game_results_rokudou_ending);
163         } else {
164         	mEndingView.setText(R.string.game_results_wanda_ending);
165         }
166 
167         Button okButton = (Button)findViewById(R.id.ok);
168         okButton.setOnClickListener(sOKClickListener);
169 
170 	}
171 
172 
173 }
174