/**
* Отображает сообщения о игровых событиях чуть выше центра экрана.
* Также отличается от {@link MessageFeed} стилями сообщений и
* тем, что старые сообщения уменьшаются в размере.
* @param {Game} game игра
* @param {string} [name] имя фида
* @class
* @extends {MessageFeed}
*/
MessageFeed.EventFeed = function(game, name){
MessageFeed.call(this, game);
/**
* Стили текста.
* @type {Object}
* @property {object} system Красный текст 50px
*/
this.styles = {
'system': {
fill: ui.colors.menu.red.background,
stroke: ui.colors.menu.red.outer,
font: '50px Exo, Helvetica',
strokeThickness: 2,
align: 'center'
},
'positive': {
fill: ui.colors.menu.green.background,
stroke: ui.colors.menu.green.outer,
font: '50px Exo, Helvetica',
strokeThickness: 2,
align: 'center'
},
'neutral': {
fill: ui.colors.menu.orange.background,
stroke: ui.colors.menu.orange.outer,
font: '50px Exo, Helvetica',
strokeThickness: 2,
align: 'center'
}
};
this.name = name || 'eventFeed';
/**
* Масштаб сообщений.
* @type {Array}
*/
this._scales = [1, 0.75];
};
extend(MessageFeed.EventFeed, MessageFeed);
MessageFeed.EventFeed.prototype._styleText = function(text){
text.setShadow(2, 2, 'rgba(0,0,0,1)', 5);
text.anchor.set(0.5, 0.5);
if(fieldManager.networkCreated){
var builder = fieldManager.builder;
var width = game.scale.gridWidth - (builder.dimensions.opponent[0].width + 10)*2;
var dif = width/text.width;
if(dif < 1){
text.baseScale = dif;
}
}
};
MessageFeed.EventFeed.prototype._getX = function(){
return this.game.screenWidth/2;
};
MessageFeed.EventFeed.prototype._getLowestY = function(){
return game.scale.cellRelation < 2.1 ? game.scale.cellAt(0, 4).y : this.game.screenHeight*0.25;
};
MessageFeed.EventFeed.prototype._destroyMessage = function(text){
if(text.scaleTween){
text.scaleTween.stop();
}
supercall(MessageFeed.EventFeed)._destroyMessage.call(this, text);
};
MessageFeed.EventFeed.prototype._moveMessage = function(text, i, ii, x, y){
if(text.moveTween){
text.moveTween.stop();
}
if(text.scaleTween){
text.scaleTween.stop();
}
var len = this.children.length;
ii = len - 1 - ii;
// Удаляем сообщения, для которых не задан масштаб
if(ii >= this._scales.length){
this.removeMessage(text);
}
var scale = this._scales[ii] || 0;
var alpha = scale;
if(text.baseScale){
scale *= text.baseScale;
}
text.moveTween = this.game.add.tween(text);
text.moveTween.to({x: x, y: y, alpha: alpha}, this.fadeTime, Phaser.Easing.Quadratic.Out, true);
text.scaleTween = this.game.add.tween(text.scale);
text.scaleTween.to({x: scale, y: scale}, this.fadeTime, Phaser.Easing.Quadratic.Out, true);
};