#include <mapwin.h>
Inheritance diagram for MapWindow:
Public Methods | |
MapWindow (void) | |
~MapWindow (void) | |
void | Init (Display *, int, int) |
void | Draw (void) |
void | EnableNodes (MoveList &, int) |
void | DisableNodes (MoveList &) |
void | HilightNode (int, int) |
void | UnHilightNode (int) |
Private Methods | |
void | AllocNodes (void) |
void | DrawLines (void) |
void | ConnectNode (int node1, int node2) |
void | Scale (int &, int &) |
void | NewConnectNode (int, int, byte) |
Private Attributes | |
int | NNodes |
Nodes ** | NodeList |
|
Definition at line 19 of file mapwin.c. References Window::BkColor, Window::BorderColor, Window::ClientD, Window::CliX1, Window::CliX2, Window::CliY1, Window::CliY2, ScrnObj::Drawn, False, MapWinXDim, MapWinYDim, NNodes, NodeList, Window::Title, Window::TitleColor, Window::TitleD, Window::TX1, Window::TX2, Window::TY1, Window::TY2, Window::XDim, and Window::YDim.
00020 { 00021 XDim = MapWinXDim; YDim = MapWinYDim; 00022 CliX1 = CliY1 = CliX2 = CliY2 = 0; 00023 TX1 = TY1 = TX2 = TY2 = 0; 00024 BorderColor = RED; 00025 BkColor = LIGHTGRAY; 00026 TitleColor = WHITE; 00027 Title = NULL; 00028 Title = new char[80]; 00029 strcpy(Title, "- Ye Olde Map of London -"); 00030 ClientD = TitleD = NULL; 00031 NodeList = NULL; 00032 NNodes = 0; 00033 Drawn = False; 00034 } |
|
Definition at line 37 of file mapwin.c. References NodeList.
00038 { 00039 delete NodeList; 00040 } |
|
Definition at line 66 of file mapwin.c. References Display::Add(), Window::ClientD, NNodes, NodeList, Off, and Scale(). Referenced by Init().
00067 { 00068 int px, py; 00069 00070 NNodes = theMap.num_nodes (); 00071 NodeList = new Nodes* [NNodes+1]; 00072 assert (NodeList != 0); 00073 00074 for (int i=1; i<=NNodes; i++) { 00075 NodeList[i] = new Nodes(i, Off); 00076 assert (NodeList[i] != NULL); 00077 px=theMap.x(i); py=theMap.y(i); 00078 Scale (px, py); 00079 ClientD->Add(NodeList[i], px, py); 00080 } 00081 } |
|
Definition at line 151 of file mapwin.c. References Window::ClientD, Viewport::Line(), Scale(), Viewport::SetColor(), and Viewport::SetLineStyle(). Referenced by DrawLines().
00152 { 00153 const int Spacing=2; 00154 00155 int x, y, x2, y2, i=0, px1[3], py1[3], px2[3], py2[3], face; 00156 00157 x=theMap.x(node1); y=theMap.y(node1); 00158 x2=theMap.x(node2); y2=theMap.y(node2); 00159 00160 Scale (x, y); 00161 Scale (x2, y2); 00162 00163 i=0; 00164 if (theMap.taxi(node1, node2)) i++; 00165 if (theMap.bus(node1, node2)) i++; 00166 if (theMap.subway(node1, node2)) i++; 00167 00168 if((x<x2)&&(y>y2)) face=0; 00169 else if((x>x2)&&(y>y2)) face=1; 00170 else if((x>x2)&&(y<y2)) face=0; 00171 else if((x<x2)&&(y<y2)) face=1; 00172 else face=1; 00173 00174 switch(face) { 00175 case 0: 00176 px1[0]=x-Spacing; py1[0]=y-Spacing; 00177 px1[1]=x; py1[1]=y; 00178 px1[2]=x+Spacing; py1[2]=y+Spacing; 00179 px2[0]=x2-Spacing; py2[0]=y2-Spacing; 00180 px2[1]=x2; py2[1]=y2; 00181 px2[2]=x2+Spacing; py2[2]=y2+Spacing; 00182 break; 00183 case 1: 00184 px1[0]=x+Spacing; py1[0]=y-Spacing; 00185 px1[1]=x; py1[1]=y; 00186 px1[2]=x-Spacing; py1[2]=y+Spacing; 00187 px2[0]=x2+Spacing; py2[0]=y2-Spacing; 00188 px2[1]=x2; py2[1]=y2; 00189 px2[2]=x2-Spacing; py2[2]=y2+Spacing; 00190 break; 00191 } 00192 00193 int which; 00194 for (int count=0; count<i; count++) { 00195 ClientD->SetLineStyle(SOLID_LINE, 0, Spacing); 00196 switch(count) { 00197 case 0: // Taxi 00198 if(theMap.taxi(node1, node2)) 00199 ClientD->SetColor(YELLOW), which=0; 00200 else if (theMap.bus (node1, node2)) 00201 ClientD->SetColor(GREEN), which=1; 00202 else { 00203 ClientD->SetColor (RED); 00204 ClientD->SetLineStyle(SOLID_LINE, 0, 3); 00205 which=2; 00206 } 00207 break; 00208 case 1: 00209 if(theMap.subway(node1, node2)) { 00210 ClientD->SetColor (RED); 00211 ClientD->SetLineStyle(SOLID_LINE, 0, 3); 00212 which=2; 00213 } 00214 else if (theMap.bus (node1, node2)) 00215 ClientD->SetColor(GREEN), which=1; 00216 else 00217 ClientD->SetColor(YELLOW), which=0; 00218 break; 00219 case 2: 00220 if(theMap.bus(node1, node2)) 00221 ClientD->SetColor(GREEN), which=1; 00222 else if (theMap.taxi (node1, node2)) 00223 ClientD->SetColor(YELLOW), which=0; 00224 else { 00225 ClientD->SetColor (RED); 00226 ClientD->SetLineStyle(SOLID_LINE, 0, 3); 00227 which=2; 00228 } 00229 break; 00230 } 00231 00232 ClientD->Line(px1[which], py1[which], px2[which], py2[which]); 00233 } 00234 ClientD->SetLineStyle(SOLID_LINE, 0, 1); 00235 } |
|
Definition at line 112 of file mapwin.c. References MoveList::GetCurrent(), MoveList::Next(), Move::Node, NodeList, and MoveList::Reset(). Referenced by UserInterface::FlashNodes(), and UserInterface::GetPlayerMove().
00113 { 00114 if(mlist.Reset()) { 00115 do { 00116 NodeList[mlist.GetCurrent()->Node]->DisableNode(); 00117 } while(mlist.Next()); 00118 } 00119 } |
|
Reimplemented from Window. Definition at line 84 of file mapwin.c. References Viewport::Clear(), Window::ClientD, ScrnObj::Disp, Viewport::Done(), Display::Draw(), Window::DrawBorder(), DrawLines(), ScrnObj::Drawn, Window::DrawTitle(), Viewport::FastDraw(), Window::PrepScreen(), and True.
|
|
Definition at line 131 of file mapwin.c. References ConnectNode(). Referenced by Draw().
00132 { 00133 int num_lines=0, node, i, j, k; 00134 00135 for(i=1; i<=theMap.num_nodes(); i++) { 00136 node= i; 00137 num_lines=theMap.num_connections(i); 00138 for(j=0; j<num_lines; j++) 00139 { 00140 int ToNode = theMap.connected_to (i, j); 00141 for (k= 0; k < theMap.num_connections(i, j); k++) { 00142 ConnectNode(node, theMap.connected_to(i, j, k)); 00143 node= theMap.connected_to(i, j, k); 00144 } 00145 if (i < ToNode) 00146 ConnectNode(node, theMap.connected_to(i, j)); 00147 } 00148 } 00149 } |
|
Definition at line 103 of file mapwin.c. References MoveList::GetCurrent(), MoveList::Next(), Move::Node, NodeList, and MoveList::Reset(). Referenced by UserInterface::FlashNodes().
00104 { 00105 if(mlist.Reset()) { 00106 do { 00107 NodeList[mlist.GetCurrent()->Node]->EnableNode(color); 00108 } while(mlist.Next()); 00109 } 00110 } |
|
Definition at line 121 of file mapwin.c. References Nodes::ChangeStatus(), NodeList, and On. Referenced by UserInterface::EndTurn(), UserInterface::FlashNodes(), and UserInterface::ShowAllPlayers().
00122 { 00123 NodeList[idnum]->ChangeStatus(On, color); 00124 } |
|
|
|
|
Definition at line 284 of file mapwin.c. References Window::ClientD, Viewport::GetMaxX(), and Viewport::GetMaxY(). Referenced by AllocNodes(), and ConnectNode().
00285 { 00286 const float ScreenPortion=.98; 00287 00288 int maxx, maxy; 00289 maxx = theMap.max_x (); 00290 maxy = theMap.max_y (); 00291 00292 float mx=ClientD->GetMaxX()*ScreenPortion; 00293 float my=ClientD->GetMaxY()*ScreenPortion; 00294 00295 x = x * (mx / maxx); 00296 y = y * (my / maxy); 00297 } |
|
Definition at line 126 of file mapwin.c. References Nodes::ChangeStatus(), NodeList, and Off. Referenced by UserInterface::BeginTurn(), UserInterface::EndTurn(), UserInterface::FlashNodes(), and UserInterface::GetPlayerMove().
00127 { 00128 NodeList[idnum]->ChangeStatus(Off); 00129 } |
|
Definition at line 24 of file mapwin.h. Referenced by AllocNodes(), and MapWindow(). |
|
Definition at line 25 of file mapwin.h. Referenced by AllocNodes(), DisableNodes(), EnableNodes(), HilightNode(), MapWindow(), UnHilightNode(), and ~MapWindow(). |