Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5821 → Rev 5822

/programs/games/xonix/trunk/kosSyst.cpp
392,7 → 392,7
Dword mainAreaColour,
Byte headerType,
Dword headerColour,
Dword borderColour
char *title
)
{
Dword arg1, arg2, arg3, arg4;
409,7 → 409,7
mov ecx, arg2
mov edx, arg3
mov esi, arg4
mov edi, borderColour
mov edi, title
int 0x40
}
}
726,6 → 726,17
}
 
 
// 48, 4 -- get skin height
Dword kos_GetSkinHeight()
{
__asm{
mov eax, 48
mov ebx, 4
int 0x40
}
}
 
 
// ôóíêöèÿ 70 äîñòóï ê ôàéëîâîé ñèñòåìå
Dword kos_FileSystemAccess( kosFileInfo *fileInfo )
{
816,7 → 827,18
}
 
 
// 71,1 set window caption
void kos_SetWindowCaption(char *caption)
{
__asm{
mov eax, 71
mov ebx, 1
mov ecx, caption
int 0x40
}
}
 
 
// âûçîâ àáñòðàêòíîãî ìåòîäà
int __cdecl _purecall()
{
/programs/games/xonix/trunk/kosSyst.h
86,6 → 86,12
Dword x_size;
Dword y_size;
Word slot_state;
Word reserved2;
Dword client_x;
Dword client_y;
Dword client_width;
Dword client_height;
Byte window_state;
} processInfo;
};
 
131,7 → 137,7
Word sizeX, Word sizeY,
Byte mainAreaType, Dword mainAreaColour,
Byte headerType, Dword headerColour,
Dword borderColour
char *title
);
// ôóíêöèÿ 1 ïîñòàâèòü òî÷êó
void kos_PutPixel( Dword x, Dword y, Dword colour );
188,6 → 194,8
eNumberBase nBase = nbDecimal,
bool valueIsPointer = false
);
// ôóíêöèÿ 48,4 get skin height
Dword kos_GetSkinHeight();
// ôóíêöèÿ 58 äîñòóï ê ôàéëîâîé ñèñòåìå
Dword kos_FileSystemAccess( kosFileInfo *fileInfo );
// ôóíêöèÿ 63
200,6 → 208,8
bool kos_ApplicationMemoryResize( Dword targetSize );
// ôóíêöèÿ 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
void kos_SetKeyboardDataMode( Dword mode );
// ôóíêöèÿ 71,1 set window caption
void kos_SetWindowCaption(char *caption);
 
//
void kos_Main();
/programs/games/xonix/trunk/main.cpp
189,11 → 189,11
 
#define blockSize 8
 
#define ENTRY_WND_SIZE_X 400
#define ENTRY_WND_SIZE_Y 144
#define ENTRY_CLIENT_SIZE_X (400 - 2)
#define ENTRY_CLIENT_SIZE_Y (144 - 2 - 20)
 
#define TOP10_WND_SIZE_X 176
#define TOP10_WND_SIZE_Y 144
#define TOP10_CLIENT_SIZE_X (176 - 2)
#define TOP10_CLIENT_SIZE_Y (144 - 2 - 20)
 
#define MAX_X_SIZE 96
#define MIN_X_SIZE 48
201,8 → 201,6
#define MIN_Y_SIZE 28
 
#define flipMapSize ((mapSizeX * mapSizeY) / 4)
#define wndXOffet 1
#define wndYOffset 22
#define freeSpaceCount ((mapSizeX - 4) * (mapSizeY - 4))
//
#define gmEmpty 0
378,11 → 376,15
///
hiScoreFile *top10Heroes = NULL;
 
sProcessInfo process_info;
 
