First commit
This commit is contained in:
82
Xwing.cpp
Normal file
82
Xwing.cpp
Normal file
@@ -0,0 +1,82 @@
|
||||
#include "Xwing.h"
|
||||
#include "api.h"
|
||||
|
||||
#include "keyHandlers.h"
|
||||
#include "StarField.h"
|
||||
#include "Menu.h"
|
||||
|
||||
namespace {
|
||||
int hit = 0;
|
||||
int lives = 3;
|
||||
int n1 = -1;
|
||||
int n2 = -1;
|
||||
int dead = 0;
|
||||
float y = 125;
|
||||
float fn = 0;
|
||||
}
|
||||
|
||||
Xwing::Xwing() {
|
||||
hit = 0;
|
||||
lives = 3;
|
||||
n1 = -1;
|
||||
n2 = -1;
|
||||
dead = 0;
|
||||
y = 125;
|
||||
RegisterMessage("HeroHit", this);
|
||||
RegisterMessage("SetNumbers", this);
|
||||
}
|
||||
|
||||
void Xwing::Update() {
|
||||
if (dead == 0) {
|
||||
if (n1 != -1) PrintChar(20, 115, n1 + 48, 0, 255, 0);
|
||||
if (n2 != -1) {
|
||||
PrintChar(27, 115, n2 + 48, 0, 255, 0);
|
||||
n1 = n2 = -1;
|
||||
}
|
||||
if (hit > 0) hit--;
|
||||
//Tint(255, 0, 0);
|
||||
fn += 0.05f;
|
||||
y = 125 + SDL_sinf(fn)*10.0f;
|
||||
if ((hit / 15) % 2 == 0) Draw(20, y, 0, 64, 37, 21, SDL_cosf(fn)*5.0f);
|
||||
//Tint(255, 255, 255);
|
||||
}
|
||||
else {
|
||||
dead--;
|
||||
if (lives == 0) {
|
||||
if (dead < 120) Print(200, 120, "GAME OVER", 255, 255, 255);
|
||||
if (dead == 0) {
|
||||
Reset();
|
||||
RegisterSystem(new StarField());
|
||||
RegisterSystem(new Menu());
|
||||
RegisterKeyboardHandler(&menuKeyHandler);
|
||||
}
|
||||
} else {
|
||||
if (dead == 0) SendMessage("ResetEnemies");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HeroHit(int x, int y) {
|
||||
SendMessage("CreateNewLaser", x, y, 40, 125, 1);
|
||||
hit = 240;
|
||||
lives--;
|
||||
dead = lives == 0 ? 300 : 180;
|
||||
SendMessage("DecreaseLives");
|
||||
//if (lives == 0)
|
||||
SendMessage("GenerateExplosion", 60, 135);
|
||||
}
|
||||
|
||||
void SetNumbers(int p1, int p2) {
|
||||
if (p1 >= 0) n1 = p1;
|
||||
if (p2 >= 0) n2 = p2;
|
||||
}
|
||||
|
||||
void Xwing::ProcessMessage(const char* msg) {
|
||||
if (msg == "HeroHit") {
|
||||
int* params = GetMessageParams();
|
||||
HeroHit(params[0], params[1]);
|
||||
} else if (msg == "SetNumbers") {
|
||||
int* params = GetMessageParams();
|
||||
SetNumbers(params[0], params[1]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user