#include "EntityBase.h"

#include "coll2d.h"

namespace Engine {

bool EntityControllerState::GetKey (int state) {
	assert (state < EntityControllerMaxKeyStates && state >= 0);

	return mKeyState.test (state);
}

void EntityControllerState::SetKey (int state) {
	assert (state < EntityControllerMaxKeyStates && state >= 0);
	
	LogDebug ("Entity %d: Setting Entity Key State %d", mId, state);
	mKeyState.set (state);
}

void EntityControllerState::UnsetKey (int state) {
	assert (state < EntityControllerMaxKeyStates && state >= 0);
	
	LogDebug ("Entity %d: Unsetting Entity Key State %d", mId, state);
	mKeyState.reset (state);
}

void EntityControllerState::Reset () {
	LogDebug ("Entity %d: Resetting all key states", mId);
	mKeyState.reset ();
}

void EntityBase::SetControllerKeyState (int state) {
	if (!mControllerState) {
		LogError ("Error when trying to send a KeyState to an Entity that has no EntityControllerState!");
	}

	mControllerState->SetKey (state);
}

void EntityBase::UnsetControllerKeyState (int state) {
	if (!mControllerState) {
		LogError ("Error when trying to send a KeyState to an Entity that has no EntityControllerState!");
	}

	mControllerState->UnsetKey (state);
}

void EntityBase::ResetControllerKeyState () {
	if (!mControllerState) {
		LogError ("Error when trying to send a KeyState to an Entity that has no EntityControllerState!");
	}

	LogDebug ("Entity %d: Resetting key states", mId);
	mControllerState->Reset ();
}

}