// çàãîëîâîê ãëàâíîãî îêíà
char MainWindowTitle[] = "XONIX (C) MMVI by Rabid Rabbit";
char WindowTitle[128];
char Top10WndTitle[] = "Top 10";
#if LANG == RUS
char goWndTitle[] = "“஢¥­ì %U, § ¢¥à襭® %U%%, ¦¨§­¥©: %U, áçñâ: %U";
char goWndTitleSuperHero[] = "“஢¥­ì %U, § ¢¥à襭® %U%%, ¦¨§­¥©: %U, áçñâ: %U, á㯥ࣥன: %U%%";
char menuStr1[] = "1.  ç âì ¨£àã";
char menuStr2[] = "2. ‚ë室";
char menuStr3[] = "“¯à ¢«¥­¨¥: ‘’…‹Šˆ - ­ ¯à ¢«¥­¨¥ ¤¢¨¦¥­¨ï.";
394,6 → 396,7
char top10str2[] = "ESC - ¢ë室 ¢ ¬¥­î";
#else
char goWndTitle[] = "Level %U, completed %U%%, lives: %U, scores: %U";
char goWndTitle[] = "Level %U, completed %U%%, lives: %U, scores: %U, superhero: %U%%";
char menuStr1[] = "1. Start game";
char menuStr2[] = "2. Exit";
char menuStr3[] = "Control: ARROWS - direction of movement.";
412,8 → 415,8
//
Byte * worldMap = NULL;
//
int wndSizeX = ENTRY_WND_SIZE_X;
int wndSizeY = ENTRY_WND_SIZE_Y;
int wndSizeX = 0;
int wndSizeY = 0;
int mapSizeX = 64;
int mapSizeY = 32;
int loopDelay = DEFAULT_LOOP_DELAY;
907,6 → 910,7
&& rtlRand() > 0x80000000
&& lifeCount < 2
&& GetCompletePercents() > 75 )
{
//
bonus1Set = true;
1350,7 → 1354,7
int i, j;
 
//
kos_WindowRedrawStatus( 1 );
// kos_WindowRedrawStatus( 1 );
//
if ( drawTitle ) drawWndTitleGo();
//
1358,24 → 1362,16
//
for ( i = 0; i < j; i++ )
{
////
//kos_DrawBar(
// wndXOffet + ( ( ( mapDiffList[i].elPtr - worldMap ) % mapSizeX ) * blockSize ),
// wndYOffset + ( ( ( mapDiffList[i].elPtr - worldMap ) / mapSizeX ) * blockSize ),
// blockSize, blockSize,
// mapColours[mapDiffList[i].mapEl]
//);
//
kos_PutImage(
mapColours[mapDiffList[i].mapEl],
blockSize,
blockSize,
wndXOffet + ( ( ( mapDiffList[i].elPtr - worldMap ) % mapSizeX ) * blockSize ),
wndYOffset + ( ( ( mapDiffList[i].elPtr - worldMap ) / mapSizeX ) * blockSize )
( ( mapDiffList[i].elPtr - worldMap ) % mapSizeX ) * blockSize,
( ( mapDiffList[i].elPtr - worldMap ) / mapSizeX ) * blockSize
);
}
//
kos_WindowRedrawStatus( 2 );
// kos_WindowRedrawStatus( 2 );
//
mapDiffList.Clear();
}
1461,10 → 1457,10
scoreCount = 0;
enterName = -1;
//
wndSizeX = ((mapSizeX*blockSize)+2);
wndSizeY = ((mapSizeY*blockSize)+23);
wndSizeX = ((mapSizeX*blockSize) + 5*2);
wndSizeY = ((mapSizeY*blockSize) + kos_GetSkinHeight() + 5);
//
kos_ChangeWindow( -1, -1, wndSizeX, wndSizeY );
kos_ChangeWindow( -1, -1, wndSizeX-1, wndSizeY-1 );
}
 
//
1471,10 → 1467,11
void SetEntryVars()
{
//
wndSizeX = ENTRY_WND_SIZE_X;
wndSizeY = ENTRY_WND_SIZE_Y;
wndSizeX = ENTRY_CLIENT_SIZE_X + 5*2;
wndSizeY = ENTRY_CLIENT_SIZE_Y + kos_GetSkinHeight() + 5;
//
kos_ChangeWindow( -1, -1, wndSizeX, wndSizeY );
kos_SetWindowCaption(MainWindowTitle);
kos_ChangeWindow( -1, -1, wndSizeX-1, wndSizeY-1 );
kos_SetKeyboardDataMode( KM_SCANS );
}
 
1521,8 → 1518,10
while ( kos_CheckForEvent() == 2 ) kos_GetKey( keyCode );
//
kos_SetKeyboardDataMode( KM_CHARS );
 
