00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "town.h"
00026 #include "app.h"
00027 #include "frame.h"
00028 #include "glcanvas.h"
00029
00030 namespace WDS
00031 {
00032
00033 DECLARE_APP(CApp)
00034
00035
00036
00037
00038
00039 CTown::CTown()
00040 {
00041 m_rcRect = Rect( 0, 0, 0, 0 );
00042 m_ptPos.x = 0;
00043 m_ptPos.y = 0;
00044 m_nSight = 0;
00045
00046 m_strName = "";
00047 m_strOwner = "";
00048 m_strGuild = "";
00049 m_strComplete = "";
00050 }
00051
00052 CTown::~CTown()
00053 {
00054
00055 }
00056
00057
00058
00059
00060
00061 void CTown::SetName( wxString strName, wxString strOwner, wxString strGuild )
00062 {
00063 m_strName = strName;
00064 m_strOwner = strOwner;
00065 m_strGuild = strGuild;
00066
00067 m_strComplete = strName + " - " + strGuild + " " + strOwner;
00068 CalcRect();
00069 }
00070
00071
00072
00073
00074
00075
00076
00077
00078 void CTown::Draw( const Rect *pScreen )
00079 {
00080 CGLCanvas *pCanvas = GetGLCanvas();
00081
00082 float z = pCanvas->GetZoom();
00083 if( z > 1.0f )
00084 z = 1.0f;
00085 float s = 1.0f / z;
00086
00087 Rect rcRect = m_rcRect;
00088 rcRect.w = (int)((float)rcRect.w * s);
00089 rcRect.h = (int)((float)rcRect.h * s);
00090
00091 if( pScreen->RectIntersect( &rcRect ) )
00092 {
00093 glPushMatrix();
00094 glScalef( s, s, 1.0 );
00095 glTranslatef( -(1.0f-z)*m_rcRect.Left(), -(1.0f-z)*m_rcRect.Top(), 0.0f );
00096
00097
00098 pCanvas->DrawTextBox( m_rcRect.x, m_rcRect.y, 1.0f, 1.0f, 1.0f, 1.0f, m_strComplete.c_str() );
00099
00100 glPopMatrix();
00101 }
00102 }
00103
00104 void CTown::SetPos( int x, int y )
00105 {
00106 m_ptPos.x = x;
00107 m_ptPos.y = y;
00108 CalcRect();
00109 }
00110
00111 void CTown::SetSight(int sight)
00112 {
00113 if (sight > 0 )
00114 m_nSight = sight;
00115
00116 }
00117
00118
00119
00120
00121
00122 void CTown::CalcRect()
00123 {
00124 CGLCanvas *pCanvas = GetGLCanvas();
00125
00126 wxPoint pt = pCanvas->GetTextExtent( m_strComplete.c_str() );
00127
00128 m_rcRect.x = (m_ptPos.x-m_ptPos.y) * 63 - 2;
00129 m_rcRect.y = (m_ptPos.y+m_ptPos.x) * 35 - 4;
00130 m_rcRect.w = pt.x + 8;
00131 m_rcRect.h = pt.y + 4;
00132 }
00133
00134 CGLCanvas* CTown::GetGLCanvas()
00135 {
00136 CGLCanvas *pCanvas = wxGetApp().GetFrame()->GetGLCanvas();
00137 return pCanvas;
00138 }
00139
00140 }
00141
00142