(svn r1312) -Add: Patch which is on by default: population in label of the town
authortruelight
Fri, 31 Dec 2004 18:57:24 +0000
changeset 835 a22d6bc16a51
parent 834 5486b7740f33
child 836 2874738bce7c
(svn r1312) -Add: Patch which is on by default: population in label of the town
-Fix: Expand town is a bit more agressive
-Fix: Fixed a bug in growing algorithm
lang/english.txt
settings.c
settings_gui.c
texteff.c
town.h
town_cmd.c
variables.h
viewport.c
viewport.h
--- a/lang/english.txt	Fri Dec 31 15:55:14 2004 +0000
+++ b/lang/english.txt	Fri Dec 31 18:57:24 2004 +0000
@@ -1020,6 +1020,7 @@
 STR_CONFIG_PATCHES_AUTORENEW_MONTHS				:{LTBLUE}Autorenew when vehice is {ORANGE}{STRING}{LTBLUE} months before/after max age
 STR_CONFIG_PATCHES_AUTORENEW_MONEY				:{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_ERRMSG_DURATION				:{LTBLUE}Duration of error message: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_POPULATION_IN_LABEL		:{LTBLUE}Show the population of a town in his label: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_INVISIBLE_TREES				:{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING}
 STR_CONFIG_PATCHES_SNOWLINE_HEIGHT				:{LTBLUE}Snow line height: {ORANGE}{STRING}
 STR_CONFIG_PATCHES_STATION_SPREAD				:{LTBLUE}Max station spread: {ORANGE}{STRING} {RED}Warning: High setting slows game
@@ -1482,6 +1483,7 @@
 
 ##id 0x2000
 STR_2000_TOWNS							:{WHITE}Towns
+STR_TOWN_LABEL_POP					:{WHITE}{STRING} ({COMMA16})
 STR_2001							:{WHITE}{STRING}
 STR_2002							:{TINYFONT}{BLACK}{STRING}
 STR_2003							:{TINYFONT}{WHITE}{STRING}
--- a/settings.c	Fri Dec 31 15:55:14 2004 +0000
+++ b/settings.c	Fri Dec 31 18:57:24 2004 +0000
@@ -826,6 +826,8 @@
 	{"autorenew_months",		SDT_INT16,	(void*)-6,		&_patches.autorenew_months,			NULL},
 	{"autorenew_money",			SDT_INT32,	(void*)100000,&_patches.autorenew_money,			NULL},
 
+	{"population_in_label",	SDT_BOOL,		(void*)true,	&_patches.population_in_label,	NULL},
+
 	{NULL,									0,					NULL,					NULL,																						NULL}
 };
 
--- a/settings_gui.c	Fri Dec 31 15:55:14 2004 +0000
+++ b/settings_gui.c	Fri Dec 31 18:57:24 2004 +0000
@@ -10,6 +10,7 @@
 #include "newgrf.h"
 #include "network.h"
 #include "console.h"
+#include "town.h"
 
 static uint32 _difficulty_click_a;
 static uint32 _difficulty_click_b;
@@ -526,6 +527,19 @@
   return 0;
 }
 
+int32 PopulationInLabelActive(int32 p1)
+{
+	Town *t;
+
+	FOR_ALL_TOWNS(t) {
+		if (t->xy) {
+			UpdateTownVirtCoord(t);
+		}
+	}
+
+	return 0;
+}
+
 int32 InvisibleTreesActive(int32 p1)
 {
 	MarkWholeScreenDirty();
@@ -598,6 +612,7 @@
 	{PE_UINT8,	PF_MULTISTRING | PF_PLAYERBASED, STR_CONFIG_PATCHES_TOOLBAR_POS, "toolbar_pos", &_patches.toolbar_pos,			0,  2,  1, &v_PositionMainToolbar},
 	{PE_UINT8,	PF_0ISDIS | PF_PLAYERBASED, STR_CONFIG_PATCHES_SNAP_RADIUS, "window_snap_radius", &_patches.window_snap_radius,     1, 32,  1, NULL},
 	{PE_BOOL,		PF_PLAYERBASED, STR_CONFIG_PATCHES_INVISIBLE_TREES,	"invisible_trees", &_patches.invisible_trees,					0,  1,  1, &InvisibleTreesActive},
+	{PE_BOOL,		PF_PLAYERBASED, STR_CONFIG_PATCHES_POPULATION_IN_LABEL, "population_in_label", &_patches.population_in_label, 0, 1, 1, &PopulationInLabelActive},
 };
 
 static const PatchEntry _patches_construction[] = {
--- a/texteff.c	Fri Dec 31 15:55:14 2004 +0000
+++ b/texteff.c	Fri Dec 31 18:57:24 2004 +0000
@@ -281,7 +281,7 @@
 					(int16)(dpi->left + dpi->width) <= te->x ||
 					(int16)(dpi->top + dpi->height) <= te->y)
 						continue;
