diff --git a/Gameplay/Actor.cs b/Gameplay/Actor.cs index 8ffb0ea..30c8137 100644 --- a/Gameplay/Actor.cs +++ b/Gameplay/Actor.cs @@ -7,7 +7,6 @@ using System.Security.Cryptography.X509Certificates; public partial class Actor : Sprite2D { public Sprite2D _markNormal, _markPressed, _markHovered, _markDisabled, _markFocused; - public Goal _goal; public Board _board; public override void _Ready() { diff --git a/Gameplay/Board.cs b/Gameplay/Board.cs index 31ad11a..91a507f 100644 --- a/Gameplay/Board.cs +++ b/Gameplay/Board.cs @@ -71,9 +71,9 @@ public partial class Board : Sprite2D return _cells.Single(c=>c._address == ADDRESS); } - public List GetCellsByOwner(Player PLAYER) + public List GetCellsByOwner(Actor ACTOR) { - return _cells.Where(c=>c._marker == PLAYER).ToList(); + return _cells.Where(c=>c._marker == ACTOR).ToList(); } //THIS SHOULD BE MOVED INTO ACTION LOGIC diff --git a/Gameplay/BusinessCard.cs b/Gameplay/BusinessCard.cs index a5113bd..e8505c2 100644 --- a/Gameplay/BusinessCard.cs +++ b/Gameplay/BusinessCard.cs @@ -19,9 +19,12 @@ public partial class BusinessCard : TextureButton public override void _Pressed() { base._Pressed(); - GD.Print("Pressed"); - _player._activeEnemy.Defeat(_goalName); - _player.Challenge(_player._activeEnemy._owner._board._owner); + _player._busDebug.Text = _goalName.ToString() + (_goalMet ? "": " NOT") + " MET"; + if (_goalMet) + { + _player._activeEnemy.Defeat(_goalName); + _player.Challenge(_player._activeEnemy._owner._board._owner); + } } public void AssignGoal(GoalName GOALNAME) @@ -29,14 +32,17 @@ public partial class BusinessCard : TextureButton _goalName = GOALNAME; } + public void AssignRandomGoal() + { + Random r = new Random(); + AssignGoal(_goal._conditions.Keys.ElementAt(r.Next(_goal._conditions.Keys.Count))); + } + public void CheckGoal() { List ownedCells = _player._board.GetCellsByOwner(_player); List addresses = _goal.GetAddresses(_goalName); _goalMet = addresses.All(a=>ownedCells.Select(c=>c._address).ToList().IndexOf(a)>-1); - GD.Print(_goalMet); - Disabled = !_goalMet; - GD.Print(Disabled); } public void PassPlayer(Player PLAYER) diff --git a/Gameplay/Cell.cs b/Gameplay/Cell.cs index 886fab3..666c9cc 100644 --- a/Gameplay/Cell.cs +++ b/Gameplay/Cell.cs @@ -20,8 +20,6 @@ public partial class Cell : TextureButton public override void _Pressed() { base._Pressed(); - // GD.Print(_tenant.GetType().ToString() + " " + _tenant._number + " Pressed"); - // GD.Print(_board._owner.GetType().ToString() + " " + _board._owner._number + " Pressed"); _owner.ClickCell(this); } diff --git a/Gameplay/Enemy.cs b/Gameplay/Enemy.cs index 4c2cfb3..9ee351a 100644 --- a/Gameplay/Enemy.cs +++ b/Gameplay/Enemy.cs @@ -1,5 +1,7 @@ using Godot; using System; +using System.Collections.Generic; +using System.Linq; public partial class Enemy : Actor { @@ -7,6 +9,7 @@ public partial class Enemy : Actor public Player _playerOpponent; public Cell _cell; public Enemy _owner; + public List _defaultGoals = new(); public override void _Ready() { @@ -14,6 +17,14 @@ public partial class Enemy : Actor _board = GetNode("Board"); _board.ClaimOwnership(this); _board.Disable(true); + _defaultGoals.Add(GoalName.TopRow); + _defaultGoals.Add(GoalName.MiddleRow); + _defaultGoals.Add(GoalName.BottomRow); + _defaultGoals.Add(GoalName.LeftColumn); + _defaultGoals.Add(GoalName.MiddleColumn); + _defaultGoals.Add(GoalName.RightColumn); + _defaultGoals.Add(GoalName.Diagonal1To9); + _defaultGoals.Add(GoalName.Diagonal3To7); } public virtual void PassPlayer(Player PLAYER) @@ -21,6 +32,23 @@ public partial class Enemy : Actor _playerOpponent = PLAYER; } + public void CheckGoals() + { + List ownedCells = _board.GetCellsByOwner(this); + Goal goal = new Goal(); + for (int i = 0; i < _defaultGoals.Count; i++) + { + GoalName goalName = _defaultGoals[i]; + List addresses = goal.GetAddresses(goalName); + bool goalMet = addresses.All(a=>ownedCells.Select(c=>c._address).ToList().IndexOf(a)>-1); + if (goalMet) + { + Victory(goalName); + return; + } + } + } + public virtual void ClickCell(Cell CLICKEDCELL) { diff --git a/Gameplay/Goal.cs b/Gameplay/Goal.cs index f24b663..c842f52 100644 --- a/Gameplay/Goal.cs +++ b/Gameplay/Goal.cs @@ -14,8 +14,8 @@ public partial class Goal : Node {GoalName.LeftColumn, new (){1,4,7}}, {GoalName.MiddleColumn, new (){2,5,8}}, {GoalName.RightColumn, new (){3,6,9}}, - {GoalName.ForwardDiagonal, new (){3,5,7}}, - {GoalName.BackwardDiagonal, new (){1,5,9}}, + {GoalName.Diagonal1To9, new (){1,5,9}}, + {GoalName.Diagonal3To7, new (){3,5,7}}, {GoalName.Number1, new (){1,2,5,7,8,9}}, {GoalName.Number2, new (){1,2,4,5,8,9}}, {GoalName.Number3, new (){1,2,5,6,7,8}}, @@ -62,6 +62,8 @@ public partial class Goal : Node {GoalName.ShortRightAngleAt9, new (){6,8,9}}, {GoalName.Corners, new (){1,4,7,9}}, {GoalName.Diamond, new (){2,4,6,8}}, + {GoalName.Blackout, new (){1,2,3,4,5,6,7,8,9}}, + }; public List GetAddresses(GoalName NAME) diff --git a/Gameplay/GoalName.cs b/Gameplay/GoalName.cs index a5c03c6..301911b 100644 --- a/Gameplay/GoalName.cs +++ b/Gameplay/GoalName.cs @@ -6,8 +6,8 @@ public enum GoalName LeftColumn, MiddleColumn, RightColumn, - ForwardDiagonal, - BackwardDiagonal, + Diagonal1To9, + Diagonal3To7, Number1, Number2, Number3, @@ -54,5 +54,6 @@ public enum GoalName ShortRightAngleAt9, Corners, Diamond, - Plus + Plus, + Blackout } \ No newline at end of file diff --git a/Gameplay/Mook.cs b/Gameplay/Mook.cs index f3436f7..eb888ea 100644 --- a/Gameplay/Mook.cs +++ b/Gameplay/Mook.cs @@ -15,6 +15,6 @@ public partial class Mook : Enemy public override void ClickCell(Cell CLICKEDCELL) { CLICKEDCELL.Mark(_playerOpponent); - _playerOpponent.CheckBusinessCards(); + _playerOpponent.CheckGoals(); } } diff --git a/Gameplay/business_card.tscn b/Gameplay/business_card.tscn index b0f9ba2..ec6c354 100644 --- a/Gameplay/business_card.tscn +++ b/Gameplay/business_card.tscn @@ -6,7 +6,6 @@ [node name="BusinessCard" type="TextureButton"] modulate = Color(1, 1, 1, 0.2) -disabled = true texture_normal = ExtResource("1_8xr8s") texture_pressed = ExtResource("1_8xr8s") texture_hover = ExtResource("1_8xr8s") diff --git a/Gameplay/player.tscn b/Gameplay/player.tscn index 562dd2e..009c7b8 100644 --- a/Gameplay/player.tscn +++ b/Gameplay/player.tscn @@ -49,3 +49,108 @@ offset_left = 98.0 offset_top = 769.0 offset_right = 298.0 offset_bottom = 969.0 + +[node name="DefaultDiagonal1To9" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 461.0 +offset_top = 41.0 +offset_right = 661.0 +offset_bottom = 241.0 + +[node name="DefaultTopRow" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 467.0 +offset_top = 236.0 +offset_right = 667.0 +offset_bottom = 436.0 + +[node name="DefaultMiddleRow" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 461.0 +offset_top = 437.0 +offset_right = 661.0 +offset_bottom = 637.0 + +[node name="DefaultBottomRow" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 458.0 +offset_top = 637.0 +offset_right = 658.0 +offset_bottom = 837.0 + +[node name="DefaultLeftColumn" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 665.0 +offset_top = 38.0 +offset_right = 865.0 +offset_bottom = 238.0 + +[node name="DefaultMiddleColumn" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 863.0 +offset_top = 35.0 +offset_right = 1063.0 +offset_bottom = 235.0 + +[node name="DefaultRightColumn" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1061.0 +offset_top = 41.0 +offset_right = 1261.0 +offset_bottom = 241.0 + +[node name="DefaultDiagonal3To7" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1264.0 +offset_top = 44.0 +offset_right = 1464.0 +offset_bottom = 244.0 + +[node name="DefaultTopRowAlt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1261.0 +offset_top = 236.0 +offset_right = 1461.0 +offset_bottom = 436.0 + +[node name="DefaultMiddleRowAlt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1255.0 +offset_top = 434.0 +offset_right = 1455.0 +offset_bottom = 634.0 + +[node name="DefaultBottomRowAlt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1261.0 +offset_top = 628.0 +offset_right = 1461.0 +offset_bottom = 828.0 + +[node name="DefaultDiagonal1To9Alt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1264.0 +offset_top = 826.0 +offset_right = 1464.0 +offset_bottom = 1026.0 + +[node name="DefaultDiagonal3To7Alt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 467.0 +offset_top = 829.0 +offset_right = 667.0 +offset_bottom = 1029.0 + +[node name="DefaultLeftColumnAlt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 665.0 +offset_top = 838.0 +offset_right = 865.0 +offset_bottom = 1038.0 + +[node name="DefaultMiddleColumnAlt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 869.0 +offset_top = 838.0 +offset_right = 1069.0 +offset_bottom = 1038.0 + +[node name="DefaultRightColumnAlt" parent="." instance=ExtResource("5_ek8wa")] +offset_left = 1064.0 +offset_top = 838.0 +offset_right = 1264.0 +offset_bottom = 1038.0 + +[node name="BusDebug" type="RichTextLabel" parent="."] +offset_top = 276.0 +offset_right = 322.0 +offset_bottom = 429.0 +theme_override_font_sizes/normal_font_size = 32 +text = "BusDEBUG" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/Player.cs b/Player.cs index 19953bc..5b85234 100644 --- a/Player.cs +++ b/Player.cs @@ -11,7 +11,7 @@ public partial class Player : Actor public Phone _phone; public Boss _boss; public Enemy _activeEnemy; - public RichTextLabel _debug; + public RichTextLabel _debug, _busDebug; public List _businessCards; public override void _Ready() @@ -19,6 +19,7 @@ public partial class Player : Actor base._Ready(); _debug = GetNode("Debug"); + _busDebug = GetNode("BusDebug"); _phone = GetNode("Phone"); _phone.PassPlayer(this); @@ -30,10 +31,19 @@ public partial class Player : Actor for (int i = 0; i < _businessCards.Count; i++) { _businessCards[i].PassPlayer(this); - _businessCards[i].AssignGoal(GoalName.MiddleColumn); + if (_businessCards[i].Name.ToString().IndexOf("Default") > -1) + { + string goalNameString = _businessCards[i].Name.ToString().Replace("Default","").Replace("Alt",""); + GoalName goalName; + Enum.TryParse(goalNameString, out goalName); + _businessCards[i].AssignGoal(goalName); + } + else + { + _businessCards[i].AssignRandomGoal(); + } } - Challenge(_boss); } @@ -43,7 +53,7 @@ public partial class Player : Actor ENEMY._board.Activate(); _board = ENEMY._board; _activeEnemy = ENEMY; - CheckBusinessCards(); + CheckGoals(); string text = ""; if (_activeEnemy is Mook) @@ -57,7 +67,7 @@ public partial class Player : Actor _debug.Text = text; } - public void CheckBusinessCards() + public void CheckGoals() { _businessCards.ForEach(b=>b.CheckGoal()); }