summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2006-12-18 15:34:12 +0000
committerglx <glx@openttd.org>2006-12-18 15:34:12 +0000
commit64bf2432bbf643bb36e46c6668f6b7d880c3f989 (patch)
tree3054f7ea9cecf4bfccf3102ccf24bef93ed836da
parent32db875d978fd59c6dc941c61d331d4a1b20a24a (diff)
downloadopenttd-64bf2432bbf643bb36e46c6668f6b7d880c3f989.tar.xz
(svn r7506) -Codechange: [NewGRF] Add action 7/9/D variable 0x81 (current year)
-rw-r--r--genworld.c6
-rw-r--r--newgrf.c3
-rw-r--r--openttd.c7
3 files changed, 12 insertions, 4 deletions
diff --git a/genworld.c b/genworld.c
index 9872270b0..70bb983c6 100644
--- a/genworld.c
+++ b/genworld.c
@@ -15,6 +15,7 @@
#include "debug.h"
#include "settings.h"
#include "heightmap.h"
+#include "date.h"
void GenerateLandscape(byte mode);
void GenerateClearTile(void);
@@ -252,11 +253,14 @@ void GenerateWorld(int mode, uint size_x, uint size_y)
/* Make sure everything is done via OWNER_NONE */
_current_player = OWNER_NONE;
+ /* Set the date before loading sprites as some newgrfs check it */
+ SetDate(ConvertYMDToDate(_patches.starting_year, 0, 1));
+
/* Load the right landscape stuff */
GfxLoadSprites();
LoadStringWidthTable();
- InitializeGame(IG_DATE_RESET, _gw.size_x, _gw.size_y);
+ InitializeGame(IG_NONE, _gw.size_x, _gw.size_y);
PrepareGenerateWorldProgress();
/* Re-init the windowing system */
diff --git a/newgrf.c b/newgrf.c
index 440cfbf31..73b900960 100644
--- a/newgrf.c
+++ b/newgrf.c
@@ -2193,6 +2193,9 @@ static void GraphicsNew(byte *buf, int len)
static uint32 GetParamVal(byte param, uint32 *cond_val)
{
switch (param) {
+ case 0x81: /* current year */
+ return clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR;
+
case 0x83: /* current climate, 0=temp, 1=arctic, 2=trop, 3=toyland */
return _opt.landscape;
diff --git a/openttd.c b/openttd.c
index 2cb3b7c1e..d91061395 100644
--- a/openttd.c
+++ b/openttd.c
@@ -1164,6 +1164,10 @@ bool AfterLoadGame(void)
/* Check all NewGRFs are present */
if (!IsGoodGRFConfigList()) return false;
+ /* Update current year
+ * must be done before loading sprites as some newgrfs check it */
+ SetDate(_date);
+
// Load the sprites
GfxLoadSprites();
LoadStringWidthTable();
@@ -1175,9 +1179,6 @@ bool AfterLoadGame(void)
/* Connect front and rear engines of multiheaded trains */
ConnectMultiheadedTrains();
- // Update current year
- SetDate(_date);
-
// reinit the landscape variables (landscape might have changed)
InitializeLandscapeVariables(true);