-			AddStringToDraw(te->x, te->y, te->string_id, te->params_1, te->params_2);
+			AddStringToDraw(te->x, te->y, te->string_id, te->params_1, te->params_2, 0);
 		}
 	} else if (dpi->zoom == 1) {
 		for (te = _text_effect_list; te != endof(_text_effect_list); te++ ) {
@@ -294,7 +294,7 @@
 					(dpi->left + dpi->width) <= te->x ||
 					(dpi->top + dpi->height) <= te->y)
 						continue;
-			AddStringToDraw(te->x, te->y, (StringID)(te->string_id-1), te->params_1, te->params_2);
+			AddStringToDraw(te->x, te->y, (StringID)(te->string_id-1), te->params_1, te->params_2, 0);
 		}
 
 	}
--- a/town.h	Fri Dec 31 15:55:14 2004 +0000
+++ b/town.h	Fri Dec 31 18:57:24 2004 +0000
@@ -74,6 +74,7 @@
 };
 
 
+void UpdateTownVirtCoord(Town *t);
 void InitializeTown();
 void ShowTownViewWindow(uint town);
 void DeleteTown(Town *t);
--- a/town_cmd.c	Fri Dec 31 15:55:14 2004 +0000
+++ b/town_cmd.c	Fri Dec 31 18:57:24 2004 +0000
@@ -171,11 +171,32 @@
 	return false;
 }
 
+static void MarkTownSignDirty(Town *t)
+{
+	MarkAllViewportsDirty(
+		t->sign.left-6,
+		t->sign.top-3,
+		t->sign.left+t->sign.width_1*4+12,
+		t->sign.top + 45
+	);
+}
+
+void UpdateTownVirtCoord(Town *t)
+{
+	MarkTownSignDirty(t);
+	Point pt = RemapCoords2(GET_TILE_X(t->xy)*16, GET_TILE_Y(t->xy)*16);
+	SetDParam(0, t->townnametype);
+	SetDParam(1, t->townnameparts);
+	SetDParam(2, t->population);
+	UpdateViewportSignPos(&t->sign, pt.x, pt.y - 24, _patches.population_in_label ? STR_TOWN_LABEL_POP : STR_2001);
+	MarkTownSignDirty(t);
+}
 
 static void ChangePopulation(Town *t, int mod)
 {
 	t->population += mod;
 	InvalidateWindow(WC_TOWN_VIEW, t->index);
+	UpdateTownVirtCoord(t);
 
 	if (_town_sort_order & 2) _town_sort_dirty = true;
 }
@@ -456,7 +477,9 @@
 			return false;
 		}
 
-		tile = TILE_ADD(tile, _roadblock_tileadd[dir]);
+		/* Can somebody explain for what this is needed? :s */
+		// tile = TILE_ADD(tile, _roadblock_tileadd[dir]);
+		return true;
 	}
 }
 
@@ -814,13 +837,6 @@
 	}
 }
 
-static void UpdateTownVirtCoord(Town *t)
-{
-	Point pt = RemapCoords2(GET_TILE_X(t->xy)*16, GET_TILE_Y(t->xy)*16);
-	SetDParam(0, t->townnameparts);
-	UpdateViewportSignPos(&t->sign, pt.x, pt.y - 24, t->townnametype);
-}
-
 static void CreateTownName(Town *t1)
 {
 	Town *t2;
@@ -1407,11 +1423,12 @@
 
 	_generating_world = true;
 
-	amount = ((int)Random()&3) + 3;
+	/* The more houses, the faster we grow */
+	amount = RandomRange(t->num_houses / 10) + 3;
 	t->num_houses += amount;
 	UpdateTownRadius(t);
 
-	n = amount * 4;
+	n = amount * 10;
 	do GrowTown(t); while (--n);
 
 	t->num_houses -= amount;
--- a/variables.h	Fri Dec 31 15:55:14 2004 +0000
+++ b/variables.h	Fri Dec 31 18:57:24 2004 +0000
@@ -179,6 +179,8 @@
 
 	byte drag_signals_density; // many signals density
 	bool ainew_active;  // Is the new AI active?
+
+	bool population_in_label; // Show the population of a town in his label?
 } Patches;
 
 VARDEF Patches _patches;
