LD56 is over. This is the game.

This commit is contained in:
Douwe Ravers
2024-10-07 02:28:14 +02:00
parent 4c0c57d5ba
commit af7a46cd23
183 changed files with 20357 additions and 442 deletions

58
player/player.gd Normal file
View File

@@ -0,0 +1,58 @@
class_name Player extends Node
const RAY_LENGTH = 1000.0
static var instance:Player
@onready var raycast := $RayCast3D as RayCast3D
var selected_unit:Ant
func _init() -> void:
instance = self
func _unhandled_input(event:InputEvent)->void:
if not event is InputEventMouseButton: return
var mouse_event := event as InputEventMouseButton
if not mouse_event.pressed: return
if mouse_event.button_index == MOUSE_BUTTON_MIDDLE: return
if mouse_event.button_index == MOUSE_BUTTON_LEFT:
input_left_mouse_click()
if mouse_event.button_index == MOUSE_BUTTON_RIGHT:
input_right_mouse_click()
func _physics_process(_delta: float) -> void:
process_raycast()
func input_left_mouse_click()->void:
var collider := raycast.get_collider()
selected_unit = null
if collider is Ant:
var player_unit := collider as Ant
selected_unit = player_unit
else:
PlayerCamp.instance.on_interact(
raycast.get_collider(),
raycast.get_collision_point()
)
func input_right_mouse_click()->void:
if selected_unit != null:
selected_unit.on_interact(
raycast.get_collider(),
raycast.get_collision_point()
)
else:
if PlayerCamp.instance.active_indicator != null:
PlayerCamp.instance.active_indicator.queue_free()
func process_raycast()->void:
var camera := get_viewport().get_camera_3d()
var mouse_position := get_viewport().get_mouse_position()
var from := camera.project_ray_origin(mouse_position)
var to := from + camera.project_ray_normal(mouse_position) * RAY_LENGTH
raycast.global_position = from
raycast.target_position = to
raycast.force_raycast_update()