prog
This commit is contained in:
@@ -2,28 +2,33 @@
|
||||
class_name NPC extends CharacterBody3D
|
||||
|
||||
@export var _movement:NPCMovement
|
||||
@export var _interact:NPCInteract
|
||||
|
||||
@export var walkSpeed:float = 48.0:
|
||||
# NPC Movement Accessors
|
||||
@export var walkSpeed:float:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.walkSpeed = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.walkSpeed
|
||||
return 48.0
|
||||
return 0
|
||||
|
||||
@export var runSpeed:float = 64.0:
|
||||
@export var runSpeed:float:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.runSpeed = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.runSpeed
|
||||
return 64.0
|
||||
return 0
|
||||
|
||||
func onInteract(player:Player) -> void:
|
||||
UI.TEXTBOX.setText("Hello, I'm an NPC!\nThis is the second line here, I am purposefully adding a tonne of words so that it is forced to go across multiple lines and you can see how the word wrapping works, not only using Godot's built in word wrapping but with my advanced visibile characters smart wrapping. Now I am doing a multiline thing\nLine 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8\nLine 9\nLine 10");
|
||||
pass
|
||||
|
||||
func _enter_tree() -> void:
|
||||
pass
|
||||
# NPC Interact Accessors
|
||||
@export var interactType:NPCInteract.InteractType:
|
||||
set(value):
|
||||
if _interact:
|
||||
_interact.interactType = value
|
||||
get:
|
||||
if _interact:
|
||||
return _interact.interactType
|
||||
return NPCInteract.InteractType.NONE
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://kabs7mopalmo"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://kabs7mopalmo"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://crw7ls7t8cwct" path="res://entity/npc/NPC.gd" id="1_00k55"]
|
||||
[ext_resource type="Script" uid="uid://b00rxpveu3v4m" path="res://InteractableArea.gd" id="2_x8luf"]
|
||||
[ext_resource type="Script" uid="uid://tlfthv88ki0y" path="res://entity/npc/NPCMovement.gd" id="3_1seh5"]
|
||||
[ext_resource type="Script" uid="uid://dunhfgdwp8wjh" path="res://entity/npc/NPCInteract.gd" id="3_binvk"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_jphom"]
|
||||
|
||||
@@ -15,12 +16,12 @@ shading_mode = 0
|
||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_jphom"]
|
||||
material = SubResource("StandardMaterial3D_jphom")
|
||||
|
||||
[node name="NPC" type="CharacterBody3D" node_paths=PackedStringArray("_movement")]
|
||||
[node name="NPC" type="CharacterBody3D" node_paths=PackedStringArray("_movement", "_interact")]
|
||||
script = ExtResource("1_00k55")
|
||||
facingDirection = null
|
||||
walkSpeed = null
|
||||
runSpeed = null
|
||||
_movement = NodePath("Scripts/NPCMovement")
|
||||
_interact = NodePath("Scripts/NPCInteract")
|
||||
walkSpeed = 8.0
|
||||
runSpeed = 12.0
|
||||
|
||||
[node name="Scripts" type="Node" parent="."]
|
||||
|
||||
@@ -28,6 +29,10 @@ _movement = NodePath("Scripts/NPCMovement")
|
||||
script = ExtResource("3_1seh5")
|
||||
body = NodePath("../..")
|
||||
|
||||
[node name="NPCInteract" type="Node" parent="Scripts"]
|
||||
script = ExtResource("3_binvk")
|
||||
metadata/_custom_type_script = "uid://dunhfgdwp8wjh"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CapsuleShape3D_jphom")
|
||||
|
||||
@@ -45,4 +50,6 @@ shape = SubResource("BoxShape3D_jphom")
|
||||
mesh = SubResource("CapsuleMesh_jphom")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[connection signal="interactEvent" from="Rotate/InteractableArea" to="." method="onInteract"]
|
||||
[connection signal="interactEvent" from="Rotate/InteractableArea" to="Scripts/NPCInteract" method="onInteract"]
|
||||
[connection signal="interactable" from="Rotate/InteractableArea" to="Scripts/NPCInteract" method="onInteractable"]
|
||||
[connection signal="notInteractable" from="Rotate/InteractableArea" to="Scripts/NPCInteract" method="onNotInteractable"]
|
||||
|
||||
20
entity/npc/NPCInteract.gd
Normal file
20
entity/npc/NPCInteract.gd
Normal file
@@ -0,0 +1,20 @@
|
||||
@tool
|
||||
class_name NPCInteract extends Node
|
||||
|
||||
enum InteractType {
|
||||
NONE,
|
||||
TEXT,
|
||||
CUTSCENE
|
||||
}
|
||||
|
||||
@export var interactType:InteractType = InteractType.NONE
|
||||
|
||||
func onInteract(player:Player) -> void:
|
||||
print("NPC Interacted with by Player: %s" % player.name)
|
||||
pass
|
||||
|
||||
func onInteractable(player:Player) -> void:
|
||||
pass
|
||||
|
||||
func onNotInteractable(player:Player) -> void:
|
||||
pass
|
||||
1
entity/npc/NPCInteract.gd.uid
Normal file
1
entity/npc/NPCInteract.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dunhfgdwp8wjh
|
||||
Reference in New Issue
Block a user