kos_SetWindowCaption(Top10WndTitle);
//
kos_ChangeWindow( -1, -1, TOP10_WND_SIZE_X, TOP10_WND_SIZE_Y );
kos_ChangeWindow(-1, -1, TOP10_CLIENT_SIZE_X + 5 * 2 - 1, TOP10_CLIENT_SIZE_Y + kos_GetSkinHeight() + 5 - 1);
//
for ( i = 0; i < TOP_TBL_SIZE; i++ )
{
1559,6 → 1558,9
bool workOn = true;
char *cPtr;
 
wndSizeX = ENTRY_CLIENT_SIZE_X + 5 * 2;
wndSizeY = ENTRY_CLIENT_SIZE_Y + kos_GetSkinHeight() + 5;
 
// îòäåëÿåì èìÿ ìîäóëÿ îò ïóòè
cPtr = strrchr( kosExePath, '/' );
// ïðîâåðêà ;)
1565,7 → 1567,7
if ( cPtr == NULL )
{
//
rtlDebugOutString( "Invalid path to executable." );
rtlDebugOutString( "xonix: Invalid path to executable." );
//
return;
}
1606,7 → 1608,7
appState = appStateGo;
SetGameVars();
initWorldMap();
DrawAppWindow();
// DrawAppWindow();
break;
 
//
1645,14 → 1647,18
break;
//
case BT_LOOP_MINUS:
loopDelay++;;
loopDelay++;
if ( loopDelay > MAX_LOOP_DELAY ) loopDelay = MAX_LOOP_DELAY;
break;
//
case BT_LOOP_PLUS:
loopDelay--;;
loopDelay--;
if ( loopDelay < MIN_LOOP_DELAY ) loopDelay = MIN_LOOP_DELAY;
break;
case 1:
xonixFree();
workOn = false;
break;
//
default:
break;
1803,6 → 1809,14
break;
 
//
case 3:
kos_GetButtonID(buttonID);
if (buttonID == 1)
{
xonixFree();
workOn = false;
}
break;
default:
//
if ( MoveHero() )
1848,9 → 1862,7
break;
//
case 3:
if ( kos_GetButtonID( buttonID ) )
{
//
kos_GetButtonID(buttonID);
if ( buttonID == 1 )
{
//
1858,7 → 1870,6
SetUpTop10();
DrawAppWindow();
}
}
//
default:
break;
1930,6 → 1941,14
//
break;
//
case 3:
kos_GetButtonID(buttonID);
if (buttonID == 1)
{
xonixFree();
workOn = false;
}
break;
default:
break;
}
1951,7 → 1970,14
appState = appStateGo;
}
break;
 
