/* Material.cpp
 *
 * Kubo Ryosuke
 */

#include "Material.hpp"

namespace sunfish {

namespace material {

Score scores[PieceNumber::Num] = {
  /*  0 */ MATERIAL_SCORE_PAWN,
  /*  1 */ MATERIAL_SCORE_LANCE,
  /*  2 */ MATERIAL_SCORE_KNIGHT,
  /*  3 */ MATERIAL_SCORE_SILVER,
  /*  4 */ MATERIAL_SCORE_GOLD,
  /*  5 */ MATERIAL_SCORE_BISHOP,
  /*  6 */ MATERIAL_SCORE_ROOK,
  /*  7 */ Score::materialInfinity(),
  /*  8 */ MATERIAL_SCORE_TOKIN,
  /*  9 */ MATERIAL_SCORE_PRO_LANCE,
  /* 10 */ MATERIAL_SCORE_PRO_KNIGHT,
  /* 11 */ MATERIAL_SCORE_PRO_SILVER,
  /* 12 */ 0,
  /* 13 */ MATERIAL_SCORE_HORSE,
  /* 14 */ MATERIAL_SCORE_DRAGON,
  /* 15 */ 0,
  /* 16 */ MATERIAL_SCORE_PAWN,
  /* 17 */ MATERIAL_SCORE_LANCE,
  /* 18 */ MATERIAL_SCORE_KNIGHT,
  /* 19 */ MATERIAL_SCORE_SILVER,
  /* 20 */ MATERIAL_SCORE_GOLD,
  /* 21 */ MATERIAL_SCORE_BISHOP,
  /* 22 */ MATERIAL_SCORE_ROOK,
  /* 23 */ Score::materialInfinity(),
  /* 24 */ MATERIAL_SCORE_TOKIN,
  /* 25 */ MATERIAL_SCORE_PRO_LANCE,
  /* 26 */ MATERIAL_SCORE_PRO_KNIGHT,
  /* 27 */ MATERIAL_SCORE_PRO_SILVER,
  /* 28 */ 0,
  /* 29 */ MATERIAL_SCORE_HORSE,
  /* 30 */ MATERIAL_SCORE_DRAGON,
};

Score exchangeScores[PieceNumber::Num] = {
  /*  0 */ MATERIAL_SCORE_PAWN_EX,
  /*  1 */ MATERIAL_SCORE_LANCE_EX,
  /*  2 */ MATERIAL_SCORE_KNIGHT_EX,
  /*  3 */ MATERIAL_SCORE_SILVER_EX,
  /*  4 */ MATERIAL_SCORE_GOLD_EX,
  /*  5 */ MATERIAL_SCORE_BISHOP_EX,
  /*  6 */ MATERIAL_SCORE_ROOK_EX,
  /*  7 */ Score::materialInfinity(),
  /*  8 */ MATERIAL_SCORE_TOKIN_EX,
  /*  9 */ MATERIAL_SCORE_PRO_LANCE_EX,
  /* 10 */ MATERIAL_SCORE_PRO_KNIGHT_EX,
  /* 11 */ MATERIAL_SCORE_PRO_SILVER_EX,
  /* 12 */ 0,
  /* 13 */ MATERIAL_SCORE_HORSE_EX,
  /* 14 */ MATERIAL_SCORE_DRAGON_EX,
  /* 15 */ 0,
  /* 16 */ MATERIAL_SCORE_PAWN_EX,
  /* 17 */ MATERIAL_SCORE_LANCE_EX,
  /* 18 */ MATERIAL_SCORE_KNIGHT_EX,
  /* 19 */ MATERIAL_SCORE_SILVER_EX,
  /* 20 */ MATERIAL_SCORE_GOLD_EX,
  /* 21 */ MATERIAL_SCORE_BISHOP_EX,
  /* 22 */ MATERIAL_SCORE_ROOK_EX,
  /* 23 */ Score::materialInfinity(),
  /* 24 */ MATERIAL_SCORE_TOKIN_EX,
  /* 25 */ MATERIAL_SCORE_PRO_LANCE_EX,
  /* 26 */ MATERIAL_SCORE_PRO_KNIGHT_EX,
  /* 27 */ MATERIAL_SCORE_PRO_SILVER_EX,
  /* 28 */ 0,
  /* 29 */ MATERIAL_SCORE_HORSE_EX,
  /* 30 */ MATERIAL_SCORE_DRAGON_EX,
};

Score promotionScores[PieceNumber::Num] = {
  /*  0 */ MATERIAL_SCORE_TOKIN - MATERIAL_SCORE_PAWN,
  /*  1 */ MATERIAL_SCORE_PRO_LANCE - MATERIAL_SCORE_LANCE,
  /*  2 */ MATERIAL_SCORE_PRO_KNIGHT - MATERIAL_SCORE_KNIGHT,
  /*  3 */ MATERIAL_SCORE_PRO_SILVER - MATERIAL_SCORE_SILVER,
  /*  4 */ 0,
  /*  5 */ MATERIAL_SCORE_HORSE - MATERIAL_SCORE_BISHOP,
  /*  6 */ MATERIAL_SCORE_DRAGON - MATERIAL_SCORE_ROOK,
  /*  7 */ 0,
  /*  8 */ MATERIAL_SCORE_TOKIN - MATERIAL_SCORE_PAWN,
  /*  9 */ MATERIAL_SCORE_PRO_LANCE - MATERIAL_SCORE_LANCE,
  /* 10 */ MATERIAL_SCORE_PRO_KNIGHT - MATERIAL_SCORE_KNIGHT,
  /* 11 */ MATERIAL_SCORE_PRO_SILVER - MATERIAL_SCORE_SILVER,
  /* 12 */ 0,
  /* 13 */ MATERIAL_SCORE_HORSE - MATERIAL_SCORE_BISHOP,
  /* 14 */ MATERIAL_SCORE_DRAGON - MATERIAL_SCORE_ROOK,
  /* 15 */ 0,
  /* 16 */ MATERIAL_SCORE_TOKIN - MATERIAL_SCORE_PAWN,
  /* 17 */ MATERIAL_SCORE_PRO_LANCE - MATERIAL_SCORE_LANCE,
  /* 18 */ MATERIAL_SCORE_PRO_KNIGHT - MATERIAL_SCORE_KNIGHT,
  /* 19 */ MATERIAL_SCORE_PRO_SILVER - MATERIAL_SCORE_SILVER,
  /* 20 */ 0,
  /* 21 */ MATERIAL_SCORE_HORSE - MATERIAL_SCORE_BISHOP,
  /* 22 */ MATERIAL_SCORE_DRAGON - MATERIAL_SCORE_ROOK,
  /* 23 */ 0,
  /* 24 */ MATERIAL_SCORE_TOKIN - MATERIAL_SCORE_PAWN,
  /* 25 */ MATERIAL_SCORE_PRO_LANCE - MATERIAL_SCORE_LANCE,
  /* 26 */ MATERIAL_SCORE_PRO_KNIGHT - MATERIAL_SCORE_KNIGHT,
  /* 27 */ MATERIAL_SCORE_PRO_SILVER - MATERIAL_SCORE_SILVER,
  /* 28 */ 0,
  /* 29 */ MATERIAL_SCORE_HORSE - MATERIAL_SCORE_BISHOP,
  /* 30 */ MATERIAL_SCORE_DRAGON - MATERIAL_SCORE_ROOK,
};

} // namespace material

} // namespace sunfish
