yeah you're going straight to hell

This commit is contained in:
reisenlol 2026-02-07 11:21:21 -08:00
parent 11d1cbb543
commit e30de274c8
No known key found for this signature in database
15 changed files with 3061 additions and 913 deletions

View file

@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: abe88be260cd4b175b742754eaee097f, type: 3}
m_Name: Projectile Count Upgrade
m_EditorClassIdentifier:
upgradeName: Projectile Count Upgrade
upgradeIcon: {fileID: 0}
thisPlayerAbility: {fileID: 0}
count: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6fe34d7ec95c2ce1fac0727c553b5f0b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,66 @@
using System;
using UnityEngine;
using UnityEngine.UI;
public class AbilityManager : MonoBehaviour
{
#region Statication
public static AbilityManager instance;
private void Awake()
{
if (instance != null && instance != this)
{
Destroy(gameObject);
return;
}
instance = this;
}
#endregion
public MarisaAbilityHandler player;
public AbilityUpgrade upgradeToAdd;
public Button upgradeButton;
private void Start()
{
upgradeButton.onClick.AddListener((() => AddUpgrade(upgradeToAdd, player.mainAttackInstance)));
}
public void AddUpgrade(AbilityUpgrade upgrade, PlayerAbility ability)
{
if (!ability.attachedUpgrades.Contains(upgrade))
{
AbilityUpgrade newUpgrade = Instantiate(upgrade, ability.transform);
ability.attachedUpgrades.Add(newUpgrade);
newUpgrade.thisPlayerAbility = ability;
newUpgrade.ApplyUpgrade();
}
else
{
ability.attachedUpgrades.TryGetValue(upgrade, out AbilityUpgrade foundUpgrade);
if (foundUpgrade)
{
foundUpgrade.count++;
foundUpgrade.ApplyUpgrade();
}
}
}
public void RemoveUpgrade(AbilityUpgrade upgrade, PlayerAbility ability)
{
if (ability.attachedUpgrades.TryGetValue(upgrade, out AbilityUpgrade foundUpgrade))
{
if (foundUpgrade.count > 1)
{
foundUpgrade.ApplyRemoval();
foundUpgrade.count--;
}
else
{
foundUpgrade.ApplyRemoval();
ability.attachedUpgrades.Remove(foundUpgrade);
}
}
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1536116e866f6604e8d93d80bb9a6237

View file

@ -1,16 +1,22 @@
using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
public class AbilityUIHandler : MonoBehaviour public class AbilityUIHandler : MonoBehaviour
{ {
// Start is called once before the first execution of Update after the MonoBehaviour is created public List<AbilityUIObject> uiObjects = new();
void Start()
[SerializeField] private MarisaAbilityHandler playerAbilityHandler;
private void Start()
{ {
uiObjects[0].thisAbility = playerAbilityHandler.mainAttackInstance;
} uiObjects[1].thisAbility = playerAbilityHandler.secondaryAttackInstance;
uiObjects[2].thisAbility = playerAbilityHandler.spellAInstance;
// Update is called once per frame uiObjects[3].thisAbility = playerAbilityHandler.spellBInstance;
void Update() foreach (AbilityUIObject uiObject in uiObjects)
{ {
uiObject.UpdateUI();
}
} }
} }

View file

@ -8,24 +8,45 @@ public class AbilityUIObject : MonoBehaviour
[Header("Ability Identification")] [Header("Ability Identification")]
[SerializeField] private Image abilityIcon; [SerializeField] private Image abilityIcon;
[SerializeField] private TextMeshProUGUI abilityName; [SerializeField] private TextMeshProUGUI abilityName;
[Header("Ability Stats")] [Header("Ability Stats")]
[SerializeField] private TextMeshProUGUI damage; [SerializeField] private TextMeshProUGUI damage;
[SerializeField] private TextMeshProUGUI fireRate; [SerializeField] private TextMeshProUGUI fireRate;
[SerializeField] private TextMeshProUGUI piercing; [SerializeField] private TextMeshProUGUI piercing;
[SerializeField] private TextMeshProUGUI projectileCount; [SerializeField] private TextMeshProUGUI projectileCount;
[Header("Upgrades")] [Header("Upgrades")]
[SerializeField] private List<Transform> upgradeBoxes = new(); [SerializeField] private UpgradeBoxUI templateUpgradeBox;
[SerializeField] private Transform upgradeGrid;
[SerializeField] private List<UpgradeBoxUI> upgradeBoxes = new();
public void UpdateUI(PlayerAbility ability) public PlayerAbility thisAbility;
public void UpdateUI()
{ {
abilityIcon.sprite = ability.abilityIcon; abilityIcon.sprite = thisAbility.abilityIcon;
abilityName.text = ability.abilityName; abilityName.text = thisAbility.abilityName;
damage.text = $"Damage: {ability.power}"; damage.text = $"Damage: {thisAbility.power}";
fireRate.text = $"Fire rate: {ability.cooldown}s"; fireRate.text = $"Fire rate: {thisAbility.cooldown}s";
if (ability.TryGetComponent(out FireBullet isBullet)) if (thisAbility.TryGetComponent(out FireBullet isBullet))
{ {
piercing.text = $"Piercing: {isBullet.pierceAmount}"; piercing.text = $"Piercing: {isBullet.pierceAmount}";
projectileCount.text = $"Projectiles: {isBullet.projectileCount}"; projectileCount.text = $"Projectiles: {isBullet.projectileCount}";
} }
} }
public void AddUpgradeBox(AbilityUpgrade upgrade)
{
UpgradeBoxUI newBox = Instantiate(templateUpgradeBox, upgradeGrid);
upgradeBoxes.Add(newBox);
newBox.upgradeImage.sprite = upgrade.upgradeIcon;
newBox.UpdateCounter();
}
public void UpdateUpgradeBoxes()
{
foreach (UpgradeBoxUI box in upgradeBoxes)
{
box.UpdateCounter();
}
}
} }

