finished p2-2

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

player.cpp

Committer:
levelsnake3
Date:
2021-04-26
Revision:
2:7abebe259d59
Parent:
1:05e3f86df6d5

File content as of revision 2:7abebe259d59:

//=================================================================
// Implementation for the player module
//
// Copyright 2020 Georgia Tech.  All rights reserved.
// The materials provided by the instructor in this course are for
// the use of the students currently enrolled in the course.
// Copyrighted course materials may not be further disseminated.
// This file must not be made publicly available anywhere.
//==================================================================
#include "player_private.h"

extern DigitalOut myled1(LED1);
extern DigitalOut myled2(LED2);
extern DigitalOut myled3(LED3);
extern DigitalOut myled4(LED4);
PLAYER player; // structure of player
/*
    int id;
    int kPos;
    bool PHK    // The knife status: 0->In the air 1->With Player
    boundingBox knife_boundingBox;
    int active;
}KNIFE;

    int score;                  // Current score         
    int lives;
    int y;
    KNIFE knife[2];
} PLAYER;
*/

PLAYER player_get_info(void){
    return player;
}
int returnMiss(void){
  return player.misses;   
}
int returnCK(void){

  if(player.knife[0].PHK == 1)
  { 
  return player.knife[0].id;
  }
  else if (player.knife[1].PHK == 1)
  {  
  
  return player.knife[1].id;
  }   
  return 0;
}
int getLives(void){
    return player.lives;   
}
bool dead(int n){
    if((n == 0)&&((player.misses == 7)||(player.lives == 0))) return true;
    else return false;
}
void miss(void){
    player.misses++;
}
void hurt(void){
    player.combo = 1;
    player.lives--;
    if(player.lives == 2) myled3 = 0;
    if (player.lives == 1) myled2 = 0;
    if(player.lives ==0) myled1= 0;
}

void player_init(void) { 
    player.combo = 1;
    player.misses = 0;
    player.y = 0;
    player.score = 0;
    player.lives = 3;
    
    myled1 =1;
    myled2 = 1;
    myled3 = 1;

    draw_player(0,player.y,0xFFFFFF);
    
    knifeInit(0);
    player.knife[1].PHK = 2;
}

void knifeInit(int n){
    player.knife[n].id = n+1;
    player.knife[n].kPos = 11;
    player.knife[n].kbb.topLeft.x = 11;
    player.knife[n].kbb.topLeft.y = player.y + 4;
    player.knife[n].kbb.bottomRight.x = 11 + KNIFE_LENGTH;
    player.knife[n].kbb.bottomRight.y = player.y;
    player.knife[n].PHK = 1;
    draw_knife(player.knife[n].kbb);

}

void player_moveUp(void) { 
    draw_player(0,player.y,0x000000);
    if(returnCK() != 0) draw_nothing(player.knife[returnCK()-1].kbb);
    
    COMPOST compIn = getTallestComp();
    if(player.y < (110 - compIn.height)){//what is the max height
        player.y = player.y + 10;
        if(returnCK() != 0){
            player.knife[returnCK()-1].kbb.topLeft.y = player.y + 4;
            player.knife[returnCK()-1].kbb.bottomRight.y = player.y;   
        }
    }
    draw_player(0,player.y,0xFFFFFF);
    if(returnCK() != 0) draw_knife(player.knife[returnCK()-1].kbb);
}
void player_moveDown(void) { 
    draw_player(0,player.y,0x000000);
    if(returnCK() != 0) draw_nothing(player.knife[returnCK()-1].kbb);

    if(player.y > 0){
        player.y = player.y - 10;
        
        if(returnCK() != 0){
            player.knife[returnCK()-1].kbb.topLeft.y = player.y + 4;
            player.knife[returnCK()-1].kbb.bottomRight.y = player.y;   
        }
    }
    draw_player(0,player.y,0xFFFFFF);
    if(returnCK() != 0) draw_knife(player.knife[returnCK()-1].kbb);
}

void doReturnK(int n, int m){
            draw_nothing(player.knife[n].kbb);
            player.knife[n].PHK = 2;
            player.knife[n].kPos = 0;
            if(m == 1){
                miss();
                player.combo = 1;
            }
            if((player.knife[0].PHK == 2)&&(player.knife[1].PHK == 2)) knifeInit(0);
            pc.printf("THHHHHHHHHHHHHHHHHHHISHSIHSIHSIHSIH %d\n\n\n",player.combo);
}
void player_throw(void) { 

    if(returnCK() != 0){//checkning which knife should be thrown 

         player.knife[returnCK()-1].PHK = 0;
    }
}
void player_knife_draw(void) {    
    if(player.knife[0].PHK == 0 && player.knife[0].kPos+6 < 120){//what is the max height
        draw_nothing(player.knife[0].kbb);
        
        player.knife[0].kPos = player.knife[0].kPos + 5 ;
        player.knife[0].kbb.topLeft.x = player.knife[0].kPos;
        player.knife[0].kbb.bottomRight.x = player.knife[0].kPos + KNIFE_LENGTH;
        
        draw_knife(player.knife[0].kbb);
    }
    else if(player.knife[0].kPos+6 >= 120){
           doReturnK(0,1);
    }
    if((player.knife[1].PHK == 2)&&(player.knife[0].kPos+6 >= 60)){
        knifeInit(1);
        
        
    }
    if(player.knife[1].PHK == 0 && player.knife[1].kPos+6 < 120){//what is the max height

        draw_nothing(player.knife[1].kbb);
        
        player.knife[1].kPos = player.knife[1].kPos + 5 ;
        player.knife[1].kbb.topLeft.x = player.knife[1].kPos;
        player.knife[1].kbb.bottomRight.x = player.knife[1].kPos + KNIFE_LENGTH;
        
        draw_knife(player.knife[1].kbb);
    }
    else if(player.knife[1].kPos+6 >= 120){
        doReturnK(1,1);
    }
   if((player.knife[0].PHK == 2)&&(player.knife[1].kPos+6 >= 60)){

        knifeInit(0);
        
    }
}


KNIFE getKnifeInfo(int n){
    return player.knife[n];
}

// ==== player_private.h implementation ====

void player_score_inc(int n) {
    
    pc.printf("THHHHHHHHHHHHfffffffffffffffffffffIHSIHSIH %d\n\n\n",player.combo);
    player.score = player.score + player.combo;
    if(n == 1) player.combo++;
}