Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7493 → Rev 7494

/programs/games/rforces/trunk/cmp.bat
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
"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
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
 
@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
/programs/games/rforces/trunk/kosSyst.cpp
367,7 → 367,7
}
 
 
// ôóíêöèÿ -1 çàâåðøåíèÿ ïðîöåññà
// function -1 termanate process
void kos_ExitApp()
{
int i;
386,7 → 386,7
}
 
 
// ôóíêöèÿ 0
// function 0
void kos_DefineAndDrawWindow(
Word x, Word y,
Word sizeX, Word sizeY,
417,7 → 417,7
}
 
 
// ôóíêöèÿ 1 ïîñòàâèòü òî÷êó
// function 1
void kos_PutPixel( Dword x, Dword y, Dword colour )
{
//
431,7 → 431,7
}
 
 
// ôóíêöèÿ 2 ïîëó÷èòü êîä íàæàòîé êëàâèøè
// function 2 get key code
bool kos_GetKey( Byte &keyCode )
{
Dword result;
449,7 → 449,7
}
 
 
// ôóíêöèÿ 3 ïîëó÷èòü âðåìÿ
// function 3 get system clock
Dword kos_GetSystemClock()
{
// Dword result;
465,7 → 465,7
}
 
 
// ôóíêöèÿ 4
// function 4
void kos_WriteTextToWindow(
Word x,
Word y,
491,8 → 491,31
}
}
 
// 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 )
{
//
504,7 → 527,7
}
 
 
// ôóíêöèÿ 7 íàðèñîâàòü èçîáðàæåíèå
// function 7
void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y )
{
Dword arg1, arg2;
524,7 → 547,7
 
 
 
// ôóíêöèÿ 8 îïðåäåëèòü êíîïêó
// function 8
void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour )
{
Dword arg1, arg2;
544,7 → 567,7
}
 
 
// ôóíêöèÿ 9 - èíôîðìàöèÿ î ïðîöåññå
// function 9 get process info
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
{
// Dword result;
562,7 → 585,7
}
 
 
// ôóíêöèÿ 10
// function 10
Dword kos_WaitForEvent()
{
// Dword result;
577,7 → 600,7
}
 
 
// ôóíêöèÿ 11
// function 11
Dword kos_CheckForEvent()
{
// Dword result;
592,7 → 615,7
}
 
 
// ôóíêöèÿ 12
// function 12
void kos_WindowRedrawStatus( Dword status )
{
__asm{
603,7 → 626,7
}
 
 
// ôóíêöèÿ 13 íàðèñîâàòü ïîëîñó
// function 13 draw filled area
void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour )
{
Dword arg1, arg2;
622,7 → 645,7
}
 
 
// ôóíêöèÿ 17
// function 17
bool kos_GetButtonID( Dword &buttonID )
{
Dword result;
640,7 → 663,7
}
 
 
// ôóíêöèÿ 23
// function 23
Dword kos_WaitForEvent( Dword timeOut )
{
// Dword result;
655,7 → 678,7
// return result;
}
 
// ôóíêöèÿ 26.9 ïîëó÷èòü çíà÷åíèå ñ÷¸ò÷èêà âðåìåíè
// function 26.9 ïîëó÷èòü çíà÷åíèå ñ÷¸ò÷èêà âðåìåíè
Dword kos_GetTime()
{
__asm{
665,7 → 688,7
}
}
 
// ôóíêöèÿ 37 ïîëó÷åíèå èíôîðìàöèè î ñîñòîÿíèè "ìûøè"
// function 37 ïîëó÷åíèå èíôîðìàöèè î ñîñòîÿíèè "ìûøè"
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY )
{
Dword mB;
694,7 → 717,7
cursorY = curY - sPI.processInfo.y_start;
}
 
// ôóíêöèÿ 37.1 ïîëó÷åíèå êîîðäèíàò "ìûøè" îòíîñèòåëüíî îêíà
// function 37.1 ïîëó÷åíèå êîîðäèíàò "ìûøè" îòíîñèòåëüíî îêíà
void kos_GetMouseWindowXY( int & cursorX, int & cursorY )
{
Word curX;
717,7 → 740,7
cursorY = curY;
}
 
// ôóíêöèÿ 37.2 ïîëó÷åíèå èíôîðìàöèè î íàæàòûõ êíîïêè "ìûøè"
// function 37.2 ïîëó÷åíèå èíôîðìàöèè î íàæàòûõ êíîïêè "ìûøè"
void kos_GetMouseButtonsState( Dword & buttons )
{
Dword mB;
732,7 → 755,7
buttons = mB;
}
 
