From 6d325b48ca41c86358dbe2e9276d54dfd824018e Mon Sep 17 00:00:00 2001 From: Johndayll Date: Wed, 17 Feb 2021 20:14:04 +0800 Subject: [PATCH 1/4] Add keyboard controls There are a handful of bugfixing and exception handling needed, but it works --- Assets/UI/TextBox.png | Bin 0 -> 142 bytes Assets/UI/TextBox.png.import | 34 ++++ Code Combat.csproj | 6 + Code Combat.csproj.old | 6 + Code Combat.sln | 19 ++ Levels/ArenaManager.cs | 363 ++++++++++++++++------------------- Levels/ClassSelect.tscn | 1 + Levels/NavigationArena.tscn | 101 +++++----- Levels/UI/MainUI.tscn | 63 ++---- Levels/UI/TextBox.cs | 42 ++++ Objects/Archer.tscn | 25 ++- Objects/Basic.tscn | 3 +- Troop Names.txt | 9 + project.godot | 18 +- 14 files changed, 386 insertions(+), 304 deletions(-) create mode 100644 Assets/UI/TextBox.png create mode 100644 Assets/UI/TextBox.png.import create mode 100644 Code Combat.csproj create mode 100644 Code Combat.csproj.old create mode 100644 Code Combat.sln create mode 100644 Levels/UI/TextBox.cs create mode 100644 Troop Names.txt diff --git a/Assets/UI/TextBox.png b/Assets/UI/TextBox.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9859c13c1fefca5a8379829446f11f1fab3705 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^2|%pC!3HGX9;gigQlXwMjv*P1Z?A9UJ)pqj>L|1E z|0zFFPO%5xPu4Moi>*)M0V)E59g(%|@7_I8st*p`%FAMrUi(^oCkN9JP60KC84QU` hEl@`B-XFZo>3grt5a2m+k6RC<)6><@Wt~$(695yYD`Nlv literal 0 HcmV?d00001 diff --git a/Assets/UI/TextBox.png.import b/Assets/UI/TextBox.png.import new file mode 100644 index 0000000..6d23a88 --- /dev/null +++ b/Assets/UI/TextBox.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/TextBox.png-2ad7bec0b4178924442104273f95e7b4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/UI/TextBox.png" +dest_files=[ "res://.import/TextBox.png-2ad7bec0b4178924442104273f95e7b4.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=false +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 diff --git a/Code Combat.csproj b/Code Combat.csproj new file mode 100644 index 0000000..ad87733 --- /dev/null +++ b/Code Combat.csproj @@ -0,0 +1,6 @@ + + + net472 + CodeCombat + + \ No newline at end of file diff --git a/Code Combat.csproj.old b/Code Combat.csproj.old new file mode 100644 index 0000000..8a6563a --- /dev/null +++ b/Code Combat.csproj.old @@ -0,0 +1,6 @@ + + + net472 + CodeCombat + + \ No newline at end of file diff --git a/Code Combat.sln b/Code Combat.sln new file mode 100644 index 0000000..8587323 --- /dev/null +++ b/Code Combat.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Code Combat", "Code Combat.csproj", "{C43DDD98-445D-4980-B226-93C668245C1D}" +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 + {C43DDD98-445D-4980-B226-93C668245C1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C43DDD98-445D-4980-B226-93C668245C1D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C43DDD98-445D-4980-B226-93C668245C1D}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU + {C43DDD98-445D-4980-B226-93C668245C1D}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU + {C43DDD98-445D-4980-B226-93C668245C1D}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU + {C43DDD98-445D-4980-B226-93C668245C1D}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU + EndGlobalSection +EndGlobal diff --git a/Levels/ArenaManager.cs b/Levels/ArenaManager.cs index 3de1493..b59af01 100644 --- a/Levels/ArenaManager.cs +++ b/Levels/ArenaManager.cs @@ -1,4 +1,6 @@ using System.Collections.Generic; +using System; +using System.IO; using CodeBlitz.Objects; using Godot; @@ -8,27 +10,24 @@ public class ArenaManager : Node2D { List YellowTeam = new List(); List RedTeam = new List(); + private List _troopNames = new List(); private PackedScene _archerScene; private PackedScene _basicScene; private PackedScene _tankScene; private PackedScene _wizardScene; private PackedScene _knightScene; + private List _inputList = new List(); private PackedScene _smokeScene; + private Random _random = new Random(); private string _attacker = "Yellow"; private string _defender = "Red"; private WorldManager _worldManager; private Highlight _worldHighlight; private PlayerHighlight _playerHighlight; - private Entity currentEntity; private Entity previousEntity; private int _troopsMoved = 0; - private int _troopIndex = 0; - private bool _canAttack = false; - private bool _canChoosetarget = false; - private bool _canChooseLoc = false; - private bool _canWalk = false; - private bool _unitSelected = false; - private string _state = string.Empty; + private int _troopsSpawned = 0; + private bool isSpawn = true; private string _currentTeamSpawning = "Yellow"; [Signal] public delegate void DisplayTroopList(string team); [Signal] public delegate void UpdateTroopList(string team); @@ -48,14 +47,72 @@ public override void _Ready() _knightScene = ResourceLoader.Load("res://Objects/Knight.tscn"); _smokeScene = ResourceLoader.Load("res://Objects/Smoke.tscn"); Connect(nameof(GameOver), this, nameof(_end_Game)); + + StreamReader sr = new StreamReader("Troop Names.txt"); + string line; + while ((line = sr.ReadLine()) != null) + { + _troopNames.Add(line); + } } + public override void _Input(InputEvent @event) + { + if(isSpawn && @event is InputEventMouse eventKey && eventKey.IsPressed()) + { + var position = _worldManager.WorldToMap(eventKey.Position); + if(!_worldManager.ExistsInArray(position, _worldManager.Obstacles) + && !_worldManager.ExistsInArray(position, _worldManager.Players)) + { + Entity entity; + Vector2 half = (_worldManager.CellSize / 2) / 2; + string name = _troopNames[_random.Next(0, _troopNames.Count - 1)]; + _troopNames.Remove(name); + if(_currentTeamSpawning == "Yellow") + { + entity = GetInstance(Troops.YellowTeam[_troopsSpawned]).Instance() as Entity; + entity.Name = Troops.YellowTeam[_troopsSpawned]; + YellowTeam.Add(entity); + } + else + { + entity = GetInstance(Troops.RedTeam[_troopsSpawned]).Instance() as Entity; + entity.Name = Troops.RedTeam[_troopsSpawned]; + RedTeam.Add(entity); + } + entity.Name = name; + entity.GetNode