К содержимому

BattleUnitWorldBar

BattleUnitWorldBar

World-space хром юнита — сегментированное HP, AP-pip’ы, tint союзник/враг, опциональная угроза predamage, tooltip identity.

Пакет

SusGame · HUD (коммерческий)

Открыть в песочнице

SusGame · HUD

Свойства

ИмяТипПо умолчанию
UnitNameProp<string>""v-model
RankProp<string>""v-model
DescriptionProp<string>""v-model
PositionLabelProp<string>""v-model
TipExtraProp<string>""v-model
CurrentHpProp<int>10v-model
MaxHpProp<int>10v-model
CurrentApProp<int>2v-model
MaxApProp<int>2v-model
PredamageMinProp<int>0v-model
PredamageAccuracyProp<int>0v-model
PredamageProp<bool>falsev-model
AllyProp<bool>truev-model
BarActiveProp<bool>truev-model
EntityIdProp<int>-1v-model
DisplayNameProp<string>""
HpTextProp<string>"0"

Слоты

Слотов нет.

События

Публичных событий нет.

Хуки стиля

Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:

  • battle-unit-world-bar
  • battle-unit-world-bar__ap-pip
  • battle-unit-world-bar__ap-pip--active
  • battle-unit-world-bar__ap-pip--hidden
  • battle-unit-world-bar__ap-pip--spent
  • battle-unit-world-bar__ap-row
  • battle-unit-world-bar__ap-spacer
  • battle-unit-world-bar__content
  • battle-unit-world-bar__counter
  • battle-unit-world-bar__counter-label
  • battle-unit-world-bar__hp-row
  • battle-unit-world-bar__hp-seg
  • battle-unit-world-bar__hp-seg--empty
  • battle-unit-world-bar__hp-seg--filled
  • battle-unit-world-bar__hp-seg--hidden
  • battle-unit-world-bar__hp-seg--spent
  • battle-unit-world-bar__hp-seg--threat
  • battle-unit-world-bar__hp-seg-fill
  • battle-unit-world-bar__main
  • battle-unit-world-bar__name
  • battle-unit-world-bar__row
  • battle-unit-world-bar__statuses
  • battle-unit-world-bar__statuses--hidden
  • battle-unit-world-bar__tip
  • battle-unit-world-bar--ally
  • battle-unit-world-bar--enemy
  • battle-unit-world-bar--inactive
  • battle-unit-world-bar--predamage
  • sus-icon
  • sus-status-effect
  • sus-status-effect__icon

Использование

csharp
var bar = new BattleUnitWorldBar();
bar.UnitName.Value = "Ranger";
bar.Rank.Value = "Sgt";
bar.Ally.Value = true;
bar.CurrentHp.Value = 7;
bar.MaxHp.Value = 10;
bar.CurrentAp.Value = 2;
bar.MaxAp.Value = 3;
bar.BarActive.Value = true;
bar.Init(wounds: 10, actionPoints: 3);
bar.ShowPredamage(minDamage: 2, accuracy: 75);
xml
<template>
  <sus:BattleUnitWorldBar :UnitName="Name.Value"
                          :Rank="Rank.Value"
                          :Description="Desc.Value"
                          :PositionLabel="Pos.Value"
                          :CurrentHp="Hp.Value"
                          :MaxHp="HpMax.Value"
                          :CurrentAp="Ap.Value"
                          :MaxAp="ApMax.Value"
                          :Ally="Ally.Value"
                          :BarActive="Active.Value"
                          :Predamage="Threat.Value"
                          :PredamageMin="ThreatMin.Value"
                          :PredamageAccuracy="ThreatAcc.Value"
                          :EntityId="Entity.Value" />
</template>

<script>
public Prop<string> Name = new("Ranger");
public Prop<string> Rank = new("Sgt");
public Prop<string> Desc = new("Scout · medium armor");
public Prop<string> Pos = new("A3");
public Prop<int> Hp = new(7);
public Prop<int> HpMax = new(10);
public Prop<int> Ap = new(2);
public Prop<int> ApMax = new(3);
public Prop<bool> Ally = new(true);
public Prop<bool> Active = new(true);
public Prop<bool> Threat = new(false);
public Prop<int> ThreatMin = new(0);
public Prop<int> ThreatAcc = new(0);
public Prop<int> Entity = new(-1);
</script>
Prop / APIРоль
UnitName · Rank · DescriptionИдентичность / тултип
PositionLabel · TipExtraДополнительные строки тултипа
CurrentHp / MaxHpСегменты ранений (1:1)
CurrentAp / MaxApAP-pip'ы (≤8)
AllyОформление союзник/враг
BarActiveНеактивен / затемнён
Predamage*Оверлей угрозы на HP
EntityIdId моста host/ECS
Init / ResolveDamage / SpendActionБоевые хелперы
ShowPredamage / ResetHealthVisualУгроза + сброс визуала

Заметки

  • DisplayName и HpText — производные, привязывайте исходные пропы выше, а не эти два.
  • Один сегмент HP на очко ранения (не растянутая 10-сегментная полоса, когда MaxHp отличается).
  • Для более простых world-меток предпочитайте kit SusHealthBar / SusUnitNameplate; эта полоса — тактический сегментированный вариант.