View file

@ -4,9 +4,22 @@ public class AbilityUpgrade : ScriptableObject
{ {
[Header("Identification")] [Header("Identification")]
public string upgradeName; public string upgradeName;
public Sprite upgradeIcon;
public PlayerAbility thisPlayerAbility; public PlayerAbility thisPlayerAbility;
[Header("Stats")]
public int count = 1;
public virtual void ApplyUpgrade() public virtual void ApplyUpgrade()
{
UpgradeEffects();
}
protected virtual void UpgradeEffects()
{
}
public virtual void ApplyRemoval()
{ {
} }

View file

@ -11,7 +11,6 @@ public class FireBullet : PlayerAbility
public enum FireMode {Angled, Offset}; public enum FireMode {Angled, Offset};
[Header("Projectile")] [Header("Projectile")]
public FireMode fireMode = FireMode.Offset; public FireMode fireMode = FireMode.Offset;
public float projectileCount;
public Vector2 offset; public Vector2 offset;
public float angle; public float angle;
[SerializeField] private Projectile projectile; [SerializeField] private Projectile projectile;

View file

@ -18,7 +18,7 @@ public class MarisaAbilityHandler : MonoBehaviour
public PlayerAbility spellAInstance; public PlayerAbility spellAInstance;
public PlayerAbility spellBInstance; public PlayerAbility spellBInstance;
private void Start() private void Awake()
{ {
mainAttackInstance = Instantiate(mainAttack, transform); mainAttackInstance = Instantiate(mainAttack, transform);
mainAttackInstance.thisPlayer = thisPlayer; mainAttackInstance.thisPlayer = thisPlayer;

View file

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
public class PlayerAbility : MonoBehaviour public class PlayerAbility : MonoBehaviour
@ -13,6 +14,8 @@ public class PlayerAbility : MonoBehaviour
private float currentCooldown; private float currentCooldown;
[Header("Stats")] [Header("Stats")]
public float power; public float power;
public float projectileCount;
public HashSet<AbilityUpgrade> attachedUpgrades = new();
public void TryAbility() public void TryAbility()
{ {

View file

@ -0,0 +1,10 @@
using UnityEngine;
[CreateAssetMenu(fileName = "Projectile Count Upgrade", menuName = "AbilityUpgrades/ProjectileCountUpgrade")]
public class ProjectileCountUpgrade : AbilityUpgrade
{
protected override void UpgradeEffects()
{
thisPlayerAbility.projectileCount++; //idk how this will work for the stacking.
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: abe88be260cd4b175b742754eaee097f

View file

@ -0,0 +1,14 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class UpgradeBoxUI : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI counterUI;
public Image upgradeImage;
public AbilityUpgrade thisAbilityUpgrade;
public void UpdateCounter()
{
counterUI.text = $"x{thisAbilityUpgrade.count}";
}
}

View file

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b89f179fefb96497c879d4a8dd635717