Exploring raycasters and possibly make a little "doom like" game based on it.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
raycaster/tools/arena.cpp

45 lines
1.0 KiB

#include "arena_fsm.hpp"
#include "textures.hpp"
#include "sound.hpp"
#include "ai.hpp"
#include "animation.hpp"
#include <iostream>
int main(int argc, char* argv[]) {
try {
dbc::check(argc == 2, "USAGE: arena enemy_name");
std::string enemy_name{argv[1]};
textures::init();
sound::init();
ai::init("assets/ai.json");
animation::init();
sound::mute(false);
sound::play("ambient_1", true);
arena::FSM main(enemy_name);
main.event(arena::Event::STARTED);
while(main.active()) {
main.render();
// ZED: need to sort out how to deal with this in the FSM
if(main.in_state(arena::State::IDLE)) {
main.event(arena::Event::TICK);
}
main.keyboard_mouse();
main.handle_world_events();
}
return 0;
} catch(const std::system_error& e) {
std::cout << "WARNING: On OSX you'll get this error on shutdown.\n";
std::cout << "Caught system_error with code "
"[" << e.code() << "] meaning "
"[" << e.what() << "]\n";
}
}