- if (solidity < type->min_solidity || solidity > type->max_solidity) continue;
- if (humidity < type->min_humidity || humidity > type->max_humidity) continue;
- if (temperature < type->min_temperature || temperature > type->max_temperature) continue;
- if (richness < type->min_richness || richness > type->max_richness) continue;
- float solidity_match = 4.0f - ((solidity - type->mid_solidity) * (solidity - type->mid_solidity));
- float humidity_match = 4.0f - ((humidity - type->mid_humidity) * (humidity - type->mid_humidity));
- float temperature_match = 4.0f - ((temperature - type->mid_temperature) * (temperature - type->mid_temperature));
- float richness_match = 4.0f - ((richness - type->mid_richness) * (richness - type->mid_richness));
+ if (!type->solidity.Valid(solidity)) continue;
+ if (!type->humidity.Valid(humidity)) continue;
+ if (!type->temperature.Valid(temperature)) continue;
+ if (!type->richness.Valid(richness)) continue;
+ float solidity_match = type->solidity.Map(solidity);
+ float humidity_match = type->humidity.Map(humidity);
+ float temperature_match = type->temperature.Map(temperature);
+ float richness_match = type->richness.Map(richness);