Subversion Repositories Kolibri OS

Rev

Rev 5098 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5098 Rev 5822
Line 187... Line 187...
187
#define MAX_LOOP_DELAY		20
187
#define MAX_LOOP_DELAY		20
188
#define DEFAULT_LOOP_DELAY	12
188
#define DEFAULT_LOOP_DELAY	12
Line 189... Line 189...
189
 
189
 
Line 190... Line 190...
190
#define blockSize			8
190
#define blockSize			8
191
 
191
 
Line 192... Line 192...
192
#define ENTRY_WND_SIZE_X	400
192
#define ENTRY_CLIENT_SIZE_X	(400 - 2)
193
#define ENTRY_WND_SIZE_Y	144
193
#define ENTRY_CLIENT_SIZE_Y	(144 - 2 - 20)
Line 194... Line 194...
194
 
194
 
195
#define TOP10_WND_SIZE_X	176
195
#define TOP10_CLIENT_SIZE_X	(176 - 2)
196
#define TOP10_WND_SIZE_Y	144
196
#define TOP10_CLIENT_SIZE_Y	(144 - 2 - 20)
197
 
197
 
Line 198... Line 198...
198
#define MAX_X_SIZE			96
198
#define MAX_X_SIZE			96
199
#define MIN_X_SIZE			48
-
 
200
#define MAX_Y_SIZE			56
-
 
201
#define MIN_Y_SIZE			28
199
#define MIN_X_SIZE			48
202
 
200
#define MAX_Y_SIZE			56
203
#define flipMapSize			((mapSizeX * mapSizeY) / 4)
201
#define MIN_Y_SIZE			28
204
#define wndXOffet			1
202
 
205
#define wndYOffset			22
203
#define flipMapSize			((mapSizeX * mapSizeY) / 4)
Line 376... Line 374...
376
};
374
};
Line 377... Line 375...
377
 
375
 
378
///
376
///
Line -... Line 377...
-
 
377
hiScoreFile *top10Heroes = NULL;
Line 379... Line 378...
379
hiScoreFile *top10Heroes = NULL;
378
 
380
 
379
sProcessInfo process_info;
-
 
380
 
-
 
381
// çàãîëîâîê ãëàâíîãî îêíà
381
 
382
char MainWindowTitle[] = "XONIX (C) MMVI by Rabid Rabbit";
382
// çàãîëîâîê ãëàâíîãî îêíà
383
char WindowTitle[128];
-
 
384
char Top10WndTitle[] = "Top 10";
383
char MainWindowTitle[] = "XONIX (C) MMVI by Rabid Rabbit";
385
#if LANG == RUS
384
#if LANG == RUS
386
char goWndTitle[] = "“஢¥­ì %U, § ¢¥à襭® %U%%, ¦¨§­¥©: %U, áçñâ: %U";
385
char goWndTitle[] = "“஢¥­ì %U, § ¢¥à襭® %U%%, ¦¨§­¥©: %U, áçñâ: %U";
387
char goWndTitleSuperHero[] = "“஢¥­ì %U, § ¢¥à襭® %U%%, ¦¨§­¥©: %U, áçñâ: %U, á㯥ࣥன: %U%%";
386
char menuStr1[] = "1.  ç âì ¨£àã";
388
char menuStr1[] = "1.  ç âì ¨£àã";
387
char menuStr2[] = "2. ‚ë室";
389
char menuStr2[] = "2. ‚ë室";
Line 392... Line 394...
392
char mainLoopDelayStr[] = "‘ª®à®áâì %U";
394
char mainLoopDelayStr[] = "‘ª®à®áâì %U";
393
char top10str1[] = "ENTER - ¨¬ï Ok.";
395
char top10str1[] = "ENTER - ¨¬ï Ok.";
394
char top10str2[] = "ESC - ¢ë室 ¢ ¬¥­î";
396
char top10str2[] = "ESC - ¢ë室 ¢ ¬¥­î";
395
#else
397
#else
396
char goWndTitle[] = "Level %U, completed %U%%, lives: %U, scores: %U";
398
char goWndTitle[] = "Level %U, completed %U%%, lives: %U, scores: %U";
-
 
399
char goWndTitle[] = "Level %U, completed %U%%, lives: %U, scores: %U, superhero: %U%%";
397
char menuStr1[] = "1. Start game";
400
char menuStr1[] = "1. Start game";
398
char menuStr2[] = "2. Exit";
401
char menuStr2[] = "2. Exit";
399
char menuStr3[] = "Control: ARROWS - direction of movement.";
402
char menuStr3[] = "Control: ARROWS - direction of movement.";
400
char menuStr4[] = "SPACE - pause, ESC - leave to menu.";
403
char menuStr4[] = "SPACE - pause, ESC - leave to menu.";
401
char thatsAllStr[] = "Game finished.";
404
char thatsAllStr[] = "Game finished.";
Line 410... Line 413...
410
Byte *heroPtr = NULL;
413
Byte *heroPtr = NULL;
411
int heroDX = 0, heroDY = 0, lastMoveDirection = 0;
414
int heroDX = 0, heroDY = 0, lastMoveDirection = 0;
412
//
415
//
413
Byte * worldMap = NULL;
416
Byte * worldMap = NULL;
414
//
417
//
415
int	wndSizeX = ENTRY_WND_SIZE_X;
418
int	wndSizeX = 0;
416
int	wndSizeY = ENTRY_WND_SIZE_Y;
419
int	wndSizeY = 0;
417
int mapSizeX = 64;
420
int mapSizeX = 64;
418
int mapSizeY = 32;
421
int mapSizeY = 32;
419
int loopDelay = DEFAULT_LOOP_DELAY;
422
int loopDelay = DEFAULT_LOOP_DELAY;
420
int currentLevel = 1;
423
int currentLevel = 1;
421
int appState = appStateEntry;
424
int appState = appStateEntry;
Line 905... Line 908...
905
	//
