Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Entity/Snake/Snake.h

Committer:
el17sm
Date:
2019-05-04
Revision:
29:6b8411bb040a
Parent:
27:a1b41626f57c

File content as of revision 29:6b8411bb040a:

#ifndef SNAKE_H
#define SNAKE_H
#include "Entity.h"

class Snake : public Entity
{

public:
    // Constructor
    Snake(float, float);

    // Functions
    virtual void move(float, float, int * map, bool * doorways);
    virtual int * get_frame();
    virtual void take_damage(int);

private:
    // Member Function
    void update_prev_face();

    // Member Mutator
    void update_hitbox(int, int, int, int, int, int, int);

    // Member Variable
    int _velocity_index;
    int _prev_face;

};

const float velocity_pattern[6] = {0, 0.15, 0.25, 0.35, 0.25, -0.1};

const int sprite_snake_x[2][4][7][12] = {   // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
    {
        // Right
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,1,1,1,1,0,1,1,1,1,0,},
            {1,1,1,0,1,1,1,1,1,1,0,0,},
        },
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,1,1,1,1,0,1,1,1,1,1,0,},
            {1,0,0,1,1,1,1,1,1,1,0,0,},
        },
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {1,0,0,0,0,0,0,0,1,1,1,0,},
            {0,1,0,0,1,1,1,1,1,1,1,0,},
            {0,0,1,1,1,0,1,1,1,1,0,0,},
        },
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {1,1,0,1,1,1,1,1,1,1,1,0,},
            {0,0,1,1,0,1,1,1,1,1,0,0,},
        }
    },
    {
        // Left
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {0,1,1,1,1,0,1,1,1,1,0,0,},
            {0,0,1,1,1,1,1,1,0,1,1,1,},
        },
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {0,1,1,1,1,1,0,1,1,1,1,0,},
            {0,0,1,1,1,1,1,1,1,0,0,1,},
        },
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,1,},
            {0,1,1,1,1,1,1,1,0,0,1,0,},
            {0,0,1,1,1,1,0,1,1,1,0,0,},
        },
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {0,1,1,1,1,1,1,1,1,0,1,1,},
            {0,0,1,1,1,1,1,0,1,1,0,0,},
        }
    }
};

const int sprite_snake_y[2][6][12][6] = {   // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
    {
        // Up
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,0,0,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,0,1,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,0,1,0,},
            {0,0,0,1,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,0,1,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,0,0,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,0,0,0,0,},
            {0,0,1,0,0,0,},
        }
    },
    {
        // Down
        {
            {0,0,0,0,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,1,1,0,0,},
            {0,1,0,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,1,0,0,0,},
            {0,1,0,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,1,0,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,1,1,0,0,},
            {0,0,0,0,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,0,1,0,0,},
            {0,0,0,0,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        }
    }
};

#endif