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, |