OSDN Git Service

Add serialize() to Discipline class.
[deeangband/Deeangband-new.git] / Deeangband / Discipline.h
1 /*!
2  * @file Discipline.h
3  * @brief \8fC\97{\82Ì\83v\83\8d\83g\83^\83C\83v\90é\8c¾
4  * @date 2014/03/04
5  * @author Deskull
6  * 2014 Sikabane Works.
7  */
8
9 #pragma once
10
11 #include "stdafx.h"
12 #include "Deeangband.h"
13
14 /*!
15  * @brief \8fC\97{\91®\90«\82Ì\97ñ\8b\93\91Ì
16  */
17 typedef enum DISCIPLINE_TYPE
18 {
19         DISCIPLINE_TYPE_GOOD,    //!< \8fC\97{\91®\90«:\91P
20         DISCIPLINE_TYPE_EVIL,    //!< \8fC\97{\91®\90«:\88«
21         DISCIPLINE_TYPE_ORDER,   //!< \8fC\97{\91®\90«:\92\81\8f\98
22         DISCIPLINE_TYPE_CHAOS,   //!< \8fC\97{\91®\90«:\8d¬\93×
23         DISCIPLINE_TYPE_BALANCE, //!< \8fC\97{\91®\90«:\93V\94\89
24         MAX_DISCIPLINE_TYPES,    //!< \8fC\97{\91®\90«\90\94
25 } DISCIPLINE_TYPE;
26
27
28 /*! 
29  * @class Discipline
30  * @brief \8fC\97{\82Ì\83N\83\89\83X
31  */
32 class Discipline
33 {
34 private:
35
36         int disciplinePoint[MAX_DISCIPLINE_TYPES];
37
38         friend class boost::serialization::access;
39
40         /*!
41          * @brief \83N\83\89\83X\82Ì\83V\83\8a\83A\83\89\83C\83Y\89»\82ð\90Ý\92è\82·\82é
42          * @param archive \83A\81[\83J\83C\83u\89»\82·\82é\83N\83\89\83X\82Ì\83A\83h\83\8c\83X
43          * @param fileVersion \83t\83@\83C\83\8b\83o\81[\83W\83\87\83\93
44          * @return XMLSerialize\83e\83\93\83v\83\8c\81[\83g
45          */
46         template<class Archive> void serialize(Archive &archive, const unsigned int fileVersion) 
47         {
48                 int id;
49                 for(id = 0; id < MAX_DISCIPLINE_TYPES; id++)
50                 {
51                         archive & BOOST_SERIALIZATION_NVP(discipilinePoint[id]);
52                 }
53         }
54
55
56 public:
57
58         /*! 
59          * @brief Discipline\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
60          * @param good \91P\82Ì\8fC\97{\92l
61          * @param evil \88«\82Ì\8fC\97{\92l
62          * @param order \92\81\8f\98\82Ì\8fC\97{\92l
63          * @param chaos \8d¬\93×\82Ì\8fC\97{\92l
64          * @param balance \93V\94\89\82Ì\8fC\97{\92l
65          */
66         Discipline::Discipline(int good, int evil, int order, int chaos, int balance);
67
68         /*! 
69          * @brief Discipline\83N\83\89\83X\82Ì\83R\83\93\83X\83g\83\89\83N\83^
70          */
71         Discipline::Discipline(void);
72
73         /*! 
74          * @brief Discipline\83N\83\89\83X\82Ì\83f\83X\83g\83\89\83N\83^
75          */
76         Discipline::~Discipline(void);
77
78         /*! 
79          * @brief \8fC\97{\92l\82ð\8eæ\93¾\82·\82é
80          * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
81          * @return \8fC\97{\92l
82          */
83         const DISCIPLINE_POINT Discipline::GetPoint(DISCIPLINE_TYPE typ);
84
85         /*! 
86          * @brief \8fC\97{\83\89\83\93\83N\82ð\8eæ\93¾\82·\82é
87          * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
88          * @return \8fC\97{\83\89\83\93\83N
89          */
90         const DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ);
91
92         /*! 
93          * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
94          * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
95          * @param point \91ã\93ü\92l
96          * @return \82È\82µ
97          */
98         void Discipline::SetPoint(DISCIPLINE_TYPE typ, int point);
99
100         /*! 
101          * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
102          * @param good \91P\82Ì\8fC\97{\92l
103          * @param evil \88«\82Ì\8fC\97{\92l
104          * @param order \92\81\8f\98\82Ì\8fC\97{\92l
105          * @param chaos \8d¬\93×\82Ì\8fC\97{\92l
106          * @param balance \93V\94\89\82Ì\8fC\97{\92l
107          * @return \82È\82µ
108          */
109         void Discipline::SetPoint(int good, int evil, int order, int chaos, int balance);
110
111         /*! 
112          * @brief \8fC\97{\92l\82ð\89Á\8c¸\8eZ\82·\82é
113          * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
114          * @param point \89Á\8eZ\92l
115          * @return \82È\82µ
116          */
117         void Discipline::PlusPoint(DISCIPLINE_TYPE typ, int point);
118
119         /*!
120          * @brief +\89\89\8eZ\8eq\82É\82æ\82é\8fC\97{\92l\91S\89Á\8eZ
121          * @param plus \89Á\8eZ\8c³
122          */
123         Discipline Discipline::operator+(const Discipline& plus);  
124
125         /*!
126          * @brief +=\89\89\8eZ\8eq\82É\82æ\82é\8fC\97{\92l\91S\89Á\8eZ
127          * @param plus \89Á\8eZ\8c³
128          */
129         Discipline& Discipline::operator+=(const Discipline& plus);
130 };