Rev 5296 | Rev 5331 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5296 | Rev 5297 | ||
---|---|---|---|
Line 6... | Line 6... | ||
6 | #include "image.h" |
6 | #include "image.h" |
Line 7... | Line 7... | ||
7 | 7 | ||
8 | #define MODE_MENU 0 |
8 | #define MODE_MENU 0 |
9 | #define MODE_LEVELS 1 |
9 | #define MODE_LEVELS 1 |
- | 10 | #define MODE_GAME 2 |
|
Line 10... | Line 11... | ||
10 | #define MODE_GAME 2 |
11 | #define MODE_PAUSE 4 |
11 | 12 | ||
12 | #define GAME_NONE 0 |
13 | #define GAME_NONE 0 |
Line 82... | Line 83... | ||
82 | RGB img_brick1[576]; |
83 | RGB img_brick1[576]; |
83 | RGB img_menu[147456]; |
84 | RGB img_menu[147456]; |
84 | RGBA img_explosion[8064]; |
85 | RGBA img_explosion[8064]; |
85 | RGBA img_gun[576]; |
86 | RGBA img_gun[576]; |
86 | RGB img_gamebg[9216]; |
87 | RGB img_gamebg[9216]; |
- | 88 | RGBA img_black[576]; |
|
Line 87... | Line 89... | ||
87 | 89 | ||
88 | RGBA img_number_box[2550]; |
90 | RGBA img_number_box[2550]; |
89 | RGBA img_numbers[3500]; |
91 | RGBA img_numbers[3500]; |
90 | RGBA img_button1[3249]; |
92 | RGBA img_button1[3249]; |
Line 91... | Line 93... | ||
91 | RGBA img_button_arrow[375]; |
93 | RGBA img_button_arrow[375]; |
Line -... | Line 94... | ||
- | 94 | ||
- | 95 | RGB img_levels[147456]; |
|
- | 96 | ||
- | 97 | RGB img_buttons[3][13053]; |
|
92 | 98 | ||
Line 93... | Line 99... | ||
93 | RGB img_levels[147456]; |
99 | |
94 | 100 | ||
- | 101 | Player player; |
|
Line 95... | Line 102... | ||
95 | Player player; |
102 | |
Line 96... | Line 103... | ||
96 | 103 | CKosRender* renderPlayer; |
|
97 | CKosRender* renderPlayer; |
104 | CKosImage* objPlayer; |
Line 105... | Line 112... | ||
105 | CKosImage* objMiniMirror; |
112 | CKosImage* objMiniMirror; |
106 | CKosImage* objBox; |
113 | CKosImage* objBox; |
107 | CKosImage* objGun; |
114 | CKosImage* objGun; |
108 | CKosImage* objExplosion; |
115 | CKosImage* objExplosion; |
Line -... | Line 116... | ||
- | 116 | ||
- | 117 | CKosImage* objblack; |
|
109 | 118 | ||
110 | CKosRender* renderLevels; |
119 | CKosRender* renderLevels; |
111 | CKosImage* objnumber_box; |
120 | CKosImage* objnumber_box; |
Line 112... | Line 121... | ||
112 | CKosImage* objnumbers; |
121 | CKosImage* objnumbers; |
Line 155... | Line 164... | ||
155 | if (din && level[position.Y][position.X].d != FIELD_NONE) |
164 | if (din && level[position.Y][position.X].d != FIELD_NONE) |
156 | return level[position.Y][position.X].d; |
165 | return level[position.Y][position.X].d; |
157 | return level[position.Y][position.X].s; |
166 | return level[position.Y][position.X].s; |
158 | } |
167 | } |
Line -... | Line 168... | ||
- | 168 | ||
- | 169 | void SetMode(int mode) |
|
- | 170 | { |
|
- | 171 | gameMode = mode; |
|
- | 172 | draw_window(); |
|
- | 173 | } |
|
159 | 174 | ||
160 | RGB* GetImg(Point position, bool din) |
175 | RGB* GetImg(Point position, bool din) |
161 | { |
176 | { |
162 | switch (GetField(position, din)) |
177 | switch (GetField(position, din)) |
163 | { |
178 | { |
Line 573... | Line 588... | ||
573 | renderBox->Draw((position)* 24); |
588 | renderBox->Draw((position)* 24); |
574 | pause(2); |
589 | pause(2); |
575 | } |
590 | } |
576 | level[player.position.Y][player.position.X].s = FIELD_CRATER; |
591 | level[player.position.Y][player.position.X].s = FIELD_CRATER; |
577 | gameStatus = GAME_DEFEAT; |
592 | gameStatus = GAME_DEFEAT; |
578 | draw_window(); |
593 | SetMode(MODE_PAUSE); |
579 | return; |
594 | return; |
580 | } |
595 | } |
581 | else |
596 | else |
582 | { |
597 | { |
583 | if (level[position.Y][position.X].l == 1) |
598 | if (level[position.Y][position.X].l == 1) |
Line 777... | Line 792... | ||
777 | return; |
792 | return; |
778 | } |
793 | } |
779 | break; |
794 | break; |
780 | case FIELD_FINISH: |
795 | case FIELD_FINISH: |
781 | gameStatus = GAME_VICTORY; |
796 | gameStatus = GAME_VICTORY; |
- | 797 | SetMode(MODE_PAUSE); |
|
782 | draw_window(); |
798 | draw_window(); |
783 | break; |
799 | break; |
784 | case FIELD_NONE: |
800 | case FIELD_NONE: |
785 | case FIELD_BRICK: |
801 | case FIELD_BRICK: |
786 | case FIELD_WALL: |
802 | case FIELD_WALL: |
Line 831... | Line 847... | ||
831 | objPlayer->Draw(Point(0, 0), player.angle); |
847 | objPlayer->Draw(Point(0, 0), player.angle); |
832 | renderPlayer->Draw(player.position * 24); |
848 | renderPlayer->Draw(player.position * 24); |
833 | } |
849 | } |
834 | } |
850 | } |
Line 835... | Line -... | ||
835 | - | ||
836 | void SetMode(int mode) |
- | |
837 | { |
- | |
838 | gameMode = mode; |
- | |
839 | draw_window(); |
- | |
840 | } |
- | |
841 | 851 | ||
842 | void key_press(int key) |
852 | void key_press(int key) |
843 | { |
853 | { |
Line 844... | Line 854... | ||
844 | //rtlDebugOutString(ftoa(key)); |
854 | //rtlDebugOutString(ftoa(key)); |
Line 890... | Line 900... | ||
890 | if (gameStatus == GAME_DEFEAT) |
900 | if (gameStatus == GAME_DEFEAT) |
891 | openLevel(levelIndex); |
901 | openLevel(levelIndex); |
Line 892... | Line 902... | ||
892 | 902 | ||
893 | break; |
903 | break; |
894 | case 27: |
904 | case 27: |
895 | SetMode(MODE_LEVELS); |
905 | SetMode(MODE_PAUSE); |
896 | } |
906 | } |
897 | break; |
907 | break; |
898 | } |
908 | } |
Line 946... | Line 956... | ||
946 | } |
956 | } |
947 | level_pos.X++; |
957 | level_pos.X++; |
948 | } |
958 | } |
949 | } |
959 | } |
950 | break; |
960 | break; |
- | 961 | case MODE_PAUSE: |
|
- | 962 | if (CollRecrVsPoint(position, Rect(77, 318, 229, 57))) |
|
- | 963 | SetMode(MODE_LEVELS); |
|
- | 964 | else |
|
- | 965 | if (CollRecrVsPoint(position, Rect(77, 255, 229, 57))) |
|
- | 966 | { |
|
- | 967 | openLevel(levelIndex); |
|
- | 968 | SetMode(MODE_GAME); |
|
- | 969 | } |
|
- | 970 | else |
|
- | 971 | if (gameStatus != GAME_DEFEAT && CollRecrVsPoint(position, Rect(77, 192, 229, 57))) |
|
- | 972 | { |
|
- | 973 | if (gameStatus == GAME_VICTORY) |
|
- | 974 | openLevel(levelIndex + 1); |
|
- | 975 | SetMode(MODE_GAME); |
|
- | 976 | } |
|
951 | case MODE_GAME: |
977 | case MODE_GAME: |
Line 952... | Line 978... | ||
952 | 978 | ||
953 | break; |
979 | break; |
954 | } |
980 | } |
Line 1013... | Line 1039... | ||
1013 | objbutton1->Draw(Point(70, 318), 0); |
1039 | objbutton1->Draw(Point(70, 318), 0); |
1014 | objbutton_arrow->Draw(Point(89, 339), 180); |
1040 | objbutton_arrow->Draw(Point(89, 339), 180); |
1015 | } |
1041 | } |
Line 1016... | Line 1042... | ||
1016 | 1042 | ||
1017 | renderLevels->Draw(Point(0, 0)); |
- | |
1018 | 1043 | renderLevels->Draw(Point(0, 0)); |
|
1019 | //kos_PutImage((RGB*)img_ground, 24, 24, 100, 100); |
- | |
1020 | 1044 | //kos_PutImage((RGB*)img_ground, 24, 24, 100, 100); |
|
1021 | break; |
1045 | break; |
1022 | case MODE_GAME: |
1046 | case MODE_PAUSE: |
1023 | for (int y = 0; y < 4; y++) |
1047 | for (int y = 0; y < 4; y++) |
1024 | for (int x = 0; x < 4; x++) |
1048 | for (int x = 0; x < 4; x++) |
1025 | kos_PutImage((RGB*)img_gamebg, 96, 96, 96 * x, 96 * y); |
- | |
Line 1026... | Line 1049... | ||
1026 | 1049 | renderLevels->RenderImg((RGB*)img_gamebg, Point(96 * x, 96 * y), 96, 96); |
|
1027 | 1050 | ||
1028 | for (int y = 0; y < 16; y++) |
- | |
1029 | for (int x = 0; x < 16; x++) |
1051 | for (int y = 0; y < 16; y++) |
1030 | { |
1052 | for (int x = 0; x < 16; x++) |
1031 | if (level[y][x].s != FIELD_NONE) |
- | |
Line 1032... | Line 1053... | ||
1032 | kos_PutImage(GetImg(Point(x, y), true), 24, 24, 24 * x, 24 * y); |
1053 | if (level[y][x].s != FIELD_NONE) |
1033 | } |
1054 | renderLevels->RenderImg(GetImg(Point(x, y), true), Point(24 * x, 24 * y), 24, 24); |
1034 | 1055 | ||
1035 | switch (gameStatus) |
- | |
1036 | { |
1056 | switch (gameStatus) |
1037 | case GAME_NONE: |
- | |
1038 | renderPlayer->RenderImg(GetImg(player.position, false), Point(0, 0), 24, 24); |
1057 | { |
1039 | objPlayer->Draw(Point(0, 0), player.angle); |
1058 | case GAME_NONE: |
1040 | renderPlayer->Draw(player.position * 24); |
1059 | objPlayer1->Draw(player.position * 24, player.angle); |
1041 | break; |
1060 | break; |
1042 | case GAME_VICTORY: |
1061 | case GAME_VICTORY: |
1043 | kos_WriteTextToWindow(30, 10, 0x80, 0xFFFFFF, "VICTORY", 0); |
1062 | kos_WriteTextToWindow(30, 10, 0x80, 0xFFFFFF, "VICTORY", 0); |
1044 | break; |
1063 | break; |
1045 | case GAME_DEFEAT: |
1064 | case GAME_DEFEAT: |
- | 1065 | kos_WriteTextToWindow(30, 10, 0x80, 0xFFFFFF, "DEFEAT", 0); |
|
- | 1066 | break; |
|
- | 1067 | } |
|
- | 1068 | ||
- | 1069 | for (int y = 0; y < 16; y++) |
|
- | 1070 | for (int x = 0; x < 16; x++) |
|
- | 1071 | objblack->Draw(Point(24 * x, 24 * y), 0); |
|
- | 1072 | ||
- | 1073 | if (gameStatus != GAME_DEFEAT) |
|
- | 1074 | renderLevels->RenderImg((RGB*)img_buttons[1], Point(77, 192), 229, 57); |
|
- | 1075 | renderLevels->RenderImg((RGB*)img_buttons[2], Point(77, 255), 229, 57); |
|
- | 1076 | renderLevels->RenderImg((RGB*)img_buttons[0], Point(77, 318), 229, 57); |
|
- | 1077 | ||
- | 1078 | renderLevels->Draw(Point(0, 0)); |
|
- | 1079 | break; |
|
- | 1080 | case MODE_GAME: |
|
- | 1081 | for (int y = 0; y < 4; y++) |
|
- | 1082 | for (int x = 0; x < 4; x++) |
|
- | 1083 | kos_PutImage((RGB*)img_gamebg, 96, 96, 96 * x, 96 * y); |
|
- | 1084 | ||
- | 1085 | for (int y = 0; y < 16; y++) |
|
- | 1086 | for (int x = 0; x < 16; x++) |
|
- | 1087 | if (level[y][x].s != FIELD_NONE) |
|
- | 1088 | kos_PutImage(GetImg(Point(x, y), true), 24, 24, 24 * x, 24 * y); |
|
- | 1089 | ||
- | 1090 | if(gameStatus != GAME_DEFEAT) |
|
- | 1091 | { |
|
- | 1092 | renderPlayer->RenderImg(GetImg(player.position, false), Point(0, 0), 24, 24); |
|
1046 | kos_WriteTextToWindow(30, 10, 0x80, 0xFFFFFF, "DEFEAT", 0); |
1093 | objPlayer->Draw(Point(0, 0), player.angle); |
1047 | break; |
1094 | renderPlayer->Draw(player.position * 24); |
1048 | } |
1095 | } |
1049 | break; |
1096 | break; |
Line 1186... | Line 1233... | ||
1186 | file->LoadTex((Byte*)img_wall_v, 3, 24, 24); |
1233 | file->LoadTex((Byte*)img_wall_v, 3, 24, 24); |
1187 | file->LoadTex((Byte*)img_wall_x, 3, 24, 24); |
1234 | file->LoadTex((Byte*)img_wall_x, 3, 24, 24); |
Line 1188... | Line 1235... | ||
1188 | 1235 | ||
Line -... | Line 1236... | ||
- | 1236 | file->LoadTex((Byte*)img_crater, 3, 24, 24); |
|
- | 1237 | ||
- | 1238 | file->LoadTex((Byte*)img_black, 4, 24, 24); |
|
- | 1239 | ||
- | 1240 | for (int i = 0; i < 3; ++i) |
|
1189 | file->LoadTex((Byte*)img_crater, 3, 24, 24); |
1241 | file->LoadTex((Byte*)img_buttons[i], 3, 229, 57); |
Line 1190... | Line 1242... | ||
1190 | 1242 | ||
1191 | delete file; |
1243 | delete file; |
Line 1210... | Line 1262... | ||
1210 | 1262 | ||
1211 | objExplosion = new CKosImage(renderBox, (RGBA*)img_explosion, 24, 24); |
1263 | objExplosion = new CKosImage(renderBox, (RGBA*)img_explosion, 24, 24); |
Line 1212... | Line 1264... | ||
1212 | objExplosion->SetFrameSize(24, 24); |
1264 | objExplosion->SetFrameSize(24, 24); |
- | 1265 | ||
- | 1266 | renderLevels = new CKosRender(384, 384); |
|
1213 | 1267 | ||
1214 | renderLevels = new CKosRender(384, 384); |
1268 | objPlayer1 = new CKosImage(renderLevels, (RGBA*)img_tank, 24, 24); |
1215 | objnumber_box = new CKosImage(renderLevels, (RGBA*)img_number_box, 51, 50); |
1269 | objnumber_box = new CKosImage(renderLevels, (RGBA*)img_number_box, 51, 50); |
Line 1216... | Line 1270... | ||
1216 | objnumbers = new CKosImage(renderLevels, (RGBA*)img_numbers, 14, 25); |
1270 | objnumbers = new CKosImage(renderLevels, (RGBA*)img_numbers, 14, 25); |
1217 | objnumbers->SetFrameSize(14, 25); |
1271 | objnumbers->SetFrameSize(14, 25); |
Line -... | Line 1272... | ||
- | 1272 | ||
- | 1273 | objbutton1 = new CKosImage(renderLevels, (RGBA*)img_button1, 57, 57); |
|
1218 | 1274 | objbutton_arrow = new CKosImage(renderLevels, (RGBA*)img_button_arrow, 25, 15); |
|
Line 1219... | Line 1275... | ||
1219 | objbutton1 = new CKosImage(renderLevels, (RGBA*)img_button1, 57, 57); |
1275 | |
Line 1220... | Line 1276... | ||
1220 | objbutton_arrow = new CKosImage(renderLevels, (RGBA*)img_button_arrow, 25, 15); |
1276 | objblack = new CKosImage(renderLevels, (RGBA*)img_black, 24, 24); |