Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

NodeDrawer Class Reference

Inheritance diagram for NodeDrawer:

Inheritance graph
[legend]
Collaboration diagram for NodeDrawer:

Collaboration graph
[legend]

Detailed Description

Drawer which know how to draw nodes on path.

Definition at line 17 of file NodeDrawer.h.

Public Member Functions

 NodeDrawer ()
virtual ~NodeDrawer ()
void setScreen (SDL_Surface *screen)
void drawNode (const LevelNode *node) const
 Draw blinking dot centred on node position.
void drawEdge (const LevelNode *start, const LevelNode *end) const
void drawSelected (const std::string &levelname) const


Constructor & Destructor Documentation

NodeDrawer::NodeDrawer  ) 
 

Definition at line 23 of file NodeDrawer.cpp.

00024 {
00025     //TODO: allow to set font and color
00026     m_font = new Font(Path::dataReadPath("font/font_menu.ttf"), 22);
00027 
00028     m_imagePack = new ResImagePack();
00029     m_imagePack->addImage("solved",
00030             Path::dataReadPath("images/menu/n0.png"));
00031 
00032     m_imagePack->addImage("open",
00033             Path::dataReadPath("images/menu/n1.png"));
00034     m_imagePack->addImage("open",
00035             Path::dataReadPath("images/menu/n2.png"));
00036     m_imagePack->addImage("open",
00037             Path::dataReadPath("images/menu/n3.png"));
00038     m_imagePack->addImage("open",
00039             Path::dataReadPath("images/menu/n4.png"));
00040 
00041     m_imagePack->addImage("far",
00042             Path::dataReadPath("images/menu/n_far.png"));
00043 }

NodeDrawer::~NodeDrawer  )  [virtual]
 

Definition at line 45 of file NodeDrawer.cpp.

00046 {
00047     m_imagePack->removeAll();
00048     delete m_imagePack;
00049     delete m_font;
00050 }


Member Function Documentation

void NodeDrawer::drawEdge const LevelNode start,
const LevelNode end
const
 

Definition at line 122 of file NodeDrawer.cpp.

00123 {
00124     //TODO: nice curves
00125     Sint16 x1 = start->getLoc().getX();
00126     Sint16 y1 = start->getLoc().getY();
00127     Sint16 x2 = end->getLoc().getX();
00128     Sint16 y2 = end->getLoc().getY();
00129 
00130     Uint32 colorRGBA = 0xffff00ff;
00131     aalineColor(m_screen, x1, y1, x2, y2, colorRGBA);
00132     aalineColor(m_screen, x1 - 1, y1 - 1 , x2 - 1, y2 - 1, colorRGBA);
00133     aalineColor(m_screen, x1 + 1, y1 + 1 , x2 + 1, y2 + 1, colorRGBA);
00134     aalineColor(m_screen, x1 - 1, y1 + 1 , x2 - 1, y2 + 1, colorRGBA);
00135     aalineColor(m_screen, x1 + 1, y1 - 1 , x2 + 1, y2 - 1, colorRGBA);
00136 }

void NodeDrawer::drawNode const LevelNode node  )  const
 

Draw blinking dot centred on node position.

Definition at line 56 of file NodeDrawer.cpp.

00057 {
00058     V2 loc = node->getLoc();
00059     drawDot(m_imagePack->getRes("far"), loc);
00060 
00061     SDL_Surface *dot = NULL;
00062     switch (node->getState()) {
00063         case LevelNode::STATE_FAR:
00064             return;
00065         case LevelNode::STATE_OPEN:
00066             {
00067                 int phase = TimerAgent::agent()->getCycles() % 10;
00068                 if (phase > 4) {
00069                     phase--;
00070                 }
00071                 if (phase > 7) {
00072                     phase--;
00073                 }
00074                 if (phase >= 4) {
00075                     phase = 7 - phase;
00076                 }
00077                 dot = m_imagePack->getRes("open", phase);
00078             }
00079             break;
00080         case LevelNode::STATE_SOLVED:
00081             dot = m_imagePack->getRes("solved");
00082             break;
00083         default:
00084             LOG_WARNING(ExInfo("don't know how to draw node")
00085                     .addInfo("state", node->getState()));
00086             return;
00087     }
00088     drawDot(dot, loc);
00089 }

void NodeDrawer::drawSelected const std::string &  levelname  )  const
 

Definition at line 106 of file NodeDrawer.cpp.

00107 {
00108     //TODO: draw deflected text
00109     int text_width = m_font->calcTextWidth(levelname);
00110 
00111     SDL_Rect rect;
00112     rect.x = (m_screen->w - text_width) / 2;
00113     rect.y = m_screen->h - 50;
00114 
00115     SDL_Color color = {255, 255, 0, 255};
00116     SDL_Surface *surface = m_font->renderTextOutlined(levelname, color);
00117     SDL_BlitSurface(surface, NULL, m_screen, &rect);
00118     SDL_FreeSurface(surface);
00119 }

void NodeDrawer::setScreen SDL_Surface *  screen  )  [inline]
 

Definition at line 27 of file NodeDrawer.h.

00027 { m_screen = screen; }


The documentation for this class was generated from the following files:
Generated on Wed Jun 1 09:56:01 2005 for Fish Fillets - Next Generation by  doxygen 1.4.2