started work on minimap
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
29
scripts/minimap_v1.gd
Normal 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)
|
||||
1
scripts/minimap_v1.gd.uid
Normal file
1
scripts/minimap_v1.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://x40xk7ltmrgr
|
||||
@@ -1,5 +1,5 @@
|
||||
extends Node
|
||||
|
||||
class_name RoomManager
|
||||
signal all_enemies_spawned
|
||||
|
||||
@export_group("Main")
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user