13c1e67e433728684b5f228c5d4f3e5b1457bb271sm/* 23c1e67e433728684b5f228c5d4f3e5b1457bb271sm * Copyright (C) 2010 The Android Open Source Project 33c1e67e433728684b5f228c5d4f3e5b1457bb271sm * 43c1e67e433728684b5f228c5d4f3e5b1457bb271sm * Licensed under the Apache License, Version 2.0 (the "License"); 53c1e67e433728684b5f228c5d4f3e5b1457bb271sm * you may not use this file except in compliance with the License. 63c1e67e433728684b5f228c5d4f3e5b1457bb271sm * You may obtain a copy of the License at 73c1e67e433728684b5f228c5d4f3e5b1457bb271sm * 83c1e67e433728684b5f228c5d4f3e5b1457bb271sm * http://www.apache.org/licenses/LICENSE-2.0 93c1e67e433728684b5f228c5d4f3e5b1457bb271sm * 103c1e67e433728684b5f228c5d4f3e5b1457bb271sm * Unless required by applicable law or agreed to in writing, software 113c1e67e433728684b5f228c5d4f3e5b1457bb271sm * distributed under the License is distributed on an "AS IS" BASIS, 123c1e67e433728684b5f228c5d4f3e5b1457bb271sm * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c1e67e433728684b5f228c5d4f3e5b1457bb271sm * See the License for the specific language governing permissions and 143c1e67e433728684b5f228c5d4f3e5b1457bb271sm * limitations under the License. 153c1e67e433728684b5f228c5d4f3e5b1457bb271sm */ 163c1e67e433728684b5f228c5d4f3e5b1457bb271sm 173c1e67e433728684b5f228c5d4f3e5b1457bb271sm 18cfd74d65d832137e20e193c960802afba73b5d38smpackage com.replica.replicaisland; 19cfd74d65d832137e20e193c960802afba73b5d38sm 20cfd74d65d832137e20e193c960802afba73b5d38smpublic final class DebugSystem extends BaseObject { 21cfd74d65d832137e20e193c960802afba73b5d38sm public static final int COLOR_RED = 0; 22cfd74d65d832137e20e193c960802afba73b5d38sm public static final int COLOR_BLUE = 1; 23cfd74d65d832137e20e193c960802afba73b5d38sm public static final int COLOR_OUTLINE = 2; 24cfd74d65d832137e20e193c960802afba73b5d38sm public static final int SHAPE_BOX = 0; 25cfd74d65d832137e20e193c960802afba73b5d38sm public static final int SHAPE_CIRCLE = 1; 26cfd74d65d832137e20e193c960802afba73b5d38sm 27cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mRedBoxTexture; 28cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mBlueBoxTexture; 29cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mOutlineBoxTexture; 30cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mRedCircleTexture; 31cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mBlueCircleTexture; 32cfd74d65d832137e20e193c960802afba73b5d38sm private Texture mOutlineCircleTexture; 33cfd74d65d832137e20e193c960802afba73b5d38sm 34cfd74d65d832137e20e193c960802afba73b5d38sm private Vector2 mWorkVector; 35cfd74d65d832137e20e193c960802afba73b5d38sm 36cfd74d65d832137e20e193c960802afba73b5d38sm public DebugSystem(TextureLibrary library) { 37cfd74d65d832137e20e193c960802afba73b5d38sm super(); 38cfd74d65d832137e20e193c960802afba73b5d38sm if (library != null) { 39cfd74d65d832137e20e193c960802afba73b5d38sm mRedBoxTexture = library.allocateTexture(R.drawable.debug_box_red); 40cfd74d65d832137e20e193c960802afba73b5d38sm mBlueBoxTexture = library.allocateTexture(R.drawable.debug_box_blue); 41cfd74d65d832137e20e193c960802afba73b5d38sm mOutlineBoxTexture = library.allocateTexture(R.drawable.debug_box_outline); 42cfd74d65d832137e20e193c960802afba73b5d38sm mRedCircleTexture = library.allocateTexture(R.drawable.debug_circle_red); 43cfd74d65d832137e20e193c960802afba73b5d38sm mBlueCircleTexture = library.allocateTexture(R.drawable.debug_circle_blue); 44cfd74d65d832137e20e193c960802afba73b5d38sm mOutlineCircleTexture = library.allocateTexture(R.drawable.debug_circle_outline); 45cfd74d65d832137e20e193c960802afba73b5d38sm 46cfd74d65d832137e20e193c960802afba73b5d38sm } 47cfd74d65d832137e20e193c960802afba73b5d38sm 48cfd74d65d832137e20e193c960802afba73b5d38sm mWorkVector = new Vector2(); 49cfd74d65d832137e20e193c960802afba73b5d38sm } 50cfd74d65d832137e20e193c960802afba73b5d38sm 51cfd74d65d832137e20e193c960802afba73b5d38sm @Override 52cfd74d65d832137e20e193c960802afba73b5d38sm public void reset() { 53cfd74d65d832137e20e193c960802afba73b5d38sm } 54cfd74d65d832137e20e193c960802afba73b5d38sm 55cfd74d65d832137e20e193c960802afba73b5d38sm public void drawShape(float x, float y, float width, float height, int shapeType, int colorType) { 56cfd74d65d832137e20e193c960802afba73b5d38sm final RenderSystem render = sSystemRegistry.renderSystem; 57cfd74d65d832137e20e193c960802afba73b5d38sm final DrawableFactory factory = sSystemRegistry.drawableFactory; 58cfd74d65d832137e20e193c960802afba73b5d38sm CameraSystem camera = sSystemRegistry.cameraSystem; 59cfd74d65d832137e20e193c960802afba73b5d38sm ContextParameters params = sSystemRegistry.contextParameters; 60cfd74d65d832137e20e193c960802afba73b5d38sm mWorkVector.set(x, y); 61cfd74d65d832137e20e193c960802afba73b5d38sm mWorkVector.x = (mWorkVector.x - camera.getFocusPositionX() 62cfd74d65d832137e20e193c960802afba73b5d38sm + (params.gameWidth / 2)); 63cfd74d65d832137e20e193c960802afba73b5d38sm mWorkVector.y = (mWorkVector.y - camera.getFocusPositionY() 64cfd74d65d832137e20e193c960802afba73b5d38sm + (params.gameHeight / 2)); 65cfd74d65d832137e20e193c960802afba73b5d38sm 66cfd74d65d832137e20e193c960802afba73b5d38sm if (mWorkVector.x + width >= 0.0f && mWorkVector.x < params.gameWidth 67cfd74d65d832137e20e193c960802afba73b5d38sm && mWorkVector.y + height >= 0.0f && mWorkVector.y < params.gameHeight) { 68cfd74d65d832137e20e193c960802afba73b5d38sm DrawableBitmap bitmap = factory.allocateDrawableBitmap(); 69cfd74d65d832137e20e193c960802afba73b5d38sm if (bitmap != null) { 70cfd74d65d832137e20e193c960802afba73b5d38sm Texture texture = getTexture(shapeType, colorType); 71cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.resize((int)texture.width, (int)texture.height); 72cfd74d65d832137e20e193c960802afba73b5d38sm // TODO: scale stretch hack. fix! 73cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setWidth((int)width); 74cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setHeight((int)height); 75cfd74d65d832137e20e193c960802afba73b5d38sm bitmap.setTexture(texture); 76cfd74d65d832137e20e193c960802afba73b5d38sm mWorkVector.set(x, y); 77cfd74d65d832137e20e193c960802afba73b5d38sm 78cfd74d65d832137e20e193c960802afba73b5d38sm render.scheduleForDraw(bitmap, mWorkVector, SortConstants.HUD, true); 79cfd74d65d832137e20e193c960802afba73b5d38sm } 80cfd74d65d832137e20e193c960802afba73b5d38sm } 81cfd74d65d832137e20e193c960802afba73b5d38sm } 82cfd74d65d832137e20e193c960802afba73b5d38sm 83cfd74d65d832137e20e193c960802afba73b5d38sm private final Texture getTexture(int shapeType, int colorType) { 84cfd74d65d832137e20e193c960802afba73b5d38sm Texture result = null; 85cfd74d65d832137e20e193c960802afba73b5d38sm if (shapeType == SHAPE_BOX) { 86cfd74d65d832137e20e193c960802afba73b5d38sm switch (colorType) { 87cfd74d65d832137e20e193c960802afba73b5d38sm case COLOR_RED: 88cfd74d65d832137e20e193c960802afba73b5d38sm result = mRedBoxTexture; 89cfd74d65d832137e20e193c960802afba73b5d38sm break; 90cfd74d65d832137e20e193c960802afba73b5d38sm case COLOR_BLUE: 91cfd74d65d832137e20e193c960802afba73b5d38sm result = mBlueBoxTexture; 92cfd74d65d832137e20e193c960802afba73b5d38sm break; 93cfd74d65d832137e20e193c960802afba73b5d38sm case COLOR_OUTLINE: 94cfd74d65d832137e20e193c960802afba73b5d38sm result = mOutlineBoxTexture; 95cfd74d65d832137e20e193c960802afba73b5d38sm break; 96cfd74d65d832137e20e193c960802afba73b5d38sm } 97cfd74d65d832137e20e193c960802afba73b5d38sm } else if (shapeType == SHAPE_CIRCLE) { 98cfd74d65d832137e20e193c960802afba73b5d38sm switch (colorType) { 99cfd74d65d832137e20e193c960802afba73b5d38sm case COLOR_RED: 100cfd74d65d832137e20e193c960802afba73b5d38sm result = mRedCircleTexture; 101cfd74d65d832137e20e193c960802afba73b5d38sm break; 102cfd74d65d832137e20e193c960802afba73b5d38sm case COLOR_BLUE: 103cfd74d65d832137e20e193c960802afba73b5d38sm result = mBlueCircleTexture; 104cfd74d65d832137e20e193c960802afba73b5d38sm break; 105cfd74d65d832137e20e193c960802afba73b5d38sm case COLOR_OUTLINE: 106cfd74d65d832137e20e193c960802afba73b5d38sm result = mOutlineCircleTexture; 107cfd74d65d832137e20e193c960802afba73b5d38sm break; 108cfd74d65d832137e20e193c960802afba73b5d38sm } 109cfd74d65d832137e20e193c960802afba73b5d38sm } 110cfd74d65d832137e20e193c960802afba73b5d38sm return result; 111cfd74d65d832137e20e193c960802afba73b5d38sm } 112cfd74d65d832137e20e193c960802afba73b5d38sm 113cfd74d65d832137e20e193c960802afba73b5d38sm 114cfd74d65d832137e20e193c960802afba73b5d38sm} 115