package com.example.andenginesample;

import org.andengine.engine.camera.Camera;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.resolutionpolicy.FillResolutionPolicy;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.scene.background.Background;
import org.andengine.entity.sprite.Sprite;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.vbo.VertexBufferObjectManager;
import org.andengine.ui.activity.SimpleBaseGameActivity;

public class ImageLoad extends SimpleBaseGameActivity {
	// 카메라 필드를 생성합니다.
	// 가로와 세로 2개의 카메라 변수를 선언했습니다.
	private Camera camera;
	private static final int CAMERA_WIDTH = 800;
	private static final int CAMERA_HEIGHT = 480;

	private BitmapTextureAtlas mBgTexture;
	private ITextureRegion mImgObj;

	// onCreateEngineOptions() 안에서는 Camera object를 초기화하고, EngineOptions을 생성 합니다.
	// 소스를 보시면 Camera와 EngineOptions을 생성했는데,
	// full screen을 가능하게 했고, landscape orientation을 고정 했습니다.
	// 그리고, FillResolutionPolicy를 정의 했습니다.
	// 엔진은 전체로 해상도를 가득 채울텐데, 가끔 화면에서 어긋날 수 있으므로 주의해야 합니다.
	@Override
	public EngineOptions onCreateEngineOptions() {
		camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
		EngineOptions engineOptions = new EngineOptions(true,
				ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(),
				camera);
		return engineOptions;
	}

	@Override
	protected void onCreateResources() {
		BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");

		this.mBgTexture = new BitmapTextureAtlas(this.getTextureManager(),
				CAMERA_WIDTH, CAMERA_HEIGHT);

		this.mImgObj = BitmapTextureAtlasTextureRegionFactory.createFromAsset(
				this.mBgTexture, this, "back.png", 0,0);
		this.mBgTexture.load();
	}

	// onCreateScene()에서는 화면에 관련된 scene object를 초기화 합니다.
	// Scene이란 스프라이트와 같은 새로운 객체를 덧붙일수 있는 객체(Entity)입니다.
	// 배경 화면을 검정(0,0,0)으로 셋팅 하였습니다.
	@Override
	protected Scene onCreateScene() {
		Scene scene = new Scene();
		scene.setBackground(new Background(0f, 0f, 0f));
		final VertexBufferObjectManager vertexBufferObjectManager = this
				.getVertexBufferObjectManager();
		scene.attachChild(new Sprite(400, 240, this.mImgObj,
				vertexBufferObjectManager));
		return scene;
	}
}
