From 3617d243189ec7076bec045d04e4a96ff55a8de8 Mon Sep 17 00:00:00 2001 From: tron Date: Fri, 28 Jan 2005 15:31:04 +0000 Subject: (svn r1706) Implement ScaleByMapSize() and ScaleByMapSize1D() These scale a number relative to the map size/circumference. Use them to scale the amount of map objects. Of course at the moment they return just the input, because there are no bigger/smaller maps yet. --- map.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'map.c') diff --git a/map.c b/map.c index 81a72b28b..6e9721b3b 100644 --- a/map.c +++ b/map.c @@ -54,6 +54,28 @@ TileIndex TileAdd(TileIndex tile, TileIndexDiff add, #endif +uint ScaleByMapSize(uint n) +{ + int shift = (int)MapLogX() - 8 + (int)MapLogY() - 8; + + if (shift < 0) + return (n + (1 << -shift) - 1) >> -shift; + else + return n << shift; +} + + +uint ScaleByMapSize1D(uint n) +{ + int shift = ((int)MapLogX() - 8 + (int)MapLogY() - 8) / 2; + + if (shift < 0) + return (n + (1 << -shift) - 1) >> -shift; + else + return n << shift; +} + + const TileIndexDiffC _tileoffs_by_dir[] = { {-1, 0}, { 0, 1}, -- cgit v1.2.3-54-g00ecf