started work on minimap

This commit is contained in:
derek
2025-05-06 11:18:52 -05:00
parent 56af7a3481
commit cab1a57238
11 changed files with 93 additions and 544 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,8 @@
[gd_scene load_steps=6 format=3 uid="uid://br882tlh3cfwu"]
[gd_scene load_steps=7 format=3 uid="uid://br882tlh3cfwu"]
[ext_resource type="Script" uid="uid://dfv2m81iew3ia" path="res://scripts/hud.gd" id="1_7hukm"]
[ext_resource type="Theme" uid="uid://clek42ofxr45f" path="res://DefaultTheme.tres" id="1_22trs"]
[ext_resource type="Script" uid="uid://x40xk7ltmrgr" path="res://scripts/minimap_v1.gd" id="3_640wx"]
[ext_resource type="Script" uid="uid://cfou02ggxj80n" path="res://scripts/dynamic_crosshair.gd" id="5_1xsix"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2hn4h"]
@@ -50,6 +51,12 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("5_1xsix")
[node name="Minimap" type="Control" parent="StaticItems"]
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("3_640wx")
[node name="WobbleItems" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15

View File

@@ -12,7 +12,7 @@ config_version=5
config/name="First Person Test"
config/tags=PackedStringArray("fps")
run/main_scene="uid://f7e0v1r6ra6c"
run/main_scene="uid://b55ukxds1s7ih"
config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="uid://6svuq1l83al5"

View File

@@ -2,19 +2,46 @@ extends EnemyState
class_name EnemyAttack
@export var initial_wait_time : float = 1.0
@export var time_to_lose_target : float = 4.0
@export var between_shot_time : Vector2 = Vector2(.5,2.0)
@export var alert_sound : AudioStreamPlayer3D
var initial_timer
var lost_target_timer
var shot_timer = 0.0
func Enter():
initial_timer = initial_wait_time
lost_target_timer = time_to_lose_target
alert_sound.play()
clear_points_of_interest()
func Physics_Update(delta):
if enemy.is_player_visible():
#reset lost target timer
lost_target_timer = time_to_lose_target
#attack move and look
attack_move_and_look(delta)
#Initial wait time
if initial_timer > 0:
initial_timer -= delta
else:
#fire if player in view
if enemy.ammo > 0:
attack_sequence(delta)
else:
await get_tree().create_timer(.5).timeout
Transitioned.emit(self,"reload")
else:
if lost_target_timer > 0:
lost_target_timer -= delta
attack_move_and_look(delta)
else:
Transitioned.emit(self,"search")
func attack_move_and_look(delta):
#get player location
enemy.cache_player_pos()
#set player location as target
@@ -23,12 +50,7 @@ func Physics_Update(delta):
move_to_nav_point(delta)
turret_look3D(delta)
#Initial wait time
if initial_timer > 0:
initial_timer -= delta
else:
#fire if player in view
if enemy.ammo > 0:
func attack_sequence(delta):
if shot_timer > 0:
shot_timer -= delta
else:
@@ -36,12 +58,6 @@ func Physics_Update(delta):
enemy.turret_material.emission_enabled = true
await get_tree().create_timer(.1).timeout
attack()
else:
await get_tree().create_timer(.5).timeout
Transitioned.emit(self,"reload")
else:
Transitioned.emit(self,"search")
func update_player_target():
move_target = enemy.player_last_seen
@@ -78,3 +94,6 @@ func spawn_casing():
instance_casing.transform.basis = enemy.casing_ejector.global_transform.basis
instance_casing.player_velocity = enemy.velocity * enemy.transform.basis
get_tree().get_root().add_child(instance_casing)
func update_minimap():
SignalBus.emit_signal("ui_minimap_point",self,enemy.global_position,ColorSwatch.RED_COLOR)

View File

@@ -9,9 +9,6 @@ class_name EnemyState
@export var poi_investigate : bool = false
@export var poi_change_to_search : bool = false
@export var poi_update_waypoint_immediately : bool = false
@export var time_to_lose_target = 1.0
@onready var target_lost_timer = time_to_lose_target
var move_target
var look_target

View File

@@ -13,6 +13,7 @@ var target_enemy
var total_targets
var active = false
var timer
var ui_marker
func _ready() -> void:
await level_node.all_enemies_spawned
@@ -28,6 +29,7 @@ func begin_activity():
func _process(delta: float) -> void:
if active:
if target_enemy != null:
update_minimap()
if timer > 0:
timer -= delta
update_timer("kill target")
@@ -38,9 +40,12 @@ func _process(delta: float) -> void:
else:
select_random_enemy()
func update_minimap():
SignalBus.emit_signal("ui_minimap_point",self,ui_marker.global_position,ColorSwatch.GREEN_COLOR)
func update_timer(label):
var rounded_timer = round(timer)
SignalBus.emit_signal("ui_timer_update",label,timer)
var rounded_timer = str(timer).pad_decimals(2)
SignalBus.emit_signal("ui_timer_update",label,rounded_timer)
func check_killed_target(enemy):
print("ENEMY KILLED : ",enemy)
@@ -55,6 +60,7 @@ func add_marker_to_enemy():
var instance_marker = marker.instantiate()
target_enemy.add_child(instance_marker)
instance_marker.global_position = target_enemy.global_position
ui_marker = instance_marker
func select_random_enemy():
var level_stuff = level_node.get_children()

View File

@@ -12,8 +12,6 @@ var interact_visible : bool = false
var health_bar_start_pos
var money_count : int = 0
var crosshair_target
@onready var level_control = get_tree().current_scene
@onready var player = level_control.player
@onready var health_bar: ProgressBar = $WobbleItems/HealthBar
@@ -23,17 +21,12 @@ var crosshair_target
@onready var ammo_reserve: Label = $WobbleItems/GunInfo/VBoxContainer/AmmoCounter/AmmoReserve
@onready var gun_info: MarginContainer = $WobbleItems/GunInfo
@onready var money: Label = $WobbleItems/Money
@onready var crosshair_center: TextureRect = $StaticItems/CrosshairCenter
@onready var pickup_item_indicator = preload("res://assets/pickup_item_indicator.tscn")
@onready var wobble_items: Control = $WobbleItems
@onready var timer_counter: Label = $WobbleItems/Timer_counter
const STAM_BAR_MAX_OPACITY = 1.0
const CROSSHAIR_SIZE = Vector2(40,40)
const MAX_HUD_WOBBLE_AMT = Vector2(100,100)
var pickup_notifs = []
var minimap_points = {}
var can_spawn = true
#HUD WOBBLE
@@ -49,6 +42,7 @@ func _ready() -> void:
SignalBus.player_hit.connect(player_hit)
SignalBus.ui_timer_update.connect(update_timer)
SignalBus.ui_timer_visibility.connect(toggle_timer_visibility)
SignalBus.ui_minimap_point.connect(add_minimap_point)
money_count = GameGlobals.money
@@ -56,7 +50,6 @@ func _ready() -> void:
health_bar_start_pos = health_bar.position
crosshair_target = CROSSHAIR_SIZE
timer_counter.visible = false
# Called every frame. 'delta' is the elapsed time since the previous frame.
@@ -124,6 +117,7 @@ func _process(delta: float) -> void:
## SPAWN NOTIFICATIONS
spawn_notifs()
#WOBBLE HUD
wobble_items.position = hud_wobble(delta/Engine.time_scale)
func toggle_timer_visibility(timer_visible):
@@ -174,6 +168,11 @@ func spawn_notifs():
await get_tree().create_timer(.2).timeout
can_spawn = true
func add_minimap_point(node_owner,point_position,color):
var key = node_owner.name
var data = {"position" : point_position,"color" : color}
minimap_points[key] = data
func player_hit():
pass

29
scripts/minimap_v1.gd Normal file
View File

@@ -0,0 +1,29 @@
extends Control
@export var hud : Node
## SETTINGS
const MINIMAP_POINT_RADIUS :float = 10.0
const MINIMAP_DISPLAY_RADIUS : float = 200.0
func _draw() -> void:
update_minimap()
func update_minimap():
var minimap_points = hud.minimap_points
var player = hud.player
for key in minimap_points:
var point = minimap_points[key]
var player_pos_h = Vector2(player.global_position.x,player.global_position.z)
var point_pos_h = Vector2(point["position"].x,point["position"].z)
var h_direction = (point_pos_h - player_pos_h).normalized()
var v_direction = point["position"].y - player.global_position.y
#var desired_rotation = object.global_transform.looking_at(target_positon,Vector3.UP).basis.get_euler()
#var point_pos =
draw_circle(point_pos,MINIMAP_POINT_RADIUS,point["color"],true)

View File

@@ -0,0 +1 @@
uid://x40xk7ltmrgr

View File

@@ -1,5 +1,5 @@
extends Node
class_name RoomManager
signal all_enemies_spawned
@export_group("Main")

View File

@@ -27,3 +27,4 @@ signal engaging_target(enemy,target_position)
##UI
signal ui_timer_update(label,timer)
signal ui_timer_visibility(visible)
signal ui_minimap_point(node_owner,point_position,color)