--- a/viewport.c	Fri Dec 31 15:55:14 2004 +0000
+++ b/viewport.c	Fri Dec 31 18:57:24 2004 +0000
@@ -20,7 +20,7 @@
 	struct StringSpriteToDraw *next;
 	int16 x;
 	int16 y;
-	uint32 params[2];
+	uint32 params[3];
 	uint16 width;
 } StringSpriteToDraw;
 
@@ -499,7 +499,7 @@
 }
 
 /* Returns a StringSpriteToDraw */
-void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2)
+void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2, uint32 params_3)
 {
 	ViewportDrawer *vd = _cur_vd;
 	StringSpriteToDraw *ss;
@@ -518,6 +518,7 @@
 	ss->y = y;
 	ss->params[0] = params_1;
 	ss->params[1] = params_2;
+	ss->params[2] = params_3;
 	ss->width = 0;
 
 	*vd->last_string = ss;
@@ -751,7 +752,7 @@
 					right > t->sign.left &&
 					left < t->sign.left + t->sign.width_1) {
 
-				AddStringToDraw(t->sign.left + 1, t->sign.top + 1, STR_2001, t->townnametype, t->townnameparts);
+				AddStringToDraw(t->sign.left + 1, t->sign.top + 1, _patches.population_in_label ? STR_TOWN_LABEL_POP : STR_2001, t->townnametype, t->townnameparts, t->population);
 			}
 		}
 	} else if (dpi->zoom == 1) {
@@ -765,7 +766,7 @@
 					right > t->sign.left &&
 					left < t->sign.left + t->sign.width_1*2) {
 
-				AddStringToDraw(t->sign.left + 1, t->sign.top + 1, STR_2001, t->townnametype, t->townnameparts);
+				AddStringToDraw(t->sign.left + 1, t->sign.top + 1, _patches.population_in_label ? STR_TOWN_LABEL_POP : STR_2001, t->townnametype, t->townnameparts, t->population);
 			}
 		}
 	} else {
@@ -780,8 +781,8 @@
 					right > t->sign.left &&
 					left < t->sign.left + t->sign.width_2*4) {
 
-				AddStringToDraw(t->sign.left + 5, t->sign.top + 1, STR_2002, t->townnametype, t->townnameparts);
-				AddStringToDraw(t->sign.left + 1, t->sign.top - 3, STR_2003, t->townnametype, t->townnameparts);
+				AddStringToDraw(t->sign.left + 5, t->sign.top + 1, STR_2002, t->townnametype, t->townnameparts, 0);
+				AddStringToDraw(t->sign.left + 1, t->sign.top - 3, STR_2003, t->townnametype, t->townnameparts, 0);
 			}
 		}
 	}