// ôóíêöèÿ 37.4 çàãðóçêà êóðñîðà "ìûøè"
// function 37.4 çàãðóçêà êóðñîðà "ìûøè"
Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate )
{
//Dword handle;
747,7 → 770,7
//return handle;
}
 
// ôóíêöèÿ 37.5 óñòàíîâêà êóðñîðà "ìûøè"
// function 37.5 óñòàíîâêà êóðñîðà "ìûøè"
Dword * kos_SetMouseCursor( Dword * handle )
{
//Dword handle;
761,7 → 784,7
//return handle;
}
 
// ôóíêöèÿ 37.6 óäàëåíèå êóðñîðà "ìûøè"
// function 37.6 óäàëåíèå êóðñîðà "ìûøè"
void kos_DeleteMouseCursor( Dword * handle )
{
__asm{
772,7 → 795,7
}
}
 
// ôóíêöèÿ 38 íàðèñîâàòü ïîëîñó
// function 38
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour )
{
Dword arg1, arg2;
791,7 → 814,7
}
 
 
// ôóíêöèÿ 40 óñòàíîâèòü ìàñêó ñîáûòèé
// function 40
void kos_SetMaskForEvents( Dword mask )
{
//
803,7 → 826,7
}
 
 
// ôóíêöèÿ 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî
// function 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî
void kos_DisplayNumberToWindow(
Dword value,
Dword digitsNum,
832,7 → 855,7
}
}
 
// ôóíêöèÿ 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî c ôîíîì
// function 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî c ôîíîì
void kos_DisplayNumberToWindowBg(
Dword value,
Dword digitsNum,
874,7 → 897,7
}
}
 
