Add basic npc entity script.

This commit is contained in:
2025-01-19 21:53:28 -06:00
parent 05481adc3a
commit 163c37ffe3
18 changed files with 173 additions and 84 deletions

View File

@@ -0,0 +1,26 @@
class_name BasicNPCEntity extends "res://scripts/Entities/OverworldEntity.gd"
const Cutscene = preload("res://scripts/Cutscene/Cutscene.gd")
enum BasicNPCInteractType {
NONE,
CUTSCENE
};
@export var interactType:BasicNPCInteractType = BasicNPCInteractType.NONE;
@export var interactCutscene:Resource;
func interact(interactor:OverworldEntity) -> void:
if interactType == BasicNPCInteractType.NONE:
return
if interactType == BasicNPCInteractType.CUTSCENE:
# Cutscene in this manner must take two entities
# (self, speaker, and interactor, player)
var instance:Cutscene = interactCutscene.new(self, interactor);
getSystems().CUTSCENE.setCurrentCutscene(instance);
return
pass
func updateMovement(delta:float) -> void:
pass

View File

@@ -1,5 +1,4 @@
extends CharacterBody3D
class_name OverworldEntity
class_name OverworldEntity extends CharacterBody3D
const PauseSystem = preload("res://scripts/System/PauseSystem.gd")
@@ -14,7 +13,11 @@ var speed:float = 150;
var friction:float = 8.5;
var gravity:float = 30;
var direction = Direction.SOUTH;
@export var direction = Direction.SOUTH:
set(newDirection):
direction = newDirection;
_updateMaterial();
var meshInstance:MeshInstance3D;
var underFootTile:int = -1;
var underFootPosition:Vector3;
@@ -22,6 +25,14 @@ var underFootPosition:Vector3;
var withinMapBounds:MapBounds;
var withinBoundsLastFrame:bool = true;
func _updateMaterial():
if !meshInstance:
return
var material:ShaderMaterial = meshInstance.get_surface_override_material(0)
if !material:
return
material.set_shader_parameter("direction", direction)
func getSystems() -> Systems:
return get_tree().current_scene.get_node("Systems") as Systems;
@@ -128,6 +139,7 @@ func _updateTileData() -> void:
func _ready() -> void:
meshInstance = get_node("MeshInstance3D")
_updateTileData();
_updateMaterial();
pass
func _process(delta:float) -> void:
@@ -144,10 +156,6 @@ func _process(delta:float) -> void:
# Update logic
updateOverworldLogic(delta)
# Set shader direction.
var material:ShaderMaterial = meshInstance.get_surface_override_material(0)
material.set_shader_parameter("direction", direction)
func _physics_process(delta: float) -> void:
if isPaused():

View File

@@ -1,15 +0,0 @@
class_name TestNPCController extends "res://scripts/Entities/OverworldEntity.gd"
const TestCutscene = preload("res://scripts/Cutscene/TestCutscene.gd")
func interact(interactor:OverworldEntity) -> void:
# var battle = Battle.new();
# getSystems().BATTLE.startBattle(battle);
# var game = CookingGame.new(VerticalSlice.new());
# getSystems().COOKING.setCookingGame(game);
getSystems().CUTSCENE.setCurrentCutscene(TestCutscene.new(interactor, self));
pass
func updateMovement(delta:float) -> void:
pass

View File

@@ -1 +1 @@
class_name UIScene extends Control
class_name UIScene extends Control