Subversion Repositories Kolibri OS

Rev

Rev 5333 | Rev 5340 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5333 Rev 5338
Line 931... Line 931...
931
	//rtlDebugOutString(ftoa(key));
931
	//rtlDebugOutString(ftoa(key));
Line 932... Line 932...
932
 
932
 
933
	switch (gameMode)
933
	switch (gameMode)
934
	{
934
	{
935
	case MODE_MENU:
935
	case MODE_MENU:
936
		if (key = 27)
936
		if (key == 27)
-
 
937
			kos_ExitApp();
-
 
938
 
-
 
939
		if (key == 13 || key == 32)
937
			kos_ExitApp();
940
			SetMode(MODE_LEVELS);
938
		break;
941
		break;
939
	case MODE_LEVELS:
942
	case MODE_LEVELS:
940
		if (key = 27)
943
		if (key == 27)
-
 
944
			SetMode(MODE_MENU);
-
 
945
 
-
 
946
		if (levelPage > 0 && key == 183)
-
 
947
		{
-
 
948
			levelIndex -= 30;
-
 
949
			draw_window();
-
 
950
		}
-
 
951
		else
-
 
952
			if (levelPage < (int)(levelCount / 30) && key == 184)
-
 
953
			{
-
 
954
				levelIndex += 30;
-
 
955
				if (levelIndex >= levelCount)
-
 
956
					levelIndex = levelCount - 1;
-
 
957
				draw_window();
-
 
958
			}
-
 
959
 
-
 
960
	// 179, 100   D Right
-
 
961
		if ((key == 179 || key == 100) && (levelIndex + 1) < levelCount)
-
 
962
		{
-
 
963
			levelIndex++;
-
 
964
			draw_window();
-
 
965
		}
-
 
966
	// 176, 97    A  Left
-
 
967
		if ((key == 176 || key == 97) && levelIndex > 0)
-
 
968
		{
-
 
969
			levelIndex--;
-
 
970
			draw_window();
-
 
971
		}
-
 
972
	// 119, 178: W Up
-
 
973
		if ((key == 119 || key == 178) && (levelIndex - 6) >= 0)
-
 
974
		{
-
 
975
			levelIndex -= 6;
-
 
976
			draw_window();
-
 
977
		}
-
 
978
	// 177, 115    S Down
-
 
979
		if ((key == 177 || key == 115) && (levelIndex + 6) < levelCount)
-
 
980
		{
-
 
981
			levelIndex += 6;
-
 
982
			draw_window();
-
 
983
		}
-
 
984
 
-
 
985
		if (key == 13 || key == 32)
-
 
986
		{
-
 
987
			openLevel(levelIndex);
-
 
988
			SetMode(MODE_GAME);
-
 
989
		}
-
 
990
 
-
 
991
		break;
-
 
992
	case MODE_PAUSE:
-
 
993
		if (key == 27)
-
 
994
			SetMode(MODE_LEVELS);
-
 
995
		else
-
 
996
			if ((key == 32 || key == 13) && (gameStatus == GAME_NONE || (gameStatus == GAME_VICTORY && levelIndex < (levelCount - 1))))
-
 
997
			{
-
 
998
				if (gameStatus == GAME_VICTORY)
-
 
999
					openLevel(levelIndex + 1);
-
 
1000
				SetMode(MODE_GAME);
-
 
1001
			}
-
 
1002
			else
-
 
1003
				if (key == 114)
-
 
1004
				{
-
 
1005
					openLevel(levelIndex);
-
 
1006
					SetMode(MODE_GAME);
941
			SetMode(MODE_MENU);
1007
				}
942
		break;
1008
		break;
943
	case MODE_GAME:
1009
	case MODE_GAME:
944
		switch (key)
1010
		switch (key)
945
		{
1011
		{
Line 1003... Line 1069...
1003
		if (CollRecrVsPoint(position, ToExit.rect))
1069
		if (CollRecrVsPoint(position, ToExit.rect))
1004
			SetMode(MODE_MENU);
1070
			SetMode(MODE_MENU);
1005
		else
1071
		else
1006
		if (levelPage > 0 && CollRecrVsPoint(position, Rect(9, 318, 57, 57)))
1072
		if (levelPage > 0 && CollRecrVsPoint(position, Rect(9, 318, 57, 57)))
1007
		{
1073
		{
1008
			levelPage--;
1074
			levelIndex -= 30;
1009
			draw_window();
1075
			draw_window();
1010
		}
1076
		}
1011
		else
1077
		else
1012
		if (levelPage < (int)(levelCount / 30) && CollRecrVsPoint(position, Rect(70, 318, 57, 57)))
1078
			if (levelPage < (int)(levelCount / 30) && CollRecrVsPoint(position, Rect(70, 318, 57, 57)))
1013
		{
1079
		{
1014
			levelPage++;
1080
			levelIndex += 30;
-
 
1081
			if (levelIndex >= levelCount)
-
 
1082
				levelIndex = levelCount - 1;
1015
			draw_window();
1083
			draw_window();
1016
		}			
1084
		}			
1017
		else
1085
		else
1018
		{
1086
		{
-
 
1087
			levelPage = (int)(levelIndex / 30);
1019
			for (int i = levelPage * 30; i < min(levelCount, (levelPage + 1) * 30); i++)
1088
			for (int i = levelPage * 30; i < min(levelCount, (levelPage + 1) * 30); i++)
1020
			{
1089
			{
Line 1021... Line 1090...
1021
 
1090
 
1022
				if (i % 6 == 0 && i != levelPage * 30)
1091
				if (i % 6 == 0 && i != levelPage * 30)
Line 1043... Line 1112...
1043
			{
1112
			{
1044
				openLevel(levelIndex);
1113
				openLevel(levelIndex);
1045
				SetMode(MODE_GAME);
1114
				SetMode(MODE_GAME);
1046
			}
1115
			}
1047
			else
1116
			else
1048
				if (gameStatus != GAME_DEFEAT && CollRecrVsPoint(position, Rect(77, 192, 229, 57)))
1117
				if (CollRecrVsPoint(position, Rect(77, 192, 229, 57)) && (gameStatus == GAME_NONE || (gameStatus == GAME_VICTORY && levelIndex < (levelCount - 1))))
1049
				{
1118
				{
1050
					if (gameStatus == GAME_VICTORY)
1119
					if (gameStatus == GAME_VICTORY)
1051
						openLevel(levelIndex + 1);
1120
						openLevel(levelIndex + 1);
1052
					SetMode(MODE_GAME);
1121
					SetMode(MODE_GAME);
1053
				}
1122
				}
Line 1090... Line 1159...
1090
		
1159
		
1091
		
1160
		
1092
		break;
1161
		break;
-
 
1162
	case MODE_LEVELS:
-
 
1163
		renderLevels->RenderImg(img_levels, Point(0, 0), 384, 384);
1093
	case MODE_LEVELS:
1164
 
1094
		renderLevels->RenderImg(img_levels, Point(0, 0), 384, 384);
1165
		levelPage = (int)(levelIndex / 30);
1095
		for (int i = levelPage * 30; i < min(levelCount, (levelPage + 1) * 30); i++)
1166
		for (int i = levelPage * 30; i < min(levelCount, (levelPage + 1) * 30); i++)
1096
		{
1167
		{
1097
			if (i % 6 == 0 && i != levelPage * 30)
1168
			if (i % 6 == 0 && i != levelPage * 30)
1098
			{
1169
			{
1099
				level_pos.X = 0;
1170
				level_pos.X = 0;
-
 
1171
				level_pos.Y++;
-
 
1172
			}
1100
				level_pos.Y++;
1173
			if (levelIndex != i)
1101
			}
1174
			{
-
 
1175
				objnumber_box->Draw(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), 0);
-
 
1176
				draw_level_number(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), i + 1, (RGB)0x252317);
-
 
1177
			}
-
 
1178
			else
-
 
1179
			{
-
 
1180
				objnumber_box->Draw(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), 0, (RGB)0xAA0000);
Line 1102... Line 1181...
1102
			objnumber_box->Draw(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), 0);
1181
				draw_level_number(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), i + 1, (RGB)0xAA0000);
1103
			draw_level_number(Point(11 + level_pos.X * 62, 11 + 61 * level_pos.Y), i + 1, (RGB)0x252317);
1182
			}
Line 1104... Line 1183...
1104
 
1183
 
Line 1145... Line 1224...
1145
 
1224
 
1146
			for (int y = 0; y < 16; y++)
1225
			for (int y = 0; y < 16; y++)
1147
				for (int x = 0; x < 16; x++)
1226
				for (int x = 0; x < 16; x++)
Line 1148... Line 1227...
1148
					objblack->Draw(Point(24 * x, 24 * y), 0);
1227
					objblack->Draw(Point(24 * x, 24 * y), 0);
1149
 
1228
 
1150
			if (gameStatus != GAME_DEFEAT)
1229
			if (gameStatus == GAME_NONE || (gameStatus == GAME_VICTORY && levelIndex < (levelCount - 1)))
1151
				renderLevels->RenderImg((RGB*)img_buttons[1], Point(77, 192), 229, 57);
1230
				renderLevels->RenderImg((RGB*)img_buttons[1], Point(77, 192), 229, 57);
Line 1152... Line 1231...
1152
			renderLevels->RenderImg((RGB*)img_buttons[2], Point(77, 255), 229, 57);
1231
			renderLevels->RenderImg((RGB*)img_buttons[2], Point(77, 255), 229, 57);
Line 1251... Line 1330...
1251
	draw_window();
1330
	draw_window();
1252
}
1331
}
Line 1253... Line 1332...
1253
 
1332
 
1254
void kos_Main()
1333
void kos_Main()
-
 
1334
{
-
 
1335
	//rtlDebugOutString(" ");
1255
{
1336
	//rtlDebugOutString("kos_Main");
1256
	char *cPtr;
1337
	char *cPtr;
1257
	cPtr = strrchr(kosExePath, '/');
1338
	cPtr = strrchr(kosExePath, '/');
1258
	// ïðîâåðêà ;)
1339
	// ïðîâåðêà ;)
1259
	if (cPtr == NULL)
1340
	if (cPtr == NULL)