908
	//
906
	if ( (!bonus1Set)
909
	if ((!bonus1Set)
907
		&& rtlRand() > 0x80000000
910
		&& rtlRand() > 0x80000000
908
		&& lifeCount < 2
911
		&& lifeCount < 2
909
		&& GetCompletePercents() > 75 )
912
		&& GetCompletePercents() > 75 )
-
 
913
		
910
	{
914
	{
911
		//
915
		//
912
		bonus1Set = true;
916
		bonus1Set = true;
913
		//
917
		//
914
		for ( i = rtlRand() % (mapSizeX * mapSizeY); worldMap[i] != gmWall; i = rtlRand() % (mapSizeX * mapSizeY) );
918
		for ( i = rtlRand() % (mapSizeX * mapSizeY); worldMap[i] != gmWall; i = rtlRand() % (mapSizeX * mapSizeY) );
Line 1348... Line 1352...
1348
void ApplyMapDiffs( bool drawTitle )
1352
void ApplyMapDiffs( bool drawTitle )
1349
{
1353
{
1350
	int i, j;
1354
	int i, j;
Line 1351... Line 1355...
1351
 
1355
 
1352
	//
1356
	//
1353
	kos_WindowRedrawStatus( 1 );
1357
//	kos_WindowRedrawStatus( 1 );
1354
	//
1358
	//
1355
	if ( drawTitle ) drawWndTitleGo();
1359
	if ( drawTitle ) drawWndTitleGo();
1356
	//
1360
	//
1357
	j = mapDiffList.GetCount();
1361
	j = mapDiffList.GetCount();
1358
	//
1362
	//
1359
	for ( i = 0; i < j; i++ )
1363
	for ( i = 0; i < j; i++ )
1360
	{
-
 
1361
		////
-
 
1362
		//kos_DrawBar(
-
 
1363
		//	wndXOffet + ( ( ( mapDiffList[i].elPtr - worldMap ) % mapSizeX ) * blockSize ),
-
 
1364
		//	wndYOffset + ( ( ( mapDiffList[i].elPtr - worldMap ) / mapSizeX ) * blockSize ),
-
 
1365
		//	blockSize, blockSize,
-
 
1366
		//	mapColours[mapDiffList[i].mapEl]
-
 
1367
		//);
-
 
1368
		//
1364
	{
1369
		kos_PutImage(
1365
		kos_PutImage(
1370
			mapColours[mapDiffList[i].mapEl],
1366
			mapColours[mapDiffList[i].mapEl],
1371
			blockSize,
1367
			blockSize,
1372
			blockSize,
1368
			blockSize,
1373
			wndXOffet + ( ( ( mapDiffList[i].elPtr - worldMap ) % mapSizeX ) * blockSize ),
1369
			( ( mapDiffList[i].elPtr - worldMap ) % mapSizeX ) * blockSize,
1374
			wndYOffset + ( ( ( mapDiffList[i].elPtr - worldMap ) / mapSizeX ) * blockSize )
1370
			( ( mapDiffList[i].elPtr - worldMap ) / mapSizeX ) * blockSize
1375
			);
1371
			);
1376
	}
1372
	}
1377
	//
1373
	//
1378
	kos_WindowRedrawStatus( 2 );
1374
//	kos_WindowRedrawStatus( 2 );
1379
	//
1375
	//
1380
	mapDiffList.Clear();
1376
	mapDiffList.Clear();
Line 1459... Line 1455...
1459
	currentHero = gmHero;
1455
	currentHero = gmHero;
1460
	currentTrack = gmTrack;
1456
	currentTrack = gmTrack;
1461
	scoreCount = 0;
1457
	scoreCount = 0;
1462
	enterName = -1;
1458
	enterName = -1;
1463
	//
1459
	//
1464
	wndSizeX = ((mapSizeX*blockSize)+2);
1460
	wndSizeX = ((mapSizeX*blockSize) + 5*2);
1465
	wndSizeY = ((mapSizeY*blockSize)+23);
1461
	wndSizeY = ((mapSizeY*blockSize) + kos_GetSkinHeight() + 5);
1466
	//
1462
	//
1467
	kos_ChangeWindow( -1, -1, wndSizeX, wndSizeY );
1463
	kos_ChangeWindow( -1, -1, wndSizeX-1, wndSizeY-1 );
1468
}
1464
}
Line 1469... Line 1465...
1469
 
1465
 
1470
//
1466
//
1471
void SetEntryVars()
1467
void SetEntryVars()
1472
{
1468
{
1473
	//
1469
	//
1474
	wndSizeX = ENTRY_WND_SIZE_X;
1470
	wndSizeX = ENTRY_CLIENT_SIZE_X + 5*2;
1475
	wndSizeY = ENTRY_WND_SIZE_Y;
1471
	wndSizeY = ENTRY_CLIENT_SIZE_Y + kos_GetSkinHeight() + 5;
-
 
1472
	//
1476
	//
1473
	kos_SetWindowCaption(MainWindowTitle);
1477
	kos_ChangeWindow( -1, -1, wndSizeX, wndSizeY );
1474
	kos_ChangeWindow( -1, -1, wndSizeX-1, wndSizeY-1 );
1478
	kos_SetKeyboardDataMode( KM_SCANS );
1475
	kos_SetKeyboardDataMode( KM_SCANS );
Line 1479... Line 1476...
1479
}
1476
}
Line 1519... Line 1516...
1519
 
1516
 
1520
	//
1517
	//
1521
	while ( kos_CheckForEvent() == 2 ) kos_GetKey( keyCode );
1518
	while ( kos_CheckForEvent() == 2 ) kos_GetKey( keyCode );
1522
	//
1519
	//
-
 
1520
	kos_SetKeyboardDataMode( KM_CHARS );
-
 
1521
 
1523
	kos_SetKeyboardDataMode( KM_CHARS );
1522
	kos_SetWindowCaption(Top10WndTitle);
1524
	//
1523
	//
1525
	kos_ChangeWindow( -1, -1, TOP10_WND_SIZE_X, TOP10_WND_SIZE_Y );
1524
	kos_ChangeWindow(-1, -1, TOP10_CLIENT_SIZE_X + 5 * 2 - 1, TOP10_CLIENT_SIZE_Y + kos_GetSkinHeight() + 5 - 1);
1526
	//
1525
	//
1527
	for ( i = 0; i < TOP_TBL_SIZE; i++ )
1526
	for ( i = 0; i < TOP_TBL_SIZE; i++ )
1528
	{
1527
	{
1529
		//
1528
		//
Line 1557... Line 1556...
1557
	Byte keyCode;
1556
	Byte keyCode;
1558
	Byte *bPtr;
1557
	Byte *bPtr;
1559
	bool workOn = true;
1558
	bool workOn = true;
1560
	char *cPtr;
1559
	char *cPtr;
Line -... Line 1560...
-
 
1560
 
-
 
1561
	wndSizeX = ENTRY_CLIENT_SIZE_X + 5 * 2;
-
 
1562
	wndSizeY = ENTRY_CLIENT_SIZE_Y + kos_GetSkinHeight() + 5;
1561
 
1563
 
1562
	// îòäåëÿåì èìÿ ìîäóëÿ îò ïóòè
1564
	// îòäåëÿåì èìÿ ìîäóëÿ îò ïóòè
1563
	cPtr = strrchr( kosExePath, '/' );
1565
	cPtr = strrchr( kosExePath, '/' );
1564
	// ïðîâåðêà ;)
1566
	// ïðîâåðêà ;)
1565
	if ( cPtr == NULL )
1567
	if ( cPtr == NULL )
1566
	{
1568
	{
1567
		//
1569
		//
1568
		rtlDebugOutString( "Invalid path to executable." );
1570
		rtlDebugOutString( "xonix: Invalid path to executable." );
1569
		//
1571
		//
1570
		return;
1572
		return;
1571
	}
1573
	}
1572
	//
1574
	//
Line 1604... Line 1606...
1604
				case 2:
1606
				case 2:
1605
					//
1607
					//
1606
					appState = appStateGo;
1608
					appState = appStateGo;
1607
					SetGameVars();
1609
					SetGameVars();
1608
					initWorldMap();
1610
					initWorldMap();
1609
					DrawAppWindow();
1611
//					DrawAppWindow();
1610
					break;
1612
					break;
Line 1611... Line 1613...
1611
 
1613
 
1612
				//
1614
				//
1613
				case 3:
1615
				case 3:
Line 1643... Line 1645...
1643
					mapSizeY -= 2;
1645
					mapSizeY -= 2;
1644
					if ( mapSizeY < MIN_Y_SIZE ) mapSizeY = MIN_Y_SIZE;
1646
					if ( mapSizeY < MIN_Y_SIZE ) mapSizeY = MIN_Y_SIZE;
1645
					break;
1647
					break;
1646
				//
1648
				//
1647
				case BT_LOOP_MINUS:
1649
				case BT_LOOP_MINUS:
1648
					loopDelay++;;
1650
					loopDelay++;
1649
					if ( loopDelay > MAX_LOOP_DELAY ) loopDelay = MAX_LOOP_DELAY;
1651
					if ( loopDelay > MAX_LOOP_DELAY ) loopDelay = MAX_LOOP_DELAY;
1650
					break;
1652
					break;
1651
				//
1653
				//
1652
				case BT_LOOP_PLUS:
1654
				case BT_LOOP_PLUS:
1653
					loopDelay--;;
1655
					loopDelay--;
1654
					if ( loopDelay < MIN_LOOP_DELAY ) loopDelay = MIN_LOOP_DELAY;
1656
					if ( loopDelay < MIN_LOOP_DELAY ) loopDelay = MIN_LOOP_DELAY;
1655
					break;
1657
					break;
-
 
1658
				case 1:
-
 
1659
					xonixFree();
-
 
1660
					workOn = false;
-
 
1661
					break;
1656
				//
1662
				//
1657
				default:
1663
				default:
1658
					break;
1664
					break;
1659
				}
1665
				}
1660
				DrawAppWindow();
1666
				DrawAppWindow();
Line 1801... Line 1807...
1801
				}
1807
				}
