| /* |
| * 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; |
| |
| public final class DebugSystem extends BaseObject { |
| public static final int COLOR_RED = 0; |
| public static final int COLOR_BLUE = 1; |
| public static final int COLOR_OUTLINE = 2; |
| public static final int SHAPE_BOX = 0; |
| public static final int SHAPE_CIRCLE = 1; |
| |
| private Texture mRedBoxTexture; |
| private Texture mBlueBoxTexture; |
| private Texture mOutlineBoxTexture; |
| private Texture mRedCircleTexture; |
| private Texture mBlueCircleTexture; |
| private Texture mOutlineCircleTexture; |
| |
| private Vector2 mWorkVector; |
| |
| public DebugSystem(TextureLibrary library) { |
| super(); |
| if (library != null) { |
| mRedBoxTexture = library.allocateTexture(R.drawable.debug_box_red); |
| mBlueBoxTexture = library.allocateTexture(R.drawable.debug_box_blue); |
| mOutlineBoxTexture = library.allocateTexture(R.drawable.debug_box_outline); |
| mRedCircleTexture = library.allocateTexture(R.drawable.debug_circle_red); |
| mBlueCircleTexture = library.allocateTexture(R.drawable.debug_circle_blue); |
| mOutlineCircleTexture = library.allocateTexture(R.drawable.debug_circle_outline); |
| |
| } |
| |
| mWorkVector = new Vector2(); |
| } |
| |
| @Override |
| public void reset() { |
| } |
| |
| public void drawShape(float x, float y, float width, float height, int shapeType, int colorType) { |
| final RenderSystem render = sSystemRegistry.renderSystem; |
| final DrawableFactory factory = sSystemRegistry.drawableFactory; |
| CameraSystem camera = sSystemRegistry.cameraSystem; |
| ContextParameters params = sSystemRegistry.contextParameters; |
| mWorkVector.set(x, y); |
| mWorkVector.x = (mWorkVector.x - camera.getFocusPositionX() |
| + (params.gameWidth / 2)); |
| mWorkVector.y = (mWorkVector.y - camera.getFocusPositionY() |
| + (params.gameHeight / 2)); |
| |
| if (mWorkVector.x + width >= 0.0f && mWorkVector.x < params.gameWidth |
| && mWorkVector.y + height >= 0.0f && mWorkVector.y < params.gameHeight) { |
| DrawableBitmap bitmap = factory.allocateDrawableBitmap(); |
| if (bitmap != null) { |
| Texture texture = getTexture(shapeType, colorType); |
| bitmap.resize((int)texture.width, (int)texture.height); |
| // TODO: scale stretch hack. fix! |
| bitmap.setWidth((int)width); |
| bitmap.setHeight((int)height); |
| bitmap.setTexture(texture); |
| mWorkVector.set(x, y); |
| |
| render.scheduleForDraw(bitmap, mWorkVector, SortConstants.HUD, true); |
| } |
| } |
| } |
| |
| private final Texture getTexture(int shapeType, int colorType) { |
| Texture result = null; |
| if (shapeType == SHAPE_BOX) { |
| switch (colorType) { |
| case COLOR_RED: |
| result = mRedBoxTexture; |
| break; |
| case COLOR_BLUE: |
| result = mBlueBoxTexture; |
| break; |
| case COLOR_OUTLINE: |
| result = mOutlineBoxTexture; |
| break; |
| } |
| } else if (shapeType == SHAPE_CIRCLE) { |
| switch (colorType) { |
| case COLOR_RED: |
| result = mRedCircleTexture; |
| break; |
| case COLOR_BLUE: |
| result = mBlueCircleTexture; |
| break; |
| case COLOR_OUTLINE: |
| result = mOutlineCircleTexture; |
| break; |
| } |
| } |
| return result; |
| } |
| |
| |
| } |