Adventure game written for ECE2035 at the Georgia Institute of Technology

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

pausemenu.cpp

Committer:
trmontgomery
Date:
2019-10-26
Revision:
5:93a4c396c1af

File content as of revision 5:93a4c396c1af:

// Project includes
#include "globals.h"
#include "hardware.h"
#include "map.h"
#include "graphics.h"
#include "speech.h"
#include "pausemenu.h"

int PauseMenu::switch_ax = 0;

PauseMenu::PauseMenu(Player* player) : 
    p(player), 
    quest_complete(player->quest_complete)
{

    //draw pink rectangle on whole screen
    uLCD.filled_rectangle(0, 128, 128, 70, PINK1);

    // write title
    uLCD.locate(1,11);
    uLCD.textbackground_color(YELLOW);
    uLCD.color(BLACK);
    uLCD.printf("Game Paused");

}

int PauseMenu::update(int action){
    switch(action)
    {
        case 1: 
            //if button 1 pressed move to next menu item
            button_presses = button_presses++;
            break;
        case 2:
            if (button_presses%4 == 0) {//Start game
                o_status();
            } else if (button_presses%4 == 1){ //Quit (screen cut to black)
                o_inventory();
            }else if (button_presses%4 == 2){ //Quit (screen cut to black)
                set_config(o_config());
            } else { //screen go white
                exit_en = true;
                terminate = true; 
            }
            break;
    }
    return 0;
    }

void PauseMenu::draw(int){
    if (button_presses%4 == 0){
        status_color = GREEN;
    } else if (button_presses%4 == 1){
        inventory_color = GREEN;
    }else if (button_presses%4 == 2){ 
        config_color = GREEN;
    }  else{
        exit_color = GREEN;
    }
    
    uLCD.locate(1,11);
    uLCD.textbackground_color(YELLOW);
    uLCD.color(BLACK);
    uLCD.printf("Game Paused");
    
    uLCD.locate(1,12);
    uLCD.color(status_color);
    uLCD.printf("View Status");
    
    uLCD.locate(1,13);
    uLCD.color(inventory_color);
    uLCD.printf("Inventory");
    
    uLCD.locate(1,14);
    uLCD.color(config_color);
    uLCD.printf("Config");
    
    uLCD.locate(1,15);
    uLCD.color(exit_color);
    uLCD.printf("Exit");
    
    
    status_color = BLACK;
    inventory_color = BLACK;
    config_color = BLACK;
    exit_color = BLACK;
    }

int PauseMenu::o_status(){
    uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
    uLCD.locate(1,12);
    uLCD.textbackground_color(YELLOW);
    uLCD.color(BLACK);
    
    if (quest_complete){
        uLCD.printf("Congrats! You have completed your quest!");
    } else{
        uLCD.printf("Quest is not     completed");
    }
    
    uLCD.locate(10,15);
    uLCD.color(GREEN);
    uLCD.printf("Back");
    
    GameInputs inp = read_inputs();
    while(1){
        if(!inp.b3){
            uLCD.filled_rectangle(0, 128, 128, 80, PINK1); //erase option
            wait(1);
            return 0;
        }
        inp = read_inputs();
        wait(1);
    }
    }
int PauseMenu::o_inventory(){
    uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
    uLCD.locate(1,12);
    uLCD.textbackground_color(YELLOW);
    uLCD.color(BLACK);
    
    char str[30];
    sprintf(str, "You have %d gems.", p->gems);
    uLCD.printf(str);
    
    uLCD.locate(10,15);
    uLCD.color(GREEN);
    uLCD.printf("Back");
    
    GameInputs inp = read_inputs();
    while(1){
        if(!inp.b3){
            uLCD.filled_rectangle(0, 128, 128, 80, PINK1); //erase option
            wait(1);
            return 0;
        }
        inp = read_inputs();
        wait(1);
    }
}
int PauseMenu::o_config(){
    uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
    uLCD.locate(1,12);
    uLCD.textbackground_color(YELLOW);
    uLCD.color(BLACK);
    
    uLCD.printf("Press Button 2 to Switch Axis.");
    
    uLCD.locate(10,15);
    uLCD.color(GREEN);
    uLCD.printf("Back");
    
    int switch1;
    GameInputs inp = read_inputs();
    while(1){
        if(!inp.b2){
            uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
            uLCD.locate(1,12);
            uLCD.printf("Axis switched.");
            uLCD.color(BLACK);
            uLCD.locate(10,15);
            uLCD.color(GREEN);
            uLCD.printf("Back");
            int switch1 = !switch_ax;
        }
        
        if(!inp.b3){
            uLCD.filled_rectangle(0, 128, 128, 80, PINK1); //erase option
            wait(1);
            return switch1;
        }
        inp = read_inputs();
        wait(1);
    }
    }