1cfd74d65d832137e20e193c960802afba73b5d38sm/* 23c1e67e433728684b5f228c5d4f3e5b1457bb271sm * Copyright (C) 2010 The Android Open Source Project 3cfd74d65d832137e20e193c960802afba73b5d38sm * 4cfd74d65d832137e20e193c960802afba73b5d38sm * Licensed under the Apache License, Version 2.0 (the "License"); 5cfd74d65d832137e20e193c960802afba73b5d38sm * you may not use this file except in compliance with the License. 6cfd74d65d832137e20e193c960802afba73b5d38sm * You may obtain a copy of the License at 7cfd74d65d832137e20e193c960802afba73b5d38sm * 8cfd74d65d832137e20e193c960802afba73b5d38sm * http://www.apache.org/licenses/LICENSE-2.0 9cfd74d65d832137e20e193c960802afba73b5d38sm * 10cfd74d65d832137e20e193c960802afba73b5d38sm * Unless required by applicable law or agreed to in writing, software 11cfd74d65d832137e20e193c960802afba73b5d38sm * distributed under the License is distributed on an "AS IS" BASIS, 12cfd74d65d832137e20e193c960802afba73b5d38sm * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cfd74d65d832137e20e193c960802afba73b5d38sm * See the License for the specific language governing permissions and 14cfd74d65d832137e20e193c960802afba73b5d38sm * limitations under the License. 15cfd74d65d832137e20e193c960802afba73b5d38sm */ 16cfd74d65d832137e20e193c960802afba73b5d38sm 17cfd74d65d832137e20e193c960802afba73b5d38smpackage com.replica.replicaisland; 18cfd74d65d832137e20e193c960802afba73b5d38sm 19cfd74d65d832137e20e193c960802afba73b5d38sm/** 20cfd74d65d832137e20e193c960802afba73b5d38sm * A very simple manager for orthographic in-game UI elements. 21cfd74d65d832137e20e193c960802afba73b5d38sm * TODO: This should probably manage a number of hud objects in keeping with the component-centric 22cfd74d65d832137e20e193c960802afba73b5d38sm * architecture of this engine. The current code is monolithic and should be refactored. 23cfd74d65d832137e20e193c960802afba73b5d38sm */ 24cfd74d65d832137e20e193c960802afba73b5d38smpublic class HudSystem extends BaseObject { 25cfd74d65d832137e20e193c960802afba73b5d38sm private static final int FUEL_BAR_EDGE_PADDING = 15; 26cfd74d65d832137e20e193c960802afba73b5d38sm private static final float FUEL_DECREASE_BAR_SPEED = 0.75f; 27cfd74d65d832137e20e193c960802afba73b5d38sm private static final float FUEL_INCREASE_BAR_SPEED = 2.0f; 28cfd74d65d832137e20e193c960802afba73b5d38sm private static final float FLY_BUTTON_X = -12.0f; 29cfd74d65d832137e20e193c960802afba73b5d38sm private static final float FLY_BUTTON_Y = -5.0f; 30cfd74d65d832137e20e193c960802afba73b5d38sm private static final float STOMP_BUTTON_X = 85.0f; 31cfd74d65d832137e20e193c960802afba73b5d38sm private static final float STOMP_BUTTON_Y = -10.0f; 32cfd74d65d832137e20e193c960802afba73b5d38sm private static final float STOMP_BUTTON_SCALE = 0.65f; 33cfd74d65d832137e20e193c960802afba73b5d38sm private static final int COLLECTABLE_EDGE_PADDING = 8; 34cfd74d65d832137e20e193c960802afba73b5d38sm private static final int MAX_DIGITS = 4; 352b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float MOVEMENT_SLIDER_BASE_X = 20.0f; 362b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float MOVEMENT_SLIDER_BASE_Y = 32.0f; 372b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float MOVEMENT_SLIDER_BUTTON_X = MOVEMENT_SLIDER_BASE_X + 32.0f; 382b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float MOVEMENT_SLIDER_BUTTON_Y = MOVEMENT_SLIDER_BASE_Y - 16.0f; 392b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float FLY_BUTTON_WIDTH = 128; 402b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float STOMP_BUTTON_WIDTH = FLY_BUTTON_WIDTH * STOMP_BUTTON_SCALE; 412b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private static final float MOVEMENT_SLIDER_WIDTH = 128; 42cfd74d65d832137e20e193c960802afba73b5d38sm 43cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mFuelDrawable; 44cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mFuelBackgroundDrawable; 45cfd74d65d832137e20e193c960802afba73b5d38sm private float mFuelPercent; 46cfd74d65d832137e20e193c960802afba73b5d38sm private float mFuelTargetPercent; 47cfd74d65d832137e20e193c960802afba73b5d38sm 48cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mFadeTexture; 49cfd74d65d832137e20e193c960802afba73b5d38sm private float mFadeStartTime; 50cfd74d65d832137e20e193c960802afba73b5d38sm private float mFadeDuration; 51cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mFadeIn; 52cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mFading; 53cfd74d65d832137e20e193c960802afba73b5d38sm private int mFadePendingEventType; 54cfd74d65d832137e20e193c960802afba73b5d38sm private int mFadePendingEventIndex; 55cfd74d65d832137e20e193c960802afba73b5d38sm 56cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mFlyButtonEnabledDrawable; 57cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mFlyButtonDisabledDrawable; 58cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mFlyButtonDepressedDrawable; 59cfd74d65d832137e20e193c960802afba73b5d38sm 60cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mStompButtonEnabledDrawable; 61cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mStompButtonDepressedDrawable; 62cfd74d65d832137e20e193c960802afba73b5d38sm 632b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private DrawableBitmap mMovementSliderBaseDrawable; 642b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private DrawableBitmap mMovementSliderButtonDrawable; 652b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private DrawableBitmap mMovementSliderButtonDepressedDrawable; 662b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 672b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 68cfd74d65d832137e20e193c960802afba73b5d38sm private Vector2 mFlyButtonLocation; 69cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mFlyButtonActive; 70cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mFlyButtonPressed; 71cfd74d65d832137e20e193c960802afba73b5d38sm 72cfd74d65d832137e20e193c960802afba73b5d38sm private Vector2 mStompButtonLocation; 73cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mStompButtonPressed; 74cfd74d65d832137e20e193c960802afba73b5d38sm 752b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private Vector2 mMovementSliderBaseLocation; 762b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private Vector2 mMovementSliderButtonLocation; 772b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private boolean mMovementSliderMode; 782b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private boolean mMovementSliderButtonPressed; 792b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 80cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mRubyDrawable; 81cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mCoinDrawable; 82cfd74d65d832137e20e193c960802afba73b5d38sm 83cfd74d65d832137e20e193c960802afba73b5d38sm private int mCoinCount; 84cfd74d65d832137e20e193c960802afba73b5d38sm private int mRubyCount; 85cfd74d65d832137e20e193c960802afba73b5d38sm private Vector2 mCoinLocation; 86cfd74d65d832137e20e193c960802afba73b5d38sm private Vector2 mRubyLocation; 87cfd74d65d832137e20e193c960802afba73b5d38sm private int[] mCoinDigits; 88cfd74d65d832137e20e193c960802afba73b5d38sm private int[] mRubyDigits; 89cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mCoinDigitsChanged; 90cfd74d65d832137e20e193c960802afba73b5d38sm private boolean mRubyDigitsChanged; 91cfd74d65d832137e20e193c960802afba73b5d38sm 929d4cc2572d37983607df38b0f4216ed76ac51814sm private int mFPS; 939d4cc2572d37983607df38b0f4216ed76ac51814sm private Vector2 mFPSLocation; 949d4cc2572d37983607df38b0f4216ed76ac51814sm private int[] mFPSDigits; 959d4cc2572d37983607df38b0f4216ed76ac51814sm private boolean mFPSDigitsChanged; 969d4cc2572d37983607df38b0f4216ed76ac51814sm private boolean mShowFPS; 979d4cc2572d37983607df38b0f4216ed76ac51814sm 98cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap[] mDigitDrawables; 99cfd74d65d832137e20e193c960802afba73b5d38sm private DrawableBitmap mXDrawable; 100cfd74d65d832137e20e193c960802afba73b5d38sm 101cfd74d65d832137e20e193c960802afba73b5d38sm 102cfd74d65d832137e20e193c960802afba73b5d38sm public HudSystem() { 103cfd74d65d832137e20e193c960802afba73b5d38sm super(); 104cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonLocation = new Vector2(); 105cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonLocation = new Vector2(); 106cfd74d65d832137e20e193c960802afba73b5d38sm mCoinLocation = new Vector2(); 107cfd74d65d832137e20e193c960802afba73b5d38sm mRubyLocation = new Vector2(); 1089d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSLocation = new Vector2(); 109cfd74d65d832137e20e193c960802afba73b5d38sm mDigitDrawables = new DrawableBitmap[10]; 110cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDigits = new int[MAX_DIGITS]; 111cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDigits = new int[MAX_DIGITS]; 1129d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSDigits = new int[MAX_DIGITS]; 1132b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderBaseLocation = new Vector2(); 1142b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonLocation = new Vector2(); 115cfd74d65d832137e20e193c960802afba73b5d38sm 116cfd74d65d832137e20e193c960802afba73b5d38sm reset(); 117cfd74d65d832137e20e193c960802afba73b5d38sm } 118cfd74d65d832137e20e193c960802afba73b5d38sm 119cfd74d65d832137e20e193c960802afba73b5d38sm @Override 120cfd74d65d832137e20e193c960802afba73b5d38sm public void reset() { 121cfd74d65d832137e20e193c960802afba73b5d38sm mFuelDrawable = null; 122cfd74d65d832137e20e193c960802afba73b5d38sm mFadeTexture = null; 123cfd74d65d832137e20e193c960802afba73b5d38sm mFuelPercent = 1.0f; 124cfd74d65d832137e20e193c960802afba73b5d38sm mFuelTargetPercent = 1.0f; 125cfd74d65d832137e20e193c960802afba73b5d38sm mFading = false; 126cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonDisabledDrawable = null; 127cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonEnabledDrawable = null; 128cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonDepressedDrawable = null; 129cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonLocation.set(FLY_BUTTON_X, FLY_BUTTON_Y); 130cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonActive = true; 131cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonPressed = false; 132cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonEnabledDrawable = null; 133cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonDepressedDrawable = null; 134cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonLocation.set(STOMP_BUTTON_X, STOMP_BUTTON_Y); 135cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonPressed = false; 136cfd74d65d832137e20e193c960802afba73b5d38sm mCoinCount = 0; 137cfd74d65d832137e20e193c960802afba73b5d38sm mRubyCount = 0; 138cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDigits[0] = 0; 139cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDigits[1] = -1; 140cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDigits[0] = 0; 141cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDigits[1] = -1; 142cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDigitsChanged = true; 143cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDigitsChanged = true; 1449d4cc2572d37983607df38b0f4216ed76ac51814sm mFPS = 0; 1459d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSDigits[0] = 0; 1469d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSDigits[1] = -1; 1479d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSDigitsChanged = true; 1489d4cc2572d37983607df38b0f4216ed76ac51814sm mShowFPS = false; 149cfd74d65d832137e20e193c960802afba73b5d38sm for (int x = 0; x < mDigitDrawables.length; x++) { 150cfd74d65d832137e20e193c960802afba73b5d38sm mDigitDrawables[x] = null; 151cfd74d65d832137e20e193c960802afba73b5d38sm } 152cfd74d65d832137e20e193c960802afba73b5d38sm mXDrawable = null; 153cfd74d65d832137e20e193c960802afba73b5d38sm mFadePendingEventType = GameFlowEvent.EVENT_INVALID; 154cfd74d65d832137e20e193c960802afba73b5d38sm mFadePendingEventIndex = 0; 1552b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 1562b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderBaseDrawable = null; 1572b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonDrawable = null; 1582b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonDepressedDrawable = null; 1592b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderBaseLocation.set(MOVEMENT_SLIDER_BASE_X, MOVEMENT_SLIDER_BASE_Y); 1602b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonLocation.set(MOVEMENT_SLIDER_BUTTON_X, MOVEMENT_SLIDER_BUTTON_Y); 1612b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderMode = false; 1622b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonPressed = false; 163cfd74d65d832137e20e193c960802afba73b5d38sm } 164cfd74d65d832137e20e193c960802afba73b5d38sm 165cfd74d65d832137e20e193c960802afba73b5d38sm public void setFuelPercent(float percent) { 166cfd74d65d832137e20e193c960802afba73b5d38sm mFuelTargetPercent = percent; 167cfd74d65d832137e20e193c960802afba73b5d38sm } 168cfd74d65d832137e20e193c960802afba73b5d38sm 169cfd74d65d832137e20e193c960802afba73b5d38sm public void setFuelDrawable(DrawableBitmap fuel, DrawableBitmap background) { 170cfd74d65d832137e20e193c960802afba73b5d38sm mFuelDrawable = fuel; 171cfd74d65d832137e20e193c960802afba73b5d38sm mFuelBackgroundDrawable = background; 172cfd74d65d832137e20e193c960802afba73b5d38sm } 173cfd74d65d832137e20e193c960802afba73b5d38sm 174cfd74d65d832137e20e193c960802afba73b5d38sm public void setFadeTexture(Texture texture) { 175cfd74d65d832137e20e193c960802afba73b5d38sm mFadeTexture = texture; 176cfd74d65d832137e20e193c960802afba73b5d38sm } 177cfd74d65d832137e20e193c960802afba73b5d38sm 1782b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public void setButtonDrawables(DrawableBitmap disabled, DrawableBitmap enabled, DrawableBitmap depressed, 1792b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm DrawableBitmap stompEnabled, DrawableBitmap stompDepressed, 1802b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm DrawableBitmap sliderBase, DrawableBitmap sliderButton, DrawableBitmap sliderDepressed) { 181cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonDisabledDrawable = disabled; 182cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonEnabledDrawable = enabled; 183cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonDepressedDrawable = depressed; 184cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonEnabledDrawable = stompEnabled; 185cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonDepressedDrawable = stompDepressed; 1862b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderBaseDrawable = sliderBase; 1872b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonDrawable = sliderButton; 1882b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonDepressedDrawable = sliderDepressed; 189cfd74d65d832137e20e193c960802afba73b5d38sm } 190cfd74d65d832137e20e193c960802afba73b5d38sm 191cfd74d65d832137e20e193c960802afba73b5d38sm public void setDigitDrawables(DrawableBitmap[] digits, DrawableBitmap xMark) { 192cfd74d65d832137e20e193c960802afba73b5d38sm mXDrawable = xMark; 193cfd74d65d832137e20e193c960802afba73b5d38sm for (int x = 0; x < mDigitDrawables.length && x < digits.length; x++) { 194cfd74d65d832137e20e193c960802afba73b5d38sm mDigitDrawables[x] = digits[x]; 195cfd74d65d832137e20e193c960802afba73b5d38sm } 196cfd74d65d832137e20e193c960802afba73b5d38sm } 197cfd74d65d832137e20e193c960802afba73b5d38sm 198cfd74d65d832137e20e193c960802afba73b5d38sm public void setCollectableDrawables(DrawableBitmap coin, DrawableBitmap ruby) { 199cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDrawable = coin; 200cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDrawable = ruby; 201cfd74d65d832137e20e193c960802afba73b5d38sm } 202cfd74d65d832137e20e193c960802afba73b5d38sm 2032b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public void setButtonState(boolean pressed, boolean attackPressed, boolean sliderPressed) { 204cfd74d65d832137e20e193c960802afba73b5d38sm mFlyButtonPressed = pressed; 205cfd74d65d832137e20e193c960802afba73b5d38sm mStompButtonPressed = attackPressed; 2062b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonPressed = sliderPressed; 207cfd74d65d832137e20e193c960802afba73b5d38sm } 208cfd74d65d832137e20e193c960802afba73b5d38sm 209cfd74d65d832137e20e193c960802afba73b5d38sm public void startFade(boolean in, float duration) { 210cfd74d65d832137e20e193c960802afba73b5d38sm mFadeStartTime = sSystemRegistry.timeSystem.getRealTime(); 211cfd74d65d832137e20e193c960802afba73b5d38sm mFadeDuration = duration; 212cfd74d65d832137e20e193c960802afba73b5d38sm mFadeIn = in; 213cfd74d65d832137e20e193c960802afba73b5d38sm mFading = true; 214cfd74d65d832137e20e193c960802afba73b5d38sm } 215cfd74d65d832137e20e193c960802afba73b5d38sm 216cfd74d65d832137e20e193c960802afba73b5d38sm public void clearFade() { 217cfd74d65d832137e20e193c960802afba73b5d38sm mFading = false; 218cfd74d65d832137e20e193c960802afba73b5d38sm } 219cfd74d65d832137e20e193c960802afba73b5d38sm 220cfd74d65d832137e20e193c960802afba73b5d38sm public boolean isFading() { 221cfd74d65d832137e20e193c960802afba73b5d38sm return mFading; 222cfd74d65d832137e20e193c960802afba73b5d38sm } 223cfd74d65d832137e20e193c960802afba73b5d38sm 224cfd74d65d832137e20e193c960802afba73b5d38sm public void updateInventory(InventoryComponent.UpdateRecord newInventory) { 225cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDigitsChanged = (mCoinCount != newInventory.coinCount); 226cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDigitsChanged = (mRubyCount != newInventory.rubyCount); 227cfd74d65d832137e20e193c960802afba73b5d38sm 228cfd74d65d832137e20e193c960802afba73b5d38sm mCoinCount = newInventory.coinCount; 229cfd74d65d832137e20e193c960802afba73b5d38sm mRubyCount = newInventory.rubyCount; 230cfd74d65d832137e20e193c960802afba73b5d38sm } 2319d4cc2572d37983607df38b0f4216ed76ac51814sm 2329d4cc2572d37983607df38b0f4216ed76ac51814sm public void setFPS(int fps) { 2339d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSDigitsChanged = (fps != mFPS); 2349d4cc2572d37983607df38b0f4216ed76ac51814sm mFPS = fps; 2359d4cc2572d37983607df38b0f4216ed76ac51814sm } 2369d4cc2572d37983607df38b0f4216ed76ac51814sm 2379d4cc2572d37983607df38b0f4216ed76ac51814sm public void setShowFPS(boolean show) { 2389d4cc2572d37983607df38b0f4216ed76ac51814sm mShowFPS = show; 2399d4cc2572d37983607df38b0f4216ed76ac51814sm } 2402b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 2412b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public void setMovementSliderMode(boolean sliderOn) { 2422b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderMode = sliderOn; 2432b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (sliderOn) { 2442b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm ContextParameters params = sSystemRegistry.contextParameters; 2452b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mFlyButtonLocation.set(params.gameWidth - FLY_BUTTON_WIDTH - FLY_BUTTON_X, FLY_BUTTON_Y); 2462b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mStompButtonLocation.set(params.gameWidth - STOMP_BUTTON_WIDTH - STOMP_BUTTON_X, STOMP_BUTTON_Y); 2472b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } else { 2482b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mFlyButtonLocation.set(FLY_BUTTON_X, FLY_BUTTON_Y); 2492b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mStompButtonLocation.set(STOMP_BUTTON_X, STOMP_BUTTON_Y); 2502b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 2512b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 2522b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public void setMovementSliderOffset(float offset) { 2532b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonLocation.set(MOVEMENT_SLIDER_BUTTON_X + (offset * (MOVEMENT_SLIDER_WIDTH / 2.0f)), MOVEMENT_SLIDER_BUTTON_Y); 2542b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 255cfd74d65d832137e20e193c960802afba73b5d38sm 256cfd74d65d832137e20e193c960802afba73b5d38sm @Override 257cfd74d65d832137e20e193c960802afba73b5d38sm public void update(float timeDelta, BaseObject parent) { 258cfd74d65d832137e20e193c960802afba73b5d38sm final RenderSystem render = sSystemRegistry.renderSystem; 259cfd74d65d832137e20e193c960802afba73b5d38sm final VectorPool pool = sSystemRegistry.vectorPool; 260cfd74d65d832137e20e193c960802afba73b5d38sm final ContextParameters params = sSystemRegistry.contextParameters; 261cfd74d65d832137e20e193c960802afba73b5d38sm final DrawableFactory factory = sSystemRegistry.drawableFactory; 262cfd74d65d832137e20e193c960802afba73b5d38sm 263cfd74d65d832137e20e193c960802afba73b5d38sm final GameObjectManager manager = sSystemRegistry.gameObjectManager; 264cfd74d65d832137e20e193c960802afba73b5d38sm 265cfd74d65d832137e20e193c960802afba73b5d38sm if (manager != null && manager.getPlayer() != null) { 266cfd74d65d832137e20e193c960802afba73b5d38sm // Only draw player-specific HUD elements when there's a player. 267cfd74d65d832137e20e193c960802afba73b5d38sm if (mFuelDrawable != null && mFuelBackgroundDrawable != null 268cfd74d65d832137e20e193c960802afba73b5d38sm && render != null && pool != null && factory != null && params != null) { 269cfd74d65d832137e20e193c960802afba73b5d38sm if (mFuelPercent < mFuelTargetPercent) { 270cfd74d65d832137e20e193c960802afba73b5d38sm mFuelPercent += (FUEL_INCREASE_BAR_SPEED * timeDelta); 271cfd74d65d832137e20e193c960802afba73b5d38sm if (mFuelPercent > mFuelTargetPercent) { 272cfd74d65d832137e20e193c960802afba73b5d38sm mFuelPercent = mFuelTargetPercent; 273cfd74d65d832137e20e193c960802afba73b5d38sm } 274cfd74d65d832137e20e193c960802afba73b5d38sm } else if (mFuelPercent > mFuelTargetPercent) { 275cfd74d65d832137e20e193c960802afba73b5d38sm mFuelPercent -= (FUEL_DECREASE_BAR_SPEED * timeDelta); 276cfd74d65d832137e20e193c960802afba73b5d38sm if (mFuelPercent < mFuelTargetPercent) { 277cfd74d65d832137e20e193c960802afba73b5d38sm mFuelPercent = mFuelTargetPercent; 278cfd74d65d832137e20e193c960802afba73b5d38sm } 279cfd74d65d832137e20e193c960802afba73b5d38sm } 280cfd74d65d832137e20e193c960802afba73b5d38sm 281cfd74d65d832137e20e193c960802afba73b5d38sm if (mFuelBackgroundDrawable.getWidth() == 0) { 282cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 283cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = mFuelDrawable.getTexture(); 284cfd74d65d832137e20e193c960802afba73b5d38sm mFuelDrawable.resize(tex.width, tex.height); 285cfd74d65d832137e20e193c960802afba73b5d38sm Texture backgroundTex = mFuelBackgroundDrawable.getTexture(); 286cfd74d65d832137e20e193c960802afba73b5d38sm mFuelBackgroundDrawable.resize(backgroundTex.width, backgroundTex.height); 287cfd74d65d832137e20e193c960802afba73b5d38sm } 288cfd74d65d832137e20e193c960802afba73b5d38sm 289cfd74d65d832137e20e193c960802afba73b5d38sm final int height = mFuelDrawable.getHeight(); 290cfd74d65d832137e20e193c960802afba73b5d38sm 291cfd74d65d832137e20e193c960802afba73b5d38sm 292cfd74d65d832137e20e193c960802afba73b5d38sm Vector2 location = pool.allocate(); 293cfd74d65d832137e20e193c960802afba73b5d38sm location.set(FUEL_BAR_EDGE_PADDING, 294cfd74d65d832137e20e193c960802afba73b5d38sm params.gameHeight - height - FUEL_BAR_EDGE_PADDING); 295cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(mFuelBackgroundDrawable, location, SortConstants.HUD, false); 296cfd74d65d832137e20e193c960802afba73b5d38sm location.x += 2; 297cfd74d65d832137e20e193c960802afba73b5d38sm location.y += 2; 298cfd74d65d832137e20e193c960802afba73b5d38sm final int barWidth = (int)((100 - 4) * mFuelPercent); 299cfd74d65d832137e20e193c960802afba73b5d38sm if (barWidth >= 1) { 300cfd74d65d832137e20e193c960802afba73b5d38sm DrawableBitmap bitmap = factory.allocateDrawableBitmap(); 301cfd74d65d832137e20e193c960802afba73b5d38sm if (bitmap != null) { 302cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.resize(barWidth, mFuelDrawable.getHeight()); 303cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setTexture(mFuelDrawable.getTexture()); 304cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(bitmap, location, SortConstants.HUD + 1, false); 305cfd74d65d832137e20e193c960802afba73b5d38sm } 306cfd74d65d832137e20e193c960802afba73b5d38sm } 307cfd74d65d832137e20e193c960802afba73b5d38sm 308cfd74d65d832137e20e193c960802afba73b5d38sm pool.release(location); 309cfd74d65d832137e20e193c960802afba73b5d38sm } 310cfd74d65d832137e20e193c960802afba73b5d38sm 311cfd74d65d832137e20e193c960802afba73b5d38sm if (mFlyButtonDisabledDrawable != null && mFlyButtonEnabledDrawable != null 312cfd74d65d832137e20e193c960802afba73b5d38sm && mFlyButtonDepressedDrawable != null) { 313cfd74d65d832137e20e193c960802afba73b5d38sm 314cfd74d65d832137e20e193c960802afba73b5d38sm DrawableBitmap bitmap = mFlyButtonEnabledDrawable; 315cfd74d65d832137e20e193c960802afba73b5d38sm if (mFlyButtonActive && mFlyButtonPressed) { 316cfd74d65d832137e20e193c960802afba73b5d38sm bitmap = mFlyButtonDepressedDrawable; 317cfd74d65d832137e20e193c960802afba73b5d38sm } else if (!mFlyButtonActive) { 318cfd74d65d832137e20e193c960802afba73b5d38sm bitmap = mFlyButtonDisabledDrawable; 319cfd74d65d832137e20e193c960802afba73b5d38sm } 320cfd74d65d832137e20e193c960802afba73b5d38sm 321cfd74d65d832137e20e193c960802afba73b5d38sm if (bitmap.getWidth() == 0) { 322cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 323cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = bitmap.getTexture(); 324cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.resize(tex.width, tex.height); 325cfd74d65d832137e20e193c960802afba73b5d38sm } 326cfd74d65d832137e20e193c960802afba73b5d38sm 327cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(bitmap, mFlyButtonLocation, SortConstants.HUD, false); 328cfd74d65d832137e20e193c960802afba73b5d38sm } 329cfd74d65d832137e20e193c960802afba73b5d38sm 3302b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3312b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 332cfd74d65d832137e20e193c960802afba73b5d38sm if (mStompButtonEnabledDrawable != null && mStompButtonDepressedDrawable != null) { 333cfd74d65d832137e20e193c960802afba73b5d38sm 334cfd74d65d832137e20e193c960802afba73b5d38sm DrawableBitmap bitmap = mStompButtonEnabledDrawable; 335cfd74d65d832137e20e193c960802afba73b5d38sm if (mStompButtonPressed) { 336cfd74d65d832137e20e193c960802afba73b5d38sm bitmap = mStompButtonDepressedDrawable; 337cfd74d65d832137e20e193c960802afba73b5d38sm } 338cfd74d65d832137e20e193c960802afba73b5d38sm 339cfd74d65d832137e20e193c960802afba73b5d38sm if (bitmap.getWidth() == 0) { 340cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 341cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = bitmap.getTexture(); 342cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.resize(tex.width, tex.height); 343cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setWidth((int)(tex.width * STOMP_BUTTON_SCALE)); 344cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setHeight((int)(tex.height * STOMP_BUTTON_SCALE)); 345cfd74d65d832137e20e193c960802afba73b5d38sm } 346cfd74d65d832137e20e193c960802afba73b5d38sm 347cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(bitmap, mStompButtonLocation, SortConstants.HUD, false); 348cfd74d65d832137e20e193c960802afba73b5d38sm } 349cfd74d65d832137e20e193c960802afba73b5d38sm 3502b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (mMovementSliderMode && 3512b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderBaseDrawable != null && mMovementSliderButtonDrawable != null) { 3522b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3532b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (mMovementSliderBaseDrawable.getWidth() == 0) { 3542b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm // first time init 3552b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm Texture tex = mMovementSliderBaseDrawable.getTexture(); 3562b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderBaseDrawable.resize(tex.width, tex.height); 3572b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 3582b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3592b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (mMovementSliderButtonDrawable.getWidth() == 0) { 3602b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm // first time init 3612b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm Texture tex = mMovementSliderButtonDrawable.getTexture(); 3622b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonDrawable.resize(tex.width, tex.height); 3632b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 3642b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3652b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (mMovementSliderButtonDepressedDrawable.getWidth() == 0) { 3662b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm // first time init 3672b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm Texture tex = mMovementSliderButtonDepressedDrawable.getTexture(); 3682b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mMovementSliderButtonDepressedDrawable.resize(tex.width, tex.height); 3692b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 3702b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3712b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm DrawableBitmap bitmap = mMovementSliderButtonDrawable; 3722b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3732b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (mMovementSliderButtonPressed) { 3742b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm bitmap = mMovementSliderButtonDepressedDrawable; 3752b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 3762b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3772b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm render.scheduleForDraw(mMovementSliderBaseDrawable, mMovementSliderBaseLocation, SortConstants.HUD, false); 3782b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm render.scheduleForDraw(bitmap, mMovementSliderButtonLocation, SortConstants.HUD + 1, false); 3792b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3802b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 3812b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 3822b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 383cfd74d65d832137e20e193c960802afba73b5d38sm if (mCoinDrawable != null) { 384cfd74d65d832137e20e193c960802afba73b5d38sm if (mCoinDrawable.getWidth() == 0) { 385cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 386cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = mCoinDrawable.getTexture(); 387cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDrawable.resize(tex.width, tex.height); 388cfd74d65d832137e20e193c960802afba73b5d38sm mCoinLocation.x = (params.gameWidth / 2.0f) - tex.width / 2.0f; 389cfd74d65d832137e20e193c960802afba73b5d38sm mCoinLocation.y = params.gameHeight - tex.height - COLLECTABLE_EDGE_PADDING; 390cfd74d65d832137e20e193c960802afba73b5d38sm } 391cfd74d65d832137e20e193c960802afba73b5d38sm 392cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(mCoinDrawable, mCoinLocation, SortConstants.HUD, false); 393cfd74d65d832137e20e193c960802afba73b5d38sm if (mCoinDigitsChanged) { 394cfd74d65d832137e20e193c960802afba73b5d38sm intToDigitArray(mCoinCount, mCoinDigits); 395cfd74d65d832137e20e193c960802afba73b5d38sm mCoinDigitsChanged = false; 396cfd74d65d832137e20e193c960802afba73b5d38sm } 397cfd74d65d832137e20e193c960802afba73b5d38sm final float offset = mCoinDrawable.getWidth() * 0.75f; 398cfd74d65d832137e20e193c960802afba73b5d38sm mCoinLocation.x += offset; 3999d4cc2572d37983607df38b0f4216ed76ac51814sm drawNumber(mCoinLocation, mCoinDigits, true); 400cfd74d65d832137e20e193c960802afba73b5d38sm mCoinLocation.x -= offset; 401cfd74d65d832137e20e193c960802afba73b5d38sm } 402cfd74d65d832137e20e193c960802afba73b5d38sm 403cfd74d65d832137e20e193c960802afba73b5d38sm if (mRubyDrawable != null) { 404cfd74d65d832137e20e193c960802afba73b5d38sm if (mRubyDrawable.getWidth() == 0) { 405cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 406cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = mRubyDrawable.getTexture(); 407cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDrawable.resize(tex.width, tex.height); 408cfd74d65d832137e20e193c960802afba73b5d38sm mRubyLocation.x = (params.gameWidth / 2.0f) + 100.0f; 409cfd74d65d832137e20e193c960802afba73b5d38sm mRubyLocation.y = params.gameHeight - tex.height - COLLECTABLE_EDGE_PADDING; 410cfd74d65d832137e20e193c960802afba73b5d38sm } 411cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(mRubyDrawable, mRubyLocation, SortConstants.HUD, false); 412cfd74d65d832137e20e193c960802afba73b5d38sm if (mRubyDigitsChanged) { 413cfd74d65d832137e20e193c960802afba73b5d38sm intToDigitArray(mRubyCount, mRubyDigits); 414cfd74d65d832137e20e193c960802afba73b5d38sm mRubyDigitsChanged = false; 415cfd74d65d832137e20e193c960802afba73b5d38sm } 416cfd74d65d832137e20e193c960802afba73b5d38sm final float offset = mRubyDrawable.getWidth() * 0.75f; 417cfd74d65d832137e20e193c960802afba73b5d38sm mRubyLocation.x += offset; 4189d4cc2572d37983607df38b0f4216ed76ac51814sm drawNumber(mRubyLocation, mRubyDigits, true); 419cfd74d65d832137e20e193c960802afba73b5d38sm mRubyLocation.x -= offset; 420cfd74d65d832137e20e193c960802afba73b5d38sm } 421cfd74d65d832137e20e193c960802afba73b5d38sm } 422cfd74d65d832137e20e193c960802afba73b5d38sm 4239d4cc2572d37983607df38b0f4216ed76ac51814sm if (mShowFPS) { 4249d4cc2572d37983607df38b0f4216ed76ac51814sm if (mFPSDigitsChanged) { 4259d4cc2572d37983607df38b0f4216ed76ac51814sm int count = intToDigitArray(mFPS, mFPSDigits); 4269d4cc2572d37983607df38b0f4216ed76ac51814sm mFPSDigitsChanged = false; 4272b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mFPSLocation.set(params.gameWidth - 10.0f - ((count + 1) * (mDigitDrawables[0].getWidth() / 2.0f)), 10.0f); 4289d4cc2572d37983607df38b0f4216ed76ac51814sm 4299d4cc2572d37983607df38b0f4216ed76ac51814sm } 4309d4cc2572d37983607df38b0f4216ed76ac51814sm drawNumber(mFPSLocation, mFPSDigits, false); 4319d4cc2572d37983607df38b0f4216ed76ac51814sm } 4329d4cc2572d37983607df38b0f4216ed76ac51814sm 433cfd74d65d832137e20e193c960802afba73b5d38sm if (mFading && factory != null) { 434cfd74d65d832137e20e193c960802afba73b5d38sm 435cfd74d65d832137e20e193c960802afba73b5d38sm final float time = sSystemRegistry.timeSystem.getRealTime(); 436cfd74d65d832137e20e193c960802afba73b5d38sm final float fadeDelta = (time - mFadeStartTime); 437cfd74d65d832137e20e193c960802afba73b5d38sm 438cfd74d65d832137e20e193c960802afba73b5d38sm float percentComplete = 1.0f; 439cfd74d65d832137e20e193c960802afba73b5d38sm if (fadeDelta < mFadeDuration) { 440cfd74d65d832137e20e193c960802afba73b5d38sm percentComplete = fadeDelta / mFadeDuration; 441cfd74d65d832137e20e193c960802afba73b5d38sm } else if (mFadeIn) { 442cfd74d65d832137e20e193c960802afba73b5d38sm // We've faded in. Turn fading off. 443cfd74d65d832137e20e193c960802afba73b5d38sm mFading = false; 444cfd74d65d832137e20e193c960802afba73b5d38sm } 445cfd74d65d832137e20e193c960802afba73b5d38sm 446cfd74d65d832137e20e193c960802afba73b5d38sm if (percentComplete < 1.0f || !mFadeIn) { 447cfd74d65d832137e20e193c960802afba73b5d38sm float opacityValue = percentComplete; 448cfd74d65d832137e20e193c960802afba73b5d38sm if (mFadeIn) { 449cfd74d65d832137e20e193c960802afba73b5d38sm opacityValue = 1.0f - percentComplete; 450cfd74d65d832137e20e193c960802afba73b5d38sm } 451cfd74d65d832137e20e193c960802afba73b5d38sm 452cfd74d65d832137e20e193c960802afba73b5d38sm DrawableBitmap bitmap = factory.allocateDrawableBitmap(); 453cfd74d65d832137e20e193c960802afba73b5d38sm if (bitmap != null) { 454cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setWidth(params.gameWidth); 455cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setHeight(params.gameHeight); 456cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setTexture(mFadeTexture); 457cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setCrop(0, mFadeTexture.height, mFadeTexture.width, mFadeTexture.height); 458cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setOpacity(opacityValue); 459cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(bitmap, Vector2.ZERO, SortConstants.FADE, false); 460cfd74d65d832137e20e193c960802afba73b5d38sm } 461cfd74d65d832137e20e193c960802afba73b5d38sm } 462cfd74d65d832137e20e193c960802afba73b5d38sm 463cfd74d65d832137e20e193c960802afba73b5d38sm if (percentComplete >= 1.0f && mFadePendingEventType != GameFlowEvent.EVENT_INVALID) { 464cfd74d65d832137e20e193c960802afba73b5d38sm LevelSystem level = sSystemRegistry.levelSystem; 465cfd74d65d832137e20e193c960802afba73b5d38sm if (level != null) { 466cfd74d65d832137e20e193c960802afba73b5d38sm level.sendGameEvent(mFadePendingEventType, mFadePendingEventIndex, false); 467cfd74d65d832137e20e193c960802afba73b5d38sm mFadePendingEventType = GameFlowEvent.EVENT_INVALID; 468cfd74d65d832137e20e193c960802afba73b5d38sm mFadePendingEventIndex = 0; 469cfd74d65d832137e20e193c960802afba73b5d38sm } 470cfd74d65d832137e20e193c960802afba73b5d38sm } 471cfd74d65d832137e20e193c960802afba73b5d38sm } 472cfd74d65d832137e20e193c960802afba73b5d38sm } 473cfd74d65d832137e20e193c960802afba73b5d38sm 4749d4cc2572d37983607df38b0f4216ed76ac51814sm private void drawNumber(Vector2 location, int[] digits, boolean drawX) { 475cfd74d65d832137e20e193c960802afba73b5d38sm final RenderSystem render = sSystemRegistry.renderSystem; 476cfd74d65d832137e20e193c960802afba73b5d38sm 477cfd74d65d832137e20e193c960802afba73b5d38sm if (mDigitDrawables[0].getWidth() == 0) { 478cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 479cfd74d65d832137e20e193c960802afba73b5d38sm for (int x = 0; x < mDigitDrawables.length; x++) { 480cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = mDigitDrawables[x].getTexture(); 481cfd74d65d832137e20e193c960802afba73b5d38sm mDigitDrawables[x].resize(tex.width, tex.height); 482cfd74d65d832137e20e193c960802afba73b5d38sm } 483cfd74d65d832137e20e193c960802afba73b5d38sm } 484cfd74d65d832137e20e193c960802afba73b5d38sm 485cfd74d65d832137e20e193c960802afba73b5d38sm if (mXDrawable.getWidth() == 0) { 486cfd74d65d832137e20e193c960802afba73b5d38sm // first time init 487cfd74d65d832137e20e193c960802afba73b5d38sm Texture tex = mXDrawable.getTexture(); 488cfd74d65d832137e20e193c960802afba73b5d38sm mXDrawable.resize(tex.width, tex.height); 489cfd74d65d832137e20e193c960802afba73b5d38sm } 490cfd74d65d832137e20e193c960802afba73b5d38sm 491cfd74d65d832137e20e193c960802afba73b5d38sm final float characterWidth = mDigitDrawables[0].getWidth() / 2.0f; 492cfd74d65d832137e20e193c960802afba73b5d38sm float offset = 0.0f; 493cfd74d65d832137e20e193c960802afba73b5d38sm 4949d4cc2572d37983607df38b0f4216ed76ac51814sm if (mXDrawable != null && drawX) { 495cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(mXDrawable, location, SortConstants.HUD, false); 4969d4cc2572d37983607df38b0f4216ed76ac51814sm location.x += characterWidth; 4979d4cc2572d37983607df38b0f4216ed76ac51814sm offset += characterWidth; 498cfd74d65d832137e20e193c960802afba73b5d38sm } 499cfd74d65d832137e20e193c960802afba73b5d38sm 500cfd74d65d832137e20e193c960802afba73b5d38sm for (int x = 0; x < digits.length && digits[x] != -1; x++) { 501cfd74d65d832137e20e193c960802afba73b5d38sm int index = digits[x]; 502cfd74d65d832137e20e193c960802afba73b5d38sm DrawableBitmap digit = mDigitDrawables[index]; 503cfd74d65d832137e20e193c960802afba73b5d38sm if (digit != null) { 504cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(digit, location, SortConstants.HUD, false); 5059d4cc2572d37983607df38b0f4216ed76ac51814sm location.x += characterWidth; 5069d4cc2572d37983607df38b0f4216ed76ac51814sm offset += characterWidth; 507cfd74d65d832137e20e193c960802afba73b5d38sm } 508cfd74d65d832137e20e193c960802afba73b5d38sm } 509cfd74d65d832137e20e193c960802afba73b5d38sm 510cfd74d65d832137e20e193c960802afba73b5d38sm location.x -= offset; 511cfd74d65d832137e20e193c960802afba73b5d38sm 512cfd74d65d832137e20e193c960802afba73b5d38sm 513cfd74d65d832137e20e193c960802afba73b5d38sm } 514cfd74d65d832137e20e193c960802afba73b5d38sm 515cfd74d65d832137e20e193c960802afba73b5d38sm public int intToDigitArray(int value, int[] digits) { 516cfd74d65d832137e20e193c960802afba73b5d38sm int characterCount = 1; 517cfd74d65d832137e20e193c960802afba73b5d38sm if (value >= 1000) { 518cfd74d65d832137e20e193c960802afba73b5d38sm characterCount = 4; 519cfd74d65d832137e20e193c960802afba73b5d38sm } else if (value >= 100) { 520cfd74d65d832137e20e193c960802afba73b5d38sm characterCount = 3; 521cfd74d65d832137e20e193c960802afba73b5d38sm } else if (value >= 10) { 522cfd74d65d832137e20e193c960802afba73b5d38sm characterCount = 2; 523cfd74d65d832137e20e193c960802afba73b5d38sm } 524cfd74d65d832137e20e193c960802afba73b5d38sm 525cfd74d65d832137e20e193c960802afba73b5d38sm int remainingValue = value; 526cfd74d65d832137e20e193c960802afba73b5d38sm int count = 0; 527cfd74d65d832137e20e193c960802afba73b5d38sm do { 528cfd74d65d832137e20e193c960802afba73b5d38sm int index = remainingValue != 0 ? remainingValue % 10 : 0; 529cfd74d65d832137e20e193c960802afba73b5d38sm remainingValue /= 10; 530cfd74d65d832137e20e193c960802afba73b5d38sm digits[characterCount - 1 - count] = index; 531cfd74d65d832137e20e193c960802afba73b5d38sm count++; 532cfd74d65d832137e20e193c960802afba73b5d38sm } while (remainingValue > 0 && count < digits.length); 533cfd74d65d832137e20e193c960802afba73b5d38sm 534cfd74d65d832137e20e193c960802afba73b5d38sm if (count < digits.length) { 535cfd74d65d832137e20e193c960802afba73b5d38sm digits[count] = -1; 536cfd74d65d832137e20e193c960802afba73b5d38sm } 5372b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return characterCount; 538cfd74d65d832137e20e193c960802afba73b5d38sm } 5392b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 540cfd74d65d832137e20e193c960802afba73b5d38sm public void sendGameEventOnFadeComplete(int eventType, int eventIndex) { 541cfd74d65d832137e20e193c960802afba73b5d38sm mFadePendingEventType = eventType; 542cfd74d65d832137e20e193c960802afba73b5d38sm mFadePendingEventIndex = eventIndex; 543cfd74d65d832137e20e193c960802afba73b5d38sm } 544cfd74d65d832137e20e193c960802afba73b5d38sm 545cfd74d65d832137e20e193c960802afba73b5d38sm 546cfd74d65d832137e20e193c960802afba73b5d38sm} 547