diff options
| author | hazel <hazel@hazelthats.me> | 2026-01-26 22:04:39 +0100 |
|---|---|---|
| committer | hazel <hazel@hazelthats.me> | 2026-01-26 22:04:39 +0100 |
| commit | 567c422f8cd42eba2437f9a8c2522716a1649be7 (patch) | |
| tree | 93c5b296f3b7c14b626d0aadf5cad37764c41c74 /source/game/items/UpgradeItemActions.cs | |
| download | celesteia-567c422f8cd42eba2437f9a8c2522716a1649be7.tar.gz celesteia-567c422f8cd42eba2437f9a8c2522716a1649be7.tar.bz2 celesteia-567c422f8cd42eba2437f9a8c2522716a1649be7.zip | |
celesteia archive, last updated april 9th 2024
Signed-off-by: hazel <hazel@hazelthats.me>
Diffstat (limited to 'source/game/items/UpgradeItemActions.cs')
| -rw-r--r-- | source/game/items/UpgradeItemActions.cs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/source/game/items/UpgradeItemActions.cs b/source/game/items/UpgradeItemActions.cs new file mode 100644 index 0000000..18d922d --- /dev/null +++ b/source/game/items/UpgradeItemActions.cs @@ -0,0 +1,48 @@ +using System; +using Celesteia.Game.Components; +using Celesteia.Game.Planets; +using Microsoft.Xna.Framework; +using MonoGame.Extended.Entities; + +namespace Celesteia.Game.Items { + public class UpgradeItemActions : CooldownItemActions { + private float _increase; + private EntityAttribute _attribute; + private float _max; + + public UpgradeItemActions(EntityAttribute attribute, float increase, float max) { + UseTime = 0.2; + _attribute = attribute; + _increase = increase; + _max = max; + } + + public override bool Primary(GameTime gameTime, ChunkMap chunkMap, Point cursor, Entity user) => Assert(gameTime, user) && Use(user); + + // Check if the conditions to use this item's action are met. + public bool Assert(GameTime gameTime, Entity user) { + if (!base.Assert(gameTime)) return false; + + // If the user has no attributes, the rest of the function will not work, so check if they're there first. + if (!user.Has<EntityAttributes>()) return false; + + EntityAttributes.EntityAttributeMap attributes = user.Get<EntityAttributes>().Attributes; + + // If the attribute is maxed out, don't upgrade. + if (attributes.Get(_attribute) >= _max) return false; + + UpdateLastUse(gameTime); + + return true; + } + + + public bool Use(Entity user) { + // Use the upgrade. + EntityAttributes.EntityAttributeMap attributes = user.Get<EntityAttributes>().Attributes; + attributes.Set(_attribute, Math.Clamp(attributes.Get(_attribute) + _increase, 0f, _max)); + + return true; + } + } +}
\ No newline at end of file |