1802
				ApplyMapDiffs();
1808
				ApplyMapDiffs();
1803
				break;
1809
				break;
Line 1804... Line 1810...
1804
 
1810
 
-
 
1811
			//
-
 
1812
			case 3:
-
 
1813
				kos_GetButtonID(buttonID);
-
 
1814
				if (buttonID == 1)
-
 
1815
				{
-
 
1816
					xonixFree();
-
 
1817
					workOn = false;
-
 
1818
				}
1805
			//
1819
				break;
1806
			default:
1820
			default:
1807
				//
1821
				//
1808
				if ( MoveHero() )
1822
				if ( MoveHero() )
1809
				{
1823
				{
Line 1846... Line 1860...
1846
					DrawAppWindow();
1860
					DrawAppWindow();
1847
				}
1861
				}
1848
				break;
1862
				break;
1849
			//
1863
			//
1850
			case 3:
1864
			case 3:
1851
				if ( kos_GetButtonID( buttonID ) )
1865
				kos_GetButtonID(buttonID);
1852
				{
-
 
1853
					//
-
 
1854
					if ( buttonID == 1 )
1866
				if ( buttonID == 1 )
1855
					{
1867
				{
1856
						//
1868
					//
1857
						appState = appStateTop10;
1869
					appState = appStateTop10;
1858
						SetUpTop10();
1870
					SetUpTop10();
1859
						DrawAppWindow();
1871
					DrawAppWindow();
1860
					}
1872
				}
1861
				}
