Dance Dance Revolution program for main mbed

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player

arrows.h

Committer:
wliu88
Date:
2016-04-29
Revision:
0:8a02ac09eae0

File content as of revision 0:8a02ac09eae0:

#ifndef ARROWS_H
#define ARROWS_H


#include "mbed.h"
#include "globals.h"
//arrow.h: file responsible for generating arrow
//LEFT = 0
//UP = 1
//DOWN = 2
//RIGHT = 3
//INVALID = -1

class Arrow {    
    public:
        int active;
        int type;
        int locx1;
        int locx2;
        int locx3;
        int locy1;
        int locy2;
        int locy3;
        int currx;
        int curry;
        double delay;
        Arrow(){}
        Arrow(int dir) {
           type = dir;
           if(dir != -1){ active = 0; } 
           else {active = 1;}    
        }
        Arrow(int dir, double arg_delay){
            type = dir;
            if(dir != -1){active =0;}
            else {active = 1;}
            delay = arg_delay;    
        }
        double getDelay(){
            return delay;
        }            
        void setType(int dir) {
            type = dir;
        }
        int getType(){
            return type;
        }
        int getActive(){
            return active;
        }
        void setActive(int activepassive){
            active = activepassive;
        }
        void init(int screenNum){
            if(active){
                switch(type){
                    case 0:
                        locx1 = 10;
                        locy1 = 123;
                        locx2 = 20;
                        locy2 = 119;
                        locx3 = 20;
                        locy3 = 127;
                        currx = 15;
                        curry = 123;
                        break;
                    case 3:
                        locx1 = 106;
                        locy1 = 119;
                        locx2 = 106;
                        locy2 = 127;
                        locx3 = 116;
                        locy3 = 123;
                        currx = 111;
                        curry = 123;
                        break;
                    case 1:
                        locx1 = 42;
                        locy1 = 127;
                        locx2 = 47;
                        locy2 = 119;
                        locx3 = 52;
                        locy3 = 127;
                        currx = 47;
                        curry = 123;
                        break;
                    case 2:
                        locx1 = 74;
                        locy1 = 119;
                        locx2 = 79;
                        locy2 = 127;
                        locx3 = 84;
                        locy3 = 119;
                        currx = 79;
                        curry = 123;
                        break;
                    default: 
                        //arrow has not been released/dead       
                }
                if(type != -1){
                    if(screenNum==0){
                        uLCD.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF); 
                    }
                    else if (screenNum == 1) {
                        uLCD2.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF); 
                    }
                    else {
                        uLCD.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF); 
                        uLCD2.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF); 
                    }
                }
            }  
        }
        
        void init2(){
            if(active){
                switch(type){
                    case 0:
                        locx1 = 10;
                        locy1 = 123;
                        locx2 = 20;
                        locy2 = 119;
                        locx3 = 20;
                        locy3 = 127;
                        currx = 15;
                        curry = 123;
                        break;
                    case 3:
                        locx1 = 106;
                        locy1 = 119;
                        locx2 = 106;
                        locy2 = 127;
                        locx3 = 116;
                        locy3 = 123;
                        currx = 111;
                        curry = 123;
                        break;
                    case 1:
                        locx1 = 42;
                        locy1 = 127;
                        locx2 = 47;
                        locy2 = 119;
                        locx3 = 52;
                        locy3 = 127;
                        currx = 47;
                        curry = 123;
                        break;
                    case 2:
                        locx1 = 74;
                        locy1 = 119;
                        locx2 = 79;
                        locy2 = 127;
                        locx3 = 84;
                        locy3 = 119;
                        currx = 79;
                        curry = 123;
                        break;
                    default: 
                        //arrow has not been released/dead       
                }
                if(type != -1){
                    uLCD2.triangle(locx1, locy1, locx2, locy2, locx3, locy3, 0x0000FF); 
                }
            }  
        }

        int update(int screenNum){
            switch(screenNum){
                case 0:
                    if(type != -1){
                        uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                        locy1 -= 9;
                        locy2 -= 9;
                        locy3 -= 9;
                        //currx -= 8;
                        curry -= 9;
                        uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
                        if(curry <= 5){
                            uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                            active = 0;
                            return 1;
                        }
                        else{
                            return 0;
                        }
                    }
                    else{return 1;}  
                    break;
                case 1:
                    if(type != -1){
                        uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                        locy1 -= 9;
                        locy2 -= 9;
                        locy3 -= 9;
                        //currx -= 8;
                        curry -= 9;
                        uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
                        if(curry <= 5){
                            uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                            active = 0;
                            return 1;
                        }
                        else{
                            return 0;
                        }
                    }
                    else{return 1;}  
                    break;
                default:
                    if(type != -1){
                        uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                        uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                        locy1 -= 9;
                        locy2 -= 9;
                        locy3 -= 9;
                        //currx -= 8;
                        curry -= 9;
                        uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
                        uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
                        if(curry <= 5){
                            uLCD.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                            uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                            active = 0;
                            return 1;
                        }
                        else{
                            return 0;
                        }
                    }
                    else{return 1;}                  
            }
        }    
        
        int update2(){
            if(type != -1){
                uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                locy1 -= 9;
                locy2 -= 9;
                locy3 -= 9;
                //currx -= 8;
                curry -= 9;
                uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x0000FF);
                if(curry <= 5){
                    uLCD2.triangle(locx1,locy1,locx2,locy2,locx3,locy3,0x000000);
                    active = 0;
                    return 1;
                }
                else{
                    return 0;
                }
            }
            else{return 1;}  
        }                
};

#endif