/* * 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); } }