Rev 5237 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5235 | alpine | 1 | #include "rsgamedraw.h" |
2 | #include "rsgametext.h" |
||
3 | #include "rsgamemenu.h" |
||
4 | |||
5 | #include "rskos.h" |
||
6 | |||
7 | #include "rsnoise.h" |
||
8 | |||
9 | #include "strings.h" |
||
10 | |||
11 | |||
12 | void game_draw() { |
||
13 | |||
14 | int w = GAME_WIDTH; |
||
15 | int h = GAME_HEIGHT; |
||
16 | |||
17 | |||
18 | // int kk = 20; // (rskos_get_time()/1) % 160; |
||
19 | // |
||
20 | // unsigned char *c = game.framebuffer.data; |
||
21 | // |
||
22 | // int i; |
||
23 | // for (i = 0; i < w*h*4; i+=4) { |
||
24 | // c[i+0] = 10; // i/w/3; |
||
25 | // c[i+1] = (( (1*i)*(i + kk)/70) & 5) ? 70 : 0; |
||
26 | // c[i+2] = 50; |
||
27 | // c[i+3] = i % 128; |
||
28 | // }; |
||
29 | |||
30 | |||
31 | // texture_clear(&game.framebuffer, COLOR_DARK_RED); |
||
32 | // texture_clear(&game.tex); |
||
33 | |||
34 | // texture_draw(&game.framebuffer, &game.tex, 40, 40, DRAW_MODE_ADDITIVE); |
||
35 | // texture_draw(&game.framebuffer, &game.tex, 70, 50, DRAW_MODE_ADDITIVE); |
||
36 | // texture_draw(&game.framebuffer, &game.tex, 20, 60, DRAW_MODE_ADDITIVE); |
||
37 | // texture_draw(&game.framebuffer, &game.tex, 60, 70, DRAW_MODE_ADDITIVE); |
||
38 | // |
||
39 | // texture_draw(&game.framebuffer, &game.tex, 111, 150, DRAW_MODE_ADDITIVE); |
||
40 | |||
41 | // int i, c, c2, c3; |
||
42 | // for (i = 0; i < 100; i++) { |
||
43 | //// DEBUG10f("i = %d, v1 = %.4f, v2 = %.4f \n", i, rs_noise(kk+100, kk+i)*10, rs_noise(kk+200, kk+i+300)*10); |
||
44 | // c = (0.5+0.45*rs_noise(kk+150, kk+i))*255; |
||
45 | // c2 = c + 0.05*rs_noise(kk+150, kk+i)*255; |
||
46 | // c3 = c2; // (0.5+0.49*rs_noise(kk+150, kk+i+2))*255; |
||
47 | // texture_set_pixel(&game.framebuffer, (0.5+0.49*rs_noise(kk+1100, kk+i))*GAME_WIDTH, (0.5+0.49*rs_noise(kk+1200, kk+i+1300))*GAME_HEIGHT, |
||
48 | // c + (c2<<8) + (c3<<16) + 0xFF000000); |
||
49 | // }; |
||
50 | |||
51 | // texture_clear(&game.tex_ground, COLOR_TRANSPARENT); |
||
52 | // rs_perlin_configure(47, 4, 0.5, 1000, 256); |
||
53 | // for (i = 0; i < game.tex_ground.w; i++) { |
||
54 | // texture_draw_vline(&game.tex_ground, i, 25 + rs_perlin(0,i+game.tz)*25, 2, 0xFF113300); |
||
55 | // texture_draw_vline(&game.tex_ground, i, 25 + rs_perlin(0,i+game.tz)*25 + 2, 999, 0xFF000000); |
||
56 | // }; |
||
57 | // |
||
58 | //// texture_draw(&game.tex_ground, &game.tex_clouds, game.tz, 0, /* game.tx, game.ty, */ DRAW_MODE_ADDITIVE | DRAW_TILED_FLAG ); |
||
59 | // texture_draw(&game.framebuffer, &game.tex_ground, 0, GAME_HEIGHT-50, DRAW_MODE_ALPHA); |
||
60 | |||
61 | texture_draw(&game.framebuffer, &game.tex_bg, 0, 0, DRAW_MODE_REPLACE); |
||
62 | |||
63 | if ( (game.status == STATUS_MENU) || (game.status == STATUS_LOADING) ){ |
||
64 | |||
65 | // char **title = menu_titles[game.menu_index]; |
||
66 | // int y = (game.menu_index == MENU_MAIN) ? 280 : 250; |
||
67 | // texture_draw(&game.framebuffer, &game.tex_gui_line, 0, y+15*game.menu_item_index, DRAW_MODE_ALPHA); |
||
68 | // while (*title) { |
||
69 | // game_textout(20, y, (*(title))[0]==' ' ? 3 : 0 , (*(title))+1 ); // first (zero) char defines action, title starts from second (1st) char |
||
70 | // title++; |
||
71 | // y+=15; |
||
72 | // }; |
||
73 | |||
74 | if (game.menu_index == MENU_MAIN) { |
||
75 | |||
76 | if (game.status == STATUS_LOADING) { |
||
77 | game_textout( GAME_WIDTH/2 - 192, 240, 0, " L0ADING``` " ); |
||
78 | } |
||
79 | else { |
||
80 | // game_textout( GAME_WIDTH/2 - 192, 100, 1, "MARBLE"); |
||
81 | // game_textout( GAME_WIDTH/2 - 192, 160, 1, "MATCH3"); |
||
82 | |||
83 | texture_draw( &game.framebuffer, &game.tex_logo, 0, 50, DRAW_MODE_ALPHA ); |
||
84 | |||
85 | if (game.time) { |
||
86 | |||
87 | game_textout( GAME_WIDTH/2 - 192, 230, 3, " LEVEL PA55ED " ); |
||
88 | |||
89 | char s[] = " TIME: 000 "; |
||
90 | int time_sec = game.time / 25; |
||
91 | s[11] = '0' + (( time_sec / 100 ) % 10); |
||
92 | s[12] = '0' + (( time_sec / 10 ) % 10); |
||
93 | s[13] = '0' + (( time_sec / 1 ) % 10); |
||
94 | game_textout( GAME_WIDTH/2 - 192, 260, 3, s ); |
||
95 | }; |
||
96 | |||
97 | game_textout( GAME_WIDTH/2 - 192, 300, 0, " CLICK T0 5TART " ); |
||
98 | |||
99 | |||
100 | }; |
||
101 | |||
102 | game_textout( 2, GAME_HEIGHT-10, 2, "DEVEL0PED BY R0MAN 5HUVAL0V"); |
||
103 | }; |
||
104 | |||
105 | } |
||
106 | else { |
||
107 | |||
108 | int i, j; |
||
109 | for (i = 0; i < FIELD_HEIGHT; i++) { |
||
110 | for (j = 0; j < FIELD_WIDTH; j++) { |
||
111 | if ( IS_BIT_SET( game.field[i*FIELD_WIDTH + j], CRYSTAL_VISIBLE_BIT )) { |
||
112 | texture_draw( &game.framebuffer, &game.tex_crystals[ game.field[i*FIELD_WIDTH + j] & CRYSTAL_INDEX_MASK ], FIELD_X0+ j*CRYSTAL_SIZE, FIELD_Y0+ i*CRYSTAL_SIZE, DRAW_MODE_ALPHA ); |
||
113 | if (game.selected) { |
||
114 | if ( (j == game.selected_x) && (i == game.selected_y) ) { |
||
115 | texture_draw( &game.framebuffer, &game.tex_cursor, FIELD_X0+ j*CRYSTAL_SIZE, FIELD_Y0+ i*CRYSTAL_SIZE, DRAW_MODE_ALPHA ); |
||
116 | }; |
||
117 | }; |
||
118 | }; |
||
119 | }; |
||
120 | }; |
||
121 | |||
122 | for (i = 0; i < game.explosions_count; i++) { |
||
123 | texture_draw( &game.framebuffer, &(game.tex_explosion[ (game.explosions[i]>>16) & 0xFF ]), |
||
124 | FIELD_X0 + CRYSTAL_SIZE*( game.explosions[i] & 0xFF) - (EXPLOSION_SIZE-CRYSTAL_SIZE)/2 , |
||
125 | FIELD_Y0 + CRYSTAL_SIZE*( (game.explosions[i]>>8) & 0xFF) - (EXPLOSION_SIZE-CRYSTAL_SIZE)/2 , |
||
126 | DRAW_MODE_ALPHA); |
||
127 | }; |
||
128 | |||
129 | |||
130 | char str[] = "TIME: 999 "; |
||
131 | int time_sec = game.time / 25; |
||
132 | str[6] = '0' + ( (time_sec / 100) % 10); |
||
133 | str[7] = '0' + ( (time_sec / 10) % 10); |
||
134 | str[8] = '0' + ( (time_sec / 1) % 10); |
||
135 | |||
136 | game_textout( 32, 32, 3, str ); |
||
137 | |||
138 | char sstr[] = "5C0RE: 000 0F 100 "; |
||
139 | sstr[7] = '0' + ( (game.score / 100) % 10); |
||
140 | sstr[8] = '0' + ( (game.score / 10) % 10); |
||
141 | sstr[9] = '0' + ( (game.score / 1) % 10); |
||
142 | |||
143 | game_textout( 32, GAME_HEIGHT-48, 3, sstr ); |
||
144 | |||
145 | // char s[] = "YOUR TIME: 000"; |
||
146 | // s[11] = '3'; |
||
147 | // s[12] = '9'; |
||
148 | // s[13] = '4'; |
||
149 | //game_textout( GAME_WIDTH/2 - 192, 260, 0, s ); |
||
150 | |||
151 | |||
152 | // texture_draw(&game.framebuffer, &game.tex_ship[0], game.tx-8, game.ty-4, DRAW_MODE_ALPHA); |
||
153 | // texture_draw(&game.framebuffer, &game.tex_ship[1], game.tx-8, game.ty-4, DRAW_MODE_ALPHA); |
||
154 | // texture_draw(&game.framebuffer, &game.tex_ship[2], game.tx, game.ty-4, DRAW_MODE_ALPHA); |
||
155 | // texture_draw(&game.framebuffer, &game.tex_ship[3], game.tx, game.ty-4, DRAW_MODE_ALPHA); |
||
156 | |||
157 | // int i; |
||
158 | // for (i = 0; i < BULLETS_COUNT; i++) { |
||
159 | // if (game.bullet_y[i]) { |
||
160 | // texture_set_pixel(&game.framebuffer, game.bullet_x[i]-4, game.bullet_y[i], 0xFF00BB00); |
||
161 | // texture_set_pixel(&game.framebuffer, game.bullet_x[i]-3, game.bullet_y[i], 0xFF00CC00); |
||
162 | // texture_set_pixel(&game.framebuffer, game.bullet_x[i]-2, game.bullet_y[i], 0xFF00DD00); |
||
163 | // texture_set_pixel(&game.framebuffer, game.bullet_x[i]-1, game.bullet_y[i], 0xFF00EE00); |
||
164 | // texture_set_pixel(&game.framebuffer, game.bullet_x[i]-0, game.bullet_y[i], 0xFF00FF00); |
||
165 | // }; |
||
166 | // }; |
||
167 | |||
168 | // game_textout( 2, 2, 2, L_TECHDEMO_LINE1 ); |
||
169 | // game_textout( 2, 12, 2, L_TECHDEMO_LINE2 ); |
||
170 | |||
171 | }; |
||
172 | |||
173 | |||
174 | rskos_draw_area(0, 0, w, h, game.window_scale, game.framebuffer.data, game.scaled_framebuffer); |
||
175 | |||
176 | };>>>>>16)><16)>8)><8)>>> |
||
177 |