Bladeren bron

mono demo for dodge the creeps tutorial

Kelly Thomas 6 jaren geleden
bovenliggende
commit
7206f2d1f4
42 gewijzigde bestanden met toevoegingen van 1648 en 0 verwijderingen
  1. 59 0
      mono/DodgeTheCreepsCS/DodgeTheCreepsCS.csproj
  2. 19 0
      mono/DodgeTheCreepsCS/DodgeTheCreepsCS.sln
  3. 47 0
      mono/DodgeTheCreepsCS/HUD.cs
  4. 118 0
      mono/DodgeTheCreepsCS/HUD.tscn
  5. 88 0
      mono/DodgeTheCreepsCS/Main.cs
  6. 110 0
      mono/DodgeTheCreepsCS/Main.tscn
  7. 28 0
      mono/DodgeTheCreepsCS/Mob.cs
  8. 75 0
      mono/DodgeTheCreepsCS/Mob.tscn
  9. 90 0
      mono/DodgeTheCreepsCS/Player.cs
  10. 135 0
      mono/DodgeTheCreepsCS/Player.tscn
  11. 25 0
      mono/DodgeTheCreepsCS/Properties/AssemblyInfo.cs
  12. BIN
      mono/DodgeTheCreepsCS/art/House In a Forest Loop.ogg
  13. 15 0
      mono/DodgeTheCreepsCS/art/House In a Forest Loop.ogg.import
  14. BIN
      mono/DodgeTheCreepsCS/art/enemyFlyingAlt_1.png
  15. 31 0
      mono/DodgeTheCreepsCS/art/enemyFlyingAlt_1.png.import
  16. BIN
      mono/DodgeTheCreepsCS/art/enemyFlyingAlt_2.png
  17. 31 0
      mono/DodgeTheCreepsCS/art/enemyFlyingAlt_2.png.import
  18. BIN
      mono/DodgeTheCreepsCS/art/enemySwimming_1.png
  19. 31 0
      mono/DodgeTheCreepsCS/art/enemySwimming_1.png.import
  20. BIN
      mono/DodgeTheCreepsCS/art/enemySwimming_2.png
  21. 31 0
      mono/DodgeTheCreepsCS/art/enemySwimming_2.png.import
  22. BIN
      mono/DodgeTheCreepsCS/art/enemyWalking_1.png
  23. 31 0
      mono/DodgeTheCreepsCS/art/enemyWalking_1.png.import
  24. BIN
      mono/DodgeTheCreepsCS/art/enemyWalking_2.png
  25. 31 0
      mono/DodgeTheCreepsCS/art/enemyWalking_2.png.import
  26. BIN
      mono/DodgeTheCreepsCS/art/gameover.wav
  27. 21 0
      mono/DodgeTheCreepsCS/art/gameover.wav.import
  28. BIN
      mono/DodgeTheCreepsCS/art/playerGrey_up1.png
  29. 31 0
      mono/DodgeTheCreepsCS/art/playerGrey_up1.png.import
  30. BIN
      mono/DodgeTheCreepsCS/art/playerGrey_up2.png
  31. 31 0
      mono/DodgeTheCreepsCS/art/playerGrey_up2.png.import
  32. BIN
      mono/DodgeTheCreepsCS/art/playerGrey_walk1.png
  33. 31 0
      mono/DodgeTheCreepsCS/art/playerGrey_walk1.png.import
  34. BIN
      mono/DodgeTheCreepsCS/art/playerGrey_walk2.png
  35. 31 0
      mono/DodgeTheCreepsCS/art/playerGrey_walk2.png.import
  36. 101 0
      mono/DodgeTheCreepsCS/default_env.tres
  37. 253 0
      mono/DodgeTheCreepsCS/fonts/FONTLOG.txt
  38. 94 0
      mono/DodgeTheCreepsCS/fonts/LICENSE.txt
  39. BIN
      mono/DodgeTheCreepsCS/fonts/Xolonium-Regular.ttf
  40. BIN
      mono/DodgeTheCreepsCS/icon.png
  41. 31 0
      mono/DodgeTheCreepsCS/icon.png.import
  42. 29 0
      mono/DodgeTheCreepsCS/project.godot