-
 
1862
			//
1873
			//
1863
			default:
1874
			default:
1864
				break;
1875
				break;
1865
			}
1876
			}
1866
			break;
1877
			break;
Line 1928... Line 1939...
1928
					DrawAppWindow();
1939
					DrawAppWindow();
1929
				}
1940
				}
1930
				//
1941
				//
1931
				break;
1942
				break;
1932
			//
1943
			//
-
 
1944
			case 3:
-
 
1945
				kos_GetButtonID(buttonID);
-
 
1946
				if (buttonID == 1)
-
 
1947
				{
-
 
1948
					xonixFree();
-
 
1949
					workOn = false;
-
 
1950
				}
-
 
1951
				break;
1933
			default:
1952
			default:
1934
				break;
1953
				break;
1935
			}
1954
			}
1936
			break;
1955
			break;
Line 1949... Line 1968...
1949
				{
1968
				{
1950
					//
1969
					//
1951
					appState = appStateGo;
1970
					appState = appStateGo;
1952
				}
1971
				}
1953
				break;
1972
				break;
-
 
1973
			case 3:
-
 
1974
				kos_GetButtonID(buttonID);
-
 
1975
				if (buttonID == 1)
-
 
1976
				{
-
 
1977
					xonixFree();
-
 
1978
					workOn = false;
1954
 
1979
				}
-
 
1980
				break;
1955
			default:
1981
			default:
1956
				break;
1982
				break;
1957
			}
1983
			}
1958
			break;
1984
			break;
