#pragma once

#include <unordered_map>
#include "Input.hpp"

template<typename T = int>
class InputMap
{
	public:
		InputMap(const InputMap& copy) = delete;
		InputMap<T>& operator=(const InputMap<T>& copy) = delete;
		
		InputMap() = default;

		
		void map(const T& key, const Input& input)
		{
			_map.emplace(key, input);
		}
		void duoMap(const T& key, const Input& input1, const Input& input2)
		{
			_map.emplace(key, input1);
			_map.emplace(-key, input2);
		}
		const Input& get(const T& key) const
		{
			return _map.at(key);
		}
	private:
		std::unordered_map<T, Input> _map;
};