This code contains the game Starship designed for the STM32F429i-DISC1 board. It requires a keyboard to play.

Dependencies:   Starship LCD_DISCO_F429ZI USBHost mbed

Dependents:   Starship

Revision:
1:527a11035e0b
Parent:
0:c9afe145b57b
--- a/Player.c	Sun Sep 17 17:05:27 2017 +0000
+++ b/Player.c	Fri Nov 17 02:23:33 2017 +0000
@@ -1,16 +1,34 @@
 #include "Player.h"
-void movePlayer(uint8_t x_vel, uint8_t y_vel)
+
+struct Player player;
+
+void resetPlayer()
 {
-    player.x_pos += x_vel;
-    player.y_pos -= y_vel;
+    player.x_pos = LCD_WIDTH/2-PLAYER_WIDTH/2;
+    player.y_pos = LCD_HEIGHT-PLAYER_HEIGHT-HEALTH_BAR_SIZE;
+    player.health = PLAYER_STARTING_HEALTH;
+    player.rapidFireTimer = 0;
+    player.powerShotTimer = 0;
+    player.wideShotTimer = 0;
+    player.shieldTimer = 0;
+    player.gunTimer = 0;
+    //player.fastMovementTimer = 0;
+    player.RFT_Timer = 0;
+    //player.speedFireTimer = 0;
+}
+void movePlayer(int8_t x_dir, int8_t y_dir)
+{
+    player.x_pos += PLAYER_VELOCITY * x_dir;
+    player.y_pos += PLAYER_VELOCITY * y_dir;
+    //}
     if(player.x_pos<=0)
         player.x_pos=0;
     else if(player.x_pos>=LCD_WIDTH-PLAYER_WIDTH)
         player.x_pos = LCD_WIDTH-PLAYER_WIDTH;
     if(player.y_pos<=0)
         player.y_pos = 0;
-    else if(player.y_pos>=LCD_HEIGHT-PLAYER_HEIGHT)
-        player.y_pos = LCD_HEIGHT-PLAYER_HEIGHT;
+    else if(player.y_pos>=LCD_HEIGHT-PLAYER_HEIGHT-HEALTH_BAR_SIZE)
+        player.y_pos = LCD_HEIGHT-PLAYER_HEIGHT-HEALTH_BAR_SIZE;
 }
 void updatePlayerTimers()
 {
@@ -19,4 +37,39 @@
     player.wideShotTimer = player.wideShotTimer ? player.wideShotTimer-1 : 0;
     player.shieldTimer = player.shieldTimer ? player.shieldTimer-1 : 0;
     player.gunTimer = player.gunTimer ? player.gunTimer-1 : 0;
-}
\ No newline at end of file
+    //player.fastMovementTimer = player.fastMovementTimer ? player.fastMovementTimer-1 : 0;
+    //player.speedFireTimer = player.speedFireTimer ? player.speedFireTimer-1 : 0;
+    player.RFT_Timer = player.RFT_Timer ? player.RFT_Timer-1 : RFT_PERIOD;
+}
+int16_t getPlayerBulletPos(int8_t XorY)
+{
+    if(XorY)
+        return player.x_pos+PLAYER_WIDTH/2-BULLET_SIZE/2;
+    return player.y_pos-BULLET_SIZE/2;
+}
+int8_t dealDamageToPlayer()
+{
+    if(player.shieldTimer)
+        return 0;
+    player.health--;
+    return !(player.health) ? 1 : 0;
+}
+int8_t shouldFire(int8_t didUserRequestFire)
+{
+    if(player.rapidFireTimer)
+    {
+        return !player.RFT_Timer ? 1 : 0;     
+    }
+    return !player.gunTimer && didUserRequestFire ? 1 : 0;
+}
+void callMultiFuncPlayer()
+{
+    updatePlayerTimers();
+}
+/*
+int8_t callMultiFuncPlayer(int8_t x_dir, int8_t y_dir, int8_t didUserRequestFire)
+{
+    movePlayer(x_dir,y_dir);
+    updatePlayerTimers();
+    return shouldFire(didUserRequestFire);
+}*/
\ No newline at end of file