case 3:
kos_GetButtonID(buttonID);
if (buttonID == 1)
{
xonixFree();
workOn = false;
}
break;
default:
break;
}
2021,16 → 2047,19
{
PRINTK pr;
char line[64];
 
//
kos_DefineAndDrawWindow(
100, 100,
wndSizeX, wndSizeY,
wndSizeX-1, wndSizeY-1,
0x34, 0,
0, 0,
0, 0x2040A0,
0x2040A0
MainWindowTitle
);
//
if (process_info.processInfo.window_state & 0x06)
return;
 
/*
kos_WriteTextToWindow(
4, 4,
0x10, 0x42D2E2,
2037,9 → 2066,10
MainWindowTitle,
sizeof( MainWindowTitle ) - 1
);
*/
//
kos_WriteTextToWindow(
8, 32,
8-1, 32-21,
0x10, 0x12FF12,
menuStr1,
sizeof( menuStr1 ) - 1
2046,7 → 2076,7
);
//
kos_WriteTextToWindow(
8, 48,
8-1, 48-21,
0x10, 0x12FF12,
menuStr2,
sizeof( menuStr2 ) - 1
2053,7 → 2083,7
);
//
kos_WriteTextToWindow(
8, 80,
8-1, 80-21,
0x10, 0xD0FF12,
menuStr3,
sizeof( menuStr3 ) - 1
2060,7 → 2090,7
);
//
kos_WriteTextToWindow(
8, 96,
8-1, 96-21,
0x10, 0xD0FF12,
menuStr4,
sizeof( menuStr4 ) - 1
2072,47 → 2102,55
sprintk( line, &pr );
//
kos_WriteTextToWindow(
8, 112,
8-1, 112-21,
0x10, 0x12C0D0,
line,
strlen( line )
);
// êíîïêè X
// xo oo
// oo
kos_DefineButton(
ENTRY_WND_SIZE_X - 58, 112,
12, 12,
ENTRY_CLIENT_SIZE_X - 62, 112-24,
13, 13,
BT_SIZE_X_MINUS,
0xCCCCCC
);
//
kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_WND_SIZE_X - 58 + 3, 117 );
kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_CLIENT_SIZE_X - (62-1) + 3, 117-23 );
//
// ox oo
// oo
kos_DefineButton(
ENTRY_WND_SIZE_X - 45, 112,
12, 12,
ENTRY_CLIENT_SIZE_X - 48, 112-24,
13, 13,
BT_SIZE_X_PLUS,
0xCCCCCC
);
//
kos_PutImage( bmPMButton, 6, 6, ENTRY_WND_SIZE_X - 45 + 3, 115 );
kos_PutImage( bmPMButton, 6, 6, ENTRY_CLIENT_SIZE_X - (48-1) + 3, 115-23 );
// êíîïêè Y
// oo xo
// oo
kos_DefineButton(
ENTRY_WND_SIZE_X - 29, 112,
12, 12,
ENTRY_CLIENT_SIZE_X - 31, 112-24,
13, 13,
BT_SIZE_Y_MINUS,
0xCCCCCC
);
//
kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_WND_SIZE_X - 29 + 3, 117 );
kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_CLIENT_SIZE_X - (31-1) + 3, 117-23 );
//
// oo ox
// oo
kos_DefineButton(
ENTRY_WND_SIZE_X - 16, 112,
12, 12,
ENTRY_CLIENT_SIZE_X - 17, 112-24,
13, 13,
BT_SIZE_Y_PLUS,
0xCCCCCC
);
//
kos_PutImage( bmPMButton, 6, 6, ENTRY_WND_SIZE_X - 16 + 3, 115 );
kos_PutImage( bmPMButton, 6, 6, ENTRY_CLIENT_SIZE_X - (17-1) + 3, 115-23 );
//
//çàäåðæêà â öèêëå âûáîðêè ñîîáùåíèé
pr.fmtline = mainLoopDelayStr;
2120,7 → 2158,7
sprintk( line, &pr );
//
kos_WriteTextToWindow(
8, 128,
8-1, 128-21,
0x10, 0x12C0D0,
line,
strlen( line )
2127,22 → 2165,22
);
//
kos_DefineButton(
ENTRY_WND_SIZE_X - 29, 128,
12, 12,
ENTRY_CLIENT_SIZE_X - 31, 128-23,
13, 13,
BT_LOOP_MINUS,
0xCCCCCC
);
//
kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_WND_SIZE_X - 29 + 3, 133 );
kos_PutImage( bmPMButton + 12, 6, 2, ENTRY_CLIENT_SIZE_X - (31-1) + 3, 133-22 );
//
kos_DefineButton(
ENTRY_WND_SIZE_X - 16, 128,
12, 12,
ENTRY_CLIENT_SIZE_X - 17, 128-23,
13, 13,
BT_LOOP_PLUS,
0xCCCCCC
);
//
kos_PutImage( bmPMButton, 6, 6, ENTRY_WND_SIZE_X - 16 + 3, 131 );
kos_PutImage( bmPMButton, 6, 6, ENTRY_CLIENT_SIZE_X - (17-1) + 3, 131-22 );
}
 
 
2149,8 → 2187,8
//
void DrawAppWindow()
{
//
kos_WindowRedrawStatus( 1 );
kos_ProcessInfo(&process_info, -1);
 
switch ( appState )
{
2167,6 → 2205,10
case appStateGo:
case appStateShowMap:
case appStatePause:
if (process_info.processInfo.window_state & 0x06)
{
appState = appStatePause;
}
drawWorldMap();
break;
//
2175,8 → 2217,8
drawWorldMap();
//
kos_DefineButton(
( wndSizeX / 2 ) - 64,
( wndSizeY / 2 ) - 16,
((wndSizeX - 10) / 2) - 64,
((wndSizeY - kos_GetSkinHeight() - 5) / 2) - 16,
128, 32,
1,
0x136793
2183,13 → 2225,12
);
//
kos_WriteTextToWindow(
( wndSizeX / 2 ) - ( sizeof( thatsAllStr ) * 4 ),
( wndSizeY / 2 ) - 4,
((wndSizeX - 10) / 2) - (sizeof(thatsAllStr)* 4),
((wndSizeY - kos_GetSkinHeight() - 5) / 2) - 4,
0x10, 0xFFFFFF,
thatsAllStr,
sizeof ( thatsAllStr ) - 1
);
 
//
break;
//
2313,10 → 2354,10
//
kos_DefineAndDrawWindow(
100, 100,
wndSizeX, wndSizeY,
wndSizeX-1, wndSizeY-1,
0x74, 0,
0, 0,
0, 0x2040A0,
0x2040A0
MainWindowTitle
);
//
drawWndTitleGo();
2342,23 → 2383,57
void drawWndTitleGo()
{
PRINTK pr;
char line[64];
static char prev_title[64] = {'\0'};
 
//
/*
kos_DrawBar(
1, 1,
wndSizeX - 2, 18,
0x2040A0
);
 
*/
//
pr.fmtline = goWndTitle;
//pr.fmtline = goWndTitle;
pr.args[0] = currentLevel;
pr.args[1] = GetCompletePercents();
pr.args[2] = lifeCount;
pr.args[3] = scoreCount;
sprintk( line, &pr );
 
if (bonus1Count > 0)
{
pr.args[4] = 100*bonus1Count/BONUS1_LIFETIME;
pr.fmtline = goWndTitleSuperHero;
}
else
{
pr.fmtline = goWndTitle;
}
sprintk(WindowTitle, &pr);
//
bool same = true;
for (int i = 0; i < 64; i++)
{
if (WindowTitle[i] != prev_title[i])
{
same = false;
break;
}
if ((WindowTitle[i] == '\0') || (prev_title[i] == '\0'))
{
break;
}
 
}
 
if (!same)
{
kos_SetWindowCaption(WindowTitle);
strcpy(prev_title, WindowTitle);
}
/*
kos_WriteTextToWindow(
4, 4,
0x10, 0x42D2E2,
2365,7 → 2440,9
line,
strlen( line )
);
*/
//
/*
if ( bonus1Count > 0 )
{
//
2380,8 → 2457,9
( bonus1Count * ( wndSizeX - 4 ) ) / BONUS1_LIFETIME, BONUS1_IND_HSIZE,
0x5720B0
);
}*/
}
}
 
//
void drawWorldMapForFlip()
2389,6 → 2467,8
int i, j;
Byte *mPtr = worldMap;
 
if (process_info.processInfo.window_state & 0x06)
return;
//
for ( i = 0; i < mapSizeY; i++ )
{
2395,20 → 2475,12
//
for ( j = 0; j < mapSizeX; j++ )
{
////
//kos_DrawBar(
// wndXOffet + ( j * blockSize ),
// wndYOffset + ( i * blockSize ),
// blockSize, blockSize,
// mapColours[*mPtr]
//);
//
kos_PutImage(
mapColours[*mPtr],
blockSize,
blockSize,
wndXOffet + ( j * blockSize ),
wndYOffset + ( i * blockSize )
j * blockSize,
i * blockSize
);
//
mPtr++;
2446,9 → 2518,6
 
 
//
char Top10WndTitle[] = "Top 10";
 
//
void DrawTop10Window()
{
int i;
2456,12 → 2525,15
//
kos_DefineAndDrawWindow(
100, 100,
TOP10_WND_SIZE_X, TOP10_WND_SIZE_Y,
0, 0,
0, 0x2040A0,
0x2040A0
0x34, 0,
0, 0,
Top10WndTitle
);
//
if (process_info.processInfo.window_state & 0x06)
return;
/*
kos_WriteTextToWindow(
4, 4,
0x0, 0x42D2E2,
2468,12 → 2540,13
Top10WndTitle,
sizeof( Top10WndTitle ) - 1
);
*/
//
for ( i = 0; i < TOP_TBL_SIZE; i++ )
{
//
kos_WriteTextToWindow(
6, wndYOffset + 2 + (i * 10),
6-1, 2 + (i * 10),
0x0, enterName != i ? 0xFFFFFF : 0x00FF00,
heroTbl[i].name,
sizeof( heroTbl[0].name )
2482,7 → 2555,7
kos_DisplayNumberToWindow(
heroTbl[i].score,
8,
112, wndYOffset + 2 + (i * 10),
112-1, 2 + (i * 10),
0xFFFF55,
nbDecimal,
false
2490,7 → 2563,7
}
//
kos_WriteTextToWindow(
6, wndYOffset + 6 + (i * 10),
6-1, 6 + (i * 10),
0x10, 0x1060D0,
enterName >= 0 ? top10str1 : top10str2,
enterName >= 0 ? sizeof(top10str1) - 1 : sizeof(top10str2) - 1