forked from KolibriOS/kolibrios
rforces 0.2: fixed a lot of bugs
git-svn-id: svn://kolibrios.org@7494 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
98a4aa1070
commit
897cb727bb
@ -1,4 +1,7 @@
|
|||||||
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl" /c /O2 /nologo /GS- /GR- /fp:fast rforces.cpp kosFile.cpp kosSyst.cpp mcsmemm.cpp
|
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
|
||||||
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\link" /nologo /manifest:no /entry:crtStartUp /subsystem:native /base:0 /fixed /align:16 /nodefaultlib rforces.obj kosFile.obj kosSyst.obj mcsmemm.obj
|
|
||||||
pe2kos rforces.exe rforces
|
@cl /c /O2 /nologo /GS- /GR- /fp:fast rforces.cpp kosFile.cpp kosSyst.cpp mcsmemm.cpp
|
||||||
|
@link /nologo /manifest:no /entry:crtStartUp /subsystem:native /base:0 /fixed /align:16 /nodefaultlib rforces.obj kosFile.obj kosSyst.obj mcsmemm.obj
|
||||||
|
@pe2kos rforces.exe rforces
|
||||||
|
@del rforces.exe
|
||||||
pause
|
pause
|
@ -367,7 +367,7 @@ void sprintf( char *Str, char* Format, ... )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция -1 завершения процесса
|
// function -1 termanate process
|
||||||
void kos_ExitApp()
|
void kos_ExitApp()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -386,7 +386,7 @@ void kos_ExitApp()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 0
|
// function 0
|
||||||
void kos_DefineAndDrawWindow(
|
void kos_DefineAndDrawWindow(
|
||||||
Word x, Word y,
|
Word x, Word y,
|
||||||
Word sizeX, Word sizeY,
|
Word sizeX, Word sizeY,
|
||||||
@ -417,7 +417,7 @@ void kos_DefineAndDrawWindow(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 1 поставить точку
|
// function 1
|
||||||
void kos_PutPixel( Dword x, Dword y, Dword colour )
|
void kos_PutPixel( Dword x, Dword y, Dword colour )
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@ -431,7 +431,7 @@ void kos_PutPixel( Dword x, Dword y, Dword colour )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 2 получить код нажатой клавиши
|
// function 2 get key code
|
||||||
bool kos_GetKey( Byte &keyCode )
|
bool kos_GetKey( Byte &keyCode )
|
||||||
{
|
{
|
||||||
Dword result;
|
Dword result;
|
||||||
@ -449,7 +449,7 @@ bool kos_GetKey( Byte &keyCode )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 3 получить время
|
// function 3 get system clock
|
||||||
Dword kos_GetSystemClock()
|
Dword kos_GetSystemClock()
|
||||||
{
|
{
|
||||||
// Dword result;
|
// Dword result;
|
||||||
@ -465,7 +465,7 @@ Dword kos_GetSystemClock()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 4
|
// function 4
|
||||||
void kos_WriteTextToWindow(
|
void kos_WriteTextToWindow(
|
||||||
Word x,
|
Word x,
|
||||||
Word y,
|
Word y,
|
||||||
@ -491,8 +491,31 @@ void kos_WriteTextToWindow(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// function 4
|
||||||
|
void kos_WriteTextWithBg(
|
||||||
|
Word x,
|
||||||
|
Word y,
|
||||||
|
Byte fontType,
|
||||||
|
Dword textColour,
|
||||||
|
Dword bgcolour,
|
||||||
|
char *textPtr,
|
||||||
|
Dword textLen
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Dword arg1, arg2;
|
||||||
|
|
||||||
// функция 5 пауза, в сотых долях секунды
|
//
|
||||||
|
arg1 = ( x << 16 ) | y;
|
||||||
|
arg2 = ( fontType << 24 ) | textColour;
|
||||||
|
//
|
||||||
|
__asm{
|
||||||
|
mov edi, bgcolour
|
||||||
|
}
|
||||||
|
kos_WriteTextToWindow(x,y,fontType,textColour,textPtr,textLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// function 5 pause, in value is 1/100 of second
|
||||||
void kos_Pause( Dword value )
|
void kos_Pause( Dword value )
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@ -504,7 +527,7 @@ void kos_Pause( Dword value )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 7 нарисовать изображение
|
// function 7
|
||||||
void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y )
|
void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y )
|
||||||
{
|
{
|
||||||
Dword arg1, arg2;
|
Dword arg1, arg2;
|
||||||
@ -524,7 +547,7 @@ void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y )
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// функция 8 определить кнопку
|
// function 8
|
||||||
void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour )
|
void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour )
|
||||||
{
|
{
|
||||||
Dword arg1, arg2;
|
Dword arg1, arg2;
|
||||||
@ -544,7 +567,7 @@ void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, D
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 9 - информация о процессе
|
// function 9 get process info
|
||||||
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
|
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
|
||||||
{
|
{
|
||||||
// Dword result;
|
// Dword result;
|
||||||
@ -562,7 +585,7 @@ Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 10
|
// function 10
|
||||||
Dword kos_WaitForEvent()
|
Dword kos_WaitForEvent()
|
||||||
{
|
{
|
||||||
// Dword result;
|
// Dword result;
|
||||||
@ -577,7 +600,7 @@ Dword kos_WaitForEvent()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 11
|
// function 11
|
||||||
Dword kos_CheckForEvent()
|
Dword kos_CheckForEvent()
|
||||||
{
|
{
|
||||||
// Dword result;
|
// Dword result;
|
||||||
@ -592,7 +615,7 @@ Dword kos_CheckForEvent()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 12
|
// function 12
|
||||||
void kos_WindowRedrawStatus( Dword status )
|
void kos_WindowRedrawStatus( Dword status )
|
||||||
{
|
{
|
||||||
__asm{
|
__asm{
|
||||||
@ -603,7 +626,7 @@ void kos_WindowRedrawStatus( Dword status )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 13 нарисовать полосу
|
// function 13 draw filled area
|
||||||
void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour )
|
void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour )
|
||||||
{
|
{
|
||||||
Dword arg1, arg2;
|
Dword arg1, arg2;
|
||||||
@ -622,7 +645,7 @@ void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 17
|
// function 17
|
||||||
bool kos_GetButtonID( Dword &buttonID )
|
bool kos_GetButtonID( Dword &buttonID )
|
||||||
{
|
{
|
||||||
Dword result;
|
Dword result;
|
||||||
@ -640,7 +663,7 @@ bool kos_GetButtonID( Dword &buttonID )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 23
|
// function 23
|
||||||
Dword kos_WaitForEvent( Dword timeOut )
|
Dword kos_WaitForEvent( Dword timeOut )
|
||||||
{
|
{
|
||||||
// Dword result;
|
// Dword result;
|
||||||
@ -655,7 +678,7 @@ Dword kos_WaitForEvent( Dword timeOut )
|
|||||||
// return result;
|
// return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 26.9 получить значение счётчика времени
|
// function 26.9 ïîëó÷èòü çíà÷åíèå ñ÷¸ò÷èêà âðåìåíè
|
||||||
Dword kos_GetTime()
|
Dword kos_GetTime()
|
||||||
{
|
{
|
||||||
__asm{
|
__asm{
|
||||||
@ -665,7 +688,7 @@ Dword kos_GetTime()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 37 получение информации о состоянии "мыши"
|
// function 37 ïîëó÷åíèå èíôîðìàöèè î ñîñòîÿíèè "ìûøè"
|
||||||
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY )
|
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY )
|
||||||
{
|
{
|
||||||
Dword mB;
|
Dword mB;
|
||||||
@ -694,7 +717,7 @@ void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY )
|
|||||||
cursorY = curY - sPI.processInfo.y_start;
|
cursorY = curY - sPI.processInfo.y_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 37.1 получение координат "мыши" относительно окна
|
// function 37.1 ïîëó÷åíèå êîîðäèíàò "ìûøè" îòíîñèòåëüíî îêíà
|
||||||
void kos_GetMouseWindowXY( int & cursorX, int & cursorY )
|
void kos_GetMouseWindowXY( int & cursorX, int & cursorY )
|
||||||
{
|
{
|
||||||
Word curX;
|
Word curX;
|
||||||
@ -717,7 +740,7 @@ void kos_GetMouseWindowXY( int & cursorX, int & cursorY )
|
|||||||
cursorY = curY;
|
cursorY = curY;
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 37.2 получение информации о нажатых кнопки "мыши"
|
// function 37.2 ïîëó÷åíèå èíôîðìàöèè î íàæàòûõ êíîïêè "ìûøè"
|
||||||
void kos_GetMouseButtonsState( Dword & buttons )
|
void kos_GetMouseButtonsState( Dword & buttons )
|
||||||
{
|
{
|
||||||
Dword mB;
|
Dword mB;
|
||||||
@ -732,7 +755,7 @@ void kos_GetMouseButtonsState( Dword & buttons )
|
|||||||
buttons = mB;
|
buttons = mB;
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 37.4 загрузка курсора "мыши"
|
// function 37.4 çàãðóçêà êóðñîðà "ìûøè"
|
||||||
Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate )
|
Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate )
|
||||||
{
|
{
|
||||||
//Dword handle;
|
//Dword handle;
|
||||||
@ -747,7 +770,7 @@ Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate )
|
|||||||
//return handle;
|
//return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 37.5 установка курсора "мыши"
|
// function 37.5 óñòàíîâêà êóðñîðà "ìûøè"
|
||||||
Dword * kos_SetMouseCursor( Dword * handle )
|
Dword * kos_SetMouseCursor( Dword * handle )
|
||||||
{
|
{
|
||||||
//Dword handle;
|
//Dword handle;
|
||||||
@ -761,7 +784,7 @@ Dword * kos_SetMouseCursor( Dword * handle )
|
|||||||
//return handle;
|
//return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 37.6 удаление курсора "мыши"
|
// function 37.6 óäàëåíèå êóðñîðà "ìûøè"
|
||||||
void kos_DeleteMouseCursor( Dword * handle )
|
void kos_DeleteMouseCursor( Dword * handle )
|
||||||
{
|
{
|
||||||
__asm{
|
__asm{
|
||||||
@ -772,7 +795,7 @@ void kos_DeleteMouseCursor( Dword * handle )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 38 нарисовать полосу
|
// function 38
|
||||||
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour )
|
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour )
|
||||||
{
|
{
|
||||||
Dword arg1, arg2;
|
Dword arg1, arg2;
|
||||||
@ -791,7 +814,7 @@ void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 40 установить маску событий
|
// function 40
|
||||||
void kos_SetMaskForEvents( Dword mask )
|
void kos_SetMaskForEvents( Dword mask )
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@ -803,7 +826,7 @@ void kos_SetMaskForEvents( Dword mask )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 47 вывести в окно приложения число
|
// function 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî
|
||||||
void kos_DisplayNumberToWindow(
|
void kos_DisplayNumberToWindow(
|
||||||
Dword value,
|
Dword value,
|
||||||
Dword digitsNum,
|
Dword digitsNum,
|
||||||
@ -832,7 +855,7 @@ void kos_DisplayNumberToWindow(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 47 вывести в окно приложения число c фоном
|
// function 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî c ôîíîì
|
||||||
void kos_DisplayNumberToWindowBg(
|
void kos_DisplayNumberToWindowBg(
|
||||||
Dword value,
|
Dword value,
|
||||||
Dword digitsNum,
|
Dword digitsNum,
|
||||||
@ -874,7 +897,7 @@ Dword kos_GetSkinHeight()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция 70 доступ к файловой системе
|
// function 70 äîñòóï ê ôàéëîâîé ñèñòåìå
|
||||||
Dword kos_FileSystemAccess( kosFileInfo *fileInfo )
|
Dword kos_FileSystemAccess( kosFileInfo *fileInfo )
|
||||||
{
|
{
|
||||||
// Dword result;
|
// Dword result;
|
||||||
@ -891,7 +914,7 @@ Dword kos_FileSystemAccess( kosFileInfo *fileInfo )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 63 вывод символя в окно отладки
|
// function 63 âûâîä ñèìâîëÿ â îêíî îòëàäêè
|
||||||
void kos_DebugOutChar( char ccc )
|
void kos_DebugOutChar( char ccc )
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@ -904,7 +927,7 @@ void kos_DebugOutChar( char ccc )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 66 режим получения данных от клавиатуры
|
// function 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
|
||||||
void kos_SetKeyboardDataMode( Dword mode )
|
void kos_SetKeyboardDataMode( Dword mode )
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@ -930,8 +953,21 @@ void rtlDebugOutString( char *str )
|
|||||||
kos_DebugOutChar( 10 );
|
kos_DebugOutChar( 10 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void kos_DebugNumber(signed int n)
|
||||||
|
{
|
||||||
|
if (n<0) {
|
||||||
|
kos_DebugOutChar('-');
|
||||||
|
n = -n;
|
||||||
|
}
|
||||||
|
while (n>10) {
|
||||||
|
kos_DebugOutChar(n%10 + '0');
|
||||||
|
n /= 10;
|
||||||
|
}
|
||||||
|
kos_DebugOutChar(n + '0');
|
||||||
|
kos_DebugOutChar('\n');
|
||||||
|
}
|
||||||
|
|
||||||
// функция 64 изменение количества памяти, выделенной для программы
|
// function 64 èçìåíåíèå êîëè÷åñòâà ïàìÿòè, âûäåëåííîé äëÿ ïðîãðàììû
|
||||||
bool kos_ApplicationMemoryResize( Dword targetSize )
|
bool kos_ApplicationMemoryResize( Dword targetSize )
|
||||||
{
|
{
|
||||||
Dword result;
|
Dword result;
|
||||||
@ -949,7 +985,8 @@ bool kos_ApplicationMemoryResize( Dword targetSize )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// функция 67 изменить параметры окна, параметр == -1 не меняется
|
// function 67 change window size and position,
|
||||||
|
// if param == -1 then value does not change
|
||||||
void kos_ChangeWindow( Dword x, Dword y, Dword sizeX, Dword sizeY )
|
void kos_ChangeWindow( Dword x, Dword y, Dword sizeX, Dword sizeY )
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -136,9 +136,9 @@ void memset( Byte *dst, Byte filler, Dword count );
|
|||||||
void sprintf( char *Str, char* Format, ... );
|
void sprintf( char *Str, char* Format, ... );
|
||||||
//
|
//
|
||||||
Dword rtlInterlockedExchange( Dword *target, Dword value );
|
Dword rtlInterlockedExchange( Dword *target, Dword value );
|
||||||
// функция -1 завершения процесса
|
// function -1 завершения процесса
|
||||||
void kos_ExitApp();
|
void kos_ExitApp();
|
||||||
// функция 0
|
// function 0
|
||||||
void kos_DefineAndDrawWindow(
|
void kos_DefineAndDrawWindow(
|
||||||
Word x, Word y,
|
Word x, Word y,
|
||||||
Word sizeX, Word sizeY,
|
Word sizeX, Word sizeY,
|
||||||
@ -146,13 +146,13 @@ void kos_DefineAndDrawWindow(
|
|||||||
Byte headerType, Dword headerColour,
|
Byte headerType, Dword headerColour,
|
||||||
Dword borderColour
|
Dword borderColour
|
||||||
);
|
);
|
||||||
// функция 1 поставить точку
|
// function 1 поставить точку
|
||||||
void kos_PutPixel( Dword x, Dword y, Dword colour );
|
void kos_PutPixel( Dword x, Dword y, Dword colour );
|
||||||
// функция 2 получить код нажатой клавиши
|
// function 2 получить код нажатой клавиши
|
||||||
bool kos_GetKey( Byte &keyCode );
|
bool kos_GetKey( Byte &keyCode );
|
||||||
// функция 3 получить время
|
// function 3 получить время
|
||||||
Dword kos_GetSystemClock();
|
Dword kos_GetSystemClock();
|
||||||
// функция 4
|
// function 4
|
||||||
void kos_WriteTextToWindow(
|
void kos_WriteTextToWindow(
|
||||||
Word x, Word y,
|
Word x, Word y,
|
||||||
Byte fontType,
|
Byte fontType,
|
||||||
@ -160,27 +160,36 @@ void kos_WriteTextToWindow(
|
|||||||
char *textPtr,
|
char *textPtr,
|
||||||
Dword textLen
|
Dword textLen
|
||||||
);
|
);
|
||||||
// функция 7 нарисовать изображение
|
//
|
||||||
|
void kos_WriteTextWithBg(
|
||||||
|
Word x, Word y,
|
||||||
|
Byte fontType,
|
||||||
|
Dword textColour,
|
||||||
|
Dword bgcolour,
|
||||||
|
char *textPtr,
|
||||||
|
Dword textLen
|
||||||
|
);
|
||||||
|
// function 7 нарисовать изображение
|
||||||
void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y );
|
void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y );
|
||||||
// функция 8 определить кнопку
|
// function 8 определить кнопку
|
||||||
void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
|
void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
|
||||||
// функция 5 пауза, в сотых долях секунды
|
// function 5 пауза, в сотых долях секунды
|
||||||
void kos_Pause( Dword value );
|
void kos_Pause( Dword value );
|
||||||
// функция 9 информация о процессе
|
// function 9 информация о процессе
|
||||||
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
|
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
|
||||||
// функция 10
|
// function 10
|
||||||
Dword kos_WaitForEvent();
|
Dword kos_WaitForEvent();
|
||||||
// функция 11
|
// function 11
|
||||||
Dword kos_CheckForEvent();
|
Dword kos_CheckForEvent();
|
||||||
// функция 12
|
// function 12
|
||||||
void kos_WindowRedrawStatus( Dword status );
|
void kos_WindowRedrawStatus( Dword status );
|
||||||
// функция 13 нарисовать прямоугольник
|
// function 13 нарисовать прямоугольник
|
||||||
void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour );
|
void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour );
|
||||||
// функция 17
|
// function 17
|
||||||
bool kos_GetButtonID( Dword &buttonID );
|
bool kos_GetButtonID( Dword &buttonID );
|
||||||
// функция 23
|
// function 23
|
||||||
Dword kos_WaitForEvent( Dword timeOut );
|
Dword kos_WaitForEvent( Dword timeOut );
|
||||||
// функция 26.9 получить значение счётчика времени
|
// function 26.9 получить значение счётчика времени
|
||||||
Dword kos_GetTime();
|
Dword kos_GetTime();
|
||||||
//
|
//
|
||||||
enum eNumberBase
|
enum eNumberBase
|
||||||
@ -189,23 +198,23 @@ enum eNumberBase
|
|||||||
nbHex,
|
nbHex,
|
||||||
nbBin
|
nbBin
|
||||||
};
|
};
|
||||||
// функция 37 получение информации о состоянии "мыши"
|
// function 37 получение информации о состоянии "мыши"
|
||||||
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY );
|
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY );
|
||||||
// функция 37.1 получение координат "мыши" относительно окна
|
// function 37.1 получение координат "мыши" относительно окна
|
||||||
void kos_GetMouseWindowXY( int & cursorX, int & cursorY );
|
void kos_GetMouseWindowXY( int & cursorX, int & cursorY );
|
||||||
// функция 37.2 получение информации о нажатых кнопки "мыши"
|
// function 37.2 получение информации о нажатых кнопки "мыши"
|
||||||
void kos_GetMouseButtonsState( Dword & buttons );
|
void kos_GetMouseButtonsState( Dword & buttons );
|
||||||
// функция 37.4 загрузка курсора "мыши"
|
// function 37.4 загрузка курсора "мыши"
|
||||||
Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate );
|
Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate );
|
||||||
// функция 37.5 установка курсора "мыши"
|
// function 37.5 установка курсора "мыши"
|
||||||
Dword * kos_SetMouseCursor( Dword * handle );
|
Dword * kos_SetMouseCursor( Dword * handle );
|
||||||
// функция 37.6 удаление курсора "мыши"
|
// function 37.6 удаление курсора "мыши"
|
||||||
void kos_DeleteMouseCursor( Dword * handle );
|
void kos_DeleteMouseCursor( Dword * handle );
|
||||||
// функция 38 нарисовать полосу
|
// function 38 нарисовать полосу
|
||||||
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour );
|
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour );
|
||||||
// функция 40 установить маску событий
|
// function 40 установить маску событий
|
||||||
void kos_SetMaskForEvents( Dword mask );
|
void kos_SetMaskForEvents( Dword mask );
|
||||||
// функция 47 вывести в окно приложения число
|
// function 47 вывести в окно приложения число
|
||||||
void kos_DisplayNumberToWindow(
|
void kos_DisplayNumberToWindow(
|
||||||
Dword value,
|
Dword value,
|
||||||
Dword digitsNum,
|
Dword digitsNum,
|
||||||
@ -215,7 +224,7 @@ void kos_DisplayNumberToWindow(
|
|||||||
eNumberBase nBase = nbDecimal,
|
eNumberBase nBase = nbDecimal,
|
||||||
bool valueIsPointer = false
|
bool valueIsPointer = false
|
||||||
);
|
);
|
||||||
// функция 47 вывести в окно приложения число c фоном
|
// function 47 вывести в окно приложения число c фоном
|
||||||
void kos_DisplayNumberToWindowBg(
|
void kos_DisplayNumberToWindowBg(
|
||||||
Dword value,
|
Dword value,
|
||||||
Dword digitsNum,
|
Dword digitsNum,
|
||||||
@ -226,19 +235,22 @@ void kos_DisplayNumberToWindowBg(
|
|||||||
eNumberBase nBase = nbDecimal,
|
eNumberBase nBase = nbDecimal,
|
||||||
bool valueIsPointer = false
|
bool valueIsPointer = false
|
||||||
);
|
);
|
||||||
// 48.4 get windows title bar height
|
// function 48.4 get windows title bar height
|
||||||
Dword kos_GetSkinHeight();
|
Dword kos_GetSkinHeight();
|
||||||
// функция 58 доступ к файловой системе
|
// function 58 доступ к файловой системе
|
||||||
Dword kos_FileSystemAccess( kosFileInfo *fileInfo );
|
Dword kos_FileSystemAccess( kosFileInfo *fileInfo );
|
||||||
// функция 63
|
// function 63
|
||||||
void kos_DebugOutChar( char ccc );
|
void kos_DebugOutChar( char ccc );
|
||||||
//
|
//
|
||||||
void rtlDebugOutString( char *str );
|
void rtlDebugOutString( char *str );
|
||||||
// функция 64 изменить параметры окна, параметр == -1 не меняется
|
//
|
||||||
|
void kos_DebugNumber(signed int n);
|
||||||
|
//
|
||||||
|
// function 64 изменить параметры окна, параметр == -1 не меняется
|
||||||
void kos_ChangeWindow( Dword x, Dword y, Dword sizeX, Dword sizeY );
|
void kos_ChangeWindow( Dword x, Dword y, Dword sizeX, Dword sizeY );
|
||||||
// функция 67 изменение количества памяти, выделенной для программы
|
// function 67 изменение количества памяти, выделенной для программы
|
||||||
bool kos_ApplicationMemoryResize( Dword targetSize );
|
bool kos_ApplicationMemoryResize( Dword targetSize );
|
||||||
// функция 66 режим получения данных от клавиатуры
|
// function 66 режим получения данных от клавиатуры
|
||||||
void kos_SetKeyboardDataMode( Dword mode );
|
void kos_SetKeyboardDataMode( Dword mode );
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#define WHITE 0x00FFFFFF
|
#define WHITE 0x00FFFFFF
|
||||||
|
|
||||||
// Visual properties
|
// Visual properties
|
||||||
#define GAME_NAME "Rocket Forces v1.12 (F2 - new game, Esc - exit) "
|
#define GAME_NAME "Rocket Forces"
|
||||||
#define BG_COLOR BLACK
|
#define BG_COLOR BLACK
|
||||||
#define TEXT_COLOR WHITE
|
#define TEXT_COLOR WHITE
|
||||||
#define CUR_COLOR GREEN
|
#define CUR_COLOR GREEN
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
/* Rocket Forces
|
/* Rocket Forces
|
||||||
* Filename: rforces.cpp
|
* Filename: rforces.cpp
|
||||||
* Version 0.1.1
|
* Version 0.1
|
||||||
* Copyright (c) Serial 2007
|
* Copyright (c) Serial 2007
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Version 0.2
|
||||||
|
* Copyright (c) Leency 2018
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
@ -26,6 +30,8 @@ cBuilding *house = new cBuilding();
|
|||||||
Dword *cur_handle;
|
Dword *cur_handle;
|
||||||
int score, health;
|
int score, health;
|
||||||
|
|
||||||
|
bool game_over;
|
||||||
|
|
||||||
struct MouseState
|
struct MouseState
|
||||||
{
|
{
|
||||||
int x, y, lbclick;
|
int x, y, lbclick;
|
||||||
@ -35,7 +41,6 @@ struct MouseState
|
|||||||
|
|
||||||
void kos_Main()
|
void kos_Main()
|
||||||
{
|
{
|
||||||
Dword btn_id;
|
|
||||||
Dword frame_start, frame_end;
|
Dword frame_start, frame_end;
|
||||||
OnStart();
|
OnStart();
|
||||||
Menu();
|
Menu();
|
||||||
@ -45,46 +50,45 @@ void kos_Main()
|
|||||||
frame_start = kos_GetTime();
|
frame_start = kos_GetTime();
|
||||||
switch (kos_CheckForEvent())
|
switch (kos_CheckForEvent())
|
||||||
{
|
{
|
||||||
case EM_WINDOW_REDRAW:
|
|
||||||
DrawWindow();
|
|
||||||
break;
|
|
||||||
case EM_KEY_PRESS:
|
case EM_KEY_PRESS:
|
||||||
Byte keyCode;
|
Byte keyCode;
|
||||||
kos_GetKey(keyCode);
|
kos_GetKey(keyCode);
|
||||||
if (keyCode == 27)
|
if (keyCode == 27)
|
||||||
{
|
{
|
||||||
OnExit();
|
kos_ExitApp();
|
||||||
}
|
}
|
||||||
if (keyCode == 51)
|
if (keyCode == 51)
|
||||||
{
|
{
|
||||||
OnStart();
|
OnStart();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EM_BUTTON_CLICK: // button pressed; we have only one button, close
|
case EM_BUTTON_CLICK:
|
||||||
|
Dword btn_id;
|
||||||
if (kos_GetButtonID(btn_id)) {
|
if (kos_GetButtonID(btn_id)) {
|
||||||
if (btn_id == 1) OnExit();
|
if (btn_id == 1) kos_ExitApp();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EM_MOUSE_EVENT: // ñîáûòèå îò ìûøè (íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè)
|
case EM_MOUSE_EVENT:
|
||||||
OnMouseMove();
|
OnMouseMove();
|
||||||
if (ms.lbclick == 1)
|
if (ms.lbclick == 1)
|
||||||
{
|
{
|
||||||
OnLMBClick();
|
OnLMBClick();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EM_WINDOW_REDRAW:
|
||||||
|
DrawWindow();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
|
if (game_over) break;
|
||||||
DrawBombs();
|
DrawBombs();
|
||||||
DrawRocketsAndCrosses();
|
DrawRocketsAndCrosses();
|
||||||
DrawExplodes();
|
DrawExplodes();
|
||||||
|
DrawStats();
|
||||||
frame_end = kos_GetTime();
|
frame_end = kos_GetTime();
|
||||||
if (frame_end - frame_start < FRAME_TIME)
|
if (frame_end - frame_start < FRAME_TIME) {
|
||||||
{
|
|
||||||
kos_Pause(FRAME_TIME - (frame_end - frame_start));
|
kos_Pause(FRAME_TIME - (frame_end - frame_start));
|
||||||
}
|
}
|
||||||
if (health <= 0)
|
if (health <= 0) GameOver();
|
||||||
{
|
|
||||||
OnExit();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,10 +96,13 @@ void kos_Main()
|
|||||||
void DrawWindow()
|
void DrawWindow()
|
||||||
{
|
{
|
||||||
kos_WindowRedrawStatus(1);
|
kos_WindowRedrawStatus(1);
|
||||||
kos_DefineAndDrawWindow(10, 40, WINDOW_WIDTH + 8, WINDOW_HEIGHT + kos_GetSkinHeight() + 12, 0x34, BG_COLOR, 0, 0, (Dword)header);
|
kos_DefineAndDrawWindow(10, 40, WINDOW_WIDTH + 12,
|
||||||
|
WINDOW_HEIGHT + kos_GetSkinHeight() + 12, 0x34,
|
||||||
|
BG_COLOR, 0, 0, (Dword)header);
|
||||||
kos_WindowRedrawStatus(2);
|
kos_WindowRedrawStatus(2);
|
||||||
|
|
||||||
OnMouseMove();
|
DrawStats();
|
||||||
|
if (health <= 0) GameOver();
|
||||||
|
|
||||||
// Draw buildings
|
// Draw buildings
|
||||||
for (int i = 20; i < 5 * 50; i += 50)
|
for (int i = 20; i < 5 * 50; i += 50)
|
||||||
@ -213,6 +220,12 @@ void OnMouseMove()
|
|||||||
Dword old_buttons = ms.buttons;
|
Dword old_buttons = ms.buttons;
|
||||||
kos_GetMouseWindowXY(ms.x, ms.y);
|
kos_GetMouseWindowXY(ms.x, ms.y);
|
||||||
kos_GetMouseButtonsState(ms.buttons);
|
kos_GetMouseButtonsState(ms.buttons);
|
||||||
|
|
||||||
|
if (health <= 0) return;
|
||||||
|
|
||||||
|
//restore mouse cursor when it over Window Header
|
||||||
|
if (ms.y > 5000) RestoreSystemCursor(); else SetGameCursor();
|
||||||
|
|
||||||
if ((old_buttons & 0x00000001) == 0 && (ms.buttons & 0x00000001) == 1)
|
if ((old_buttons & 0x00000001) == 0 && (ms.buttons & 0x00000001) == 1)
|
||||||
{
|
{
|
||||||
ms.lbclick = 1;
|
ms.lbclick = 1;
|
||||||
@ -222,13 +235,6 @@ void OnMouseMove()
|
|||||||
ms.lbclick = 0;
|
ms.lbclick = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
kos_DrawBar(8, 10, 6*11, 22, 0);
|
|
||||||
kos_WriteTextToWindow(8, 10, 0, TEXT_COLOR, "Population: %", 16);
|
|
||||||
kos_WriteTextToWindow(8, 22, 0, TEXT_COLOR, "Score:", 6);
|
|
||||||
|
|
||||||
kos_DisplayNumberToWindowBg(health, 3, 79, 10, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
|
||||||
kos_DisplayNumberToWindowBg(score, 4, 49, 22, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
|
||||||
|
|
||||||
if (ms.x >= 0 && ms.x < WINDOW_WIDTH && ms.y >= 0 && ms.y < WINDOW_HEIGHT)
|
if (ms.x >= 0 && ms.x < WINDOW_WIDTH && ms.y >= 0 && ms.y < WINDOW_HEIGHT)
|
||||||
{
|
{
|
||||||
gun->DrawAngle(ms.x, ms.y, G_COLOR);
|
gun->DrawAngle(ms.x, ms.y, G_COLOR);
|
||||||
@ -245,7 +251,15 @@ void OnMouseMove()
|
|||||||
kos_DisplayNumberToWindowBg(ms.y, 3, WINDOW_WIDTH - 30, 22, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
kos_DisplayNumberToWindowBg(ms.y, 3, WINDOW_WIDTH - 30, 22, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
||||||
kos_DisplayNumberToWindowBg(ms.buttons, 1, WINDOW_WIDTH - 30, 34, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
kos_DisplayNumberToWindowBg(ms.buttons, 1, WINDOW_WIDTH - 30, 34, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
||||||
}*/
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawStats()
|
||||||
|
{
|
||||||
|
kos_WriteTextWithBg(8, 10, 0xC0, TEXT_COLOR, 0, "Population:", 11);
|
||||||
|
kos_WriteTextWithBg(8+15*6, 9, 0xC0, TEXT_COLOR, 0, "%", 1);
|
||||||
|
kos_WriteTextWithBg(8, 22, 0xC0, TEXT_COLOR, 0, "Score:", 6);
|
||||||
|
kos_DisplayNumberToWindowBg(health, 3, 79, 10, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
||||||
|
kos_DisplayNumberToWindowBg(score, 4, 49, 22, TEXT_COLOR, BG_COLOR, nbDecimal, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnLMBClick()
|
void OnLMBClick()
|
||||||
@ -284,11 +298,7 @@ void OnLMBClick()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnRMBClick()
|
void SetGameCursor()
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void ChangeCursor()
|
|
||||||
{
|
{
|
||||||
Dword *cur = new Dword[1024];
|
Dword *cur = new Dword[1024];
|
||||||
for (int i = 0; i < 1024; i++)
|
for (int i = 0; i < 1024; i++)
|
||||||
@ -329,6 +339,12 @@ void ChangeCursor()
|
|||||||
kos_SetMouseCursor(cur_handle);
|
kos_SetMouseCursor(cur_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RestoreSystemCursor()
|
||||||
|
{
|
||||||
|
if (cur_handle) kos_SetMouseCursor(0);
|
||||||
|
cur_handle=0;
|
||||||
|
}
|
||||||
|
|
||||||
void Menu()
|
void Menu()
|
||||||
{
|
{
|
||||||
NewGame();
|
NewGame();
|
||||||
@ -345,7 +361,7 @@ void OnStart()
|
|||||||
{
|
{
|
||||||
cursor = new cCursor();
|
cursor = new cCursor();
|
||||||
}
|
}
|
||||||
ChangeCursor();
|
SetGameCursor();
|
||||||
|
|
||||||
gun->Enable((WINDOW_WIDTH / 2) - 10, WINDOW_HEIGHT - 30, 10, 20, (WINDOW_WIDTH / 2) - 5, WINDOW_HEIGHT - 20);
|
gun->Enable((WINDOW_WIDTH / 2) - 10, WINDOW_HEIGHT - 30, 10, 20, (WINDOW_WIDTH / 2) - 5, WINDOW_HEIGHT - 20);
|
||||||
|
|
||||||
@ -366,16 +382,21 @@ void OnStart()
|
|||||||
health = 100;
|
health = 100;
|
||||||
score = 0;
|
score = 0;
|
||||||
|
|
||||||
|
game_over = false;
|
||||||
|
|
||||||
rtlSrand(kos_GetTime());
|
rtlSrand(kos_GetTime());
|
||||||
|
|
||||||
DrawWindow();
|
DrawWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnExit()
|
void GameOver()
|
||||||
{
|
{
|
||||||
kos_WriteTextToWindow(WINDOW_WIDTH / 2 - 35, WINDOW_HEIGHT / 2 - 10, 0, TEXT_COLOR, "Game Over", 9);
|
int xcenter = WINDOW_WIDTH / 2;
|
||||||
|
int y = WINDOW_HEIGHT/ 2 - 40;
|
||||||
kos_Pause(150);
|
kos_WriteTextToWindow(xcenter-50, y, 0x81, TEXT_COLOR, "Game Over", 9);
|
||||||
|
kos_WriteTextToWindow(xcenter-43, y+36, 0x80, TEXT_COLOR, "[F2] - New game", 0);
|
||||||
kos_ExitApp();
|
kos_WriteTextToWindow(xcenter-43, y+53, 0x80, TEXT_COLOR, "[Ecs] - Exit", 0);
|
||||||
|
//
|
||||||
|
RestoreSystemCursor();
|
||||||
|
game_over = true;
|
||||||
}
|
}
|
||||||
|
@ -10,10 +10,11 @@ void DrawBombs();
|
|||||||
void DrawRocketsAndCrosses();
|
void DrawRocketsAndCrosses();
|
||||||
void DrawExplodes();
|
void DrawExplodes();
|
||||||
void OnMouseMove();
|
void OnMouseMove();
|
||||||
|
void DrawStats();
|
||||||
void OnLMBClick();
|
void OnLMBClick();
|
||||||
void OnRMBClick();
|
void SetGameCursor();
|
||||||
void ChangeCursor();
|
void RestoreSystemCursor();
|
||||||
void Menu();
|
void Menu();
|
||||||
void NewGame();
|
void NewGame();
|
||||||
void OnStart();
|
void OnStart();
|
||||||
void OnExit();
|
void GameOver();
|
||||||
|
Loading…
Reference in New Issue
Block a user