init
						commit
						9f4d7b4928
					
				|  | @ -0,0 +1,2 @@ | |||
| # Normalize EOL for all files that Git considers text files. | ||||
| * text=auto eol=lf | ||||
|  | @ -0,0 +1,2 @@ | |||
| # Godot 4+ specific ignores | ||||
| .godot/ | ||||
|  | @ -0,0 +1,30 @@ | |||
| using Godot; | ||||
| using System; | ||||
| 
 | ||||
| namespace SupaLidlGame.Characters | ||||
| { | ||||
|     public partial class Character : CharacterBody2D | ||||
|     { | ||||
|         public float Speed { get; protected set; } = 128.0f; | ||||
|         public float JumpVelocity { get; protected set; } = -400.0f; | ||||
|         public float AccelerationMagnitude { get; protected set; } = 256.0f; | ||||
| 
 | ||||
|         public Vector2 Acceleration => Direction * AccelerationMagnitude; | ||||
| 
 | ||||
|         // Get the gravity from the project settings to be synced with RigidBody nodes. | ||||
|         public float Gravity = ProjectSettings.GetSetting("physics/2d/default_gravity").AsSingle(); | ||||
| 
 | ||||
|         public Vector2 Direction { get; protected set; } = Vector2.Zero; | ||||
| 
 | ||||
|         public override void _Process(double delta) | ||||
|         { | ||||
|         } | ||||
| 
 | ||||
|         public override void _PhysicsProcess(double delta) | ||||
|         { | ||||
|             // movement would be more crisp with no acceleration | ||||
|             Velocity = Direction * Speed; | ||||
|             MoveAndSlide(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,128 @@ | |||
| using Godot; | ||||
| using System; | ||||
| 
 | ||||
| namespace SupaLidlGame.Characters | ||||
| { | ||||
|     public partial class Enemy : NPC | ||||
|     { | ||||
|         public override void _Ready() | ||||
|         { | ||||
|             base._Ready(); | ||||
|         } | ||||
| 
 | ||||
|         public override void _Process(double delta) | ||||
|         { | ||||
|             if ((_thinkTimeElapsed -= delta) <= 0) | ||||
|             { | ||||
|                 _thinkTimeElapsed = 0.25; | ||||
|                 Think(); | ||||
|             } | ||||
| 
 | ||||
|             //Direction = (Target.GlobalPosition - GlobalPosition).Normalized(); | ||||
|             base._Process(delta); | ||||
|         } | ||||
| 
 | ||||
|         public override void _Draw() | ||||
|         { | ||||
|             for (byte i = 0; i < 16; i++) | ||||
|             { | ||||
|                 Vector2 diff = WeightVec(i) * 128; | ||||
|                 Color c = _dirIdx == i ? new Color(0, 255, 64) : new Color(0, 128, 24); | ||||
|                 DrawLine(Vector2.Zero, diff, c, 2.0f); | ||||
|             } | ||||
| 
 | ||||
|             base._Draw(); | ||||
|         } | ||||
| 
 | ||||
|         private Vector2 WeightVec(int idx) | ||||
|         { | ||||
|             //GD.Print(_weights[idx]); | ||||
|             return WeightVecNorm(idx) * _weights[idx]; | ||||
|         } | ||||
| 
 | ||||
|         private Vector2 WeightVecNorm(int idx) | ||||
|         { | ||||
|             // sin(2pix/16) | ||||
|             float x = Mathf.Cos(Mathf.Pi * idx / 8); | ||||
|             float y = Mathf.Sin(Mathf.Pi * idx / 8); | ||||
|             return new Vector2(x, y); | ||||
|         } | ||||
| 
 | ||||
|         private Character FindBestTarget() | ||||
|         { | ||||
|             float bestDist = float.MaxValue; | ||||
|             Character bestChar = null; | ||||
|             foreach (Node node in GetParent().GetChildren()) | ||||
|             { | ||||
|                 if (node != this && node is Character character) | ||||
|                 { | ||||
|                     float dist = Position.DistanceTo(character.Position); | ||||
|                     if (dist < bestDist) | ||||
|                     { | ||||
|                         bestDist = dist; | ||||
|                         bestChar = character; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return bestChar; | ||||
|         } | ||||
| 
 | ||||
|         private void Think() | ||||
|         { | ||||
|             Target = FindBestTarget(); | ||||
|             float bestWeight = 0; | ||||
| 
 | ||||
|             Vector2 want = GlobalPosition.DirectionTo(Target.GlobalPosition); | ||||
|             float dist = GlobalPosition.DistanceSquaredTo(Target.GlobalPosition); | ||||
|             for (byte i = 0; i < 16; i++) | ||||
|             { | ||||
|                 Vector2 dir = WeightVecNorm(i); | ||||
|                 // if close enough, _weights[i] will be instead calculated dot to a perpendicular weight | ||||
|                 if (dist < 16384) | ||||
|                 { | ||||
|                     Vector2 dirA = WeightVecNorm((i + 4) % 16); | ||||
|                     Vector2 dirB = WeightVecNorm((i - 4) % 16); | ||||
|                     float dot = Mathf.Max(dirA.Dot(want) + dirA.Dot(Direction), | ||||
|                                           dirB.Dot(want) + dirB.Dot(Direction)); | ||||
|                     _weights[i] = (dot + 1) / 2; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     _weights[i] = (dir.Dot(want) + 1) / 2; | ||||
|                 } | ||||
| 
 | ||||
|                 // check each weight with a raycast to see if it will hit any object | ||||
|                 // if it hits an object, subtract the weight by how close the ray is | ||||
|                 if (_weights[i] > 0) | ||||
|                 { | ||||
|                     GD.Print("casting..."); | ||||
|                     var spaceState = GetWorld2d().DirectSpaceState; | ||||
|                     var args = new PhysicsRayQueryParameters2D(); | ||||
|                     args.From = GlobalPosition; | ||||
|                     args.To = GlobalPosition + dir * 256 * _weights[i]; | ||||
|                     args.CollideWithBodies = true; | ||||
|                     args.Exclude.Add(this.GetRid()); | ||||
|                     var result = spaceState.IntersectRay(args); | ||||
|                     GD.Print(result.Count); | ||||
|                     if (result.Count > 0) | ||||
|                     { | ||||
|                         var pos = result["position"].AsVector2(); | ||||
|                         var sub = pos.DistanceTo(GlobalPosition + dir); | ||||
|                         _weights[i] -= sub; | ||||
|                         GD.Print("hit!"); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 if (_weights[i] > bestWeight) | ||||
|                 { | ||||
|                     bestWeight = _weights[i]; | ||||
|                     _dirIdx = i; | ||||
|                 } | ||||
| 
 | ||||
|                 //GD.Print(_weights[i]); | ||||
|             } | ||||
|             Direction = WeightVecNorm((byte)_dirIdx); | ||||
|             QueueRedraw(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,18 @@ | |||
| [gd_scene load_steps=4 format=3 uid="uid://dymwd5ihpwyqm"] | ||||
| 
 | ||||
| [ext_resource type="Script" path="res://Characters/NPC.cs" id="1_4x3dm"] | ||||
| [ext_resource type="Texture2D" uid="uid://bw052v8ikfget" path="res://icon.svg" id="2_ujqd7"] | ||||
| 
 | ||||
| [sub_resource type="RectangleShape2D" id="RectangleShape2D_uict5"] | ||||
| size = Vector2(32, 16) | ||||
| 
 | ||||
| [node name="ExampleEnemy" type="CharacterBody2D"] | ||||
| script = ExtResource("1_4x3dm") | ||||
| 
 | ||||
| [node name="Icon" type="Sprite2D" parent="."] | ||||
| scale = Vector2(0.25, 0.25) | ||||
| texture = ExtResource("2_ujqd7") | ||||
| 
 | ||||
| [node name="CollisionShape2D" type="CollisionShape2D" parent="."] | ||||
| position = Vector2(0, 8) | ||||
| shape = SubResource("RectangleShape2D_uict5") | ||||
|  | @ -0,0 +1,139 @@ | |||
| using Godot; | ||||
| using System; | ||||
| 
 | ||||
| namespace SupaLidlGame.Characters | ||||
| { | ||||
|     public partial class NPC : Character | ||||
|     { | ||||
|         /// <summary>Time in seconds it takes for the NPC to think</summary> | ||||
|         public const float ThinkTime = 0.25f; | ||||
| 
 | ||||
|         public Character Target { get; protected set; } | ||||
|         public float[] Weights => _weights; | ||||
| 
 | ||||
|         protected float[] _weights = new float[16]; | ||||
|         protected int _dirIdx = 0; | ||||
|         protected double _thinkTimeElapsed = 0; | ||||
| 
 | ||||
|         public override void _Ready() | ||||
|         { | ||||
|             base._Ready(); | ||||
|             Array.Fill(_weights, 0); | ||||
|         } | ||||
| 
 | ||||
|         public override void _Process(double delta) | ||||
|         { | ||||
|             if ((_thinkTimeElapsed += delta) > ThinkTime) | ||||
|             { | ||||
|                 _thinkTimeElapsed = 0; | ||||
|                 Think(); | ||||
|             } | ||||
| 
 | ||||
|             //Direction = (Target.GlobalPosition - GlobalPosition).Normalized(); | ||||
|             base._Process(delta); | ||||
|         } | ||||
| 
 | ||||
|         public override void _Draw() | ||||
|         { | ||||
|             for (byte i = 0; i < 16; i++) | ||||
|             { | ||||
|                 Vector2 diff = WeightVec(i) * 128; | ||||
|                 Color c = _dirIdx == i ? new Color(0, 255, 64) : new Color(0, 128, 24); | ||||
|                 DrawLine(Vector2.Zero, diff, c, 2.0f); | ||||
|             } | ||||
| 
 | ||||
|             base._Draw(); | ||||
|         } | ||||
| 
 | ||||
|         private Vector2 WeightVec(int idx) | ||||
|         { | ||||
|             //GD.Print(_weights[idx]); | ||||
|             return WeightVecNorm(idx) * _weights[idx]; | ||||
|         } | ||||
| 
 | ||||
|         private Vector2 WeightVecNorm(int idx) | ||||
|         { | ||||
|             // sin(2pix/16) | ||||
|             float x = Mathf.Cos(Mathf.Pi * idx / 8); | ||||
|             float y = Mathf.Sin(Mathf.Pi * idx / 8); | ||||
|             return new Vector2(x, y); | ||||
|         } | ||||
| 
 | ||||
|         private Character FindBestTarget() | ||||
|         { | ||||
|             float bestDist = float.MaxValue; | ||||
|             Character bestChar = null; | ||||
|             foreach (Node node in GetParent().GetChildren()) | ||||
|             { | ||||
|                 if (node != this && node is Character character) | ||||
|                 { | ||||
|                     float dist = Position.DistanceTo(character.Position); | ||||
|                     if (dist < bestDist) | ||||
|                     { | ||||
|                         bestDist = dist; | ||||
|                         bestChar = character; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return bestChar; | ||||
|         } | ||||
| 
 | ||||
|         private void Think() | ||||
|         { | ||||
|             Target = FindBestTarget(); | ||||
|             float bestWeight = 0; | ||||
| 
 | ||||
|             Vector2 want = GlobalPosition.DirectionTo(Target.GlobalPosition); | ||||
|             float dist = GlobalPosition.DistanceSquaredTo(Target.GlobalPosition); | ||||
|             for (byte i = 0; i < 16; i++) | ||||
|             { | ||||
|                 Vector2 dir = WeightVecNorm(i); | ||||
|                 // if close enough, _weights[i] will be instead calculated dot to a perpendicular weight | ||||
|                 if (dist < 16384) | ||||
|                 { | ||||
|                     Vector2 dirA = WeightVecNorm((i + 4) % 16); | ||||
|                     Vector2 dirB = WeightVecNorm((i - 4) % 16); | ||||
|                     float dot = Mathf.Max(dirA.Dot(want) + dirA.Dot(Direction), | ||||
|                                           dirB.Dot(want) + dirB.Dot(Direction)); | ||||
|                     _weights[i] = (dot + 1) / 2; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     _weights[i] = (dir.Dot(want) + 1) / 2; | ||||
|                 } | ||||
| 
 | ||||
|                 // check each weight with a raycast to see if it will hit any object | ||||
|                 // if it hits an object, subtract the weight by how close the ray is | ||||
|                 if (_weights[i] > 0) | ||||
|                 { | ||||
|                     GD.Print("casting..."); | ||||
|                     var spaceState = GetWorld2d().DirectSpaceState; | ||||
|                     var args = new PhysicsRayQueryParameters2D(); | ||||
|                     args.From = GlobalPosition; | ||||
|                     args.To = GlobalPosition + dir * 256 * _weights[i]; | ||||
|                     args.CollideWithBodies = true; | ||||
|                     args.Exclude.Add(this.GetRid()); | ||||
|                     var result = spaceState.IntersectRay(args); | ||||
|                     GD.Print(result.Count); | ||||
|                     if (result.Count > 0) | ||||
|                     { | ||||
|                         var pos = result["position"].AsVector2(); | ||||
|                         var sub = pos.DistanceTo(GlobalPosition + dir); | ||||
|                         _weights[i] -= sub; | ||||
|                         GD.Print("hit!"); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 if (_weights[i] > bestWeight) | ||||
|                 { | ||||
|                     bestWeight = _weights[i]; | ||||
|                     _dirIdx = i; | ||||
|                 } | ||||
| 
 | ||||
|                 //GD.Print(_weights[i]); | ||||
|             } | ||||
|             Direction = WeightVecNorm((byte)_dirIdx); | ||||
|             QueueRedraw(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,18 @@ | |||
| using Godot; | ||||
| using System; | ||||
| 
 | ||||
| namespace SupaLidlGame.Characters | ||||
| { | ||||
|     public partial class Player : Character | ||||
|     { | ||||
|         public override void _Ready() | ||||
|         { | ||||
|             Speed = 256.0f; | ||||
|         } | ||||
| 
 | ||||
|         public override void _Process(double delta) | ||||
|         { | ||||
|             Direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,21 @@ | |||
| [gd_scene load_steps=4 format=3 uid="uid://bncaar8vp3b84"] | ||||
| 
 | ||||
| [ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"] | ||||
| [ext_resource type="Texture2D" uid="uid://bw052v8ikfget" path="res://icon.svg" id="2_xmgd1"] | ||||
| 
 | ||||
| [sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"] | ||||
| size = Vector2(32, 16) | ||||
| 
 | ||||
| [node name="Node2D" type="CharacterBody2D"] | ||||
| script = ExtResource("1_flygr") | ||||
| 
 | ||||
| [node name="Sprite2D" type="Sprite2D" parent="."] | ||||
| scale = Vector2(0.25, 0.25) | ||||
| texture = ExtResource("2_xmgd1") | ||||
| 
 | ||||
| [node name="CollisionShape2D" type="CollisionShape2D" parent="."] | ||||
| position = Vector2(0, 8) | ||||
| shape = SubResource("RectangleShape2D_bfqew") | ||||
| 
 | ||||
| [node name="Camera2D" type="Camera2D" parent="."] | ||||
| current = true | ||||
|  | @ -0,0 +1,10 @@ | |||
| namespace SupaLidlGame.Characters.Thinkers | ||||
| { | ||||
|     public class Thinker | ||||
|     { | ||||
|         public virtual void Think() | ||||
|         { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,26 @@ | |||
| [gd_scene load_steps=3 format=3 uid="uid://cbsosmpnenfwu"] | ||||
| 
 | ||||
| [ext_resource type="PackedScene" uid="uid://bncaar8vp3b84" path="res://Characters/Player.tscn" id="1_m35hr"] | ||||
| [ext_resource type="PackedScene" uid="uid://dymwd5ihpwyqm" path="res://Characters/ExampleEnemy.tscn" id="2_uti3y"] | ||||
| 
 | ||||
| [node name="Level" type="Node2D"] | ||||
| 
 | ||||
| [node name="TileMap" type="TileMap" parent="."] | ||||
| y_sort_enabled = true | ||||
| format = 2 | ||||
| 
 | ||||
| [node name="Player" parent="TileMap" instance=ExtResource("1_m35hr")] | ||||
| position = Vector2(206, 94) | ||||
| motion_mode = 1 | ||||
| 
 | ||||
| [node name="ExampleEnemy" parent="TileMap" instance=ExtResource("2_uti3y")] | ||||
| position = Vector2(680, 261) | ||||
| 
 | ||||
| [node name="ExampleEnemy2" parent="TileMap" instance=ExtResource("2_uti3y")] | ||||
| position = Vector2(842, 459) | ||||
| 
 | ||||
| [node name="ExampleEnemy3" parent="TileMap" instance=ExtResource("2_uti3y")] | ||||
| position = Vector2(297, 354) | ||||
| 
 | ||||
| [node name="ExampleEnemy4" parent="TileMap" instance=ExtResource("2_uti3y")] | ||||
| position = Vector2(675, 78) | ||||
											
												Binary file not shown.
											
										
									
								|  | @ -0,0 +1,6 @@ | |||
| <Project Sdk="Godot.NET.Sdk/4.0.0-beta.4"> | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|     <EnableDynamicLoading>true</EnableDynamicLoading> | ||||
|   </PropertyGroup> | ||||
| </Project> | ||||
|  | @ -0,0 +1,19 @@ | |||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
| # Visual Studio 2012 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SupaLidlGame", "SupaLidlGame.csproj", "{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}" | ||||
| 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 | ||||
| 		{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU | ||||
| 		{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU | ||||
| 		{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU | ||||
| 		{AF3A4D72-D276-44C3-A64F-EAB32D2B9B97}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
|  | @ -0,0 +1 @@ | |||
| <svg height="128" width="128" xmlns="http://www.w3.org/2000/svg"><g transform="translate(32 32)"><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99z" fill="#363d52"/><path d="m-16-32c-8.86 0-16 7.13-16 15.99v95.98c0 8.86 7.13 15.99 16 15.99h96c8.86 0 16-7.13 16-15.99v-95.98c0-8.85-7.14-15.99-16-15.99zm0 4h96c6.64 0 12 5.35 12 11.99v95.98c0 6.64-5.35 11.99-12 11.99h-96c-6.64 0-12-5.35-12-11.99v-95.98c0-6.64 5.36-11.99 12-11.99z" fill-opacity=".4"/></g><g stroke-width="9.92746" transform="matrix(.10073078 0 0 .10073078 12.425923 2.256365)"><path d="m0 0s-.325 1.994-.515 1.976l-36.182-3.491c-2.879-.278-5.115-2.574-5.317-5.459l-.994-14.247-27.992-1.997-1.904 12.912c-.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-.994 14.247c-.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-.187.018-.324-1.978-.511-1.978l-.049-7.83 30.658-4.944 1.004-14.374c.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c.146-.01.29-.016.434-.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c.423-2.871 2.93-5.037 5.831-5.037.142 0 .284.005.423.015l38.556 2.75c2.911.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 919.24059 771.67186)"/><path d="m0 0v-47.514-6.035-5.492c.108-.001.216-.005.323-.015l36.196-3.49c1.896-.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c.107.01.214.014.322.015v4.711l.015.005v54.325c5.09692 6.4164715 9.92323 13.494208 13.621 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842.642-7.702.88-11.567.926v.006c-.027 0-.052-.006-.075-.006-.024 0-.049.006-.073.006v-.006c-3.872-.046-7.729-.284-11.572-.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17.216-8.34.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.4426579-6.973692 9.2079702-13.9828876 13.621-19.449z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 104.69892 525.90697)"/><path d="m0 0-1.121-16.063c-.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-.094-.007-.188-.01-.281-.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c.015-3.498.06-7.33.06-8.093 0-34.374 43.605-50.896 97.781-51.086h.066.067c54.176.19 97.766 16.712 97.766 51.086 0 .777.047 4.593.063 8.093z" fill="#478cbf" transform="matrix(4.162611 0 0 -4.162611 784.07144 817.24284)"/><path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 389.21484 625.67104)"/><path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 367.36686 631.05679)"/><path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 511.99336 724.73954)"/><path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff" transform="matrix(4.162611 0 0 -4.162611 634.78706 625.67104)"/><path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042" transform="matrix(4.162611 0 0 -4.162611 656.64056 631.05679)"/></g></svg> | ||||
| After Width: | Height: | Size: 4.1 KiB | 
|  | @ -0,0 +1,37 @@ | |||
| [remap] | ||||
| 
 | ||||
| importer="texture" | ||||
| type="CompressedTexture2D" | ||||
| uid="uid://bw052v8ikfget" | ||||
| 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/lossy_quality=0.7 | ||||
| compress/hdr_compression=1 | ||||
| compress/bptc_ldr=0 | ||||
| compress/normal_map=0 | ||||
| compress/channel_pack=0 | ||||
| mipmaps/generate=false | ||||
| mipmaps/limit=-1 | ||||
| roughness/mode=0 | ||||
| roughness/src_normal="" | ||||
| process/fix_alpha_border=true | ||||
| process/premult_alpha=false | ||||
| process/normal_map_invert_y=false | ||||
| process/hdr_as_srgb=false | ||||
| process/hdr_clamp_exposure=false | ||||
| process/size_limit=0 | ||||
| detect_3d/compress_to=1 | ||||
| svg/scale=1.0 | ||||
| editor/scale_with_editor_scale=false | ||||
| editor/convert_colors_with_editor_theme=false | ||||
|  | @ -0,0 +1,51 @@ | |||
| ; 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="SupaLidlGame" | ||||
| run/main_scene="res://Scenes/Level.tscn" | ||||
| config/features=PackedStringArray("4.0", "C#", "Forward Plus") | ||||
| config/icon="res://icon.svg" | ||||
| 
 | ||||
| [dotnet] | ||||
| 
 | ||||
| project/assembly_name="SupaLidlGame" | ||||
| 
 | ||||
| [input] | ||||
| 
 | ||||
| ui_left={ | ||||
| "deadzone": 0.5, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) | ||||
| ] | ||||
| } | ||||
| ui_right={ | ||||
| "deadzone": 0.5, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) | ||||
| ] | ||||
| } | ||||
| ui_up={ | ||||
| "deadzone": 0.5, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) | ||||
| ] | ||||
| } | ||||
| ui_down={ | ||||
| "deadzone": 0.5, | ||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":83,"physical_keycode":0,"unicode":0,"echo":false,"script":null) | ||||
| , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) | ||||
| ] | ||||
| } | ||||
| 
 | ||||
| [physics] | ||||
| 
 | ||||
| 2d/default_gravity=0.0 | ||||
		Loading…
	
		Reference in New Issue