diff options
Diffstat (limited to 'src/game/client')
| -rw-r--r-- | src/game/client/game_client.cpp | 18 | ||||
| -rw-r--r-- | src/game/client/mapres_tilemap.cpp | 110 | ||||
| -rw-r--r-- | src/game/client/menu.cpp | 14 |
3 files changed, 81 insertions, 61 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index f253909f..c34e81ce 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -1239,7 +1239,23 @@ void modc_render() gfx_clear(0.65f,0.78f,0.9f); // draw the sun - render_sun(local_player_pos.x*0.5f, local_player_pos.y*0.5f); + render_sun(20+screen_x*0.6f, 20+screen_y*0.6f); + + + static vec2 cloud_pos[6] = {vec2(0,0),vec2(0,200),vec2(0,400)}; + static float cloud_speed[6] = {30, 20, 10}; + static int cloud_images[6] = {IMAGE_CLOUD_1, IMAGE_CLOUD_2, IMAGE_CLOUD_3}; + + for(int i = 0; i < 3; i++) + { + float parallax_amount = 0.55f; + gfx_texture_set(data->images[cloud_images[i]].id); + gfx_quads_begin(); + gfx_quads_drawTL((cloud_pos[i].x+fmod(client_localtime()*cloud_speed[i]+i*100.0f, 1000.0f))+screen_x*parallax_amount, + cloud_pos[i].y+screen_y*parallax_amount, 300, 300); + gfx_quads_end(); + } + // draw backdrop gfx_texture_set(data->images[IMAGE_BACKDROP].id); diff --git a/src/game/client/mapres_tilemap.cpp b/src/game/client/mapres_tilemap.cpp index 6038e67c..197a1a8b 100644 --- a/src/game/client/mapres_tilemap.cpp +++ b/src/game/client/mapres_tilemap.cpp @@ -5,8 +5,12 @@ #include <baselib/opengl.h> +bool must_init = true; +void *batches[32] = {0}; + int tilemap_init() { + must_init = true; return 0; } @@ -14,8 +18,7 @@ void tilemap_render(float scale, int fg) { if(!map_is_loaded()) return; - - + float screen_x0, screen_y0, screen_x1, screen_y1; gfx_getscreen(&screen_x0, &screen_y0, &screen_x1, &screen_y1); @@ -23,12 +26,6 @@ void tilemap_render(float scale, int fg) int start, num; map_get_type(MAPRES_TILEMAP, &start, &num); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - - // render tilemaps int passed_main = 0; for(int t = 0; t < num; t++) @@ -42,58 +39,69 @@ void tilemap_render(float scale, int fg) if((fg && passed_main) || (!fg && !passed_main)) { gfx_texture_set(img_get(tmap->image)); - gfx_quads_begin(); - float frac = (1.0f/1024.0f);//2.0f; //2.0f; - float texsize = 1024.0f; - float nudge = 0.5f/texsize; + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - int startx = (int)(screen_x0/scale) - 1; - int endx = (int)(screen_x1/scale) + 1; - int starty = (int)(screen_y0/scale) - 1; - int endy = (int)(screen_y1/scale) + 1; - for(int y = starty; y < endy; y++) - for(int x = startx; x < endx; x++) - { - int mx = x; - int my = y; - if(mx<0) mx = 0; - if(mx>=tmap->width) mx = tmap->width-1; - if(my<0) my = 0; - if(my>=tmap->height) my = tmap->height-1; - - int c = mx + my*tmap->width; - - unsigned char d = data[c*2]; - if(d) + if(!batches[t]) + { + gfx_quads_begin(); + + float frac = (1.0f/1024.0f);//2.0f; //2.0f; + float texsize = 1024.0f; + float nudge = 0.5f/texsize; + float s = 1.0f; + + for(int y = 0; y < tmap->height; y++) + for(int x = 0; x < tmap->width; x++) { - //gfx_quads_setsubset( - // (d%16)/16.0f*s+frac, - // (d/16)/16.0f*s+frac, - // ((d%16)/16.0f+1.0f/16.0f)*s-frac, - // ((d/16)/16.0f+1.0f/16.0f)*s-frac); + int mx = x; + int my = y; + if(mx<0) mx = 0; + if(mx>=tmap->width) mx = tmap->width-1; + if(my<0) my = 0; + if(my>=tmap->height) my = tmap->height-1; + + int c = mx + my*tmap->width; - int tx = d%16; - int ty = d/16; - int px0 = tx*(1024/16); - int py0 = ty*(1024/16); - int px1 = (tx+1)*(1024/16)-1; - int py1 = (ty+1)*(1024/16)-1; - gfx_quads_setsubset( - nudge + px0/texsize+frac, - nudge + py0/texsize+frac, - nudge + px1/texsize-frac, - nudge + py1/texsize-frac); + unsigned char d = data[c*2]; + if(d) + { + /* + gfx_quads_setsubset( + (d%16)/16.0f*s+frac, + (d/16)/16.0f*s+frac, + ((d%16)/16.0f+1.0f/16.0f)*s-frac, + ((d/16)/16.0f+1.0f/16.0f)*s-frac); + */ + + int tx = d%16; + int ty = d/16; + int px0 = tx*(1024/16); + int py0 = ty*(1024/16); + int px1 = (tx+1)*(1024/16)-1; + int py1 = (ty+1)*(1024/16)-1; + float z = -5.0f; + + gfx_quads_setsubset( + nudge + px0/texsize+frac, + nudge + py0/texsize+frac, + nudge + px1/texsize-frac, + nudge + py1/texsize-frac); - gfx_quads_drawTL(x*scale, y*scale, scale, scale); + gfx_quads_drawTL(x*scale, y*scale, scale, scale); + } } - } + + //gfx_quads_end(); + batches[t] = gfx_quads_create_batch(); + } - gfx_quads_end(); + gfx_quads_draw_batch(batches[t]); + //glCallList(lists_start+t); } } - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); } diff --git a/src/game/client/menu.cpp b/src/game/client/menu.cpp index 373da6e6..9143594e 100644 --- a/src/game/client/menu.cpp +++ b/src/game/client/menu.cpp @@ -43,7 +43,7 @@ enum gui_tileset_enum int gui_tileset_texture; int cursor_texture; -int cloud1_texture, cloud2_texture, cloud3_texture; +//int cloud1_texture, cloud2_texture, cloud3_texture; int menu_background_texture; int butterflies_texture; @@ -159,7 +159,7 @@ void draw_background(float t) render_sun(170, 170); - gfx_texture_set(cloud1_texture); + gfx_texture_set(data->images[IMAGE_CLOUD_1].id); gfx_quads_begin(); gfx_quads_setcolor(1,1,1,1); gfx_quads_setsubset( @@ -170,7 +170,7 @@ void draw_background(float t) gfx_quads_drawTL(3500 - fmod(t * 20 + 2000, 4524), 0, 512, 512); gfx_quads_end(); - gfx_texture_set(cloud2_texture); + gfx_texture_set(data->images[IMAGE_CLOUD_2].id); gfx_quads_begin(); gfx_quads_setcolor(1,1,1,1); gfx_quads_setsubset( @@ -181,7 +181,7 @@ void draw_background(float t) gfx_quads_drawTL(3000 - fmod(t * 50 + 1000, 4024), 150, 512, 512); gfx_quads_end(); - gfx_texture_set(cloud3_texture); + gfx_texture_set(data->images[IMAGE_CLOUD_3].id); gfx_quads_begin(); gfx_quads_setcolor(1,1,1,1); gfx_quads_setsubset( @@ -704,7 +704,6 @@ static int main_render() if (!inited) { inited = true; - client_serverbrowse_refresh(0); } @@ -914,7 +913,7 @@ static int settings_render() if (ui_do_button(&save_button, "Save", 0, 482, 490, 128, 48, draw_teewars_button)) { config = config_copy; - config_save("teewars.cfg"); + config_save("default.cfg"); screen = SCREEN_MAIN; } @@ -1143,9 +1142,6 @@ void modmenu_init() gui_tileset_texture = gfx_load_texture("data/gui/gui_widgets.png"); teewars_banner_texture = gfx_load_texture("data/gui_logo.png"); cursor_texture = gfx_load_texture("data/gui/cursor.png"); - cloud1_texture = gfx_load_texture("data/cloud-1.png"); - cloud2_texture = gfx_load_texture("data/cloud-2.png"); - cloud3_texture = gfx_load_texture("data/cloud-3.png"); menu_background_texture = gfx_load_texture("data/menu_background.png"); butterflies_texture = gfx_load_texture("data/menu_butterfly.png"); |