OSDN Git Service

ゲーム時間経過処理を実装中 / Implementing game time processing.
[deeangband/Deeangband-new.git] / Deeangband / Discipline.h
index 9b396dd..02eaddb 100644 (file)
 /*!
- * @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);