ELEC2645 (2016/17) / Mbed 2 deprecated 2645_Project_el15as

Dependencies:   mbed

Animation/Animation.cpp

Committer:
el15as
Date:
2017-05-02
Revision:
7:b54323241435
Parent:
6:33fd1797beb4
Child:
8:c3cf8d1057bb

File content as of revision 7:b54323241435:

#include "Animation.h"

Animation::Animation()
{

}

Animation::~Animation()
{

}

void Animation::spawn(N5110 &lcd, intVector2D starting_position)
{
    if (spawnCycle == 0)
    {
        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
        lcd.refresh();
        wait(0.1);

        lcd.setPixel(starting_position.x, starting_position.y - 1, false);
        lcd.setPixel(starting_position.x + 2, starting_position.y - 1, false);
        lcd.refresh();
        wait(0.1);

        lcd.setPixel(starting_position.x - 1, starting_position.y - 1, false);
        lcd.setPixel(starting_position.x + 3, starting_position.y - 1, false);
        lcd.setPixel(starting_position.x, starting_position.y - 1);
        lcd.setPixel(starting_position.x + 2, starting_position.y - 1);
        lcd.setPixel(starting_position.x + 1, starting_position.y - 1);
        lcd.refresh();
        wait(0.1);

        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
        lcd.setPixel(starting_position.x, starting_position.y);
        lcd.setPixel(starting_position.x + 2, starting_position.y);
        lcd.setPixel(starting_position.x + 1, starting_position.y);
        lcd.refresh();
        wait(0.1);

        lcd.setPixel(starting_position.x + 1, starting_position.y - 1);
        lcd.setPixel(starting_position.x + 1, starting_position.y, false);
        lcd.setPixel(starting_position.x, starting_position.y + 1);
        lcd.setPixel(starting_position.x + 2, starting_position.y + 1);
        lcd.setPixel(starting_position.x + 1, starting_position.y + 1);
        lcd.refresh();
        wait(0.1);

        spawnCycle++;
    }
    else if (spawnCycle == 1)
    {
        lcd.setPixel(starting_position.x, starting_position.y - 1, false);
        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
        lcd.setPixel(starting_position.x + 2, starting_position.y - 1, false);
        spawnCycle++;
    }
    else if (spawnCycle == 2)
    {
        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
        spawnCycle++;
    }
}

void Animation::death(N5110 &lcd, intVector2D position, int frame)
{
    if (frame == 0)
    {
        lcd.setPixel(position.x + 1, position.y, false);
        lcd.setPixel(position.x, position.y + 1, false);
        lcd.setPixel(position.x + 1, position.y + 2, false);
        lcd.setPixel(position.x + 2, position.y + 1, false);
        lcd.setPixel(position.x + 1, position.y - 1);
        lcd.setPixel(position.x - 1, position.y + 1);
        lcd.setPixel(position.x + 1, position.y + 3);
        lcd.setPixel(position.x + 3, position.y + 1);
    }
    else if (frame == 1)
    {
        lcd.setPixel(position.x + 1, position.y - 1, false);
        lcd.setPixel(position.x - 1, position.y + 1, false);
        lcd.setPixel(position.x + 1, position.y + 3, false);
        lcd.setPixel(position.x + 3, position.y + 1, false);
        lcd.setPixel(position.x, position.y, false);
        lcd.setPixel(position.x + 2, position.y + 2, false);
        lcd.setPixel(position.x + 2, position.y, false);
        lcd.setPixel(position.x, position.y + 2, false);
        lcd.setPixel(position.x, position.y - 1);
        lcd.setPixel(position.x - 1, position.y);
        lcd.setPixel(position.x + 3, position.y);
        lcd.setPixel(position.x + 2, position.y - 1);
        lcd.setPixel(position.x - 1, position.y + 2);
        lcd.setPixel(position.x, position.y + 3);
        lcd.setPixel(position.x + 3, position.y + 2);
        lcd.setPixel(position.x + 2, position.y + 3);
    }
    else if (frame == 2)
    {
        lcd.setPixel(position.x, position.y - 1, false);
        lcd.setPixel(position.x - 1, position.y, false);
        lcd.setPixel(position.x + 3, position.y, false);
        lcd.setPixel(position.x + 2, position.y - 1, false);
        lcd.setPixel(position.x - 1, position.y + 2, false);
        lcd.setPixel(position.x, position.y + 3, false);
        lcd.setPixel(position.x + 3, position.y + 2, false);
        lcd.setPixel(position.x + 2, position.y + 3, false);
        lcd.setPixel(position.x, position.y - 2);
        lcd.setPixel(position.x - 2, position.y);
        lcd.setPixel(position.x + 4, position.y);
        lcd.setPixel(position.x + 2, position.y - 2);
        lcd.setPixel(position.x - 2, position.y + 2);
        lcd.setPixel(position.x, position.y + 4);
        lcd.setPixel(position.x + 4, position.y + 2);
        lcd.setPixel(position.x + 2, position.y + 4);
    }
    else if (frame == 3)
    {
        lcd.setPixel(position.x, position.y - 2, false);
        lcd.setPixel(position.x - 2, position.y, false);
        lcd.setPixel(position.x + 4, position.y, false);
        lcd.setPixel(position.x + 2, position.y - 2, false);
        lcd.setPixel(position.x - 2, position.y + 2, false);
        lcd.setPixel(position.x, position.y + 4, false);
        lcd.setPixel(position.x + 4, position.y + 2, false);
        lcd.setPixel(position.x + 2, position.y + 4, false);
    }
}

