Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Mon May 25 18:39:51 2020 +0000
Revision:
82:3211b31e9421
Parent:
36:27aa597db3d2
Child:
85:87bc28b151d8
Made commenting and formatting of code more consistent.

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 82:3211b31e9421 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 82:3211b31e9421 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 82:3211b31e9421 47 int Explosion::get_explosion_radius() {
evanso 25:70b55f5bfc87 48 return explosion_radius_;
evanso 25:70b55f5bfc87 49 }