import {CARD_COLORS} from "./uno.js";
export default class Style {
constructor(gameInstanz) {
this._game = gameInstanz;
this._cardOnDeck = null;
this._drawCardRunnig = false;
this._firstDraw = $('#first-draw');
this._firstPut = $('#first-put');
this._firstPutAnim = $('#first-put-anim');
this._unohover = false;
this._unoClicked = false;
$('#sayUno').on('mouseenter', () => {
if (this._unoClicked) return;
this.unoHover = true;
$('.uno').css('width', '28vw');
$('#sayUno-glow').css('opacity', 1);
})
$('#sayUno').on('mouseleave', () => {
if (this._unoClicked) return;
this.unoHover = false;
$('.uno').css('width', '25vw');
$('#sayUno-glow').css('opacity', 0.3);
this.startUnoLoop();
})
$('#sayUno').on('click', () => {
this.unoHover = true;
this._unoClicked = true;
$('.uno').css('transition', 'width ease-out 0.2s, filter 0.1s');
$('.uno').css('width', '22vw');
$('.uno').css('filter', 'grayscale(80%)');
$('#sayUno-glow').css('opacity', 1);
this.game.currentPlayerInstanz.sayUno();
this.game.currentPlayerInstanz.mustSayUno = false;
})
$('#drawCard').on('click', () => {
if(this.game.currentPlayerInstanz.mustSayUno){
this.game.currentPlayerInstanz.mustSayUno = false;
}
this.game.currentPlayerInstanz.drawCard(1, true, true);
this.refreshDebug();
});
this.firstDraw.on('mouseenter', () => {
this.drawCardAnim(true, false);
});
this.firstDraw.on('mouseleave', () => {
this.drawCardAnim(false, false);
});
this.firstDraw.on('click', () => {
if(this.game.currentPlayerInstanz.mustSayUno){
this.game.currentPlayerInstanz.mustSayUno = false;
this.game.style.hideUnoButton();
}
let playerInstanz = this.game.currentPlayerInstanz;
this.drawCardAnim(false, true);
playerInstanz.drawCard(1, true, true);
});
}
refreshHtml() {
this.refreshCardOnDeck();
this.showPlayerDeck(this.game.currentPlayerInstanz, true, false, true)
this.refreshDebug();
}
refreshCardOnDeck() {
if (this._cardOnDeck !== this.game.cardOnDeck) {
this.putCardAnim();
this._cardOnDeck = this.game.cardOnDeck;
} else {
this.firstPut.attr('src', './img/stackCards/' + this.game.cardOnDeck.color + '/' + this.game.cardOnDeck.name + '.png');
this.firstPutAnim.attr('src', './img/stackCards/' + this.game.cardOnDeck.color + '/' + this.game.cardOnDeck.name + '.png');
}
}
refreshDebug() {
$('#drawCard').css('background-color', 'white');
$("#player").html("Aktueller Spieler: " + this.game.currentPlayerInstanz.name + " | " + this.game.currentPlayerInstanz.hand.length);
$("#playerCards").html("Weitere Spieler:
");
for (let i = 0; i < this.game.players.length; i++) {
if(this.game.players[i] === this.game.currentPlayerInstanz) continue;
$('#playerCards').append("" + this.game.players[i].name + " | " + this.game.players[i].hand.length + "
");
}
$("#playerInGame").html("Spieler im Spiel: " + this.game.players.length);
}
showUnoButton(){
$('.uno').css('transition', 'width ease-in-out 0.5s');
$('#sayUno-glow').css('transition', 'width ease-in-out 0.5s, opacity 0.5s');
$('.uno').css('filter', 'grayscale(0%)');
$('#sayUno').css('opacity', 1);
this.unoHover = false;
this._unoClicked = false;
this.startUnoLoop();
}
hideUnoButton(){
$('#sayUno').css('opacity', 0);
}
startUnoLoop() {
if (!this.unoHover && !this._unoClicked) setTimeout(() => {
$('.uno').css('width', '28vw');
$('#sayUno-glow').css('opacity', 0.8);
setTimeout(() => {
if (!this.unoHover && !this._unoClicked) {
$('.uno').css('width', '25vw');
$('#sayUno-glow').css('opacity', 0.3);
this.startUnoLoop();
}
}, 500);
}, 500);
}
stopUnoLoop(){
this._unoClicked = true;
this.unoHover = true;
}
putCardAnim() {
this.firstPutAnim.attr('src', './img/stackCards/' + this.game.cardOnDeck.color + '/' + this.game.cardOnDeck.name + '.png');
this.firstPutAnim.css('transition', 'top 0.5s, opacity 0.3s');
this.firstPutAnim.css('top', '47vh');
this.firstPutAnim.css('opacity', '1');
setTimeout(() => {
this.firstPutAnim.css('transition', '');
this.firstPutAnim.css('top', '30vh');
this.firstPutAnim.css('opacity', '0');
this.firstPut.attr('src', './img/stackCards/' + this.game.cardOnDeck.color + '/' + this.game.cardOnDeck.name + '.png');
this.firstPut.css('opacity', '1');
}, 500);
}
showSelectColor(card){
$('.selectColor').css('opacity', 1);
$('#cc-green').on('click', ()=>{
card.color = CARD_COLORS[2];
card.putSelf();
this.hideSelectColor();
})
$('#cc-blue').on('click', ()=>{
card.color = CARD_COLORS[1];
card.putSelf();
this.hideSelectColor();
})
$('#cc-red').on('click', ()=>{
card.color = CARD_COLORS[3];
card.putSelf();
this.hideSelectColor();
})
$('#cc-yellow').on('click', ()=>{
card.color = CARD_COLORS[4];
card.putSelf();
this.hideSelectColor();
})
}
hideSelectColor(){
$('.selectColor').css('opacity', 0);
}
showPlayerDeck(player, click, lastDraw, anim) {
$('#playerDeck').html("");
let currentPlayerHand = player.hand;
let width = window.innerWidth;
let height = window.innerHeight;
let percent = 0;
let top = window.innerHeight * 0.68;
let cardAmount = currentPlayerHand.length;
for (let i = 0; i < cardAmount; i++) {
currentPlayerHand.xPos = 0;
currentPlayerHand.yPos = 0;
$('#playerDeck').append('