// ôóíêöèÿ 70 äîñòóï ê ôàéëîâîé ñèñòåìå
// function 70 äîñòóï ê ôàéëîâîé ñèñòåìå
Dword kos_FileSystemAccess( kosFileInfo *fileInfo )
{
// Dword result;
891,7 → 914,7
}
 
 
// ôóíêöèÿ 63 âûâîä ñèìâîëÿ â îêíî îòëàäêè
// function 63 âûâîä ñèìâîëÿ â îêíî îòëàäêè
void kos_DebugOutChar( char ccc )
{
//
904,7 → 927,7
}
 
 
// ôóíêöèÿ 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
// function 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
void kos_SetKeyboardDataMode( Dword mode )
{
//
930,8 → 953,21
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 )
{
Dword result;
949,7 → 985,8
}
 
 
// ôóíêöèÿ 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 )
{
//
/programs/games/rforces/trunk/kosSyst.h
136,9 → 136,9
void sprintf( char *Str, char* Format, ... );
//
Dword rtlInterlockedExchange( Dword *target, Dword value );
// ôóíêöèÿ -1 çàâåðøåíèÿ ïðîöåññà
// function -1 çàâåðøåíèÿ ïðîöåññà
void kos_ExitApp();
// ôóíêöèÿ 0
// function 0
void kos_DefineAndDrawWindow(
Word x, Word y,
Word sizeX, Word sizeY,
146,13 → 146,13
Byte headerType, Dword headerColour,
Dword borderColour
);
// ôóíêöèÿ 1 ïîñòàâèòü òî÷êó
// function 1 ïîñòàâèòü òî÷êó
void kos_PutPixel( Dword x, Dword y, Dword colour );
// ôóíêöèÿ 2 ïîëó÷èòü êîä íàæàòîé êëàâèøè
// function 2 ïîëó÷èòü êîä íàæàòîé êëàâèøè
bool kos_GetKey( Byte &keyCode );
// ôóíêöèÿ 3 ïîëó÷èòü âðåìÿ
// function 3 ïîëó÷èòü âðåìÿ
Dword kos_GetSystemClock();
// ôóíêöèÿ 4
// function 4
void kos_WriteTextToWindow(
Word x, Word y,
Byte fontType,
160,27 → 160,36
char *textPtr,
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 );
// ôóíêöèÿ 8 îïðåäåëèòü êíîïêó
// function 8 îïðåäåëèòü êíîïêó
void kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
// ôóíêöèÿ 5 ïàóçà, â ñîòûõ äîëÿõ ñåêóíäû
// function 5 ïàóçà, â ñîòûõ äîëÿõ ñåêóíäû
void kos_Pause( Dword value );
// ôóíêöèÿ 9 èíôîðìàöèÿ î ïðîöåññå
// function 9 èíôîðìàöèÿ î ïðîöåññå
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
// ôóíêöèÿ 10
// function 10
Dword kos_WaitForEvent();
// ôóíêöèÿ 11
// function 11
Dword kos_CheckForEvent();
// ôóíêöèÿ 12
// function 12
void kos_WindowRedrawStatus( Dword status );
// ôóíêöèÿ 13 íàðèñîâàòü ïðÿìîóãîëüíèê
// function 13 íàðèñîâàòü ïðÿìîóãîëüíèê
void kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour );
// ôóíêöèÿ 17
// function 17
bool kos_GetButtonID( Dword &buttonID );
// ôóíêöèÿ 23
// function 23
Dword kos_WaitForEvent( Dword timeOut );
// ôóíêöèÿ 26.9 ïîëó÷èòü çíà÷åíèå ñ÷¸ò÷èêà âðåìåíè
// function 26.9 ïîëó÷èòü çíà÷åíèå ñ÷¸ò÷èêà âðåìåíè
Dword kos_GetTime();
//
enum eNumberBase
189,23 → 198,23
nbHex,
nbBin
};
// ôóíêöèÿ 37 ïîëó÷åíèå èíôîðìàöèè î ñîñòîÿíèè "ìûøè"
// function 37 ïîëó÷åíèå èíôîðìàöèè î ñîñòîÿíèè "ìûøè"
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY );
// ôóíêöèÿ 37.1 ïîëó÷åíèå êîîðäèíàò "ìûøè" îòíîñèòåëüíî îêíà
// function 37.1 ïîëó÷åíèå êîîðäèíàò "ìûøè" îòíîñèòåëüíî îêíà
void kos_GetMouseWindowXY( int & cursorX, int & cursorY );
// ôóíêöèÿ 37.2 ïîëó÷åíèå èíôîðìàöèè î íàæàòûõ êíîïêè "ìûøè"
// function 37.2 ïîëó÷åíèå èíôîðìàöèè î íàæàòûõ êíîïêè "ìûøè"
void kos_GetMouseButtonsState( Dword & buttons );
// ôóíêöèÿ 37.4 çàãðóçêà êóðñîðà "ìûøè"
// function 37.4 çàãðóçêà êóðñîðà "ìûøè"
Dword * kos_LoadMouseCursor( Dword * cursor, Dword loadstate );
// ôóíêöèÿ 37.5 óñòàíîâêà êóðñîðà "ìûøè"
// function 37.5 óñòàíîâêà êóðñîðà "ìûøè"
Dword * kos_SetMouseCursor( Dword * handle );
// ôóíêöèÿ 37.6 óäàëåíèå êóðñîðà "ìûøè"
// function 37.6 óäàëåíèå êóðñîðà "ìûøè"
void kos_DeleteMouseCursor( Dword * handle );
// ôóíêöèÿ 38 íàðèñîâàòü ïîëîñó
// function 38 íàðèñîâàòü ïîëîñó
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour );
// ôóíêöèÿ 40 óñòàíîâèòü ìàñêó ñîáûòèé
// function 40 óñòàíîâèòü ìàñêó ñîáûòèé
void kos_SetMaskForEvents( Dword mask );
// ôóíêöèÿ 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî
// function 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî
void kos_DisplayNumberToWindow(
Dword value,
Dword digitsNum,
215,7 → 224,7
eNumberBase nBase = nbDecimal,
bool valueIsPointer = false
);
// ôóíêöèÿ 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî c ôîíîì
// function 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî c ôîíîì
void kos_DisplayNumberToWindowBg(
Dword value,
Dword digitsNum,
226,19 → 235,22
eNumberBase nBase = nbDecimal,
bool valueIsPointer = false
);
// 48.4 get windows title bar height
// function 48.4 get windows title bar height
Dword kos_GetSkinHeight();
// ôóíêöèÿ 58 äîñòóï ê ôàéëîâîé ñèñòåìå
// function 58 äîñòóï ê ôàéëîâîé ñèñòåìå
Dword kos_FileSystemAccess( kosFileInfo *fileInfo );
// ôóíêöèÿ 63
// function 63
void kos_DebugOutChar( char ccc );
//
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 );
// ôóíêöèÿ 67 èçìåíåíèå êîëè÷åñòâà ïàìÿòè, âûäåëåííîé äëÿ ïðîãðàììû
// function 67 èçìåíåíèå êîëè÷åñòâà ïàìÿòè, âûäåëåííîé äëÿ ïðîãðàììû
bool kos_ApplicationMemoryResize( Dword targetSize );
// ôóíêöèÿ 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
// function 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
void kos_SetKeyboardDataMode( Dword mode );
 
//
/programs/games/rforces/trunk/properties.h
16,7 → 16,7
#define WHITE 0x00FFFFFF
 
