conforms file names to consistant standard
This commit is contained in:
11
characters/cassette_tool/scn_cassette_tool.tscn
Normal file
11
characters/cassette_tool/scn_cassette_tool.tscn
Normal file
@@ -0,0 +1,11 @@
|
||||
[gd_scene format=3 uid="uid://bj2q72ch8nkek"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ge2hingujtc8" path="res://characters/cassette_tool/scr_cassette_tool.gd" id="1_7yi0i"]
|
||||
|
||||
[node name="CardPlacingTool" type="Node3D" unique_id=847164964 node_paths=PackedStringArray("ray")]
|
||||
script = ExtResource("1_7yi0i")
|
||||
ray = NodePath("RayCast3D")
|
||||
|
||||
[node name="RayCast3D" type="RayCast3D" parent="." unique_id=1267699718]
|
||||
target_position = Vector3(0, 0, -20)
|
||||
collision_mask = 25
|
||||
87
characters/cassette_tool/scr_cassette_tool.gd
Normal file
87
characters/cassette_tool/scr_cassette_tool.gd
Normal file
@@ -0,0 +1,87 @@
|
||||
class_name CassetteTool
|
||||
extends Node3D
|
||||
|
||||
@export var hero: Hero
|
||||
@export var ray: RayCast3D
|
||||
|
||||
var enabled: bool = false
|
||||
var tower_preview: Tower
|
||||
var tower_preview_cassette: Cassette
|
||||
var last_tower_base: TowerBase
|
||||
var ray_collider: Object
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
delete_tower_preview()
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if !enabled:
|
||||
reset()
|
||||
return
|
||||
|
||||
if !ray_collider or hero.hand.size == 0 or ray_collider.has_cassette:
|
||||
delete_tower_preview()
|
||||
|
||||
if ray.is_colliding() and ray.get_collider() is TowerBase:
|
||||
ray_collider = ray.get_collider()
|
||||
if hero.hand.size > 0 and !ray_collider.has_cassette:
|
||||
if ray_collider != last_tower_base or hero.selected_cassette != tower_preview_cassette:
|
||||
spawn_tower_preview()
|
||||
else:
|
||||
ray_collider = null
|
||||
|
||||
|
||||
func interact() -> void:
|
||||
if ray.is_colliding() and ray.get_collider() is TowerBase:
|
||||
var tower_base: TowerBase = ray.get_collider() as TowerBase
|
||||
if hero.game_manager.cassette_gameplay:
|
||||
if hero.hand.size > 0:
|
||||
place_cassette(tower_base)
|
||||
else:
|
||||
if tower_base.has_cassette:
|
||||
remove_cassette(tower_base)
|
||||
elif hero.hand.size > 0:
|
||||
place_cassette(tower_base)
|
||||
|
||||
|
||||
func place_cassette(tower_base: TowerBase) -> void:
|
||||
var cassette: Cassette = hero.selected_cassette
|
||||
var energy_cost: int = cassette.cost
|
||||
if hero.game_manager.cassette_gameplay and hero.energy < energy_cost:
|
||||
return
|
||||
remove_cassette(tower_base)
|
||||
hero.hand.remove_at(hero.hand.contents.find(cassette))
|
||||
hero.decrement_selected()
|
||||
hero.hud.hot_wheel.update_cassettes(hero.get_wheel_cassettes())
|
||||
tower_base.networked_spawn_tower.rpc(Data.cassettes.find(cassette), multiplayer.get_unique_id())
|
||||
hero.placed_tower.emit(tower_base.tower)
|
||||
hero.place_cassette_audio.play()
|
||||
if hero.game_manager.cassette_gameplay:
|
||||
hero.discassette_pile.add(cassette)
|
||||
hero.energy -= energy_cost
|
||||
|
||||
|
||||
func remove_cassette(tower_base: TowerBase) -> void:
|
||||
if tower_base.has_cassette:
|
||||
tower_base.networked_remove_tower.rpc()
|
||||
|
||||
|
||||
func spawn_tower_preview() -> void:
|
||||
delete_tower_preview()
|
||||
var cassette: Cassette = hero.selected_cassette
|
||||
last_tower_base = ray_collider as TowerBase
|
||||
tower_preview_cassette = cassette
|
||||
tower_preview = cassette.turret_scene.instantiate() as Tower
|
||||
tower_preview.stats = cassette.tower_stats
|
||||
tower_preview.position = Vector3.UP
|
||||
tower_preview.preview_range(true)
|
||||
last_tower_base.add_child(tower_preview)
|
||||
|
||||
|
||||
func delete_tower_preview() -> void:
|
||||
last_tower_base = null
|
||||
if is_instance_valid(tower_preview):
|
||||
tower_preview.queue_free()
|
||||
tower_preview = null
|
||||
tower_preview_cassette = null
|
||||
1
characters/cassette_tool/scr_cassette_tool.gd.uid
Normal file
1
characters/cassette_tool/scr_cassette_tool.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ge2hingujtc8
|
||||
Reference in New Issue
Block a user