| 1 | cycrow | 1 | // LCDDisplay.cpp: implementation of the CLCDDisplay class.
 | 
        
           |  |  | 2 | //
 | 
        
           |  |  | 3 | //////////////////////////////////////////////////////////////////////
 | 
        
           |  |  | 4 |   | 
        
           |  |  | 5 | #include "stdafx.h"
 | 
        
           |  |  | 6 | #include "LCDDisplay.h"
 | 
        
           |  |  | 7 | //#include "LCDCustomScreen.h"
 | 
        
           |  |  | 8 |   | 
        
           |  |  | 9 | //////////////////////////////////////////////////////////////////////
 | 
        
           |  |  | 10 | // Construction/Destruction
 | 
        
           |  |  | 11 | //////////////////////////////////////////////////////////////////////
 | 
        
           |  |  | 12 |   | 
        
           |  |  | 13 | CLCDDisplay::CLCDDisplay( CEzLcd *lcd, CX3Data *data )
 | 
        
           |  |  | 14 | {
 | 
        
           |  |  | 15 | 	int i;
 | 
        
           |  |  | 16 | 	m_bLoading = false;
 | 
        
           |  |  | 17 | 	m_bWaiting = false;
 | 
        
           |  |  | 18 | 	m_bStarted = false;
 | 
        
           |  |  | 19 | 	m_iUpdateCount = 0;
 | 
        
           |  |  | 20 | 	m_pCustomScreen = NULL;
 | 
        
           |  |  | 21 |   | 
        
           |  |  | 22 | 	m_pLcd = lcd;
 | 
        
           |  |  | 23 | 	m_pData = data;
 | 
        
           |  |  | 24 |   | 
        
           |  |  | 25 | 	// icon for stats page
 | 
        
           |  |  | 26 |     HICON hIcon = static_cast<HICON>(LoadImage(0, _T("x3.ico"), IMAGE_ICON, 32, 32, LR_LOADFROMFILE));
 | 
        
           |  |  | 27 |     HANDLE icon = m_pLcd->AddIcon(hIcon, 32, 32);
 | 
        
           |  |  | 28 |     m_pLcd->SetOrigin(icon, 2, 15);
 | 
        
           |  |  | 29 |   | 
        
           |  |  | 30 | 	// first stats page
 | 
        
           |  |  | 31 |     m_hStatsTitle1 = lcd->AddText ( LG_SCROLLING_TEXT_FAST, LG_MEDIUM, DT_CENTER, 126 );
 | 
        
           |  |  | 32 |     lcd->SetOrigin ( m_hStatsTitle1, 17, 2);
 | 
        
           |  |  | 33 |     HANDLE shipsText = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30 );
 | 
        
           |  |  | 34 |     lcd->SetOrigin ( shipsText, 35, 34);
 | 
        
           |  |  | 35 |     lcd->SetText ( shipsText, _T("Ships:") );
 | 
        
           |  |  | 36 |     HANDLE stationsText = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 40 );
 | 
        
           |  |  | 37 |     lcd->SetOrigin ( stationsText, 100, 34);
 | 
        
           |  |  | 38 |     lcd->SetText ( stationsText, _T("Stations:") );
 | 
        
           |  |  | 39 |     HANDLE timeText = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 50 );
 | 
        
           |  |  | 40 |     lcd->SetOrigin ( timeText, 35, 14);
 | 
        
           |  |  | 41 |     lcd->SetText ( timeText, _T("Game Time:") );
 | 
        
           |  |  | 42 |     HANDLE accountText = m_pLcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 40 );
 | 
        
           |  |  | 43 |     lcd->SetOrigin ( accountText, 35, 24);
 | 
        
           |  |  | 44 |     lcd->SetText ( accountText, _T("Credits:") );
 | 
        
           |  |  | 45 |   | 
        
           |  |  | 46 | 	// varible stats
 | 
        
           |  |  | 47 |     m_hShipsNum = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20 );
 | 
        
           |  |  | 48 |     lcd->SetOrigin ( m_hShipsNum, 75, 34);
 | 
        
           |  |  | 49 |     m_hStationsNum = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20 );
 | 
        
           |  |  | 50 |     lcd->SetOrigin ( m_hStationsNum, 140, 34);
 | 
        
           |  |  | 51 |     m_hGameTime = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 65 );
 | 
        
           |  |  | 52 |     lcd->SetOrigin ( m_hGameTime, 95, 14);
 | 
        
           |  |  | 53 |     m_hCredits = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 65);
 | 
        
           |  |  | 54 |     lcd->SetOrigin ( m_hCredits, 95, 24);
 | 
        
           |  |  | 55 | 	m_hInsurance1 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 15 );
 | 
        
           |  |  | 56 | 	lcd->SetOrigin ( m_hInsurance1, 0, 0 );
 | 
        
           |  |  | 57 | 	lcd->SetText ( m_hInsurance1, _T("000") );
 | 
        
           |  |  | 58 |   | 
        
           |  |  | 59 |   | 
        
           |  |  | 60 | 	lcd->AddNewPage ();
 | 
        
           |  |  | 61 |     lcd->ModifyControlsOnPage(1);
 | 
        
           |  |  | 62 |   | 
        
           |  |  | 63 | 	// second stats page
 | 
        
           |  |  | 64 | 	m_hStatsTitle2 = lcd->AddText ( LG_SCROLLING_TEXT_FAST, LG_MEDIUM, DT_CENTER, 150 );
 | 
        
           |  |  | 65 |     lcd->SetOrigin ( m_hStatsTitle2, 2, 2 );
 | 
        
           |  |  | 66 | 	for ( i = 0; i < MAXSHIPCLASS; i++ )
 | 
        
           |  |  | 67 | 	{
 | 
        
           |  |  | 68 | 		int x = (40 * (i % 4));
 | 
        
           |  |  | 69 | 		int y = 14 + (10 * (i / 4));
 | 
        
           |  |  | 70 | 	    HANDLE shipsText = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 20);
 | 
        
           |  |  | 71 | 	    lcd->SetOrigin ( shipsText, x, y);
 | 
        
           |  |  | 72 | 		lcd->SetText ( shipsText, GetShipClassName(i) );
 | 
        
           |  |  | 73 | 	}
 | 
        
           |  |  | 74 |   | 
        
           |  |  | 75 | 	// class stats varibless
 | 
        
           |  |  | 76 | 	for ( i = 0; i < MAXSHIPCLASS; i++ )
 | 
        
           |  |  | 77 | 	{
 | 
        
           |  |  | 78 | 		int x = 16 + (40 * (i % 4));
 | 
        
           |  |  | 79 | 		int y = 14 + (10 * (i / 4));
 | 
        
           |  |  | 80 | 		m_hClasses[i] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 81 | 		lcd->SetOrigin ( m_hClasses[i], x, y);
 | 
        
           |  |  | 82 | 	}
 | 
        
           |  |  | 83 |   | 
        
           |  |  | 84 | 	/*
 | 
        
           |  |  | 85 | 	m_hClasses[1] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 86 |     lcd->SetOrigin ( m_hClasses[1], 55, 24);
 | 
        
           |  |  | 87 | 	m_hClasses[2] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 88 |     lcd->SetOrigin ( m_hClasses[2], 55, 34);
 | 
        
           |  |  | 89 | 	m_hClasses[3] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 90 |     lcd->SetOrigin ( m_hClasses[3], 100, 14);
 | 
        
           |  |  | 91 | 	m_hClasses[4] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 92 |     lcd->SetOrigin ( m_hClasses[4], 100, 24);
 | 
        
           |  |  | 93 | 	m_hClasses[5] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 94 |     lcd->SetOrigin ( m_hClasses[5], 100, 34);
 | 
        
           |  |  | 95 | 	m_hClasses[6] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 96 |     lcd->SetOrigin ( m_hClasses[6], 140, 14);
 | 
        
           |  |  | 97 | 	m_hClasses[7] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 98 |     lcd->SetOrigin ( m_hClasses[7], 140, 24);
 | 
        
           |  |  | 99 | 	m_hClasses[8] = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 100 |     lcd->SetOrigin ( m_hClasses[8], 140, 34);
 | 
        
           |  |  | 101 | 	m_hInsurance2 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 15 );*/
 | 
        
           |  |  | 102 | 	lcd->SetOrigin ( m_hInsurance2, 0, 0 );
 | 
        
           |  |  | 103 | 	lcd->SetText ( m_hInsurance2, _T("000") );
 | 
        
           |  |  | 104 |   | 
        
           |  |  | 105 | 	// first combat stats, your stats
 | 
        
           |  |  | 106 | 	m_pLcd->AddNewPage ();
 | 
        
           |  |  | 107 |     m_pLcd->ModifyControlsOnPage(2);
 | 
        
           |  |  | 108 |     m_hCombatTitle1 = lcd->AddText(LG_SCROLLING_TEXT_FAST, LG_MEDIUM, DT_CENTER, 136);
 | 
        
           |  |  | 109 |     lcd->SetOrigin ( m_hCombatTitle1, 12, 2);
 | 
        
           |  |  | 110 |     HANDLE hullText = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 42);
 | 
        
           |  |  | 111 |     lcd->SetOrigin ( hullText, 5, 14);
 | 
        
           |  |  | 112 |     lcd->SetText ( hullText, _T("Hull") );
 | 
        
           |  |  | 113 |     HANDLE shieldText = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 42);
 | 
        
           |  |  | 114 |     lcd->SetOrigin ( shieldText, 5, 24);
 | 
        
           |  |  | 115 |     lcd->SetText ( shieldText, _T("Shields") );
 | 
        
           |  |  | 116 |     HANDLE weapText = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 42);
 | 
        
           |  |  | 117 |     lcd->SetOrigin ( weapText, 5, 34);
 | 
        
           |  |  | 118 |     lcd->SetText ( weapText, _T("Weapons") );
 | 
        
           |  |  | 119 |     m_hMissiles = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 10);
 | 
        
           |  |  | 120 |     lcd->SetOrigin ( m_hMissiles, 0, 0);
 | 
        
           |  |  | 121 |     lcd->SetText ( m_hMissiles, _T("") );
 | 
        
           |  |  | 122 |     m_hEnemies = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 10);
 | 
        
           |  |  | 123 |     lcd->SetOrigin ( m_hEnemies, 150, 0);
 | 
        
           |  |  | 124 |     lcd->SetText ( m_hEnemies, _T("") );
 | 
        
           |  |  | 125 |   | 
        
           |  |  | 126 |     m_hMyHull = lcd->AddProgressBar(LG_FILLED);
 | 
        
           |  |  | 127 |     lcd->SetProgressBarSize ( m_hMyHull, 100, 8 );
 | 
        
           |  |  | 128 |     lcd->SetOrigin ( m_hMyHull, 55, 14 );
 | 
        
           |  |  | 129 |     lcd->SetProgressBarPosition ( m_hMyHull, 0 );
 | 
        
           |  |  | 130 |     m_hMyShield = lcd->AddProgressBar ( LG_FILLED );
 | 
        
           |  |  | 131 |     lcd->SetProgressBarSize ( m_hMyShield, 100, 8 );
 | 
        
           |  |  | 132 |     lcd->SetOrigin ( m_hMyShield, 55, 24);
 | 
        
           |  |  | 133 |     lcd->SetProgressBarPosition ( m_hMyShield, 0 );
 | 
        
           |  |  | 134 |     m_hMyWeapon = lcd->AddProgressBar(LG_FILLED);
 | 
        
           |  |  | 135 |     lcd->SetProgressBarSize ( m_hMyWeapon, 100, 8 );
 | 
        
           |  |  | 136 |     lcd->SetOrigin ( m_hMyWeapon, 55, 34 );
 | 
        
           |  |  | 137 |     lcd->SetProgressBarPosition ( m_hMyWeapon, 0 );
 | 
        
           |  |  | 138 |   | 
        
           |  |  | 139 | 	// second page of combat stats
 | 
        
           |  |  | 140 | 	lcd->AddNewPage ();
 | 
        
           |  |  | 141 |     lcd->ModifyControlsOnPage(3);
 | 
        
           |  |  | 142 | 	m_hCombatTitle2 = lcd->AddText ( LG_SCROLLING_TEXT_FAST, LG_MEDIUM, DT_CENTER, 136 );
 | 
        
           |  |  | 143 |     lcd->SetOrigin ( m_hCombatTitle2, 12, 2 );
 | 
        
           |  |  | 144 |     m_hSpeedText1 = m_pLcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 40);
 | 
        
           |  |  | 145 |     lcd->SetOrigin ( m_hSpeedText1, 5, 14);
 | 
        
           |  |  | 146 |     lcd->SetText ( m_hSpeedText1, _T("Speed:") );
 | 
        
           |  |  | 147 |     m_hSpeedText2 = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 40);
 | 
        
           |  |  | 148 |     lcd->SetOrigin ( m_hSpeedText2, 80, 14);
 | 
        
           |  |  | 149 |     lcd->SetText ( m_hSpeedText2, _T("Dist:") );
 | 
        
           |  |  | 150 |     m_hMySpeed = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 40 );
 | 
        
           |  |  | 151 |     lcd->SetOrigin ( m_hMySpeed, 35, 14 );
 | 
        
           |  |  | 152 |     m_hTargetSpeed = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 40 );
 | 
        
           |  |  | 153 |     lcd->SetOrigin ( m_hTargetSpeed, 120, 14);
 | 
        
           |  |  | 154 |     HANDLE hullText2 = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 42);
 | 
        
           |  |  | 155 |     lcd->SetOrigin ( hullText2, 5, 24);
 | 
        
           |  |  | 156 |     lcd->SetText ( hullText2, _T("Hull") );
 | 
        
           |  |  | 157 |     HANDLE shieldText2 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 42 );
 | 
        
           |  |  | 158 |     lcd->SetOrigin ( shieldText2, 5, 34);
 | 
        
           |  |  | 159 |     lcd->SetText ( shieldText2, _T("Shields") );
 | 
        
           |  |  | 160 |     m_hTargetHull = lcd->AddProgressBar(LG_FILLED);
 | 
        
           |  |  | 161 |     lcd->SetProgressBarSize ( m_hTargetHull, 100, 8 );
 | 
        
           |  |  | 162 |     lcd->SetOrigin ( m_hTargetHull, 55, 24 );
 | 
        
           |  |  | 163 |     lcd->SetProgressBarPosition ( m_hTargetHull, 0 );
 | 
        
           |  |  | 164 |     m_hTargetShield = lcd->AddProgressBar(LG_FILLED);
 | 
        
           |  |  | 165 |     lcd->SetProgressBarSize ( m_hTargetShield, 100, 8 );
 | 
        
           |  |  | 166 |     lcd->SetOrigin ( m_hTargetShield, 55, 34 );
 | 
        
           |  |  | 167 |     lcd->SetProgressBarPosition ( m_hTargetShield, 0 );
 | 
        
           |  |  | 168 |     m_hMissiles2 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 10);
 | 
        
           |  |  | 169 |     lcd->SetOrigin ( m_hMissiles2, 0, 0);
 | 
        
           |  |  | 170 |     lcd->SetText ( m_hMissiles2, _T("") );
 | 
        
           |  |  | 171 |     m_hEnemies2 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 10);
 | 
        
           |  |  | 172 |     lcd->SetOrigin ( m_hEnemies2, 150, 0);
 | 
        
           |  |  | 173 |     lcd->SetText ( m_hEnemies2, _T("") );
 | 
        
           |  |  | 174 |   | 
        
           |  |  | 175 | 	// rep pages
 | 
        
           |  |  | 176 | 	lcd->AddNewPage ();
 | 
        
           |  |  | 177 | 	lcd->ModifyControlsOnPage(4);
 | 
        
           |  |  | 178 | 	m_hRepText[0] = lcd->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_CENTER, 160);
 | 
        
           |  |  | 179 |     lcd->SetOrigin ( m_hRepText[0], 0, 2);
 | 
        
           |  |  | 180 |     m_hRepText[1] = lcd->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_CENTER, 160);
 | 
        
           |  |  | 181 |     lcd->SetOrigin ( m_hRepText[1], 0, 13);
 | 
        
           |  |  | 182 |     m_hRepText[2] = lcd->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_CENTER, 160);
 | 
        
           |  |  | 183 |     lcd->SetOrigin ( m_hRepText[2], 0, 24);
 | 
        
           |  |  | 184 |     m_hRepText[3] = lcd->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_CENTER, 160);
 | 
        
           |  |  | 185 |     lcd->SetOrigin ( m_hRepText[3], 0, 35);
 | 
        
           |  |  | 186 |   | 
        
           |  |  | 187 | 	lcd->AddNewPage ();
 | 
        
           |  |  | 188 | 	lcd->ModifyControlsOnPage(5);
 | 
        
           |  |  | 189 | 	for ( int i = 0; i < 4; i++ )
 | 
        
           |  |  | 190 | 	{
 | 
        
           |  |  | 191 | 		m_hCustomText[i] = lcd->AddText ( LG_SCROLLING_TEXT_FAST, LG_SMALL, DT_CENTER, 160 );
 | 
        
           |  |  | 192 | 		lcd->SetOrigin ( m_hCustomText[i], 0, (i + 1) * 9 );
 | 
        
           |  |  | 193 | 		lcd->SetText ( m_hCustomText[i], "Test" );
 | 
        
           |  |  | 194 | 	}
 | 
        
           |  |  | 195 | 	HANDLE customPage = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 80 );
 | 
        
           |  |  | 196 | 	lcd->SetOrigin ( customPage, 0, 0);
 | 
        
           |  |  | 197 | 	lcd->SetText ( customPage, _T("Custom Stats") );
 | 
        
           |  |  | 198 | 	m_hCustomPage = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 80 );
 | 
        
           |  |  | 199 | 	lcd->SetOrigin ( m_hCustomPage, 80, 0 );
 | 
        
           |  |  | 200 |   | 
        
           |  |  | 201 | 	lcd->AddNewPage ();
 | 
        
           |  |  | 202 | 	lcd->ModifyControlsOnPage(6);
 | 
        
           |  |  | 203 | 	HANDLE combatTitle = lcd->AddText ( LG_SCROLLING_TEXT_FAST, LG_MEDIUM, DT_CENTER, 126 );
 | 
        
           |  |  | 204 |     lcd->SetOrigin ( combatTitle, 12, 0 );
 | 
        
           |  |  | 205 | 	lcd->SetText ( combatTitle, _T("Combat Computer") );
 | 
        
           |  |  | 206 |     m_hMissiles3 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 10);
 | 
        
           |  |  | 207 |     lcd->SetOrigin ( m_hMissiles3, 0, 0);
 | 
        
           |  |  | 208 |     lcd->SetText ( m_hMissiles3, _T("") );
 | 
        
           |  |  | 209 |     m_hEnemies3 = lcd->AddText ( LG_STATIC_TEXT, LG_SMALL, DT_RIGHT, 20);
 | 
        
           |  |  | 210 |     lcd->SetOrigin ( m_hEnemies3, 140, 0);
 | 
        
           |  |  | 211 |     lcd->SetText ( m_hEnemies3, _T("") );
 | 
        
           |  |  | 212 |   | 
        
           |  |  | 213 |   | 
        
           |  |  | 214 | 	// no game screen
 | 
        
           |  |  | 215 | 	m_iTitlePage = lcd->AddNewPage () - 1;
 | 
        
           |  |  | 216 |     lcd->ModifyControlsOnPage ( m_iTitlePage );
 | 
        
           |  |  | 217 |     HANDLE icon3 = lcd->AddIcon(hIcon, 32, 32);
 | 
        
           |  |  | 218 |     lcd->SetOrigin(icon3, 1, 6);
 | 
        
           |  |  | 219 | 	m_hMainText = lcd->AddText(LG_SCROLLING_TEXT_FAST, LG_BIG, DT_LEFT, 155);
 | 
        
           |  |  | 220 |     lcd->SetOrigin ( m_hMainText, 36, 9);
 | 
        
           |  |  | 221 |     lcd->SetText ( m_hMainText, _T("Reunion") );
 | 
        
           |  |  | 222 | 	HANDLE pilotText = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 155);
 | 
        
           |  |  | 223 |     lcd->SetOrigin ( pilotText, 37, 25);
 | 
        
           |  |  | 224 |     lcd->SetText ( pilotText, _T("No Game Found") );
 | 
        
           |  |  | 225 |   | 
        
           |  |  | 226 | 	// no game screen
 | 
        
           |  |  | 227 | 	m_iLoadingPage = lcd->AddNewPage () - 1;
 | 
        
           |  |  | 228 |     lcd->ModifyControlsOnPage ( m_iLoadingPage );
 | 
        
           |  |  | 229 |     HANDLE icon4 = lcd->AddIcon(hIcon, 32, 32);
 | 
        
           |  |  | 230 |     lcd->SetOrigin ( icon4, 1, 3 );
 | 
        
           |  |  | 231 | 	m_hMainText2 = lcd->AddText(LG_SCROLLING_TEXT_FAST, LG_BIG, DT_LEFT, 155);
 | 
        
           |  |  | 232 |     lcd->SetOrigin ( m_hMainText2, 36, 7);
 | 
        
           |  |  | 233 |     lcd->SetText ( m_hMainText2, _T("Reunion") );
 | 
        
           |  |  | 234 | 	HANDLE loadingText = lcd->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 155);
 | 
        
           |  |  | 235 |     lcd->SetOrigin ( loadingText, 37, 22);
 | 
        
           |  |  | 236 |     lcd->SetText ( loadingText, _T("Searching for Stats") );
 | 
        
           |  |  | 237 |     m_hLoadBar = lcd->AddProgressBar ( LG_CURSOR );
 | 
        
           |  |  | 238 |     lcd->SetProgressBarSize ( m_hLoadBar, 100, 6 );
 | 
        
           |  |  | 239 |     lcd->SetOrigin ( m_hLoadBar, 30, 34 );
 | 
        
           |  |  | 240 |     lcd->SetProgressBarPosition ( m_hLoadBar, 50 );
 | 
        
           |  |  | 241 |   | 
        
           |  |  | 242 | 	m_iPage = m_iSplitPage = 0;
 | 
        
           |  |  | 243 | }
 | 
        
           |  |  | 244 |   | 
        
           |  |  | 245 | CLCDDisplay::~CLCDDisplay()
 | 
        
           |  |  | 246 | {
 | 
        
           |  |  | 247 | 	delete m_pLcd;
 | 
        
           |  |  | 248 | }
 | 
        
           |  |  | 249 |   | 
        
           |  |  | 250 | void CLCDDisplay::Display ()
 | 
        
           |  |  | 251 | {
 | 
        
           |  |  | 252 | 	int i;
 | 
        
           |  |  | 253 |   | 
        
           |  |  | 254 |     // Modifying controls on the 1st page
 | 
        
           |  |  | 255 | 	CyString name = m_pData->GetGameName();
 | 
        
           |  |  | 256 | 	name += ": ";
 | 
        
           |  |  | 257 | 	name += m_pData->GetPilot();
 | 
        
           |  |  | 258 |   | 
        
           |  |  | 259 | 	// first stats page
 | 
        
           |  |  | 260 |     m_pLcd->ModifyControlsOnPage(0);
 | 
        
           |  |  | 261 | 	m_pLcd->SetText ( m_hStatsTitle1, (LPCSTR)name.c_str() );
 | 
        
           |  |  | 262 | 	m_pLcd->SetText ( m_hShipsNum, (LPCSTR)CyString::Number(m_pData->GetShipsNum()).c_str() );
 | 
        
           |  |  | 263 | 	m_pLcd->SetText ( m_hStationsNum, (LPCSTR)CyString::Number(m_pData->GetStations()).c_str() );
 | 
        
           |  |  | 264 | 	m_pLcd->SetText ( m_hCredits, (LPCSTR)m_pData->GetCredits().c_str() );
 | 
        
           |  |  | 265 | 	m_pLcd->SetText ( m_hGameTime, (LPCSTR)m_pData->GetGameTime().c_str() );
 | 
        
           |  |  | 266 | 	m_pLcd->SetText ( m_hInsurance1, (LPCSTR)CyString::Number(m_pData->GetInsurance()).c_str() );
 | 
        
           |  |  | 267 |   | 
        
           |  |  | 268 | 	// second stats pages (each ship classes)
 | 
        
           |  |  | 269 |     m_pLcd->ModifyControlsOnPage(1);
 | 
        
           |  |  | 270 | 	m_pLcd->SetText ( m_hStatsTitle2, (LPCSTR)name.c_str() );
 | 
        
           |  |  | 271 | 	for ( i = 0; i < MAXSHIPCLASS; i++ )
 | 
        
           |  |  | 272 | 		m_pLcd->SetText ( m_hClasses[i], (LPCSTR)CyString::Number(m_pData->GetShipClass(i)).c_str() );
 | 
        
           |  |  | 273 | 	m_pLcd->SetText ( m_hInsurance2, (LPCSTR)CyString::Number(m_pData->GetInsurance()).c_str() );
 | 
        
           |  |  | 274 |   | 
        
           |  |  | 275 | 	// first combat page, your current ship)
 | 
        
           |  |  | 276 |     m_pLcd->ModifyControlsOnPage(2);
 | 
        
           |  |  | 277 | 	m_pLcd->SetText ( m_hCombatTitle1, (LPCSTR)m_pData->GetMyShip().c_str() );
 | 
        
           |  |  | 278 | 	m_pLcd->SetProgressBarPosition ( m_hMyHull, (float)m_pData->GetHull());
 | 
        
           |  |  | 279 | 	m_pLcd->SetProgressBarPosition ( m_hMyShield, (float)m_pData->GetShields());
 | 
        
           |  |  | 280 | 	m_pLcd->SetProgressBarPosition ( m_hMyWeapon, (float)m_pData->GetWeaponEnergy ());
 | 
        
           |  |  | 281 | 	m_pLcd->SetText ( m_hMissiles, (LPCSTR)CyString::Number(m_pData->GetMissiles()).c_str() );
 | 
        
           |  |  | 282 | 	m_pLcd->SetText ( m_hEnemies, (LPCSTR)CyString::Number(m_pData->GetEnemies()).c_str() );
 | 
        
           |  |  | 283 |   | 
        
           |  |  | 284 |   | 
        
           |  |  | 285 | 	// second combat page, Your current target
 | 
        
           |  |  | 286 |     m_pLcd->ModifyControlsOnPage(3);
 | 
        
           |  |  | 287 | 	CyString target = m_pData->GetMyTarget();
 | 
        
           |  |  | 288 | 	if ( !m_pData->GetTargetRelation().Empty() )
 | 
        
           |  |  | 289 | 	{
 | 
        
           |  |  | 290 | 		target += " / ";
 | 
        
           |  |  | 291 | 		target += m_pData->GetTargetRelation();
 | 
        
           |  |  | 292 | 	}
 | 
        
           |  |  | 293 | 	m_pLcd->SetText ( m_hCombatTitle2, (LPCSTR)target.c_str() );
 | 
        
           |  |  | 294 | 	m_pLcd->SetText ( m_hSpeedText1, _T("Speed:") );
 | 
        
           |  |  | 295 | 	m_pLcd->SetText ( m_hSpeedText2, _T("Distance:") );
 | 
        
           |  |  | 296 | 	CyString speed = CyString::Number(m_pData->GetTargetSpeed()) + " (" + CyString::Number(m_pData->GetMySpeed()) + ")";
 | 
        
           |  |  | 297 | 	m_pLcd->SetText ( m_hMySpeed, (LPCSTR)speed.c_str() );
 | 
        
           |  |  | 298 | 	m_pLcd->SetText ( m_hTargetSpeed, (LPCSTR)m_pData->GetTargetDistanceStr().c_str() );
 | 
        
           |  |  | 299 | 	m_pLcd->SetProgressBarPosition ( m_hTargetHull, (float)m_pData->GetTargetHull() );
 | 
        
           |  |  | 300 | 	m_pLcd->SetProgressBarPosition ( m_hTargetShield, (float)m_pData->GetTargetShield() );
 | 
        
           |  |  | 301 | 	m_pLcd->SetText ( m_hMissiles2, (LPCSTR)CyString::Number(m_pData->GetMissiles()).c_str() );
 | 
        
           |  |  | 302 | 	m_pLcd->SetText ( m_hEnemies2, (LPCSTR)CyString::Number(m_pData->GetEnemies()).c_str() );
 | 
        
           |  |  | 303 |   | 
        
           |  |  | 304 | 	// rep pagess
 | 
        
           |  |  | 305 |     m_pLcd->ModifyControlsOnPage(4);
 | 
        
           |  |  | 306 |   | 
        
           |  |  | 307 | 	int done = 0;
 | 
        
           |  |  | 308 | 	for ( i = 0; i < 4; i++ )
 | 
        
           |  |  | 309 | 		m_pLcd->SetText ( m_hRepText[i], _T("") );
 | 
        
           |  |  | 310 | 	for ( i = 0; i < MAXRACEREP; i++ )
 | 
        
           |  |  | 311 | 	{
 | 
        
           |  |  | 312 | 		SRaceRep rep = m_pData->GetRaceRep(i);
 | 
        
           |  |  | 313 | 		if ( rep.sRace.Empty() ) continue;
 | 
        
           |  |  | 314 |   | 
        
           |  |  | 315 | 		int pos = done - (m_iSplitPage * 4);
 | 
        
           |  |  | 316 | 		++done;
 | 
        
           |  |  | 317 | 		if ( pos >= 4 )
 | 
        
           |  |  | 318 | 			break;
 | 
        
           |  |  | 319 | 		else if ( pos < 0 )
 | 
        
           |  |  | 320 | 			continue;
 | 
        
           |  |  | 321 | 		CyString sRep = rep.sRank + " (" + (long)rep.iRepPct + "%)";
 | 
        
           |  |  | 322 | 		if ( rep.bIncludeRace )
 | 
        
           |  |  | 323 | 			sRep = rep.sRace + ": " + sRep;
 | 
        
           |  |  | 324 | 		m_pLcd->SetText ( m_hRepText[pos], (LPCSTR)sRep.c_str() );
 | 
        
           |  |  | 325 | 	}
 | 
        
           |  |  | 326 |   | 
        
           |  |  | 327 | 	// wait while data is locked
 | 
        
           |  |  | 328 | 	while ( m_pData->IsLocked() ) Sleep(1);
 | 
        
           |  |  | 329 |   | 
        
           |  |  | 330 |     m_pLcd->ModifyControlsOnPage(5);
 | 
        
           |  |  | 331 | 	CyStringList *list = m_pData->GetCustomList();
 | 
        
           |  |  | 332 | 	int pages = ((list->Count() - 1) / 4);
 | 
        
           |  |  | 333 | 	CyString page("(Page: ");
 | 
        
           |  |  | 334 | 	page += (long)(pages + 1);
 | 
        
           |  |  | 335 | 	page += "/";
 | 
        
           |  |  | 336 | 	page += (long)(m_iSplitPage + 1);
 | 
        
           |  |  | 337 | 	page += ")";
 | 
        
           |  |  | 338 | 	m_pLcd->SetText ( m_hCustomPage, (LPCSTR)page.c_str() );
 | 
        
           |  |  | 339 |   | 
        
           |  |  | 340 | 	SStringList *pCustom = list->GetAt ( m_iSplitPage * 4 );
 | 
        
           |  |  | 341 |   | 
        
           |  |  | 342 | 	for ( i = 0; i < 4; i++ )
 | 
        
           |  |  | 343 | 	{
 | 
        
           |  |  | 344 | 		if ( !pCustom )
 | 
        
           |  |  | 345 | 			m_pLcd->SetText ( m_hCustomText[i], _T("") );
 | 
        
           |  |  | 346 | 		else
 | 
        
           |  |  | 347 | 		{
 | 
        
           |  |  | 348 | 			m_pLcd->SetText ( m_hCustomText[i], pCustom->data.c_str() );
 | 
        
           |  |  | 349 | 			pCustom = pCustom->next;
 | 
        
           |  |  | 350 | 		}
 | 
        
           |  |  | 351 | 	}
 | 
        
           |  |  | 352 |   | 
        
           |  |  | 353 |     m_pLcd->ModifyControlsOnPage(6);
 | 
        
           |  |  | 354 | 	m_pLcd->SetText ( m_hMissiles2, (LPCSTR)CyString::Number(m_pData->GetMissiles()).c_str() );
 | 
        
           |  |  | 355 | 	m_pLcd->SetText ( m_hEnemies2, (LPCSTR)CyString::Number(m_pData->GetEnemies2()).c_str() );
 | 
        
           |  |  | 356 |   | 
        
           |  |  | 357 |     m_pLcd->ModifyControlsOnPage(m_iTitlePage);
 | 
        
           |  |  | 358 | 	m_pLcd->SetText(m_hMainText, (LPCSTR)m_pData->GetGameName().GetToken(" ", 2).c_str());
 | 
        
           |  |  | 359 |     m_pLcd->ModifyControlsOnPage(m_iLoadingPage);
 | 
        
           |  |  | 360 | 	m_pLcd->SetText(m_hMainText2, (LPCSTR)m_pData->GetGameName().GetToken(" ", 2).c_str());
 | 
        
           |  |  | 361 |   | 
        
           |  |  | 362 | }
 | 
        
           |  |  | 363 |   | 
        
           |  |  | 364 | int CLCDDisplay::FindMaxRacePages()
 | 
        
           |  |  | 365 | {
 | 
        
           |  |  | 366 | 	int count = 0;
 | 
        
           |  |  | 367 | 	for ( int i = 0; i < MAXRACEREP; i++ )
 | 
        
           |  |  | 368 | 	{
 | 
        
           |  |  | 369 | 		SRaceRep rep = m_pData->GetRaceRep(i);
 | 
        
           |  |  | 370 | 		if ( rep.sRace.Empty() ) continue;
 | 
        
           |  |  | 371 |   | 
        
           |  |  | 372 | 		++count;
 | 
        
           |  |  | 373 | 	}
 | 
        
           |  |  | 374 |   | 
        
           |  |  | 375 | 	int pages = count / 4;
 | 
        
           |  |  | 376 | 	if ( count % 4 ) pages++;
 | 
        
           |  |  | 377 | 	return pages;
 | 
        
           |  |  | 378 | }
 | 
        
           |  |  | 379 |   | 
        
           |  |  | 380 |   | 
        
           |  |  | 381 | void CLCDDisplay::CheckButtons ()
 | 
        
           |  |  | 382 | {
 | 
        
           |  |  | 383 | 	if ( m_pLcd->ButtonTriggered(LG_BUTTON_1))
 | 
        
           |  |  | 384 | 	{
 | 
        
           |  |  | 385 | 		if ( m_iPage == 0 )
 | 
        
           |  |  | 386 | 			m_iPage = 1;
 | 
        
           |  |  | 387 | 		else
 | 
        
           |  |  | 388 | 			m_iPage = 0;
 | 
        
           |  |  | 389 | 	}
 | 
        
           |  |  | 390 |     else if ( m_pLcd->ButtonTriggered(LG_BUTTON_2))
 | 
        
           |  |  | 391 | 	{
 | 
        
           |  |  | 392 | 		if ( m_iPage == 2 )
 | 
        
           |  |  | 393 | 			m_iPage = 3;
 | 
        
           |  |  | 394 | 		else if ( m_iPage == 3 )
 | 
        
           |  |  | 395 | 			m_iPage = 6;
 | 
        
           |  |  | 396 | 		else
 | 
        
           |  |  | 397 | 			m_iPage = 2;
 | 
        
           |  |  | 398 | 	}
 | 
        
           |  |  | 399 |     else if ( m_pLcd->ButtonTriggered(LG_BUTTON_3))
 | 
        
           |  |  | 400 | 	{
 | 
        
           |  |  | 401 | 		if ( m_iPage == 4 )
 | 
        
           |  |  | 402 | 		{
 | 
        
           |  |  | 403 | 			m_iSplitPage++;
 | 
        
           |  |  | 404 | 			if ( m_iSplitPage >= FindMaxRacePages() )
 | 
        
           |  |  | 405 | 				m_iSplitPage = 0;
 | 
        
           |  |  | 406 | 		}
 | 
        
           |  |  | 407 | 		else 
 | 
        
           |  |  | 408 | 			m_iSplitPage = 0;
 | 
        
           |  |  | 409 | 		m_iPage = 4;
 | 
        
           |  |  | 410 | 	}
 | 
        
           |  |  | 411 |     else if ( m_pLcd->ButtonTriggered(LG_BUTTON_4))
 | 
        
           |  |  | 412 | 	{
 | 
        
           |  |  | 413 | 		CyStringList *list = m_pData->GetCustomList();
 | 
        
           |  |  | 414 | 		if ( m_iPage == 5 )
 | 
        
           |  |  | 415 | 		{
 | 
        
           |  |  | 416 | 			m_iSplitPage++;
 | 
        
           |  |  | 417 | 			if ( m_iSplitPage > ((list->Count() - 1) / 4) )
 | 
        
           |  |  | 418 | 				m_iSplitPage = 0;
 | 
        
           |  |  | 419 | 		}
 | 
        
           |  |  | 420 | 		else
 | 
        
           |  |  | 421 | 			m_iSplitPage = 0;
 | 
        
           |  |  | 422 |   | 
        
           |  |  | 423 | 		m_iPage = 5;
 | 
        
           |  |  | 424 | 	}
 | 
        
           |  |  | 425 | }
 | 
        
           |  |  | 426 |   | 
        
           |  |  | 427 | void CLCDDisplay::UpdateDisplay(bool updated)
 | 
        
           |  |  | 428 | {
 | 
        
           |  |  | 429 | 	if ( !m_bStarted )
 | 
        
           |  |  | 430 | 		m_pLcd->SetAsForeground(TRUE);
 | 
        
           |  |  | 431 | 	m_bStarted = true;
 | 
        
           |  |  | 432 |   | 
        
           |  |  | 433 | 	if ( m_bWaiting )
 | 
        
           |  |  | 434 | 		m_pLcd->ShowPage( m_iTitlePage );
 | 
        
           |  |  | 435 | 	else if ( m_bLoading )
 | 
        
           |  |  | 436 | 		m_pLcd->ShowPage( m_iLoadingPage );
 | 
        
           |  |  | 437 | 	else
 | 
        
           |  |  | 438 | 		m_pLcd->ShowPage( m_iPage );
 | 
        
           |  |  | 439 |   | 
        
           |  |  | 440 | 	if ( m_pCustomScreen )
 | 
        
           |  |  | 441 | 	{
 | 
        
           |  |  | 442 | 		if ( !m_pCustomScreen->Display () )
 | 
        
           |  |  | 443 | 		{
 | 
        
           |  |  | 444 | 			delete m_pCustomScreen;
 | 
        
           |  |  | 445 | 			m_pCustomScreen = NULL;
 | 
        
           |  |  | 446 | 		}
 | 
        
           |  |  | 447 | 		m_pLcd->Update();
 | 
        
           |  |  | 448 | 		return;
 | 
        
           |  |  | 449 | 	}
 | 
        
           |  |  | 450 |   | 
        
           |  |  | 451 | 	if ( updated )
 | 
        
           |  |  | 452 | 	{
 | 
        
           |  |  | 453 | 		m_iUpdateCount = 60;
 | 
        
           |  |  | 454 | 		m_bLoading = false;
 | 
        
           |  |  | 455 | 		m_bWaiting = false;
 | 
        
           |  |  | 456 | 		m_pLcd->ModifyControlsOnPage ( m_iLoadingPage );
 | 
        
           |  |  | 457 | 		m_pLcd->SetProgressBarPosition ( m_hLoadBar, 100 );
 | 
        
           |  |  | 458 |   | 
        
           |  |  | 459 | 		if ( m_pData->GetCustomFiles()->Count() )
 | 
        
           |  |  | 460 | 		{
 | 
        
           |  |  | 461 | 			CyString c = m_pData->GetCustomFiles()->First();
 | 
        
           |  |  | 462 | 			CyString v = m_pData->GetCustomFiles()->Head()->data;
 | 
        
           |  |  | 463 | 			m_pData->GetCustomFiles()->PopFront();
 | 
        
           |  |  | 464 | 			m_pCustomScreen = new CLcdCustomScreen ( m_pLcd );
 | 
        
           |  |  | 465 | 			m_pCustomScreen->LoadScript ( m_pData->GetGameDirectory(), m_pData->GetProgDir(), c.c_str() );
 | 
        
           |  |  | 466 | 			int max;
 | 
        
           |  |  | 467 | 			CyString *tokens = v.SplitToken("|", &max);
 | 
        
           |  |  | 468 | 			for ( int i = 0; i < max; i++ )
 | 
        
           |  |  | 469 | 				m_pCustomScreen->SetVarible ( tokens[i], i );
 | 
        
           |  |  | 470 | 		}
 | 
        
           |  |  | 471 | 	}
 | 
        
           |  |  | 472 | 	else
 | 
        
           |  |  | 473 | 	{
 | 
        
           |  |  | 474 | 		m_pLcd->ModifyControlsOnPage ( m_iLoadingPage );
 | 
        
           |  |  | 475 | 		m_pLcd->SetProgressBarPosition ( m_hLoadBar, (float)(200 - m_iUpdateCount) / 2 );
 | 
        
           |  |  | 476 | 		--m_iUpdateCount;
 | 
        
           |  |  | 477 |   | 
        
           |  |  | 478 | 		if ( m_iUpdateCount <= 0 )
 | 
        
           |  |  | 479 | 		{
 | 
        
           |  |  | 480 | 			if ( !m_bWaiting && !m_bLoading )
 | 
        
           |  |  | 481 | 			{
 | 
        
           |  |  | 482 | 				m_bLoading = true;
 | 
        
           |  |  | 483 | 				m_iUpdateCount = 200;
 | 
        
           |  |  | 484 | 			}
 | 
        
           |  |  | 485 | 			else if ( m_bLoading )
 | 
        
           |  |  | 486 | 			{
 | 
        
           |  |  | 487 | 				m_bLoading = false;
 | 
        
           |  |  | 488 | 				m_bWaiting = true;
 | 
        
           |  |  | 489 | 			}
 | 
        
           |  |  | 490 | 			m_pData->Reset();
 | 
        
           |  |  | 491 | 		}
 | 
        
           |  |  | 492 | 	}
 | 
        
           |  |  | 493 |   | 
        
           |  |  | 494 | 	// Display the stats
 | 
        
           |  |  | 495 | 	Display ();
 | 
        
           |  |  | 496 |   | 
        
           |  |  | 497 | 	// check buttons are pressed
 | 
        
           |  |  | 498 | 	CheckButtons ();
 | 
        
           |  |  | 499 |   | 
        
           |  |  | 500 | 	// Update the LCD display
 | 
        
           |  |  | 501 |     m_pLcd->Update();
 | 
        
           |  |  | 502 | }
 | 
        
           |  |  | 503 |   | 
        
           |  |  | 504 | LPCSTR CLCDDisplay::GetShipClassName(int i)
 | 
        
           |  |  | 505 | {
 | 
        
           |  |  | 506 | 	switch (i)
 | 
        
           |  |  | 507 | 	{
 | 
        
           |  |  | 508 | 		case CLASS_M1:
 | 
        
           |  |  | 509 | 			return _T("M1:");
 | 
        
           |  |  | 510 | 		case CLASS_M2:
 | 
        
           |  |  | 511 | 			return _T("M2:");
 | 
        
           |  |  | 512 | 		case CLASS_M3:
 | 
        
           |  |  | 513 | 			return _T("M3:");
 | 
        
           |  |  | 514 | 		case CLASS_M4:
 | 
        
           |  |  | 515 | 			return _T("M4:");
 | 
        
           |  |  | 516 | 		case CLASS_M5:
 | 
        
           |  |  | 517 | 			return _T("M5:");
 | 
        
           |  |  | 518 | 		case CLASS_M6:
 | 
        
           |  |  | 519 | 			return _T("M6:");
 | 
        
           |  |  | 520 | 		case CLASS_M7:
 | 
        
           |  |  | 521 | 			return _T("M7:");
 | 
        
           |  |  | 522 | 		case CLASS_M8:
 | 
        
           |  |  | 523 | 			return _T("M8:");
 | 
        
           |  |  | 524 | 		case CLASS_TS:
 | 
        
           |  |  | 525 | 			return _T("TS:");
 | 
        
           |  |  | 526 | 		case CLASS_TM:
 | 
        
           |  |  | 527 | 			return _T("TM:");
 | 
        
           |  |  | 528 | 		case CLASS_TP:
 | 
        
           |  |  | 529 | 			return _T("TP:");
 | 
        
           |  |  | 530 | 		case CLASS_TL:
 | 
        
           |  |  | 531 | 			return _T("TL:");
 | 
        
           |  |  | 532 | 	}
 | 
        
           |  |  | 533 |   | 
        
           |  |  | 534 | 	return "";
 | 
        
           |  |  | 535 | }
 |