extends Node2D class_name Item var shape var inventory_position : Vector2i var draggable = true var dragging = false @export var connectors : Array[Connector] var mouse_offset : Vector2 func _process(delta: float) -> void: if Input.is_action_just_pressed("select") and Globals.selected_item == null: var mouse_difference : Vector2 = get_global_mouse_position() - global_position + Vector2(len(shape[0])*Globals.tilesize/2,len(shape)*Globals.tilesize/2) if mouse_difference.x > 0 and mouse_difference.y > 0 and mouse_difference.y < Globals.tilesize*len(shape) and mouse_difference.x < Globals.tilesize*len(shape[0]): var shape_position : Vector2i = Vector2i(mouse_difference/Globals.tilesize) if shape[shape_position.y][shape_position.x]: dragging = true Globals.selected_item = self mouse_offset = -get_global_mouse_position() + global_position if Input.is_action_just_released("select"): dragging = false Globals.set_deferred("selected_item", null) if dragging: global_position = get_global_mouse_position() + mouse_offset if Input.is_action_just_pressed("rotate_c"): rotate_shape() if Input.is_action_just_pressed("rotate_cc"): rotate_shape(true) item_process(delta) func item_process(delta : float) -> void: pass func get_head_position() -> Vector2: var return_position = global_position return_position -= Vector2(len(shape[0])-0.5,len(shape)-0.5) * Globals.tilesize / 2 return return_position func rotate_shape(counter_clockwise : bool = false): var new_arr = [] if !counter_clockwise: for i in range(len(shape[0])): var row = [] for j in range(len(shape)): row.append(shape[len(shape) - j - 1][i]) new_arr.append(row) rotation_degrees += 90 mouse_offset = Vector2(-mouse_offset.y,mouse_offset.x) else: for i in range(len(shape[0])): var row = [] for j in range(len(shape)): row.append(shape[j][len(shape[0])-i-1]) new_arr.append(row) rotation_degrees -= 90 mouse_offset = Vector2(mouse_offset.y,-mouse_offset.x) global_position = get_global_mouse_position() + mouse_offset shape = new_arr func move_away(): pass