holy fuck holy shit holy shit fuck it's done
parent
c4124d27d1
commit
30254bb816
Binary file not shown.
@ -1 +1,3 @@
|
|||||||
e,10,240
|
e,10,200
|
||||||
|
e,20,10
|
||||||
|
e,22,50
|
Binary file not shown.
@ -0,0 +1,69 @@
|
|||||||
|
#include "help_screen.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using std::vector;
|
||||||
|
using std::string;
|
||||||
|
|
||||||
|
HelpScreen::HelpScreen() {
|
||||||
|
vector<string> menu_options;
|
||||||
|
menu_options.push_back("Continue"); //Continue game
|
||||||
|
menu.activate(menu_options);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run screen
|
||||||
|
void HelpScreen::run(ALLEGRO_FONT * font) {
|
||||||
|
ALLEGRO_EVENT_QUEUE* event_queue = NULL;
|
||||||
|
event_queue = al_create_event_queue();
|
||||||
|
al_register_event_source(event_queue, al_get_keyboard_event_source());
|
||||||
|
|
||||||
|
redraw(font);
|
||||||
|
menu.draw(300.0, 400.0, 20.0, font);
|
||||||
|
al_flip_display();
|
||||||
|
|
||||||
|
bool ctrl = false;
|
||||||
|
bool exit_screen = false;
|
||||||
|
while (!exit_screen) {
|
||||||
|
ALLEGRO_EVENT ev;
|
||||||
|
al_wait_for_event(event_queue, &ev);
|
||||||
|
|
||||||
|
if (ev.type == ALLEGRO_EVENT_KEY_DOWN) {
|
||||||
|
switch (ev.keyboard.keycode) {
|
||||||
|
case ALLEGRO_KEY_SPACE:
|
||||||
|
//Select item
|
||||||
|
exit_screen = true;
|
||||||
|
break;
|
||||||
|
case ALLEGRO_KEY_ESCAPE:
|
||||||
|
//Force quit game
|
||||||
|
exit_screen = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
redraw(font);
|
||||||
|
al_flip_display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Garbage collection
|
||||||
|
al_destroy_event_queue(event_queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelpScreen::redraw(ALLEGRO_FONT* font) {
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 12, SCREEN_H / 1.5 - 10, ALLEGRO_ALIGN_LEFT, "WASD or Arrows - Move ship");
|
||||||
|
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 12, SCREEN_H / 1.3 - 20, ALLEGRO_ALIGN_LEFT, "Spacebar - Shoot, select menu item");
|
||||||
|
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 12, SCREEN_H / 2 + 150, ALLEGRO_ALIGN_LEFT, "Esc - Exit Game");
|
||||||
|
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 2 + 113, SCREEN_H / 1.5 - 10, ALLEGRO_ALIGN_LEFT, "Ctrl + H - Open help menu");
|
||||||
|
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 2 + 113, SCREEN_H / 1.3 - 20, ALLEGRO_ALIGN_LEFT, "Ctrl + M - Toggle Music");
|
||||||
|
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), 0, SCREEN_H - 10, ALLEGRO_ALIGN_LEFT, "Copyright 2019 Braydon Kains");
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelpScreen::back() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelpScreen::cont() {
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "screen.h"
|
||||||
|
#include "cursor.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
//Screen to display results upon losing
|
||||||
|
class HelpScreen : public Screen {
|
||||||
|
public:
|
||||||
|
std::map<std::string, ALLEGRO_BITMAP*> sprites;
|
||||||
|
Cursor<std::string> menu;
|
||||||
|
|
||||||
|
HelpScreen();
|
||||||
|
|
||||||
|
void run(ALLEGRO_FONT* font);
|
||||||
|
void redraw(ALLEGRO_FONT* font);
|
||||||
|
void back();
|
||||||
|
void cont();
|
||||||
|
};
|
Binary file not shown.
@ -0,0 +1,91 @@
|
|||||||
|
#include <vector>
|
||||||
|
#include <sstream>
|
||||||
|
#include "result_screen.h"
|
||||||
|
|
||||||
|
using std::string;
|
||||||
|
using std::vector;
|
||||||
|
using std::ostringstream;
|
||||||
|
|
||||||
|
ResultScreen::ResultScreen() {
|
||||||
|
vector<string> menu_options;
|
||||||
|
menu_options.push_back("Retry"); //Restart game
|
||||||
|
menu_options.push_back("To Main Menu"); //Go back to main menu
|
||||||
|
menu_options.push_back("Exit"); //Quit game
|
||||||
|
menu.activate(menu_options);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultScreen::run(ALLEGRO_FONT* font) {
|
||||||
|
ALLEGRO_EVENT_QUEUE* event_queue = NULL;
|
||||||
|
event_queue = al_create_event_queue();
|
||||||
|
al_register_event_source(event_queue, al_get_keyboard_event_source());
|
||||||
|
|
||||||
|
redraw(font);
|
||||||
|
al_flip_display();
|
||||||
|
|
||||||
|
bool exit_screen = false;
|
||||||
|
while (!exit_screen) {
|
||||||
|
ALLEGRO_EVENT ev;
|
||||||
|
al_wait_for_event(event_queue, &ev);
|
||||||
|
|
||||||
|
if (ev.type == ALLEGRO_EVENT_KEY_DOWN) {
|
||||||
|
switch (ev.keyboard.keycode) {
|
||||||
|
case ALLEGRO_KEY_W:
|
||||||
|
case ALLEGRO_KEY_UP:
|
||||||
|
//Move cursor up
|
||||||
|
menu.up();
|
||||||
|
break;
|
||||||
|
case ALLEGRO_KEY_S:
|
||||||
|
case ALLEGRO_KEY_DOWN:
|
||||||
|
//Move cursor down
|
||||||
|
menu.down();
|
||||||
|
break;
|
||||||
|
case ALLEGRO_KEY_SPACE:
|
||||||
|
//Select menu item
|
||||||
|
cont();
|
||||||
|
exit_screen = true;
|
||||||
|
break;
|
||||||
|
case ALLEGRO_KEY_ESCAPE:
|
||||||
|
//Force quit game
|
||||||
|
back();
|
||||||
|
exit_screen = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
redraw(font);
|
||||||
|
al_flip_display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Garbage collection
|
||||||
|
al_clear_to_color(al_map_rgb(0, 0, 0));
|
||||||
|
al_destroy_event_queue(event_queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultScreen::redraw(ALLEGRO_FONT * font) {
|
||||||
|
//Determine whether the player receives the bad or good ending; minimum requirement for good ending is 30 catches.
|
||||||
|
string result_text = (win) ? "You made it literally all the way across space! Wow!" : "Oh no, you died!";
|
||||||
|
|
||||||
|
//Display score and menu
|
||||||
|
menu.draw(SCREEN_W / 2 - 40, SCREEN_H / 2 - 30, 20.0, font);
|
||||||
|
ostringstream score_msg;
|
||||||
|
score_msg << "Final Score: " << score;
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 2, SCREEN_H / 2 - 90, ALLEGRO_ALIGN_CENTER, score_msg.str().c_str());
|
||||||
|
|
||||||
|
al_draw_text(font, al_map_rgb(255, 255, 255), SCREEN_W / 2, SCREEN_H / 2 - 60, ALLEGRO_ALIGN_CENTER, result_text.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultScreen::back() {
|
||||||
|
next_state = Exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResultScreen::cont() {
|
||||||
|
string result = menu.get_selected();
|
||||||
|
if (result == "Retry") {
|
||||||
|
next_state = Gameplay;
|
||||||
|
}
|
||||||
|
else if (result == "To Main Menu") {
|
||||||
|
next_state = Start;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
next_state = Exit;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "cursor.h"
|
||||||
|
#include "screen.h"
|
||||||
|
|
||||||
|
//Screen to display results upon losing
|
||||||
|
class ResultScreen : public Screen {
|
||||||
|
public:
|
||||||
|
int score;
|
||||||
|
Cursor<std::string> menu;
|
||||||
|
std::map<std::string, ALLEGRO_BITMAP*> sprites;
|
||||||
|
bool win;
|
||||||
|
|
||||||
|
ResultScreen();
|
||||||
|
|
||||||
|
void run(ALLEGRO_FONT* font);
|
||||||
|
void redraw(ALLEGRO_FONT* font);
|
||||||
|
void back();
|
||||||
|
void cont();
|
||||||
|
};
|
Binary file not shown.
After Width: | Height: | Size: 141 KiB |
@ -0,0 +1,52 @@
|
|||||||
|
#include "star.h"
|
||||||
|
|
||||||
|
Star::Star() {
|
||||||
|
oob = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Star::reset_pos(float x, float y) {
|
||||||
|
x_pos = x;
|
||||||
|
y_pos = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Star::set_layer(BgLayer _layer) {
|
||||||
|
layer = _layer;
|
||||||
|
|
||||||
|
switch (layer) {
|
||||||
|
case Front:
|
||||||
|
speed = 1.2;
|
||||||
|
height = 1;
|
||||||
|
width = 1;
|
||||||
|
break;
|
||||||
|
case Middle:
|
||||||
|
speed = 1.0;
|
||||||
|
height = 2;
|
||||||
|
width = 2;
|
||||||
|
break;
|
||||||
|
case Back:
|
||||||
|
speed = 0.4;
|
||||||
|
height = 4;
|
||||||
|
width = 4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
h_t_bound = 0 - height;
|
||||||
|
h_b_bound = SCREEN_H + height;
|
||||||
|
l_bound = 0;
|
||||||
|
r_bound = SCREEN_W;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Star::move(Direction dir) {
|
||||||
|
y_pos += 4 * speed;
|
||||||
|
if (y_pos > h_b_bound) oob = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Star::draw() {
|
||||||
|
al_draw_filled_rectangle(x_pos, y_pos, (x_pos + width), (y_pos + height), al_map_rgb(255, 255, 255));
|
||||||
|
}
|
||||||
|
|
||||||
|
Hitbox Star::get_hitbox() {
|
||||||
|
return Hitbox();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "game_element.h"
|
||||||
|
#include <allegro5/allegro_primitives.h>
|
||||||
|
#include "enums.h"
|
||||||
|
|
||||||
|
//Background elements, used to salvage parallax scrolling attempts
|
||||||
|
class Star : public GameElement {
|
||||||
|
public:
|
||||||
|
BgLayer layer;
|
||||||
|
|
||||||
|
Star();
|
||||||
|
|
||||||
|
//Implement inhereted virtuals
|
||||||
|
void reset_pos(float x, float y);
|
||||||
|
void move(Direction dir);
|
||||||
|
void draw();
|
||||||
|
Hitbox get_hitbox();
|
||||||
|
|
||||||
|
//Unique to element
|
||||||
|
void set_layer(BgLayer _layer);
|
||||||
|
};
|
Binary file not shown.
Loading…
Reference in New Issue