Game for Leeds University Gamepad for the FRDM-K64F: Game is a RPG Horror Title.

Dependencies:   mbed FATFileSystem

SceneCreator/SceneFunctions.cpp

Committer:
rottenegg
Date:
2019-05-10
Revision:
26:716bcd47f3ca
Parent:
21:f3b0ce18b44f

File content as of revision 26:716bcd47f3ca:

#include "SceneFunctions.h"
#include "MiscPaths.h"

//Constructor Functions
void SceneFunctions::set_buttonPin(PinName pin) {
    _BOK = (new DigitalIn(pin));
    _BOK->mode(PullDown);
    _progress = 0;
    _p[0] = true;
    _p[1] = true;
    _p[2] = true;
}

void SceneFunctions::reset_variables() {
    _progress = 0;
    _p[0] = true;
    _p[1] = true;
    _p[2] = true;
}

void SceneFunctions::deletebutton() {
     delete _BOK;
}

//Ultility Functions
void SceneFunctions::transition(Bitmap &lcd) {
    for (int i = 0;i < 84;i++) {
    lcd.drawRect(0,0,i,48,FILL_BLACK);
    lcd.refresh();
    }
    for (int i = 0;i < 84;i++) {
    lcd.drawRect(0,0,i,48,FILL_WHITE);
    lcd.refresh();
    }
}

void SceneFunctions::lockin(Bitmap &lcd) {
    while (_BOK->read() == 0) {
        lcd.printString("             ",0,5);
        lcd.refresh();
        wait(0.15);
        lcd.printString("...Press B...",0,5);
        lcd.refresh();
        wait(0.15);
    }
}

void SceneFunctions::flash(Bitmap &lcd) {
        for(int i = 0; i < 4; i++)  {
            lcd.drawRect(0,0,84,48,FILL_BLACK);
            lcd.refresh();
            wait(0.15);
            lcd.drawRect(0,0,84,48,FILL_WHITE);
            lcd.refresh();
            wait(0.15);
        };
};

//Unique to Scene Functions
//scene 0 Functions
void SceneFunctions::set_scene0(CaMove &CM) {
    CM.set_region(1, 28, 12, 17); //event 0
    CM.set_region(66, 15, 21, 24);   //event 1
};
//pre funtions
void SceneFunctions::obj0_scene0(Bitmap &lcd) {
    lcd.drawRect(32,1,20,2,FILL_BLACK);
};
//pos functions
void SceneFunctions::event0_scene0(Bitmap &lcd) {
    this->transition(lcd);
    lcd.clear();
    lcd.printString("Hello My Name",0,0);
    lcd.printString("Veigar I Shall",0,1);
    lcd.printString("Help You Find",0,2);
    lcd.printString("What You Seek",0,3);
    lcd.printString("Now go ... ",0,4);
    lcd.refresh();
    this->lockin(lcd);
    this->transition(lcd);
}

//event 1
void SceneFunctions::event1_scene0(Bitmap &lcd) {
    this->transition(lcd);
    lcd.clear();
    lcd.printString("It's a Weird",0,0);
    lcd.printString("quite eerie...",0,1);
    lcd.printString("Statue !!",0,2);
    lcd.refresh();
    this->lockin(lcd);
    this->transition(lcd);
}

//scene1 Funtions
void SceneFunctions::set_scene1(CaMove &CM) {
    CM.set_region(2, 38, 8, 7); //event 0
    CM.set_region(72, 2, 8, 7);   //event 1
};

//pre funtions
void SceneFunctions::obj0_scene1(Bitmap &lcd) {
    lcd.drawLine(30,40,31,20,0);
    lcd.drawLine(55,40,55,20,1);
    lcd.drawRect(5,1,20,2,FILL_BLACK);
}

void SceneFunctions::obj1_scene1(Bitmap &lcd) {
    lcd.drawRect(32,1,20,2,FILL_BLACK);
}


//pos functions
void SceneFunctions::event0_scene1(Bitmap &lcd) {
    lcd.drawRect(74,3,6,3,FILL_WHITE);
    lcd.drawLine(4,39,7,41,1);
    lcd.refresh();
    wait(0.2);
    lcd.drawRect(74,3,6,3,FILL_WHITE);
    lcd.drawLine(9,39,7,41,1);
    lcd.refresh();
    wait(0.2);
}

void SceneFunctions::event1_scene1(Bitmap &lcd,CaMove &CM) {
    lcd.drawRect(74,3,6,3,FILL_WHITE);
    lcd.drawLine(74,3,77,5,1);
    lcd.refresh();
    wait(0.2);
    lcd.drawRect(74,3,6,3,FILL_WHITE);
    lcd.drawLine(79,3,77,5,1);
    lcd.refresh();
    wait(0.2);
    CM.spawn(42,-15);
}

//Scene 2 Functions
void SceneFunctions::set_scene2(CaMove &CM) {
    CM.set_region(9, 17, 10, 14); //event 0
    
};
//pre Functions
void SceneFunctions::obj0_scene2(Bitmap &lcd) {
    lcd.renderBMP(MISC[0],9,17);
    lcd.drawLine(83,13,83,33,1); //right
    lcd.drawLine(47,0,67,0,1); // top
    lcd.drawLine(47,47,67,47,1); //bot
}

void SceneFunctions::obj1_scene2(Bitmap &lcd,int rng) {
    switch(rng) {
    case 0:
        lcd.drawLine(83,13,83,33,1); //r
        lcd.drawLine(47,0,67,0,1); // t
    break;
    case 1:
        lcd.drawLine(47,47,67,47,1); //b
        lcd.drawLine(83,13,83,33,1); //r
    break;
    case 2:
        lcd.drawLine(47,47,67,47,1); //b
        lcd.drawLine(47,0,67,0,1); // t
    break;
    }
}

