Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Fri May 15 16:31:25 2020 +0000
Revision:
36:27aa597db3d2
Parent:
29:e96d91f1d39c
Child:
82:3211b31e9421
Created Parent Classes folder to hold all of the parent class files. Shortened function lengths in Game Engine class and organised function definitions.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 25:70b55f5bfc87 1 #include "Explosion.h"
evanso 25:70b55f5bfc87 2
evanso 26:1a7056eb3253 3 // Defining animation states for explotion FSM
evanso 25:70b55f5bfc87 4 Animation animation_fsm[2] = {
evanso 25:70b55f5bfc87 5 {false, true, FILL_WHITE, FILL_BLACK},
evanso 27:8bb2bd97c319 6 {true, false, FILL_TRANSPARENT, FILL_WHITE},
evanso 25:70b55f5bfc87 7 };
evanso 25:70b55f5bfc87 8
evanso 25:70b55f5bfc87 9 Explosion::Explosion() {
evanso 25:70b55f5bfc87 10
evanso 25:70b55f5bfc87 11 }
evanso 25:70b55f5bfc87 12
evanso 25:70b55f5bfc87 13 Explosion::~Explosion() {
evanso 25:70b55f5bfc87 14
evanso 25:70b55f5bfc87 15 }
evanso 25:70b55f5bfc87 16
evanso 29:e96d91f1d39c 17 void Explosion::init(Vector2D destroyed_position) {
evanso 36:27aa597db3d2 18 // Assign values to variables
evanso 29:e96d91f1d39c 19 position_x_ = destroyed_position.x + 3;
evanso 29:e96d91f1d39c 20 position_y_ = destroyed_position.y + 3;
evanso 25:70b55f5bfc87 21 fsm_counter_ = 0;
evanso 25:70b55f5bfc87 22 explosion_radius_ = 4;
evanso 25:70b55f5bfc87 23 draw_counter = 0;
evanso 25:70b55f5bfc87 24 }
evanso 25:70b55f5bfc87 25
evanso 25:70b55f5bfc87 26 void Explosion::draw_explosion(N5110 &lcd) {
evanso 26:1a7056eb3253 27 // Draws each explotion frame depending on state
evanso 36:27aa597db3d2 28 // Draw circle one
evanso 25:70b55f5bfc87 29 if(animation_fsm[fsm_counter_].draw_circle_one){
evanso 27:8bb2bd97c319 30 lcd.drawCircle(position_x_, position_y_,explosion_radius_ + 1,
evanso 27:8bb2bd97c319 31 animation_fsm[fsm_counter_].circle_one);
evanso 25:70b55f5bfc87 32 }
evanso 36:27aa597db3d2 33 // Draw circle two
evanso 25:70b55f5bfc87 34 if(animation_fsm[fsm_counter_].draw_circle_two){
evanso 28:a5958497d5ce 35 lcd.drawCircle(position_x_, position_y_,(explosion_radius_ - 2),
evanso 28:a5958497d5ce 36 animation_fsm[fsm_counter_].circle_two);
evanso 25:70b55f5bfc87 37 }
evanso 25:70b55f5bfc87 38
evanso 25:70b55f5bfc87 39 // Slows down annimation change time, so eplosion animation is longer
evanso 25:70b55f5bfc87 40 if (draw_counter%2 == 0) {
evanso 25:70b55f5bfc87 41 explosion_radius_++;
evanso 25:70b55f5bfc87 42 fsm_counter_ = !fsm_counter_;
evanso 25:70b55f5bfc87 43 }
evanso 25:70b55f5bfc87 44 draw_counter++;
evanso 25:70b55f5bfc87 45 }
evanso 25:70b55f5bfc87 46
evanso 25:70b55f5bfc87 47 int Explosion::get_explosion_radius(){
evanso 25:70b55f5bfc87 48 return explosion_radius_;
evanso 25:70b55f5bfc87 49 }