Compare commits
22 Commits
3c11b232fa
...
main
Author | SHA1 | Date | |
---|---|---|---|
96b5bae9d0 | |||
2b58781907 | |||
39aca9aa3f | |||
aea5158d6e | |||
6d75b33775 | |||
3ccf4ebabb | |||
6f1defb3da | |||
379c7007aa | |||
e74896527b | |||
5cd8b8a04b | |||
0f3db7c4a4 | |||
a7dcf760a7 | |||
53ad2da596 | |||
e0dd14c460 | |||
29ebb68215 | |||
7ae9d534ab | |||
58126341ba | |||
3e95481282 | |||
977f17f73b | |||
c7bed57b82 | |||
0c31e684e3 | |||
342d6745d1 |
27
InteractableArea.gd
Normal file
27
InteractableArea.gd
Normal file
@@ -0,0 +1,27 @@
|
||||
class_name InteractableArea extends Area3D
|
||||
|
||||
signal interactEvent(playerEntity:Player)
|
||||
signal interactable(playerEntity:Player)
|
||||
signal notInteractable(playerEntity:Player)
|
||||
|
||||
func _enter_tree() -> void:
|
||||
area_entered.connect(onAreaEntered)
|
||||
area_exited.connect(onAreaExited)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
area_entered.disconnect(onAreaEntered)
|
||||
area_exited.disconnect(onAreaExited)
|
||||
|
||||
func onAreaEntered(area:Area3D) -> void:
|
||||
if !area.get_parent() or !(area.get_parent() is Player):
|
||||
return
|
||||
|
||||
var player:Player = area.get_parent() as Player
|
||||
interactable.emit(player)
|
||||
|
||||
func onAreaExited(area:Area3D) -> void:
|
||||
if !area.get_parent() or !(area.get_parent() is Player):
|
||||
return
|
||||
|
||||
var player:Player = area.get_parent() as Player
|
||||
notInteractable.emit(player)
|
1
InteractableArea.gd.uid
Normal file
1
InteractableArea.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b00rxpveu3v4m
|
50
MapChangeInteract.gd
Normal file
50
MapChangeInteract.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
class_name MapChangeInteract extends Node3D
|
||||
|
||||
|
||||
@export var mapResource:PackedScene
|
||||
@export var destinationPointNodeName:String
|
||||
var interactableArea:InteractableArea
|
||||
var shapeChild:CollisionShape3D
|
||||
|
||||
func _enter_tree() -> void:
|
||||
interactableArea = $InteractableArea
|
||||
|
||||
if !mapResource:
|
||||
push_error("MapChangeInteract must have a mapResource set.")
|
||||
return
|
||||
|
||||
# Needs to be exactly one child.
|
||||
if get_child_count() != 2:
|
||||
push_error("MapChangeInteract must have exactly one child InteractableArea node.")
|
||||
return
|
||||
|
||||
var child = get_child(1)
|
||||
if not (child is CollisionShape3D):
|
||||
push_error("MapChangeInteract's child must be an CollisionShape3D node.")
|
||||
|
||||
shapeChild = child
|
||||
remove_child(shapeChild)
|
||||
interactableArea.add_child(shapeChild)
|
||||
|
||||
interactableArea.interactEvent.connect(onInteract)
|
||||
interactableArea.interactable.connect(onInteractable)
|
||||
interactableArea.notInteractable.connect(onNotInteractable)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
interactableArea.interactEvent.disconnect(onInteract)
|
||||
interactableArea.interactable.disconnect(onInteractable)
|
||||
interactableArea.notInteractable.disconnect(onNotInteractable)
|
||||
|
||||
interactableArea.remove_child(shapeChild)
|
||||
add_child(shapeChild)
|
||||
|
||||
func onInteract(_ent:Player) -> void:
|
||||
OVERWORLD.mapChange(mapResource, destinationPointNodeName)
|
||||
|
||||
func onInteractable(_ent:Player) -> void:
|
||||
print("Able to leave map")
|
||||
pass
|
||||
|
||||
func onNotInteractable(_ent:Player) -> void:
|
||||
print("Not able to leave map")
|
||||
pass
|
1
MapChangeInteract.gd.uid
Normal file
1
MapChangeInteract.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cpqmjomfpyifw
|
11
MapChangeInteract.tscn
Normal file
11
MapChangeInteract.tscn
Normal file
@@ -0,0 +1,11 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cr6h3g15bf6ts"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cpqmjomfpyifw" path="res://MapChangeInteract.gd" id="1_4tqca"]
|
||||
[ext_resource type="Script" uid="uid://b00rxpveu3v4m" path="res://InteractableArea.gd" id="2_3pe6u"]
|
||||
|
||||
[node name="MapChangeInteract" type="Node3D"]
|
||||
script = ExtResource("1_4tqca")
|
||||
|
||||
[node name="InteractableArea" type="Area3D" parent="."]
|
||||
script = ExtResource("2_3pe6u")
|
||||
metadata/_custom_type_script = "uid://b00rxpveu3v4m"
|
@@ -86,7 +86,7 @@ func _enter_tree():
|
||||
_parse_input_actions()
|
||||
|
||||
func _exit_tree():
|
||||
Mapper.queue_free()
|
||||
Mapper = null
|
||||
|
||||
func _parse_input_actions():
|
||||
_custom_input_actions.clear()
|
||||
@@ -189,10 +189,13 @@ func refresh():
|
||||
func get_joypad_type(controller: int = _last_controller) -> ControllerSettings.Devices:
|
||||
return Mapper._get_joypad_type(controller, _settings.joypad_fallback)
|
||||
|
||||
func parse_path(path: String, input_type = _last_input_type, last_controller = _last_controller) -> Texture:
|
||||
func get_last_input_type() -> InputType:
|
||||
return _last_input_type
|
||||
|
||||
func parse_path(path: String, input_type = _last_input_type, last_controller = _last_controller, forced_controller_icon_style = ControllerSettings.Devices.NONE) -> Texture:
|
||||
if typeof(input_type) == TYPE_NIL:
|
||||
return null
|
||||
var root_paths := _expand_path(path, input_type, last_controller)
|
||||
var root_paths := _expand_path(path, input_type, last_controller, forced_controller_icon_style)
|
||||
for root_path in root_paths:
|
||||
if _load_icon(root_path):
|
||||
continue
|
||||
@@ -228,6 +231,7 @@ func parse_event_modifiers(event: InputEvent) -> Array[Texture]:
|
||||
for icon_path in _expand_path(modifier, InputType.KEYBOARD_MOUSE, -1):
|
||||
if _load_icon(icon_path) == OK:
|
||||
icons.push_back(_cached_icons[icon_path])
|
||||
break
|
||||
|
||||
return icons
|
||||
|
||||
@@ -270,7 +274,7 @@ func get_matching_event(path: String, input_type: InputType = _last_input_type,
|
||||
else:
|
||||
events = InputMap.action_get_events(path)
|
||||
|
||||
var fallback = null
|
||||
var fallbacks = []
|
||||
for event in events:
|
||||
if not is_instance_valid(event): continue
|
||||
|
||||
@@ -283,13 +287,15 @@ func get_matching_event(path: String, input_type: InputType = _last_input_type,
|
||||
# Use the first device specific mapping if there is one.
|
||||
if event.device == controller:
|
||||
return event
|
||||
# Otherwise use the first "all devices" mapping.
|
||||
elif fallback == null and event.device < 0:
|
||||
fallback = event
|
||||
# Otherwise, we create a fallback prioritizing events with 'ALL_DEVICE'
|
||||
if event.device < 0: # All-device event
|
||||
fallbacks.push_front(event)
|
||||
else:
|
||||
fallbacks.push_back(event)
|
||||
|
||||
return fallback
|
||||
return fallbacks[0] if not fallbacks.is_empty() else null
|
||||
|
||||
func _expand_path(path: String, input_type: int, controller: int) -> Array:
|
||||
func _expand_path(path: String, input_type: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE) -> Array:
|
||||
var paths := []
|
||||
var base_paths := [
|
||||
_settings.custom_asset_dir + "/",
|
||||
@@ -298,20 +304,20 @@ func _expand_path(path: String, input_type: int, controller: int) -> Array:
|
||||
for base_path in base_paths:
|
||||
if base_path.is_empty():
|
||||
continue
|
||||
base_path += _convert_path_to_asset_file(path, input_type, controller)
|
||||
base_path += _convert_path_to_asset_file(path, input_type, controller, forced_controller_icon_style)
|
||||
|
||||
paths.push_back(base_path + "." + _base_extension)
|
||||
return paths
|
||||
|
||||
func _convert_path_to_asset_file(path: String, input_type: int, controller: int) -> String:
|
||||
func _convert_path_to_asset_file(path: String, input_type: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE) -> String:
|
||||
match get_path_type(path):
|
||||
PathType.INPUT_ACTION:
|
||||
var event := get_matching_event(path, input_type, controller)
|
||||
if event:
|
||||
return _convert_event_to_path(event)
|
||||
return _convert_event_to_path(event, controller, forced_controller_icon_style)
|
||||
return path
|
||||
PathType.JOYPAD_PATH:
|
||||
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback)
|
||||
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback, forced_controller_icon_style)
|
||||
PathType.SPECIFIC_PATH, _:
|
||||
return path
|
||||
|
||||
@@ -372,7 +378,7 @@ func _convert_asset_file_to_tts(path: String) -> String:
|
||||
_:
|
||||
return path
|
||||
|
||||
func _convert_event_to_path(event: InputEvent):
|
||||
func _convert_event_to_path(event: InputEvent, controller: int = _last_controller, forced_controller_icon_style = ControllerSettings.Devices.NONE):
|
||||
if event is InputEventKey:
|
||||
# If this is a physical key, convert to localized scancode
|
||||
if event.keycode == 0:
|
||||
@@ -381,9 +387,9 @@ func _convert_event_to_path(event: InputEvent):
|
||||
elif event is InputEventMouseButton:
|
||||
return _convert_mouse_button_to_path(event.button_index)
|
||||
elif event is InputEventJoypadButton:
|
||||
return _convert_joypad_button_to_path(event.button_index, event.device)
|
||||
return _convert_joypad_button_to_path(event.button_index, controller, forced_controller_icon_style)
|
||||
elif event is InputEventJoypadMotion:
|
||||
return _convert_joypad_motion_to_path(event.axis, event.device)
|
||||
return _convert_joypad_motion_to_path(event.axis, controller, forced_controller_icon_style)
|
||||
|
||||
func _convert_key_to_path(scancode: int):
|
||||
match scancode:
|
||||
@@ -615,7 +621,7 @@ func _convert_mouse_button_to_path(button_index: int):
|
||||
_:
|
||||
return "mouse/sample"
|
||||
|
||||
func _convert_joypad_button_to_path(button_index: int, controller: int):
|
||||
func _convert_joypad_button_to_path(button_index: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE):
|
||||
var path
|
||||
match button_index:
|
||||
JOY_BUTTON_A:
|
||||
@@ -652,9 +658,9 @@ func _convert_joypad_button_to_path(button_index: int, controller: int):
|
||||
path = "joypad/share"
|
||||
_:
|
||||
return ""
|
||||
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback)
|
||||
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback, forced_controller_icon_style)
|
||||
|
||||
func _convert_joypad_motion_to_path(axis: int, controller: int):
|
||||
func _convert_joypad_motion_to_path(axis: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE):
|
||||
var path : String
|
||||
match axis:
|
||||
JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y:
|
||||
@@ -667,7 +673,7 @@ func _convert_joypad_motion_to_path(axis: int, controller: int):
|
||||
path = "joypad/rt"
|
||||
_:
|
||||
return ""
|
||||
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback)
|
||||
return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback, forced_controller_icon_style)
|
||||
|
||||
func _load_icon(path: String) -> int:
|
||||
if _cached_icons.has(path): return OK
|
||||
|
@@ -1 +1 @@
|
||||
uid://cxxl7e1hu587n
|
||||
uid://b06g4dpg627b5
|
||||
|
@@ -3,6 +3,7 @@ extends Resource
|
||||
class_name ControllerSettings
|
||||
|
||||
enum Devices {
|
||||
NONE = -1,
|
||||
LUNA,
|
||||
OUYA,
|
||||
PS3,
|
1
addons/controller_icons/ControllerSettings.gd.uid
Normal file
1
addons/controller_icons/ControllerSettings.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bih8ls5msy63l
|
21
addons/controller_icons/LICENSE
Normal file
21
addons/controller_icons/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Ricardo Subtil
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@@ -1,8 +1,8 @@
|
||||
extends Node
|
||||
extends RefCounted
|
||||
class_name ControllerMapper
|
||||
|
||||
func _convert_joypad_path(path: String, device: int, fallback: ControllerSettings.Devices) -> String:
|
||||
match _get_joypad_type(device, fallback):
|
||||
func _convert_joypad_path(path: String, device: int, fallback: ControllerSettings.Devices, force_controller_icon_style = ControllerSettings.Devices.NONE) -> String:
|
||||
match _get_joypad_type(device, fallback, force_controller_icon_style):
|
||||
ControllerSettings.Devices.LUNA:
|
||||
return _convert_joypad_to_luna(path)
|
||||
ControllerSettings.Devices.PS3:
|
||||
@@ -32,7 +32,9 @@ func _convert_joypad_path(path: String, device: int, fallback: ControllerSetting
|
||||
_:
|
||||
return ""
|
||||
|
||||
func _get_joypad_type(device, fallback):
|
||||
func _get_joypad_type(device, fallback, force_controller_icon_style):
|
||||
if force_controller_icon_style != ControllerSettings.Devices.NONE:
|
||||
return force_controller_icon_style
|
||||
var available = Input.get_connected_joypads()
|
||||
if available.is_empty():
|
||||
return fallback
|
||||
@@ -264,7 +266,7 @@ func _convert_joypad_to_steamdeck(path: String):
|
||||
"rt":
|
||||
return path.replace("/rt", "/r2")
|
||||
"select":
|
||||
return path.replace("/select", "/square")
|
||||
return path.replace("/select", "/inventory")
|
||||
"start":
|
||||
return path.replace("/start", "/menu")
|
||||
"home":
|
||||
|
@@ -1 +1 @@
|
||||
uid://dtgqdoflwmo0b
|
||||
uid://5wx82aghglqr
|
||||
|
@@ -1 +0,0 @@
|
||||
uid://dygveqy02jjgx
|
BIN
addons/controller_icons/assets/steamdeck/inventory.png
Normal file
BIN
addons/controller_icons/assets/steamdeck/inventory.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ds5yo8kn81uem"
|
||||
path="res://.godot/imported/inventory.png-2e96b194d1562d723597b2d307313c1b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/controller_icons/assets/steamdeck/inventory.png"
|
||||
dest_files=["res://.godot/imported/inventory.png-2e96b194d1562d723597b2d307313c1b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
@@ -1 +1 @@
|
||||
uid://lm0qpml4w2mx
|
||||
uid://jcpjcl10iatx
|
||||
|
@@ -1 +1 @@
|
||||
uid://dkn6l8tlu56d8
|
||||
uid://xp37xj8kduow
|
||||
|
@@ -1 +1 @@
|
||||
uid://sg5ntoaywgfd
|
||||
uid://r1qngdbv7gh4
|
||||
|
@@ -1 +1 @@
|
||||
uid://125nay2twqlr
|
||||
uid://bsynmd02318ph
|
||||
|
@@ -1 +1 @@
|
||||
uid://d1hrxvtfr4t5w
|
||||
uid://da3havxu352nb
|
||||
|
@@ -50,7 +50,7 @@ class_name ControllerIconTexture
|
||||
## # res://addons/controller_icons/assets/steam/gyro.png
|
||||
## path = "steam/gyro"
|
||||
## [/codeblock]
|
||||
@export var path : String = "":
|
||||
@export var path: String = "":
|
||||
set(_path):
|
||||
path = _path
|
||||
_load_texture_path()
|
||||
@@ -63,11 +63,25 @@ enum ShowMode {
|
||||
|
||||
## Show the icon only if a specific input method is being used. When hidden,
|
||||
## the icon will not occupy have any space (no width and height).
|
||||
@export var show_mode : ShowMode = ShowMode.ANY:
|
||||
@export var show_mode: ShowMode = ShowMode.ANY:
|
||||
set(_show_mode):
|
||||
show_mode = _show_mode
|
||||
_load_texture_path()
|
||||
|
||||
|
||||
## Forces the icon to show a specific controller style, regardless of the
|
||||
## currently used controller type.
|
||||
##[br][br]
|
||||
## This will override force_device if set to a value other than NONE.
|
||||
##[br][br]
|
||||
## This is only relevant for paths using input actions, and has no effect on
|
||||
## other scenarios.
|
||||
|
||||
@export var force_controller_icon_style: ControllerSettings.Devices = ControllerSettings.Devices.NONE:
|
||||
set(_force_controller_icon_style):
|
||||
force_controller_icon_style = _force_controller_icon_style
|
||||
_load_texture_path()
|
||||
|
||||
enum ForceType {
|
||||
NONE, ## Icon will swap according to the used input method.
|
||||
KEYBOARD_MOUSE, ## Icon will always show the keyboard/mouse action.
|
||||
@@ -79,14 +93,42 @@ enum ForceType {
|
||||
##[br][br]
|
||||
## This is only relevant for paths using input actions, and has no effect on
|
||||
## other scenarios.
|
||||
@export var force_type : ForceType = ForceType.NONE:
|
||||
@export var force_type: ForceType = ForceType.NONE:
|
||||
set(_force_type):
|
||||
force_type = _force_type
|
||||
_load_texture_path()
|
||||
|
||||
enum ForceDevice {
|
||||
DEVICE_0,
|
||||
DEVICE_1,
|
||||
DEVICE_2,
|
||||
DEVICE_3,
|
||||
DEVICE_4,
|
||||
DEVICE_5,
|
||||
DEVICE_6,
|
||||
DEVICE_7,
|
||||
DEVICE_8,
|
||||
DEVICE_9,
|
||||
DEVICE_10,
|
||||
DEVICE_11,
|
||||
DEVICE_12,
|
||||
DEVICE_13,
|
||||
DEVICE_14,
|
||||
DEVICE_15,
|
||||
ANY # No device will be forced
|
||||
}
|
||||
|
||||
## Forces the icon to use the textures for the device connected at the specified index.
|
||||
## For example, if a PlayStation 5 controller is connected at device_index 0,
|
||||
## the icon will always show PlayStation 5 textures.
|
||||
@export var force_device: ForceDevice = ForceDevice.ANY:
|
||||
set(_force_device):
|
||||
force_device = _force_device
|
||||
_load_texture_path()
|
||||
|
||||
@export_subgroup("Text Rendering")
|
||||
## Custom LabelSettings. If set, overrides the addon's global label settings.
|
||||
@export var custom_label_settings : LabelSettings:
|
||||
@export var custom_label_settings: LabelSettings:
|
||||
set(_custom_label_settings):
|
||||
custom_label_settings = _custom_label_settings
|
||||
_load_texture_path()
|
||||
@@ -117,7 +159,7 @@ func _can_be_shown():
|
||||
0, _:
|
||||
return true
|
||||
|
||||
var _textures : Array[Texture2D]:
|
||||
var _textures: Array[Texture2D]:
|
||||
set(__textures):
|
||||
# UPGRADE: In Godot 4.2, for-loop variables can be
|
||||
# statically typed:
|
||||
@@ -147,9 +189,9 @@ var _textures : Array[Texture2D]:
|
||||
if tex:
|
||||
tex.connect("changed", _reload_resource)
|
||||
|
||||
var _font : Font
|
||||
var _label_settings : LabelSettings
|
||||
var _text_size : Vector2
|
||||
var _font: Font
|
||||
var _label_settings: LabelSettings
|
||||
var _text_size: Vector2
|
||||
|
||||
func _on_label_settings_changed():
|
||||
_font = ThemeDB.fallback_font if not _label_settings.font else _label_settings.font
|
||||
@@ -161,13 +203,14 @@ func _reload_resource():
|
||||
emit_changed()
|
||||
|
||||
func _load_texture_path_impl():
|
||||
var textures : Array[Texture2D] = []
|
||||
var textures: Array[Texture2D] = []
|
||||
if ControllerIcons.is_node_ready() and _can_be_shown():
|
||||
var input_type = ControllerIcons._last_input_type if force_type == ForceType.NONE else force_type - 1
|
||||
if ControllerIcons.get_path_type(path) == ControllerIcons.PathType.INPUT_ACTION:
|
||||
var event := ControllerIcons.get_matching_event(path, input_type)
|
||||
textures.append_array(ControllerIcons.parse_event_modifiers(event))
|
||||
var tex := ControllerIcons.parse_path(path, input_type)
|
||||
var target_device = force_device if force_device != ForceDevice.ANY else ControllerIcons._last_controller
|
||||
var tex := ControllerIcons.parse_path(path, input_type, target_device, force_controller_icon_style)
|
||||
if tex:
|
||||
textures.append(tex)
|
||||
_textures = textures
|
||||
@@ -200,7 +243,7 @@ func _get_width() -> int:
|
||||
return accum
|
||||
, 0)
|
||||
if _label_settings:
|
||||
ret += max(0, _textures.size()-1) * _text_size.x
|
||||
ret += max(0, _textures.size() - 1) * _text_size.x
|
||||
# If ret is 0, return a size of 2 to prevent triggering engine checks
|
||||
# for null sizes. The correct size will be set at a later frame.
|
||||
return ret if ret > 0 else _NULL_SIZE
|
||||
@@ -235,7 +278,7 @@ func _draw(to_canvas_item: RID, pos: Vector2, modulate: Color, transpose: bool):
|
||||
var position := pos
|
||||
|
||||
for i in range(_textures.size()):
|
||||
var tex:Texture2D = _textures[i]
|
||||
var tex: Texture2D = _textures[i]
|
||||
if !tex: continue
|
||||
|
||||
if i != 0:
|
||||
@@ -256,7 +299,7 @@ func _draw_rect(to_canvas_item: RID, rect: Rect2, tile: bool, modulate: Color, t
|
||||
var height_ratio := rect.size.y / _get_height()
|
||||
|
||||
for i in range(_textures.size()):
|
||||
var tex:Texture2D = _textures[i]
|
||||
var tex: Texture2D = _textures[i]
|
||||
if !tex: continue
|
||||
|
||||
if i != 0:
|
||||
@@ -278,7 +321,7 @@ func _draw_rect_region(to_canvas_item: RID, rect: Rect2, src_rect: Rect2, modula
|
||||
var height_ratio := rect.size.y / _get_height()
|
||||
|
||||
for i in range(_textures.size()):
|
||||
var tex:Texture2D = _textures[i]
|
||||
var tex: Texture2D = _textures[i]
|
||||
if !tex: continue
|
||||
|
||||
if i != 0:
|
||||
@@ -314,15 +357,15 @@ func _draw_text(to_canvas_item: RID, font_position: Vector2, text: String):
|
||||
_font.draw_string_outline(to_canvas_item, font_position, text, HORIZONTAL_ALIGNMENT_LEFT, -1, _label_settings.font_size, _label_settings.outline_size, _label_settings.outline_color)
|
||||
_font.draw_string(to_canvas_item, font_position, text, HORIZONTAL_ALIGNMENT_CENTER, -1, _label_settings.font_size, _label_settings.font_color)
|
||||
|
||||
var _helper_viewport : Viewport
|
||||
var _is_stitching_texture : bool = false
|
||||
var _helper_viewport: Viewport
|
||||
var _is_stitching_texture: bool = false
|
||||
func _stitch_texture():
|
||||
if _textures.is_empty():
|
||||
return
|
||||
|
||||
_is_stitching_texture = true
|
||||
|
||||
var font_image : Image
|
||||
var font_image: Image
|
||||
if _textures.size() > 1:
|
||||
# Generate a viewport to draw the text
|
||||
_helper_viewport = SubViewport.new()
|
||||
@@ -345,7 +388,7 @@ func _stitch_texture():
|
||||
_helper_viewport.free()
|
||||
|
||||
var position := Vector2i(0, 0)
|
||||
var img : Image
|
||||
var img: Image
|
||||
for i in range(_textures.size()):
|
||||
if !_textures[i]: continue
|
||||
|
||||
@@ -375,7 +418,7 @@ func _stitch_texture():
|
||||
# This is necessary for 3D sprites, as the texture is assigned to a material, and not drawn directly.
|
||||
# For multi prompts, we need to generate a texture
|
||||
var _dirty := true
|
||||
var _texture_3d : Texture
|
||||
var _texture_3d: Texture
|
||||
func _get_rid():
|
||||
if _dirty:
|
||||
if not _is_stitching_texture:
|
||||
|
@@ -1 +1 @@
|
||||
uid://ddxpo5u73ssi2
|
||||
uid://cxab4gf8nejc2
|
||||
|
@@ -1 +1 @@
|
||||
uid://k2tud3diool
|
||||
uid://dlwwg6hbxcg6r
|
||||
|
@@ -1 +1 @@
|
||||
uid://bpos4yaigyeqr
|
||||
uid://dns2c4458ekvc
|
||||
|
@@ -1 +1 @@
|
||||
uid://dmp4w4ojx7klt
|
||||
uid://cispm18xp24wt
|
||||
|
@@ -1 +1 @@
|
||||
uid://bu8t48xqekc8o
|
||||
uid://c6lqhrewwbp61
|
||||
|
@@ -1 +1 @@
|
||||
uid://da1ors8v36hv3
|
||||
uid://texv8inbqrdh
|
||||
|
@@ -1 +1 @@
|
||||
uid://dt82cmmp3uy7l
|
||||
uid://wnl1k7337x2u
|
||||
|
@@ -3,5 +3,5 @@
|
||||
name="Controller Icons"
|
||||
description="Provides icons for all major controllers and keyboard, with automatic icon remapping."
|
||||
author="rsubtil"
|
||||
version="3.1.4"
|
||||
version="3.1.5"
|
||||
script="plugin.gd"
|
||||
|
@@ -1 +1 @@
|
||||
uid://cajvrhetudhyg
|
||||
uid://xvjobdx0h3gi
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="ControllerSettings" load_steps=2 format=3 uid="uid://dolsrvh5w47et"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/controller_icons/Settings.gd" id="1"]
|
||||
[ext_resource type="Script" path="res://addons/controller_icons/ControllerSettings.gd" id="1"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1")
|
||||
|
32
cutscene/Cutscene.gd
Normal file
32
cutscene/Cutscene.gd
Normal file
@@ -0,0 +1,32 @@
|
||||
class_name Cutscene extends Node
|
||||
|
||||
var items:Array[CutsceneItem] = []
|
||||
var itemIndex:int = 0
|
||||
|
||||
func _enter_tree() -> void:
|
||||
# Get children
|
||||
var children = get_children()
|
||||
for child in children:
|
||||
if !(child is CutsceneItem):
|
||||
continue
|
||||
items.append(child)
|
||||
pass
|
||||
|
||||
func _exit_tree() -> void:
|
||||
items.clear()
|
||||
pass
|
||||
|
||||
func start() -> void:
|
||||
itemIndex = -1
|
||||
if items.size() == 0:
|
||||
return
|
||||
nextItem()
|
||||
|
||||
func nextItem() -> void:
|
||||
itemIndex += 1
|
||||
if itemIndex >= items.size():
|
||||
return
|
||||
|
||||
var item = items[itemIndex]
|
||||
item.cutscene = self
|
||||
item.start()
|
1
cutscene/Cutscene.gd.uid
Normal file
1
cutscene/Cutscene.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://chxpes3546yoj
|
9
cutscene/CutsceneTest.tscn
Normal file
9
cutscene/CutsceneTest.tscn
Normal file
@@ -0,0 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bhvoo48bpbkf3"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://d3rtd0ln7l2gr" path="res://scenes/maps/MapTundra.tscn" id="1_fsb0j"]
|
||||
|
||||
[node name="CutsceneTest" type="Node3D"]
|
||||
|
||||
[node name="MapTundra" parent="." instance=ExtResource("1_fsb0j")]
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
12
cutscene/item/CutsceneItem.gd
Normal file
12
cutscene/item/CutsceneItem.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
class_name CutsceneItem extends Node
|
||||
|
||||
var cutscene:Cutscene = null
|
||||
|
||||
func start() -> void:
|
||||
# This method should be overridden by subclasses
|
||||
pass
|
||||
|
||||
func done() -> void:
|
||||
if !cutscene:
|
||||
return
|
||||
cutscene.nextItem()
|
1
cutscene/item/CutsceneItem.gd.uid
Normal file
1
cutscene/item/CutsceneItem.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dbjcrhunrugyb
|
24
cutscene/item/CutsceneText.gd
Normal file
24
cutscene/item/CutsceneText.gd
Normal file
@@ -0,0 +1,24 @@
|
||||
class_name CutsceneText extends CutsceneItem
|
||||
|
||||
@export_multiline var interactTexts:Array[String] = []
|
||||
var nextTextIndex:int = 0
|
||||
|
||||
func _enter_tree() -> void:
|
||||
pass
|
||||
|
||||
func _exit_tree() -> void:
|
||||
UI.TEXTBOX.textboxClosing.disconnect(onTextboxClosing)
|
||||
|
||||
func start() -> void:
|
||||
nextTextIndex = 0
|
||||
UI.TEXTBOX.setText(interactTexts[nextTextIndex])
|
||||
UI.TEXTBOX.textboxClosing.connect(onTextboxClosing)
|
||||
|
||||
func onTextboxClosing() -> void:
|
||||
nextTextIndex += 1
|
||||
if nextTextIndex < interactTexts.size():
|
||||
UI.TEXTBOX.setText(interactTexts[nextTextIndex])
|
||||
else:
|
||||
UI.TEXTBOX.textboxClosing.disconnect(onTextboxClosing)
|
||||
UI.TEXTBOX.setText("")
|
||||
done()
|
1
cutscene/item/CutsceneText.gd.uid
Normal file
1
cutscene/item/CutsceneText.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://8updtj1mctra
|
148
entity/EntityMovement.gd
Normal file
148
entity/EntityMovement.gd
Normal file
@@ -0,0 +1,148 @@
|
||||
@tool
|
||||
class_name EntityMovement extends Node
|
||||
|
||||
const FRICTION = 0.01
|
||||
|
||||
enum FacingDirection {
|
||||
SOUTH = 0,
|
||||
EAST = 1,
|
||||
NORTH = 2,
|
||||
WEST = 3
|
||||
};
|
||||
|
||||
const FacingDirWalkAnimations = {
|
||||
FacingDirection.SOUTH: "walk_south",
|
||||
FacingDirection.EAST: "walk_east",
|
||||
FacingDirection.NORTH: "walk_north",
|
||||
FacingDirection.WEST: "walk_west"
|
||||
};
|
||||
|
||||
const FacingDirAngle = {
|
||||
FacingDirection.SOUTH: 0.0,
|
||||
FacingDirection.EAST: PI / 2,
|
||||
FacingDirection.NORTH: PI,
|
||||
FacingDirection.WEST: -PI / 2
|
||||
};
|
||||
|
||||
var _inputDir:Vector2 = Vector2.ZERO
|
||||
var _facingDir:FacingDirection = FacingDirection.SOUTH
|
||||
var _running:bool = false
|
||||
|
||||
@export var body:CharacterBody3D
|
||||
@export var rotate:Node3D
|
||||
@export var sprite:AnimatedSprite3D
|
||||
@export var walkSpeed:float = 48.0
|
||||
@export var runSpeed:float = 64.0
|
||||
@export var facingDir:FacingDirection = FacingDirection.SOUTH:
|
||||
set(value):
|
||||
_facingDir = value
|
||||
_updateSprite()
|
||||
get:
|
||||
return _facingDir
|
||||
|
||||
#
|
||||
# Private Methods
|
||||
#
|
||||
func _updateSprite() -> void:
|
||||
if !sprite || sprite.animation == FacingDirWalkAnimations[facingDir]:
|
||||
return
|
||||
sprite.animation = FacingDirWalkAnimations[facingDir]
|
||||
|
||||
|
||||
func _applyFacingDir() -> void:
|
||||
if !sprite || _inputDir.length() <= 0.01:
|
||||
return
|
||||
|
||||
if _inputDir.y > 0:
|
||||
if facingDir != FacingDirection.NORTH && _inputDir.x != 0:
|
||||
if _inputDir.x > 0 && facingDir == FacingDirection.EAST:
|
||||
facingDir = FacingDirection.EAST
|
||||
elif _inputDir.x < 0 && facingDir == FacingDirection.WEST:
|
||||
facingDir = FacingDirection.WEST
|
||||
else:
|
||||
facingDir = FacingDirection.NORTH
|
||||
else:
|
||||
facingDir = FacingDirection.NORTH
|
||||
elif _inputDir.y < 0:
|
||||
if facingDir != FacingDirection.SOUTH && _inputDir.x != 0:
|
||||
if _inputDir.x > 0 && facingDir == FacingDirection.EAST:
|
||||
facingDir = FacingDirection.EAST
|
||||
elif _inputDir.x < 0 && facingDir == FacingDirection.WEST:
|
||||
facingDir = FacingDirection.WEST
|
||||
else:
|
||||
facingDir = FacingDirection.SOUTH
|
||||
else:
|
||||
facingDir = FacingDirection.SOUTH
|
||||
elif _inputDir.x > 0:
|
||||
facingDir = FacingDirection.EAST
|
||||
else:
|
||||
facingDir = FacingDirection.WEST
|
||||
|
||||
func _applyGravity() -> void:
|
||||
if !body.is_on_floor():
|
||||
body.velocity += PHYSICS.GRAVITY * get_process_delta_time()
|
||||
|
||||
func _applyMovement() -> void:
|
||||
if !canMove():
|
||||
return
|
||||
|
||||
var cameraCurrent = get_viewport().get_camera_3d()
|
||||
if !cameraCurrent:
|
||||
return
|
||||
|
||||
# Use camera orientation for movement direction
|
||||
var camBasis = cameraCurrent.global_transform.basis
|
||||
|
||||
# Forward and right vectors, ignore vertical component
|
||||
var forward = -camBasis.z
|
||||
forward.y = 0
|
||||
forward = forward.normalized()
|
||||
var right = camBasis.x
|
||||
right.y = 0
|
||||
right = right.normalized()
|
||||
|
||||
var directionAdjusted = (
|
||||
forward * _inputDir.y + right * _inputDir.x
|
||||
).normalized()
|
||||
if directionAdjusted.length() <= 0.01:
|
||||
return
|
||||
|
||||
if rotate:
|
||||
var targetRot = atan2(directionAdjusted.x, directionAdjusted.z)
|
||||
rotate.rotation.y = targetRot
|
||||
|
||||
var speed = walkSpeed
|
||||
if _running:
|
||||
speed = runSpeed
|
||||
|
||||
body.velocity.x = directionAdjusted.x * speed
|
||||
body.velocity.z = directionAdjusted.z * speed
|
||||
|
||||
func _applyFriction(delta:float) -> void:
|
||||
body.velocity.x *= delta * FRICTION
|
||||
body.velocity.z *= delta * FRICTION
|
||||
|
||||
#
|
||||
# Protected Methods
|
||||
#
|
||||
func canMove() -> bool:
|
||||
return true
|
||||
|
||||
#
|
||||
# Callbacks
|
||||
#
|
||||
func _enter_tree() -> void:
|
||||
_updateSprite()
|
||||
|
||||
func _physics_process(delta:float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
if !body:
|
||||
return
|
||||
|
||||
_applyGravity()
|
||||
_applyFriction(delta)
|
||||
_applyMovement()
|
||||
_applyFacingDir()
|
||||
body.move_and_slide()
|
1
entity/EntityMovement.gd.uid
Normal file
1
entity/EntityMovement.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b38dxsome4kiq
|
1
entity/MapCamera.gd.uid
Normal file
1
entity/MapCamera.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://csb0i132lcu0w
|
1
entity/NPC.gd.uid
Normal file
1
entity/NPC.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://jbarxyoib5a7
|
1
entity/Player.gd.uid
Normal file
1
entity/Player.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c0by5m1upv57h
|
38
entity/npc/NPC.gd
Normal file
38
entity/npc/NPC.gd
Normal file
@@ -0,0 +1,38 @@
|
||||
@tool
|
||||
class_name NPC extends CharacterBody3D
|
||||
|
||||
@export var _movement:NPCMovement
|
||||
|
||||
@export var facingDirection:EntityMovement.FacingDirection:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.facingDir = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.facingDir
|
||||
return EntityMovement.FacingDirection.SOUTH
|
||||
|
||||
@export var walkSpeed:float = 48.0:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.walkSpeed = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.walkSpeed
|
||||
return 48.0
|
||||
|
||||
@export var runSpeed:float = 64.0:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.runSpeed = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.runSpeed
|
||||
return 64.0
|
||||
|
||||
func onInteract(player:Player) -> void:
|
||||
print("Interacted with NPC")
|
||||
pass
|
||||
|
||||
func _enter_tree() -> void:
|
||||
pass
|
1
entity/npc/NPC.gd.uid
Normal file
1
entity/npc/NPC.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://crw7ls7t8cwct
|
96
entity/npc/NPC.tscn
Normal file
96
entity/npc/NPC.tscn
Normal file
@@ -0,0 +1,96 @@
|
||||
[gd_scene load_steps=12 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="Texture2D" uid="uid://xx3qp5xh7tgu" path="res://entity/player/Player.png" id="4_x8luf"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_1seh5"]
|
||||
size = Vector3(16, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rl6fg"]
|
||||
atlas = ExtResource("4_x8luf")
|
||||
region = Rect2(16, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_q57vx"]
|
||||
atlas = ExtResource("4_x8luf")
|
||||
region = Rect2(48, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ak4un"]
|
||||
atlas = ExtResource("4_x8luf")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1ms0h"]
|
||||
atlas = ExtResource("4_x8luf")
|
||||
region = Rect2(32, 0, 16, 16)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_1seh5"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_rl6fg")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_east",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_q57vx")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_north",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ak4un")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_south",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1ms0h")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_west",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_x8luf"]
|
||||
radius = 8.5
|
||||
|
||||
[node name="NPC" type="CharacterBody3D" node_paths=PackedStringArray("_movement")]
|
||||
script = ExtResource("1_00k55")
|
||||
_movement = NodePath("Scripts/NPCMovement")
|
||||
|
||||
[node name="Scripts" type="Node" parent="."]
|
||||
|
||||
[node name="NPCMovement" type="Node" parent="Scripts" node_paths=PackedStringArray("body", "sprite")]
|
||||
script = ExtResource("3_1seh5")
|
||||
body = NodePath("../..")
|
||||
sprite = NodePath("../../AnimatedSprite3D")
|
||||
|
||||
[node name="InteractableArea" type="Area3D" parent="."]
|
||||
script = ExtResource("2_x8luf")
|
||||
metadata/_custom_type_script = "uid://b00rxpveu3v4m"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractableArea"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8, 0)
|
||||
shape = SubResource("BoxShape3D_1seh5")
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."]
|
||||
pixel_size = 1.0
|
||||
axis = 1
|
||||
double_sided = false
|
||||
texture_filter = 0
|
||||
sprite_frames = SubResource("SpriteFrames_1seh5")
|
||||
animation = &"walk_south"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.5, 0)
|
||||
shape = SubResource("SphereShape3D_x8luf")
|
||||
|
||||
[connection signal="interactEvent" from="InteractableArea" to="." method="onInteract"]
|
1
entity/npc/NPCForwarder.gd.uid
Normal file
1
entity/npc/NPCForwarder.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dda6r22r8eow2
|
2
entity/npc/NPCMovement.gd
Normal file
2
entity/npc/NPCMovement.gd
Normal file
@@ -0,0 +1,2 @@
|
||||
@tool
|
||||
class_name NPCMovement extends "res://entity/EntityMovement.gd"
|
1
entity/npc/NPCMovement.gd.uid
Normal file
1
entity/npc/NPCMovement.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://tlfthv88ki0y
|
5
entity/npc/NPCTest.gd
Normal file
5
entity/npc/NPCTest.gd
Normal file
@@ -0,0 +1,5 @@
|
||||
class_name NPCTest extends Node
|
||||
|
||||
func onInteract(playerEntity: Player) -> void:
|
||||
print("Player has interacted with the NPC.")
|
||||
UI.TEXTBOX.setText("You have interacted with the NPC.")
|
1
entity/npc/NPCTest.gd.uid
Normal file
1
entity/npc/NPCTest.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cmwovncvo1n5o
|
31
entity/player/Player.gd
Normal file
31
entity/player/Player.gd
Normal file
@@ -0,0 +1,31 @@
|
||||
@tool
|
||||
class_name Player extends CharacterBody3D
|
||||
|
||||
@export var _movement:PlayerMovement
|
||||
|
||||
@export var facingDirection:EntityMovement.FacingDirection:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.facingDir = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.facingDir
|
||||
return EntityMovement.FacingDirection.SOUTH
|
||||
|
||||
@export var walkSpeed:float = 48.0:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.walkSpeed = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.walkSpeed
|
||||
return 48.0
|
||||
|
||||
@export var runSpeed:float = 64.0:
|
||||
set(value):
|
||||
if _movement:
|
||||
_movement.runSpeed = value
|
||||
get:
|
||||
if _movement:
|
||||
return _movement.runSpeed
|
||||
return 64.0
|
1
entity/player/Player.gd.uid
Normal file
1
entity/player/Player.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ylmy3nvpirgr
|
BIN
entity/player/Player.png
Normal file
BIN
entity/player/Player.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 237 B |
@@ -2,8 +2,8 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cofrgefp8e617"
|
||||
path.s3tc="res://.godot/imported/human.png-1880dba459540c27ee8035fcec96bd0b.s3tc.ctex"
|
||||
uid="uid://xx3qp5xh7tgu"
|
||||
path.s3tc="res://.godot/imported/Player.png-44a553acafadade6fc26fd4f7692a8d9.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
@@ -11,8 +11,8 @@ metadata={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://textures/human.png"
|
||||
dest_files=["res://.godot/imported/human.png-1880dba459540c27ee8035fcec96bd0b.s3tc.ctex"]
|
||||
source_file="res://entity/player/Player.png"
|
||||
dest_files=["res://.godot/imported/Player.png-44a553acafadade6fc26fd4f7692a8d9.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
BIN
entity/player/Player.png.pxo
Normal file
BIN
entity/player/Player.png.pxo
Normal file
Binary file not shown.
115
entity/player/Player.tscn
Normal file
115
entity/player/Player.tscn
Normal file
@@ -0,0 +1,115 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://2ch34sio36nv"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ylmy3nvpirgr" path="res://entity/player/Player.gd" id="1_24gqh"]
|
||||
[ext_resource type="Script" uid="uid://bwxdv3kxrs4oj" path="res://entity/player/PlayerMovement.gd" id="2_o7et6"]
|
||||
[ext_resource type="Script" uid="uid://b3nty7pvbo58d" path="res://entity/player/PlayerInteraction.gd" id="3_24gqh"]
|
||||
[ext_resource type="Script" uid="uid://bdv1fj1pwknrs" path="res://entity/player/PlayerInput.gd" id="4_yjynp"]
|
||||
[ext_resource type="Script" uid="uid://bdjgvyiacbg28" path="res://entity/player/PlayerCamera.gd" id="5_g3lhm"]
|
||||
[ext_resource type="Texture2D" uid="uid://xx3qp5xh7tgu" path="res://entity/player/Player.png" id="7_fmb3c"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_4pwj0"]
|
||||
radius = 8.5
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rl6fg"]
|
||||
atlas = ExtResource("7_fmb3c")
|
||||
region = Rect2(16, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_q57vx"]
|
||||
atlas = ExtResource("7_fmb3c")
|
||||
region = Rect2(48, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ak4un"]
|
||||
atlas = ExtResource("7_fmb3c")
|
||||
region = Rect2(0, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1ms0h"]
|
||||
atlas = ExtResource("7_fmb3c")
|
||||
region = Rect2(32, 0, 16, 16)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_2rv2u"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_rl6fg")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_east",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_q57vx")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_north",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ak4un")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_south",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1ms0h")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_west",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_g13of"]
|
||||
size = Vector3(10, 16, 8)
|
||||
|
||||
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("_movement")]
|
||||
script = ExtResource("1_24gqh")
|
||||
_movement = NodePath("Scripts/PlayerMovement")
|
||||
|
||||
[node name="Scripts" type="Node" parent="."]
|
||||
|
||||
[node name="PlayerMovement" type="Node" parent="Scripts" node_paths=PackedStringArray("body", "rotate", "sprite")]
|
||||
script = ExtResource("2_o7et6")
|
||||
body = NodePath("../..")
|
||||
rotate = NodePath("../../PlayerRotated")
|
||||
sprite = NodePath("../../AnimatedSprite3D")
|
||||
|
||||
[node name="PlayerInteraction" type="Node" parent="Scripts" node_paths=PackedStringArray("interactableArea", "player")]
|
||||
script = ExtResource("3_24gqh")
|
||||
interactableArea = NodePath("../../PlayerRotated/PlayerInteractableArea")
|
||||
player = NodePath("../..")
|
||||
|
||||
[node name="PlayerInput" type="Node" parent="Scripts" node_paths=PackedStringArray("interaction", "movement")]
|
||||
script = ExtResource("4_yjynp")
|
||||
interaction = NodePath("../PlayerInteraction")
|
||||
movement = NodePath("../PlayerMovement")
|
||||
|
||||
[node name="PlayerCamera" type="Node" parent="Scripts" node_paths=PackedStringArray("camera", "target")]
|
||||
script = ExtResource("5_g3lhm")
|
||||
camera = NodePath("../../PlayerCamera")
|
||||
target = NodePath("../..")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.5, 0)
|
||||
shape = SubResource("SphereShape3D_4pwj0")
|
||||
|
||||
[node name="PlayerCamera" type="Camera3D" parent="."]
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0496178, 0, -0.00852585)
|
||||
pixel_size = 1.0
|
||||
axis = 1
|
||||
double_sided = false
|
||||
texture_filter = 0
|
||||
sprite_frames = SubResource("SpriteFrames_2rv2u")
|
||||
animation = &"walk_south"
|
||||
|
||||
[node name="PlayerRotated" type="Node3D" parent="."]
|
||||
|
||||
[node name="PlayerInteractableArea" type="Area3D" parent="PlayerRotated"]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerRotated/PlayerInteractableArea"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8, 10)
|
||||
shape = SubResource("BoxShape3D_g13of")
|
33
entity/player/PlayerCamera.gd
Normal file
33
entity/player/PlayerCamera.gd
Normal file
@@ -0,0 +1,33 @@
|
||||
@tool
|
||||
class_name PlayerCamera extends Node
|
||||
|
||||
const CAMERA_PIXELS_PER_UNIT = 1.0
|
||||
const CAMERA_PIXEL_SCALE = 1.0
|
||||
|
||||
@export var camera:Camera3D = null
|
||||
@export var target:Node3D = null
|
||||
@export var offset:Vector3 = Vector3(0, 0, 12)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if !camera || !target:
|
||||
return
|
||||
|
||||
# I tried a few things but this is most consistent for both backbuffer and
|
||||
# framebuffer viewports.
|
||||
var viewportHeight = get_viewport().get_visible_rect().size.y;
|
||||
var unitScale = CAMERA_PIXEL_SCALE * CAMERA_PIXELS_PER_UNIT;
|
||||
|
||||
var z:float = (
|
||||
tan((deg_to_rad(180) - deg_to_rad(camera.fov)) / 2.0) *
|
||||
(viewportHeight / 2.0)
|
||||
) / unitScale;
|
||||
|
||||
var look = target.global_position;
|
||||
var position = offset + look;
|
||||
|
||||
camera.look_at_from_position(
|
||||
Vector3(position.x, position.y + z, position.z),
|
||||
look
|
||||
);
|
||||
|
||||
pass
|
1
entity/player/PlayerCamera.gd.uid
Normal file
1
entity/player/PlayerCamera.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bdjgvyiacbg28
|
13
entity/player/PlayerInput.gd
Normal file
13
entity/player/PlayerInput.gd
Normal file
@@ -0,0 +1,13 @@
|
||||
class_name PlayerInput extends Node
|
||||
|
||||
@export var interaction:PlayerInteraction
|
||||
@export var movement:PlayerMovement
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if Input.is_action_just_pressed("pause"):
|
||||
PAUSE.menuPause()
|
||||
|
||||
if Input.is_action_just_pressed("interact"):
|
||||
interaction.interact()
|
||||
|
||||
movement._inputDir = Input.get_vector("move_left", "move_right", "move_back", "move_forward").normalized()
|
1
entity/player/PlayerInput.gd.uid
Normal file
1
entity/player/PlayerInput.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bdv1fj1pwknrs
|
27
entity/player/PlayerInteraction.gd
Normal file
27
entity/player/PlayerInteraction.gd
Normal file
@@ -0,0 +1,27 @@
|
||||
class_name PlayerInteraction extends Node
|
||||
|
||||
@export var interactableArea:Area3D
|
||||
@export var player:CharacterBody3D
|
||||
|
||||
func canInteract() -> bool:
|
||||
if PAUSE.isMovementPaused():
|
||||
return false
|
||||
return true
|
||||
|
||||
func interact() -> void:
|
||||
if !canInteract():
|
||||
return
|
||||
|
||||
var overlapping = interactableArea.get_overlapping_areas()
|
||||
var interactable: InteractableArea = null
|
||||
|
||||
for node in overlapping:
|
||||
if !(node is InteractableArea):
|
||||
continue
|
||||
interactable = node
|
||||
break
|
||||
|
||||
if !interactable:
|
||||
return
|
||||
|
||||
interactable.interactEvent.emit(player)
|
1
entity/player/PlayerInteraction.gd.uid
Normal file
1
entity/player/PlayerInteraction.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b3nty7pvbo58d
|
13
entity/player/PlayerMaterial.tres
Normal file
13
entity/player/PlayerMaterial.tres
Normal file
@@ -0,0 +1,13 @@
|
||||
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://cv8q4cbjyfauh"]
|
||||
|
||||
[ext_resource type="Shader" path="res://materials/EntityMaterialShader.gdshader" id="1_gsq3s"]
|
||||
[ext_resource type="Texture2D" uid="uid://xx3qp5xh7tgu" path="res://entity/player/Player.png" id="2_awgof"]
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_gsq3s")
|
||||
shader_parameter/text = ExtResource("2_awgof")
|
||||
shader_parameter/tileColumnCount = 4
|
||||
shader_parameter/tileRowCount = 1
|
||||
shader_parameter/tile = 0
|
||||
shader_parameter/color = Color(1, 1, 1, 1)
|
7
entity/player/PlayerMovement.gd
Normal file
7
entity/player/PlayerMovement.gd
Normal file
@@ -0,0 +1,7 @@
|
||||
@tool
|
||||
class_name PlayerMovement extends "res://entity/EntityMovement.gd"
|
||||
|
||||
func canMove() -> bool:
|
||||
if PAUSE.isMovementPaused():
|
||||
return false
|
||||
return true
|
1
entity/player/PlayerMovement.gd.uid
Normal file
1
entity/player/PlayerMovement.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bwxdv3kxrs4oj
|
0
event/EventItem.gd
Normal file
0
event/EventItem.gd
Normal file
1
event/EventItem.gd.uid
Normal file
1
event/EventItem.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c42rc36mudwgh
|
3
event/EventResource.gd
Normal file
3
event/EventResource.gd
Normal file
@@ -0,0 +1,3 @@
|
||||
class_name EventResource extends Resource
|
||||
|
||||
@export var eventName:String
|
1
event/EventResource.gd.uid
Normal file
1
event/EventResource.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://5nyb2g1kghpv
|
BIN
locale/en_AU.mo
Normal file
BIN
locale/en_AU.mo
Normal file
Binary file not shown.
120
locale/en_AU.po
120
locale/en_AU.po
@@ -16,128 +16,10 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.4.4\n"
|
||||
"X-Generator: Poedit 3.6\n"
|
||||
|
||||
#
|
||||
# UI
|
||||
#
|
||||
msgid "ui.debug_menu.main_menu"
|
||||
msgstr "Go to main menu"
|
||||
|
||||
msgid "ui.debug_menu.overworld"
|
||||
msgstr "Go to overworld"
|
||||
|
||||
msgid "ui.debug_menu.quest"
|
||||
msgstr "View Quests"
|
||||
|
||||
msgid "ui.debug_menu.inventory"
|
||||
msgstr "View Inventory"
|
||||
|
||||
msgid "ui.debug_menu.event"
|
||||
msgstr "Debug Events"
|
||||
|
||||
msgid "ui.debug_menu.cutscene"
|
||||
msgstr "Debug Cutscenes"
|
||||
|
||||
msgid "ui.debug_menu.cooking"
|
||||
msgstr "Debug Cooking"
|
||||
|
||||
msgid "ui.debug_menu.battle"
|
||||
msgstr "Debug Battle"
|
||||
|
||||
#
|
||||
# EVENTS
|
||||
#
|
||||
msgid "event.get_item.found"
|
||||
msgid_plural "event.get_item.found_plural"
|
||||
msgstr[0] "Found {item.title}."
|
||||
msgstr[1] "Found {quantity} {item.title}."
|
||||
|
||||
msgid "event.get_item.given"
|
||||
msgid_plural "event.get_item.given_plural"
|
||||
msgstr[0] "Received {item.title}."
|
||||
msgstr[1] "Received {quantity} {item.title}."
|
||||
|
||||
#
|
||||
# QUESTS
|
||||
#
|
||||
msgid "quest.test_quest.title"
|
||||
msgstr "Learn to cook!"
|
||||
|
||||
msgid "quest.test_quest.sweet_potato.title"
|
||||
msgstr "Scavenge Sweet Potatoes"
|
||||
|
||||
msgid "quest.test_quest.sweet_potato.description"
|
||||
msgstr "Find and collect {quantity} {item.title} so you can learn to cook!"
|
||||
|
||||
#
|
||||
# ITEMS
|
||||
#
|
||||
msgid "item.onion.title"
|
||||
msgid_plural "item.onion.title_plural"
|
||||
msgstr[0] "Onion"
|
||||
msgstr[1] "Onions"
|
||||
|
||||
msgid "item.onion.description"
|
||||
msgstr "An onion, a staple of many dishes. It can be used in cooking or eaten raw."
|
||||
|
||||
msgid "item.sweet_potato.name"
|
||||
msgid_plural "item.sweet_potato.name_plural"
|
||||
msgstr[0] "Sweet Potato"
|
||||
msgstr[1] "Sweet Potatoes"
|
||||
|
||||
msgid "item.sweet_potato.description"
|
||||
msgstr "A sweet potato, a nutritious and versatile vegetable. It can be used in cooking or eaten raw."
|
||||
|
||||
msgid "item.potion.name"
|
||||
msgid_plural "item.potion.name_plural"
|
||||
msgstr[0] "Potion"
|
||||
msgstr[1] "Potions"
|
||||
|
||||
msgid "item.potion.description"
|
||||
msgstr "A potion that restores health. It can be consumed to regain vitality."
|
||||
|
||||
msgid "item.baked_sweet_potato.name"
|
||||
msgid_plural "item.baked_sweet_potato.name_plural"
|
||||
msgstr[0] "Baked Sweet Potato"
|
||||
msgstr[1] "Baked Sweet Potatoes"
|
||||
|
||||
msgid "item.baked_sweet_potato.description"
|
||||
msgstr "A sweet potato that has been baked to perfection. It is warm and comforting, perfect for a chilly day."
|
||||
|
||||
#
|
||||
# RECIPES
|
||||
#
|
||||
msgid "recipe.baked_sweet_potato.title"
|
||||
msgstr "Baked Sweet Potato"
|
||||
|
||||
#
|
||||
# SCENES
|
||||
#
|
||||
msgid "main_menu.label"
|
||||
msgstr ""
|
||||
"Thyme and Fire\n"
|
||||
"\n"
|
||||
"Press [input action=debug][/input] to open the debug menu"
|
||||
|
||||
# ==============================================================================
|
||||
#
|
||||
# MAPS
|
||||
#
|
||||
# ==============================================================================
|
||||
|
||||
#
|
||||
# Test Map
|
||||
#
|
||||
msgid "map.test_map.title"
|
||||
msgstr "Test Map"
|
||||
|
||||
# Events
|
||||
msgid "map.test_map.event.gather_onion.text0"
|
||||
msgstr "I am giving you a quest to gather some ingredients."
|
||||
|
||||
msgid "map.test_map.event.gather_onion.text1"
|
||||
msgstr "Take this to help you on your way."
|
||||
|
||||
msgid "map.test_map.event.gather_onion.text2"
|
||||
msgstr "How goes the quest? Have you gathered the ingredients?"
|
12
map/TestMap.gd
Normal file
12
map/TestMap.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
extends Node3D
|
||||
|
||||
func _ready():
|
||||
UI.MADTALK.start_dialog("bare_minimum")
|
||||
|
||||
func _input(event):
|
||||
if (
|
||||
(event is InputEventKey) and (event.pressed) and (not event.echo) and (event.keycode in [KEY_SPACE, KEY_ENTER, KEY_KP_ENTER])
|
||||
) or (
|
||||
(event is InputEventMouseButton) and (event.pressed) and (event.button_index == MOUSE_BUTTON_LEFT)
|
||||
):
|
||||
UI.MADTALK.dialog_acknowledge()
|
1
map/TestMap.gd.uid
Normal file
1
map/TestMap.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://xe6pcuq741xi
|
18
map/TestMap.tscn
Normal file
18
map/TestMap.tscn
Normal file
@@ -0,0 +1,18 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://d0ywgijpuqy0r"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://xe6pcuq741xi" path="res://map/TestMap.gd" id="1_6ms5s"]
|
||||
[ext_resource type="PackedScene" uid="uid://cluuhtfjeodwb" path="res://map/TestMapBase.tscn" id="1_ox0si"]
|
||||
[ext_resource type="PackedScene" uid="uid://2ch34sio36nv" path="res://entity/player/Player.tscn" id="2_0d2qr"]
|
||||
[ext_resource type="PackedScene" uid="uid://kabs7mopalmo" path="res://entity/npc/NPC.tscn" id="3_0vfw4"]
|
||||
|
||||
[node name="TestMap" type="Node3D"]
|
||||
script = ExtResource("1_6ms5s")
|
||||
|
||||
[node name="TestMapBase" parent="." instance=ExtResource("1_ox0si")]
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_0d2qr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27.142, 1.94879, -59.112)
|
||||
facingDirection = 1
|
||||
|
||||
[node name="NPC" parent="." instance=ExtResource("3_0vfw4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.30029, 4.06806, 0.563562)
|
25
map/TestMapBase.tscn
Normal file
25
map/TestMapBase.tscn
Normal file
@@ -0,0 +1,25 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://cluuhtfjeodwb"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cu1hvpqmqn31n" path="res://icon.svg" id="1_x4ibw"]
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_owt5q"]
|
||||
size = Vector2(200, 200)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_52cv7"]
|
||||
shading_mode = 0
|
||||
albedo_texture = ExtResource("1_x4ibw")
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_x4ibw"]
|
||||
size = Vector3(200, 0.1, 200)
|
||||
|
||||
[node name="TestMapBase" type="Node3D"]
|
||||
|
||||
[node name="Ground" type="StaticBody3D" parent="."]
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"]
|
||||
mesh = SubResource("PlaneMesh_owt5q")
|
||||
skeleton = NodePath("../..")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_52cv7")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
|
||||
shape = SubResource("BoxShape3D_x4ibw")
|
7
meta/InitialScene.tscn
Normal file
7
meta/InitialScene.tscn
Normal file
@@ -0,0 +1,7 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bs41nqi3ocih3"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://d2u7xxqmy8mws" path="res://ui/mainmenu/MainMenu.tscn" id="1_hu3pf"]
|
||||
|
||||
[node name="InitialScene" type="Node3D"]
|
||||
|
||||
[node name="MainMenu" parent="." instance=ExtResource("1_hu3pf")]
|
34
meta/OverworldScene.gd
Normal file
34
meta/OverworldScene.gd
Normal file
@@ -0,0 +1,34 @@
|
||||
class_name OverworldScene extends Node
|
||||
|
||||
@export var map:Node3D = null
|
||||
|
||||
func _enter_tree() -> void:
|
||||
OVERWORLD.mapChanged.connect(onMapChanged)
|
||||
|
||||
func _ready() -> void:
|
||||
pass
|
||||
|
||||
func _exit_tree() -> void:
|
||||
OVERWORLD.mapChanged.disconnect(onMapChanged)
|
||||
|
||||
func onMapChanged(newMap:PackedScene, playerDestinationNodeName:String) -> void:
|
||||
print("New map time.", newMap)
|
||||
for childScene in map.get_children():
|
||||
map.remove_child(childScene)
|
||||
|
||||
if !newMap:
|
||||
return
|
||||
|
||||
var newMapInstance = newMap.instantiate()
|
||||
map.add_child(newMapInstance)
|
||||
|
||||
# Find Player.
|
||||
if playerDestinationNodeName:
|
||||
var player = newMapInstance.get_node("Player")
|
||||
var destNode = newMapInstance.get_node(playerDestinationNodeName)
|
||||
if player && player is Player && destNode:
|
||||
player.global_position = destNode.global_position
|
||||
player.global_rotation.y = destNode.global_rotation.y
|
||||
elif playerDestinationNodeName:
|
||||
push_error("Player, or destination node not found in new map.")
|
||||
pass
|
1
meta/OverworldScene.gd.uid
Normal file
1
meta/OverworldScene.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dpvccegdmn7s6
|
9
meta/OverworldScene.tscn
Normal file
9
meta/OverworldScene.tscn
Normal file
@@ -0,0 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://c0k1t3tyiaojl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dpvccegdmn7s6" path="res://meta/OverworldScene.gd" id="1_fa54r"]
|
||||
|
||||
[node name="OverworldScene" type="Node3D" node_paths=PackedStringArray("map")]
|
||||
script = ExtResource("1_fa54r")
|
||||
map = NodePath("Map")
|
||||
|
||||
[node name="Map" type="Node3D" parent="."]
|
34
meta/RootScene.gd
Normal file
34
meta/RootScene.gd
Normal file
@@ -0,0 +1,34 @@
|
||||
class_name RootScene extends Node3D
|
||||
|
||||
@export var overworld:Node3D = null
|
||||
@export var initial:Node3D = null
|
||||
|
||||
func _enter_tree() -> void:
|
||||
SCENE.sceneChanged.connect(onSceneChange)
|
||||
SCENE.setScene(SceneSingleton.SceneType.INITIAL)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
push_error("RootScene should not be removed from the scene tree. This is a bug.")
|
||||
|
||||
func onSceneChange(newScene:SceneSingleton.SceneType) -> void:
|
||||
print("overworld", overworld)
|
||||
remove_child(overworld)
|
||||
remove_child(initial)
|
||||
|
||||
overworld.visible = false
|
||||
initial.visible = false
|
||||
|
||||
match newScene:
|
||||
SceneSingleton.SceneType.INITIAL:
|
||||
add_child(initial)
|
||||
initial.visible = true
|
||||
|
||||
SceneSingleton.SceneType.OVERWORLD:
|
||||
add_child(overworld)
|
||||
overworld.visible = true
|
||||
|
||||
SceneSingleton.SceneType.UNSET:
|
||||
pass
|
||||
|
||||
_:
|
||||
pass
|
1
meta/RootScene.gd.uid
Normal file
1
meta/RootScene.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://ml70iui7qpo4
|
15
meta/RootScene.tscn
Normal file
15
meta/RootScene.tscn
Normal file
@@ -0,0 +1,15 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://ckkewlcugc8ro"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ml70iui7qpo4" path="res://meta/RootScene.gd" id="1_nky1x"]
|
||||
[ext_resource type="PackedScene" uid="uid://bs41nqi3ocih3" path="res://meta/InitialScene.tscn" id="2_hkmoa"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0k1t3tyiaojl" path="res://meta/OverworldScene.tscn" id="2_o1wvd"]
|
||||
|
||||
[node name="RootScene" type="Node3D" node_paths=PackedStringArray("overworld", "initial")]
|
||||
script = ExtResource("1_nky1x")
|
||||
overworld = NodePath("OverworldScene")
|
||||
initial = NodePath("InitialScene")
|
||||
metadata/_custom_type_script = "uid://ml70iui7qpo4"
|
||||
|
||||
[node name="OverworldScene" parent="." instance=ExtResource("2_o1wvd")]
|
||||
|
||||
[node name="InitialScene" parent="." instance=ExtResource("2_hkmoa")]
|
@@ -11,26 +11,21 @@ config_version=5
|
||||
[application]
|
||||
|
||||
config/name="Dawn Godot"
|
||||
run/main_scene="uid://w1q5eoiejmy3"
|
||||
run/main_scene="uid://ckkewlcugc8ro"
|
||||
config/features=PackedStringArray("4.4", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[autoload]
|
||||
|
||||
BATTLE="*res://scripts/Singleton/BattleSystem.gd"
|
||||
COOKING="*res://scripts/Singleton/CookingSystem.gd"
|
||||
OVERWORLD="*res://scripts/Singleton/OverworldSystem.gd"
|
||||
ITEM="*res://scenes/Singletons/Item.tscn"
|
||||
PAUSE="*res://scripts/Singleton/PauseSystem.gd"
|
||||
QUEST="*res://scenes/Singletons/Quest.tscn"
|
||||
SCENE_MANAGER="*res://scripts/Singleton/SceneSystem.gd"
|
||||
UI="*res://scenes/Singletons/UI.tscn"
|
||||
VN="*res://scripts/Singleton/VNSystem.gd"
|
||||
LOAD="*res://scenes/Singletons/Load.tscn"
|
||||
RECIPE="*res://scenes/Singletons/Recipe.tscn"
|
||||
LOCALE="*res://scripts/Singleton/LocaleSystem.gd"
|
||||
PHYSICS="*res://singleton/GamePhysics.gd"
|
||||
PAUSE="*res://singleton/Pause.gd"
|
||||
TRANSITION="*res://singleton/Transition.tscn"
|
||||
UI="*res://singleton/UI.tscn"
|
||||
QUEST="*res://singleton/Quest.tscn"
|
||||
OVERWORLD="*res://singleton/Overworld.gd"
|
||||
SCENE="*res://singleton/Scene.gd"
|
||||
MadTalkGlobals="*res://addons/madtalk/runtime/MadTalkGlobals.tscn"
|
||||
ControllerIcons="*res://addons/controller_icons/ControllerIcons.gd"
|
||||
EVENT="*res://scenes/Singletons/Event.tscn"
|
||||
|
||||
[debug]
|
||||
|
||||
@@ -41,6 +36,8 @@ gdscript/warnings/shadowed_variable=0
|
||||
|
||||
window/size/viewport_width=480
|
||||
window/size/viewport_height=270
|
||||
window/size/window_width_override=960
|
||||
window/size/window_height_override=540
|
||||
window/stretch/mode="viewport"
|
||||
window/stretch/scale_mode="integer"
|
||||
|
||||
@@ -50,7 +47,7 @@ project/assembly_name="Dawn Godot"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray("res://addons/controller_icons/plugin.cfg")
|
||||
enabled=PackedStringArray("res://addons/controller_icons/plugin.cfg", "res://addons/madtalk/plugin.cfg")
|
||||
|
||||
[filesystem]
|
||||
|
||||
@@ -64,7 +61,7 @@ theme/custom_font="uid://ck4rsg0nvvxtq"
|
||||
|
||||
[input]
|
||||
|
||||
left={
|
||||
move_left={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
@@ -72,7 +69,7 @@ left={
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
|
||||
]
|
||||
}
|
||||
right={
|
||||
move_right={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
@@ -80,7 +77,7 @@ right={
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
|
||||
]
|
||||
}
|
||||
up={
|
||||
move_forward={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
@@ -88,7 +85,7 @@ up={
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
|
||||
]
|
||||
}
|
||||
down={
|
||||
move_back={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
|
@@ -1,41 +0,0 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bes5p6ckw6d58"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d2jqsiapy07ii" path="res://scripts/Entity/ItemOnGround.gd" id="1_pnyp6"]
|
||||
[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="2_crfvs"]
|
||||
[ext_resource type="Script" uid="uid://03dqknw7v4mr" path="res://scripts/Entity/Component/EntityInteractable.gd" id="3_7clu1"]
|
||||
[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="4_w0eam"]
|
||||
[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="5_5uma8"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_cpa1u"]
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_dyaax"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fegux"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("4_w0eam")
|
||||
shader_parameter/npcTexture = ExtResource("5_5uma8")
|
||||
shader_parameter/color = Color(0.77816, 0.965494, 0.746061, 1)
|
||||
shader_parameter/frame = 0
|
||||
shader_parameter/direction = 2
|
||||
|
||||
[node name="ItemOnGround" type="StaticBody3D"]
|
||||
collision_layer = 2
|
||||
collision_mask = 258
|
||||
script = ExtResource("1_pnyp6")
|
||||
|
||||
[node name="Entity" type="Node" parent="."]
|
||||
script = ExtResource("2_crfvs")
|
||||
metadata/_custom_type_script = "uid://dtjjqp2atjyhr"
|
||||
|
||||
[node name="EntityInteractable" type="Node" parent="Entity" node_paths=PackedStringArray("entity")]
|
||||
script = ExtResource("3_7clu1")
|
||||
entity = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://03dqknw7v4mr"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_cpa1u")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0, 0, 0)
|
||||
mesh = SubResource("QuadMesh_dyaax")
|
||||
surface_material_override/0 = SubResource("ShaderMaterial_fegux")
|
@@ -1,71 +0,0 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://yhtpoum3eek7"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ixwikdguyhf0" path="res://scripts/Entity/Rosa.gd" id="1_r5ufg"]
|
||||
[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="1_rvn3n"]
|
||||
[ext_resource type="Script" uid="uid://jd50n00bo05y" path="res://scripts/Entity/RosaCamera.gd" id="2_tr66j"]
|
||||
[ext_resource type="Script" uid="uid://cjfcpi7sxentf" path="res://scripts/Entity/Component/EntityDirection.gd" id="2_vcxxc"]
|
||||
[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="3_j5vis"]
|
||||
[ext_resource type="Script" uid="uid://c5nfs0m6ua4eb" path="res://scripts/Entity/Component/EntityMovement.gd" id="4_7s3uq"]
|
||||
[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="4_rvn3n"]
|
||||
[ext_resource type="Script" uid="uid://dfh2rh8idx267" path="res://scripts/Entity/Component/EntityInteractor.gd" id="5_ug24t"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ls7r8"]
|
||||
radius = 0.437175
|
||||
height = 0.945346
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_dyaax"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fegux"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("3_j5vis")
|
||||
shader_parameter/npcTexture = ExtResource("4_rvn3n")
|
||||
shader_parameter/color = Color(1, 1, 1, 1)
|
||||
shader_parameter/frame = 0
|
||||
shader_parameter/direction = 2
|
||||
|
||||
[node name="Rosa" type="CharacterBody3D"]
|
||||
collision_layer = 2
|
||||
collision_mask = 258
|
||||
script = ExtResource("1_r5ufg")
|
||||
metadata/_custom_type_script = "uid://ixwikdguyhf0"
|
||||
|
||||
[node name="Entity" type="Node" parent="."]
|
||||
script = ExtResource("1_rvn3n")
|
||||
metadata/_custom_type_script = "uid://dtjjqp2atjyhr"
|
||||
|
||||
[node name="EntityDirection" type="Node" parent="Entity" node_paths=PackedStringArray("meshInstance", "characterBody")]
|
||||
script = ExtResource("2_vcxxc")
|
||||
meshInstance = NodePath("../../MeshInstance3D")
|
||||
direction = 2
|
||||
characterBody = NodePath("../..")
|
||||
metadata/_custom_type_script = "uid://cjfcpi7sxentf"
|
||||
|
||||
[node name="EntityMoving" type="Node" parent="Entity" node_paths=PackedStringArray("characterBody", "entity", "entityDirection")]
|
||||
script = ExtResource("4_7s3uq")
|
||||
characterBody = NodePath("../..")
|
||||
entity = NodePath("..")
|
||||
entityDirection = NodePath("../EntityDirection")
|
||||
movementType = 0
|
||||
|
||||
[node name="EntityInteractor" type="Node" parent="Entity" node_paths=PackedStringArray("entityDirection", "characterBody", "entity")]
|
||||
script = ExtResource("5_ug24t")
|
||||
interactorType = 0
|
||||
entityDirection = NodePath("../EntityDirection")
|
||||
characterBody = NodePath("../..")
|
||||
entity = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://dfh2rh8idx267"
|
||||
|
||||
[node name="Rosa Camera" type="Camera3D" parent="." node_paths=PackedStringArray("follow")]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.130388, 0.991463, 0, -0.991463, 0.130388, 0, 3.14994, 0.404846)
|
||||
current = true
|
||||
fov = 30.0
|
||||
script = ExtResource("2_tr66j")
|
||||
follow = NodePath("..")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CapsuleShape3D_ls7r8")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0, 0, 0)
|
||||
mesh = SubResource("QuadMesh_dyaax")
|
||||
surface_material_override/0 = SubResource("ShaderMaterial_fegux")
|
@@ -1,42 +0,0 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bkj630bhmnvsi"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bitykguiignfu" path="res://scripts/Entity/Sign.gd" id="1_cpa1u"]
|
||||
[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="2_obj4d"]
|
||||
[ext_resource type="Script" uid="uid://03dqknw7v4mr" path="res://scripts/Entity/Component/EntityInteractable.gd" id="3_cpa1u"]
|
||||
[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="7_vqvna"]
|
||||
[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="8_on2eh"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_cpa1u"]
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_dyaax"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fegux"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("7_vqvna")
|
||||
shader_parameter/npcTexture = ExtResource("8_on2eh")
|
||||
shader_parameter/color = Color(1, 1, 0, 1)
|
||||
shader_parameter/frame = 0
|
||||
shader_parameter/direction = 2
|
||||
|
||||
[node name="Sign" type="StaticBody3D"]
|
||||
collision_layer = 2
|
||||
collision_mask = 258
|
||||
script = ExtResource("1_cpa1u")
|
||||
metadata/_custom_type_script = "uid://bitykguiignfu"
|
||||
|
||||
[node name="Entity" type="Node" parent="."]
|
||||
script = ExtResource("2_obj4d")
|
||||
metadata/_custom_type_script = "uid://dtjjqp2atjyhr"
|
||||
|
||||
[node name="EntityInteractable" type="Node" parent="Entity" node_paths=PackedStringArray("entity")]
|
||||
script = ExtResource("3_cpa1u")
|
||||
entity = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://03dqknw7v4mr"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_cpa1u")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0, 0, 0)
|
||||
mesh = SubResource("QuadMesh_dyaax")
|
||||
surface_material_override/0 = SubResource("ShaderMaterial_fegux")
|
@@ -1,60 +0,0 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://dr4b2pmsknuhc"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d23qg1ovkbxst" path="res://scripts/Entity/BasicNPCEntity.gd" id="1_1muh7"]
|
||||
[ext_resource type="Shader" uid="uid://7h2axb2tsh17" path="res://shaders/NPC Shader.gdshader" id="1_xgcv1"]
|
||||
[ext_resource type="Script" uid="uid://dtjjqp2atjyhr" path="res://scripts/Entity/Entity.gd" id="2_ehu3x"]
|
||||
[ext_resource type="Script" uid="uid://cjfcpi7sxentf" path="res://scripts/Entity/Component/EntityDirection.gd" id="3_gyi1p"]
|
||||
[ext_resource type="Script" uid="uid://c5nfs0m6ua4eb" path="res://scripts/Entity/Component/EntityMovement.gd" id="4_3wesq"]
|
||||
[ext_resource type="Texture2D" uid="uid://cofrgefp8e617" path="res://textures/human.png" id="4_vo0ku"]
|
||||
[ext_resource type="Script" uid="uid://03dqknw7v4mr" path="res://scripts/Entity/Component/EntityInteractable.gd" id="5_gyi1p"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_dw1sy"]
|
||||
radius = 0.420979
|
||||
height = 0.919425
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_xhkdv"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_l4utx"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_xgcv1")
|
||||
shader_parameter/npcTexture = ExtResource("4_vo0ku")
|
||||
shader_parameter/color = Color(0, 0.563816, 0, 1)
|
||||
shader_parameter/frame = 0
|
||||
shader_parameter/direction = 0
|
||||
|
||||
[node name="TestNpc" type="CharacterBody3D"]
|
||||
collision_layer = 2
|
||||
collision_mask = 258
|
||||
script = ExtResource("1_1muh7")
|
||||
metadata/_custom_type_script = "uid://d23qg1ovkbxst"
|
||||
|
||||
[node name="Entity" type="Node" parent="."]
|
||||
script = ExtResource("2_ehu3x")
|
||||
metadata/_custom_type_script = "uid://dtjjqp2atjyhr"
|
||||
|
||||
[node name="EntityDirection" type="Node" parent="Entity" node_paths=PackedStringArray("meshInstance", "characterBody")]
|
||||
script = ExtResource("3_gyi1p")
|
||||
meshInstance = NodePath("../../MeshInstance3D")
|
||||
characterBody = NodePath("../..")
|
||||
metadata/_custom_type_script = "uid://cjfcpi7sxentf"
|
||||
|
||||
[node name="EntityMoving" type="Node" parent="Entity" node_paths=PackedStringArray("characterBody", "entity", "entityDirection")]
|
||||
script = ExtResource("4_3wesq")
|
||||
characterBody = NodePath("../..")
|
||||
entity = NodePath("..")
|
||||
entityDirection = NodePath("../EntityDirection")
|
||||
movementType = 2
|
||||
|
||||
[node name="EntityInteractable" type="Node" parent="Entity" node_paths=PackedStringArray("entityDirection", "entity")]
|
||||
script = ExtResource("5_gyi1p")
|
||||
entityDirection = NodePath("../EntityDirection")
|
||||
entity = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://03dqknw7v4mr"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CapsuleShape3D_dw1sy")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.173648, 0.984808, 0, -0.984808, 0.173648, 0.00989294, 0, 0)
|
||||
mesh = SubResource("QuadMesh_xhkdv")
|
||||
surface_material_override/0 = SubResource("ShaderMaterial_l4utx")
|
@@ -1,35 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://w1q5eoiejmy3"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cak4lch21nq30" path="res://scripts/Scene/MainMenuScene.gd" id="1_yqorp"]
|
||||
[ext_resource type="Script" uid="uid://cq6bvma0kk6tg" path="res://scripts/UI/AdvancedRichText.gd" id="2_0ykhv"]
|
||||
|
||||
[node name="MainMenu" type="Node"]
|
||||
script = ExtResource("1_yqorp")
|
||||
|
||||
[node name="Control" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Label" type="RichTextLabel" parent="Control"]
|
||||
auto_translate_mode = 2
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -133.5
|
||||
offset_top = -37.5
|
||||
offset_right = 133.5
|
||||
offset_bottom = 37.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
bbcode_enabled = true
|
||||
text = "main_menu.label"
|
||||
horizontal_alignment = 1
|
||||
script = ExtResource("2_0ykhv")
|
||||
advancedText = "main_menu.label"
|
@@ -1,156 +0,0 @@
|
||||
[gd_scene load_steps=17 format=3 uid="uid://dx6fv8n4jl5ku"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://yhtpoum3eek7" path="res://scenes/Entities/Rosa.tscn" id="1_7b7hx"]
|
||||
[ext_resource type="Script" uid="uid://c37crdel0m5mw" path="res://scripts/Map/Map.gd" id="1_ru75d"]
|
||||
[ext_resource type="PackedScene" uid="uid://dr4b2pmsknuhc" path="res://scenes/Entities/TestNPC.tscn" id="2_cg1ph"]
|
||||
[ext_resource type="PackedScene" uid="uid://lh713g04d3bg" path="res://scenes/Maps/TestMap/TestMapGround.tscn" id="3_gxq5o"]
|
||||
[ext_resource type="PackedScene" uid="uid://boj5o4fx41rv8" path="res://scenes/Maps/TestMap/TestMapBuilding.tscn" id="4_brp0k"]
|
||||
[ext_resource type="PackedScene" uid="uid://bes5p6ckw6d58" path="res://scenes/Entities/ItemOnGround.tscn" id="4_ejcqv"]
|
||||
[ext_resource type="Script" uid="uid://tkfc88q8m86f" path="res://scripts/Event/EventConversation.gd" id="5_cg1ph"]
|
||||
[ext_resource type="Script" uid="uid://y7ckj1tn5cro" path="res://scripts/Event/EventTextbox.gd" id="6_gxq5o"]
|
||||
[ext_resource type="Script" uid="uid://c4d7nithqnx5y" path="res://scripts/Event/Quest/EventStartQuest.gd" id="7_brp0k"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkj630bhmnvsi" path="res://scenes/Entities/Sign.tscn" id="9_xfqoe"]
|
||||
[ext_resource type="Script" uid="uid://b41umpbgqfuc2" path="res://scripts/Event/Item/EventGetItem.gd" id="10_avybc"]
|
||||
[ext_resource type="Script" uid="uid://0ev1l0bf85gj" path="res://scripts/Event/Quest/EventIfQuest.gd" id="10_i48p6"]
|
||||
[ext_resource type="Script" uid="uid://cs7voh47aoca8" path="res://scripts/Event/EventTrigger.gd" id="13_60ixl"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e1h75"]
|
||||
sky_horizon_color = Color(0.59625, 0.6135, 0.6375, 1)
|
||||
sky_energy_multiplier = 0.0
|
||||
ground_bottom_color = Color(0, 0, 0, 1)
|
||||
ground_horizon_color = Color(0.59625, 0.6135, 0.6375, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_weucl"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_e1h75")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_nyivo"]
|
||||
sky = SubResource("Sky_weucl")
|
||||
ambient_light_source = 1
|
||||
|
||||
[node name="TestMap" type="Node3D"]
|
||||
script = ExtResource("1_ru75d")
|
||||
title = "map.test_map.title"
|
||||
|
||||
[node name="Entities" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19857, 0.684572, 0.968477)
|
||||
|
||||
[node name="Rosa" parent="Entities" instance=ExtResource("1_7b7hx")]
|
||||
|
||||
[node name="Green" parent="Entities" node_paths=PackedStringArray("interactEvent") instance=ExtResource("2_cg1ph")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.88604, -0.224994, -1.36774)
|
||||
interactEvent = NodePath("../../Events/TestConversation")
|
||||
|
||||
[node name="Sign" parent="Entities" node_paths=PackedStringArray("interactEvent") instance=ExtResource("9_xfqoe")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.56382, -0.547748, 1.61289)
|
||||
interactEvent = NodePath("../../Events/TestConversation")
|
||||
|
||||
[node name="Onion0" parent="Entities" instance=ExtResource("4_ejcqv")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.546944, -0.547748, -3.46628)
|
||||
itemType = 2
|
||||
quantity = 2
|
||||
|
||||
[node name="Onion1" parent="Entities" instance=ExtResource("4_ejcqv")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.25922, -0.547748, -4.61426)
|
||||
itemType = 2
|
||||
quantity = 2
|
||||
|
||||
[node name="Onion2" parent="Entities" instance=ExtResource("4_ejcqv")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.83853, -0.547748, -3.29584)
|
||||
itemType = 2
|
||||
quantity = 2
|
||||
|
||||
[node name="SweetPotato0" parent="Entities" instance=ExtResource("4_ejcqv")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.31019, -0.547748, 3.74619)
|
||||
itemType = 3
|
||||
|
||||
[node name="SweetPotato1" parent="Entities" instance=ExtResource("4_ejcqv")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0143311, -0.547748, 4.4158)
|
||||
itemType = 3
|
||||
|
||||
[node name="SweetPotato2" parent="Entities" instance=ExtResource("4_ejcqv")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.05915, -0.547748, 5.04958)
|
||||
itemType = 3
|
||||
|
||||
[node name="Map" type="Node3D" parent="."]
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="Ground" parent="Map" instance=ExtResource("3_gxq5o")]
|
||||
|
||||
[node name="Building2" parent="Map" instance=ExtResource("4_brp0k")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.13514, 2.62692, -0.0984068)
|
||||
collision_layer = 256
|
||||
collision_mask = 2
|
||||
|
||||
[node name="Building" parent="Map" instance=ExtResource("4_brp0k")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.92766, 2.37929, -4.38178)
|
||||
collision_layer = 256
|
||||
collision_mask = 2
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="Map"]
|
||||
environment = SubResource("Environment_nyivo")
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="Map"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.20244, 3.80554)
|
||||
light_energy = 3.375
|
||||
shadow_bias = 0.0
|
||||
shadow_normal_bias = 0.9
|
||||
omni_range = 281.646
|
||||
|
||||
[node name="Events" type="Node" parent="."]
|
||||
|
||||
[node name="TestConversation" type="Node" parent="Events"]
|
||||
script = ExtResource("5_cg1ph")
|
||||
|
||||
[node name="After Quest Started" type="Node" parent="Events/TestConversation"]
|
||||
script = ExtResource("10_i48p6")
|
||||
type = 6
|
||||
metadata/_custom_type_script = "uid://0ev1l0bf85gj"
|
||||
|
||||
[node name="EventIfQuest" type="Node" parent="Events/TestConversation/After Quest Started"]
|
||||
script = ExtResource("10_i48p6")
|
||||
|
||||
[node name="Text 2" type="Node" parent="Events/TestConversation/After Quest Started/EventIfQuest"]
|
||||
script = ExtResource("6_gxq5o")
|
||||
text = "You are reading the words fo god"
|
||||
|
||||
[node name="EventIfQuest2" type="Node" parent="Events/TestConversation/After Quest Started"]
|
||||
script = ExtResource("10_i48p6")
|
||||
type = 2
|
||||
|
||||
[node name="Text 2" type="Node" parent="Events/TestConversation/After Quest Started/EventIfQuest2"]
|
||||
script = ExtResource("6_gxq5o")
|
||||
text = "map.test_map.event.gather_onion.text2"
|
||||
|
||||
[node name="Before Quest Started" type="Node" parent="Events/TestConversation"]
|
||||
script = ExtResource("10_i48p6")
|
||||
type = 7
|
||||
metadata/_custom_type_script = "uid://0ev1l0bf85gj"
|
||||
|
||||
[node name="Text 0" type="Node" parent="Events/TestConversation/Before Quest Started"]
|
||||
script = ExtResource("6_gxq5o")
|
||||
text = "map.test_map.event.gather_onion.text0"
|
||||
|
||||
[node name="Quest" type="Node" parent="Events/TestConversation/Before Quest Started"]
|
||||
script = ExtResource("7_brp0k")
|
||||
metadata/_custom_type_script = "uid://c4d7nithqnx5y"
|
||||
|
||||
[node name="Text 1" type="Node" parent="Events/TestConversation/Before Quest Started"]
|
||||
script = ExtResource("6_gxq5o")
|
||||
text = "map.test_map.event.gather_onion.text1"
|
||||
|
||||
[node name="Get Item" type="Node" parent="Events/TestConversation/Before Quest Started"]
|
||||
script = ExtResource("10_avybc")
|
||||
getType = 1
|
||||
metadata/_custom_type_script = "uid://b41umpbgqfuc2"
|
||||
|
||||
[node name="EventTrigger" type="Node" parent="Events"]
|
||||
script = ExtResource("13_60ixl")
|
||||
|
||||
[node name="EventIf" type="Node" parent="Events/EventTrigger"]
|
||||
script = ExtResource("10_i48p6")
|
||||
type = 6
|
||||
metadata/_custom_type_script = "uid://0ev1l0bf85gj"
|
||||
|
||||
[node name="Text 0" type="Node" parent="Events/EventTrigger/EventIf"]
|
||||
script = ExtResource("6_gxq5o")
|
||||
text = "Triggered"
|
@@ -1,15 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://boj5o4fx41rv8"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_22rim"]
|
||||
size = Vector3(5, 5, 5)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_jh0ui"]
|
||||
size = Vector3(5, 5, 5)
|
||||
|
||||
[node name="Building" type="StaticBody3D"]
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("BoxMesh_22rim")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_jh0ui")
|
@@ -1,31 +0,0 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://lh713g04d3bg"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://67hsyo0qqlfm" path="res://shaders/Map Shader.gdshader" id="1_knx2j"]
|
||||
[ext_resource type="Texture2D" uid="uid://cu1hvpqmqn31n" path="res://icon.svg" id="2_3bnhs"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_s8iqe"]
|
||||
lightmap_size_hint = Vector2i(504, 257)
|
||||
uv2_padding = 0.0
|
||||
size = Vector3(50, 0.1, 50)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_s8iqe"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_knx2j")
|
||||
shader_parameter/tileset = ExtResource("2_3bnhs")
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_s8iqe"]
|
||||
size = Vector3(50, 0.1, 50)
|
||||
|
||||
[node name="Ground" type="StaticBody3D"]
|
||||
collision_layer = 256
|
||||
collision_mask = 2
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("BoxMesh_s8iqe")
|
||||
surface_material_override/0 = SubResource("ShaderMaterial_s8iqe")
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_s8iqe")
|
||||
metadata/_edit_lock_ = true
|
@@ -1,8 +0,0 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://tmbx2kit0jyq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://pcncoc6wum4q" path="res://scripts/Scene/OverworldScene.gd" id="1_rfscu"]
|
||||
|
||||
[node name="Overworld" type="Node3D"]
|
||||
script = ExtResource("1_rfscu")
|
||||
|
||||
[node name="Map" type="Node3D" parent="."]
|
@@ -1,9 +0,0 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://dqde5pj14u71"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dy8gbmwddma3b" path="res://scripts/Singleton/EventSystem.gd" id="1_pu13l"]
|
||||
|
||||
[node name="EventSystem" type="Node"]
|
||||
script = ExtResource("1_pu13l")
|
||||
metadata/_custom_type_script = "uid://dy8gbmwddma3b"
|
||||
|
||||
[node name="StartedEvents" type="Node" parent="."]
|
@@ -1,44 +0,0 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://mfxht4d8pvjj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bc4c4eqfrnegb" path="res://scripts/Singleton/ItemSystem.gd" id="1_sv510"]
|
||||
[ext_resource type="Script" uid="uid://dipe47ljyvycv" path="res://scripts/Item/ingredients/ItemOnion.gd" id="2_w2ka5"]
|
||||
[ext_resource type="Script" uid="uid://b6v2o563casay" path="res://scripts/Item/medicine/ItemPotion.gd" id="3_q4yin"]
|
||||
[ext_resource type="Script" uid="uid://c6t5tprnd23t0" path="res://scripts/Item/Item.gd" id="3_v1lpn"]
|
||||
|
||||
[node name="Item" type="Node"]
|
||||
script = ExtResource("1_sv510")
|
||||
|
||||
[node name="Ingredients" type="Node" parent="."]
|
||||
|
||||
[node name="Onion" type="Node" parent="Ingredients"]
|
||||
script = ExtResource("2_w2ka5")
|
||||
title = "item.onion.title"
|
||||
description_text = "item.onion.description"
|
||||
type = 2
|
||||
metadata/_custom_type_script = "uid://b6v2o563casay"
|
||||
|
||||
[node name="Item" type="Node" parent="Ingredients"]
|
||||
script = ExtResource("3_v1lpn")
|
||||
title = "item.sweet_potato.name"
|
||||
description_text = "item.sweet_potato.description"
|
||||
type = 3
|
||||
metadata/_custom_type_script = "uid://c6t5tprnd23t0"
|
||||
|
||||
[node name="Medicine" type="Node" parent="."]
|
||||
|
||||
[node name="Item" type="Node" parent="Medicine"]
|
||||
script = ExtResource("3_q4yin")
|
||||
title = "item.potion.name"
|
||||
description_text = "item.potion.description"
|
||||
category = 0
|
||||
metadata/_custom_type_script = "uid://b6v2o563casay"
|
||||
|
||||
[node name="Food" type="Node" parent="."]
|
||||
|
||||
[node name="Item" type="Node" parent="Food"]
|
||||
script = ExtResource("3_v1lpn")
|
||||
title = "item.baked_sweet_potato.name"
|
||||
description_text = "item.baked_sweet_potato.description"
|
||||
type = 4
|
||||
category = 3
|
||||
metadata/_custom_type_script = "uid://c6t5tprnd23t0"
|
@@ -1,3 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://dr2o6ymwbwxm1"]
|
||||
|
||||
[node name="Load" type="Node"]
|
@@ -1,23 +0,0 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cs3kmmd0rfm8w"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnlg1e8une55l" path="res://scripts/Singleton/QuestSystem.gd" id="1_v2h4q"]
|
||||
[ext_resource type="Script" uid="uid://dn0kxbe85n40f" path="res://scripts/Quest/Quest.gd" id="2_n4ii1"]
|
||||
[ext_resource type="Script" uid="uid://de1ao4huhy0hm" path="res://scripts/Quest/QuestObjective.gd" id="3_l8p7p"]
|
||||
|
||||
[node name="QuestSystem" type="Node"]
|
||||
script = ExtResource("1_v2h4q")
|
||||
|
||||
[node name="Quests" type="Node" parent="."]
|
||||
|
||||
[node name="Test Quest" type="Node" parent="Quests"]
|
||||
script = ExtResource("2_n4ii1")
|
||||
title = "quest.test_quest.title"
|
||||
metadata/_custom_type_script = "uid://dn0kxbe85n40f"
|
||||
|
||||
[node name="Find Sweet Potato" type="Node" parent="Quests/Test Quest"]
|
||||
script = ExtResource("3_l8p7p")
|
||||
title = "quest.test_quest.sweet_potato.title"
|
||||
description = "quest.test_quest.sweet_potato.description"
|
||||
itemType = 3
|
||||
quantity = 2
|
||||
metadata/_custom_type_script = "uid://de1ao4huhy0hm"
|
@@ -1,27 +0,0 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://1l0tymk8cfxu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b83k8ksk1dpu2" path="res://scripts/Singleton/RecipeSystem.gd" id="1_o4nv4"]
|
||||
[ext_resource type="Script" uid="uid://dipvg4uwjv6p2" path="res://scripts/Cooking/Recipe.gd" id="2_f5akq"]
|
||||
[ext_resource type="Script" uid="uid://c26aptwsjs044" path="res://scripts/Item/ItemResource.gd" id="3_b8y03"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_3dxl6"]
|
||||
script = ExtResource("3_b8y03")
|
||||
itemType = 3
|
||||
quantity = 1
|
||||
metadata/_custom_type_script = "uid://c26aptwsjs044"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_b8y03"]
|
||||
script = ExtResource("3_b8y03")
|
||||
itemType = 4
|
||||
quantity = 1
|
||||
metadata/_custom_type_script = "uid://c26aptwsjs044"
|
||||
|
||||
[node name="RecipeSystem" type="Node"]
|
||||
script = ExtResource("1_o4nv4")
|
||||
|
||||
[node name="Baked Sweet Potato" type="Node" parent="."]
|
||||
script = ExtResource("2_f5akq")
|
||||
title = "recipe.baked_sweet_potato.title"
|
||||
ingredients = Array[ExtResource("3_b8y03")]([SubResource("Resource_3dxl6")])
|
||||
outputs = Array[ExtResource("3_b8y03")]([SubResource("Resource_b8y03")])
|
||||
metadata/_custom_type_script = "uid://dipvg4uwjv6p2"
|
@@ -1,45 +0,0 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://b5bwpsh0gcicf"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://kvdgrmutu6hl" path="res://scripts/Singleton/UISystem.gd" id="1_g3au4"]
|
||||
[ext_resource type="PackedScene" uid="uid://verg13jtqwvh" path="res://scenes/UI/DebugMenu.tscn" id="2_is0g4"]
|
||||
[ext_resource type="PackedScene" uid="uid://bfioi52hjn2kf" path="res://scenes/UI/QuestMenu.tscn" id="2_mpokx"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkx3l0kckf4a8" path="res://scenes/UI/VNTextbox.tscn" id="3_btpxp"]
|
||||
[ext_resource type="PackedScene" uid="uid://dl8iqhrpsplmk" path="res://scenes/UI/Inventory/FullInventoryMenu.tscn" id="5_6dyff"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6s1xdcfcp0xx" path="res://scenes/UI/EventFlagMenu.tscn" id="5_12prj"]
|
||||
|
||||
[node name="UI" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("1_g3au4")
|
||||
|
||||
[node name="QuestMenu" parent="." instance=ExtResource("2_mpokx")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
|
||||
[node name="FullInventory" parent="." instance=ExtResource("5_6dyff")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
anchors_preset = 0
|
||||
|
||||
[node name="EventFlagMenu" parent="." instance=ExtResource("5_12prj")]
|
||||
layout_mode = 1
|
||||
|
||||
[node name="VNTextbox" parent="." instance=ExtResource("3_btpxp")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
|
||||
[node name="DebugMenu" parent="." instance=ExtResource("2_is0g4")]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
anchors_preset = 0
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
offset_right = 207.0
|
||||
offset_bottom = 206.0
|
||||
grow_horizontal = 1
|
||||
grow_vertical = 1
|
@@ -1,8 +0,0 @@
|
||||
# Material for Barrel
|
||||
newmtl BarrelTexture
|
||||
Ka 1.000 1.000 1.000
|
||||
Kd 1.000 1.000 1.000
|
||||
Ks 0.000 0.000 0.000
|
||||
d 1.0
|
||||
illum 1
|
||||
map_Kd barrel.png
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user