2024-02-26 23:12:39 +00:00
|
|
|
#ifndef __MOVEMENT_H__
|
|
|
|
#define __MOVEMENT_H__
|
|
|
|
|
2024-02-21 13:25:55 +00:00
|
|
|
#include "system/keyboard.h"
|
2024-02-21 21:25:00 +00:00
|
|
|
|
2024-02-21 13:25:55 +00:00
|
|
|
struct RabbitPosition {
|
|
|
|
int rabbitPosition[2];
|
|
|
|
int oldRabbitPosition[2];
|
|
|
|
int rabbitLimits[2][2];
|
|
|
|
signed char rabbitVelocity[2];
|
2024-02-20 17:51:59 +00:00
|
|
|
|
2024-02-21 13:25:55 +00:00
|
|
|
int mousePosition[2];
|
|
|
|
int oldMousePosition[2];
|
|
|
|
|
|
|
|
int mouseDotPosition[2];
|
|
|
|
int oldMouseDotPosition[2];
|
|
|
|
|
|
|
|
int mouseAngle;
|
|
|
|
};
|
|
|
|
|
2024-02-27 13:16:16 +00:00
|
|
|
#define WEAPON_TYPE_SINGLE_SHOT_GUN (0)
|
|
|
|
#define WEAPON_TYPE_SPREAD_SHOT_GUN (1)
|
2024-02-26 23:12:39 +00:00
|
|
|
|
2024-02-21 13:25:55 +00:00
|
|
|
struct RabbitWeaponry {
|
|
|
|
char cooldown;
|
2024-02-26 23:12:39 +00:00
|
|
|
char currentWeapon;
|
2024-02-27 01:40:05 +00:00
|
|
|
int currentWeaponRemainingRounds;
|
|
|
|
};
|
|
|
|
|
2024-02-27 13:16:16 +00:00
|
|
|
#define POWERUP_TYPE_SHOTGUN (0)
|
|
|
|
#define POWERUP_TYPE_SHIELD_KILLER (1)
|
2024-02-27 01:40:05 +00:00
|
|
|
|
|
|
|
struct PlayerPowerup {
|
|
|
|
int x, y;
|
|
|
|
int cooldown;
|
|
|
|
char isActive;
|
2024-02-27 13:16:16 +00:00
|
|
|
char willBeInactive;
|
2024-02-27 01:40:05 +00:00
|
|
|
char type;
|
2024-02-20 17:51:59 +00:00
|
|
|
};
|
2024-02-21 13:25:55 +00:00
|
|
|
|
|
|
|
struct BulletPosition {
|
|
|
|
// 1 if the bullet should be rendered
|
|
|
|
char isActive;
|
|
|
|
// sweep up the bullet from the display
|
|
|
|
char willBeInactive;
|
|
|
|
int x, y;
|
|
|
|
int oldX, oldY;
|
|
|
|
|
2024-02-26 23:12:39 +00:00
|
|
|
int wallCooldown;
|
|
|
|
|
2024-02-25 21:59:04 +00:00
|
|
|
signed int velocityXSteps[2], velocityYSteps[2];
|
|
|
|
int velocityStep;
|
2024-02-27 13:16:16 +00:00
|
|
|
int angle;
|
2024-02-21 13:25:55 +00:00
|
|
|
};
|
|
|
|
|
2024-02-21 21:25:00 +00:00
|
|
|
struct EnemyPosition {
|
|
|
|
char isActive;
|
|
|
|
|
|
|
|
char willBeInactive;
|
2024-02-25 21:59:04 +00:00
|
|
|
char wasKilled;
|
2024-02-21 21:25:00 +00:00
|
|
|
|
2024-02-26 23:12:39 +00:00
|
|
|
char hitPoints;
|
|
|
|
char hasLeftGate;
|
|
|
|
char gateExitedFrom;
|
|
|
|
|
2024-02-21 21:25:00 +00:00
|
|
|
int enemyPosition[2];
|
|
|
|
int oldEnemyPosition[2];
|
2024-02-25 21:59:04 +00:00
|
|
|
|
|
|
|
int enemyMoveDelayStep;
|
|
|
|
int enemyFireDelayStep;
|
2024-02-21 21:25:00 +00:00
|
|
|
};
|
|
|
|
|
2024-02-21 13:25:55 +00:00
|
|
|
void calculateTargetAngle(struct RabbitPosition*, struct MouseStatus*);
|
|
|
|
void captureAndLimitMousePosition(struct RabbitPosition*, struct MouseStatus*);
|
|
|
|
void handleRabbitMovement(struct RabbitPosition*, struct KeyboardKeydownState*);
|
2024-02-25 21:59:04 +00:00
|
|
|
void handleEnemyMovement(struct EnemyPosition[], struct RabbitPosition*);
|
2024-02-26 23:12:39 +00:00
|
|
|
|
|
|
|
#endif
|