// Visual properties
#define GAME_NAME "Rocket Forces v1.12 (F2 - new game, Esc - exit) "
#define GAME_NAME "Rocket Forces"
#define BG_COLOR BLACK
#define TEXT_COLOR WHITE
#define CUR_COLOR GREEN
/programs/games/rforces/trunk/rforces.cpp
1,10 → 1,14
/* Rocket Forces
* Filename: rforces.cpp
* Version 0.1.1
* Version 0.1
* Copyright (c) Serial 2007
*/
 
/* Version 0.2
* Copyright (c) Leency 2018
*/
 
 
#include <stdlib.h>
 
#include "kosSyst.h"
26,6 → 30,8
Dword *cur_handle;
int score, health;
 
bool game_over;
 
struct MouseState
{
int x, y, lbclick;
35,7 → 41,6
 
void kos_Main()
{
Dword btn_id;
Dword frame_start, frame_end;
OnStart();
Menu();
45,15 → 50,12
frame_start = kos_GetTime();
switch (kos_CheckForEvent())
{
case EM_WINDOW_REDRAW:
DrawWindow();
break;
case EM_KEY_PRESS:
Byte keyCode;
kos_GetKey(keyCode);
if (keyCode == 27)
{
OnExit();
kos_ExitApp();
}
if (keyCode == 51)
{
60,12 → 62,13
OnStart();
}
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 (btn_id == 1) OnExit();
if (btn_id == 1) kos_ExitApp();
}
break;
case EM_MOUSE_EVENT: // ñîáûòèå îò ìûøè (íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè)
case EM_MOUSE_EVENT:
OnMouseMove();
if (ms.lbclick == 1)
{
72,30 → 75,34
OnLMBClick();
}
break;
case EM_WINDOW_REDRAW:
DrawWindow();
break;
default:
if (game_over) break;
DrawBombs();
DrawRocketsAndCrosses();
DrawExplodes();
DrawStats();
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));
}
if (health <= 0)
{
OnExit();
if (health <= 0) GameOver();
}
}
}
}
 
void DrawWindow()
{
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);
 
OnMouseMove();
DrawStats();
if (health <= 0) GameOver();
 
// Draw buildings
for (int i = 20; i < 5 * 50; i += 50)
213,6 → 220,12
Dword old_buttons = ms.buttons;
kos_GetMouseWindowXY(ms.x, ms.y);
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)
{
ms.lbclick = 1;
222,13 → 235,6
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)
{
gun->DrawAngle(ms.x, ms.y, G_COLOR);
245,7 → 251,15
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);
}*/
}
 
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()
284,12 → 298,8
}
}
 
void OnRMBClick()
void SetGameCursor()
{
}
 
void ChangeCursor()
{
Dword *cur = new Dword[1024];
for (int i = 0; i < 1024; i++)
{
329,6 → 339,12
kos_SetMouseCursor(cur_handle);
}
 
void RestoreSystemCursor()
{
if (cur_handle) kos_SetMouseCursor(0);
cur_handle=0;
}
 
void Menu()
{
NewGame();
345,7 → 361,7
{
cursor = new cCursor();
}
ChangeCursor();
SetGameCursor();
 
gun->Enable((WINDOW_WIDTH / 2) - 10, WINDOW_HEIGHT - 30, 10, 20, (WINDOW_WIDTH / 2) - 5, WINDOW_HEIGHT - 20);
 
366,16 → 382,21
health = 100;
score = 0;
 
game_over = false;
 
rtlSrand(kos_GetTime());
 
DrawWindow();
}
 
void OnExit()
void GameOver()
{
kos_WriteTextToWindow(WINDOW_WIDTH / 2 - 35, WINDOW_HEIGHT / 2 - 10, 0, TEXT_COLOR, "Game Over", 9);
 
kos_Pause(150);
 
kos_ExitApp();
int xcenter = WINDOW_WIDTH / 2;
int y = WINDOW_HEIGHT/ 2 - 40;
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_WriteTextToWindow(xcenter-43, y+53, 0x80, TEXT_COLOR, "[Ecs] - Exit", 0);
//
RestoreSystemCursor();
game_over = true;
}
/programs/games/rforces/trunk/rforces.h
10,10 → 10,11
void DrawRocketsAndCrosses();
void DrawExplodes();
void OnMouseMove();
void DrawStats();
void OnLMBClick();
void OnRMBClick();
void ChangeCursor();
void SetGameCursor();
void RestoreSystemCursor();
void Menu();
void NewGame();
void OnStart();
void OnExit();
void GameOver();