Line 2019... Line 2045...
2019
//
2045
//
2020
void DrawEntryScreen()
2046
void DrawEntryScreen()
2021
{
2047
{
2022
	PRINTK pr;
2048
	PRINTK pr;
2023
	char line[64];
2049
	char line[64];
2024
 
-
 
2025
	//
2050
	//
2026
	kos_DefineAndDrawWindow(
2051
	kos_DefineAndDrawWindow(
2027
		100, 100,
2052
		100, 100,
2028
		wndSizeX, wndSizeY,
2053
		wndSizeX-1, wndSizeY-1,
-
 
2054
		0x34, 0,
2029
		0, 0,
2055
		0, 0,
2030
		0, 0x2040A0,
2056
		MainWindowTitle
2031
		0x2040A0
-
 
2032
		);
2057
		);
2033
	//
2058
	//
-
 
2059
	if (process_info.processInfo.window_state & 0x06)
-
 
2060
		return;
-
 
2061
 
-
 
2062
	/*
2034
	kos_WriteTextToWindow(
2063
	kos_WriteTextToWindow(
2035
		4, 4,
2064
		4, 4,
2036
		0x10, 0x42D2E2,
2065
		0x10, 0x42D2E2,
2037
		MainWindowTitle,
2066
		MainWindowTitle,
2038
		sizeof( MainWindowTitle ) - 1
2067
		sizeof( MainWindowTitle ) - 1
2039
		);
2068
		);
-
 
2069
		*/
2040
	//
2070
	//
2041
	kos_WriteTextToWindow(
2071
	kos_WriteTextToWindow(
2042
		8, 32,
2072
		8-1, 32-21,
2043
		0x10, 0x12FF12,
2073
		0x10, 0x12FF12,
2044
		menuStr1,
2074
		menuStr1,
2045
		sizeof( menuStr1 ) - 1
2075
		sizeof( menuStr1 ) - 1
2046
		);
2076
		);
2047
	//
2077
	//
2048
	kos_WriteTextToWindow(
2078
	kos_WriteTextToWindow(
2049
		8, 48,
2079
		8-1, 48-21,
2050
		0x10, 0x12FF12,
2080
		0x10, 0x12FF12,
2051
		menuStr2,
2081
		menuStr2,
2052
		sizeof( menuStr2 ) - 1
2082
		sizeof( menuStr2 ) - 1
2053
		);
2083
		);
2054
	//
2084
	//
2055
	kos_WriteTextToWindow(
2085
	kos_WriteTextToWindow(
2056
		8, 80,
2086
		8-1, 80-21,
2057
		0x10, 0xD0FF12,
2087
		0x10, 0xD0FF12,
2058
		menuStr3,
2088
		menuStr3,
2059
		sizeof( menuStr3 ) - 1
2089
		sizeof( menuStr3 ) - 1
2060
		);
2090
		);
2061
	//
2091
	//
2062
	kos_WriteTextToWindow(
2092
	kos_WriteTextToWindow(
2063
		8, 96,
2093
		8-1, 96-21,
2064
		0x10, 0xD0FF12,
2094
		0x10, 0xD0FF12,
2065
		menuStr4,
2095
		menuStr4,
2066
		sizeof( menuStr4 ) - 1
2096
		sizeof( menuStr4 ) - 1
2067
		);
2097
		);
2068
	// ðàçìåð ïîëÿ
2098
	// ðàçìåð ïîëÿ
Line 2070... Line 2100...
2070
	pr.args[0] = mapSizeX;
2100
	pr.args[0] = mapSizeX;
2071
	pr.args[1] = mapSizeY;
2101
	pr.args[1] = mapSizeY;
2072
	sprintk( line, &pr );
2102
	sprintk( line, &pr );
2073
	//
2103
	//
2074
	kos_WriteTextToWindow(
2104
	kos_WriteTextToWindow(
2075
		8, 112,
2105
		8-1, 112-21,
2076
		0x10, 0x12C0D0,
2106
		0x10, 0x12C0D0,
2077
		line,
2107
		line,
2078
		strlen( line )
2108
		strlen( line )
2079
		);
2109
		);
2080
	// êíîïêè X
2110
	// êíîïêè X
-
 
2111
	// xo oo
-
 
2112
	//	  oo
2081
	kos_DefineButton(
2113
	kos_DefineButton(
2082
		ENTRY_WND_SIZE_X - 58, 112,
2114
		ENTRY_CLIENT_SIZE_X - 62, 112-24,
2083
		12, 12,
2115
		13, 13,
2084
		BT_SIZE_X_MINUS,
2116
		BT_SIZE_X_MINUS,
2085
		0xCCCCCC
2117
		0xCCCCCC
2086
		);
2118
		);
2087
	//
2119
	//
2088
	kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_WND_SIZE_X - 58 + 3, 117 );
2120
	kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_CLIENT_SIZE_X - (62-1) + 3, 117-23 );
2089
	//
2121
	//
-
 
2122
	// ox oo
-
 
2123
	//	  oo
2090
	kos_DefineButton(
2124
	kos_DefineButton(
2091
		ENTRY_WND_SIZE_X - 45, 112,
2125
		ENTRY_CLIENT_SIZE_X - 48, 112-24,
2092
		12, 12,
2126
		13, 13,
2093
		BT_SIZE_X_PLUS,
2127
		BT_SIZE_X_PLUS,
2094
		0xCCCCCC
2128
		0xCCCCCC
2095
		);
2129
		);
2096
	//
2130
	//
2097
	kos_PutImage( bmPMButton, 6, 6, ENTRY_WND_SIZE_X - 45 + 3, 115 );
2131
	kos_PutImage( bmPMButton, 6, 6, ENTRY_CLIENT_SIZE_X - (48-1) + 3, 115-23 );
2098
	// êíîïêè Y
2132
	// êíîïêè Y
-
 
2133
	// oo xo
-
 
2134
	//	  oo
2099
	kos_DefineButton(
2135
	kos_DefineButton(
2100
		ENTRY_WND_SIZE_X - 29, 112,
2136
		ENTRY_CLIENT_SIZE_X - 31, 112-24,
2101
		12, 12,
2137
		13, 13,
2102
		BT_SIZE_Y_MINUS,
2138
		BT_SIZE_Y_MINUS,
2103
		0xCCCCCC
2139
		0xCCCCCC
2104
		);
2140
		);
2105
	//
2141
	//
2106
	kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_WND_SIZE_X - 29 + 3, 117 );
2142
	kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_CLIENT_SIZE_X - (31-1) + 3, 117-23 );
2107
	//
2143
	//
-
 
2144
	// oo ox
-
 
2145
	//	  oo
2108
	kos_DefineButton(
2146
	kos_DefineButton(
2109
		ENTRY_WND_SIZE_X - 16, 112,
2147
		ENTRY_CLIENT_SIZE_X - 17, 112-24,
2110
		12, 12,
2148
		13, 13,
2111
		BT_SIZE_Y_PLUS,
2149
		BT_SIZE_Y_PLUS,
2112
		0xCCCCCC
2150
		0xCCCCCC
2113
		);
2151
		);
2114
	//
2152
	//
