Changed attack logic
This commit is contained in:
@@ -66,7 +66,7 @@
|
|||||||
long previousMillis = 0; // Time of the last redraw
|
long previousMillis = 0; // Time of the last redraw
|
||||||
int levelNumber = 0;
|
int levelNumber = 0;
|
||||||
|
|
||||||
#define TIMEOUT 20000 // time until screen saver in milliseconds
|
#define TIMEOUT 60000 // time until screen saver in milliseconds
|
||||||
|
|
||||||
int joystickTilt = 0; // Stores the angle of the joystick
|
int joystickTilt = 0; // Stores the angle of the joystick
|
||||||
int joystickWobble = 0; // Stores the max amount of acceleration (wobble)
|
int joystickWobble = 0; // Stores the max amount of acceleration (wobble)
|
||||||
@@ -74,9 +74,10 @@ int joystickWobble = 0; // Stores the max amount of acceleration (wob
|
|||||||
// WOBBLE ATTACK
|
// WOBBLE ATTACK
|
||||||
#define DEFAULT_ATTACK_WIDTH 70 // Width of the wobble attack, world is 1000 wide
|
#define DEFAULT_ATTACK_WIDTH 70 // Width of the wobble attack, world is 1000 wide
|
||||||
int attack_width = DEFAULT_ATTACK_WIDTH;
|
int attack_width = DEFAULT_ATTACK_WIDTH;
|
||||||
#define ATTACK_DURATION 500 // Duration of a wobble attack (ms)
|
#define ATTACK_DURATION 1000 // Duration of a wobble attack (ms)
|
||||||
long attackMillis = 0; // Time the attack started
|
long attackMillis = 0; // Time the attack started
|
||||||
bool attacking = 0; // Is the attack in progress?
|
bool attacking = 0; // Is the attack in progress?
|
||||||
|
bool canAttackAgain = 0; // Have I finished my previous attack?
|
||||||
#define BOSS_WIDTH 40
|
#define BOSS_WIDTH 40
|
||||||
|
|
||||||
// TODO all animation durations should be defined rather than literals
|
// TODO all animation durations should be defined rather than literals
|
||||||
@@ -268,7 +269,9 @@ void loop() {
|
|||||||
long frameTimer = mm;
|
long frameTimer = mm;
|
||||||
previousMillis = mm;
|
previousMillis = mm;
|
||||||
|
|
||||||
if(abs(joystickTilt) > user_settings.joystick_deadzone){
|
if((abs(joystickTilt) > user_settings.joystick_deadzone) ||
|
||||||
|
(joystickWobble >= user_settings.attack_threshold))
|
||||||
|
{
|
||||||
lastInputTime = mm;
|
lastInputTime = mm;
|
||||||
if(stage == SCREENSAVER){
|
if(stage == SCREENSAVER){
|
||||||
levelNumber = -1;
|
levelNumber = -1;
|
||||||
@@ -297,10 +300,18 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}else if(stage == PLAY){
|
}else if(stage == PLAY){
|
||||||
// PLAYING
|
// PLAYING
|
||||||
if(attacking && attackMillis+ATTACK_DURATION < mm) attacking = 0;
|
if(attacking && attackMillis+ATTACK_DURATION < mm) {
|
||||||
|
attacking = 0;
|
||||||
|
canAttackAgain = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(joystickWobble < user_settings.attack_threshold){
|
||||||
|
attacking = 0;
|
||||||
|
canAttackAgain = 1;
|
||||||
|
}
|
||||||
|
|
||||||
// If not attacking, check if they should be
|
// If not attacking, check if they should be
|
||||||
if(!attacking && joystickWobble >= user_settings.attack_threshold){
|
if(!attacking && canAttackAgain && (joystickWobble >= user_settings.attack_threshold)){
|
||||||
attackMillis = mm;
|
attackMillis = mm;
|
||||||
attacking = 1;
|
attacking = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user