void Animation::finish(N5110 &lcd, intVector2D finish_position, Gamepad &pad, bool soundOn)
{
    lcd.setPixel(finish_position.x + 3, finish_position.y + 2, false);
    lcd.refresh();
    if (soundOn) pad.tone(523.25f,0.1f);
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y + 1, false);
    lcd.refresh();
    if (soundOn) pad.tone(659.25f,0.1f);
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y, false);
    lcd.refresh();
    if (soundOn) pad.tone(784.0f,0.1f);
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y - 1, false);
    lcd.setPixel(finish_position.x + 3, finish_position.y + 2);
    lcd.setPixel(finish_position.x + 3, finish_position.y + 1);
    lcd.setPixel(finish_position.x + 3, finish_position.y);
    lcd.setPixel(finish_position.x + 2, finish_position.y + 1, false);
    lcd.setPixel(finish_position.x + 1, finish_position.y + 1);
    lcd.setPixel(finish_position.x, finish_position.y, false);
    lcd.setPixel(finish_position.x, finish_position.y + 1, false);
    lcd.setPixel(finish_position.x, finish_position.y + 2, false);
    lcd.refresh();
    if (soundOn) pad.tone(1046.5f,0.1f);
    wait(0.1);

    lcd.setPixel(finish_position.x + 1, finish_position.y, false);
    lcd.setPixel(finish_position.x + 1, finish_position.y + 1, false);
    lcd.setPixel(finish_position.x + 1, finish_position.y + 2, false);
    lcd.setPixel(finish_position.x + 2, finish_position.y + 1);
    lcd.setPixel(finish_position.x + 3, finish_position.y + 1, false);
    lcd.refresh();
    wait(0.1);

    lcd.setPixel(finish_position.x + 2, finish_position.y, false);
    lcd.setPixel(finish_position.x + 2, finish_position.y + 1, false);
    lcd.setPixel(finish_position.x + 2, finish_position.y + 2, false);
    lcd.setPixel(finish_position.x + 3, finish_position.y + 1);
    lcd.refresh();
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y, false);
    lcd.setPixel(finish_position.x + 3, finish_position.y + 1, false);
    lcd.setPixel(finish_position.x + 3, finish_position.y + 2, false);
    lcd.setPixel(finish_position.x + 3, finish_position.y - 1);
    lcd.refresh();
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y);
    lcd.refresh();
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y + 1);
    lcd.refresh();
    wait(0.1);

    lcd.setPixel(finish_position.x + 3, finish_position.y + 2);
    lcd.refresh();
    wait(0.1);
}

/*
void GameEngine::draw_death_animation(N5110 &lcd)
{
    int y = 0;
    int animation_width = 84;
    int animation_height = 48;

    for (int x = 0; x < 23; x++) {
        lcd.drawRect(x, y, animation_width, animation_height, FILL_TRANSPARENT);
        lcd.refresh();
        y++;
        animation_width = animation_width - 2;
        animation_height = animation_height - 2;
        wait(0.03);
    }
}
*/