/*
 * Monster.cpp
 *
 *  Created on: 21 févr. 2017
 *      Author: sylvain
 */

#include "Monster.h"

Monster::Monster() {

    qsrand(QTime::currentTime().msec());

    //2 hits to kill
    life = 2;

    //timer avant de changer de direction
    timer = 1;

    monsterView = new QGraphicsPixmapItem();

    //Init sprites
    QList<QString> list = QList<QString>();

    list.append(":/media/sprites/MobD1.png");
    list.append(":/media/sprites/MobD2.png");

    animDown = Animator(list);
    list.clear();

    list.append(":/media/sprites/MobL1.png");
    list.append(":/media/sprites/MobL2.png");

    animLeft = Animator(list);
    list.clear();

    list.append(":/media/sprites/MobU1.png");
    list.append(":/media/sprites/MobU2.png");

    animUp = Animator(list);
    list.clear();

    list.append(":/media/sprites/MobR1.png");
    list.append(":/media/sprites/MobR2.png");

    animRight = Animator(list);
    list.clear();

    currentAnimation = &animDown;
    currentAnimation->begin();

    //Spawn au bas de la map pour le moment
    pos.x = 400;
    pos.y = 420;

    dir = NORTH;

}

Monster::~Monster() {
	// TODO Auto-generated destructor stub
}


void Monster::updateMonster(void){

    timer = timer - 0.01;

    if (timer <= 0){

        timer = 1;
        //qDebug() << "switching direction";
        switch (qrand() % 2){
            case 0:
                if (dir == NORTH || dir == SOUTH)
                    dir = WEST;
                else
                    dir = NORTH;
                break;
            case 1:
                if (dir == NORTH || dir == SOUTH)
                    dir = EAST;
                else
                    dir = SOUTH;
                break;
        }

    }

    //Bouge au pif dans une direction
    switch (dir){
        case NORTH:
            currentAnimation = &animUp;
            moveUp();
        break;
        case SOUTH:
            currentAnimation = &animDown;
            moveDown();
        break;
        case WEST:
            currentAnimation = &animLeft;
            moveLeft();
        break;
        case EAST:
            currentAnimation = &animRight;
            moveRight();
        break;
        }

    monsterImage = currentAnimation->current();
    monsterView->setPixmap(monsterImage);
    monsterView->setPos(pos.x,pos.y);

}


void Monster::moveDown(void){

    currentAnimation->next();
    pos.y+=1;
}

void Monster::moveLeft(void){

    currentAnimation->next();
    pos.x-=1;
}

void Monster::moveRight(void){

    currentAnimation->next();
    pos.x+=1;
}

void Monster::moveUp(void){

    currentAnimation->next();
    pos.y-=1;
}

int Monster::getXPos(void){
    return pos.x;
}

int Monster::getYPos(void){
    return pos.y;
}

int Monster::getLife(void){
    return life;
}
void Monster::setLife(int life){
    this->life=life;
}
