//@STATE=作成中
//@DESCRIPTION ---------------------------------------------------------------
// AbstractCharacters.h: AbstractCharacters クラスのインターフェイス
//	履歴：
// $Log: AbstractCharacters.h,v $
// Revision 1.1  2001/10/28 21:40:35  fujiwara
// DLLに分割
//
// Revision 1.2  2001/07/09 20:30:07  fujiwara
// 例外処理の組み込み
//
// Revision 1.1  2001/06/03 09:21:03  fujiwara
// 抽象敵クラスの追加
//
//@DESCRIPTION_END -----------------------------------------------------------
//@AUTHOR=S.F.
// Copyright (C) 2000 Satoshi Fujiwara. All Rights Reserved.
///////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_ENEMYS_H__8DC400E3_9678_4AA5_B5A2_B96809AEEEEA__INCLUDED_)
#define AFX_ENEMYS_H__8DC400E3_9678_4AA5_B5A2_B96809AEEEEA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "character.h"
namespace sf {
	namespace application {
	
	class AbstractCharacters : public Characters 
	{
	public:
		// LIFE CYCLE //
		AbstractCharacters();
		virtual ~AbstractCharacters();
		// Type 定義 //
		// テクスチャローダへのポインタ
		typedef void (*LoaderFuncPtr)(void);
		// テクスチャ開放メソッドへのポインタ 
		typedef void (*UnloadFuncPtr)(void);

		// OPERATIONS 
		void initialize();
		// キャラクター移動
		void move(void);

		const bool hitCheck(Character * const pDest);
		const bool hitCheck(Characters * const pDest);
		const void clear(int index){mppAbstractCharacters[index] = NULL ; mCount-- ;};
		void unload(void);
		

		void ppCharacters(Character ** pp){mppAbstractCharacters = pp;};
		void ppLoaders(LoaderFuncPtr *pp){mppLoaders = pp;};
		void ppUnloaders(UnloadFuncPtr *pp){mppUnloaders = pp;};
		
		void count(const int value){mCount = value;};
		const int count(void){return mCount;};

		void max(const int value){mMax = value;};
		const int max(void){return mMax;};

		void typeMax(const int value){mTypeMax = value;};
		const int typeMax(void){return mTypeMax;};
	
	private:
		Character **mppAbstractCharacters;

		int mCount;
		int mMax;
		int mTypeMax;

		LoaderFuncPtr *mppLoaders;
		UnloadFuncPtr *mppUnloaders;

	};// AbstractCharacters
	
	}// application
}// sf

#endif // !defined(AFX_ENEMYS_H__8DC400E3_9678_4AA5_B5A2_B96809AEEEEA__INCLUDED_)
