#include "GStaticData.h"
#include <SDL_image.h>



using namespace GEnum;

GStaticData::GStaticData():m_CommonWork(GCommonWork()){
	// 設定読み込み
	//	this->m_Setting = new GSetting();

	// スクリーンフォーマットの設定
	this->m_ScreenFormat.width = this->getSetting()->windowWidth;
	this->m_ScreenFormat.height = this->getSetting()->windowHeight;
	this->m_ScreenFormat.colorBitPerPixel = this->getSetting()->bitPerPixel;
	this->m_ScreenFormat.videoFlags = 1;

	// ブロックサイズ設定
	this->getBlockManager()->setBlockSize(this->getSetting()->tileSize);


	// チートオフ
//	this->m_Game.setCheat(false);

	// オブジェクトプレイサー
	//this->m_ObjectPlacer = new GObjectPlacer();

}
GStaticData::~GStaticData(){
}

void GStaticData::loadTexture(){

	// image
	this->imageSetContainer = new HPLImageSetContainer("data/image/ImageSetFileList.dat",
		getImageManager(), 255,0,255);

	this->m_CommonWork.setup();

	// sdl kanji フォント読み込み
	sdlkanji = new HPLSDLKanjiManager();
	sdlkanji->setFont("data/font/shnmk16.bdf", "data/font/shnm8x16a.bdf", 16,0);

//	getBlockManager()->setupBlock("data/maps/Block000.txt",
//		getSprite(GEnum::SpriteType::COMMON)->clone());

	mixerManager = new HPLMixerManager();

	// オブジェクト一覧
//	this->m_ObjectManager.setup();
}

/**
	イベント処理
*/
void GStaticData::doEvent(){

	bool isRunning = this->isRunning();


	///////////////////////////////////////////////////////////
	// キーイベント
	SDL_Event ev;
	while(SDL_PollEvent(&ev)){
		if(ev.type == SDL_QUIT){
			isRunning = false;
		}else if(ev.type == SDL_KEYDOWN){

			if(ev.key.keysym.sym == SDLK_ESCAPE){
				/////
				// ESC
				// メニュー表示
				this->m_CommonWork.m_Game.setMenu(!this->m_CommonWork.m_Game.isMenu());

			}else if(ev.key.keysym.sym == SDLK_p){
				////
				// Pキー
				// チート切り替え
				this->m_CommonWork.m_Game.setCheat(!this->m_CommonWork.m_Game.isCheat());
			}else if(ev.key.keysym.sym == SDLK_F4){

				if((ev.key.keysym.mod & SDLK_LALT) != 0){
					// Altと一緒に押している

					// ->強制終了
					isRunning = false;
					exit(0);

				}else{

				/*	// その他
					// ->フルスクリーン切り替え(オプション設定)
					if((staticData->getScreenFormat()->videoFlags & SDL_FULLSCREEN) != 0){
						staticData->getScreenFormat()->videoFlags |= SDL_FULLSCREEN;
					}else{
						staticData->getScreenFormat()->videoFlags &= ~SDL_FULLSCREEN;
					}

					staticData->setupWindow();*/
				}
			}else if(ev.key.keysym.sym == SDLK_t){
				// がっぽがっぽ
//				int NUM = 100;
//				this->getSave()->addMineralNum(NUM);
//				this->getSave()->addEvilElementNum(NUM);
//				this->getSave()->addCoinNum(NUM);
			}
			else if(ev.key.keysym.sym == SDLK_y)
			{
				// Yキー→シェイク
				this->m_ShakeManager.startShake();
			} else if( ev.key.keysym.sym == SDLK_F2 ) {
				// タイトルへ。
				this->getSceneManager()->setScene( SceneType::TITLE );
/*				// 読み込みしなおし
				this->setupMap( HPLMath::nextInt(0,this->mapManager->getMapNum() ) );

				// 種別変更
				staticData->randomPlayers( true );*/
			}
			
		}else if(ev.type == SDL_MOUSEMOTION){
			//setMousePosition(HPLVector(ev.motion.x, ev.motion.y));
		}else if(ev.type == SDL_APPMOUSEFOCUS){

			// ウインドウフォーカス
			//SetCursor(cursor);
		}
	}

	/////
	// ワールド！キー
	if(this->getInputManager()->isPressedNow(GEnum::KeyMap::J)){
		this->m_CommonWork.m_Game.setTheWorld(!this->m_CommonWork.m_Game.isTheWorld());
	}

	/////
	// 会話スキップキー
	if(this->m_CommonWork.m_Game.isScenario() == true){
		if(this->getInputManager()->isPressedNow(GEnum::KeyMap::H)){
//			this->m_Game.setScenario(false);
//			eventPack->setActive(false);
		}
	}


	this->setRunning(isRunning);
}
void GStaticData::processFadeOut(){
	if(HPLBasicStaticData::processFadeOut(getSequence(GEnum::SpriteType::COMMON, GEnum::Common::FADE_OUT))){
		///////
		// シーン＆マップ変更
		if(m_nNextScene != -1){
			getSceneManager()->setScene(m_nNextScene);
		}

		if(m_nNextMap != -1){
			m_CommonWork.setupMap(m_nNextMap);
		}

	}
}

void GStaticData::checkEvent() {
}
