fixed some chatbox and tower preview issues
This commit is contained in:
@ -11,6 +11,7 @@ var last_lives_count = 120
|
||||
@export var minimap_cam : MinimapCamera3D
|
||||
@export var minimap_viewport : SubViewport
|
||||
@export var fps_label : Label
|
||||
@export var hover_text : Label
|
||||
var minimap_anchor : Node3D
|
||||
var enemy_names = []
|
||||
@export var enemy_sprites : Array[TextureRect]
|
||||
@ -21,6 +22,15 @@ func _process(_delta: float) -> void:
|
||||
fps_label.text = "FPS: " + str(Engine.get_frames_per_second())
|
||||
|
||||
|
||||
func set_hover_text(text):
|
||||
hover_text.text = text
|
||||
hover_text.set_visible(true)
|
||||
|
||||
|
||||
func unset_hover_text():
|
||||
hover_text.set_visible(false)
|
||||
|
||||
|
||||
func set_wave_count(value):
|
||||
wave_count.text = str(value)
|
||||
|
||||
|
@ -17,6 +17,7 @@ func _input(event: InputEvent) -> void:
|
||||
return
|
||||
if text_selected and event is InputEventKey and event.pressed == true:
|
||||
if event.keycode == KEY_ENTER:
|
||||
get_viewport().set_input_as_handled()
|
||||
closed.emit()
|
||||
$VBoxContainer/LineEdit.deselect()
|
||||
$VBoxContainer/LineEdit.visible = false
|
||||
@ -28,6 +29,7 @@ func _input(event: InputEvent) -> void:
|
||||
rpc("append_message", username, $VBoxContainer/LineEdit.text)
|
||||
$VBoxContainer/LineEdit.clear()
|
||||
if event.keycode == KEY_ESCAPE:
|
||||
get_viewport().set_input_as_handled()
|
||||
closed.emit()
|
||||
$VBoxContainer/LineEdit.deselect()
|
||||
$VBoxContainer/LineEdit.visible = false
|
||||
|
@ -13,6 +13,9 @@ var point_id := -1
|
||||
var obstacle_last_point := -1
|
||||
var valid_point := false
|
||||
var is_looking_at_tower_base := false
|
||||
var tower_preview
|
||||
var last_tower_base
|
||||
var last_card
|
||||
var ray_collider
|
||||
var ray_point
|
||||
|
||||
@ -54,6 +57,11 @@ func _process(delta: float) -> void:
|
||||
ray_point = ray.get_collision_point()
|
||||
|
||||
is_looking_at_tower_base = ray_collider is TowerBase
|
||||
if is_looking_at_tower_base and inventory.contents.size() > 0 and !ray_collider.has_card:
|
||||
if ray_collider != last_tower_base or inventory.selected_item != last_card:
|
||||
spawn_tower_preview()
|
||||
elif tower_preview:
|
||||
delete_tower_preview()
|
||||
if Game.level:
|
||||
point_id = Game.level.a_star_graph_3d.astar.get_closest_point(ray_point)
|
||||
if !Game.level.a_star_graph_3d.point_is_build_location(point_id) or hero.currency < Data.wall_cost:
|
||||
@ -76,9 +84,29 @@ func _process(delta: float) -> void:
|
||||
ray_collider = null
|
||||
ray_point = null
|
||||
is_looking_at_tower_base = false
|
||||
delete_tower_preview()
|
||||
wall_preview.set_visible(false)
|
||||
|
||||
|
||||
func spawn_tower_preview():
|
||||
delete_tower_preview()
|
||||
last_tower_base = ray_collider
|
||||
var card = inventory.selected_item
|
||||
last_card = card
|
||||
tower_preview = card.turret.instantiate() as Tower
|
||||
tower_preview.stats = card.tower_stats
|
||||
tower_preview.preview_range(true)
|
||||
ray_collider.add_child(tower_preview)
|
||||
|
||||
|
||||
func delete_tower_preview():
|
||||
last_tower_base = null
|
||||
last_card = null
|
||||
if tower_preview:
|
||||
tower_preview.queue_free()
|
||||
tower_preview = null
|
||||
|
||||
|
||||
func interact():
|
||||
if ray_collider is TowerBase:
|
||||
var tower_base = ray_collider as TowerBase
|
||||
|
@ -40,6 +40,10 @@ func _process(delta: float) -> void:
|
||||
signal_for_when_enemy_spawns.emit()
|
||||
if type == Data.EnemyType.AIR:
|
||||
var enemy = air_enemy_scene.instantiate() as AirEnemyController
|
||||
var radius = 10.0
|
||||
var random_dir = Vector3(randf_range(-1, 1), randf_range(-1, 1), randf_range(-1, 1))
|
||||
var random_pos = randf_range(0, radius) * random_dir.normalized()
|
||||
enemy.position = random_pos
|
||||
enemy.stats = enemy_stats
|
||||
enemy.destination = dest
|
||||
enemy.died.connect(signal_for_after_enemy_died)
|
||||
|
@ -200,10 +200,10 @@ func quit_to_desktop():
|
||||
|
||||
|
||||
func scene_switch_main_menu():
|
||||
multiplayer.multiplayer_peer.close()
|
||||
multiplayer.multiplayer_peer = null
|
||||
for node in get_children():
|
||||
node.queue_free()
|
||||
multiplayer.multiplayer_peer.close()
|
||||
multiplayer.multiplayer_peer = null
|
||||
get_tree().change_scene_to_file(main_menu_scene_path)
|
||||
|
||||
|
||||
|
@ -5,6 +5,7 @@ signal button_interacted(value)
|
||||
|
||||
@export var button_press_value := 0
|
||||
@export var press_cost := 0
|
||||
@export var hover_text := "Press [Interact]"
|
||||
|
||||
func press():
|
||||
button_interacted.emit(button_press_value)
|
||||
|
@ -7,6 +7,10 @@ var connected_players_profiles = {}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var enet_peer = ENetMultiplayerPeer.new()
|
||||
enet_peer.create_server(58008, 1)
|
||||
multiplayer.multiplayer_peer = enet_peer
|
||||
enet_peer.refuse_new_connections = true
|
||||
setup_game()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user