James Cummins / Mbed 2 deprecated el17jnc

Dependencies:   mbed

Classic_Engine/ClassicEngine.cpp

Committer:
JamesCummins
Date:
2019-04-27
Revision:
31:c95f1b1d6423
Parent:
29:42651f87522b
Child:
32:eff573ad8e42

File content as of revision 31:c95f1b1d6423:

#include "ClassicEngine.h"

ClassicEngine::ClassicEngine(){
}

ClassicEngine::~ClassicEngine(){
}

void ClassicEngine::init(Ball &ball, Map &map){
    _frames = 0;
    _ball_coord.x = 42;
    _ball_coord.y = 24;
    _map_coord.x = 47;
    _map_coord.y = 25;
    ball.set_position(_ball_coord);
    map.set_map_display(_map_coord);
}

void ClassicEngine::classic_update(Ball &ball, FXOS8700CQ &accelerometer, Map &map){
    map.read_input(accelerometer, ball);
    map.update();
    ball.set_position(_ball_coord);
    _frames++;
    _map_coord = map.get_map_display();
    _abs_ball_pos.x = _ball_coord.x + _map_coord.x;
    _abs_ball_pos.y = _ball_coord.y + _map_coord.y;
}

void ClassicEngine::classic_draw(N5110 &lcd, Map &map, Ball &ball){
    map.draw(lcd);
    ball.draw(lcd);
}

bool ClassicEngine::finished(){
    bool finished = false;
    if(_abs_ball_pos.x == 402  &&       //these are the range of coords the ball
       _abs_ball_pos.y > 101   &&       //can have as it crosses the finish line
       _abs_ball_pos.y < 141   ){
           finished = true;
    }
    else{ finished = false; }
    return finished;
}

void ClassicEngine::mode_complete(N5110 &lcd, Gamepad &gamepad, int fps){
    while(!(gamepad.check_event(gamepad.A_PRESSED))){
        float time_taken = _frames / fps;
        char buffer[6];
        sprintf(buffer, "%4.f", time_taken);
        lcd.clear();
        lcd.printString("You win!", 18, 1);
        lcd.printString("Your time:", 12, 3);
        lcd.printString(buffer, 18,4);
        lcd.printChar('s',54,4);
        lcd.printString("(A = back)", 24, 5);
        lcd.refresh();
        wait(0.2);
    }
}

bool ClassicEngine::mode_failed(N5110 &lcd, Gamepad &gamepad, Ball &ball, Map &map){
    bool back_to_start_menu = false;
    while(1){
              wait(0.2);
              lcd.clear();
              lcd.printString("You lose!", 15, 1);
              lcd.printString("Back = A", 18, 3);
              lcd.printString("Replay = B", 12, 4);
              lcd.refresh();
        if(gamepad.check_event(gamepad.A_PRESSED)){
            back_to_start_menu = true; 
            break; }
        if(gamepad.check_event(gamepad.B_PRESSED)){
            back_to_start_menu = false;
            break; }
    }
    return back_to_start_menu;
}