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