+ 59 - 0
mono/DodgeTheCreepsCS/DodgeTheCreepsCS.csproj

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{7829C155-1795-447D-A78E-8775E3CF134E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <OutputPath>.mono\temp\bin\$(Configuration)</OutputPath>
+    <RootNamespace>DodgeTheCreepsCS</RootNamespace>
+    <AssemblyName>DodgeTheCreepsCS</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <BaseIntermediateOutputPath>.mono\temp\obj</BaseIntermediateOutputPath>
+    <IntermediateOutputPath>$(BaseIntermediateOutputPath)\$(Configuration)</IntermediateOutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>portable</DebugType>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>portable</DebugType>
+    <Optimize>true</Optimize>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Tools|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>portable</DebugType>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;TOOLS;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GodotSharp">
+      <HintPath>$(ProjectDir)\.mono\assemblies\GodotSharp.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="GodotSharpEditor" Condition=" '$(Configuration)' == 'Tools' ">
+      <HintPath>$(ProjectDir)\.mono\assemblies\GodotSharpEditor.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HUD.cs" />
+    <Compile Include="Main.cs" />
+    <Compile Include="Mob.cs" />
+    <Compile Include="Player.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>

+ 19 - 0
mono/DodgeTheCreepsCS/DodgeTheCreepsCS.sln

@@ -0,0 +1,19 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DodgeTheCreepsCS", "DodgeTheCreepsCS.csproj", "{7829C155-1795-447D-A78E-8775E3CF134E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+	Debug|Any CPU = Debug|Any CPU
+	Release|Any CPU = Release|Any CPU
+	Tools|Any CPU = Tools|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{7829C155-1795-447D-A78E-8775E3CF134E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7829C155-1795-447D-A78E-8775E3CF134E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7829C155-1795-447D-A78E-8775E3CF134E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7829C155-1795-447D-A78E-8775E3CF134E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7829C155-1795-447D-A78E-8775E3CF134E}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
+		{7829C155-1795-447D-A78E-8775E3CF134E}.Tools|Any CPU.Build.0 = Tools|Any CPU
+	EndGlobalSection
+EndGlobal

+ 47 - 0
mono/DodgeTheCreepsCS/HUD.cs

@@ -0,0 +1,47 @@
+using Godot;
+using System;
+
+public class HUD : CanvasLayer
+{
+    [Signal]
+    public delegate void StartGame();
+
+    public void ShowMessage(string text)
+    {
+        var messageLabel = GetNode<Label>("MessageLabel");
+        messageLabel.Text = text;
+        messageLabel.Show();
+
+        GetNode<Timer>("MessageTimer").Start();
+    }
+
+    async public void ShowGameOver()
+    {
+        ShowMessage("Game Over");
+
+        var messageTimer = GetNode<Timer>("MessageTimer");
+        await ToSignal(messageTimer, "timeout");
+
+        var messageLabel = GetNode<Label>("MessageLabel");
+        messageLabel.Text = "Dodge the\nCreeps!";
+        messageLabel.Show();
+
+        GetNode<Button>("StartButton").Show();
+    }
+
+    public void UpdateScore(int score)
+    {
+        GetNode<Label>("ScoreLabel").Text = score.ToString();
+    }
+
+    public void OnStartButtonPressed()
+    {
+        GetNode<Button>("StartButton").Hide();
+        EmitSignal("StartGame");
+    }
+
+    public void OnMessageTimerTimeout()
+    {
+        GetNode<Label>("MessageLabel").Hide();
+    }
+}

+ 118 - 0
mono/DodgeTheCreepsCS/HUD.tscn

@@ -0,0 +1,118 @@
+[gd_scene load_steps=6 format=2]
+
+[ext_resource path="res://HUD.cs" type="Script" id=1]
+[ext_resource path="res://fonts/Xolonium-Regular.ttf" type="DynamicFontData" id=2]
+
+[sub_resource type="DynamicFont" id=1]
+
+size = 64
+outline_size = 0
+outline_color = Color( 1, 1, 1, 1 )
+use_mipmaps = true
+use_filter = false
+font_data = ExtResource( 2 )
+
+[sub_resource type="DynamicFont" id=2]
+
+size = 64
+outline_size = 0
+outline_color = Color( 1, 1, 1, 1 )
+use_mipmaps = true
+use_filter = false
+font_data = ExtResource( 2 )
+
+[sub_resource type="DynamicFont" id=3]
+
+size = 64
+outline_size = 0
+outline_color = Color( 1, 1, 1, 1 )
+use_mipmaps = true
+use_filter = false
+font_data = ExtResource( 2 )
+
+[node name="HUD" type="CanvasLayer"]
+layer = 1
+offset = Vector2( 0, 0 )
+rotation = 0.0
+scale = Vector2( 1, 1 )
+transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+script = ExtResource( 1 )
+
+[node name="ScoreLabel" type="Label" parent="."]
+anchor_left = 0.5
+anchor_top = 0.0
+anchor_right = 0.5
+anchor_bottom = 0.0
+margin_left = -25.0
+margin_right = 25.0
+margin_bottom = 100.0
+rect_pivot_offset = Vector2( 0, 0 )
+rect_clip_content = false
+mouse_filter = 2
+mouse_default_cursor_shape = 0
+size_flags_horizontal = 1
+size_flags_vertical = 4
+custom_fonts/font = SubResource( 1 )
+text = "0
+"
+align = 1
+percent_visible = 1.0
+lines_skipped = 0
+max_lines_visible = -1
+
+[node name="MessageLabel" type="Label" parent="."]
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+margin_left = -200.0
+margin_top = -150.0
+margin_right = 200.0
+rect_pivot_offset = Vector2( 0, 0 )
+rect_clip_content = false
+mouse_filter = 2
+mouse_default_cursor_shape = 0
+size_flags_horizontal = 1
+size_flags_vertical = 4
+custom_fonts/font = SubResource( 2 )
+text = "Dodge the
+Creeps!"
+align = 1
+valign = 1
+percent_visible = 1.0
+lines_skipped = 0
+max_lines_visible = -1
+
+[node name="StartButton" type="Button" parent="."]
+anchor_left = 0.5
+anchor_top = 1.0
+anchor_right = 0.5
+anchor_bottom = 1.0
+margin_left = -100.0
+margin_top = -200.0
+margin_right = 100.0
+margin_bottom = -100.0
+rect_pivot_offset = Vector2( 0, 0 )
+rect_clip_content = false
+focus_mode = 2
+mouse_filter = 0
+mouse_default_cursor_shape = 0
+size_flags_horizontal = 1
+size_flags_vertical = 1
+custom_fonts/font = SubResource( 3 )
+toggle_mode = false
+enabled_focus_mode = 2
+shortcut = null
+group = null
+text = "Start"
+flat = false
+align = 1
+
+[node name="MessageTimer" type="Timer" parent="."]
+process_mode = 1
+wait_time = 2.0
+one_shot = true
+autostart = false
+
+[connection signal="pressed" from="StartButton" to="." method="OnStartButtonPressed"]
+[connection signal="timeout" from="MessageTimer" to="." method="OnMessageTimerTimeout"]

+ 88 - 0
mono/DodgeTheCreepsCS/Main.cs

@@ -0,0 +1,88 @@
+using Godot;
+using System;
+
+public class Main : Node
+{
+    [Export]
+    public PackedScene Mob;
+
+    private int _score;
+
+    // We use 'System.Random' as an alternative to GDScript's random methods.
+    private Random _random = new Random();
+
+    public override void _Ready()
+    {
+    }
+
+    // We'll use this later because C# doesn't support GDScript's randi().
+    private float RandRange(float min, float max)
+    {
+        return (float)_random.NextDouble() * (max - min) + min;
+    }
+
+    public void GameOver()
+    {
+        GetNode<Timer>("MobTimer").Stop();
+        GetNode<Timer>("ScoreTimer").Stop();
+
+        GetNode<HUD>("HUD").ShowGameOver();
+
+        GetNode<AudioStreamPlayer>("Music").Stop();
+        GetNode<AudioStreamPlayer>("DeathSound").Play();
+    }
+
+    public void NewGame()
+    {
+        _score = 0;
+
+        var player = GetNode<Player>("Player");
+        var startPosition = GetNode<Position2D>("StartPosition");
+        player.Start(startPosition.Position);
+
+        GetNode<Timer>("StartTimer").Start();
+
+        var hud = GetNode<HUD>("HUD");
+        hud.UpdateScore(_score);
+        hud.ShowMessage("Get Ready!");
+
+        GetNode<AudioStreamPlayer>("Music").Play();
+    }
+
+    public void OnStartTimerTimeout()
+    {
+        GetNode<Timer>("MobTimer").Start();
+        GetNode<Timer>("ScoreTimer").Start();
+    }
+
+    public void OnScoreTimerTimeout()
+    {
+        _score++;
+
+        GetNode<HUD>("HUD").UpdateScore(_score);
+    }
+
+    public void OnMobTimerTimeout()
+    {
+        // Choose a random location on Path2D.
+        var mobSpawnLocation = GetNode<PathFollow2D>("MobPath/MobSpawnLocation");
+        mobSpawnLocation.SetOffset(_random.Next());
+
+        // Create a Mob instance and add it to the scene.
+        var mobInstance = (RigidBody2D)Mob.Instance();
+        AddChild(mobInstance);
+
+        // Set the mob's direction perpendicular to the path direction.
+        float direction = mobSpawnLocation.Rotation + Mathf.Pi / 2;
+
+        // Set the mob's position to a random location.
+        mobInstance.Position = mobSpawnLocation.Position;
+
+        // Add some randomness to the direction.
+        direction += RandRange(-Mathf.Pi / 4, Mathf.Pi / 4);
+        mobInstance.Rotation = direction;
+
+        // Choose the velocity.
+        mobInstance.SetLinearVelocity(new Vector2(RandRange(150f, 250f), 0).Rotated(direction));
+    }
+}

+ 110 - 0
mono/DodgeTheCreepsCS/Main.tscn

@@ -0,0 +1,110 @@
+[gd_scene load_steps=8 format=2]
+
+[ext_resource path="res://Main.cs" type="Script" id=1]
+[ext_resource path="res://Mob.tscn" type="PackedScene" id=2]
+[ext_resource path="res://Player.tscn" type="PackedScene" id=3]
+[ext_resource path="res://HUD.tscn" type="PackedScene" id=4]
+[ext_resource path="res://art/House In a Forest Loop.ogg" type="AudioStream" id=5]
+[ext_resource path="res://art/gameover.wav" type="AudioStream" id=6]
+
+[sub_resource type="Curve2D" id=1]
+
+bake_interval = 5.0
+_data = {
+"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 480, 720, 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0 )
+}
+
+[node name="Main" type="Node" index="0"]
+
+script = ExtResource( 1 )
+Mob = ExtResource( 2 )
+
+[node name="ColorRect" type="ColorRect" parent="." index="0"]
+
+anchor_left = 0.0
+anchor_top = 0.0
+anchor_right = 0.0
+anchor_bottom = 0.0
+margin_right = 480.0
+margin_bottom = 720.0
+rect_pivot_offset = Vector2( 0, 0 )
+rect_clip_content = false
+mouse_filter = 0
+mouse_default_cursor_shape = 0
+size_flags_horizontal = 1
+size_flags_vertical = 1
+color = Color( 0.253451, 0.425288, 0.429412, 1 )
+
+[node name="Player" parent="." index="1" instance=ExtResource( 3 )]
+
+[node name="MobTimer" type="Timer" parent="." index="2"]
+
+process_mode = 1
+wait_time = 0.5
+one_shot = false
+autostart = false
+
+[node name="ScoreTimer" type="Timer" parent="." index="3"]
+
+process_mode = 1
+wait_time = 1.0
+one_shot = false
+autostart = false
+
+[node name="StartTimer" type="Timer" parent="." index="4"]
+
+process_mode = 1
+wait_time = 2.0
+one_shot = true
+autostart = false
+
+[node name="StartPosition" type="Position2D" parent="." index="5"]
+
+position = Vector2( 240, 450 )
+
+[node name="MobPath" type="Path2D" parent="." index="6"]
+
+self_modulate = Color( 0.5, 0.6, 1, 0.7 )
+curve = SubResource( 1 )
+
+[node name="MobSpawnLocation" type="PathFollow2D" parent="MobPath" index="0"]
+
+offset = 0.0
+h_offset = 0.0
+v_offset = 0.0
+rotate = true
+cubic_interp = true
+loop = true
+lookahead = 4.0
+
+[node name="HUD" parent="." index="7" instance=ExtResource( 4 )]
+
+[node name="Music" type="AudioStreamPlayer" parent="." index="8"]
+
+stream = ExtResource( 5 )
+volume_db = 0.0
+pitch_scale = 1.0
+autoplay = false
+mix_target = 0
+bus = "Master"
+
+[node name="DeathSound" type="AudioStreamPlayer" parent="." index="9"]
+
+stream = ExtResource( 6 )
+volume_db = 0.0
+pitch_scale = 1.0
+autoplay = false
+mix_target = 0
+bus = "Master"
+
+[connection signal="Hit" from="Player" to="." method="GameOver"]
+
+[connection signal="timeout" from="MobTimer" to="." method="OnMobTimerTimeout"]
+
+[connection signal="timeout" from="ScoreTimer" to="." method="OnScoreTimerTimeout"]
+
+[connection signal="timeout" from="StartTimer" to="." method="OnStartTimerTimeout"]
+
+[connection signal="StartGame" from="HUD" to="." method="NewGame"]
+
+

+ 28 - 0
mono/DodgeTheCreepsCS/Mob.cs

@@ -0,0 +1,28 @@
+using Godot;
+using System;
+
+public class Mob : RigidBody2D
+{
+    [Export]
+    public int MinSpeed; // Minimum speed range.
+
+    [Export]
+    public int MaxSpeed; // Maximum speed range.
+
+    private String[] _mobTypes = {"walk", "swim", "fly"};
+
+    // C# doesn't implement GDScript's random methods, so we use 'System.Random'
+    // as an alternative.
+    static private Random _random = new Random();
+
+    public override void _Ready()
+    {
+        GetNode<AnimatedSprite>("AnimatedSprite").Animation = _mobTypes[_random.Next(0, _mobTypes.Length)];
+    }
+
+    public void OnVisibilityScreenExited()
+    {
+        QueueFree();
+    }
+
+}

+ 75 - 0
mono/DodgeTheCreepsCS/Mob.tscn

@@ -0,0 +1,75 @@
+[gd_scene load_steps=10 format=2]
+
+[ext_resource path="res://Mob.cs" type="Script" id=1]
+[ext_resource path="res://art/enemySwimming_1.png" type="Texture" id=2]
+[ext_resource path="res://art/enemySwimming_2.png" type="Texture" id=3]
+[ext_resource path="res://art/enemyWalking_1.png" type="Texture" id=4]
+[ext_resource path="res://art/enemyWalking_2.png" type="Texture" id=5]
+[ext_resource path="res://art/enemyFlyingAlt_1.png" type="Texture" id=6]
+[ext_resource path="res://art/enemyFlyingAlt_2.png" type="Texture" id=7]
+
+[sub_resource type="SpriteFrames" id=1]
+
+animations = [ {
+"frames": [ ExtResource( 2 ), ExtResource( 3 ) ],
+"loop": true,
+"name": "swim",
+"speed": 4.0
+}, {
+"frames": [ ExtResource( 4 ), ExtResource( 5 ) ],
+"loop": true,
+"name": "walk",
+"speed": 4.0
+}, {
+"frames": [ ExtResource( 6 ), ExtResource( 7 ) ],
+"loop": true,
+"name": "fly",
+"speed": 3.0
+} ]
+
+[sub_resource type="CapsuleShape2D" id=2]
+
+custom_solver_bias = 0.0
+radius = 35.8898
+height = 29.3103
+
+[node name="Mob" type="RigidBody2D"]
+input_pickable = false
+collision_layer = 1
+collision_mask = 0
+mode = 0
+mass = 1.0
+gravity_scale = 0.0
+custom_integrator = false
+continuous_cd = 0
+contacts_reported = 0
+contact_monitor = false
+sleeping = false
+can_sleep = true
+linear_velocity = Vector2( 0, 0 )
+linear_damp = -1.0
+angular_velocity = 0.0
+angular_damp = -1.0
+script = ExtResource( 1 )
+__meta__ = {
+"_edit_group_": true
+}
+MinSpeed = 150
+MaxSpeed = 250
+
+[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
+scale = Vector2( 0.75, 0.75 )
+frames = SubResource( 1 )
+animation = "walk"
+playing = true
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+rotation = 1.5708
+shape = SubResource( 2 )
+
+[node name="Visibility" type="VisibilityNotifier2D" parent="."]
+position = Vector2( -0.315128, -9.53674e-07 )
+scale = Vector2( 5.00208, 3.58402 )
+rect = Rect2( -10, -10, 20, 20 )
+
+[connection signal="screen_exited" from="Visibility" to="." method="OnVisibilityScreenExited"]

+ 90 - 0
mono/DodgeTheCreepsCS/Player.cs

@@ -0,0 +1,90 @@
+using Godot;
+using System;
+
+public class Player : Area2D
+{
+    [Signal]
+    public delegate void Hit();
+
+    [Export]
+    public int Speed; // How fast the player will move (pixels/sec).
+
+    private Vector2 _screenSize; // Size of the game window.
+
+    public override void _Ready()
+    {
+        _screenSize = GetViewport().GetSize();
+
+        Hide();
+    }
+
+    public override void _Process(float delta)
+    {
+        var velocity = new Vector2(); // The player's movement vector.
+
+        if (Input.IsActionPressed("ui_right"))
+        {
+            velocity.x += 1;
+        }
+
+        if (Input.IsActionPressed("ui_left"))
+        {
+            velocity.x -= 1;
+        }
+
+        if (Input.IsActionPressed("ui_down"))
+        {
+            velocity.y += 1;
+        }
+
+        if (Input.IsActionPressed("ui_up"))
+        {
+            velocity.y -= 1;
+        }
+
+        var animatedSprite = GetNode<AnimatedSprite>("AnimatedSprite");
+
+        if (velocity.Length() > 0)
+        {
+            velocity = velocity.Normalized() * Speed;
+            animatedSprite.Play();
+        }
+        else
+        {
+            animatedSprite.Stop();
+        }
+
+        Position += velocity * delta;
+        Position = new Vector2(
+            x: Mathf.Clamp(Position.x, 0, _screenSize.x),
+            y: Mathf.Clamp(Position.y, 0, _screenSize.y)
+        );
+
+        if (velocity.x != 0)
+        {
+            animatedSprite.Animation = "right";
+            // See the note below about boolean assignment
+            animatedSprite.FlipH = velocity.x < 0;
+            animatedSprite.FlipV = false;
+        }
+        else if(velocity.y != 0) 
+        {
+            animatedSprite.Animation = "up";
+            animatedSprite.FlipV = velocity.y > 0;
+        }
+    }
+
+    public void Start(Vector2 pos)
+    {
+        Position = pos;
+        Show();
+        GetNode<CollisionShape2D>("CollisionShape2D").Disabled = false;
+    }
+
+    public void OnPlayerBodyEntered(PhysicsBody2D body)
+    {
+        Hide(); // Player disappears after being hit.
+        EmitSignal("Hit");
+        GetNode<CollisionShape2D>("CollisionShape2D").Disabled = true;
+    }
+}

+ 135 - 0
mono/DodgeTheCreepsCS/Player.tscn

@@ -0,0 +1,135 @@
+[gd_scene load_steps=13 format=2]
+
+[ext_resource path="res://Player.cs" type="Script" id=1]
+[ext_resource path="res://art/playerGrey_walk1.png" type="Texture" id=2]
+[ext_resource path="res://art/playerGrey_walk2.png" type="Texture" id=3]
+[ext_resource path="res://art/playerGrey_up1.png" type="Texture" id=4]
+[ext_resource path="res://art/playerGrey_up2.png" type="Texture" id=5]
+
+[sub_resource type="SpriteFrames" id=1]
+
+animations = [ {
+"frames": [ ExtResource( 2 ), ExtResource( 3 ) ],
+"loop": true,
+"name": "right",
+"speed": 5.0
+}, {
+"frames": [ ExtResource( 4 ), ExtResource( 5 ) ],
+"loop": true,
+"name": "up",
+"speed": 5.0
+} ]
+
+[sub_resource type="CapsuleShape2D" id=2]
+
+custom_solver_bias = 0.0
+radius = 27.3777
+height = 14.0303
+
+[sub_resource type="Gradient" id=3]
+
+offsets = PoolRealArray( 0, 1 )
+colors = PoolColorArray( 1, 1, 1, 0.501961, 1, 1, 1, 0 )
+
+[sub_resource type="GradientTexture" id=4]
+
+flags = 4
+gradient = SubResource( 3 )
+width = 2048
+
+[sub_resource type="Curve" id=6]
+
+min_value = 0.0
+max_value = 1.0
+bake_resolution = 100
+_data = [ Vector2( 0.00451484, 0.5176 ), 0.0, 0.0, 0, 0, Vector2( 0.98702, 0.3152 ), 0.0, 0.0, 0, 0 ]
+
+[sub_resource type="CurveTexture" id=7]
+
+flags = 4
+width = 2048
+curve = SubResource( 6 )
+
+[sub_resource type="ParticlesMaterial" id=5]
+
+render_priority = 0
+trail_divisor = 1
+emission_shape = 0
+flag_align_y = false
+flag_rotate_y = false
+flag_disable_z = true
+spread = 45.0
+flatness = 0.0
+gravity = Vector3( 0, 0, 0 )
+initial_velocity = 1.0
+initial_velocity_random = 0.0
+angular_velocity = 0.0
+angular_velocity_random = 0.0
+orbit_velocity = 0.0
+orbit_velocity_random = 0.0
+linear_accel = 0.0
+linear_accel_random = 0.0
+radial_accel = 0.0
+radial_accel_random = 0.0
+tangential_accel = 0.0
+tangential_accel_random = 0.0
+damping = 0.0
+damping_random = 0.0
+angle = 0.0
+angle_random = 0.0
+scale = 1.0
+scale_random = 0.0
+scale_curve = SubResource( 7 )
+color_ramp = SubResource( 4 )
+hue_variation = 0.0
+hue_variation_random = 0.0
+anim_speed = 0.0
+anim_speed_random = 0.0
+anim_offset = 0.0
+anim_offset_random = 0.0
+anim_loop = false
+
+[node name="Player" type="Area2D"]
+input_pickable = true
+gravity_vec = Vector2( 0, 1 )
+gravity = 98.0
+linear_damp = 0.1
+angular_damp = 1.0
+audio_bus_override = false
+audio_bus_name = "Master"
+script = ExtResource( 1 )
+__meta__ = {
+"_edit_group_": true
+}
+Speed = 400
+
+[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
+scale = Vector2( 0.5, 0.5 )
+frames = SubResource( 1 )
+animation = "right"
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource( 2 )
+
+[node name="Trail" type="Particles2D" parent="."]
+show_behind_parent = true
+emitting = true
+amount = 10
+lifetime = 1.0
+one_shot = false
+preprocess = 0.0
+speed_scale = 2.0
+explosiveness = 0.0
+randomness = 0.0
+fixed_fps = 0
+fract_delta = true
+visibility_rect = Rect2( -100, -100, 200, 200 )
+local_coords = false
+draw_order = 0
+process_material = SubResource( 5 )
+texture = ExtResource( 2 )
+normal_map = null
+h_frames = 1
+v_frames = 1
+
+[connection signal="body_entered" from="." to="." method="OnPlayerBodyEntered"]

+ 25 - 0
mono/DodgeTheCreepsCS/Properties/AssemblyInfo.cs

@@ -0,0 +1,25 @@
+using System.Reflection;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("DodgeTheCreepsCS")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]

BIN
mono/DodgeTheCreepsCS/art/House In a Forest Loop.ogg


+ 15 - 0
mono/DodgeTheCreepsCS/art/House In a Forest Loop.ogg.import

@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggstr"
+
+[deps]
+
+source_file="res://art/House In a Forest Loop.ogg"
+dest_files=[ "res://.import/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0

BIN
mono/DodgeTheCreepsCS/art/enemyFlyingAlt_1.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/enemyFlyingAlt_1.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/enemyFlyingAlt_1.png-559f599b16c69b112c1b53f6332e9489.stex"
+
+[deps]
+
+source_file="res://art/enemyFlyingAlt_1.png"
+dest_files=[ "res://.import/enemyFlyingAlt_1.png-559f599b16c69b112c1b53f6332e9489.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/enemyFlyingAlt_2.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/enemyFlyingAlt_2.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/enemyFlyingAlt_2.png-31dc7310eda6e1b721224f3cd932c076.stex"
+
+[deps]
+
+source_file="res://art/enemyFlyingAlt_2.png"
+dest_files=[ "res://.import/enemyFlyingAlt_2.png-31dc7310eda6e1b721224f3cd932c076.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/enemySwimming_1.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/enemySwimming_1.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/enemySwimming_1.png-dd0e11759dc3d624c8a704f6e98a3d80.stex"
+
+[deps]
+
+source_file="res://art/enemySwimming_1.png"
+dest_files=[ "res://.import/enemySwimming_1.png-dd0e11759dc3d624c8a704f6e98a3d80.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/enemySwimming_2.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/enemySwimming_2.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/enemySwimming_2.png-4c0cbc0732264c4ea3290340bd4a0a62.stex"
+
+[deps]
+
+source_file="res://art/enemySwimming_2.png"
+dest_files=[ "res://.import/enemySwimming_2.png-4c0cbc0732264c4ea3290340bd4a0a62.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/enemyWalking_1.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/enemyWalking_1.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/enemyWalking_1.png-5af6eedbe61b701677d490ffdc1e6471.stex"
+
+[deps]
+
+source_file="res://art/enemyWalking_1.png"
+dest_files=[ "res://.import/enemyWalking_1.png-5af6eedbe61b701677d490ffdc1e6471.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/enemyWalking_2.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/enemyWalking_2.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/enemyWalking_2.png-67c480ed60c35e95f5acb0436246b935.stex"
+
+[deps]
+
+source_file="res://art/enemyWalking_2.png"
+dest_files=[ "res://.import/enemyWalking_2.png-67c480ed60c35e95f5acb0436246b935.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/gameover.wav


+ 21 - 0
mono/DodgeTheCreepsCS/art/gameover.wav.import

@@ -0,0 +1,21 @@
+[remap]
+
+importer="wav"
+type="AudioStreamSample"
+path="res://.import/gameover.wav-98c95c744b35280048c2bd093cf8a356.sample"
+
+[deps]
+
+source_file="res://art/gameover.wav"
+dest_files=[ "res://.import/gameover.wav-98c95c744b35280048c2bd093cf8a356.sample" ]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=true
+edit/normalize=true
+edit/loop=false
+compress/mode=0

BIN
mono/DodgeTheCreepsCS/art/playerGrey_up1.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/playerGrey_up1.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/playerGrey_up1.png-6bd114d0a6beac91f48e3a7314d44564.stex"
+
+[deps]
+
+source_file="res://art/playerGrey_up1.png"
+dest_files=[ "res://.import/playerGrey_up1.png-6bd114d0a6beac91f48e3a7314d44564.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/playerGrey_up2.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/playerGrey_up2.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/playerGrey_up2.png-d6aba85f5f2675ebc7045efa7552ee79.stex"
+
+[deps]
+
+source_file="res://art/playerGrey_up2.png"
+dest_files=[ "res://.import/playerGrey_up2.png-d6aba85f5f2675ebc7045efa7552ee79.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/playerGrey_walk1.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/playerGrey_walk1.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/playerGrey_walk1.png-c4773fe7a7bf85d7ab732eb4458c2742.stex"
+
+[deps]
+
+source_file="res://art/playerGrey_walk1.png"
+dest_files=[ "res://.import/playerGrey_walk1.png-c4773fe7a7bf85d7ab732eb4458c2742.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

BIN
mono/DodgeTheCreepsCS/art/playerGrey_walk2.png


+ 31 - 0
mono/DodgeTheCreepsCS/art/playerGrey_walk2.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/playerGrey_walk2.png-34d2d916366100182d08037c51884043.stex"
+
+[deps]
+
+source_file="res://art/playerGrey_walk2.png"
+dest_files=[ "res://.import/playerGrey_walk2.png-34d2d916366100182d08037c51884043.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 101 - 0
mono/DodgeTheCreepsCS/default_env.tres

@@ -0,0 +1,101 @@
+[gd_resource type="Environment" load_steps=2 format=2]
+
+[sub_resource type="ProceduralSky" id=1]
+
+radiance_size = 4
+sky_top_color = Color( 0.647059, 0.839216, 0.945098, 1 )
+sky_horizon_color = Color( 0.839216, 0.917647, 0.980392, 1 )
+sky_curve = 0.09
+sky_energy = 1.0
+ground_bottom_color = Color( 0.156863, 0.184314, 0.211765, 1 )
+ground_horizon_color = Color( 0.423529, 0.396078, 0.372549, 1 )
+ground_curve = 0.02
+ground_energy = 1.0
+sun_color = Color( 1, 1, 1, 1 )
+sun_latitude = 35.0
+sun_longitude = 0.0
+sun_angle_min = 1.0
+sun_angle_max = 100.0
+sun_curve = 0.05
+sun_energy = 16.0
+texture_size = 2
+
+[resource]
+
+background_mode = 2
+background_sky = SubResource( 1 )
+background_sky_custom_fov = 0.0
+background_color = Color( 0, 0, 0, 1 )
+background_energy = 1.0
+background_canvas_max_layer = 0
+ambient_light_color = Color( 0, 0, 0, 1 )
+ambient_light_energy = 1.0
+ambient_light_sky_contribution = 1.0
+fog_enabled = false
+fog_color = Color( 0.5, 0.6, 0.7, 1 )
+fog_sun_color = Color( 1, 0.9, 0.7, 1 )
+fog_sun_amount = 0.0
+fog_depth_enabled = true
+fog_depth_begin = 10.0
+fog_depth_curve = 1.0
+fog_transmit_enabled = false
+fog_transmit_curve = 1.0
+fog_height_enabled = false
+fog_height_min = 0.0
+fog_height_max = 100.0
+fog_height_curve = 1.0
+tonemap_mode = 0
+tonemap_exposure = 1.0
+tonemap_white = 1.0
+auto_exposure_enabled = false
+auto_exposure_scale = 0.4
+auto_exposure_min_luma = 0.05
+auto_exposure_max_luma = 8.0
+auto_exposure_speed = 0.5
+ss_reflections_enabled = false
+ss_reflections_max_steps = 64
+ss_reflections_fade_in = 0.15
+ss_reflections_fade_out = 2.0
+ss_reflections_depth_tolerance = 0.2
+ss_reflections_roughness = true
+ssao_enabled = false
+ssao_radius = 1.0
+ssao_intensity = 1.0
+ssao_radius2 = 0.0
+ssao_intensity2 = 1.0
+ssao_bias = 0.01
+ssao_light_affect = 0.0
+ssao_color = Color( 0, 0, 0, 1 )
+ssao_quality = 0
+ssao_blur = 3
+ssao_edge_sharpness = 4.0
+dof_blur_far_enabled = false
+dof_blur_far_distance = 10.0
+dof_blur_far_transition = 5.0
+dof_blur_far_amount = 0.1
+dof_blur_far_quality = 1
+dof_blur_near_enabled = false
+dof_blur_near_distance = 2.0
+dof_blur_near_transition = 1.0
+dof_blur_near_amount = 0.1
+dof_blur_near_quality = 1
+glow_enabled = false
+glow_levels/1 = false
+glow_levels/2 = false
+glow_levels/3 = true
+glow_levels/4 = false
+glow_levels/5 = true
+glow_levels/6 = false
+glow_levels/7 = false
+glow_intensity = 0.8
+glow_strength = 1.0
+glow_bloom = 0.0
+glow_blend_mode = 2
+glow_hdr_threshold = 1.0
+glow_hdr_scale = 2.0
+glow_bicubic_upscale = false
+adjustment_enabled = false
+adjustment_brightness = 1.0
+adjustment_contrast = 1.0
+adjustment_saturation = 1.0
+

+ 253 - 0
mono/DodgeTheCreepsCS/fonts/FONTLOG.txt

@@ -0,0 +1,253 @@
+Please distribute this file along with the Xolonium fonts when possible.
+
+
+Source
+
+	Find the sourcefiles of Xolonium at
+	<gitlab.com/sev/xolonium>
+
+
+Credits
+
+	Xolonium is created with FontForge <fontforge.org>,
+	Inkscape <inkscape.org>, Python <python.org>, and
+	FontTools <github.com/fonttools>.
+
+	It originated as a custom font for the open-source
+	game Xonotic <xonotic.org>. With many thanks to the
+	Xonotic community for your support.
+
+
+Supported OpenType features
+
+	case  Provides case sensitive placement of punctuation,
+	      brackets, and math symbols for uppercase text.
+	frac  Replaces number/number sequences with diagonal fractions.
+	      Numbers that touch a slash should not exceed 10 digits.
+	kern  Provides kerning for Latin, Greek, and Cyrillic scripts.
+	locl  Dutch: Replaces j with a stressed version if it follows í.
+	      Sami: Replaces n-form Eng with the preferred N-form version.
+	      Romanian and Moldovan: Replaces ŞşŢţ with the preferred ȘșȚț.
+	pnum  Replaces monospaced digits with proportional versions.
+	sinf  Replaces digits with scientific inferiors below the baseline.
+	subs  Replaces digits with subscript versions on the baseline.
+	sups  Replaces digits with superscript versions.
+	zero  Replaces zero with a slashed version.
+
+
+Supported glyph sets
+
+	Adobe Latin 3
+	OpenType W1G
+	ISO 8859-1   Western European
+	ISO 8859-2   Central European
+	ISO 8859-3   South European
+	ISO 8859-4   North European
+	ISO 8859-5   Cyrillic
+	ISO 8859-7   Greek
+	ISO 8859-9   Turkish
+	ISO 8859-10  Nordic
+	ISO 8859-13  Baltic Rim
+	ISO 8859-14  Celtic
+	ISO 8859-15  Western European
+	ISO 8859-16  South-Eastern European
+
+
+Available glyphs
+
+	 !"#$%&'()*+,-./0123456789:;<=>?
+	@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
+	`abcdefghijklmnopqrstuvwxyz{|}~
+
+	 ¡¢£¤¥¦§¨©ª«¬ ®¯°±²³´µ¶·¸¹º»¼½¾¿
+	ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß
+	àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
+	ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ
+	ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľ
+	ĿŀŁłŃńŅņŇňŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş
+	ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž
+	ƒǺǻǼǽǾǿȘșȚțȷ
+
+	ˆˇˉ˘˙˚˛˜˝
+
+	ͺ;΄΅Ά·ΈΉΊΌΎΏΐ
+	ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰ
+	αβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ
+
+	ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОП
+	РСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп
+	рстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ
+	ѢѣѲѳѴѵҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩ
+	ҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽӀӁӂӇӈӋӌӏӐӑӒӓ
+	ӔӕӖӗӘәӜӝӞӟӠӡӢӣӤӥӦӧӨөӮӯӰӱӲӳӴӵӶӷӸӹ
+	Ԥԥ
+
+	ḂḃḊḋḞḟṀṁṖṗṠṡṪṫẀẁẂẃẄẅẞỲỳ
+
+	     ‒–—―‘’‚‛“”„‟†‡•…‰′″‹›‽‾⁄
+	⁰⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
+	₤₦₩₫€₯₱₹₺₽₿
+	℅ℓ№℗™Ω℮
+	⅛⅜⅝⅞
+	←↑→↓
+	∂∆∏∑−∕∙√∞∟∫≈≠≤≥
+	⌖
+	■▬▮▰▲▶▼◀◆◊●◢◣◤◥
+	☄★☠☢☣⚙⚛⚠⚡⛔
+	❇❈❌❤❰❱❲❳
+	fffiflffiffl
+	🌌🌍🌎🌏👽💣🔥🔫
+	😁😃😄😆😇😈😉😊😎😐😒😕😘
+	😛😝😞😟😠😣😭😮😲😴😵
+	🚀
+
+
+Debugging glyphs
+
+	  U+EFFD  Font version
+	  U+F000  Font hinting indicator
+
+
+Changelog
+
+	Xolonium 4.1  2016-11-22  Severin Meyer  <[email protected]>
+		Reverted frac OpenType feature to a more stable implementation
+
+	Xolonium 4.0  2016-10-08  Severin Meyer  <[email protected]>
+		Decreased width of most glyphs
+		Thinner vertical stems in Xolonium-Regular
+		Thicker horizontal stems in Xolonium-Bold
+		Revised diagonal stems
+		Lowered middle bars
+		Revised diacritical bars
+		Added glyphs:
+			ӏẞ₿
+			U+2007 U+2008 U+2009 U+200A U+202F
+			U+EFFD U+F000
+		Revised glyphs:
+			$&,JKQRXkwxy~¢¤ßǻ˜ζκλμξφЖУжћѴѵ∕₱₺₦₩€ℓ№≈ffffiffl
+			❤🌍🌎🌏😁😄😇😈😉😊😘😭😮😴🚀
+		Removed uncommon glyphs:
+			ʼnſʼҌҍҎҏҾҿӃӄӇӈӚӛӪӫӬӭ
+			U+0312 U+0313 U+0326
+		Simplified OpenType features pnum, zero, and case
+		Removed OpenType feature dlig
+		Revised vertical metrics
+		Merged outlines of composite glyphs in otf version
+		Added ttf version with custom outlines and instructions
+		Added woff and woff2 version
+
+	Xolonium 3.1  2015-06-10  Severin Meyer  <[email protected]>
+		Added currency glyphs:
+			₦₩₫₱₹₺₽
+		Revised glyph:
+			₯
+		Relicensed public release under the SIL Open Font License 1.1
+
+	Xolonium 3.0  2015-05-04  Severin Meyer  <[email protected]>
+		Decreased width of glyphs
+		Decreased descender height
+		Increased height of super/subscript glyphs
+		Revised width of dashes, underscore, and overscore
+		Sharper bends with more circular proportions
+		Decreased stroke thickness of mathematical glyphs
+		Revised diacritical marks
+		Revised diacritical bars
+		Revised Cyrillic hooks
+		Revised glyphs:
+			GQRYjmuwßŊŒſƒǻfffiffiffl
+			ΞΨΩδζιξπςστυφω
+			ЉЄДЛУЭЯбдлэяєљђєћѢѣҨҩҼҽӃӄӘә
+			#$&'()*,/69?@[]{}~¡£¤¥§©®¿
+			‹›₤€₯ℓ№℗℮←↑→↓∂∏∑∞≈▰☄❈❰❱❲❳😝
+		Raised vertical position of mathematical glyphs
+		Unified advance width of numeral and monetary glyphs
+		Unified advance width of mathematical glyphs
+		Revised bearings
+		Rewrote kern feature
+		Bolder Xolonium-Bold with improved proportions
+		Updated glyph names to conform to the AGLFN 1.7
+		Revised hints and PS Private Dictionary
+		Added glyphs:
+			ӶӷԤԥ
+		Added OpenType features:
+			case frac liga locl pnum sinf subs sups zero
+
+	Xolonium 2.4  2014-12-23  Severin Meyer  <[email protected]>
+		Added dingbats:
+			⛔💣🔥
+		Revised size and design of emoticons
+		Revised dingbats:
+			⌖☄☠☣⚙⚛⚠⚡❇❈🌌🌍🌎🌏🔫
+		Removed dingbat:
+			💥
+
+	Xolonium 2.3  2014-08-14  Severin Meyer  <[email protected]>
+		Bugfixed ε and έ, thanks to bowzee for the feedback
+
+	Xolonium 2.2  2014-03-01  Severin Meyer  <[email protected]>
+		Added dingbats:
+			⌖◆●❌💥
+		Revised dingbats:
+			•←↑→↓◊☄★☠☣⚙⚛⚠⚡❇❈❤🌌🌍🌎🌏👽🔫🚀
+		Removed dingbats:
+			♻✪💡📡🔋🔧🔭
+
+	Xolonium 2.1  2013-10-20  Severin Meyer  <[email protected]>
+		Added dingbats:
+			←↑→↓❰❱❲❳■▬▮▰▲▶▼◀◢◣◤◥
+			☄★☠☢☣♻⚙⚛⚠⚡✪❇❈❤
+			🌌🌍🌎🌏👽💡📡🔋🔧🔫🔭🚀
+			😁😃😄😆😇😈😉😊😎😐😒😕
+			😘😛😝😞😟😠😣😭😮😲😴😵
+
+	Xolonium 2.0.1  2013-07-12  Severin Meyer  <[email protected]>
+		Reorganised and simplified files
+
+	Xolonium 2.0  2012-08-11  Severin Meyer  <[email protected]>
+		Revised bends
+		Revised thickness of uppercase diagonal stems
+		Revised diacritical marks
+		Revised hints and PS Private Dictionary
+		Revised glyphs:
+			*1469@DPRly{}§©®¶ÐÞƒΘΞαεζνξνυЄЉЊ
+			ЏБЗЛУЧЪЫЬЭЯбзлчъыьэяєљњџ•€∂∙√∞∫≠
+		Completed glyph sets:
+			Adobe Latin 3
+			OpenType World Glyph Set 1 (W1G)
+			Ghostscript Standard (ghostscript-fonts-std-8.11)
+		Added OpenType kern feature
+		Added Xolonium-Bold
+
+	Xolonium 1.2  2011-02-12  Severin Meyer  <[email protected]>
+		Revised glyphs:
+			D·Ðı
+		Completed glyph sets:
+			ISO 8859-7 (Greek)
+			Unicode Latin Extended-A block
+		Added glyphs:
+			†‡•…‰⁄™∂∑−√∞≠≤≥
+
+	Xolonium 1.1  2011-01-17  Severin Meyer  <[email protected]>
+		Revised placement of cedilla and ogonek in accented glyphs
+		Revised glyphs:
+			,;DKTjkvwxy¥§Ð˛€
+		Completed glyph sets:
+			ISO 8859-2  (Central European)
+			ISO 8859-3  (South European, Esperanto)
+			ISO 8859-4  (North European)
+			ISO 8859-5  (Cyrillic)
+			ISO 8859-9  (Turkish)
+			ISO 8859-10 (Nordic)
+			ISO 8859-13 (Baltic Rim)
+			ISO 8859-14 (Celtic)
+			ISO 8859-16 (South-Eastern European)
+		Added glyphs:
+			ȷʼ̒ ЀЍѐѝ‒–—‘’‚‛“”„‟‹›
+
+	Xolonium 1.0  2011-01-04  Severin Meyer  <[email protected]>
+		Completed glyph sets:
+			ISO 8859-1  (Western European)
+			ISO 8859-15 (Western European)
+		Added glyphs:
+			ĄĆĘŁŃŚŹŻąćęłńśźżıˆˇ˙˚˛˜

+ 94 - 0
mono/DodgeTheCreepsCS/fonts/LICENSE.txt

@@ -0,0 +1,94 @@
+Copyright 2011-2016 Severin Meyer <[email protected]>,
+with Reserved Font Name Xolonium.
+
+This Font Software is licensed under the SIL Open Font License,
+Version 1.1. This license is copied below, and is also available
+with a FAQ at <http://scripts.sil.org/OFL>
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
mono/DodgeTheCreepsCS/fonts/Xolonium-Regular.ttf


BIN
mono/DodgeTheCreepsCS/icon.png


+ 31 - 0
mono/DodgeTheCreepsCS/icon.png.import

@@ -0,0 +1,31 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+
+[deps]
+
+source_file="res://icon.png"
+dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 29 - 0
mono/DodgeTheCreepsCS/project.godot

@@ -0,0 +1,29 @@
+; 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=3
+
+_global_script_classes=[  ]
+_global_script_class_icons={
+
+}
+
+[application]
+
+config/name="DodgeTheCreepsCS"
+run/main_scene="res://Main.tscn"
+config/icon="res://icon.png"
+
+[display]
+
+window/size/width=480
+window/size/height=720
+
+[rendering]
+
+environment/default_environment="res://default_env.tres"