|  | @@ -2,7 +2,7 @@ use bitboard::Bitboard;
 | 
											
												
													
														|  |  use bitboard::Square;
 |  |  use bitboard::Square;
 | 
											
												
													
														|  |  use bitboard::*;
 |  |  use bitboard::*;
 | 
											
												
													
														|  |  use game::Game;
 |  |  use game::Game;
 | 
											
												
													
														|  | -use hash::Cache;
 |  | 
 | 
											
												
													
														|  | 
 |  | +use hash::{Cache, EntryType};
 | 
											
												
													
														|  |  use log::info;
 |  |  use log::info;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  pub type Side = bool;
 |  |  pub type Side = bool;
 | 
											
										
											
												
													
														|  | @@ -205,7 +205,15 @@ pub fn sort_moves(game: &Game, hash: &mut Cache, move_list: &mut Vec<Move>) {
 | 
											
												
													
														|  |      move_list.sort_by_cached_key(|mov| {
 |  |      move_list.sort_by_cached_key(|mov| {
 | 
											
												
													
														|  |          let new_game = crate::search::apply_move(game, *mov);
 |  |          let new_game = crate::search::apply_move(game, *mov);
 | 
											
												
													
														|  |          if let Some(e) = hash.lookup(&new_game) {
 |  |          if let Some(e) = hash.lookup(&new_game) {
 | 
											
												
													
														|  | -            return e.value;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            if let EntryType::Value = e.entry_type {
 | 
											
												
													
														|  | 
 |  | +                return e.value;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            else if let EntryType::LowerBound = e.entry_type {
 | 
											
												
													
														|  | 
 |  | +                return e.value + 1000;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            else if let EntryType::UpperBound = e.entry_type {
 | 
											
												
													
														|  | 
 |  | +                return e.value - 1000;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          else {
 |  |          else {
 | 
											
												
													
														|  |              return crate::evaluate::evaluate(&new_game);
 |  |              return crate::evaluate::evaluate(&new_game);
 |