forked from KolibriOS/kolibrios
212 lines
3.8 KiB
C++
212 lines
3.8 KiB
C++
|
#include "kosSyst.h"
|
|||
|
#include "KosFile.h"
|
|||
|
#include "gfxdef.h"
|
|||
|
#include "mainWnd.h"
|
|||
|
#include "lang.h"
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
RGB bmPMButton[] = {
|
|||
|
0xCCCCCC, 0xCCCCCC, 0x000000, 0x000000, 0xCCCCCC, 0xCCCCCC,
|
|||
|
0xCCCCCC, 0xCCCCCC, 0x000000, 0x000000, 0xCCCCCC, 0xCCCCCC,
|
|||
|
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
|
|||
|
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
|
|||
|
0xCCCCCC, 0xCCCCCC, 0x000000, 0x000000, 0xCCCCCC, 0xCCCCCC,
|
|||
|
0xCCCCCC, 0xCCCCCC, 0x000000, 0x000000, 0xCCCCCC, 0xCCCCCC,
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
#if LANG == RUS
|
|||
|
char mainWndTitle[] = "PHARAON's CRYPT";
|
|||
|
char mainWndCopyright[] = "(C) MMVI by Rabid Rabbit";
|
|||
|
char mainWndMenuStart[] = "1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
|||
|
char mainWndMenuExit[] = "2. <20><>室";
|
|||
|
char mainWndMenuLevel[] = "<EFBFBD><EFBFBD>砫<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD> - %U";
|
|||
|
#else
|
|||
|
char mainWndTitle[] = "PHARAON's CRYPT";
|
|||
|
char mainWndCopyright[] = "(C) MMVI by Rabid Rabbit";
|
|||
|
char mainWndMenuStart[] = "1. Start game";
|
|||
|
char mainWndMenuExit[] = "2. Exit";
|
|||
|
char mainWndMenuLevel[] = "Starting level - %U";
|
|||
|
#endif
|
|||
|
//
|
|||
|
CKosBitmap mainWndFace;
|
|||
|
//
|
|||
|
Word mcx, mcy;
|
|||
|
|
|||
|
#define BT_SIZE_X_MINUS 4
|
|||
|
#define BT_SIZE_X_PLUS 5
|
|||
|
|
|||
|
//
|
|||
|
int MainWndLoop()
|
|||
|
{
|
|||
|
Byte keyCode;
|
|||
|
Dword buttonID;
|
|||
|
int result;
|
|||
|
static bool firstTime = true;
|
|||
|
|
|||
|
//
|
|||
|
startGameLevel = maxGameLevel;
|
|||
|
//
|
|||
|
if ( firstTime )
|
|||
|
{
|
|||
|
//
|
|||
|
mainWndFace.GetSize( mcx, mcy );
|
|||
|
//
|
|||
|
firstTime = false;
|
|||
|
//
|
|||
|
DrawMainWindow();
|
|||
|
}
|
|||
|
//
|
|||
|
kos_ChangeWindow( -1, -1, mcx + 1, mcy + 21 );
|
|||
|
//
|
|||
|
for ( result = MW_NONE; result == MW_NONE; )
|
|||
|
{
|
|||
|
switch( kos_WaitForEvent() )
|
|||
|
{
|
|||
|
case 1:
|
|||
|
DrawMainWindow();
|
|||
|
break;
|
|||
|
|
|||
|
case 2:
|
|||
|
if ( kos_GetKey( keyCode ) )
|
|||
|
{
|
|||
|
//
|
|||
|
switch ( keyCode )
|
|||
|
{
|
|||
|
case '1':
|
|||
|
result = MW_START_GAME;
|
|||
|
break;
|
|||
|
|
|||
|
case '2':
|
|||
|
result = MW_EXIT_APP;
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 3:
|
|||
|
if ( kos_GetButtonID( buttonID ) )
|
|||
|
{
|
|||
|
//
|
|||
|
switch ( buttonID )
|
|||
|
{
|
|||
|
//
|
|||
|
case BT_SIZE_X_MINUS:
|
|||
|
if ( --startGameLevel < 1 )
|
|||
|
startGameLevel = 1;
|
|||
|
else
|
|||
|
DrawMainWindow();
|
|||
|
break;
|
|||
|
|
|||
|
//
|
|||
|
case BT_SIZE_X_PLUS:
|
|||
|
if ( ++startGameLevel > maxGameLevel )
|
|||
|
startGameLevel = maxGameLevel;
|
|||
|
else
|
|||
|
DrawMainWindow();
|
|||
|
break;
|
|||
|
|
|||
|
//
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
kos_DefineButton(
|
|||
|
0, 0,
|
|||
|
0, 0,
|
|||
|
BT_SIZE_X_MINUS + 0x80000000,
|
|||
|
0
|
|||
|
);
|
|||
|
//
|
|||
|
kos_DefineButton(
|
|||
|
0, 0,
|
|||
|
0, 0,
|
|||
|
BT_SIZE_X_PLUS + 0x80000000,
|
|||
|
0
|
|||
|
);
|
|||
|
//
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (1)
|
|||
|
void DrawMainWindow()
|
|||
|
{
|
|||
|
char line[64];
|
|||
|
|
|||
|
//
|
|||
|
kos_WindowRedrawStatus( WRS_BEGIN );
|
|||
|
// <20><><EFBFBD><EFBFBD>
|
|||
|
kos_DefineAndDrawWindow(
|
|||
|
WNDLEFT, WNDTOP,
|
|||
|
mcx + 1, mcy + 21,
|
|||
|
0, 0x0,
|
|||
|
0, WNDHEADCOLOUR,
|
|||
|
WNDHEADCOLOUR
|
|||
|
);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
kos_WriteTextToWindow(
|
|||
|
4, 7,
|
|||
|
0x10, WNDTITLECOLOUR,
|
|||
|
mainWndTitle, sizeof(mainWndTitle)-1
|
|||
|
);
|
|||
|
//
|
|||
|
mainWndFace.Draw( 1, 21 );
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
kos_WriteTextToWindow(
|
|||
|
8, 32,
|
|||
|
0, 0x0,
|
|||
|
mainWndMenuStart, sizeof(mainWndMenuStart)-1
|
|||
|
);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
kos_WriteTextToWindow(
|
|||
|
8, 48,
|
|||
|
0, 0x0,
|
|||
|
mainWndMenuExit, sizeof(mainWndMenuExit)-1
|
|||
|
);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sprintf( line, mainWndMenuLevel, startGameLevel);
|
|||
|
kos_WriteTextToWindow(
|
|||
|
8, 64,
|
|||
|
0, 0x0,
|
|||
|
line, strlen( line )
|
|||
|
);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
kos_DefineButton(
|
|||
|
mcx - 29, 64,
|
|||
|
12, 12,
|
|||
|
BT_SIZE_X_MINUS,
|
|||
|
0xCCCCCC
|
|||
|
);
|
|||
|
//
|
|||
|
kos_PutImage( bmPMButton + 12, 6, 2, mcx - 29 + 3, 69 );
|
|||
|
//
|
|||
|
kos_DefineButton(
|
|||
|
mcx - 16, 64,
|
|||
|
12, 12,
|
|||
|
BT_SIZE_X_PLUS,
|
|||
|
0xCCCCCC
|
|||
|
);
|
|||
|
//
|
|||
|
kos_PutImage( bmPMButton, 6, 6, mcx - 16 + 3, 67 );
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
kos_WriteTextToWindow(
|
|||
|
8, mcy - 16 + 21,
|
|||
|
0, 0x000066,
|
|||
|
mainWndCopyright, sizeof(mainWndCopyright)-1
|
|||
|
);
|
|||
|
//
|
|||
|
kos_WindowRedrawStatus( WRS_END );
|
|||
|
}
|