commit 42455a84d63915eeb67e972d0372cf7df85d697c Author: qwsdcvghyu89 <61093706+qwsdcvghyu89@users.noreply.github.com> Date: Fri Jun 5 22:43:54 2026 +1000 Initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8d63706 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +charset = utf-8 + +[*.cs] +csharp_new_line_before_open_brace = none +csharp_new_line_before_else = false +csharp_new_line_before_catch = false +csharp_new_line_before_finally = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/WrplatGodot.csproj b/WrplatGodot.csproj new file mode 100644 index 0000000..8c1e394 --- /dev/null +++ b/WrplatGodot.csproj @@ -0,0 +1,7 @@ + + + net8.0 + net9.0 + true + + \ No newline at end of file diff --git a/WrplatGodot.sln b/WrplatGodot.sln new file mode 100644 index 0000000..80efdd0 --- /dev/null +++ b/WrplatGodot.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WrplatGodot", "WrplatGodot.csproj", "{39375637-0001-4516-B726-4D840C46823C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + ExportDebug|Any CPU = ExportDebug|Any CPU + ExportRelease|Any CPU = ExportRelease|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {39375637-0001-4516-B726-4D840C46823C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39375637-0001-4516-B726-4D840C46823C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39375637-0001-4516-B726-4D840C46823C}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU + {39375637-0001-4516-B726-4D840C46823C}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU + {39375637-0001-4516-B726-4D840C46823C}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU + {39375637-0001-4516-B726-4D840C46823C}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU + EndGlobalSection +EndGlobal diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..ee34915 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buogmgg3p5soy" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/objects/animation/frames/player.tres b/objects/animation/frames/player.tres new file mode 100644 index 0000000..e4707ad --- /dev/null +++ b/objects/animation/frames/player.tres @@ -0,0 +1,66 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://doxc4pl5hvs6k"] + +[ext_resource type="Texture2D" uid="uid://bv4gsgya7wp4d" path="res://sprites/atlas/demoman_walking.png" id="1_1t22f"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_c2ath"] +atlas = ExtResource("1_1t22f") +region = Rect2(0, 0, 32, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gwfnt"] +atlas = ExtResource("1_1t22f") +region = Rect2(0, 64, 32, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kdeld"] +atlas = ExtResource("1_1t22f") +region = Rect2(32, 0, 32, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_a1t44"] +atlas = ExtResource("1_1t22f") +region = Rect2(32, 64, 32, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_k551e"] +atlas = ExtResource("1_1t22f") +region = Rect2(64, 0, 32, 64) + +[resource] +animations = [{ +"frames": [], +"loop": true, +"name": &"idle", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"jump", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"limp", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"run", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_c2ath") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gwfnt") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kdeld") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_a1t44") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_k551e") +}], +"loop": true, +"name": &"walk", +"speed": 5.0 +}] diff --git a/objects/camera attributes/physcam_attr.tres b/objects/camera attributes/physcam_attr.tres new file mode 100644 index 0000000..912a01c --- /dev/null +++ b/objects/camera attributes/physcam_attr.tres @@ -0,0 +1,3 @@ +[gd_resource type="CameraAttributesPhysical" format=3 uid="uid://csr0l6kulxsog"] + +[resource] diff --git a/objects/compositor/default_compositor.tres b/objects/compositor/default_compositor.tres new file mode 100644 index 0000000..31481b2 --- /dev/null +++ b/objects/compositor/default_compositor.tres @@ -0,0 +1,3 @@ +[gd_resource type="Compositor" format=3 uid="uid://kk12nt7g2oqg"] + +[resource] diff --git a/objects/environment/default.tres b/objects/environment/default.tres new file mode 100644 index 0000000..31c1162 --- /dev/null +++ b/objects/environment/default.tres @@ -0,0 +1,3 @@ +[gd_resource type="Environment" format=3 uid="uid://b3ef577lsk2jh"] + +[resource] diff --git a/objects/scenes/demo/demo.tscn b/objects/scenes/demo/demo.tscn new file mode 100644 index 0000000..4c877e7 --- /dev/null +++ b/objects/scenes/demo/demo.tscn @@ -0,0 +1,62 @@ +[gd_scene format=4 uid="uid://r2lb1ommvj6u"] + +[ext_resource type="TileSet" uid="uid://bk7cbdppa3j6a" path="res://sprites/tilesets/pool.tres" id="1_t7kht"] +[ext_resource type="Environment" uid="uid://b3ef577lsk2jh" path="res://objects/environment/default.tres" id="2_44w6l"] +[ext_resource type="Script" uid="uid://biicefgcvdc2x" path="res://src/components/PlayerPhysicsController.cs" id="2_oekxy"] +[ext_resource type="SpriteFrames" uid="uid://doxc4pl5hvs6k" path="res://objects/animation/frames/player.tres" id="2_wq5k4"] +[ext_resource type="CameraAttributesPhysical" uid="uid://csr0l6kulxsog" path="res://objects/camera attributes/physcam_attr.tres" id="3_wq5k4"] +[ext_resource type="Compositor" uid="uid://kk12nt7g2oqg" path="res://objects/compositor/default_compositor.tres" id="4_oekxy"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_oekxy"] +radius = 11.0 +height = 50.0 + +[node name="Node2D" type="Node2D" unique_id=1943007414] + +[node name="Tiles" type="Node2D" parent="." unique_id=621894136] + +[node name="Static" type="Node2D" parent="Tiles" unique_id=897407461] + +[node name="TileMapLayer" type="TileMapLayer" parent="Tiles/Static" unique_id=1445881483] +texture_filter = 1 +tile_map_data = PackedByteArray("AAAAAAIAAAACAAAAAAABAAIAAAAAAAAAAAACAAIAAAACAAAAAAADAAIAAAABAAAAAAAEAAIAAAAAAAAAAAAFAAIAAAABAAEAAAAGAAIAAAADAAAAAAAHAAIAAAAAAAEAAAAIAAIAAAADAAAAAAAIAAMAAAACAAAAAAAHAAMAAAACAAEAAAAGAAMAAAADAAAAAAAFAAMAAAABAAAAAAAEAAMAAAADAAAAAAADAAMAAAACAAEAAAACAAMAAAAAAAEAAAABAAMAAAAAAAEAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAABAAQAAAADAAEAAAACAAQAAAADAAEAAAADAAQAAAABAAAAAAAEAAQAAAABAAAAAAAFAAQAAAABAAAAAAAGAAQAAAACAAEAAAAHAAQAAAAAAAEAAAAIAAQAAAAAAAEAAAAHAAUAAAACAAEAAAAGAAUAAAAAAAAAAAAFAAUAAAACAAAAAAAEAAUAAAAAAAEAAAADAAUAAAADAAAAAAACAAUAAAADAAAAAAABAAUAAAAAAAEAAAAAAAUAAAAAAAEAAAAIAAUAAAAAAAAAAAAOAAIAAAACAAAAAAAPAAIAAAACAAEAAAAQAAIAAAADAAEAAAARAAIAAAACAAAAAAASAAIAAAACAAEAAAATAAIAAAABAAAAAAAUAAIAAAADAAAAAAAVAAIAAAADAAAAAAAWAAIAAAACAAEAAAAXAAIAAAADAAAAAAAYAAIAAAACAAAAAAAZAAIAAAACAAEAAAAaAAIAAAADAAEAAAAbAAIAAAADAAEAAAAcAAIAAAAAAAAAAAAdAAIAAAAAAAAAAAAeAAIAAAAAAAAAAAAfAAIAAAAAAAEAAAAgAAIAAAACAAEAAAAhAAIAAAAAAAEAAAAiAAIAAAABAAAAAAAjAAIAAAADAAEAAAAkAAIAAAACAAEAAAAlAAIAAAAAAAEAAAAmAAIAAAAAAAAAAAAnAAIAAAACAAAAAAAoAAIAAAABAAEAAAApAAIAAAACAAAAAAAqAAIAAAAAAAAAAAArAAIAAAABAAAAAAAsAAIAAAACAAAAAAAtAAIAAAAAAAAAAAAuAAIAAAACAAEAAAAvAAIAAAACAAAAAAAwAAIAAAABAAAAAAAxAAIAAAABAAEAAAAyAAIAAAAAAAEAAAAzAAIAAAAAAAEAAAA0AAIAAAADAAEAAAA1AAIAAAADAAEAAAA2AAIAAAAAAAAAAAA3AAIAAAABAAAAAAA4AAIAAAABAAEAAAA5AAIAAAADAAEAAAA6AAIAAAABAAEAAAA7AAIAAAADAAAAAAA8AAIAAAACAAEAAAA9AAIAAAABAAEAAAA+AAIAAAAAAAAAAAA/AAIAAAADAAAAAABAAAIAAAABAAEAAABBAAIAAAABAAAAAABCAAIAAAABAAAAAABDAAIAAAACAAAAAABEAAIAAAAAAAAAAABFAAIAAAAAAAAAAABGAAIAAAACAAAAAABHAAIAAAACAAAAAABIAAIAAAACAAEAAABJAAIAAAAAAAAAAABKAAIAAAACAAEAAABLAAIAAAABAAAAAABMAAIAAAAAAAAAAABNAAIAAAACAAEAAABOAAIAAAABAAAAAABPAAIAAAAAAAEAAABQAAIAAAAAAAAAAABRAAIAAAAAAAEAAABSAAIAAAABAAEAAABTAAIAAAADAAEAAABUAAIAAAABAAAAAABVAAIAAAABAAAAAABWAAIAAAABAAAAAABXAAIAAAACAAAAAABYAAIAAAADAAAAAABZAAIAAAACAAAAAABaAAIAAAADAAEAAABbAAIAAAAAAAAAAABcAAIAAAABAAAAAABdAAIAAAABAAEAAABdAAEAAAADAAAAAABdAAAAAAACAAAAAABdAP//AAAAAAEAAABdAP7/AAACAAEAAABdAP3/AAACAAAAAABdAPz/AAADAAEAAABdAPv/AAAAAAEAAABdAPr/AAABAAAAAABdAPn/AAAAAAAAAABdAPL/AAADAAEAAABdAPH/AAADAAEAAABdAPD/AAABAAEAAABdAO//AAACAAAAAABdAPP/AAAAAAAAAABdAPT/AAACAAAAAABdAPX/AAAAAAEAAABdAPb/AAADAAEAAABdAPf/AAADAAAAAABdAPj/AAABAAAAAABdAO7/AAACAAAAAABdAOj/AAABAAAAAABdAOf/AAABAAAAAABdAOb/AAAAAAEAAABdAOX/AAAAAAAAAABdAOT/AAADAAAAAABdAOn/AAABAAEAAABdAO3/AAAAAAEAAABdAOz/AAAAAAAAAABdAOv/AAACAAAAAABdAOr/AAACAAAAAAD//wIAAAAAAAEAAAD+/wIAAAADAAAAAAD9/wIAAAABAAAAAAD8/wIAAAABAAAAAAD7/wIAAAADAAEAAAD6/wIAAAAAAAAAAAD5/wIAAAABAAEAAAD4/wIAAAABAAAAAAD3/wIAAAADAAEAAAD2/wIAAAAAAAEAAAD1/wIAAAACAAAAAAD0/wIAAAAAAAEAAADz/wIAAAAAAAEAAADy/wIAAAACAAEAAADx/wIAAAACAAAAAADw/wIAAAAAAAAAAADv/wIAAAABAAAAAADu/wIAAAABAAAAAADt/wIAAAABAAAAAADs/wIAAAADAAEAAADr/wIAAAADAAAAAADq/wIAAAACAAAAAADp/wIAAAADAAEAAADo/wIAAAAAAAAAAADn/wIAAAAAAAAAAADn/wEAAAADAAAAAADn/wAAAAAAAAAAAADn////AAAAAAEAAADn//7/AAAAAAAAAADn//3/AAADAAEAAADn//z/AAAAAAEAAADn//v/AAAAAAEAAADn//r/AAABAAEAAADn//n/AAACAAAAAADn//j/AAABAAEAAADn//f/AAADAAAAAADn//b/AAADAAEAAADn//X/AAADAAAAAADn//T/AAABAAAAAADn/+r/AAADAAEAAADn/+n/AAAAAAAAAADn/+j/AAACAAAAAADn/+f/AAACAAEAAADn/+b/AAADAAAAAADn/+X/AAACAAEAAADn/+T/AAAAAAEAAADn/+P/AAADAAAAAADn/+v/AAACAAEAAADn/+z/AAABAAEAAADn/+3/AAAAAAAAAADn/+7/AAABAAEAAADn/+//AAABAAAAAADn//D/AAABAAAAAADn//H/AAADAAEAAADn//L/AAAAAAEAAADn//P/AAACAAEAAAAOAAMAAAACAAEAAAAOAAQAAAADAAEAAAAOAAUAAAAAAAAAAAAOAAYAAAADAAAAAAAOAAcAAAADAAEAAAAPAAMAAAAAAAAAAAAPAAQAAAABAAAAAAAPAAUAAAACAAAAAAAPAAYAAAAAAAEAAAAPAAcAAAACAAAAAAAQAAMAAAABAAAAAAAQAAQAAAABAAEAAAAQAAUAAAABAAEAAAAQAAYAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAABAAEAAAANAAMAAAADAAEAAAAMAAIAAAABAAAAAAALAAIAAAAAAAAAAAAKAAIAAAACAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAABAAAAAAAKAAMAAAACAAEAAAALAAMAAAAAAAAAAAAMAAMAAAACAAEAAAANAAIAAAACAAEAAAALAAQAAAAAAAAAAAAKAAQAAAACAAEAAAAMAAQAAAACAAAAAAANAAQAAAABAAAAAAAJAAQAAAABAAEAAAAJAAUAAAADAAEAAAAKAAUAAAACAAAAAAALAAUAAAADAAAAAAAMAAUAAAACAAEAAAANAAUAAAACAAAAAAAFAAYAAAAAAAEAAAAGAAYAAAABAAAAAAAHAAYAAAAAAAEAAAAIAAYAAAACAAEAAAAJAAYAAAADAAAAAAAKAAYAAAAAAAEAAAALAAYAAAAAAAEAAAAMAAYAAAAAAAEAAAANAAYAAAABAAEAAAAHAAcAAAACAAAAAAAIAAcAAAABAAAAAAAJAAcAAAADAAEAAAAKAAcAAAABAAEAAAALAAcAAAADAAAAAAAMAAcAAAABAAAAAAANAAcAAAACAAAAAAAMAAgAAAACAAAAAAANAAgAAAACAAEAAAAOAAgAAAABAAEAAAALAAgAAAACAAAAAAAKAAgAAAABAAEAAAAHAAgAAAADAAEAAAAGAAgAAAADAAAAAAAIAAgAAAACAAEAAAAJAAgAAAABAAEAAAAPAAgAAAABAAAAAAAFAAcAAAAAAAEAAAAEAAcAAAACAAAAAAAEAAYAAAAAAAEAAAADAAYAAAADAAAAAAACAAYAAAABAAEAAAABAAYAAAAAAAEAAAAAAAYAAAACAAAAAAAAAAcAAAAAAAAAAAD//wcAAAABAAAAAAAAAAgAAAAAAAEAAAABAAgAAAAAAAAAAAACAAgAAAABAAEAAAABAAcAAAACAAAAAAACAAcAAAACAAAAAAADAAcAAAACAAEAAAAGAAcAAAACAAAAAAAFAAgAAAAAAAAAAAAEAAgAAAAAAAEAAAADAAgAAAACAAAAAAAHAAEAAAACAAAAAAAHAAAAAAACAAAAAAAHAP//AAAAAAEAAAAHAP7/AAABAAEAAAAHAP3/AAACAAAAAAAHAPz/AAACAAAAAAAIAPz/AAAAAAEAAAAIAP3/AAACAAEAAAAIAP7/AAABAAAAAAAIAP//AAAAAAAAAAAIAAAAAAABAAEAAAAIAAEAAAABAAEAAAAEAP//AAACAAEAAAAEAAAAAAAAAAEAAAAEAAEAAAAAAAAAAAADAAEAAAAAAAEAAAADAAAAAAABAAAAAAADAP//AAAAAAEAAAALAPr/AAABAAAAAAAMAPr/AAADAAAAAAANAPr/AAABAAAAAAAOAPr/AAAAAAAAAAAPAPr/AAAAAAAAAAAQAPr/AAABAAAAAAARAPr/AAABAAAAAAARAPv/AAACAAAAAAAQAPv/AAACAAAAAAAPAPv/AAADAAEAAAAOAPv/AAACAAAAAAANAPv/AAACAAAAAAAMAPv/AAACAAEAAAALAPv/AAAAAAEAAAALAPz/AAACAAEAAAALAP3/AAABAAAAAAALAP7/AAABAAEAAAALAP//AAABAAEAAAALAAAAAAAAAAAAAAAMAPz/AAACAAAAAAAMAP3/AAAAAAAAAAAMAP7/AAABAAAAAAAMAP//AAACAAEAAAAMAAAAAAABAAAAAAAMAAEAAAADAAEAAAALAAEAAAABAAEAAAANAPz/AAABAAEAAAANAP3/AAACAAAAAAANAP7/AAABAAEAAAANAP//AAACAAAAAAANAAAAAAABAAAAAAANAAEAAAAAAAAAAAAOAPz/AAABAAEAAAAOAP3/AAACAAEAAAAOAP7/AAAAAAEAAAAOAP//AAAAAAAAAAAOAAAAAAACAAAAAAAOAAEAAAADAAEAAAAPAPz/AAAAAAEAAAAPAP3/AAAAAAAAAAAPAP7/AAAAAAEAAAAPAP//AAAAAAEAAAAPAAAAAAABAAAAAAAPAAEAAAADAAEAAAAQAP3/AAABAAAAAAAQAP7/AAACAAEAAAAQAP//AAABAAEAAAAQAAAAAAABAAEAAAAQAPz/AAABAAEAAAARAPz/AAACAAAAAAARAP3/AAADAAEAAAARAP7/AAAAAAEAAAARAP//AAACAAAAAAARAAAAAAADAAEAAAAQAAEAAAABAAEAAAARAAEAAAACAAEAAAAHAPH/AAABAAEAAAAHAPL/AAADAAEAAAAHAPP/AAADAAAAAAAHAPT/AAACAAAAAAAHAPX/AAACAAEAAAAHAPb/AAABAAAAAAAHAPf/AAADAAAAAAAIAPH/AAABAAAAAAAIAPL/AAACAAAAAAAIAPP/AAACAAAAAAAIAPT/AAAAAAEAAAAIAPX/AAADAAEAAAAIAPb/AAAAAAEAAAAIAPf/AAABAAAAAAALAPH/AAADAAEAAAALAPL/AAAAAAEAAAALAPP/AAADAAEAAAALAPT/AAACAAAAAAALAPX/AAABAAAAAAALAPb/AAACAAEAAAALAPf/AAACAAAAAAAMAPH/AAACAAEAAAAMAPL/AAABAAAAAAAMAPP/AAAAAAAAAAAMAPT/AAADAAEAAAAMAPX/AAACAAEAAAAMAPb/AAACAAEAAAAMAPf/AAADAAEAAAD+//H/AAAAAAAAAAD+//L/AAADAAEAAAD///H/AAADAAAAAAD///L/AAADAAAAAAAAAPH/AAABAAAAAAAAAPL/AAABAAEAAAABAPH/AAABAAEAAAABAPL/AAACAAEAAAACAPH/AAADAAAAAAACAPL/AAABAAEAAAADAPH/AAABAAAAAAADAPL/AAACAAEAAAAEAPH/AAABAAEAAAAEAPL/AAADAAAAAAAFAPH/AAACAAAAAAAFAPL/AAABAAEAAAAGAPH/AAACAAEAAAAGAPL/AAABAAAAAAD9//j/AAAAAAEAAAD9//n/AAACAAAAAAD+//j/AAAAAAAAAAD+//n/AAADAAEAAAD///j/AAAAAAAAAAD///n/AAABAAEAAAAAAPj/AAAAAAAAAAAAAPn/AAACAAEAAAD7//H/AAAAAAAAAAD7//L/AAAAAAEAAAD8//H/AAAAAAEAAAD8//L/AAABAAAAAAD9//H/AAADAAEAAAD9//L/AAAAAAEAAAD5//H/AAAAAAAAAAD5//L/AAACAAAAAAD5//P/AAABAAEAAAD5//T/AAABAAEAAAD5//X/AAAAAAAAAAD5//b/AAABAAAAAAD5//f/AAAAAAAAAAD5//j/AAADAAEAAAD5//n/AAABAAEAAAD6//H/AAAAAAEAAAD6//L/AAAAAAEAAAD6//P/AAAAAAAAAAD6//T/AAACAAEAAAD6//X/AAACAAAAAAD6//b/AAADAAAAAAD6//f/AAABAAEAAAD6//j/AAAAAAEAAAD6//n/AAADAAEAAAD5//r/AAAAAAEAAAD5//v/AAABAAAAAAD5//z/AAADAAEAAAD5//3/AAADAAEAAAD5//7/AAACAAEAAAD5////AAABAAEAAAD6//r/AAAAAAEAAAD6//v/AAABAAEAAAD6//z/AAADAAEAAAD6//3/AAACAAAAAAD6//7/AAAAAAEAAAD6////AAADAAEAAAD9/wAAAAAEAAAAAAD9/wEAAAAEAAEAAAD///b/AAAEAAAAAAD///f/AAAEAAEAAAAOAPn/AAAFAAEAAAAJAPb/AAAFAAAAAAAFAAEAAAAFAAAAAGAGAAEAAAAFAAAAAGAJAAEAAAAFAAAAAGAKAAEAAAAFAAAAAGA=") +tile_set = ExtResource("1_t7kht") + +[node name="Player" type="Node2D" parent="." unique_id=868418175] + +[node name="CharacterBody2D" type="CharacterBody2D" parent="Player" unique_id=1131700263 node_paths=PackedStringArray("DebugTextLabel")] +position = Vector2(1, 0) +safe_margin = 0.16 +script = ExtResource("2_oekxy") +FloatingMovePenalty = 0.8 +JumpStrengthDecay = 4.0 +MovementDecay = 0.01 +MovementScale = 32.0 +JumpScale = 256.0 +DebugTextLabel = NodePath("Label") +Gravity = 9.81 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Player/CharacterBody2D" unique_id=1846234720] +position = Vector2(0, 5) +shape = SubResource("CapsuleShape2D_oekxy") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Player/CharacterBody2D" unique_id=1137300855] +texture_filter = 1 +position = Vector2(0, 3) +sprite_frames = ExtResource("2_wq5k4") +animation = &"walk" + +[node name="Camera2D" type="Camera2D" parent="Player/CharacterBody2D" unique_id=1068565115] +zoom = Vector2(3, 3) +position_smoothing_enabled = true + +[node name="Label" type="Label" parent="Player/CharacterBody2D" unique_id=436935745] +offset_left = 22.0 +offset_top = -75.0 +offset_right = 139.0 +offset_bottom = 36.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1465666014] +environment = ExtResource("2_44w6l") +camera_attributes = ExtResource("3_wq5k4") +compositor = ExtResource("4_oekxy") diff --git a/objects/tilemap/tmj/demo.tmj b/objects/tilemap/tmj/demo.tmj new file mode 100644 index 0000000..482e174 --- /dev/null +++ b/objects/tilemap/tmj/demo.tmj @@ -0,0 +1,286 @@ +{ "compressionlevel":-1, + "height":40, + "infinite":false, + "layers":[ + { + "class":"static", + "data":[1, 3, 2, 17, 17, 17, 17, 3, 18, 2, 4, 20, 18, 1, 3, 2, 19, 17, 1, 1, 4, 17, 1, 17, 3, 19, 2, 3, 18, 19, + 17, 18, 20, 18, 1, 20, 2, 20, 17, 18, 4, 17, 3, 1, 17, 2, 18, 3, 1, 4, 2, 2, 2, 2, 1, 2, 17, 19, 3, 19, + 1, 20, 2, 19, 3, 1, 20, 18, 19, 17, 2, 18, 1, 2, 4, 4, 1, 3, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 2, + 20, 3, 1, 17, 1, 1, 4, 20, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 17, 0, 0, 0, 0, 0, 0, 0, 3, 2, + 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, + 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 18, + 18, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, + 1, 3, 19, 19, 19, 20, 1, 4, 4, 20, 0, 0, 19, 3, 3, 20, 4, 19, 4, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 17, + 19, 19, 3, 19, 18, 1, 4, 18, 4, 17, 0, 0, 19, 17, 2, 1, 1, 2, 17, 0, 0, 20, 2, 0, 0, 0, 0, 0, 2, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 1, 18, 4, 20, 0, 0, 0, 18, 19, 0, 0, 0, 0, 0, 20, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 19, 3, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 3, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 20, 17, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 19, 18, + 20, 1, 17, 2, 19, 3, 4, 2, 4, 19, 2, 17, 17, 19, 0, 0, 0, 0, 0, 0, 0, 2, 18, 0, 0, 0, 0, 0, 17, 1, + 17, 18, 4, 19, 3, 20, 1, 4, 1, 4, 19, 4, 3, 20, 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 4, 2, + 1, 18, 20, 2, 20, 17, 17, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 18, 4, + 18, 17, 2, 18, 1, 17, 20, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 17, 19, 20, 0, 0, 0, 0, 0, 17, 19, + 19, 2, 2, 19, 17, 1, 2, 19, 3, 18, 1, 19, 4, 3, 2, 2, 2, 2, 3, 3, 20, 19, 1, 0, 0, 0, 0, 0, 4, 20, + 2, 18, 19, 1, 20, 2, 4, 19, 2, 17, 3, 1, 17, 20, 4, 17, 4, 1, 19, 4, 3, 20, 18, 0, 0, 0, 0, 0, 1, 4, + 1, 4, 17, 17, 20, 19, 2, 2, 20, 20, 20, 20, 19, 4, 17, 20, 20, 17, 20, 1, 17, 3, 1, 0, 0, 0, 0, 0, 2, 4, + 19, 18, 3, 2, 20, 17, 2, 1, 4, 19, 1, 3, 1, 20, 2, 1, 19, 1, 20, 17, 17, 17, 19, 0, 0, 0, 0, 0, 2, 3, + 17, 0, 0, 18, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 18, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 17, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 18, 17, 0, 0, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 4, 19, 0, 0, 3, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 1, 3, 0, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 2, 3, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 3, 2, 0, 0, 17, 2, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 17, 2, 19, 17, 3, 0, 0, + 19, 0, 0, 18, 1, 0, 0, 17, 18, 0, 0, 0, 0, 0, 4, 19, 0, 0, 0, 0, 0, 0, 0, 19, 17, 3, 1, 20, 0, 0, + 18, 0, 0, 3, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 17, 0, 0, 0, + 20, 0, 0, 18, 18, 0, 0, 18, 3, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 3, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 19, 18, 20, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 3, 18, 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 3, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 20, 3, 0, 0, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 4, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 20, 18, 0, 0, 0, 0, 0, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 18, 17, 20, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 2, 19, 0, 0, 0, 0, 0, 4, 17, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 2, 20, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 20, 0, 0, 0, + 18, 2, 2, 3, 4, 0, 0, 18, 19, 0, 0, 0, 0, 0, 2, 18, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 4, 0, 0, 0, + 3, 18, 19, 1, 17, 0, 0, 19, 20, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 3, 17, 18, 0, 0, 0], + "height":40, + "id":1, + "name":"Static", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "class":"dynamic", + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":40, + "id":4, + "name":"Dynamic", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "class":"dynobj", + "draworder":"topdown", + "id":3, + "name":"Moving", + "objects":[ + { + "height":45, + "id":1, + "name":"rmv(0,4)", + "opacity":1, + "rotation":0, + "type":"", + "visible":true, + "width":104, + "x":585, + "y":745 + }, + { + "ellipse":true, + "height":70.6666666666667, + "id":4, + "name":"", + "opacity":1, + "rotation":0, + "type":"", + "visible":true, + "width":78, + "x":594, + "y":825.333333333333 + }, + { + "capsule":true, + "height":150, + "id":5, + "name":"", + "opacity":1, + "rotation":0, + "type":"", + "visible":true, + "width":150, + "x":580.182572614108, + "y":896.556547619048 + }, + { + "height":0, + "id":6, + "name":"", + "opacity":1, + "polygon":[ + { + "x":0, + "y":0 + }, + { + "x":62, + "y":-63.3333333333333 + }, + { + "x":126, + "y":0.666666666666742 + }, + { + "x":62, + "y":0.666666666666742 + }, + { + "x":62, + "y":32.6666666666667 + }, + { + "x":-2, + "y":32.6666666666667 + }], + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":738, + "y":767.333333333333 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":5, + "name":"Enemy", + "objects":[ + { + "height":0, + "id":3, + "name":"zombie", + "opacity":1, + "point":true, + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":768, + "y":864 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":40, + "id":2, + "name":"Decorations", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }], + "nextlayerid":6, + "nextobjectid":7, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.12.1", + "tileheight":32, + "tilesets":[ + { + "firstgid":1, + "source":"..\/..\/..\/..\/..\/..\/Documents\/wrplat\/pool.tsx" + }], + "tilewidth":32, + "type":"map", + "version":"1.10", + "width":30 +} \ No newline at end of file diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..19d7ae9 --- /dev/null +++ b/project.godot @@ -0,0 +1,60 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="WrplatGodot" +run/main_scene="uid://r2lb1ommvj6u" +config/features=PackedStringArray("4.6", "C#", "Forward Plus") +config/icon="res://icon.svg" + +[dotnet] + +project/assembly_name="WrplatGodot" + +[input] + +move_right={ +"deadzone": 0.2, +"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":4194321,"key_label":0,"unicode":0,"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.2, +"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":4194319,"key_label":0,"unicode":0,"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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +jump={ +"deadzone": 0.2, +"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +look_up={ +"deadzone": 0.2, +"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":4194320,"key_label":0,"unicode":0,"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +look_down={ +"deadzone": 0.2, +"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":4194322,"key_label":0,"unicode":0,"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":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) +] +} + +[physics] + +3d/physics_engine="Jolt Physics" + +[rendering] + +rendering_device/driver.windows="d3d12" diff --git a/sprites/atlas/demoman_walking.png b/sprites/atlas/demoman_walking.png new file mode 100644 index 0000000..a310461 Binary files /dev/null and b/sprites/atlas/demoman_walking.png differ diff --git a/sprites/atlas/demoman_walking.png.import b/sprites/atlas/demoman_walking.png.import new file mode 100644 index 0000000..89ceffe --- /dev/null +++ b/sprites/atlas/demoman_walking.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv4gsgya7wp4d" +path="res://.godot/imported/demoman_walking.png-9be9634caac03406a9e7d7741131c5f4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/atlas/demoman_walking.png" +dest_files=["res://.godot/imported/demoman_walking.png-9be9634caac03406a9e7d7741131c5f4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/sprites/atlas/pool.png b/sprites/atlas/pool.png new file mode 100644 index 0000000..a9d1c99 Binary files /dev/null and b/sprites/atlas/pool.png differ diff --git a/sprites/atlas/pool.png.import b/sprites/atlas/pool.png.import new file mode 100644 index 0000000..a6cfe24 --- /dev/null +++ b/sprites/atlas/pool.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgr7fx5emk037" +path="res://.godot/imported/pool.png-b13073abd16d5b4aa7f02817fa2d5dca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/atlas/pool.png" +dest_files=["res://.godot/imported/pool.png-b13073abd16d5b4aa7f02817fa2d5dca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/sprites/tilesets/pool.tres b/sprites/tilesets/pool.tres new file mode 100644 index 0000000..efa0322 --- /dev/null +++ b/sprites/tilesets/pool.tres @@ -0,0 +1,72 @@ +[gd_resource type="TileSet" format=3 uid="uid://bk7cbdppa3j6a"] + +[ext_resource type="Texture2D" uid="uid://cgr7fx5emk037" path="res://sprites/atlas/pool.png" id="1_otsg2"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_blkrv"] +texture = ExtResource("1_otsg2") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +1:0/0 = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +2:0/0 = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +3:0/0 = 0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +4:0/0 = 0 +5:0/0 = 0 +6:0/0 = 0 +7:0/0 = 0 +8:0/0 = 0 +9:0/0 = 0 +10:0/0 = 0 +11:0/0 = 0 +0:1/0 = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, -16, -16, 16, -16, 16, 16) +1:1/0 = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +2:1/0 = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +3:1/0 = 0 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, 16, 16, -16, -16, -16) +4:1/0 = 0 +5:1/0 = 0 +6:1/0 = 0 +7:1/0 = 0 +8:1/0 = 0 +9:1/0 = 0 +10:1/0 = 0 +11:1/0 = 0 +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +3:2/0 = 0 +4:2/0 = 0 +5:2/0 = 0 +6:2/0 = 0 +7:2/0 = 0 +8:2/0 = 0 +9:2/0 = 0 +10:2/0 = 0 +11:2/0 = 0 +0:3/0 = 0 +1:3/0 = 0 +2:3/0 = 0 +3:3/0 = 0 +4:3/0 = 0 +5:3/0 = 0 +6:3/0 = 0 +7:3/0 = 0 +8:3/0 = 0 +9:3/0 = 0 +10:3/0 = 0 +11:3/0 = 0 +0:4/0 = 0 +1:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 + +[resource] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_blkrv") diff --git a/sprites/tilesets/tsj/pool.tsj b/sprites/tilesets/tsj/pool.tsj new file mode 100644 index 0000000..dbfc4bd --- /dev/null +++ b/sprites/tilesets/tsj/pool.tsj @@ -0,0 +1,14 @@ +{ "columns":16, + "image":"..\/..\/..\/..\/..\/..\/Documents\/wrplat\/art\/tilesets\/pool.png", + "imageheight":512, + "imagewidth":512, + "margin":0, + "name":"pool", + "spacing":0, + "tilecount":256, + "tiledversion":"1.12.1", + "tileheight":32, + "tilewidth":32, + "type":"tileset", + "version":"1.10" +} \ No newline at end of file diff --git a/src/components/PlayerPhysicsController.cs b/src/components/PlayerPhysicsController.cs new file mode 100644 index 0000000..284c6b0 --- /dev/null +++ b/src/components/PlayerPhysicsController.cs @@ -0,0 +1,56 @@ +using Godot; +using System; +using System.Diagnostics; + +public partial class PlayerPhysicsController : CharacterBody2D { + [Export] + public float FloatingMovePenalty { get; set; } = 0.1f; + [Export] + public float FloatingJumpPenalty { get; set; } = 0.1f; + [Export] + public float JumpStrengthDecay { get; set; } = 2; + [Export] + public float MovementDecay { get; set; } = 2; + [Export] + public float MovementScale { get; set; } = 10; + [Export] + public float JumpScale { get; set; } = 12; + + [Export] + public Label DebugTextLabel { get; set; } + + [Export] + public float Gravity { get; set; } = 9.8f; + + private float _timeInFlight = 0; + + public override void _PhysicsProcess(double delta) { + var xAxis = Input.GetAxis("move_left", "move_right") * MovementScale; + var yAxis = Input.GetAxis("look_up", "look_down"); + var jumpStrength = -Input.GetActionStrength("jump") * JumpScale; + + var grounded = this.IsOnFloor(); + if (!grounded) { + xAxis *= FloatingMovePenalty; + jumpStrength *= FloatingJumpPenalty; + } + + if (grounded && jumpStrength < 0) + _timeInFlight = 0; + + jumpStrength *= Mathf.Exp(-JumpStrengthDecay * _timeInFlight); + xAxis *= Mathf.Exp(-MovementDecay * Mathf.Abs(Velocity.X)); + + + var moveVector = new Vector2(xAxis, Gravity + jumpStrength); + DebugTextLabel.Text = $"grounded: {grounded}\nmv: {moveVector}\njumpStrength: {jumpStrength}\ntimeInFlight: {_timeInFlight}"; + Velocity += moveVector; + MoveAndSlide(); + + if (!grounded) + _timeInFlight += (float)delta; + base._Process(delta); + + } + +} diff --git a/src/components/PlayerPhysicsController.cs.uid b/src/components/PlayerPhysicsController.cs.uid new file mode 100644 index 0000000..99f70e3 --- /dev/null +++ b/src/components/PlayerPhysicsController.cs.uid @@ -0,0 +1 @@ +uid://biicefgcvdc2x