Package squidpony.squidgrid.mapping
Class WorldMapGenerator.SimpleBiomeMapper
java.lang.Object
squidpony.squidgrid.mapping.WorldMapGenerator.SimpleBiomeMapper
- All Implemented Interfaces:
WorldMapGenerator.BiomeMapper
- Enclosing class:
- WorldMapGenerator
public static class WorldMapGenerator.SimpleBiomeMapper extends Object implements WorldMapGenerator.BiomeMapper
A way to get biome information for the cells on a map when you only need a single value to describe a biome, such
as "Grassland" or "TropicalRainforest".
To use: 1, Construct a SimpleBiomeMapper (constructor takes no arguments). 2, call
To use: 1, Construct a SimpleBiomeMapper (constructor takes no arguments). 2, call
makeBiomes(WorldMapGenerator)
with a WorldMapGenerator that has already produced at least one world map.
3, get biome codes from the biomeCodeData
field, where a code is an int that can be used as an index
into the biomeTable
static field to get a String name for a biome type, or used with an alternate biome
table of your design. Biome tables in this case are 61-element arrays organized into groups of 6 elements, with
the last element reserved for empty space where the map doesn't cover (as with some map projections). Each
group goes from the coldest temperature first to the warmest temperature last in the group. The first group of 6
contains the dryest biomes, the next 6 are medium-dry, the next are slightly-dry, the next slightly-wet, then
medium-wet, then wettest. After this first block of dry-to-wet groups, there is a group of 6 for coastlines, a
group of 6 for rivers, a group of 6 for lakes, a group of 6 for oceans, and then one element for space outside
the map. The last element, with code 60, is by convention the String "Empty", but normally the code should be
enough to tell that a space is off-map. This also assigns moisture codes and heat codes from 0 to 5 for each
cell, which may be useful to simplify logic that deals with those factors.-
Field Summary
Fields Modifier and Type Field Description int[][]
biomeCodeData
The heat codes for the analyzed map, from 0 to 5 inclusive, with 0 coldest and 5 hottest.static String[]
biomeTable
The default biome table to use with biome codes frombiomeCodeData
.static double
colderValueLower
static double
colderValueUpper
static double
coldestValueLower
static double
coldestValueUpper
static double
coldValueLower
static double
coldValueUpper
static double
drierValueLower
static double
drierValueUpper
static double
driestValueLower
static double
driestValueUpper
static double
dryValueLower
static double
dryValueUpper
int[][]
heatCodeData
The heat codes for the analyzed map, from 0 to 5 inclusive, with 0 coldest and 5 hottest.int[][]
moistureCodeData
The heat codes for the analyzed map, from 0 to 5 inclusive, with 0 coldest and 5 hottest.static double
warmerValueLower
static double
warmerValueUpper
static double
warmestValueLower
static double
warmestValueUpper
static double
warmValueLower
static double
warmValueUpper
static double
wetterValueLower
static double
wetterValueUpper
static double
wettestValueLower
static double
wettestValueUpper
static double
wetValueLower
static double
wetValueUpper
-
Constructor Summary
Constructors Constructor Description SimpleBiomeMapper()
Simple constructor; pretty much does nothing. -
Method Summary
Modifier and Type Method Description int
getBiomeCode(int x, int y)
Gets the most relevant biome code for a given x,y point on the map.String[]
getBiomeNameTable()
Gets a String array where biome codes can be used as indices to look up a name for the biome they refer to.int
getHeatCode(int x, int y)
Gets a heat code for a given x,y point on a map, usually as an int between 0 and 5 inclusive.int
getMoistureCode(int x, int y)
Gets a moisture code for a given x,y point on a map, usually as an int between 0 and 5 inclusive.void
makeBiomes(WorldMapGenerator world)
Analyzes the last world produced by the given WorldMapGenerator and uses all of its generated information to assign biome codes for each cell (along with heat and moisture codes).
-
Field Details
-
heatCodeData
The heat codes for the analyzed map, from 0 to 5 inclusive, with 0 coldest and 5 hottest. -
moistureCodeData
The heat codes for the analyzed map, from 0 to 5 inclusive, with 0 coldest and 5 hottest. -
biomeCodeData
The heat codes for the analyzed map, from 0 to 5 inclusive, with 0 coldest and 5 hottest. -
coldestValueLower
- See Also:
- Constant Field Values
-
coldestValueUpper
- See Also:
- Constant Field Values
-
colderValueLower
- See Also:
- Constant Field Values
-
colderValueUpper
- See Also:
- Constant Field Values
-
coldValueLower
- See Also:
- Constant Field Values
-
coldValueUpper
- See Also:
- Constant Field Values
-
warmValueLower
- See Also:
- Constant Field Values
-
warmValueUpper
- See Also:
- Constant Field Values
-
warmerValueLower
- See Also:
- Constant Field Values
-
warmerValueUpper
- See Also:
- Constant Field Values
-
warmestValueLower
- See Also:
- Constant Field Values
-
warmestValueUpper
- See Also:
- Constant Field Values
-
driestValueLower
- See Also:
- Constant Field Values
-
driestValueUpper
- See Also:
- Constant Field Values
-
drierValueLower
- See Also:
- Constant Field Values
-
drierValueUpper
- See Also:
- Constant Field Values
-
dryValueLower
- See Also:
- Constant Field Values
-
dryValueUpper
- See Also:
- Constant Field Values
-
wetValueLower
- See Also:
- Constant Field Values
-
wetValueUpper
- See Also:
- Constant Field Values
-
wetterValueLower
- See Also:
- Constant Field Values
-
wetterValueUpper
- See Also:
- Constant Field Values
-
wettestValueLower
- See Also:
- Constant Field Values
-
wettestValueUpper
- See Also:
- Constant Field Values
-
biomeTable
The default biome table to use with biome codes frombiomeCodeData
. Biomes are assigned based on heat and moisture for the first 36 of 61 elements (coldest to warmest for each group of 6, with the first group as the dryest and the last group the wettest), then the next 6 are for coastlines (coldest to warmest), then rivers (coldest to warmest), then lakes (coldest to warmest), then oceans (coldest to warmest), and lastly a single "biome" for empty space outside the map (meant for projections that don't fill a rectangle).
-
-
Constructor Details
-
SimpleBiomeMapper
public SimpleBiomeMapper()Simple constructor; pretty much does nothing. Make sure to callmakeBiomes(WorldMapGenerator)
before using fields likebiomeCodeData
.
-
-
Method Details
-
getBiomeCode
Description copied from interface:WorldMapGenerator.BiomeMapper
Gets the most relevant biome code for a given x,y point on the map. Some mappers can store more than one biome at a location, but only the one with the highest influence will be returned by this method. Biome codes are always ints, and are typically between 0 and 60, both inclusive; they are meant to be used as indices into a table of names or other objects that identify a biome, accessible viaWorldMapGenerator.BiomeMapper.getBiomeNameTable()
. Although different classes may define biome codes differently, they should all be able to be used as indices into the String array returned by getBiomeNameTable().- Specified by:
getBiomeCode
in interfaceWorldMapGenerator.BiomeMapper
- Parameters:
x
- the x-coordinate on the mapy
- the y-coordinate on the map- Returns:
- an int that can be used as an index into the array returned by
WorldMapGenerator.BiomeMapper.getBiomeNameTable()
-
getHeatCode
Description copied from interface:WorldMapGenerator.BiomeMapper
Gets a heat code for a given x,y point on a map, usually as an int between 0 and 5 inclusive. Some implementations may use more or less detail for heat codes, but 0 is always the coldest code used, and the highest value this can return for a given implementation refers to the hottest code used.- Specified by:
getHeatCode
in interfaceWorldMapGenerator.BiomeMapper
- Parameters:
x
- the x-coordinate on the mapy
- the y-coordinate on the map- Returns:
- an int that can be used to categorize how hot an area is, with 0 as coldest
-
getMoistureCode
Description copied from interface:WorldMapGenerator.BiomeMapper
Gets a moisture code for a given x,y point on a map, usually as an int between 0 and 5 inclusive. Some implementations may use more or less detail for moisture codes, but 0 is always the driest code used, and the highest value this can return for a given implementation refers to the wettest code used. Some implementations may allow seasonal change in moisture, e.g. monsoon seasons, to be modeled differently from average precipitation in an area, but the default assumption is that this describes the average amount of moisture (rain, humidity, and possibly snow/hail or other precipitation) that an area receives annually.- Specified by:
getMoistureCode
in interfaceWorldMapGenerator.BiomeMapper
- Parameters:
x
- the x-coordinate on the mapy
- the y-coordinate on the map- Returns:
- an int that can be used to categorize how much moisture an area tends to receive, with 0 as driest
-
getBiomeNameTable
Gets a String array where biome codes can be used as indices to look up a name for the biome they refer to. This table uses 6 levels of heat and 6 levels of moisture, and tracks rivers, coastlines, lakes, and oceans as potentially different types of terrain. Biome codes can be obtained withgetBiomeCode(int, int)
. This method returns a direct reference tobiomeTable
, so modifying the returned array is discouraged (you should implementWorldMapGenerator.BiomeMapper
using this class as a basis if you want to change its size).- Specified by:
getBiomeNameTable
in interfaceWorldMapGenerator.BiomeMapper
- Returns:
- a direct reference to
biomeTable
, a String array containing names of biomes
-
makeBiomes
Analyzes the last world produced by the given WorldMapGenerator and uses all of its generated information to assign biome codes for each cell (along with heat and moisture codes). After calling this, biome codes can be taken frombiomeCodeData
and used as indices intobiomeTable
or a custom biome table.- Specified by:
makeBiomes
in interfaceWorldMapGenerator.BiomeMapper
- Parameters:
world
- a WorldMapGenerator that should have generated at least one map; it may be at any zoom
-