From 36b934b20033bd254264a52b0d66fe9db879c4f3 Mon Sep 17 00:00:00 2001 From: Conor Edmonds Date: Mon, 2 Feb 2026 17:51:12 -0500 Subject: [PATCH] made an action be owned by a contact instead of actor; made another example action --- Gameplay/Action.cs | 2 +- Gameplay/Actions/Example1.cs | 6 +++--- Gameplay/Actions/Example2.cs | 22 ++++++++++++++++++++++ Gameplay/Actions/Example2.cs.uid | 1 + Gameplay/Contact.cs | 12 ++++++++---- Gameplay/Phone.cs | 5 ++++- 6 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 Gameplay/Actions/Example2.cs create mode 100644 Gameplay/Actions/Example2.cs.uid diff --git a/Gameplay/Action.cs b/Gameplay/Action.cs index b40c714..b07f1eb 100644 --- a/Gameplay/Action.cs +++ b/Gameplay/Action.cs @@ -4,7 +4,7 @@ using System; public partial class Action : Node { public float _timerSeconds, _cooldownSeconds; - public Actor _owner; + public Contact _contact; public virtual void Fire() { diff --git a/Gameplay/Actions/Example1.cs b/Gameplay/Actions/Example1.cs index bbc1beb..0b90f10 100644 --- a/Gameplay/Actions/Example1.cs +++ b/Gameplay/Actions/Example1.cs @@ -16,10 +16,10 @@ public partial class Example1 : Action { base.Fire(); // GD.Print(_owner); - List unbrokenShields = [.. _owner._board._shields.Where(s=>!s._broken)]; + List unbrokenShields = [.. _contact._owner._board._shields.Where(s=>!s._broken)]; int shieldNumber = Globals._rng.Next(0, unbrokenShields.Count); int damageAmount = Globals._rng.Next(-12,-8); - _owner._board._shields[shieldNumber].ChangeHealth(damageAmount); - ((Player)_owner)._phone._debug.Text = "Shield " + shieldNumber + " damaged " + damageAmount + "hp"; + _contact._owner._board._shields[shieldNumber].ChangeHealth(damageAmount); + ((Player)_contact._owner)._phone._debug.Text = "Shield " + shieldNumber + " damaged " + damageAmount + "hp"; } } diff --git a/Gameplay/Actions/Example2.cs b/Gameplay/Actions/Example2.cs new file mode 100644 index 0000000..85b26f8 --- /dev/null +++ b/Gameplay/Actions/Example2.cs @@ -0,0 +1,22 @@ +using Godot; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; + +public partial class Example2 : Action +{ + public override void _Ready() + { + base._Ready(); + } + + public override void Fire() + { + base.Fire(); + int shieldNumber = 2; + int damageAmount = Globals._rng.Next(-50,-30); + _contact._owner._board._shields[shieldNumber].ChangeHealth(damageAmount); + ((Player)_contact._owner)._phone._debug.Text = "Shield " + shieldNumber + " damaged " + damageAmount + "hp"; + } +} diff --git a/Gameplay/Actions/Example2.cs.uid b/Gameplay/Actions/Example2.cs.uid new file mode 100644 index 0000000..7d47d16 --- /dev/null +++ b/Gameplay/Actions/Example2.cs.uid @@ -0,0 +1 @@ +uid://bsmvcs8l2p211 diff --git a/Gameplay/Contact.cs b/Gameplay/Contact.cs index 5a26a19..1e517aa 100644 --- a/Gameplay/Contact.cs +++ b/Gameplay/Contact.cs @@ -4,7 +4,7 @@ using System.Runtime.CompilerServices; public partial class Contact : Sprite2D { - public bool _clickable, _interval; + public bool _clickable = false, _interval = false; public int _number, _calls = 0, _maxCalls = 0; public Timer _timer, _cooldown; public Action _action; @@ -15,11 +15,12 @@ public partial class Contact : Sprite2D _timer = GetNode("Timer"); _cooldown = GetNode("Cooldown"); _action = GetNode("Action"); + _action._contact = this; } public virtual void CallAction() { - if (_cooldown.TimeLeft > 0 || _action._cooldownSeconds == 0) + if (_cooldown.TimeLeft == 0 || _action._cooldownSeconds == 0) { GD.Print("Action fired!!"); _action.Fire(); @@ -33,17 +34,20 @@ public partial class Contact : Sprite2D public void PassOwner(Actor OWNER) { _owner = OWNER; - _action._owner = OWNER; } public void SetTimer(float SECONDS) { _action._timerSeconds = SECONDS; + _interval = true; + _clickable = false; } - public void SetCooldown(int SECONDS) + public void SetCooldown(float SECONDS) { _action._cooldownSeconds = SECONDS; + _interval = false; + _clickable = true; } public void Start() diff --git a/Gameplay/Phone.cs b/Gameplay/Phone.cs index 068e433..2a8ee69 100644 --- a/Gameplay/Phone.cs +++ b/Gameplay/Phone.cs @@ -22,8 +22,11 @@ public partial class Phone : Sprite2D _phoneButtons[i]._phone = this; } _phoneButtons[0]._contact._action = new Example1(); - _phoneButtons[0]._contact._action._owner = _player; + _phoneButtons[0]._contact.PassOwner(_player); _phoneButtons[0]._contact.SetTimer(1.5f); + _phoneButtons[1]._contact._action = new Example2(); + _phoneButtons[1]._contact.PassOwner(_player); + _phoneButtons[1]._contact.SetCooldown(15f); } public override void _Process(double DELTA_)