2115
	kos_PutImage( bmPMButton, 6, 6, ENTRY_WND_SIZE_X - 16 + 3, 115 );
2153
	kos_PutImage( bmPMButton, 6, 6, ENTRY_CLIENT_SIZE_X - (17-1) + 3, 115-23 );
2116
	//
2154
	//
2117
	//çàäåðæêà â öèêëå âûáîðêè ñîîáùåíèé
2155
	//çàäåðæêà â öèêëå âûáîðêè ñîîáùåíèé
2118
	pr.fmtline = mainLoopDelayStr;
2156
	pr.fmtline = mainLoopDelayStr;
2119
	pr.args[0] = MAX_LOOP_DELAY + MIN_LOOP_DELAY - loopDelay;
2157
	pr.args[0] = MAX_LOOP_DELAY + MIN_LOOP_DELAY - loopDelay;
2120
	sprintk( line, &pr );
2158
	sprintk( line, &pr );
2121
	//
2159
	//
2122
	kos_WriteTextToWindow(
2160
	kos_WriteTextToWindow(
2123
		8, 128,
2161
		8-1, 128-21,
2124
		0x10, 0x12C0D0,
2162
		0x10, 0x12C0D0,
2125
		line,
2163
		line,
2126
		strlen( line )
2164
		strlen( line )
2127
		);
2165
		);
2128
	//
2166
	//
2129
	kos_DefineButton(
2167
	kos_DefineButton(
2130
		ENTRY_WND_SIZE_X - 29, 128,
2168
		ENTRY_CLIENT_SIZE_X - 31, 128-23,
2131
		12, 12,
2169
		13, 13,
2132
		BT_LOOP_MINUS,
2170
		BT_LOOP_MINUS,
2133
		0xCCCCCC
2171
		0xCCCCCC
2134
		);
2172
		);
2135
	//
2173
	//
2136
	kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_WND_SIZE_X - 29 + 3, 133 );
2174
	kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_CLIENT_SIZE_X - (31-1) + 3, 133-22 );
2137
	//
2175
	//
2138
	kos_DefineButton(
2176
	kos_DefineButton(
2139
		ENTRY_WND_SIZE_X - 16, 128,
2177
		ENTRY_CLIENT_SIZE_X - 17, 128-23,
2140
		12, 12,
2178
		13, 13,
2141
		BT_LOOP_PLUS,
2179
		BT_LOOP_PLUS,
2142
		0xCCCCCC
2180
		0xCCCCCC
2143
		);
2181
		);
2144
	//
2182
	//
2145
	kos_PutImage( bmPMButton, 6, 6, ENTRY_WND_SIZE_X - 16 + 3, 131 );
2183
	kos_PutImage( bmPMButton, 6, 6, ENTRY_CLIENT_SIZE_X - (17-1) + 3, 131-22 );
2146
}
2184
}
Line 2147... Line 2185...
2147
 
2185
 
2148
 
2186
 
2149
//
2187
//
2150
void DrawAppWindow()
-
 
