replace weaponshop sprite of M203 with MG42
[rofl0r-openDOW.git] / weapon_shop.c
blob875c7f80afdd76c563c6189172ce7201a6a4bdfd
1 #include "video.h"
2 #include "palpic.h"
3 #include "spritemaps.h"
4 #include "maps.h"
5 #include "font.h"
6 #include "audio.h"
7 #include "music.h"
8 #include "SDL/SDL.h"
10 #define GRID_START_X (0*SCALE)
11 #define GRID_START_Y (SCREEN_MIN_Y + 16*SCALE)
13 static struct { int x, y; } ws_cursor;
15 static void draw_ws_grid() {
16 unsigned i,y,x;
17 for(i = 0, y= GRID_START_Y; i < 9; i++, y+=23*SCALE) {
18 if(i == 7) y+=21*SCALE;
19 else if(i == 8) y-=8*SCALE;
20 blit_sprite(GRID_START_X, y, &video, SCALE, spritemaps[SI_WS_HBAR6], 0, 0);
21 blit_sprite(GRID_START_X+(6+308)*SCALE, y, &video, SCALE, spritemaps[SI_WS_HBAR6], 1, 0);
23 #define X (GRID_START_X+6*SCALE)
24 for(i = 0, y= GRID_START_Y-1*SCALE; i < 9; i++, y+=23*SCALE) {
25 if(i == 7) y+=21*SCALE;
26 else if(i == 8) y-=8*SCALE;
27 for(x=X; x<X+308*SCALE;x+=SCALE)
28 blit_sprite(x, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 0, 0);
30 #undef X
31 for(i = 0, y= GRID_START_Y+3*SCALE; i < 8; i++, y+=23*SCALE) {
32 if(i == 7) y+=21*SCALE;
33 blit_sprite(GRID_START_X+1*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 1, 0);
34 blit_sprite(GRID_START_X+(1+317)*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 1, 0);
36 for(i = 0, y= GRID_START_Y+19*SCALE; i < 8; i++, y+=23*SCALE) {
37 if(i == 6) y+=21*SCALE;
38 else if(i == 7) y-=8*SCALE;
39 blit_sprite(GRID_START_X+1*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 2, 0);
40 blit_sprite(GRID_START_X+(1+317)*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 2, 0);
42 for(i = 0, y= GRID_START_Y+7*SCALE; i < 8; i++, y+=23*SCALE) {
43 if(i == 7) y+=21*SCALE;
44 blit_sprite(GRID_START_X+1*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
45 blit_sprite(GRID_START_X+(1+317)*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
47 for(i = 0, y= GRID_START_Y+11*SCALE; i < 7; i++, y+=23*SCALE) {
48 blit_sprite(GRID_START_X+1*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
49 blit_sprite(GRID_START_X+(1+317)*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
51 for(i = 0, y= GRID_START_Y+15*SCALE; i < 7; i++, y+=23*SCALE) {
52 blit_sprite(GRID_START_X+1*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
53 blit_sprite(GRID_START_X+(1+317)*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
55 for(i = 0, y= GRID_START_Y+(138+3+4+3*4)*SCALE; i < 6; i++, y+=4*SCALE) {
56 if(i == 5) y-=3*SCALE;
57 blit_sprite(GRID_START_X+1*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
58 blit_sprite(GRID_START_X+(1+317)*SCALE, y, &video, SCALE, spritemaps[SI_WS_VBAR1], 3, 0);
60 for(i = 0, y= GRID_START_Y+21*SCALE; i < 5; i++, y+=23*SCALE) {
61 for(x=GRID_START_X+61*SCALE; x<260*SCALE;x+=64*SCALE)
62 blit_sprite(x, y, &video, SCALE, spritemaps[SI_WS_BOLT], 0, 0);
64 for(i = 0, y= GRID_START_Y+23*SCALE; i < 5; i++, y+=23*SCALE) {
65 for(x=GRID_START_X+51*SCALE; x<260*SCALE;x+=64*SCALE)
66 blit_sprite(x, y, &video, SCALE, spritemaps[SI_WS_HBAR10], 0, 0);
68 for(i = 0, y= GRID_START_Y+23*SCALE; i < 5; i++, y+=23*SCALE) {
69 for(x=GRID_START_X+68*SCALE; x<280*SCALE;x+=64*SCALE)
70 blit_sprite(x, y, &video, SCALE, spritemaps[SI_WS_HBAR10], 1, 0);
73 for(x = GRID_START_X+63*SCALE; x<GRID_START_X+280*SCALE; x+=64*SCALE) {
74 blit_sprite(x, GRID_START_Y+3*SCALE, &video, SCALE, spritemaps[SI_WS_VBAR3], 2, 0);
76 for(x = GRID_START_X+63*SCALE; x<GRID_START_X+280*SCALE; x+=64*SCALE) {
77 blit_sprite(x, GRID_START_Y+128*SCALE, &video, SCALE, spritemaps[SI_WS_VBAR3], 3, 0);
79 for(i = 0, y = GRID_START_Y+13*SCALE; i < 5; i++, y+=23*SCALE) {
80 for(x = GRID_START_X+63*SCALE; x<GRID_START_X+280*SCALE; x+=64*SCALE) {
81 blit_sprite(x, y, &video, SCALE, spritemaps[SI_WS_VBAR3], 1, 0);
84 for(i = 0, y = GRID_START_Y+26*SCALE; i < 5; i++, y+=23*SCALE) {
85 for(x = GRID_START_X+63*SCALE; x<GRID_START_X+280*SCALE; x+=64*SCALE) {
86 blit_sprite(x, y, &video, SCALE, spritemaps[SI_WS_VBAR3], 0, 0);
91 static void draw_ws_text_sprites() {
92 blit_sprite(GRID_START_X+31*SCALE, GRID_START_Y+186*SCALE, &video, SCALE, spritemaps[SI_WS_COSTCREDIT], 0, 0);
93 blit_sprite(GRID_START_X+150*SCALE, GRID_START_Y+186*SCALE, &video, SCALE, spritemaps[SI_WS_COSTCREDIT], 1, 0);
96 static void draw_ws_weapons() {
97 unsigned img = 0;
98 const struct palpic* p = spritemaps[SI_WEAPONSHOP];
99 unsigned y,yy,x,xx;
100 for(yy= 0, y = GRID_START_Y+5*SCALE; yy < 6; y+=23*SCALE, yy++) {
101 for(xx = 0, x = GRID_START_X+3*SCALE; xx < 5; x+=64*SCALE, xx++) {
102 blit_sprite(x, y, &video, SCALE, p, img, 0);
103 img++;
108 static void draw_ws_stuff() {
109 clear_screen();
110 draw_ws_grid();
111 draw_ws_text_sprites();
112 draw_ws_weapons();
113 video_update();
116 static void shop_tick(void) {
117 draw_ws_stuff();
118 if (audio_process() == -1) music_restart();
119 SDL_Delay(20);
122 static void weapon_shop(void) {
123 int x=0, y=0;
124 SDL_Event sdl_event;
125 while(1) {
126 while (SDL_PollEvent(&sdl_event)) {
127 switch (sdl_event.type) {
128 case SDL_MOUSEMOTION:
129 ws_cursor.x = sdl_event.motion.x;
130 ws_cursor.y = sdl_event.motion.y;
131 break;
132 case SDL_MOUSEBUTTONDOWN:
133 dprintf(2, "click on %d,%d\n", ws_cursor.x/SCALE-x, ws_cursor.y/SCALE-y);
134 //if((ret = cursor_on_map(x, y, completed)) != MI_INVALID) goto dun_goofed;
135 break;
136 case SDL_QUIT:
137 goto dun_goofed;
138 case SDL_KEYDOWN:
139 switch(sdl_event.key.keysym.sym) {
140 case SDLK_RETURN:
141 if((sdl_event.key.keysym.mod & KMOD_LALT) ||
142 (sdl_event.key.keysym.mod & KMOD_RALT)) {
143 toggle_fullscreen();
144 SDL_Delay(1);
146 break;
147 case SDLK_ESCAPE:
148 goto dun_goofed;
149 default:
150 break;
152 default:
153 break;
157 shop_tick();
159 dun_goofed:
160 clear_screen();
161 video_update();