started work on minimap
This commit is contained in:
File diff suppressed because one or more lines are too long
9
hud.tscn
9
hud.tscn
@@ -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="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="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"]
|
[ext_resource type="Script" uid="uid://cfou02ggxj80n" path="res://scripts/dynamic_crosshair.gd" id="5_1xsix"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2hn4h"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2hn4h"]
|
||||||
@@ -50,6 +51,12 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("5_1xsix")
|
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="."]
|
[node name="WobbleItems" type="Control" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ config_version=5
|
|||||||
|
|
||||||
config/name="First Person Test"
|
config/name="First Person Test"
|
||||||
config/tags=PackedStringArray("fps")
|
config/tags=PackedStringArray("fps")
|
||||||
run/main_scene="uid://f7e0v1r6ra6c"
|
run/main_scene="uid://b55ukxds1s7ih"
|
||||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||||
config/icon="uid://6svuq1l83al5"
|
config/icon="uid://6svuq1l83al5"
|
||||||
|
|
||||||
|
|||||||
@@ -2,46 +2,62 @@ extends EnemyState
|
|||||||
class_name EnemyAttack
|
class_name EnemyAttack
|
||||||
|
|
||||||
@export var initial_wait_time : float = 1.0
|
@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 between_shot_time : Vector2 = Vector2(.5,2.0)
|
||||||
@export var alert_sound : AudioStreamPlayer3D
|
@export var alert_sound : AudioStreamPlayer3D
|
||||||
|
|
||||||
|
|
||||||
var initial_timer
|
var initial_timer
|
||||||
|
var lost_target_timer
|
||||||
var shot_timer = 0.0
|
var shot_timer = 0.0
|
||||||
|
|
||||||
func Enter():
|
func Enter():
|
||||||
initial_timer = initial_wait_time
|
initial_timer = initial_wait_time
|
||||||
|
lost_target_timer = time_to_lose_target
|
||||||
alert_sound.play()
|
alert_sound.play()
|
||||||
clear_points_of_interest()
|
clear_points_of_interest()
|
||||||
|
|
||||||
func Physics_Update(delta):
|
func Physics_Update(delta):
|
||||||
if enemy.is_player_visible():
|
if enemy.is_player_visible():
|
||||||
#get player location
|
#reset lost target timer
|
||||||
enemy.cache_player_pos()
|
lost_target_timer = time_to_lose_target
|
||||||
#set player location as target
|
#attack move and look
|
||||||
update_player_target()
|
attack_move_and_look(delta)
|
||||||
#move and look at location
|
#Initial wait time
|
||||||
move_to_nav_point(delta)
|
|
||||||
turret_look3D(delta)
|
|
||||||
|
|
||||||
#Initial wait time
|
|
||||||
if initial_timer > 0:
|
if initial_timer > 0:
|
||||||
initial_timer -= delta
|
initial_timer -= delta
|
||||||
else:
|
else:
|
||||||
#fire if player in view
|
#fire if player in view
|
||||||
if enemy.ammo > 0:
|
if enemy.ammo > 0:
|
||||||
if shot_timer > 0:
|
attack_sequence(delta)
|
||||||
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()
|
|
||||||
else:
|
else:
|
||||||
await get_tree().create_timer(.5).timeout
|
await get_tree().create_timer(.5).timeout
|
||||||
Transitioned.emit(self,"reload")
|
Transitioned.emit(self,"reload")
|
||||||
|
|
||||||
else:
|
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():
|
func update_player_target():
|
||||||
move_target = enemy.player_last_seen
|
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.transform.basis = enemy.casing_ejector.global_transform.basis
|
||||||
instance_casing.player_velocity = enemy.velocity * enemy.transform.basis
|
instance_casing.player_velocity = enemy.velocity * enemy.transform.basis
|
||||||
get_tree().get_root().add_child(instance_casing)
|
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_investigate : bool = false
|
||||||
@export var poi_change_to_search : bool = false
|
@export var poi_change_to_search : bool = false
|
||||||
@export var poi_update_waypoint_immediately : 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 move_target
|
||||||
var look_target
|
var look_target
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ var target_enemy
|
|||||||
var total_targets
|
var total_targets
|
||||||
var active = false
|
var active = false
|
||||||
var timer
|
var timer
|
||||||
|
var ui_marker
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
await level_node.all_enemies_spawned
|
await level_node.all_enemies_spawned
|
||||||
@@ -28,6 +29,7 @@ func begin_activity():
|
|||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if active:
|
if active:
|
||||||
if target_enemy != null:
|
if target_enemy != null:
|
||||||
|
update_minimap()
|
||||||
if timer > 0:
|
if timer > 0:
|
||||||
timer -= delta
|
timer -= delta
|
||||||
update_timer("kill target")
|
update_timer("kill target")
|
||||||
@@ -38,9 +40,12 @@ func _process(delta: float) -> void:
|
|||||||
else:
|
else:
|
||||||
select_random_enemy()
|
select_random_enemy()
|
||||||
|
|
||||||
|
func update_minimap():
|
||||||
|
SignalBus.emit_signal("ui_minimap_point",self,ui_marker.global_position,ColorSwatch.GREEN_COLOR)
|
||||||
|
|
||||||
func update_timer(label):
|
func update_timer(label):
|
||||||
var rounded_timer = round(timer)
|
var rounded_timer = str(timer).pad_decimals(2)
|
||||||
SignalBus.emit_signal("ui_timer_update",label,timer)
|
SignalBus.emit_signal("ui_timer_update",label,rounded_timer)
|
||||||
|
|
||||||
func check_killed_target(enemy):
|
func check_killed_target(enemy):
|
||||||
print("ENEMY KILLED : ",enemy)
|
print("ENEMY KILLED : ",enemy)
|
||||||
@@ -55,6 +60,7 @@ func add_marker_to_enemy():
|
|||||||
var instance_marker = marker.instantiate()
|
var instance_marker = marker.instantiate()
|
||||||
target_enemy.add_child(instance_marker)
|
target_enemy.add_child(instance_marker)
|
||||||
instance_marker.global_position = target_enemy.global_position
|
instance_marker.global_position = target_enemy.global_position
|
||||||
|
ui_marker = instance_marker
|
||||||
|
|
||||||
func select_random_enemy():
|
func select_random_enemy():
|
||||||
var level_stuff = level_node.get_children()
|
var level_stuff = level_node.get_children()
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ var interact_visible : bool = false
|
|||||||
var health_bar_start_pos
|
var health_bar_start_pos
|
||||||
var money_count : int = 0
|
var money_count : int = 0
|
||||||
|
|
||||||
var crosshair_target
|
|
||||||
|
|
||||||
@onready var level_control = get_tree().current_scene
|
@onready var level_control = get_tree().current_scene
|
||||||
@onready var player = level_control.player
|
@onready var player = level_control.player
|
||||||
@onready var health_bar: ProgressBar = $WobbleItems/HealthBar
|
@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 ammo_reserve: Label = $WobbleItems/GunInfo/VBoxContainer/AmmoCounter/AmmoReserve
|
||||||
@onready var gun_info: MarginContainer = $WobbleItems/GunInfo
|
@onready var gun_info: MarginContainer = $WobbleItems/GunInfo
|
||||||
@onready var money: Label = $WobbleItems/Money
|
@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 pickup_item_indicator = preload("res://assets/pickup_item_indicator.tscn")
|
||||||
@onready var wobble_items: Control = $WobbleItems
|
@onready var wobble_items: Control = $WobbleItems
|
||||||
@onready var timer_counter: Label = $WobbleItems/Timer_counter
|
@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 pickup_notifs = []
|
||||||
|
var minimap_points = {}
|
||||||
var can_spawn = true
|
var can_spawn = true
|
||||||
|
|
||||||
#HUD WOBBLE
|
#HUD WOBBLE
|
||||||
@@ -49,6 +42,7 @@ func _ready() -> void:
|
|||||||
SignalBus.player_hit.connect(player_hit)
|
SignalBus.player_hit.connect(player_hit)
|
||||||
SignalBus.ui_timer_update.connect(update_timer)
|
SignalBus.ui_timer_update.connect(update_timer)
|
||||||
SignalBus.ui_timer_visibility.connect(toggle_timer_visibility)
|
SignalBus.ui_timer_visibility.connect(toggle_timer_visibility)
|
||||||
|
SignalBus.ui_minimap_point.connect(add_minimap_point)
|
||||||
|
|
||||||
money_count = GameGlobals.money
|
money_count = GameGlobals.money
|
||||||
|
|
||||||
@@ -56,7 +50,6 @@ func _ready() -> void:
|
|||||||
|
|
||||||
health_bar_start_pos = health_bar.position
|
health_bar_start_pos = health_bar.position
|
||||||
|
|
||||||
crosshair_target = CROSSHAIR_SIZE
|
|
||||||
timer_counter.visible = false
|
timer_counter.visible = false
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
@@ -124,6 +117,7 @@ func _process(delta: float) -> void:
|
|||||||
|
|
||||||
## SPAWN NOTIFICATIONS
|
## SPAWN NOTIFICATIONS
|
||||||
spawn_notifs()
|
spawn_notifs()
|
||||||
|
#WOBBLE HUD
|
||||||
wobble_items.position = hud_wobble(delta/Engine.time_scale)
|
wobble_items.position = hud_wobble(delta/Engine.time_scale)
|
||||||
|
|
||||||
func toggle_timer_visibility(timer_visible):
|
func toggle_timer_visibility(timer_visible):
|
||||||
@@ -174,6 +168,11 @@ func spawn_notifs():
|
|||||||
await get_tree().create_timer(.2).timeout
|
await get_tree().create_timer(.2).timeout
|
||||||
can_spawn = true
|
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():
|
func player_hit():
|
||||||
pass
|
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
|
extends Node
|
||||||
|
class_name RoomManager
|
||||||
signal all_enemies_spawned
|
signal all_enemies_spawned
|
||||||
|
|
||||||
@export_group("Main")
|
@export_group("Main")
|
||||||
|
|||||||
@@ -27,3 +27,4 @@ signal engaging_target(enemy,target_position)
|
|||||||
##UI
|
##UI
|
||||||
signal ui_timer_update(label,timer)
|
signal ui_timer_update(label,timer)
|
||||||
signal ui_timer_visibility(visible)
|
signal ui_timer_visibility(visible)
|
||||||
|
signal ui_minimap_point(node_owner,point_position,color)
|
||||||
|
|||||||
Reference in New Issue
Block a user