hadean-godot/ResourceScripts/FieldRequirements/FieldRequirement.gd

40 lines
1.2 KiB
GDScript
Raw Normal View History

2025-10-10 03:01:08 -04:00
extends Resource
class_name FieldRequirement
func is_satisfied_at_position(grid: Grid, pos: Vector2i) -> bool:
match self.get_script():
FieldMin:
var req = self as FieldMin
var value = grid.get_field_value_at(req.field, pos)
var min = req.min
return value >= min
FieldMax:
var req = self as FieldMax
var value = grid.get_field_value_at(req.field, pos)
var max = req.max
return value <= max
FieldRange:
var req = self as FieldMax
var value = grid.get_field_value_at(req.field, pos)
var min = req.min
var max = req.max
return min <= value <= max
FieldComparison:
var req = self as FieldComparison
var left = grid.get_field_value_at(req.field_left, pos)
var right = grid.get_field_value_at(req.field_right, pos)
match req.operation:
FieldComparison.Operation.LessThan: left < right
FieldComparison.Operation.GreaterThan: left > right
assert(false, "Unknown Field Requirement!")
return false
#var current_field_value = grid.get_field_value_at(requirement.field, tile_pos)
#if requirement.enforce_min && current_field_value < requirement.minimum: return false
#if requirement.enforce_max && current_field_value > requirement.maximum: return false
return true