Class PositionerPolicy
- Namespace
- GridPlacement.GDScript
- Assembly
- MoonBark.GridPlacement.GDScript.dll
Injectable positioning policy for GridPositioner2D.\n\nEncapsulates all positioning decisions (visibility, recenter, mouse follow, clamping) as instance methods with injected [member _settings]. Previously these were static methods on [code]GridPositionerLogic[/code]; the class is now [code]PositionerPolicy[/code] (Strategy pattern: different games can inject different policies).\n\nUsage: var policy := PositionerPolicy.new() policy.configure(targeting_settings) var decision := policy.recenter_on_enable_decision(has_cache, mouse_ok, vp_ok)
class PositionerPolicy extends RefCounted
PositionerPolicy
Fields
ProjectionMethod
const ProjectionMethod = PlacementEnums.ProjectionMethod
RecenterDecision
Recenter-on-enable decision outcomes.
const RecenterDecision = {
Properties
mode_val
var mode_val: String = PlacementEnums.mode_to_string(mode_state.current) if mode_state != null else "<none>"
last_allowed
var last_allowed: String = str(last_mouse_input_status != null and last_mouse_input_status.allowed)
mouse_enabled
var mouse_enabled: String = str(_settings.enable_mouse_input) if _settings != null else "<n/a>"
computed_should
var computed_should: String = str(should_be_visible(mode_state.current if mode_state else PlacementEnums.Mode.OFF, last_mouse_input_status, has_mouse_world))
res
var res = MouseEventVisibilityResult.new()
res
var res = MouseEventVisibilityResult.new()
res
var res = MouseEventVisibilityResult.new()
is_hide_on_handled_active
var is_hide_on_handled_active = _settings != null and _settings.hide_on_handled and _settings.enable_mouse_input
last_mouse_blocked
var last_mouse_blocked = last_mouse_input_status != null and not last_mouse_input_status.allowed
might_be_hidden_by_handled
var might_be_hidden_by_handled = is_hide_on_handled_active and last_mouse_blocked and not current_visible
target_should
var target_should = should_be_visible(mode, last_mouse_input_status, has_mouse_world)
policy
var policy: int = _settings.position_on_enable_policy if _settings else GridTargetingSettings.RecenterOnEnablePolicy.NONE
move
var move = Vector2.ZERO
Methods
configure
func configure(p_settings: GridTargetingSettings) -> void:
Parameters
p_settings
Returns
proj_method_to_string
static func proj_method_to_string(p_method: PlacementEnums.ProjectionMethod) -> String:
Parameters
p_method
Returns
should_be_visible
func should_be_visible(mode: PlacementEnums.Mode, last_mouse_input_status: PlacementMouseInputStatus, has_mouse_world: bool) -> bool:
Parameters
modelast_mouse_input_statushas_mouse_world
Returns
should_be_visible_for_mode
func should_be_visible_for_mode(mode: PlacementEnums.Mode) -> bool:
Parameters
mode
Returns
is_positioner_active
func is_positioner_active(mode: PlacementEnums.Mode) -> bool:
Parameters
mode
Returns
is_mouse_follow_allowed
func is_mouse_follow_allowed(mode: PlacementEnums.Mode, input_ready: bool) -> bool:
Parameters
modeinput_ready
Returns
visibility_decision_trace
func visibility_decision_trace(mode_state: ModeState, last_mouse_input_status: PlacementMouseInputStatus, has_mouse_world: bool) -> String:
Parameters
mode_statelast_mouse_input_statushas_mouse_world
Returns
visibility_on_mouse_event
func visibility_on_mouse_event(mode: PlacementEnums.Mode, input_allowed: bool) -> MouseEventVisibilityResult:
Parameters
modeinput_allowed
Returns
visibility_on_process_tick
func visibility_on_process_tick(mode: PlacementEnums.Mode, input_ready: bool, last_mouse_input_status: PlacementMouseInputStatus, has_mouse_world: bool) -> MouseEventVisibilityResult:
Parameters
modeinput_readylast_mouse_input_statushas_mouse_world
Returns
visibility_reconcile
func visibility_reconcile(mode: PlacementEnums.Mode, current_visible: bool, last_mouse_input_status: PlacementMouseInputStatus, has_mouse_world: bool) -> MouseEventVisibilityResult:
Parameters
modecurrent_visiblelast_mouse_input_statushas_mouse_world
Returns
recenter_on_enable_decision
func recenter_on_enable_decision(has_cached_mouse_world: bool, mouse_input_enabled: bool, viewport_available: bool) -> int:
Parameters
has_cached_mouse_worldmouse_input_enabledviewport_available
Returns
get_tile_delta_from_key_event
static func get_tile_delta_from_key_event(event: InputEventKey, actions: PlacementActions) -> Vector2i:
Parameters
eventactions
Returns
get_rotation_direction_from_key_event
static func get_rotation_direction_from_key_event(event: InputEventKey, actions: PlacementActions) -> int:
Parameters
eventactions