//pos Function
void SceneFunctions::event0_scene2(Bitmap &lcd,CaMove &CM,WDplayer &wav) {
    this->transition(lcd);
    lcd.clear();
    lcd.renderBMP(MISC[1],0,0);
    lcd.refresh();
    wait(1);
    CM.delete_regions();
    lcd.clear();
    lcd.printString("Help Me Please",0,0);
    lcd.refresh();
    wait(0.5);
    lcd.printString("I NEED YOUR",0,1);
    lcd.printString("BLOOOD !!!",0,2);
    lcd.refresh();
    wait(1);
    CM.init(35,17,Fd);
    CM.spawn(9,17);
    lcd.inverseMode();
}

//Scene 3 Functions
void SceneFunctions::set_scene3(CaMove &CM) {
    CM.set_region(72, 39, 10, 7);  //event 0
    CM.set_region(73, 11, 10, 17); //event 1
    CM.set_region(64, 5, 10, 14);  //event 2
    CM.set_region(42, 2, 11, 18);  //event 3
};

//pre Functions
void SceneFunctions::obj0_scene3(Bitmap &lcd) {
    lcd.drawLine(76,42,78,40,1);
    lcd.drawRect(74,40,2,3,FILL_WHITE);
    lcd.drawRect(28,29,11,13,FILL_WHITE);
    lcd.drawRect(14,31,9,11,FILL_BLACK);
    lcd.drawLine(16,33,20,33,0);
    lcd.drawLine(20,33,20,37,0);
    lcd.drawLine(20,37,16,37,0);  
}

void SceneFunctions::obj1_scene3(Bitmap &lcd) {
    lcd.setPixel(77,14,false);
}

void SceneFunctions::obj3_scene3(Bitmap &lcd) {
    lcd.renderBMP(MISC[2],21,8);
}

void SceneFunctions::obj4_scene3(Bitmap &lcd) {
    if (_progress < 3) {
        lcd.drawRect(55,46,16,2,FILL_BLACK);
    }
}

//pos functions
void SceneFunctions::event0_scene3(Bitmap &lcd) {
    if(_p[0]) {
        _p[0] = false;
        _progress++;
    }
}


void SceneFunctions::event1_scene3(Bitmap &lcd) {
    this->transition(lcd);
    lcd.clear();
    lcd.printString("The Statue",0,0);
    lcd.printString("Looks like a",0,1);
    lcd.printString("Head But Eye",0,2);
    lcd.printString("Missing I Stab",0,3);
    lcd.printString("In a New One.",0,4);
    lcd.refresh();
    if(_p[2]) {
        _p[2] = false;
        _progress++;
    }
    this->lockin(lcd);
    this->transition(lcd);
}


void SceneFunctions::event2_scene3(Bitmap &lcd) {
    this->transition(lcd);
    lcd.clear();
    lcd.printString("Welcome to",0,0);
    lcd.printString("Mirror Room",0,1);
    lcd.printString("But Beware Not",0,2);
    lcd.printString("Touch Sarced",0,3);
    lcd.printString("!!!ITEM!!!",0,4);
    lcd.refresh();
    if(_p[1]) {
        _p[1] = false;
        _progress++;
    }
    this->lockin(lcd);
    this->transition(lcd);
}

void SceneFunctions::event3_scene3(Bitmap &lcd,CaMove &CM) {
    this->transition(lcd);
    lcd.clear();
    CM.delete_regions();
    lcd.printString("CURSE YOU",0,0);
    lcd.refresh();
    wait(0.5);
    CM.spawn(21,8);
    lcd.inverseMode();
}

//Scene 4 Functions
void SceneFunctions::set_scene4(CaMove &CM) {
    CM.set_region(14, 16, 3, 20);  //event 0
}
//pre functions
void SceneFunctions::obj1_scene4(Bitmap &lcd) {
    if (_progress < 5) {
        _progress = 7;
    }
    if (_progress < 15) {
       lcd.drawRect((20 -_progress),18,2,18,FILL_BLACK);
    } 
}
void SceneFunctions::obj2_scene4(Bitmap &lcd,int rng) {
    switch(rng) {
        case 2:
        lcd.renderBMP(MISC[0],4,2);
        break;
        case 0:
        lcd.renderBMP(MISC[2],4,2);
        break;
    }
}
void SceneFunctions::obj3_scene4(Bitmap &lcd) {
    if (_progress > 7) {
        switch (_progress) {
        default:
        case 15:
            lcd.drawLine(45,4,45,10,1);
        case 14:
            lcd.drawLine(45,4,49,7,1);
        case 13:
            lcd.drawLine(49,7,45,10,1);
        case 12:
            lcd.drawLine(54,5,55,10,1);
        case 11:
            lcd.drawLine(61,4,59,10,1);
        case 10:
            lcd.drawLine(61,4,66,3,1);
        case 9:
            lcd.drawLine(59,10,65,9,1);
        case 8:
            lcd.drawLine(66,7,60,7,1);
        break;
        }
    }
}
Serial x(USBTX,USBRX);
//pos function
void SceneFunctions::event0_scene4(Bitmap &lcd,CaMove &CM,WDplayer &wav) {
    if (_progress == 8) {
        CM.spawn(84,19);
    }
    CM.delete_regions();
    CM.set_region((18 - _progress),17,6,18);
    _progress++;
}