Table of Contents

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

mode
last_mouse_input_status
has_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

mode
input_ready

Returns

visibility_decision_trace

func visibility_decision_trace(mode_state: ModeState, last_mouse_input_status: PlacementMouseInputStatus, has_mouse_world: bool) -> String:

Parameters

mode_state
last_mouse_input_status
has_mouse_world

Returns

visibility_on_mouse_event

func visibility_on_mouse_event(mode: PlacementEnums.Mode, input_allowed: bool) -> MouseEventVisibilityResult:

Parameters

mode
input_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

mode
input_ready
last_mouse_input_status
has_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

mode
current_visible
last_mouse_input_status
has_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_world
mouse_input_enabled
viewport_available

Returns

get_tile_delta_from_key_event

static func get_tile_delta_from_key_event(event: InputEventKey, actions: PlacementActions) -> Vector2i:

Parameters

event
actions

Returns

get_rotation_direction_from_key_event

static func get_rotation_direction_from_key_event(event: InputEventKey, actions: PlacementActions) -> int:

Parameters

event
actions

Returns