about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/game_client.cpp18
-rw-r--r--src/game/client/mapres_tilemap.cpp110
-rw-r--r--src/game/client/menu.cpp14
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");