2151
{
2188
void DrawAppWindow()
-
 
2189
{
Line 2152... Line 2190...
2152
	//
2190
	kos_WindowRedrawStatus( 1 );
2153
	kos_WindowRedrawStatus( 1 );
2191
	kos_ProcessInfo(&process_info, -1);
2154
 
2192
 
2155
	switch ( appState )
2193
	switch (appState)
Line 2165... Line 2203...
2165
		break;
2203
		break;
2166
	//
2204
		//
2167
	case appStateGo:
2205
	case appStateGo:
2168
	case appStateShowMap:
2206
	case appStateShowMap:
2169
	case appStatePause:
2207
	case appStatePause:
-
 
2208
		if (process_info.processInfo.window_state & 0x06)
-
 
2209
		{
-
 
2210
			appState = appStatePause;
-
 
2211
		}
2170
		drawWorldMap();
2212
		drawWorldMap();
2171
		break;
2213
		break;
2172
	//
2214
		//
2173
	case appStateAfterDeath:
2215
	case appStateAfterDeath:
2174
		//
2216
		//
2175
		drawWorldMap();
2217
		drawWorldMap();
2176
		//
2218
		//
2177
		kos_DefineButton(
2219
		kos_DefineButton(
2178
			( wndSizeX / 2 ) - 64,
2220
			((wndSizeX - 10) / 2) - 64,
2179
			( wndSizeY / 2 ) - 16,
2221
			((wndSizeY - kos_GetSkinHeight() - 5) / 2) - 16,
2180
			128, 32,
2222
			128, 32,
2181
			1,
2223
			1,
2182
			0x136793
2224
			0x136793
2183
			);
2225
			);
2184
		//
2226
		//
2185
		kos_WriteTextToWindow(
2227
		kos_WriteTextToWindow(
2186
			( wndSizeX / 2 ) - ( sizeof( thatsAllStr ) * 4 ),
2228
			((wndSizeX - 10) / 2) - (sizeof(thatsAllStr)* 4),
2187
			( wndSizeY / 2 ) - 4,
2229
			((wndSizeY - kos_GetSkinHeight() - 5) / 2) - 4,
2188
			0x10, 0xFFFFFF,
2230
			0x10, 0xFFFFFF,
2189
			thatsAllStr,
2231
			thatsAllStr,
2190
			sizeof ( thatsAllStr ) - 1
2232
			sizeof (thatsAllStr)-1
2191
			);
2233
			);
2192
 
-
 
2193
		//
2234
			//
2194
		break;
2235
		break;
2195
	//
2236
		//
2196
	case appStateHideMap:
2237
	case appStateHideMap:
2197
		drawWorldMapForFlip();
2238
		drawWorldMapForFlip();
Line 2311... Line 2352...
2311
void drawWorldMap()
2352
void drawWorldMap()
2312
{
2353
{
2313
	//
2354
	//
2314
	kos_DefineAndDrawWindow(
2355
	kos_DefineAndDrawWindow(
2315
		100, 100,
2356
		100, 100,
2316
		wndSizeX, wndSizeY,
2357
		wndSizeX-1, wndSizeY-1,
-
 
2358
		0x74, 0,
2317
		0, 0,
2359
		0, 0,
2318
		0, 0x2040A0,
2360
		MainWindowTitle
2319
		0x2040A0
-
 
2320
		);
2361
		);
2321
	//
2362
	//
2322
	drawWndTitleGo();
2363
	drawWndTitleGo();
2323
	//
2364
	//
2324
	drawWorldMapForFlip();
2365
	drawWorldMapForFlip();
Line 2340... Line 2381...
2340
 
2381
 
2341
//
2382
//
2342
void drawWndTitleGo()
2383
void drawWndTitleGo()
2343
{
2384
{
2344
	PRINTK pr;
2385
	PRINTK pr;
Line 2345... Line 2386...
2345
	char line[64];
2386
	static char prev_title[64] = {'\0'};
-
 
2387
 
2346
 
2388
	//
2347
	//
2389
	/*
2348
	kos_DrawBar(
2390
	kos_DrawBar(
2349
		1, 1,
2391
		1, 1,
2350
		wndSizeX - 2, 18,
2392
		wndSizeX - 2, 18,
2351
		0x2040A0
2393
		0x2040A0
2352
		);
2394
		);
2353
 
2395
		*/
2354
	//
2396
	//
2355
	pr.fmtline = goWndTitle;
2397
	//pr.fmtline = goWndTitle;
2356
	pr.args[0] = currentLevel;
2398
	pr.args[0] = currentLevel;
2357
	pr.args[1] = GetCompletePercents();
2399
	pr.args[1] = GetCompletePercents();
-
 
2400
	pr.args[2] = lifeCount;
-
 
2401
	pr.args[3] = scoreCount;
-
 
2402
 
-
 
2403
	if (bonus1Count > 0)
-
 
2404
	{
-
 
2405
		pr.args[4] = 100*bonus1Count/BONUS1_LIFETIME;
-
 
2406
		pr.fmtline = goWndTitleSuperHero;
-
 
2407
	}
-
 
2408
	else
-
 
2409
	{
-
 
2410
		pr.fmtline = goWndTitle;
2358
	pr.args[2] = lifeCount;
2411
		
2359
	pr.args[3] = scoreCount;
2412
	}
-
 
2413
	sprintk(WindowTitle, &pr);
-
 
2414
	//
-
 
2415
	bool same = true;
-
 
2416
	for (int i = 0; i < 64; i++)
-
 
2417
	{
-
 
2418
		if (WindowTitle[i] != prev_title[i])
-
 
2419
		{
-
 
2420
			same = false;
-
 
2421
			break;
-
 
2422
		}
-
 
2423
		if ((WindowTitle[i] == '\0') || (prev_title[i] == '\0'))
-
 
2424
		{
-
 
2425
			break;
-
 
2426
		}
-
 
2427
 
-
 
2428
	}
-
 
2429
 
-
 
2430
	if (!same)
-
 
2431
	{
-
 
2432
		kos_SetWindowCaption(WindowTitle);
-
 
2433
		strcpy(prev_title, WindowTitle);
-
 
2434
	}
2360
	sprintk( line, &pr );
2435
	
2361
	//
2436
		/*
2362
	kos_WriteTextToWindow(
2437
	kos_WriteTextToWindow(
2363
		4, 4,
2438
		4, 4,
2364
		0x10, 0x42D2E2,
2439
		0x10, 0x42D2E2,
2365
		line,
2440
		line,
-
 
2441
		strlen( line )
2366
		strlen( line )
2442
		);
-
 
2443
		*/
2367
		);
2444
	//
2368
	//
2445
	/*
2369
	if ( bonus1Count > 0 )
2446
	if ( bonus1Count > 0 )
2370
	{
2447
	{
2371
		//
2448
		//
Line 2378... Line 2455...
2378
		kos_DrawBar(
2455
		kos_DrawBar(
2379
			2, 22 - BONUS1_IND_HSIZE - 1,
2456
			2, 22 - BONUS1_IND_HSIZE - 1,
2380
			( bonus1Count * ( wndSizeX - 4 ) ) / BONUS1_LIFETIME, BONUS1_IND_HSIZE,
2457
			( bonus1Count * ( wndSizeX - 4 ) ) / BONUS1_LIFETIME, BONUS1_IND_HSIZE,
2381
			0x5720B0
2458
			0x5720B0
2382
			);
2459
			);
-
 
2460
			
2383
	}
2461
	}*/
2384
}
2462
}
Line 2385... Line 2463...
2385
 
2463
 
2386
//
2464
//
2387
void drawWorldMapForFlip()
2465
void drawWorldMapForFlip()
2388
{
2466
{
2389
	int i, j;
2467
	int i, j;
Line -... Line 2468...
-
 
2468
	Byte *mPtr = worldMap;
-
 
2469
 
2390
	Byte *mPtr = worldMap;
2470
	if (process_info.processInfo.window_state & 0x06)
2391
 
2471
		return;
2392
	//
2472
	//
2393
	for ( i = 0; i < mapSizeY; i++ )
2473
	for ( i = 0; i < mapSizeY; i++ )
2394
	{
2474
	{
2395
		//
2475
		//
2396
		for ( j = 0; j < mapSizeX; j++ )
-
 
2397
		{
-
 
2398
			////
-
 
2399
			//kos_DrawBar(
-
 
2400
			//	wndXOffet + ( j * blockSize ),
-
 
2401
			//	wndYOffset + ( i * blockSize ),
-
 
2402
			//	blockSize, blockSize,
-
 
2403
			//	mapColours[*mPtr]
-
 
2404
			//);
2476
		for ( j = 0; j < mapSizeX; j++ )
2405
			//
2477
		{
2406
			kos_PutImage(
2478
			kos_PutImage(
2407
				mapColours[*mPtr],
2479
				mapColours[*mPtr],
2408
				blockSize,
2480
				blockSize,
2409
				blockSize,
2481
				blockSize,
2410
				wndXOffet + ( j * blockSize ),
2482
				j * blockSize,
2411
				wndYOffset + ( i * blockSize )
2483
				i * blockSize
2412
				);
2484
				);
2413
			//
2485
			//
2414
			mPtr++;
2486
			mPtr++;
Line 2444... Line 2516...
2444
	}
2516
	}
2445
}
2517
}
Line 2446... Line 2518...
2446
 
2518
 
2447
 
-
 
2448
//
-
 
2449
char Top10WndTitle[] = "Top 10";
-
 
2450
 
2519
 
2451
//
2520
//
2452
void DrawTop10Window()
2521
void DrawTop10Window()
Line 2453... Line 2522...
2453
{
2522
{
2454
	int i;
2523
	int i;
2455
 
2524
 
2456
	//
-
 
2457
	kos_DefineAndDrawWindow(
2525
	//
2458
		100, 100,
2526
	kos_DefineAndDrawWindow(
2459
		TOP10_WND_SIZE_X, TOP10_WND_SIZE_Y,
2527
		100, 100,
-
 
2528
		0, 0,
2460
		0, 0,
2529
		0x34, 0,
2461
		0, 0x2040A0,
2530
		0, 0,
-
 
2531
		Top10WndTitle
-
 
2532
		);
-
 
2533
	//
2462
		0x2040A0
2534
	if (process_info.processInfo.window_state & 0x06)
2463
		);
2535
		return;
2464
	//
2536
	/*
2465
	kos_WriteTextToWindow(
2537
	kos_WriteTextToWindow(
2466
		4, 4,
2538
		4, 4,
2467
		0x0, 0x42D2E2,
2539
		0x0, 0x42D2E2,
-
 
2540
		Top10WndTitle,
2468
		Top10WndTitle,
2541
		sizeof( Top10WndTitle ) - 1
2469
		sizeof( Top10WndTitle ) - 1
2542
		);
2470
		);
2543
		*/
2471
	//
2544
	//
2472
	for ( i = 0; i < TOP_TBL_SIZE; i++ )
2545
	for ( i = 0; i < TOP_TBL_SIZE; i++ )
2473
	{
2546
	{
2474
		//
2547
		//
2475
		kos_WriteTextToWindow(
2548
		kos_WriteTextToWindow(
2476
			6, wndYOffset + 2 + (i * 10),
2549
			6-1, 2 + (i * 10),
2477
			0x0, enterName != i ? 0xFFFFFF : 0x00FF00,
2550
			0x0, enterName != i ? 0xFFFFFF : 0x00FF00,
2478
			heroTbl[i].name,
2551
			heroTbl[i].name,
2479
			sizeof( heroTbl[0].name )
2552
			sizeof( heroTbl[0].name )
2480
			);
2553
			);
2481
		//
2554
		//
2482
		kos_DisplayNumberToWindow(
2555
		kos_DisplayNumberToWindow(
2483
			heroTbl[i].score,
2556
			heroTbl[i].score,
2484
			8,
2557
			8,
2485
			112, wndYOffset + 2 + (i * 10),
2558
			112-1, 2 + (i * 10),
2486
			0xFFFF55,
2559
			0xFFFF55,
2487
			nbDecimal,
2560
			nbDecimal,
2488
			false
2561
			false
2489
			);
2562
			);
2490
	}
2563
	}
2491
	//
2564
	//
2492
	kos_WriteTextToWindow(
2565
	kos_WriteTextToWindow(
2493
		6, wndYOffset + 6 + (i * 10),
2566
		6-1, 6 + (i * 10),
2494
		0x10, 0x1060D0,
2567
		0x10, 0x1060D0,
2495
		enterName >= 0 ? top10str1 : top10str2,
2568
		enterName >= 0 ? top10str1 : top10str2,