00001 /* selectCheapest.h 00002 */ 00003 #ifndef _SELECTCHEAPEST_H 00004 #define _SELECTCHEAPEST_H 00005 00006 #include "osl/eval/pieceEval.h" 00007 namespace osl 00008 { 00009 namespace effect_action 00010 { 00014 struct SelectCheapest 00015 { 00016 Piece result; 00017 int value; 00018 SelectCheapest() 00019 : result(Piece::EMPTY()), value(eval::PtypeEvalTraits<KING>::val+1) 00020 { 00021 } 00022 template <Player P> 00023 void doAction(Piece cur, Position) 00024 { 00025 const int curValue = eval::Ptype_Eval_Table.value(cur.ptype()); 00026 if (curValue < value) 00027 { 00028 result = cur; 00029 value = curValue; 00030 } 00031 } 00032 bool done() const{ return false; } 00033 }; 00034 00035 } // namespace effect_action 00036 } // namespace osl 00037 00038 #endif /* _SELECTCHEAPEST_H */ 00039 // ;;; Local Variables: 00040 // ;;; mode:c++ 00041 // ;;; c-basic-offset:2 00042 // ;;; End: