OSDN Git Service

Add operator+ and operator+= to Discipline class.
authorDeskull <deskull@users.sourceforge.jp>
Wed, 5 Mar 2014 12:38:19 +0000 (21:38 +0900)
committerDeskull <deskull@users.sourceforge.jp>
Wed, 5 Mar 2014 12:38:19 +0000 (21:38 +0900)
Deeangband/Discipline.cpp
Deeangband/Discipline.h

index 8dfb9b3..10cf6d9 100644 (file)
@@ -50,12 +50,32 @@ void Discipline::PlusPoint(DISCIPLINE_TYPE typ, int point)
        this->disciplinePoint[typ] += point;
 }
 
-DISCIPLINE_POINT Discipline::GetPoint(DISCIPLINE_TYPE typ)
+const DISCIPLINE_POINT Discipline::GetPoint(DISCIPLINE_TYPE typ)
 {
        return this->disciplinePoint[typ];
 }
 
-DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ)
+const DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ)
 {
        return (int)(sqrt(abs(this->disciplinePoint[typ]) / 250.0f) * (this->disciplinePoint[typ] > 0 ? 1 : -1));
 }
+
+Discipline Discipline::operator+(const Discipline& plus)
+{
+       this->disciplinePoint[DISCIPLINE_TYPE_GOOD] += plus.disciplinePoint[DISCIPLINE_TYPE_GOOD];
+       this->disciplinePoint[DISCIPLINE_TYPE_EVIL] += plus.disciplinePoint[DISCIPLINE_TYPE_EVIL];
+       this->disciplinePoint[DISCIPLINE_TYPE_ORDER] += plus.disciplinePoint[DISCIPLINE_TYPE_ORDER];
+       this->disciplinePoint[DISCIPLINE_TYPE_CHAOS] += plus.disciplinePoint[DISCIPLINE_TYPE_CHAOS];
+       this->disciplinePoint[DISCIPLINE_TYPE_BALANCE] += plus.disciplinePoint[DISCIPLINE_TYPE_BALANCE];
+       return *this;
+}
+
+Discipline& Discipline::operator+=(const Discipline& plus)
+{
+       this->disciplinePoint[DISCIPLINE_TYPE_GOOD] += plus.disciplinePoint[DISCIPLINE_TYPE_GOOD];
+       this->disciplinePoint[DISCIPLINE_TYPE_EVIL] += plus.disciplinePoint[DISCIPLINE_TYPE_EVIL];
+       this->disciplinePoint[DISCIPLINE_TYPE_ORDER] += plus.disciplinePoint[DISCIPLINE_TYPE_ORDER];
+       this->disciplinePoint[DISCIPLINE_TYPE_CHAOS] += plus.disciplinePoint[DISCIPLINE_TYPE_CHAOS];
+       this->disciplinePoint[DISCIPLINE_TYPE_BALANCE] += plus.disciplinePoint[DISCIPLINE_TYPE_BALANCE];
+       return *this;
+}
index 1c86e00..91e199d 100644 (file)
@@ -61,14 +61,14 @@ public:
         * @param typ \8fC\97{\92l\82Ì\8eí\95Ê
         * @return \8fC\97{\92l
         */
-       DISCIPLINE_POINT Discipline::GetPoint(DISCIPLINE_TYPE typ);
+       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
         */
-       DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ);
+       const DISCIPLINE_POINT Discipline::GetRank(DISCIPLINE_TYPE typ);
 
        /*! 
         * @brief \8fC\97{\92l\82ð\90Ý\92è\82·\82é
@@ -97,4 +97,15 @@ public:
         */
        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& obj);
 };