ELEC2645 (2019/20)
/
ELEC2645_Project_el18jb
test 1 doc
Engine/Engine.cpp
- Committer:
- joebarhouch
- Date:
- 2020-05-26
- Revision:
- 7:530ca713d2b2
- Parent:
- 6:00d20886e4f8
- Child:
- 8:d19b30a6cd69
File content as of revision 7:530ca713d2b2:
#include "Engine.h" Platform maps[5] = {Platform(0, 15, 20, 3), Platform(64, 15, 20, 3), Platform(0, 40, 20, 3), Platform(64, 40, 20, 3), Platform(20, 30, 30, 3)}; int mapSize = sizeof(maps)/sizeof(*maps); ////////////////////// DRAW MAP ////////////////////////// void drawMap(N5110 &lcd) { for (int i = 0; i < mapSize; i++) { maps[i].draw(lcd); //debugs //coords = maps[i].get_pos(); //printf("x: %i, y: %i,w: %i,h: %i \n",coords.x, coords.y, coords.width, coords.height); } //debugs //printf("-----------------------------------------\n"); } Engine::Engine() { } Engine::~Engine() { } ////////////////////// INIT //////////////////////////// void Engine::init() { //init coord _px = WIDTH / 2; _py = 5; //init call _p.init(_px, _py); //physics parameters _Ypos = 0; _fall = true; _collide = false; } ////////////////////// INPUT ////////////////////////// //reads direction and magnitude from the JOYSTICK to control the player void Engine::read_input(Gamepad &pad) { _d = pad.get_direction(); _mag = pad.get_mag(); _jump = pad.A_held(); } ////////////////////// DRAW /////////////////////////// //draw both player and map void Engine::draw(N5110 &lcd) { drawMap(lcd); // player _p.draw(lcd); } ////////////////////// UPDATE ////////////////////////// //provide the player file with necessary Joystick values void Engine::update(Gamepad &pad) { floorCollide(); _p.update(_d,_mag, _Ypos, _fall, _jump); } /* if (_collision == true) { //debug //printf("collison\n"); } else { //debug //printf("no collison\n"); } //enemmyCollide(pad); } */ ////////////////////// FLOOR COLLISION ////////////////////////// void Engine::floorCollide() { //player.x + 8 >= coords[j].x && player.x +1 <= coords[j].x + coords[j].width && player.y +9 >= coords[j].y && player.y+9 <= coords[j].y + coords[j].height _collide = false; int a; Vector2D player = _p.get_pos(); Vector4 coords[mapSize]; for(int i = 0; i<mapSize; i++) { coords[i] = maps[i].get_pos(); } if(_collide == false) { _fall = true; for(int j=0; j < mapSize; j++) { if(player.x + 8 >= coords[j].x && player.x +1 <= coords[j].x + coords[j].width && player.y +9 >= coords[j].y && player.y+9 <= coords[j].y + coords[j].height) { a = j; _collide = true; //printf("%i, %i\n", player.x, player.y ); } } } if(_collide == true){ _Ypos = coords[a].y - 8; _fall = false; _collide = false; } }