"use strict";
Object.defineProperties(exports, {
EnPassantTarget: {get: function() {
return EnPassantTarget;
}},
__esModule: {value: true}
});
var PAWN = require('../../brands').PAWN;
var Point = require('../../point').Point;
var $__2 = require('../../util'),
squareCoords = $__2.squareCoords,
squareName = $__2.squareName;
var EnPassantTarget = function EnPassantTarget(fenEncoding) {
if (fenEncoding instanceof $EnPassantTarget) {
return fenEncoding;
}
if (fenEncoding != null) {
try {
throw undefined;
} catch (coords) {
{
coords = squareCoords(fenEncoding);
$traceurRuntime.superCall(this, $EnPassantTarget.prototype, "constructor", [coords.x, coords.y]);
}
}
} else {
$traceurRuntime.superCall(this, $EnPassantTarget.prototype, "constructor", [-1, -1]);
}
this.fenEncoding = fenEncoding;
};
var $EnPassantTarget = EnPassantTarget;
($traceurRuntime.createClass)(EnPassantTarget, {
offset: function() {
return new Point(0, this.y === 3 ? -1 : 1);
},
equal: function(squareNameP) {
return this.fenEncoding && $traceurRuntime.superCall(this, $EnPassantTarget.prototype, "equal", [squareCoords(squareNameP)]);
},
toString: function() {
return this.fenEncoding || '-';
}
}, {analyze: function(position, piece, targetSquare) {
if (piece.brand !== PAWN) {
return null;
}
var target = squareCoords(targetSquare);
var thrust = $traceurRuntime.assertObject(target.difference(position.pieceCoords(piece))).y;
if (Math.abs(thrust) === 2) {
return squareName(target.sum(new Point(0, -piece.reach)));
}
return null;
}}, Point);
|