@@ -809,7 +810,7 @@
 					right > st->sign.left &&
 					left < st->sign.left + st->sign.width_1) {
 
-				sstd=AddStringToDraw(st->sign.left + 1, st->sign.top + 1, STR_305C_0, st->index, st->facilities);
+				sstd=AddStringToDraw(st->sign.left + 1, st->sign.top + 1, STR_305C_0, st->index, st->facilities, 0);
 				if (sstd != NULL) {
 					sstd->color = (st->owner == OWNER_NONE || !st->facilities) ? 0xE : _player_colors[st->owner];
 					sstd->width = st->sign.width_1;
@@ -827,7 +828,7 @@
 					right > st->sign.left &&
 					left < st->sign.left + st->sign.width_1*2) {
 
-				sstd=AddStringToDraw(st->sign.left + 1, st->sign.top + 1, STR_305C_0, st->index, st->facilities);
+				sstd=AddStringToDraw(st->sign.left + 1, st->sign.top + 1, STR_305C_0, st->index, st->facilities, 0);
 				if (sstd != NULL) {
 					sstd->color = (st->owner == OWNER_NONE || !st->facilities) ? 0xE : _player_colors[st->owner];
 					sstd->width = st->sign.width_1;
@@ -848,7 +849,7 @@
 					right > st->sign.left &&
 					left < st->sign.left + st->sign.width_2*4) {
 
-				sstd=AddStringToDraw(st->sign.left + 1, st->sign.top + 1, STR_305D_0, st->index, st->facilities);
+				sstd=AddStringToDraw(st->sign.left + 1, st->sign.top + 1, STR_305D_0, st->index, st->facilities, 0);
 				if (sstd != NULL) {
 					sstd->color = (st->owner == OWNER_NONE || !st->facilities) ? 0xE : _player_colors[st->owner];
 					sstd->width = st->sign.width_2 | 0x8000;
@@ -880,7 +881,7 @@
 					right > ss->sign.left &&
 					left < ss->sign.left + ss->sign.width_1) {
 
-				sstd=AddStringToDraw(ss->sign.left + 1, ss->sign.top + 1, STR_2806, ss->str, 0);
+				sstd=AddStringToDraw(ss->sign.left + 1, ss->sign.top + 1, STR_2806, ss->str, 0, 0);
 				if (sstd != NULL) {
 					sstd->width = ss->sign.width_1;
 					sstd->color = 14;
@@ -897,7 +898,7 @@
 					right > ss->sign.left &&
 					left < ss->sign.left + ss->sign.width_1*2) {
 
-				sstd=AddStringToDraw(ss->sign.left + 1, ss->sign.top + 1, STR_2806, ss->str, 0);
+				sstd=AddStringToDraw(ss->sign.left + 1, ss->sign.top + 1, STR_2806, ss->str, 0, 0);
 				if (sstd != NULL) {
 					sstd->width = ss->sign.width_1;
 					sstd->color = 14;
@@ -915,7 +916,7 @@
 					right > ss->sign.left &&
 					left < ss->sign.left + ss->sign.width_2*4) {
 
-				sstd=AddStringToDraw(ss->sign.left + 1, ss->sign.top + 1, STR_2807, ss->str, 0);
+				sstd=AddStringToDraw(ss->sign.left + 1, ss->sign.top + 1, STR_2807, ss->str, 0, 0);
 				if (sstd != NULL) {
 					sstd->width = ss->sign.width_2 | 0x8000;
 					sstd->color = 14;
@@ -948,7 +949,7 @@
 					right > cp->sign.left &&
 					left < cp->sign.left + cp->sign.width_1) {
 
-				sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT, cp - _waypoints, 0);
+				sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT, cp - _waypoints, 0, 0);
 				if (sstd != NULL) {
 					sstd->width = cp->sign.width_1;
 					sstd->color = (cp->deleted ? 0xE : 11);
@@ -965,7 +966,7 @@
 					right > cp->sign.left &&
 					left < cp->sign.left + cp->sign.width_1*2) {
 
-				sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT, cp - _waypoints, 0);
+				sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT, cp - _waypoints, 0, 0);
 				if (sstd != NULL) {
 					sstd->width = cp->sign.width_1;
 					sstd->color = (cp->deleted ? 0xE : 11);
@@ -983,7 +984,7 @@
 					right > cp->sign.left &&
 					left < cp->sign.left + cp->sign.width_2*4) {
 
-				sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT_TINY, cp - _waypoints, 0);
+				sstd=AddStringToDraw(cp->sign.left + 1, cp->sign.top + 1, STR_WAYPOINT_VIEWPORT_TINY, cp - _waypoints, 0, 0);
 				if (sstd != NULL) {
 					sstd->width = cp->sign.width_2 | 0x8000;
 					sstd->color = (cp->deleted ? 0xE : 11);
@@ -1111,9 +1112,10 @@
 
 		SetDParam(0, ss->params[0]);
 		SetDParam(1, ss->params[1]);
+		SetDParam(2, ss->params[2]);
 		if (_display_opt & DO_TRANS_BUILDINGS && ss->width != 0) {
 			/* Real colors need the IS_PALETTE_COLOR flag, otherwise colors from _string_colormap are assumed. */
-			DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string, 
+			DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string,
 			           (_color_list[ss->color].window_color_bgb | IS_PALETTE_COLOR));
 		} else {
 			DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string, 16);
--- a/viewport.h	Fri Dec 31 15:55:14 2004 +0000
+++ b/viewport.h	Fri Dec 31 18:57:24 2004 +0000
@@ -27,7 +27,7 @@
 void DrawGroundSprite(uint32 image);
 void DrawGroundSpriteAt(uint32 image, int16 x, int16 y, byte z);
 void AddSortableSpriteToDraw(uint32 image, int x, int y, int w, int h, byte dz, byte z);
-void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2);
+void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2, uint32 params_3);
 void AddChildSpriteScreen(uint32 image, int x, int y);