Vertices can now render themselves - not sure what to do about edges, right now game is still doing them
This commit is contained in:
parent
42e2e43ead
commit
735a9dfcef
43
game.cpp
43
game.cpp
|
@ -11,10 +11,6 @@ Game::Game(stack<GameState*>* state_stack, SDL_Surface* display)
|
||||||
{
|
{
|
||||||
background = NULL;
|
background = NULL;
|
||||||
font = NULL;
|
font = NULL;
|
||||||
|
|
||||||
attacker_icon = NULL;
|
|
||||||
defender_icon = NULL;
|
|
||||||
producer_icon = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,21 +33,13 @@ bool Game::init()
|
||||||
{
|
{
|
||||||
background = DrawUtils::load("background.bmp");
|
background = DrawUtils::load("background.bmp");
|
||||||
font = TTF_OpenFont("res/LiberationSans-Regular.ttf", 12);
|
font = TTF_OpenFont("res/LiberationSans-Regular.ttf", 12);
|
||||||
attacker_icon = DrawUtils::load("attacker_icon.bmp");
|
|
||||||
defender_icon = DrawUtils::load("defender_icon.bmp");
|
|
||||||
producer_icon = DrawUtils::load("producer_icon.bmp");
|
|
||||||
|
|
||||||
if (background == NULL || font == NULL || attacker_icon == NULL ||
|
if (background == NULL || font == NULL)
|
||||||
defender_icon == NULL || producer_icon == NULL)
|
|
||||||
{
|
{
|
||||||
debug("Game::init(): error: Couldn't load some resource(s)");
|
debug("Game::init(): error: Couldn't load some resource(s)");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawUtils::transpare(attacker_icon);
|
|
||||||
DrawUtils::transpare(defender_icon);
|
|
||||||
DrawUtils::transpare(producer_icon);
|
|
||||||
|
|
||||||
int row1 = display->h - 95;
|
int row1 = display->h - 95;
|
||||||
int row2 = display->h - 65;
|
int row2 = display->h - 65;
|
||||||
int row3 = display->h - 35;
|
int row3 = display->h - 35;
|
||||||
|
@ -161,12 +149,12 @@ void Game::render()
|
||||||
for (list<Vertex*>::iterator cursor = vertices.begin();
|
for (list<Vertex*>::iterator cursor = vertices.begin();
|
||||||
cursor != vertices.end(); cursor++)
|
cursor != vertices.end(); cursor++)
|
||||||
{
|
{
|
||||||
GameVertex* v = dynamic_cast<GameVertex*>(*cursor);
|
dynamic_cast<GameVertex*>(*cursor)->render(display);
|
||||||
draw_node(v);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw the rest of the bottom menu
|
// draw the rest of the bottom menu
|
||||||
draw_menu_bars();
|
draw_menu_bars();
|
||||||
|
draw_player_info();
|
||||||
|
|
||||||
for (list<MenuButton*>::iterator cursor = buttons.begin();
|
for (list<MenuButton*>::iterator cursor = buttons.begin();
|
||||||
cursor != buttons.end(); cursor++)
|
cursor != buttons.end(); cursor++)
|
||||||
|
@ -174,8 +162,6 @@ void Game::render()
|
||||||
(*cursor)->render(display);
|
(*cursor)->render(display);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_player_info();
|
|
||||||
|
|
||||||
SDL_Flip(display);
|
SDL_Flip(display);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,29 +183,6 @@ void Game::draw_menu_bars()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Game::draw_node(GameVertex* v)
|
|
||||||
{
|
|
||||||
DrawUtils::draw_circle_filled(display, v->x, v->y, v->r,
|
|
||||||
v->colour);
|
|
||||||
|
|
||||||
DrawUtils::draw_text(display, itos(v->score), v->x, v->y, font,
|
|
||||||
0x00ff00, true, true);
|
|
||||||
|
|
||||||
switch (v->type)
|
|
||||||
{
|
|
||||||
case VERTEX_ATTACKER:
|
|
||||||
DrawUtils::draw(display, attacker_icon, v->x + 5, v-> y + 5);
|
|
||||||
break;
|
|
||||||
case VERTEX_DEFENDER:
|
|
||||||
DrawUtils::draw(display, defender_icon, v->x + 5, v-> y + 5);
|
|
||||||
break;
|
|
||||||
case VERTEX_PRODUCER:
|
|
||||||
DrawUtils::draw(display, producer_icon, v->x + 5, v-> y + 5);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Game::draw_player_info()
|
void Game::draw_player_info()
|
||||||
{
|
{
|
||||||
Player* player = data.get_turn();
|
Player* player = data.get_turn();
|
||||||
|
|
4
game.h
4
game.h
|
@ -39,7 +39,6 @@ class Game : public GameState
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void draw_stats(GameVertex* v);
|
void draw_stats(GameVertex* v);
|
||||||
void draw_node(GameVertex* v);
|
|
||||||
void draw_player_info();
|
void draw_player_info();
|
||||||
void draw_menu_bars();
|
void draw_menu_bars();
|
||||||
|
|
||||||
|
@ -55,9 +54,6 @@ class Game : public GameState
|
||||||
// surfaces containing textures to draw
|
// surfaces containing textures to draw
|
||||||
SDL_Surface* background;
|
SDL_Surface* background;
|
||||||
TTF_Font* font;
|
TTF_Font* font;
|
||||||
SDL_Surface* attacker_icon;
|
|
||||||
SDL_Surface* defender_icon;
|
|
||||||
SDL_Surface* producer_icon;
|
|
||||||
|
|
||||||
// menu buttons
|
// menu buttons
|
||||||
list<MenuButton*> buttons;
|
list<MenuButton*> buttons;
|
||||||
|
|
|
@ -1,13 +1,26 @@
|
||||||
|
#include "debug.h"
|
||||||
#include "gamevertex.h"
|
#include "gamevertex.h"
|
||||||
|
#include "itos.h"
|
||||||
|
#include "drawutils.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
TTF_Font* GameVertex::font = NULL;
|
||||||
|
SDL_Surface* GameVertex::attacker_icon = NULL;
|
||||||
|
SDL_Surface* GameVertex::defender_icon = NULL;
|
||||||
|
SDL_Surface* GameVertex::producer_icon = NULL;
|
||||||
|
|
||||||
|
|
||||||
GameVertex::GameVertex(int x, int y, int z, int r, int colour, int score,
|
GameVertex::GameVertex(int x, int y, int z, int r, int colour, int score,
|
||||||
VertexType type, Player* player)
|
VertexType type, Player* player)
|
||||||
: Vertex(x, y, z, r, colour, score)
|
: Vertex(x, y, z, r, colour, score)
|
||||||
{
|
{
|
||||||
this->type = type;
|
this->type = type;
|
||||||
this->player = player;
|
this->player = player;
|
||||||
|
|
||||||
|
if (font == NULL || attacker_icon == NULL || defender_icon == NULL ||
|
||||||
|
producer_icon == NULL)
|
||||||
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,3 +121,51 @@ float GameVertex::calculate_strength_r(Vertex* node, unsigned int depth, list<Ve
|
||||||
|
|
||||||
return modscore;
|
return modscore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool GameVertex::init()
|
||||||
|
{
|
||||||
|
font = TTF_OpenFont("res/LiberationSans-Regular.ttf", 12);
|
||||||
|
attacker_icon = DrawUtils::load("attacker_icon.bmp");
|
||||||
|
defender_icon = DrawUtils::load("defender_icon.bmp");
|
||||||
|
producer_icon = DrawUtils::load("producer_icon.bmp");
|
||||||
|
|
||||||
|
if (font == NULL || attacker_icon == NULL ||
|
||||||
|
defender_icon == NULL || producer_icon == NULL)
|
||||||
|
{
|
||||||
|
debug("GameVertex::init(): error: Couldn't load some resource(s)");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawUtils::transpare(attacker_icon);
|
||||||
|
DrawUtils::transpare(defender_icon);
|
||||||
|
DrawUtils::transpare(producer_icon);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GameVertex::render(SDL_Surface* display)
|
||||||
|
{
|
||||||
|
SDL_Surface* icon;
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case VERTEX_ATTACKER:
|
||||||
|
icon = attacker_icon;
|
||||||
|
break;
|
||||||
|
case VERTEX_DEFENDER:
|
||||||
|
icon = defender_icon;
|
||||||
|
break;
|
||||||
|
case VERTEX_PRODUCER:
|
||||||
|
icon = producer_icon;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawUtils::draw_circle_filled(display, x, y, r, colour);
|
||||||
|
|
||||||
|
DrawUtils::draw_text(display, itos(score), x, y, font,
|
||||||
|
0x00ff00, true, true);
|
||||||
|
|
||||||
|
DrawUtils::draw(display, icon, x + 5, y + 5);
|
||||||
|
}
|
||||||
|
|
13
gamevertex.h
13
gamevertex.h
|
@ -11,16 +11,23 @@
|
||||||
|
|
||||||
#include "vertex.h"
|
#include "vertex.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include <SDL.h>
|
||||||
|
#include <SDL_ttf.h>
|
||||||
|
|
||||||
enum VertexType {VERTEX_NONE=0x1, VERTEX_ATTACKER=0x2, VERTEX_DEFENDER=0x4,
|
enum VertexType {VERTEX_NONE=0x1, VERTEX_ATTACKER=0x2, VERTEX_DEFENDER=0x4,
|
||||||
VERTEX_PRODUCER=0x8};
|
VERTEX_PRODUCER=0x8};
|
||||||
|
|
||||||
class GameVertex : public Vertex
|
class GameVertex : public Vertex, public Entity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GameVertex(int x, int y, int z, int r, int colour = 0, int score = 0,
|
GameVertex(int x, int y, int z, int r, int colour = 0, int score = 0,
|
||||||
VertexType type = VERTEX_NONE, Player* player = NULL);
|
VertexType type = VERTEX_NONE, Player* player = NULL);
|
||||||
|
|
||||||
|
bool init();
|
||||||
|
void iterate() {}
|
||||||
|
void render(SDL_Surface* display);
|
||||||
|
|
||||||
VertexType type;
|
VertexType type;
|
||||||
Player* player;
|
Player* player;
|
||||||
bool attacked; // only applicable for a VERTEX_ATTACKER
|
bool attacked; // only applicable for a VERTEX_ATTACKER
|
||||||
|
@ -32,6 +39,10 @@ class GameVertex : public Vertex
|
||||||
float calculate_strength();
|
float calculate_strength();
|
||||||
float calculate_strength_r(Vertex* node, unsigned int depth, list<Vertex*>& visited);
|
float calculate_strength_r(Vertex* node, unsigned int depth, list<Vertex*>& visited);
|
||||||
|
|
||||||
|
static TTF_Font* font;
|
||||||
|
static SDL_Surface* attacker_icon;
|
||||||
|
static SDL_Surface* defender_icon;
|
||||||
|
static SDL_Surface* producer_icon;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -95,10 +95,13 @@ void MenuButton::set_state(Mode mode, VertexType type, GameVertex* current)
|
||||||
)
|
)
|
||||||
selected = true;
|
selected = true;
|
||||||
|
|
||||||
|
// no optional buttons if current == NULL, period
|
||||||
|
if (current == NULL) return;
|
||||||
|
|
||||||
// If we have selected one of our vertices, and we're one of the three
|
// If we have selected one of our vertices, and we're one of the three
|
||||||
// main buttons, be visible
|
// main buttons, be visible
|
||||||
if (current != NULL && action & (BUTTON_ATTACK | BUTTON_MOVE |
|
if (action & (BUTTON_ATTACK | BUTTON_MOVE |
|
||||||
BUTTON_BUILD))
|
BUTTON_BUILD))
|
||||||
visible = true;
|
visible = true;
|
||||||
|
|
||||||
// If we're one of the other three, and we're in MODE_BUILD, we're visible
|
// If we're one of the other three, and we're in MODE_BUILD, we're visible
|
||||||
|
|
Loading…
Reference in New Issue
Block a user