The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.
Перезаряжаемые способности
Делаем способности перезаряжаемыми
Просто реализуйте интерфейс IAbilityRechargeable
в классе вашей способности:
MyRechargeableAbility.cs
public class MyRechargeableAbility : CustomAbility, IAbilityRechargeable
{
public void OnRecharging(AbilityRechargingArgs e) { /* ... */ }
}
Count
тут работает как время восстановления и представл яет из себя количество времени до полной перезарядки.
Совет от профи
Вы можете выставить его на 0, когда способность полностью перезаряжена, и на 1, когда она перезаряжается (вы можете перегрузить отображаемый текст, если хотите), и использовать свой механизм перезарядки. Смотрите Перезаряжаемые предметы.
OnRecharging
работает как Update
в Unity, но с настраиваемым интервалом (по умолчанию, 1 секунда):
public void OnRecharging(AbilityRechargingArgs e)
{
e.UpdateDelay = 2f; // 1 update every 2 seconds
Count--;
}
к сведению
Ответственность за уменьшение Count
лежит на вас. Так что, не забывайте это делать.
Способность перестанет перезаряжаться как только Count
достигнет 0. Чтобы начать перезарядку заново, выставьте Count
на любое другое число.
Примеры
- Titan
namespace RogueLibsCore.Test
{
public class Titan : CustomAbility, IAbilityRechargeable
{
[RLSetup]
public static void Setup()
{
RogueLibs.CreateCustomAbility<Titan>()
.WithName(new CustomNameInfo("Titan"))
.WithDescription(new CustomNameInfo("Willpower alone isn't enough in battle."))
.WithSprite(Properties.Resources.Titan)
.WithUnlock(new AbilityUnlock
{
UnlockCost = 10,
CharacterCreationCost = 10,
Prerequisites = { VanillaItems.Giantizer },
});
}
public override void OnAdded() { }
public override void OnPressed()
{
if (Count != 0)
{
gc.audioHandler.Play(Owner, VanillaAudio.CantDo);
return;
}
Owner!.statusEffects.AddStatusEffect(VanillaEffects.Giant, 15);
Count = 30;
}
public void OnRecharging(AbilityRechargingArgs e)
{
e.UpdateDelay = 1f;
Count--;
}
}
}
The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.