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

View File

@@ -2,46 +2,62 @@ 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():
#get player location
enemy.cache_player_pos()
#set player location as target
update_player_target()
#move and look at location
move_to_nav_point(delta)
turret_look3D(delta)
#Initial wait time
#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:
if shot_timer > 0:
shot_timer -= delta
else:
shot_timer = randf_range(between_shot_time.x,between_shot_time.y)
enemy.turret_material.emission_enabled = true
await get_tree().create_timer(.1).timeout
attack()
attack_sequence(delta)
else:
await get_tree().create_timer(.5).timeout
Transitioned.emit(self,"reload")
else:
Transitioned.emit(self,"search")
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
update_player_target()
#move and look at location
move_to_nav_point(delta)
turret_look3D(delta)
func attack_sequence(delta):
if shot_timer > 0:
shot_timer -= delta
else:
shot_timer = randf_range(between_shot_time.x,between_shot_time.y)
enemy.turret_material.emission_enabled = true
await get_tree().create_timer(.1).timeout
attack()
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)