//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: time.hpp
//      Краткое описание: time representation
//

#ifndef DSE_KERNEL_TIMETABLE_TIME_HPP
#define DSE_KERNEL_TIMETABLE_TIME_HPP

namespace ker
{
	class Time
	{
	private:
		unsigned char hour;
		unsigned char minute;
		unsigned char second;

		float cur_day_minute;
		float cur_day_hour;
		float cur_day_second;

		void _calculateCurDayMin();
		void _calculateCurDaySec();
		void _calculateCurDayHour();
		void _calculateAllCurDayValues();
	public:
		Time();
		Time(const unsigned char hour, const unsigned char minute, const unsigned char second);
		Time(const float cur_day_minute);
		Time(const Time& time);
		~Time();

		bool operator <(const Time& time) const;
		Time& operator=(const Time& time);
		
		const unsigned char getHour() const;
		const unsigned char getMinute() const;
		const unsigned char getSecond() const;
		const float getCurrentDayMinute() const;
		const float getCurrentDayHour() const;
		const float getCurrentDaySecond() const;

		void setHour(const unsigned char new_hour);
		void setMinute(const unsigned char new_minute);
		void setSecond(const unsigned char new_second);
		void setTime(const unsigned char new_hour, const unsigned char new_minute, const unsigned char new_second);
		void setCurrentDayMinute(const float new_day_minute);
	};

	std::ostream& operator<<(std::ostream& os, const Time& time);
};

#include "time.inl"

#endif

