/*!
- * @file Discipline.h
- * @brief \8fC\97{\82Ì\83v\83\8d\83g\83^\83C\83v\90é\8c¾
- * @date 2014/03/04
- * @author Deskull
- * 2014 Sikabane Works.
- */
+* @file Discipline.h
+* @brief \8fC\97{\82Ì\83v\83\8d\83g\83^\83C\83v\90é\8c¾
+* @date 2014/03/04
+* @author Deskull
+* 2014 Sikabane Works.
+*/
#pragma once
#include "stdafx.h"
#include "Deeangband.h"
-/*!
- * @brief \8fC\97{\91®\90«\82Ì\97ñ\8b\93\91Ì
- */
-typedef enum DISCIPLINE_TYPE
-{
- DISCIPLINE_TYPE_GOOD, //!< \8fC\97{\91®\90«:\91P
- DISCIPLINE_TYPE_EVIL, //!< \8fC\97{\91®\90«:\88«
- DISCIPLINE_TYPE_ORDER, //!< \8fC\97{\91®\90«:\92\81\8f\98
- DISCIPLINE_TYPE_CHAOS, //!< \8fC\97{\91®\90«:\8d¬\93×
- DISCIPLINE_TYPE_BALANCE, //!< \8fC\97{\91®\90«:\93V\94\89
- MAX_DISCIPLINE_TYPES, //!< \8fC\97{\91®\90«\90\94
-} DISCIPLINE_TYPE;
-
-
-/*!
- * @class Discipline
- * @brief \8fC\97{\82Ì\83N\83\89\83X
- */
-class Discipline
+namespace Deeangband
{
-private:
- int disciplinePoint[MAX_DISCIPLINE_TYPES];
-
-public:
-
- /*!
- * @brief Discipline\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
- * @param good \91P\82Ì\8fC\97{\92l
- * @param evil \88«\82Ì\8fC\97{\92l
- * @param order \92\81\8f\98\82Ì\8fC\97{\92l
- * @param chaos \8d¬\93×\82Ì\8fC\97{\92l
- * @param balance \93V\94\89\82Ì\8fC\97{\92l
- */
- Discipline::Discipline(int good, int evil, int order, int chaos, int balance);
-
- /*!
- * @brief Discipline\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
- */
- Discipline::Discipline(void);
-
- /*!
- * @brief Discipline\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
- */
- Discipline::~Discipline(void);
-
- /*!
- * @brief \8fC\97{\92l\82ð\8eæ\93¾\82·\82é
- * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
- * @return \8fC\97{\92l
- */
- const DISCIPLINE_POINT Discipline::GetPoint(DISCIPLINE_TYPE typ);
-
- /*!
- * @brief \8fC\97{\83\89\83\93\83N\82ð\8eæ\93¾\82·\82é
- * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
- * @return \8fC\97{\83\89\83\93\83N
- */
- const DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ);
- /*!
- * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
- * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
- * @param point \91ã\93ü\92l
- * @return \82È\82µ
- */
- void Discipline::SetPoint(DISCIPLINE_TYPE typ, int point);
+ /*!
+ * @brief \8fC\97{\91®\90«\82Ì\97ñ\8b\93\91Ì
+ */
+ typedef enum DISCIPLINE_TYPE
+ {
+ DISCIPLINE_TYPE_GOOD, //!< \8fC\97{\91®\90«:\91P
+ DISCIPLINE_TYPE_EVIL, //!< \8fC\97{\91®\90«:\88«
+ DISCIPLINE_TYPE_ORDER, //!< \8fC\97{\91®\90«:\92\81\8f\98
+ DISCIPLINE_TYPE_CHAOS, //!< \8fC\97{\91®\90«:\8d¬\93×
+ DISCIPLINE_TYPE_BALANCE, //!< \8fC\97{\91®\90«:\93V\94\89
+ MAX_DISCIPLINE_TYPES, //!< \8fC\97{\91®\90«\90\94
+ } DISCIPLINE_TYPE;
- /*!
- * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
- * @param good \91P\82Ì\8fC\97{\92l
- * @param evil \88«\82Ì\8fC\97{\92l
- * @param order \92\81\8f\98\82Ì\8fC\97{\92l
- * @param chaos \8d¬\93×\82Ì\8fC\97{\92l
- * @param balance \93V\94\89\82Ì\8fC\97{\92l
- * @return \82È\82µ
- */
- void Discipline::SetPoint(int good, int evil, int order, int chaos, int balance);
/*!
- * @brief \8fC\97{\92l\82ð\89Á\8c¸\8eZ\82·\82é
- * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
- * @param point \89Á\8eZ\92l
- * @return \82È\82µ
- */
- void Discipline::PlusPoint(DISCIPLINE_TYPE typ, int point);
-
- /*!
- * @brief +\89\89\8eZ\8eq\82É\82æ\82é\8fC\97{\92l\91S\89Á\8eZ
- * @param plus \89Á\8eZ\8c³
- */
- Discipline Discipline::operator+(const Discipline& plus);
-
- /*!
- * @brief +=\89\89\8eZ\8eq\82É\82æ\82é\8fC\97{\92l\91S\89Á\8eZ
- * @param plus \89Á\8eZ\8c³
- */
- Discipline& Discipline::operator+=(const Discipline& plus);
-};
+ * @class Discipline
+ * @brief \8fC\97{\82Ì\83N\83\89\83X
+ */
+ class Discipline
+ {
+ private:
+
+ NAME name;
+ int disciplinePoint[MAX_DISCIPLINE_TYPES];
+
+ friend class boost::serialization::access;
+
+ /*!
+ * @brief \83N\83\89\83X\82Ì\83V\83\8a\83A\83\89\83C\83Y\82ð\90Ý\92è\82·\82é
+ * @param archive \83A\81[\83J\83C\83u\89»\82·\82é\83N\83\89\83X\82Ì\83A\83h\83\8c\83X
+ * @param version \83t\83@\83C\83\8b\83o\81[\83W\83\87\83\93
+ * @return XMLSerialize\83e\83\93\83v\83\8c\81[\83g
+ */
+ template<class Archive> void serialize(Archive &archive, const unsigned int version)
+ {
+ if(version <= 10)
+ {
+ archive & boost::serialization::make_nvp("Point", disciplinePoint);
+ }
+ else
+ {
+ archive & boost::serialization::make_nvp("Good", disciplinePoint[DISCIPLINE_TYPE_GOOD]);
+ archive & boost::serialization::make_nvp("Evil", disciplinePoint[DISCIPLINE_TYPE_EVIL]);
+ archive & boost::serialization::make_nvp("Order", disciplinePoint[DISCIPLINE_TYPE_ORDER]);
+ archive & boost::serialization::make_nvp("Chaos", disciplinePoint[DISCIPLINE_TYPE_CHAOS]);
+ archive & boost::serialization::make_nvp("Balance", disciplinePoint[DISCIPLINE_TYPE_BALANCE]);
+ }
+ }
+
+
+ public:
+
+ /*!
+ * @brief Discipline\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
+ * @param good \91P\82Ì\8fC\97{\92l
+ * @param evil \88«\82Ì\8fC\97{\92l
+ * @param order \92\81\8f\98\82Ì\8fC\97{\92l
+ * @param chaos \8d¬\93×\82Ì\8fC\97{\92l
+ * @param balance \93V\94\89\82Ì\8fC\97{\92l
+ */
+ Discipline::Discipline(int good, int evil, int order, int chaos, int balance);
+
+ /*!
+ * @brief Discipline\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
+ */
+ Discipline::Discipline(void);
+
+ /*!
+ * @brief Discipline\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
+ */
+ Discipline::~Discipline(void);
+
+ /*!
+ * @brief \8fC\97{\92l\82ð\8eæ\93¾\82·\82é
+ * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
+ * @return \8fC\97{\92l
+ */
+ const DISCIPLINE_POINT Discipline::GetPoint(DISCIPLINE_TYPE typ);
+
+ /*!
+ * @brief \8fC\97{\83\89\83\93\83N\82ð\8eæ\93¾\82·\82é
+ * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
+ * @return \8fC\97{\83\89\83\93\83N
+ */
+ const DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ);
+
+ /*!
+ * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
+ * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
+ * @param point \91ã\93ü\92l
+ * @return \82È\82µ
+ */
+ void Discipline::SetPoint(DISCIPLINE_TYPE typ, int point);
+
+ /*!
+ * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
+ * @param good \91P\82Ì\8fC\97{\92l
+ * @param evil \88«\82Ì\8fC\97{\92l
+ * @param order \92\81\8f\98\82Ì\8fC\97{\92l
+ * @param chaos \8d¬\93×\82Ì\8fC\97{\92l
+ * @param balance \93V\94\89\82Ì\8fC\97{\92l
+ * @return \82È\82µ
+ */
+ void Discipline::SetPoint(int good, int evil, int order, int chaos, int balance);
+
+ /*!
+ * @brief \8fC\97{\92l\82ð\89Á\8c¸\8eZ\82·\82é
+ * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
+ * @param point \89Á\8eZ\92l
+ * @return \82È\82µ
+ */
+ void Discipline::PlusPoint(DISCIPLINE_TYPE typ, int point);
+
+ /*!
+ * @brief +\89\89\8eZ\8eq\82É\82æ\82é\8fC\97{\92l\91S\89Á\8eZ
+ * @param plus \89Á\8eZ\8c³
+ */
+ Discipline Discipline::operator+(const Discipline& plus);
+
+ /*!
+ * @brief +=\89\89\8eZ\8eq\82É\82æ\82é\8fC\97{\92l\91S\89Á\8eZ
+ * @param plus \89Á\8eZ\8c³
+ */
+ Discipline& Discipline::operator+=(const Discipline& plus);
+
+ /*!
+ * @brief \8fC\97{\96¼\82ð\95Ô\82·
+ * @return \8fC\97{\96¼
+ */
+ std::string Discipline::GetName(void);
+
+ };
+
+}
+
+BOOST_CLASS_VERSION(Deeangband::Discipline, 11);