Card/CardPosition.js

// ПОЗИЦИОНИРОВАНИЕ

/**
* Устанавливает абсолютную позицию карты.
* @param {number}  x                 позиция по горизонтали
* @param {number}  y                 позиция по вертикали
* @param {boolean} [resetMover=true] нужно ли останавливать {@link Card#mover}
*/
Card.prototype.setPosition = function(x, y, resetMover){

	if(typeof resetMover == 'undefined'){
		resetMover = true;
	}

	if(this.mover && resetMover){
		this.mover.stop();
		this.mover = null;
	}

	this.sprite.x = x - this.x;
	this.sprite.y = y - this.y;
	this.update();
};

/**
* Устанавливает положение карты по отношению к базе карты.
* @param {number}  x                 позиция по горизонтали
* @param {number}  y                 позиция по вертикали
* @param {boolean} [resetMover=true] нужно ли останавливать {@link Card#mover}
*/
Card.prototype.setRelativePosition = function(x, y, resetMover){

	if(typeof resetMover == 'undefined'){
		resetMover = true;
	}

	if(this.mover && resetMover){
		this.mover.stop();
		this.mover = null;
	}

	this.sprite.x = x;
	this.sprite.y = y;
	this.update();
};

/**
* Устанавливает позицию базы карты.
* @param {number}  x                 позиция по горизонтали
* @param {number}  y                 позиция по вертикали
* @param {boolean} [resetMover=true] нужно ли останавливать {@link Card#mover}
*/
Card.prototype.setBase = function(x, y, resetMover){

	if(typeof resetMover == 'undefined'){
		resetMover = true;
	}

	if(this.mover && resetMover){
		this.mover.stop();
		this.mover = null;
	}

	this.x = x;
	this.y = y;
	this.update();
};

/**
* Устанавливает позицию базы карты, сохраняя относительный сдвиг спрайта и хвоста.
* @param {number}  x                 позиция по горизонтали
* @param {number}  y                 позиция по вертикали
* @param {boolean} [resetMover=true] нужно ли останавливать {@link Card#mover}
*/
Card.prototype.setBasePreserving = function(x, y, resetMover){

	if(typeof resetMover == 'undefined'){
		resetMover = true;
	}

	var shiftX = x - this.x,
		shiftY = y - this.y,
		newX = this.sprite.x - shiftX,
		newY = this.sprite.y - shiftY;
	this.setBase(x, y, resetMover);
	this.setRelativePosition(newX, newY, false);

	// Смещаем хвост карты
	if(cardControl.trail.parent == this){
		cardControl.trailShift(-shiftX, -shiftY);
	}
};

/**
* Запоминает id поля, в которое будет перемещена карта. Устанавливает перетаскиваемость.
* @param {string} fieldId id поля
*/
Card.prototype.presetField = function(fieldId){
	if(this.fieldId == fieldId){
		return false;
	}
	this.fieldId = fieldId;
	if(fieldId == this.game.pid){
		this.setDraggability(true);
	}
	else{
		this.setDraggability(false);
	}
	return true;
};

/**
* Устанавливает угол поворота карты.
* @param {number} angle угол поворота
*/
Card.prototype.setAngle = function(angle){
	if(this._rotator){
		this._rotator.stop();
		this._rotator = null;
	}

	this.sprite.angle = angle;
	this._glowUpdatePosition();
};

/**
* Устанавливает масштаб карты относительно масштаба текущего скина.
* @param {number} scale масштаб
*/
Card.prototype.setScale = function(scale){
	scale = this.skin.scale*scale;
	if(scale != this.sprite.scale.x || scale != this.sprite.scale.y){
		this.sprite.scale.setTo(scale, scale);
		this.glow.scale.setTo(scale, scale);
	}
};