112 lines
1.8 KiB
C++
112 lines
1.8 KiB
C++
#include "gamecore.h"
|
|
#include "drawutils.h"
|
|
|
|
#ifdef DEBUG
|
|
#include <iostream>
|
|
#endif
|
|
|
|
GameCore::GameCore()
|
|
{
|
|
display = NULL;
|
|
background = NULL;
|
|
node = NULL;
|
|
is_running = true;
|
|
}
|
|
|
|
int GameCore::execute()
|
|
{
|
|
if (!init()) return 1;
|
|
|
|
SDL_Event event;
|
|
|
|
while (is_running)
|
|
{
|
|
while(SDL_PollEvent(&event))
|
|
handle_event(&event);
|
|
iterate();
|
|
render();
|
|
}
|
|
|
|
cleanup();
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
bool GameCore::init()
|
|
{
|
|
if (SDL_Init(SDL_INIT_EVERYTHING) < 0) return false;
|
|
|
|
display = SDL_SetVideoMode(800,600,32, SDL_HWSURFACE | SDL_DOUBLEBUF);
|
|
if (display == NULL)
|
|
{
|
|
#ifdef DEBUG
|
|
std::cerr << "GameCore::init(): error: Couldn't create main surface\n";
|
|
#endif
|
|
return false;
|
|
}
|
|
|
|
background = DrawUtils::load("background.bmp");
|
|
node = DrawUtils::load("node.bmp");
|
|
|
|
if (background == NULL || node == NULL)
|
|
{
|
|
#ifdef DEBUG
|
|
std::cerr << "GameCore::init(): error: Couldn't load an image file\n";
|
|
#endif
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
void GameCore::render()
|
|
{
|
|
list<Vertex> vertices = graph.get_vertices();
|
|
list<Edge> edges = graph.get_edges();
|
|
|
|
for (list<Vertex>::iterator cursor = vertices.begin();
|
|
cursor != vertices.end(); cursor++)
|
|
{
|
|
Vertex v = *cursor;
|
|
DrawUtils::draw(display, node, v.x_min, v.y_min);
|
|
}
|
|
|
|
for (list<Edge>::iterator cursor = edges.begin();
|
|
cursor != edges.end(); cursor++)
|
|
{
|
|
Edge e = *cursor;
|
|
DrawUtils::draw_line(e.a.x, e.a.y, e.b.x, e.b.y, 2, 0xffffff, display);
|
|
}
|
|
|
|
SDL_Flip(display);
|
|
}
|
|
|
|
|
|
void GameCore::iterate()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void GameCore::cleanup()
|
|
{
|
|
SDL_FreeSurface(background);
|
|
SDL_FreeSurface(node);
|
|
SDL_FreeSurface(display);
|
|
SDL_Quit();
|
|
}
|
|
|
|
|
|
void GameCore::on_exit()
|
|
{
|
|
is_running = false;
|
|
}
|
|
|
|
|
|
void GameCore::on_lbutton_down(int x, int y)
|
|
{
|
|
graph.add_vertex(x, y, 25);
|
|
}
|