blob: 9a09f0f2924f0a4f67beec8d90e3a45f8aad8928 [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.replica.replicaisland;
import java.lang.reflect.InvocationTargetException;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class GameOverActivity extends Activity {
private float mPearlPercent = 100.0f;
private float mEnemiesDestroyedPercent = 100.0f;
private float mPlayTime = 0.0f;
private int mEnding = AnimationPlayerActivity.KABOCHA_ENDING;
private IncrementingTextView mPearlView;
private IncrementingTextView mEnemiesDestroyedView;
private IncrementingTextView mPlayTimeView;
private TextView mEndingView;
public static class IncrementingTextView extends TextView {
private static final int INCREMENT_DELAY_MS = 2 * 1000;
private static final int MODE_NONE = 0;
private static final int MODE_PERCENT = 1;
private static final int MODE_TIME = 2;
private float mTargetValue;
private float mIncrement = 1.0f;
private float mCurrentValue = 0.0f;
private long mLastTime = 0;
private int mMode = MODE_NONE;
public IncrementingTextView(Context context) {
super(context);
}
public IncrementingTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public IncrementingTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setTargetValue(float target) {
mTargetValue = target;
postInvalidate();
}
public void setMode(int mode) {
mMode = mode;
}
public void setIncrement(float increment) {
mIncrement = increment;
}
@Override
public void onDraw(Canvas canvas) {
final long time = SystemClock.uptimeMillis();
final long delta = time - mLastTime;
if (delta > INCREMENT_DELAY_MS) {
if (mCurrentValue < mTargetValue) {
mCurrentValue += mIncrement;
mCurrentValue = Math.min(mCurrentValue, mTargetValue);
String value;
if (mMode == MODE_PERCENT) {
value = mCurrentValue + "%";
} else if (mMode == MODE_TIME) {
float seconds = mCurrentValue;
float minutes = seconds / 60.0f;
float hours = minutes / 60.0f;
int totalHours = (int)Math.floor(hours);
float totalHourMinutes = totalHours * 60.0f;
int totalMinutes = (int)(minutes - totalHourMinutes);
float totalMinuteSeconds = totalMinutes * 60.0f;
float totalHourSeconds = totalHourMinutes * 60.0f;
int totalSeconds = (int)(seconds - (totalMinuteSeconds + totalHourSeconds));
value = totalHours + ":" + totalMinutes + ":" + totalSeconds;
} else {
value = mCurrentValue + "";
}
setText(value);
postInvalidateDelayed(INCREMENT_DELAY_MS);
}
}
super.onDraw(canvas);
}
}
private View.OnClickListener sOKClickListener = new View.OnClickListener() {
public void onClick(View v) {
finish();
if (UIConstants.mOverridePendingTransition != null) {
try {
UIConstants.mOverridePendingTransition.invoke(GameOverActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out);
} catch (InvocationTargetException ite) {
DebugLog.d("Activity Transition", "Invocation Target Exception");
} catch (IllegalAccessException ie) {
DebugLog.d("Activity Transition", "Illegal Access Exception");
}
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_over);
mPearlView = (IncrementingTextView)findViewById(R.id.pearl_percent);
mEnemiesDestroyedView = (IncrementingTextView)findViewById(R.id.enemy_percent);
mPlayTimeView = (IncrementingTextView)findViewById(R.id.total_play_time);
mEndingView = (TextView)findViewById(R.id.ending);
SharedPreferences prefs = getSharedPreferences(PreferenceConstants.PREFERENCE_NAME, MODE_PRIVATE);
final float playTime = prefs.getFloat(PreferenceConstants.PREFERENCE_TOTAL_GAME_TIME, 0.0f);
final int ending = prefs.getInt(PreferenceConstants.PREFERENCE_LAST_ENDING, -1);
final int pearlsCollected = prefs.getInt(PreferenceConstants.PREFERENCE_PEARLS_COLLECTED, 0);
final int pearlsTotal = prefs.getInt(PreferenceConstants.PREFERENCE_PEARLS_TOTAL, 0);
final int enemies = prefs.getInt(PreferenceConstants.PREFERENCE_ROBOTS_DESTROYED, 0);
if (pearlsCollected > 0 && pearlsTotal > 0) {
mPearlView.setTargetValue((int)((pearlsCollected / (float)pearlsTotal) * 100.0f));
} else {
mPearlView.setText("--");
}
mPearlView.setMode(IncrementingTextView.MODE_PERCENT);
mEnemiesDestroyedView.setTargetValue(enemies);
mPlayTimeView.setTargetValue(playTime);
mPlayTimeView.setIncrement(90.0f);
mPlayTimeView.setMode(IncrementingTextView.MODE_TIME);
if (ending == AnimationPlayerActivity.KABOCHA_ENDING) {
mEndingView.setText(R.string.game_results_kabocha_ending);
} else if (ending == AnimationPlayerActivity.ROKUDOU_ENDING) {
mEndingView.setText(R.string.game_results_rokudou_ending);
} else {
mEndingView.setText(R.string.game_results_wanda_ending);
}
Button okButton = (Button)findViewById(R.id.ok);
okButton.setOnClickListener(sOKClickListener);
}
}