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