Dependencies:   mbed FATFileSystem

SceneCreator/SceneFunctions.cpp

Committer:
rottenegg
Date:
2019-04-26
Revision:
10:4fda7b01484a
Parent:
9:ac396c818874
Child:
13:95323e0f2fcb

File content as of revision 10:4fda7b01484a:

#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::deletebutton() {
     delete _BOK;
}

//Ultility Functions
void SceneFunctions::transition(N5110 &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(N5110 &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(N5110 &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(N5110 &lcd) {
    lcd.drawRect(32,1,20,2,FILL_BLACK);
};
//pos functions
void SceneFunctions::event0_scene0(N5110 &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(N5110 &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(N5110 &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(N5110 &lcd) {
    lcd.drawRect(32,1,20,2,FILL_BLACK);
}


//pos functions
void SceneFunctions::event0_scene1(N5110 &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(N5110 &lcd) {
    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);
}

//Scene 2 Functions
void SceneFunctions::set_scene2(CaMove &CM) {
    CM.set_region(9, 17, 10, 14); //event 0
    
};
//pre Functions
void SceneFunctions::obj0_scene2(N5110 &lcd) {
    Bitmap::renderBMP(MISC[0],lcd,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(N5110 &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(N5110 &lcd,CaMove &CM) {
    this->transition(lcd);
    lcd.clear();
    Bitmap::renderBMP(MISC[1],lcd,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(29,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(N5110 &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(N5110 &lcd) {
    lcd.setPixel(77,14,false);
}
//obj 2 not required
void SceneFunctions::obj3_scene3(N5110 &lcd) {
    Bitmap::renderBMP(MISC[2],lcd,21,8);
}

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

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


void SceneFunctions::event1_scene3(N5110 &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(N5110 &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(N5110 &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();
}