diff --git a/addons/godot_state_charts/all_of_guard.gd.uid b/addons/godot_state_charts/all_of_guard.gd.uid new file mode 100644 index 0000000..2e7fa40 --- /dev/null +++ b/addons/godot_state_charts/all_of_guard.gd.uid @@ -0,0 +1 @@ +uid://2pwfgn2flltv diff --git a/addons/godot_state_charts/animation_player_state.gd.uid b/addons/godot_state_charts/animation_player_state.gd.uid new file mode 100644 index 0000000..6c30087 --- /dev/null +++ b/addons/godot_state_charts/animation_player_state.gd.uid @@ -0,0 +1 @@ +uid://crxj3l27001sa diff --git a/addons/godot_state_charts/animation_tree_state.gd.uid b/addons/godot_state_charts/animation_tree_state.gd.uid new file mode 100644 index 0000000..cf74d28 --- /dev/null +++ b/addons/godot_state_charts/animation_tree_state.gd.uid @@ -0,0 +1 @@ +uid://kp3w6nr5fvhg diff --git a/addons/godot_state_charts/any_of_guard.gd.uid b/addons/godot_state_charts/any_of_guard.gd.uid new file mode 100644 index 0000000..f9a5c67 --- /dev/null +++ b/addons/godot_state_charts/any_of_guard.gd.uid @@ -0,0 +1 @@ +uid://c0dlakdcpci0o diff --git a/addons/godot_state_charts/atomic_state.gd.uid b/addons/godot_state_charts/atomic_state.gd.uid new file mode 100644 index 0000000..5985b1b --- /dev/null +++ b/addons/godot_state_charts/atomic_state.gd.uid @@ -0,0 +1 @@ +uid://kctk5uejlaoh diff --git a/addons/godot_state_charts/compound_state.gd.uid b/addons/godot_state_charts/compound_state.gd.uid new file mode 100644 index 0000000..6f7ef93 --- /dev/null +++ b/addons/godot_state_charts/compound_state.gd.uid @@ -0,0 +1 @@ +uid://1csmnvxpk1j3 diff --git a/addons/godot_state_charts/debug_util.gd.uid b/addons/godot_state_charts/debug_util.gd.uid new file mode 100644 index 0000000..004a522 --- /dev/null +++ b/addons/godot_state_charts/debug_util.gd.uid @@ -0,0 +1 @@ +uid://1x6hwwkl021m diff --git a/addons/godot_state_charts/expression_guard.gd.uid b/addons/godot_state_charts/expression_guard.gd.uid new file mode 100644 index 0000000..fb14e4e --- /dev/null +++ b/addons/godot_state_charts/expression_guard.gd.uid @@ -0,0 +1 @@ +uid://m32s76pjucg7 diff --git a/addons/godot_state_charts/expression_util.gd.uid b/addons/godot_state_charts/expression_util.gd.uid new file mode 100644 index 0000000..f9995f6 --- /dev/null +++ b/addons/godot_state_charts/expression_util.gd.uid @@ -0,0 +1 @@ +uid://4f7muthq014i diff --git a/addons/godot_state_charts/godot_state_charts.gd.uid b/addons/godot_state_charts/godot_state_charts.gd.uid new file mode 100644 index 0000000..2bfdada --- /dev/null +++ b/addons/godot_state_charts/godot_state_charts.gd.uid @@ -0,0 +1 @@ +uid://cje5ay4xktxgv diff --git a/addons/godot_state_charts/guard.gd.uid b/addons/godot_state_charts/guard.gd.uid new file mode 100644 index 0000000..1675437 --- /dev/null +++ b/addons/godot_state_charts/guard.gd.uid @@ -0,0 +1 @@ +uid://7byord465lig diff --git a/addons/godot_state_charts/history_state.gd.uid b/addons/godot_state_charts/history_state.gd.uid new file mode 100644 index 0000000..5a88c26 --- /dev/null +++ b/addons/godot_state_charts/history_state.gd.uid @@ -0,0 +1 @@ +uid://2weu7mtvi6em diff --git a/addons/godot_state_charts/not_guard.gd.uid b/addons/godot_state_charts/not_guard.gd.uid new file mode 100644 index 0000000..7f7d37e --- /dev/null +++ b/addons/godot_state_charts/not_guard.gd.uid @@ -0,0 +1 @@ +uid://7wsknicmgrql diff --git a/addons/godot_state_charts/parallel_state.gd.uid b/addons/godot_state_charts/parallel_state.gd.uid new file mode 100644 index 0000000..4342cf5 --- /dev/null +++ b/addons/godot_state_charts/parallel_state.gd.uid @@ -0,0 +1 @@ +uid://baiit8725r4cs diff --git a/addons/godot_state_charts/saved_state.gd.uid b/addons/godot_state_charts/saved_state.gd.uid new file mode 100644 index 0000000..640a02c --- /dev/null +++ b/addons/godot_state_charts/saved_state.gd.uid @@ -0,0 +1 @@ +uid://buwudikx3c5vx diff --git a/addons/godot_state_charts/state_chart.gd.uid b/addons/godot_state_charts/state_chart.gd.uid new file mode 100644 index 0000000..bb07f68 --- /dev/null +++ b/addons/godot_state_charts/state_chart.gd.uid @@ -0,0 +1 @@ +uid://dsjiox4ahsvqn diff --git a/addons/godot_state_charts/state_chart_state.gd.uid b/addons/godot_state_charts/state_chart_state.gd.uid new file mode 100644 index 0000000..a00d66e --- /dev/null +++ b/addons/godot_state_charts/state_chart_state.gd.uid @@ -0,0 +1 @@ +uid://dbbk2a6bon8v0 diff --git a/addons/godot_state_charts/state_is_active_guard.gd.uid b/addons/godot_state_charts/state_is_active_guard.gd.uid new file mode 100644 index 0000000..dbe0391 --- /dev/null +++ b/addons/godot_state_charts/state_is_active_guard.gd.uid @@ -0,0 +1 @@ +uid://bq013yyrrbvnm diff --git a/addons/godot_state_charts/transition.gd.uid b/addons/godot_state_charts/transition.gd.uid new file mode 100644 index 0000000..dc75ad2 --- /dev/null +++ b/addons/godot_state_charts/transition.gd.uid @@ -0,0 +1 @@ +uid://clasig0wood63 diff --git a/addons/godot_state_charts/utilities/debugger_history.gd.uid b/addons/godot_state_charts/utilities/debugger_history.gd.uid new file mode 100644 index 0000000..05ab9be --- /dev/null +++ b/addons/godot_state_charts/utilities/debugger_history.gd.uid @@ -0,0 +1 @@ +uid://bde4yjgbmjn5y diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid new file mode 100644 index 0000000..9a1830e --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid @@ -0,0 +1 @@ +uid://fkbjjsmb60j6 diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn index f52bd05..6e50759 100644 --- a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://donfbhh5giyfy"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd" id="1_ia1de"] +[ext_resource type="Script" uid="uid://fkbjjsmb60j6" path="res://addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd" id="1_ia1de"] [node name="State Charts" type="VBoxContainer"] anchors_preset = 15 diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid new file mode 100644 index 0000000..b3fd848 --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid @@ -0,0 +1 @@ +uid://dvu74pnu5lwbq diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid new file mode 100644 index 0000000..40a6030 --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid @@ -0,0 +1 @@ +uid://dyc5byyhwbnr0 diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid new file mode 100644 index 0000000..390dd4e --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid @@ -0,0 +1 @@ +uid://c7i62ol7vk1se diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid new file mode 100644 index 0000000..f59f5da --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid @@ -0,0 +1 @@ +uid://ble5gksncbe7n diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid new file mode 100644 index 0000000..fc7518a --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid @@ -0,0 +1 @@ +uid://cm44gvum3wl0i diff --git a/addons/godot_state_charts/utilities/editor_sidebar.gd.uid b/addons/godot_state_charts/utilities/editor_sidebar.gd.uid new file mode 100644 index 0000000..4bd9b5f --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_sidebar.gd.uid @@ -0,0 +1 @@ +uid://cm6kei7xi15jq diff --git a/addons/godot_state_charts/utilities/editor_sidebar.tscn b/addons/godot_state_charts/utilities/editor_sidebar.tscn index dd631c2..34fc9a0 100644 --- a/addons/godot_state_charts/utilities/editor_sidebar.tscn +++ b/addons/godot_state_charts/utilities/editor_sidebar.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://bephgxrkhh3e2"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/editor_sidebar.gd" id="1_7kcy8"] +[ext_resource type="Script" uid="uid://cm6kei7xi15jq" path="res://addons/godot_state_charts/utilities/editor_sidebar.gd" id="1_7kcy8"] [ext_resource type="Texture2D" uid="uid://c4ojtah20jtxc" path="res://addons/godot_state_charts/atomic_state.svg" id="2_0k4pg"] [ext_resource type="Texture2D" uid="uid://bbudjoa3ds4qj" path="res://addons/godot_state_charts/compound_state.svg" id="3_b4okj"] [ext_resource type="Texture2D" uid="uid://dsa1nco51br8d" path="res://addons/godot_state_charts/parallel_state.svg" id="4_lmfic"] diff --git a/addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid b/addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid new file mode 100644 index 0000000..fb07cb8 --- /dev/null +++ b/addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid @@ -0,0 +1 @@ +uid://bx78qgbch2n2w diff --git a/addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid b/addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid new file mode 100644 index 0000000..4967679 --- /dev/null +++ b/addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://bnflganrjhst8 diff --git a/addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid b/addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid new file mode 100644 index 0000000..b1aeaf5 --- /dev/null +++ b/addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid @@ -0,0 +1 @@ +uid://ce8s0mg7ebk3f diff --git a/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn b/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn index 8f85eb7..8bc2daa 100644 --- a/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn +++ b/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://cvlabg8e2qbk3"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/event_refactor/event_refactor.gd" id="1_hh1x6"] +[ext_resource type="Script" uid="uid://ce8s0mg7ebk3f" path="res://addons/godot_state_charts/utilities/event_refactor/event_refactor.gd" id="1_hh1x6"] [node name="event_refactor" type="ConfirmationDialog"] initial_position = 1 diff --git a/addons/godot_state_charts/utilities/ring_buffer.gd.uid b/addons/godot_state_charts/utilities/ring_buffer.gd.uid new file mode 100644 index 0000000..21c280e --- /dev/null +++ b/addons/godot_state_charts/utilities/ring_buffer.gd.uid @@ -0,0 +1 @@ +uid://imce1qdnxl8n diff --git a/addons/godot_state_charts/utilities/state_chart_debugger.gd.uid b/addons/godot_state_charts/utilities/state_chart_debugger.gd.uid new file mode 100644 index 0000000..614b701 --- /dev/null +++ b/addons/godot_state_charts/utilities/state_chart_debugger.gd.uid @@ -0,0 +1 @@ +uid://b8ollw5mltgtm diff --git a/addons/godot_state_charts/utilities/state_chart_debugger.tscn b/addons/godot_state_charts/utilities/state_chart_debugger.tscn index e5daa7d..d02736e 100644 --- a/addons/godot_state_charts/utilities/state_chart_debugger.tscn +++ b/addons/godot_state_charts/utilities/state_chart_debugger.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bcwkugn6v3oy7"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/state_chart_debugger.gd" id="1_i74os"] +[ext_resource type="Script" uid="uid://b8ollw5mltgtm" path="res://addons/godot_state_charts/utilities/state_chart_debugger.gd" id="1_i74os"] [node name="StateChartDebugger" type="MarginContainer"] anchors_preset = 15 diff --git a/addons/godot_state_charts/utilities/state_chart_util.gd.uid b/addons/godot_state_charts/utilities/state_chart_util.gd.uid new file mode 100644 index 0000000..1157c6e --- /dev/null +++ b/addons/godot_state_charts/utilities/state_chart_util.gd.uid @@ -0,0 +1 @@ +uid://bjmsdtahinvlk diff --git a/assets/mesh_libraries/w1/w1_walls.meshlib b/assets/mesh_libraries/w1/w1_walls.meshlib index 8f6b891..0231912 100644 Binary files a/assets/mesh_libraries/w1/w1_walls.meshlib and b/assets/mesh_libraries/w1/w1_walls.meshlib differ diff --git a/assets/models/enemies/boney.glb.import b/assets/models/enemies/boney.glb.import index 4404602..5fc0357 100644 --- a/assets/models/enemies/boney.glb.import +++ b/assets/models/enemies/boney.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/assets/models/tiles/w1_walls.glb.import b/assets/models/tiles/w1_walls.glb.import index a56a2b7..c5dd66b 100644 --- a/assets/models/tiles/w1_walls.glb.import +++ b/assets/models/tiles/w1_walls.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/assets/models/tiles/w1_walls/grey_block.material b/assets/models/tiles/w1_walls/grey_block.material index 2585b56..57395dc 100644 Binary files a/assets/models/tiles/w1_walls/grey_block.material and b/assets/models/tiles/w1_walls/grey_block.material differ diff --git a/assets/shaders/barber_shop.gdshader.uid b/assets/shaders/barber_shop.gdshader.uid new file mode 100644 index 0000000..565442f --- /dev/null +++ b/assets/shaders/barber_shop.gdshader.uid @@ -0,0 +1 @@ +uid://2vowejmm8ams diff --git a/assets/shaders/confetti_spin.gdshader.uid b/assets/shaders/confetti_spin.gdshader.uid new file mode 100644 index 0000000..8d5b785 --- /dev/null +++ b/assets/shaders/confetti_spin.gdshader.uid @@ -0,0 +1 @@ +uid://bwh16agcnae24 diff --git a/assets/shaders/flag.gdshader.uid b/assets/shaders/flag.gdshader.uid new file mode 100644 index 0000000..07f55a8 --- /dev/null +++ b/assets/shaders/flag.gdshader.uid @@ -0,0 +1 @@ +uid://bk3ssuhuvbahl diff --git a/assets/shaders/horizontal_world_uv.gdshader.uid b/assets/shaders/horizontal_world_uv.gdshader.uid new file mode 100644 index 0000000..537b9c4 --- /dev/null +++ b/assets/shaders/horizontal_world_uv.gdshader.uid @@ -0,0 +1 @@ +uid://c3y1ht34ep01k diff --git a/assets/textures/chaser/gskin0.png.import b/assets/textures/chaser/gskin0.png.import index 6faca52..f333bd4 100644 --- a/assets/textures/chaser/gskin0.png.import +++ b/assets/textures/chaser/gskin0.png.import @@ -3,25 +3,26 @@ importer="texture" type="CompressedTexture2D" uid="uid://bu4dwr7l6pwcv" -path="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex" +path.s3tc="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://assets/textures/chaser/gskin0.png" -dest_files=["res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex"] +dest_files=["res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex"] [params] -compress/mode=0 +compress/mode=2 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/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -31,4 +32,4 @@ 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 +detect_3d/compress_to=0 diff --git a/assets/textures/chaser/uncanny.png b/assets/textures/chaser/uncanny.png new file mode 100644 index 0000000..9b2a51e Binary files /dev/null and b/assets/textures/chaser/uncanny.png differ diff --git a/assets/textures/chaser/uncanny.png.import b/assets/textures/chaser/uncanny.png.import new file mode 100644 index 0000000..ea7b766 --- /dev/null +++ b/assets/textures/chaser/uncanny.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2a63sfnh6il" +path.s3tc="res://.godot/imported/uncanny.png-738ed8a4c24053be61a387bfe7510f94.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/chaser/uncanny.png" +dest_files=["res://.godot/imported/uncanny.png-738ed8a4c24053be61a387bfe7510f94.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +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=0 diff --git a/assets/textures/player/canny.png b/assets/textures/player/canny.png index dad99fd..cb2b51e 100644 Binary files a/assets/textures/player/canny.png and b/assets/textures/player/canny.png differ diff --git a/autoloads/scene_manager.gd.uid b/autoloads/scene_manager.gd.uid new file mode 100644 index 0000000..bb7ac2c --- /dev/null +++ b/autoloads/scene_manager.gd.uid @@ -0,0 +1 @@ +uid://dno6wobc85qrw diff --git a/autoloads/scene_manager.tscn b/autoloads/scene_manager.tscn index fb7b332..7f3b842 100644 --- a/autoloads/scene_manager.tscn +++ b/autoloads/scene_manager.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://dxrvocxjk8vs3"] -[ext_resource type="Script" path="res://autoloads/scene_manager.gd" id="1_d112a"] +[ext_resource type="Script" uid="uid://dno6wobc85qrw" path="res://autoloads/scene_manager.gd" id="1_d112a"] [node name="SceneManager" type="Node" node_paths=PackedStringArray("scene_parent")] script = ExtResource("1_d112a") diff --git a/levels/level.gd b/levels/level.gd index 70c84ec..4c882c2 100644 --- a/levels/level.gd +++ b/levels/level.gd @@ -1,2 +1,12 @@ class_name Level extends Node3D + + +@export var info: LevelInfo + + +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventKey: + if event.keycode == KEY_R and event.pressed: + var new_level = load(scene_file_path).instantiate() + SceneManager.change_scene(new_level) diff --git a/levels/level.gd.uid b/levels/level.gd.uid new file mode 100644 index 0000000..3075015 --- /dev/null +++ b/levels/level.gd.uid @@ -0,0 +1 @@ +uid://vydhlp6ju8bw diff --git a/levels/level_info.gd b/levels/level_info.gd new file mode 100644 index 0000000..ca8abdb --- /dev/null +++ b/levels/level_info.gd @@ -0,0 +1,6 @@ +class_name LevelInfo +extends Resource + + +@export var title: String +@export_range(1,5,1) var difficulty: int = 1 diff --git a/levels/level_info.gd.uid b/levels/level_info.gd.uid new file mode 100644 index 0000000..e9adca0 --- /dev/null +++ b/levels/level_info.gd.uid @@ -0,0 +1 @@ +uid://hmtamckjm4vm diff --git a/levels/level_set.gd b/levels/level_set.gd new file mode 100644 index 0000000..da71414 --- /dev/null +++ b/levels/level_set.gd @@ -0,0 +1,47 @@ +@tool +class_name LevelSet +extends Resource + + +@export var title: String +@export_tool_button("Update Levels") var _update_action = update_level_info +@export_dir var levels_dir: String: + set(value): + levels_dir = value + if Engine.is_editor_hint(): + update_level_info() +@export var levels: Array[LevelEntry] = [] + + +func update_level_info(): + levels.clear() + if levels_dir.is_empty() or not DirAccess.dir_exists_absolute(levels_dir): + notify_property_list_changed() + return + + var dir = DirAccess.open(levels_dir) + var files = Array(dir.get_files()).filter( + func(path: String): + return path.ends_with(".tscn") or path.ends_with(".scn") + ) as Array[String] + + for file in files: + var packed_scene = load(levels_dir + "/" + file) as PackedScene + if packed_scene: + var level = packed_scene.instantiate() + if level is Level: + var entry = LevelEntry.new() + entry.resource_name = level.info.title + entry.info = level.info + entry.scene = packed_scene + levels.append(entry) + level.free() + + notify_property_list_changed() + if Engine.is_editor_hint(): + ResourceSaver.save(self, resource_path) + + +class LevelEntry extends Resource: + @export var info: LevelInfo + @export var scene: PackedScene diff --git a/levels/level_set.gd.uid b/levels/level_set.gd.uid new file mode 100644 index 0000000..93e3b9e --- /dev/null +++ b/levels/level_set.gd.uid @@ -0,0 +1 @@ +uid://pgfv21pnsipl diff --git a/levels/w1.tres b/levels/w1.tres new file mode 100644 index 0000000..6ef027b --- /dev/null +++ b/levels/w1.tres @@ -0,0 +1,65 @@ +[gd_resource type="Resource" script_class="LevelSet" load_steps=16 format=3 uid="uid://btw8hqdurtu4l"] + +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="1_aabai"] +[ext_resource type="Script" uid="uid://pgfv21pnsipl" path="res://levels/level_set.gd" id="1_wemf7"] +[ext_resource type="PackedScene" uid="uid://bkas0lj53glkn" path="res://levels/w1/1_01.tscn" id="2_e78ac"] +[ext_resource type="PackedScene" uid="uid://w0nd4xra2jf1" path="res://levels/w1/1_02.tscn" id="3_t0snc"] +[ext_resource type="PackedScene" uid="uid://brskrrxg5v5wq" path="res://levels/w1/1_03.tscn" id="4_argu4"] +[ext_resource type="PackedScene" uid="uid://3ck33ekhtriv" path="res://levels/w1/1_04.scn" id="5_qkhto"] + +[sub_resource type="GDScript" id="GDScript_ue4o7"] + +[sub_resource type="Resource" id="Resource_qskty"] +script = ExtResource("1_aabai") +title = "Welcome To Poo Central!" +difficulty = 1 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_ymcbg"] +resource_name = "Welcome To Golf Central!" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_qskty") +scene = ExtResource("2_e78ac") + +[sub_resource type="Resource" id="Resource_4m1at"] +script = ExtResource("1_aabai") +title = "Oogly Goo" +difficulty = 2 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_604lb"] +resource_name = "Oogly Goo" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_4m1at") +scene = ExtResource("3_t0snc") + +[sub_resource type="Resource" id="Resource_108v6"] +script = ExtResource("1_aabai") +title = "Number Three!" +difficulty = 5 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_4ntyl"] +resource_name = "Number Three!" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_108v6") +scene = ExtResource("4_argu4") + +[sub_resource type="Resource" id="Resource_ra4qo"] +script = ExtResource("1_aabai") +title = "Foursyies" +difficulty = 3 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_0h8e4"] +resource_name = "Foursyies" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_ra4qo") +scene = ExtResource("5_qkhto") + +[resource] +script = ExtResource("1_wemf7") +title = "Golf Central" +levels_dir = "res://levels/w1" +levels = Array[SubResource("GDScript_ue4o7")]([SubResource("Resource_ymcbg"), SubResource("Resource_604lb"), SubResource("Resource_4ntyl"), SubResource("Resource_0h8e4")]) +metadata/_custom_type_script = "uid://pgfv21pnsipl" diff --git a/levels/w1/1_01.tscn b/levels/w1/1_01.tscn index 24cb031..115c40c 100644 --- a/levels/w1/1_01.tscn +++ b/levels/w1/1_01.tscn @@ -1,12 +1,21 @@ -[gd_scene load_steps=14 format=3 uid="uid://bkas0lj53glkn"] +[gd_scene load_steps=18 format=3 uid="uid://bkas0lj53glkn"] -[ext_resource type="Script" path="res://levels/level.gd" id="1_r1ilo"] +[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_r1ilo"] +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_61qek"] [ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_81akk"] [ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="4_emyyh"] [ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="5_oq0l4"] -[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"] [ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="6_rlgmy"] [ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_3jvq7"] +[ext_resource type="PackedScene" uid="uid://bndtsprfwrkau" path="res://objects/uncanny_cat.tscn" id="7_qskty"] +[ext_resource type="PackedScene" uid="uid://13qlrib2dk36" path="res://objects/waterman_pole.tscn" id="10_qrwyj"] + +[sub_resource type="Resource" id="Resource_qskty"] +script = ExtResource("2_61qek") +title = "Welcome To Golf Central!" +difficulty = 1 +metadata/_custom_type_script = "uid://hmtamckjm4vm" [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"] sky_top_color = Color(0.270389, 0.858166, 0.929253, 1) @@ -33,18 +42,19 @@ resource_local_to_scene = true shading_mode = 0 albedo_color = Color(0.916968, 0.113727, 0, 1) -[sub_resource type="PlaneMesh" id="PlaneMesh_roqf0"] -size = Vector2(32, 32) +[sub_resource type="BoxMesh" id="BoxMesh_25rxq"] +size = Vector3(32, 1, 32) [sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] render_priority = 0 shader = ExtResource("6_ka4lg") +shader_parameter/albedo_texture = ExtResource("7_3jvq7") shader_parameter/horizontal_uv_offset = Vector2(0, 0) shader_parameter/uv_scale = Vector2(0.5, 0.5) -shader_parameter/albedo_texture = ExtResource("7_3jvq7") [node name="Level" type="Node3D"] script = ExtResource("1_r1ilo") +info = SubResource("Resource_qskty") [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_n6dij") @@ -85,8 +95,15 @@ polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995) polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) +[node name="UncannyCat" parent="Objects" instance=ExtResource("7_qskty")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.89785, 0) + [node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) use_collision = true collision_mask = 0 -mesh = SubResource("PlaneMesh_roqf0") +mesh = SubResource("BoxMesh_25rxq") material = SubResource("ShaderMaterial_tpmcl") + +[node name="WatermanPole" parent="." instance=ExtResource("10_qrwyj")] +transform = Transform3D(1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 4) diff --git a/levels/w1/1_02.tscn b/levels/w1/1_02.tscn new file mode 100644 index 0000000..2640db8 --- /dev/null +++ b/levels/w1/1_02.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=16 format=3 uid="uid://w0nd4xra2jf1"] + +[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_u02w2"] +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_m70t5"] +[ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_w6c2x"] +[ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="3_m70t5"] +[ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="4_4m1at"] +[ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="5_hoiq0"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_dech8"] +[ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_x5v8p"] + +[sub_resource type="Resource" id="Resource_4m1at"] +script = ExtResource("2_m70t5") +title = "Oogly Goo" +difficulty = 2 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"] +sky_top_color = Color(0.270389, 0.858166, 0.929253, 1) +sky_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_bottom_color = Color(0.089621, 0.176788, 0.342266, 1) +ground_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_curve = 0.452548 +sun_angle_max = 0.0 +use_debanding = false + +[sub_resource type="Sky" id="Sky_f657k"] +sky_material = SubResource("ProceduralSkyMaterial_oakh3") +radiance_size = 0 + +[sub_resource type="Environment" id="Environment_n6dij"] +background_mode = 2 +sky = SubResource("Sky_f657k") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.25 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8l41h"] +resource_local_to_scene = true +shading_mode = 0 +albedo_color = Color(0.916968, 0.113727, 0, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_25rxq"] +size = Vector3(32, 1, 32) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] +render_priority = 0 +shader = ExtResource("6_dech8") +shader_parameter/albedo_texture = ExtResource("7_x5v8p") +shader_parameter/horizontal_uv_offset = Vector2(0, 0) +shader_parameter/uv_scale = Vector2(0.5, 0.5) + +[node name="Level" type="Node3D"] +script = ExtResource("1_u02w2") +info = SubResource("Resource_4m1at") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_n6dij") + +[node name="Sun" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.893065, 0.251134, -0.373318, 0, 0.82973, 0.558165, 0.449927, -0.498478, 0.741003, 0, 3.18312, 0) +sky_mode = 1 + +[node name="Walls" type="GridMap" parent="."] +mesh_library = ExtResource("2_w6c2x") +cell_size = Vector3(1, 1, 1) +cell_center_y = false +data = { +"cells": PackedInt32Array(0, 65535, 0, 65535, 65535, 0, 65535, 65534, 0, 0, 65534, 0, 0, 65533, 0, 0, 65532, 0, 65535, 65532, 0, 65535, 65533, 0, 65534, 65533, 0, 65534, 65534, 0, 1, 65535, 0, 2, 65535, 0, 3, 65535, 0, 4, 65535, 0, 4, 65534, 0, 4, 65533, 0, 4, 65532, 0, 3, 65532, 0, 2, 65532, 0, 1, 65532, 0, 1, 65533, 0, 1, 65534, 0, 2, 65534, 0, 2, 65533, 0, 3, 65533, 0, 3, 65534, 0, 4, 65531, 0, 3, 65531, 0, 2, 65531, 0, 2, 65530, 1441793, 3, 65530, 0, 4, 65530, 0, 1, 65531, 1441793, 5, 65535, 1048577, 5, 65534, 1048576, 5, 65533, 1048576, 5, 65532, 1048576, 5, 65531, 1048576, 5, 65530, 1048576, 65534, 65532, 1441793, 65534, 65535, 1, 6, 65530, 0, 6, 65531, 0, 7, 65531, 0, 7, 65530, 0, 8, 65530, 0, 8, 65531, 0, 9, 65531, 0, 9, 65530, 0, 10, 65530, 0, 11, 65530, 0, 12, 65530, 0, 13, 65530, 0, 13, 65531, 0, 12, 65531, 0, 11, 65531, 0, 10, 65531, 0, 6, 65532, 1048577, 13, 65532, 1, 13, 65529, 1441793, 14, 65529, 1441792, 14, 65530, 1441792, 14, 65531, 1441792, 14, 65532, 1441792, 14, 65533, 1441792, 14, 65534, 1441792, 14, 65535, 1441792, 15, 65529, 1441792, 16, 65529, 1441792, 16, 65530, 1441792, 16, 65531, 1441792, 16, 65532, 1441792, 15, 65532, 1441792, 15, 65531, 1441792, 15, 65530, 1441792, 14, 65528, 1441792, 14, 65527, 1441792, 14, 65526, 1441792, 14, 65525, 1441792, 14, 65524, 1441792, 14, 65523, 1441792, 14, 65522, 1441792, 13, 65522, 1, 14, 0, 0, 14, 1, 0, 14, 2, 0, 14, 3, 0, 14, 4, 0, 14, 5, 0, 14, 6, 0, 14, 7, 0, 14, 8, 0, 13, 9, 1441793, 12, 10, 1441793, 11, 11, 1441793, 10, 12, 1441793, 9, 13, 1441793, 14, 10, 1441792, 14, 9, 1441792, 14, 11, 1441792, 14, 12, 1441792, 14, 13, 1441792, 13, 13, 1441792, 12, 13, 1441792, 11, 13, 1441792, 10, 13, 1441792, 11, 12, 1441792, 12, 12, 1441792, 12, 11, 1441792, 13, 11, 1441792, 13, 12, 1441792, 13, 10, 1441792, 15, 14, 1441792, 16, 15, 1441792, 16, 14, 1441792, 16, 13, 1441792, 16, 12, 1441792, 16, 11, 1441792, 16, 10, 1441792, 16, 9, 1441792, 16, 8, 1441792, 16, 7, 1441792, 16, 6, 1441792, 16, 5, 1441792, 16, 4, 1441792, 16, 3, 1441792, 16, 2, 1441792, 16, 1, 1441792, 16, 0, 1441792, 15, 0, 1441792, 15, 65535, 1441792, 15, 65534, 1441792, 16, 65534, 1441792, 16, 65533, 1441792, 16, 65535, 1441792, 15, 65533, 1441792, 15, 1, 1441792, 15, 2, 1441792, 15, 3, 1441792, 15, 4, 1441792, 15, 5, 1441792, 15, 6, 1441792, 15, 7, 1441792, 15, 8, 1441792, 15, 9, 1441792, 15, 10, 1441792, 15, 11, 1441792, 15, 12, 1441792, 15, 13, 1441792, 15, 15, 1441792, 14, 15, 1441792, 13, 15, 1441792, 12, 15, 1441792, 11, 15, 1441792, 10, 15, 1441792, 9, 15, 1441792, 9, 14, 1441792, 10, 14, 1441792, 11, 14, 1441792, 12, 14, 1441792, 13, 14, 1441792, 14, 14, 1441792, 8, 14, 1441792, 8, 15, 1441792, 16, 16, 1441792, 15, 16, 1441792, 10, 16, 1441792, 11, 16, 1441792, 12, 16, 1441792, 13, 16, 1441792, 14, 16, 1441792, 9, 16, 1441792, 8, 16, 1441792, 7, 16, 1441792, 6, 16, 1441792, 6, 15, 1441792, 5, 15, 1441792, 7, 15, 1441792, 7, 14, 1441792, 6, 14, 1441792, 5, 14, 1441792, 5, 16, 1441792, 65525, 65533, 1441792, 65525, 65534, 1441792, 65525, 65532, 1441792, 65525, 65531, 655361, 65524, 65530, 655361, 65523, 65529, 655361, 65522, 65528, 655361, 65521, 65527, 655360, 65521, 65526, 655360, 65521, 65525, 655360, 65521, 65524, 655360, 65522, 65523, 1048577, 65523, 65522, 1048577, 14, 65521, 1048576, 13, 65521, 1048576, 12, 65521, 1048576, 11, 65521, 1048576, 10, 65521, 1048576, 9, 65521, 1048576, 8, 65521, 1048576, 7, 65521, 1048576, 6, 65521, 1048576, 5, 65521, 1048576, 4, 65521, 1048576, 3, 65521, 1048576, 2, 65521, 1048576, 1, 65521, 1048576, 0, 65521, 1048576, 65535, 65521, 1048576, 65534, 65521, 1048576, 65533, 65521, 1048576, 65532, 65521, 1048576, 65531, 65521, 1048576, 65530, 65521, 1048576, 65529, 65521, 1048576, 65528, 65521, 1048576, 65527, 65521, 1048576, 65526, 65521, 1048576, 65525, 65521, 1048576, 65524, 65521, 1048576, 65523, 65521, 1048576, 65522, 65521, 1048576, 65521, 65521, 1048576, 65521, 65522, 1048576, 65521, 65523, 1048576, 65522, 65522, 1048576, 16, 65528, 1048576, 16, 65527, 1048576, 16, 65526, 1048576, 15, 65526, 1048576, 15, 65527, 1048576, 15, 65528, 1048576, 15, 65525, 1048576, 15, 65524, 1048576, 15, 65523, 1048576, 15, 65522, 1048576, 15, 65521, 1048576, 15, 65520, 1048576, 15, 65519, 1048576, 16, 65519, 1048576, 16, 65520, 1048576, 16, 65521, 1048576, 16, 65525, 1048576, 16, 65524, 1048576, 16, 65523, 1048576, 16, 65522, 1048576, 14, 65519, 1048576, 13, 65519, 1048576, 12, 65519, 1048576, 11, 65519, 1048576, 10, 65519, 1048576, 9, 65519, 1048576, 8, 65519, 1048576, 7, 65519, 1048576, 6, 65519, 1048576, 5, 65519, 1048576, 4, 65519, 1048576, 3, 65519, 1048576, 2, 65519, 1048576, 1, 65519, 1048576, 0, 65519, 1048576, 65535, 65519, 1048576, 65534, 65519, 1048576, 65533, 65519, 1048576, 65532, 65519, 1048576, 65531, 65519, 1048576, 65530, 65519, 1048576, 65529, 65519, 1048576, 65528, 65519, 1048576, 65527, 65519, 1048576, 65526, 65519, 1048576, 65525, 65519, 1048576, 65524, 65519, 1048576, 65523, 65519, 1048576, 65522, 65519, 1048576, 65522, 65520, 1048576, 65521, 65520, 1048576, 65521, 65519, 1048576, 65523, 65520, 1048576, 65524, 65520, 1048576, 65525, 65520, 1048576, 65526, 65520, 1048576, 65527, 65520, 1048576, 65528, 65520, 1048576, 65529, 65520, 1048576, 65533, 65520, 1048576, 65532, 65520, 1048576, 65531, 65520, 1048576, 65530, 65520, 1048576, 65534, 65520, 1048576, 65535, 65520, 1048576, 0, 65520, 1048576, 1, 65520, 1048576, 2, 65520, 1048576, 3, 65520, 1048576, 4, 65520, 1048576, 5, 65520, 1048576, 6, 65520, 1048576, 7, 65520, 1048576, 8, 65520, 1048576, 9, 65520, 1048576, 10, 65520, 1048576, 11, 65520, 1048576, 12, 65520, 1048576, 13, 65520, 1048576, 14, 65520, 1048576, 65520, 65519, 1048576, 65519, 65519, 1048576, 65519, 65520, 1048576, 65520, 65520, 1048576, 65520, 65521, 1048576, 65520, 65522, 1048576, 65520, 65523, 1048576, 65520, 65524, 1048576, 65520, 65525, 1048576, 65520, 65526, 1048576, 65520, 65527, 1048576, 65519, 65527, 1048576, 65519, 65526, 1048576, 65519, 65525, 1048576, 65519, 65524, 1048576, 65519, 65523, 1048576, 65519, 65522, 1048576, 65519, 65521, 1048576, 65521, 65528, 1048576, 65520, 65528, 1048576, 65519, 65528, 1048576, 65519, 65529, 1048576, 65520, 65529, 1048576, 65520, 65530, 1048576, 65520, 65531, 1048576, 65520, 65532, 1048576, 65519, 65532, 1048576, 65519, 65531, 1048576, 65519, 65530, 1048576, 65519, 65533, 1048576, 65519, 65534, 1048576, 65519, 65535, 1048576, 65519, 0, 1048576, 65519, 1, 1048576, 65519, 2, 1048576, 65519, 3, 1048576, 65519, 4, 1048576, 65519, 5, 1048576, 65519, 6, 1048576, 65519, 7, 1048576, 65519, 8, 1048576, 65519, 9, 1048576, 65519, 10, 1048576, 65520, 10, 1048576, 65520, 11, 1048576, 65520, 12, 1048576, 65520, 13, 1048576, 65519, 15, 1048576, 65519, 14, 1048576, 65519, 13, 1048576, 65519, 12, 1048576, 65519, 11, 1048576, 65519, 16, 1048576, 65520, 16, 1048576, 65520, 15, 1048576, 65520, 14, 1048576, 65520, 9, 1048576, 65520, 8, 1048576, 65520, 7, 1048576, 65520, 6, 1048576, 65520, 5, 1048576, 65520, 4, 1048576, 65520, 3, 1048576, 65520, 2, 1048576, 65520, 1, 1048576, 65520, 0, 1048576, 65520, 65535, 1048576, 65520, 65534, 1048576, 65520, 65533, 1048576, 65525, 65535, 1048576, 65525, 0, 1048576, 65525, 1, 1048576, 65525, 2, 1048576, 65525, 3, 1048576, 65525, 4, 1048576, 65525, 5, 1048576, 65525, 6, 1048576, 65525, 7, 1048576, 65525, 8, 1048576, 65525, 9, 1048576, 65525, 10, 1048576, 65525, 11, 1048576, 65525, 12, 1048576, 65525, 13, 1048576, 65525, 14, 1048576, 65525, 15, 1048576, 65525, 16, 1048576, 65524, 15, 1048576, 65524, 16, 1048576, 65523, 16, 1048576, 65522, 16, 1048576, 65521, 16, 1048576, 65521, 15, 1048576, 65522, 15, 1048576, 65523, 14, 1048576, 65524, 14, 1048576, 65523, 15, 1048576, 65522, 14, 1048576, 65521, 14, 1048576, 65522, 13, 1048576, 65523, 13, 1048576, 65524, 13, 1048576, 65521, 13, 1048576, 65521, 12, 1048576, 65521, 11, 1048576, 65521, 10, 1048576, 65521, 9, 1048576, 65521, 7, 1048576, 65521, 6, 1048576, 65521, 5, 1048576, 65521, 4, 1048576, 65521, 3, 1048576, 65521, 2, 1048576, 65521, 65535, 1048576, 65521, 0, 1048576, 65521, 1, 1048576, 65521, 8, 1048576, 65522, 65535, 1048576, 65522, 65533, 1048576, 65522, 65532, 1048576, 65521, 65531, 1048576, 65521, 65530, 1048576, 65521, 65529, 1048576, 65522, 65529, 1048576, 65522, 65530, 1048576, 65522, 65531, 1048576, 65521, 65532, 1048576, 65521, 65533, 1048576, 65521, 65534, 1048576, 65523, 65532, 1048576, 65523, 65531, 1048576, 65523, 65530, 1048576, 65524, 65532, 1048576, 65524, 65531, 1048576, 65524, 65533, 1048576, 65524, 65534, 1048576, 65524, 65535, 1048576, 65524, 0, 1048576, 65524, 1, 1048576, 65524, 2, 1048576, 65524, 3, 1048576, 65524, 4, 1048576, 65524, 5, 1048576, 65524, 6, 1048576, 65524, 7, 1048576, 65524, 8, 1048576, 65524, 9, 1048576, 65524, 10, 1048576, 65524, 11, 1048576, 65524, 12, 1048576, 65523, 12, 1048576, 65522, 12, 1048576, 65522, 11, 1048576, 65522, 10, 1048576, 65522, 9, 1048576, 65522, 8, 1048576, 65522, 7, 1048576, 65522, 6, 1048576, 65522, 5, 1048576, 65522, 4, 1048576, 65522, 3, 1048576, 65522, 2, 1048576, 65522, 1, 1048576, 65522, 0, 1048576, 65522, 65534, 1048576, 65523, 65534, 1048576, 65523, 65535, 1048576, 65523, 65533, 1048576, 65523, 0, 1048576, 65523, 1, 1048576, 65523, 2, 1048576, 65523, 3, 1048576, 65523, 4, 1048576, 65523, 5, 1048576, 65523, 6, 1048576, 65523, 10, 1048576, 65523, 9, 1048576, 65523, 8, 1048576, 65523, 7, 1048576, 65523, 11, 1048576, 4, 14, 1048576, 3, 14, 1048576, 2, 14, 1048576, 1, 14, 1048576, 0, 14, 1048576, 65535, 14, 1048576, 65534, 14, 1048576, 65533, 14, 1048576, 65532, 14, 1048576, 65531, 14, 1048576, 65530, 14, 1048576, 65529, 14, 1048576, 65528, 14, 1048576, 65527, 14, 1048576, 65527, 15, 1048576, 65526, 15, 1048576, 65526, 16, 1048576, 65526, 14, 1048576, 65527, 16, 1048576, 65528, 16, 1048576, 65529, 16, 1048576, 65530, 16, 1048576, 65531, 16, 1048576, 65532, 16, 1048576, 65533, 16, 1048576, 65534, 16, 1048576, 65535, 16, 1048576, 0, 16, 1048576, 1, 16, 1048576, 2, 16, 1048576, 3, 16, 1048576, 4, 16, 1048576, 4, 15, 1048576, 3, 15, 1048576, 2, 15, 1048576, 1, 15, 1048576, 0, 15, 1048576, 65535, 15, 1048576, 65534, 15, 1048576, 65533, 15, 1048576, 65532, 15, 1048576, 65531, 15, 1048576, 65530, 15, 1048576, 65529, 15, 1048576, 65528, 15, 1048576, 65526, 9, 655361, 65527, 10, 655361, 65528, 11, 655361, 65529, 12, 655361, 65530, 13, 655361, 65529, 13, 655360, 65528, 13, 655360, 65527, 13, 655360, 65526, 13, 655360, 65526, 12, 655360, 65526, 11, 655360, 65526, 10, 655360, 65527, 11, 655360, 65527, 12, 655360, 65528, 12, 655360) +} + +[node name="CannyCat" parent="." instance=ExtResource("3_m70t5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1, -2) +power_line_material = SubResource("StandardMaterial3D_8l41h") +power_scale = 40.0 + +[node name="Objects" type="Node3D" parent="."] + +[node name="GoalPost" parent="Objects" instance=ExtResource("4_4m1at")] +transform = Transform3D(0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, 10, 0, -10) + +[node name="SandPits" type="Node3D" parent="Objects"] + +[node name="SandPit" parent="Objects/SandPits" instance=ExtResource("5_hoiq0")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -7, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit2" parent="Objects/SandPits" instance=ExtResource("5_hoiq0")] +transform = Transform3D(-1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 11, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit3" parent="Objects/SandPits" instance=ExtResource("5_hoiq0")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995) +polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) + +[node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) +use_collision = true +collision_mask = 0 +mesh = SubResource("BoxMesh_25rxq") +material = SubResource("ShaderMaterial_tpmcl") diff --git a/levels/w1/1_03.tscn b/levels/w1/1_03.tscn new file mode 100644 index 0000000..310b943 --- /dev/null +++ b/levels/w1/1_03.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=16 format=3 uid="uid://brskrrxg5v5wq"] + +[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_750nu"] +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_1802c"] +[ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_qejmv"] +[ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="3_1802c"] +[ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="4_108v6"] +[ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="5_0oe1q"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_w88by"] +[ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_f61du"] + +[sub_resource type="Resource" id="Resource_108v6"] +script = ExtResource("2_1802c") +title = "Number Three!" +difficulty = 5 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"] +sky_top_color = Color(0.270389, 0.858166, 0.929253, 1) +sky_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_bottom_color = Color(0.089621, 0.176788, 0.342266, 1) +ground_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_curve = 0.452548 +sun_angle_max = 0.0 +use_debanding = false + +[sub_resource type="Sky" id="Sky_f657k"] +sky_material = SubResource("ProceduralSkyMaterial_oakh3") +radiance_size = 0 + +[sub_resource type="Environment" id="Environment_n6dij"] +background_mode = 2 +sky = SubResource("Sky_f657k") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.25 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8l41h"] +resource_local_to_scene = true +shading_mode = 0 +albedo_color = Color(0.916968, 0.113727, 0, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_25rxq"] +size = Vector3(32, 1, 32) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] +render_priority = 0 +shader = ExtResource("6_w88by") +shader_parameter/albedo_texture = ExtResource("7_f61du") +shader_parameter/horizontal_uv_offset = Vector2(0, 0) +shader_parameter/uv_scale = Vector2(0.5, 0.5) + +[node name="Level" type="Node3D"] +script = ExtResource("1_750nu") +info = SubResource("Resource_108v6") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_n6dij") + +[node name="Sun" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.893065, 0.251134, -0.373318, 0, 0.82973, 0.558165, 0.449927, -0.498478, 0.741003, 0, 3.18312, 0) +sky_mode = 1 + +[node name="Walls" type="GridMap" parent="."] +mesh_library = ExtResource("2_qejmv") +cell_size = Vector3(1, 1, 1) +cell_center_y = false +data = { +"cells": PackedInt32Array(0, 65535, 0, 65535, 65535, 0, 65535, 65534, 0, 0, 65534, 0, 0, 65533, 0, 0, 65532, 0, 65535, 65532, 0, 65535, 65533, 0, 65534, 65533, 0, 65534, 65534, 0, 1, 65535, 0, 2, 65535, 0, 3, 65535, 0, 4, 65535, 0, 4, 65534, 0, 4, 65533, 0, 4, 65532, 0, 3, 65532, 0, 2, 65532, 0, 1, 65532, 0, 1, 65533, 0, 1, 65534, 0, 2, 65534, 0, 2, 65533, 0, 3, 65533, 0, 3, 65534, 0, 4, 65531, 0, 3, 65531, 0, 2, 65531, 0, 2, 65530, 1441793, 3, 65530, 0, 4, 65530, 0, 1, 65531, 1441793, 5, 65535, 1048577, 5, 65534, 1048576, 5, 65533, 1048576, 5, 65532, 1048576, 5, 65531, 1048576, 5, 65530, 1048576, 65534, 65532, 1441793, 65534, 65535, 1, 6, 65530, 0, 6, 65531, 0, 7, 65531, 0, 7, 65530, 0, 8, 65530, 0, 8, 65531, 0, 9, 65531, 0, 9, 65530, 0, 10, 65530, 0, 11, 65530, 0, 12, 65530, 0, 13, 65530, 0, 13, 65531, 0, 12, 65531, 0, 11, 65531, 0, 10, 65531, 0, 6, 65532, 1048577, 13, 65532, 1, 13, 65529, 1441793, 14, 65529, 1441792, 14, 65530, 1441792, 14, 65531, 1441792, 14, 65532, 1441792, 14, 65533, 1441792, 14, 65534, 1441792, 14, 65535, 1441792, 15, 65529, 1441792, 16, 65529, 1441792, 16, 65530, 1441792, 16, 65531, 1441792, 16, 65532, 1441792, 15, 65532, 1441792, 15, 65531, 1441792, 15, 65530, 1441792, 14, 65528, 1441792, 14, 65527, 1441792, 14, 65526, 1441792, 14, 65525, 1441792, 14, 65524, 1441792, 14, 65523, 1441792, 14, 65522, 1441792, 13, 65522, 1, 14, 0, 0, 14, 1, 0, 14, 2, 0, 14, 3, 0, 14, 4, 0, 14, 5, 0, 14, 6, 0, 14, 7, 0, 14, 8, 0, 13, 9, 1441793, 12, 10, 1441793, 11, 11, 1441793, 10, 12, 1441793, 9, 13, 1441793, 14, 10, 1441792, 14, 9, 1441792, 14, 11, 1441792, 14, 12, 1441792, 14, 13, 1441792, 13, 13, 1441792, 12, 13, 1441792, 11, 13, 1441792, 10, 13, 1441792, 11, 12, 1441792, 12, 12, 1441792, 12, 11, 1441792, 13, 11, 1441792, 13, 12, 1441792, 13, 10, 1441792, 15, 14, 1441792, 16, 15, 1441792, 16, 14, 1441792, 16, 13, 1441792, 16, 12, 1441792, 16, 11, 1441792, 16, 10, 1441792, 16, 9, 1441792, 16, 8, 1441792, 16, 7, 1441792, 16, 6, 1441792, 16, 5, 1441792, 16, 4, 1441792, 16, 3, 1441792, 16, 2, 1441792, 16, 1, 1441792, 16, 0, 1441792, 15, 0, 1441792, 15, 65535, 1441792, 15, 65534, 1441792, 16, 65534, 1441792, 16, 65533, 1441792, 16, 65535, 1441792, 15, 65533, 1441792, 15, 1, 1441792, 15, 2, 1441792, 15, 3, 1441792, 15, 4, 1441792, 15, 5, 1441792, 15, 6, 1441792, 15, 7, 1441792, 15, 8, 1441792, 15, 9, 1441792, 15, 10, 1441792, 15, 11, 1441792, 15, 12, 1441792, 15, 13, 1441792, 15, 15, 1441792, 14, 15, 1441792, 13, 15, 1441792, 12, 15, 1441792, 11, 15, 1441792, 10, 15, 1441792, 9, 15, 1441792, 9, 14, 1441792, 10, 14, 1441792, 11, 14, 1441792, 12, 14, 1441792, 13, 14, 1441792, 14, 14, 1441792, 8, 14, 1441792, 8, 15, 1441792, 16, 16, 1441792, 15, 16, 1441792, 10, 16, 1441792, 11, 16, 1441792, 12, 16, 1441792, 13, 16, 1441792, 14, 16, 1441792, 9, 16, 1441792, 8, 16, 1441792, 7, 16, 1441792, 6, 16, 1441792, 6, 15, 1441792, 5, 15, 1441792, 7, 15, 1441792, 7, 14, 1441792, 6, 14, 1441792, 5, 14, 1441792, 5, 16, 1441792, 65525, 65533, 1441792, 65525, 65534, 1441792, 65525, 65532, 1441792, 65525, 65531, 655361, 65524, 65530, 655361, 65523, 65529, 655361, 65522, 65528, 655361, 65521, 65527, 655360, 65521, 65526, 655360, 65521, 65525, 655360, 65521, 65524, 655360, 65522, 65523, 1048577, 65523, 65522, 1048577, 14, 65521, 1048576, 13, 65521, 1048576, 12, 65521, 1048576, 11, 65521, 1048576, 10, 65521, 1048576, 9, 65521, 1048576, 8, 65521, 1048576, 7, 65521, 1048576, 6, 65521, 1048576, 5, 65521, 1048576, 4, 65521, 1048576, 3, 65521, 1048576, 2, 65521, 1048576, 1, 65521, 1048576, 0, 65521, 1048576, 65535, 65521, 1048576, 65534, 65521, 1048576, 65533, 65521, 1048576, 65532, 65521, 1048576, 65531, 65521, 1048576, 65530, 65521, 1048576, 65529, 65521, 1048576, 65528, 65521, 1048576, 65527, 65521, 1048576, 65526, 65521, 1048576, 65525, 65521, 1048576, 65524, 65521, 1048576, 65523, 65521, 1048576, 65522, 65521, 1048576, 65521, 65521, 1048576, 65521, 65522, 1048576, 65521, 65523, 1048576, 65522, 65522, 1048576, 16, 65528, 1048576, 16, 65527, 1048576, 16, 65526, 1048576, 15, 65526, 1048576, 15, 65527, 1048576, 15, 65528, 1048576, 15, 65525, 1048576, 15, 65524, 1048576, 15, 65523, 1048576, 15, 65522, 1048576, 15, 65521, 1048576, 15, 65520, 1048576, 15, 65519, 1048576, 16, 65519, 1048576, 16, 65520, 1048576, 16, 65521, 1048576, 16, 65525, 1048576, 16, 65524, 1048576, 16, 65523, 1048576, 16, 65522, 1048576, 14, 65519, 1048576, 13, 65519, 1048576, 12, 65519, 1048576, 11, 65519, 1048576, 10, 65519, 1048576, 9, 65519, 1048576, 8, 65519, 1048576, 7, 65519, 1048576, 6, 65519, 1048576, 5, 65519, 1048576, 4, 65519, 1048576, 3, 65519, 1048576, 2, 65519, 1048576, 1, 65519, 1048576, 0, 65519, 1048576, 65535, 65519, 1048576, 65534, 65519, 1048576, 65533, 65519, 1048576, 65532, 65519, 1048576, 65531, 65519, 1048576, 65530, 65519, 1048576, 65529, 65519, 1048576, 65528, 65519, 1048576, 65527, 65519, 1048576, 65526, 65519, 1048576, 65525, 65519, 1048576, 65524, 65519, 1048576, 65523, 65519, 1048576, 65522, 65519, 1048576, 65522, 65520, 1048576, 65521, 65520, 1048576, 65521, 65519, 1048576, 65523, 65520, 1048576, 65524, 65520, 1048576, 65525, 65520, 1048576, 65526, 65520, 1048576, 65527, 65520, 1048576, 65528, 65520, 1048576, 65529, 65520, 1048576, 65533, 65520, 1048576, 65532, 65520, 1048576, 65531, 65520, 1048576, 65530, 65520, 1048576, 65534, 65520, 1048576, 65535, 65520, 1048576, 0, 65520, 1048576, 1, 65520, 1048576, 2, 65520, 1048576, 3, 65520, 1048576, 4, 65520, 1048576, 5, 65520, 1048576, 6, 65520, 1048576, 7, 65520, 1048576, 8, 65520, 1048576, 9, 65520, 1048576, 10, 65520, 1048576, 11, 65520, 1048576, 12, 65520, 1048576, 13, 65520, 1048576, 14, 65520, 1048576, 65520, 65519, 1048576, 65519, 65519, 1048576, 65519, 65520, 1048576, 65520, 65520, 1048576, 65520, 65521, 1048576, 65520, 65522, 1048576, 65520, 65523, 1048576, 65520, 65524, 1048576, 65520, 65525, 1048576, 65520, 65526, 1048576, 65520, 65527, 1048576, 65519, 65527, 1048576, 65519, 65526, 1048576, 65519, 65525, 1048576, 65519, 65524, 1048576, 65519, 65523, 1048576, 65519, 65522, 1048576, 65519, 65521, 1048576, 65521, 65528, 1048576, 65520, 65528, 1048576, 65519, 65528, 1048576, 65519, 65529, 1048576, 65520, 65529, 1048576, 65520, 65530, 1048576, 65520, 65531, 1048576, 65520, 65532, 1048576, 65519, 65532, 1048576, 65519, 65531, 1048576, 65519, 65530, 1048576, 65519, 65533, 1048576, 65519, 65534, 1048576, 65519, 65535, 1048576, 65519, 0, 1048576, 65519, 1, 1048576, 65519, 2, 1048576, 65519, 3, 1048576, 65519, 4, 1048576, 65519, 5, 1048576, 65519, 6, 1048576, 65519, 7, 1048576, 65519, 8, 1048576, 65519, 9, 1048576, 65519, 10, 1048576, 65520, 10, 1048576, 65520, 11, 1048576, 65520, 12, 1048576, 65520, 13, 1048576, 65519, 15, 1048576, 65519, 14, 1048576, 65519, 13, 1048576, 65519, 12, 1048576, 65519, 11, 1048576, 65519, 16, 1048576, 65520, 16, 1048576, 65520, 15, 1048576, 65520, 14, 1048576, 65520, 9, 1048576, 65520, 8, 1048576, 65520, 7, 1048576, 65520, 6, 1048576, 65520, 5, 1048576, 65520, 4, 1048576, 65520, 3, 1048576, 65520, 2, 1048576, 65520, 1, 1048576, 65520, 0, 1048576, 65520, 65535, 1048576, 65520, 65534, 1048576, 65520, 65533, 1048576, 65525, 65535, 1048576, 65525, 0, 1048576, 65525, 1, 1048576, 65525, 2, 1048576, 65525, 3, 1048576, 65525, 4, 1048576, 65525, 5, 1048576, 65525, 6, 1048576, 65525, 7, 1048576, 65525, 8, 1048576, 65525, 9, 1048576, 65525, 10, 1048576, 65525, 11, 1048576, 65525, 12, 1048576, 65525, 13, 1048576, 65525, 14, 1048576, 65525, 15, 1048576, 65525, 16, 1048576, 65524, 15, 1048576, 65524, 16, 1048576, 65523, 16, 1048576, 65522, 16, 1048576, 65521, 16, 1048576, 65521, 15, 1048576, 65522, 15, 1048576, 65523, 14, 1048576, 65524, 14, 1048576, 65523, 15, 1048576, 65522, 14, 1048576, 65521, 14, 1048576, 65522, 13, 1048576, 65523, 13, 1048576, 65524, 13, 1048576, 65521, 13, 1048576, 65521, 12, 1048576, 65521, 11, 1048576, 65521, 10, 1048576, 65521, 9, 1048576, 65521, 7, 1048576, 65521, 6, 1048576, 65521, 5, 1048576, 65521, 4, 1048576, 65521, 3, 1048576, 65521, 2, 1048576, 65521, 65535, 1048576, 65521, 0, 1048576, 65521, 1, 1048576, 65521, 8, 1048576, 65522, 65535, 1048576, 65522, 65533, 1048576, 65522, 65532, 1048576, 65521, 65531, 1048576, 65521, 65530, 1048576, 65521, 65529, 1048576, 65522, 65529, 1048576, 65522, 65530, 1048576, 65522, 65531, 1048576, 65521, 65532, 1048576, 65521, 65533, 1048576, 65521, 65534, 1048576, 65523, 65532, 1048576, 65523, 65531, 1048576, 65523, 65530, 1048576, 65524, 65532, 1048576, 65524, 65531, 1048576, 65524, 65533, 1048576, 65524, 65534, 1048576, 65524, 65535, 1048576, 65524, 0, 1048576, 65524, 1, 1048576, 65524, 2, 1048576, 65524, 3, 1048576, 65524, 4, 1048576, 65524, 5, 1048576, 65524, 6, 1048576, 65524, 7, 1048576, 65524, 8, 1048576, 65524, 9, 1048576, 65524, 10, 1048576, 65524, 11, 1048576, 65524, 12, 1048576, 65523, 12, 1048576, 65522, 12, 1048576, 65522, 11, 1048576, 65522, 10, 1048576, 65522, 9, 1048576, 65522, 8, 1048576, 65522, 7, 1048576, 65522, 6, 1048576, 65522, 5, 1048576, 65522, 4, 1048576, 65522, 3, 1048576, 65522, 2, 1048576, 65522, 1, 1048576, 65522, 0, 1048576, 65522, 65534, 1048576, 65523, 65534, 1048576, 65523, 65535, 1048576, 65523, 65533, 1048576, 65523, 0, 1048576, 65523, 1, 1048576, 65523, 2, 1048576, 65523, 3, 1048576, 65523, 4, 1048576, 65523, 5, 1048576, 65523, 6, 1048576, 65523, 10, 1048576, 65523, 9, 1048576, 65523, 8, 1048576, 65523, 7, 1048576, 65523, 11, 1048576, 4, 14, 1048576, 3, 14, 1048576, 2, 14, 1048576, 1, 14, 1048576, 0, 14, 1048576, 65535, 14, 1048576, 65534, 14, 1048576, 65533, 14, 1048576, 65532, 14, 1048576, 65531, 14, 1048576, 65530, 14, 1048576, 65529, 14, 1048576, 65528, 14, 1048576, 65527, 14, 1048576, 65527, 15, 1048576, 65526, 15, 1048576, 65526, 16, 1048576, 65526, 14, 1048576, 65527, 16, 1048576, 65528, 16, 1048576, 65529, 16, 1048576, 65530, 16, 1048576, 65531, 16, 1048576, 65532, 16, 1048576, 65533, 16, 1048576, 65534, 16, 1048576, 65535, 16, 1048576, 0, 16, 1048576, 1, 16, 1048576, 2, 16, 1048576, 3, 16, 1048576, 4, 16, 1048576, 4, 15, 1048576, 3, 15, 1048576, 2, 15, 1048576, 1, 15, 1048576, 0, 15, 1048576, 65535, 15, 1048576, 65534, 15, 1048576, 65533, 15, 1048576, 65532, 15, 1048576, 65531, 15, 1048576, 65530, 15, 1048576, 65529, 15, 1048576, 65528, 15, 1048576, 65526, 9, 655361, 65527, 10, 655361, 65528, 11, 655361, 65529, 12, 655361, 65530, 13, 655361, 65529, 13, 655360, 65528, 13, 655360, 65527, 13, 655360, 65526, 13, 655360, 65526, 12, 655360, 65526, 11, 655360, 65526, 10, 655360, 65527, 11, 655360, 65527, 12, 655360, 65528, 12, 655360) +} + +[node name="CannyCat" parent="." instance=ExtResource("3_1802c")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1, -2) +power_line_material = SubResource("StandardMaterial3D_8l41h") +power_scale = 40.0 + +[node name="Objects" type="Node3D" parent="."] + +[node name="GoalPost" parent="Objects" instance=ExtResource("4_108v6")] +transform = Transform3D(0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, 10, 0, -10) + +[node name="SandPits" type="Node3D" parent="Objects"] + +[node name="SandPit" parent="Objects/SandPits" instance=ExtResource("5_0oe1q")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -7, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit2" parent="Objects/SandPits" instance=ExtResource("5_0oe1q")] +transform = Transform3D(-1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 11, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit3" parent="Objects/SandPits" instance=ExtResource("5_0oe1q")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995) +polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) + +[node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) +use_collision = true +collision_mask = 0 +mesh = SubResource("BoxMesh_25rxq") +material = SubResource("ShaderMaterial_tpmcl") diff --git a/objects/canny_cat.gd b/objects/canny_cat.gd index ee9c3d5..304340b 100644 --- a/objects/canny_cat.gd +++ b/objects/canny_cat.gd @@ -168,13 +168,15 @@ var _pole_stored_speed: float = 0.0 func _start_pole_spin() -> void: _pole_stored_speed = flatten_vector(velocity).length() velocity = Vector3.ZERO + floor_snap_length = 0.0 var pole_xz = flatten_vector(_attached_pole.global_position) var self_xz = flatten_vector(global_position) _pole_angle = Vector3.FORWARD.angle_to(self_xz - pole_xz) func _process_pole_spin(delta: float) -> void: + var speed_factor = inverse_lerp(0.0, power_scale, _pole_stored_speed) # rise - global_position.y += _attached_pole.rise_speed * delta + global_position.y += lerpf(0.0, _attached_pole.rise_speed, speed_factor) * delta global_position.y = clampf( global_position.y, _attached_pole.global_position.y, @@ -182,7 +184,7 @@ func _process_pole_spin(delta: float) -> void: ) # spin - _pole_angle += _attached_pole.spin_speed * delta + _pole_angle += lerpf(0.0, _attached_pole.spin_speed, speed_factor) * delta var pole_xz = flatten_vector(_attached_pole.global_position) var self_dir = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle) var self_xz = pole_xz + self_dir * _attached_pole.offset @@ -194,6 +196,7 @@ func _end_pole_spin() -> void: var impulse = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle) * _pole_stored_speed velocity.x = impulse.x velocity.z = impulse.z + floor_snap_length = 0.1 #endregion diff --git a/objects/canny_cat.gd.uid b/objects/canny_cat.gd.uid new file mode 100644 index 0000000..10cf52c --- /dev/null +++ b/objects/canny_cat.gd.uid @@ -0,0 +1 @@ +uid://b04ridmyf6571 diff --git a/objects/canny_cat.tscn b/objects/canny_cat.tscn index 019bfee..2140f9b 100644 --- a/objects/canny_cat.tscn +++ b/objects/canny_cat.tscn @@ -1,17 +1,17 @@ [gd_scene load_steps=20 format=3 uid="uid://cybm74xwbsivx"] [ext_resource type="Texture2D" uid="uid://3i17aqnrspma" path="res://assets/textures/player/canny.png" id="1_cp4br"] -[ext_resource type="Script" path="res://objects/canny_cat.gd" id="1_twfq8"] +[ext_resource type="Script" uid="uid://b04ridmyf6571" path="res://objects/canny_cat.gd" id="1_twfq8"] [ext_resource type="Texture2D" uid="uid://bqg7vd5r7w8tm" path="res://assets/textures/shadow.png" id="2_fwt6m"] [ext_resource type="AudioStream" uid="uid://7u8a6osl4buo" path="res://assets/sounds/player/grab.ogg" id="4_hojxu"] -[ext_resource type="Script" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"] -[ext_resource type="Script" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"] +[ext_resource type="Script" uid="uid://dsjiox4ahsvqn" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"] +[ext_resource type="Script" uid="uid://1csmnvxpk1j3" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"] [ext_resource type="AudioStream" uid="uid://dis5fg68ese7r" path="res://assets/sounds/player/cancel.ogg" id="5_v6u4q"] [ext_resource type="AudioStream" uid="uid://dnyjfcq8m2r4f" path="res://assets/sounds/player/hit.ogg" id="6_a7neg"] -[ext_resource type="Script" path="res://addons/godot_state_charts/atomic_state.gd" id="6_bu01i"] +[ext_resource type="Script" uid="uid://kctk5uejlaoh" path="res://addons/godot_state_charts/atomic_state.gd" id="6_bu01i"] [ext_resource type="AudioStream" uid="uid://bv4plfa1oj3tf" path="res://assets/sounds/player/wall_bump.ogg" id="7_8ee3y"] -[ext_resource type="Script" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"] -[ext_resource type="Script" path="res://addons/godot_state_charts/expression_guard.gd" id="8_d5slg"] +[ext_resource type="Script" uid="uid://clasig0wood63" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"] +[ext_resource type="Script" uid="uid://m32s76pjucg7" path="res://addons/godot_state_charts/expression_guard.gd" id="8_d5slg"] [sub_resource type="Gradient" id="Gradient_u5ds4"] interpolation_mode = 2 @@ -52,7 +52,7 @@ resource_name = "Not Moving" script = ExtResource("8_d5slg") expression = "velocity.is_zero_approx()" -[node name="CannyCat" type="CharacterBody3D" node_paths=PackedStringArray("state_chart", "graphics", "power_indicator", "camera_arm", "collision_shape")] +[node name="CannyCat" type="CharacterBody3D" node_paths=PackedStringArray("state_chart", "graphics", "power_indicator", "camera_arm", "collision_shape") groups=["chaser_target"]] process_priority = -100 process_physics_priority = -100 collision_layer = 16 @@ -87,7 +87,7 @@ shape = SubResource("SphereShape3D_4o01j") [node name="Graphics" type="Node3D" parent="."] [node name="CannySprite" type="Sprite3D" parent="Graphics"] -pixel_size = 0.0156 +pixel_size = 0.0313 billboard = 1 texture_filter = 0 texture = ExtResource("1_cp4br") @@ -136,7 +136,7 @@ mesh = SubResource("CylinderMesh_b16dl") [node name="CameraArm" type="SpringArm3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, 0, 0, 0) collision_mask = 8 -spring_length = 8.0 +spring_length = 7.0 [node name="Camera3D" type="Camera3D" parent="CameraArm"] current = true @@ -213,9 +213,9 @@ delay_in_seconds = "0.0" [connection signal="charge_canceled" from="." to="Sounds/ChargeCancel" method="play"] [connection signal="shot" from="." to="Sounds/Shoot" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Idle" to="." method="_apply_gravity"] -[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"] -[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"] [connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_apply_gravity"] +[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"] +[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"] [connection signal="state_entered" from="StateChart/Root/Charging" to="." method="_start_charge"] [connection signal="state_entered" from="StateChart/Root/Charging" to="Sounds/ChargeStart" method="play"] [connection signal="state_exited" from="StateChart/Root/Charging" to="." method="_end_charge"] diff --git a/objects/goal_post.gd.uid b/objects/goal_post.gd.uid new file mode 100644 index 0000000..5e0ceeb --- /dev/null +++ b/objects/goal_post.gd.uid @@ -0,0 +1 @@ +uid://dbec3pvrmeehx diff --git a/objects/goal_post.tscn b/objects/goal_post.tscn index d82a81e..553b938 100644 --- a/objects/goal_post.tscn +++ b/objects/goal_post.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=17 format=3 uid="uid://cdpgby3r6xe4n"] -[ext_resource type="Script" path="res://objects/goal_post.gd" id="1_08x2x"] -[ext_resource type="Shader" path="res://assets/shaders/flag.gdshader" id="2_xbid5"] +[ext_resource type="Script" uid="uid://dbec3pvrmeehx" path="res://objects/goal_post.gd" id="1_08x2x"] +[ext_resource type="Shader" uid="uid://bk3ssuhuvbahl" path="res://assets/shaders/flag.gdshader" id="2_xbid5"] [ext_resource type="Texture2D" uid="uid://cyxkbck2gs2wt" path="res://assets/textures/objects/goal_hole.png" id="3_yg6kd"] -[ext_resource type="Shader" path="res://assets/shaders/confetti_spin.gdshader" id="4_2tajh"] +[ext_resource type="Shader" uid="uid://bwh16agcnae24" path="res://assets/shaders/confetti_spin.gdshader" id="4_2tajh"] [sub_resource type="Gradient" id="Gradient_lo531"] interpolation_mode = 1 diff --git a/objects/sand_pit.gd.uid b/objects/sand_pit.gd.uid new file mode 100644 index 0000000..0abddf8 --- /dev/null +++ b/objects/sand_pit.gd.uid @@ -0,0 +1 @@ +uid://b7vjcer1ah68k diff --git a/objects/sand_pit.tscn b/objects/sand_pit.tscn index a631116..ad04c5a 100644 --- a/objects/sand_pit.tscn +++ b/objects/sand_pit.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=5 format=3 uid="uid://bfic5n608nc5j"] -[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"] [ext_resource type="Texture2D" uid="uid://djx2x3jjn01w2" path="res://assets/textures/world/sand.png" id="1_yg8om"] -[ext_resource type="Script" path="res://objects/sand_pit.gd" id="2_vtyum"] +[ext_resource type="Script" uid="uid://b7vjcer1ah68k" path="res://objects/sand_pit.gd" id="2_vtyum"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_7s0pr"] render_priority = 0 shader = ExtResource("1_2mr0t") +shader_parameter/albedo_texture = ExtResource("1_yg8om") shader_parameter/horizontal_uv_offset = Vector2(0, 0) shader_parameter/uv_scale = Vector2(1, 1) -shader_parameter/albedo_texture = ExtResource("1_yg8om") [node name="SandPit" type="CSGPolygon3D" node_paths=PackedStringArray("collision_polygon")] process_physics_priority = 100 diff --git a/objects/skull.gd.uid b/objects/skull.gd.uid new file mode 100644 index 0000000..cbaee0e --- /dev/null +++ b/objects/skull.gd.uid @@ -0,0 +1 @@ +uid://cg1ki7xt2uvjl diff --git a/objects/skull.tscn b/objects/skull.tscn index 8dbfe54..0a14a59 100644 --- a/objects/skull.tscn +++ b/objects/skull.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=3 uid="uid://b4a8aif3iigdw"] -[ext_resource type="Script" path="res://objects/skull.gd" id="1_ledhy"] +[ext_resource type="Script" uid="uid://cg1ki7xt2uvjl" path="res://objects/skull.gd" id="1_ledhy"] [ext_resource type="PackedScene" uid="uid://46kyrtlb6b0a" path="res://assets/models/enemies/boney.glb" id="2_lwsb0"] [ext_resource type="AudioStream" uid="uid://cgotekctoej7m" path="res://assets/sounds/enemies/skull_death.ogg" id="3_6ybas"] diff --git a/objects/uncanny_cat.gd b/objects/uncanny_cat.gd new file mode 100644 index 0000000..baa8cff --- /dev/null +++ b/objects/uncanny_cat.gd @@ -0,0 +1,26 @@ +extends CharacterBody3D + + +@export var acceleration: float +@export var speed: float +@export var vertical_speed: float + + +func _physics_process(delta: float) -> void: + var target: Node3D = null + for node in get_tree().get_nodes_in_group(&"chaser_target"): + if node is Node3D: + if not target or ( + global_position.distance_squared_to(node.global_position) < + global_position.distance_squared_to(target.global_position) + ): + target = node + + if target: + velocity += global_position.direction_to(target.global_position) * acceleration * delta + velocity = velocity.limit_length(speed) + velocity.y = (target.global_position.y - global_position.y) * vertical_speed + + var col = move_and_collide(velocity * delta) + if col: + velocity = velocity.bounce(col.get_normal()) diff --git a/objects/uncanny_cat.gd.uid b/objects/uncanny_cat.gd.uid new file mode 100644 index 0000000..d50f6ae --- /dev/null +++ b/objects/uncanny_cat.gd.uid @@ -0,0 +1 @@ +uid://1mhmcaluavhg diff --git a/objects/uncanny_cat.tscn b/objects/uncanny_cat.tscn new file mode 100644 index 0000000..c36c2ad --- /dev/null +++ b/objects/uncanny_cat.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=6 format=3 uid="uid://bndtsprfwrkau"] + +[ext_resource type="Script" uid="uid://1mhmcaluavhg" path="res://objects/uncanny_cat.gd" id="1_bsm3e"] +[ext_resource type="Texture2D" uid="uid://c2a63sfnh6il" path="res://assets/textures/chaser/uncanny.png" id="2_eotxf"] + +[sub_resource type="SphereShape3D" id="SphereShape3D_eotxf"] +radius = 0.45 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_eotxf"] +transparency = 3 +alpha_hash_scale = 1.0 +alpha_antialiasing_mode = 0 +no_depth_test = true +shading_mode = 0 +albedo_color = Color(1, 0, 0, 0.501961) +albedo_texture = ExtResource("2_eotxf") +texture_filter = 0 +billboard_mode = 1 + +[sub_resource type="SphereShape3D" id="SphereShape3D_ixuei"] + +[node name="UncannyCat" type="CharacterBody3D"] +collision_layer = 32 +collision_mask = 32 +motion_mode = 1 +script = ExtResource("1_bsm3e") +acceleration = 0.6 +speed = 1.5 +vertical_speed = 0.5 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("SphereShape3D_eotxf") + +[node name="Sprite3D" type="Sprite3D" parent="."] +material_overlay = SubResource("StandardMaterial3D_eotxf") +pixel_size = 0.0313 +billboard = 1 +texture_filter = 0 +texture = ExtResource("2_eotxf") + +[node name="PlayerDetector" type="Area3D" parent="."] +collision_layer = 0 +collision_mask = 16 +monitorable = false + +[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"] +shape = SubResource("SphereShape3D_ixuei") diff --git a/objects/waterman_pole.gd.uid b/objects/waterman_pole.gd.uid new file mode 100644 index 0000000..0ca7413 --- /dev/null +++ b/objects/waterman_pole.gd.uid @@ -0,0 +1 @@ +uid://gqdkco5gmxpu diff --git a/objects/waterman_pole.tscn b/objects/waterman_pole.tscn index 8eb7da2..03a030a 100644 --- a/objects/waterman_pole.tscn +++ b/objects/waterman_pole.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://13qlrib2dk36"] -[ext_resource type="Script" path="res://objects/waterman_pole.gd" id="1_8whes"] -[ext_resource type="Shader" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"] +[ext_resource type="Script" uid="uid://gqdkco5gmxpu" path="res://objects/waterman_pole.gd" id="1_8whes"] +[ext_resource type="Shader" uid="uid://2vowejmm8ams" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_2dh7w"] render_priority = 0 diff --git a/project.godot b/project.godot index 6fdb7e4..391a0aa 100644 --- a/project.godot +++ b/project.godot @@ -11,8 +11,8 @@ config_version=5 [application] config/name="ucg-3d" -run/main_scene="res://test_scene.tscn" -config/features=PackedStringArray("4.3", "GL Compatibility") +run/main_scene="uid://bkas0lj53glkn" +config/features=PackedStringArray("4.4", "GL Compatibility") config/icon="res://icon.svg" [autoload] @@ -36,6 +36,7 @@ import/blender/enabled=false [global_group] friction_floor="" +chaser_target="Targets that chaser enemies will lock on to." [input] @@ -51,6 +52,7 @@ charge_shot={ 3d_physics/layer_2="friction" 3d_physics/layer_3="water" 3d_physics/layer_5="player" +3d_physics/layer_6="uncanny" [rendering]