feat: Implement initial main scene, player scripts, and core game manager systems for input, actions, playerboard, special tiles, and UI.
This commit is contained in:
@@ -56,30 +56,6 @@ func _process(delta):
|
||||
movement_manager.simple_move_to(target_position)
|
||||
|
||||
|
||||
# Targeting Mode Preview
|
||||
var main = player.get_node_or_null("/root/Main")
|
||||
if main and main.ui_manager and main.ui_manager.current_action_state == main.ui_manager.ActionState.TARGETING:
|
||||
# Use mouse position raycast to determine hover
|
||||
var viewport = player.get_viewport()
|
||||
var mouse_pos = viewport.get_mouse_position()
|
||||
var camera = viewport.get_camera_3d()
|
||||
var from = camera.project_ray_origin(mouse_pos)
|
||||
var to = from + camera.project_ray_normal(mouse_pos) * 1000
|
||||
var hover_grid = player.raycast_to_grid(from, to)
|
||||
|
||||
# print("Targeting Hover: %s, Skill: %d" % [hover_grid, main.ui_manager.pending_skill_id]) # Debug
|
||||
|
||||
# Only update if valid position
|
||||
if hover_grid != Vector2i(-1, -1):
|
||||
var st_manager = player.get_node_or_null("SpecialTilesManager")
|
||||
if st_manager:
|
||||
var area = st_manager.get_skill_affected_area(main.ui_manager.pending_skill_id, hover_grid)
|
||||
|
||||
# Choose highlight color/mesh based on skill
|
||||
# User Request: Use default hover item (1)
|
||||
var highlight_id = 1
|
||||
|
||||
player.highlight_cells_if_authorized(area, highlight_id)
|
||||
|
||||
func handle_unhandled_input(event):
|
||||
# Early return if not authorized human player
|
||||
@@ -163,48 +139,11 @@ func handle_grid_click(grid_position: Vector2i):
|
||||
var main = player.get_node("/root/Main")
|
||||
if not main:
|
||||
return
|
||||
|
||||
match main.ui_manager.current_action_state:
|
||||
main.ui_manager.ActionState.MOVING:
|
||||
if grid_position in player.highlighted_cells:
|
||||
movement_manager.move_to_clicked_position(grid_position)
|
||||
main.ui_manager.ActionState.GRABBING:
|
||||
if grid_position in player.highlighted_cells or grid_position == player.current_position:
|
||||
player.grab_item(grid_position)
|
||||
main.ui_manager.ActionState.RANDOMIZING:
|
||||
if grid_position in player.highlighted_cells:
|
||||
main.randomize_item_at_position(grid_position)
|
||||
# Add TARGETING State
|
||||
main.ui_manager.ActionState.TARGETING:
|
||||
var skill_id = main.ui_manager.pending_skill_id
|
||||
if skill_id != -1:
|
||||
var st_manager = player.get_node_or_null("SpecialTilesManager")
|
||||
if st_manager:
|
||||
# Clear Highlights FIRST to avoid overwriting the newly placed tiles
|
||||
player.clear_highlights()
|
||||
|
||||
st_manager.execute_targeted_effect(skill_id, grid_position)
|
||||
# Reset state
|
||||
main.ui_manager.pending_skill_id = -1
|
||||
main.ui_manager.current_action_state = main.ui_manager.ActionState.NONE
|
||||
|
||||
# Action logic previously here has been removed along with ActionMenu.
|
||||
# Standard movement/interaction is now handled via keyboard/joystick.
|
||||
|
||||
|
||||
func handle_slot_gui_input(event, slot_index, slot_ui) -> int:
|
||||
if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
|
||||
var main = player.get_tree().get_root().get_node_or_null("Main")
|
||||
|
||||
if main.ui_manager.current_action_state == main.ui_manager.ActionState.ARRANGING:
|
||||
if player.selected_playerboard_slot == -1:
|
||||
player.select_playerboard_slot(slot_index)
|
||||
return slot_index
|
||||
else:
|
||||
if player.selected_playerboard_slot == slot_index:
|
||||
player.deselect_playerboard_slot()
|
||||
return slot_index
|
||||
elif player.can_move_to_target_playerboard_slot():
|
||||
player.target_playerboard_slot(slot_index)
|
||||
main.emit_signal("can_move_item", true)
|
||||
return slot_index
|
||||
else:
|
||||
return -1
|
||||
# Arrangement mode has been removed along with ActionMenu.
|
||||
return -1
|
||||
|
||||
Reference in New Issue
Block a user