/// @file GameState.h
#ifndef GAMESTATE_H
#define GAMESTATE_H

#include "../LayerInfo.h"

/**
	@brief GameState 인터페이스(추상클래스)

	게임엔진의 일반적인 작동은 GameCore에서 GameState를 인터페이스를 통해 호출하며 작동합니다.\n
	각각의 게임상태들은 동인한 인터페이스를 상속받기만 하면 독립적인 설계가 가능합니다.
*/
class GameState {
	public:
		GameState(){}
		virtual ~GameState(){}

		virtual void initState(LayerInfo* _pLayerInfo)=0;
		virtual void cache()=0;
		virtual void input()=0;
		virtual void process()=0;
		virtual GameState* changeState()=0;
		virtual void render()=0;
};

#endif