weapon-table.component.html 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <div class="weapons-box">
  2. <div class="heading-list">
  3. <div>Typ</div>
  4. <div>Name</div>
  5. <div>Bonus</div>
  6. <div>Schaden</div>
  7. <div>Reichweite</div>
  8. </div>
  9. <div
  10. id="weapons-table"
  11. cdkDropList
  12. class="example-list table-content"
  13. (cdkDropListDropped)="dropWeapons($event)"
  14. >
  15. @for(weapon of weapons; let index = $index; track weapon){
  16. <div class="example-box" cdkDrag (click)="openDetailsPanel(index)">
  17. <!-- Range Icon -->
  18. <ng-container
  19. [ngTemplateOutlet]="distanceIconTemplate"
  20. [ngTemplateOutletContext]="{ weapon: weapon }"
  21. ></ng-container>
  22. <div class="vertical-line"></div>
  23. <ng-container
  24. [ngTemplateOutlet]="weaponNameTemplate"
  25. [ngTemplateOutletContext]="{ weapon: weapon }"
  26. ></ng-container>
  27. <div class="vertical-line"></div>
  28. <ng-container
  29. [ngTemplateOutlet]="weaponAttackTemplate"
  30. [ngTemplateOutletContext]="{ weapon: weapon }"
  31. ></ng-container>
  32. <div class="vertical-line"></div>
  33. <ng-container
  34. [ngTemplateOutlet]="weaponDamageTemplate"
  35. [ngTemplateOutletContext]="{ weapon: weapon, index: index }"
  36. ></ng-container>
  37. <div class="vertical-line"></div>
  38. <ng-container
  39. [ngTemplateOutlet]="weaponRangeTemplate"
  40. [ngTemplateOutletContext]="{ weapon: weapon }"
  41. ></ng-container>
  42. </div>
  43. } @empty{
  44. <div
  45. style="
  46. text-align: center;
  47. margin-top: 3rem;
  48. font-size: 1.25rem;
  49. font-weight: 500;
  50. "
  51. >
  52. Noch keine Waffen hinzugefügt
  53. </div>
  54. }
  55. </div>
  56. </div>
  57. <!-- Templates -->
  58. <!-- Distance Icons -->
  59. <ng-template #distanceIconTemplate let-weapon="weapon">
  60. <icon
  61. [size]="'s'"
  62. [type]="'weapon'"
  63. [icon]="weapon.isRanged ? 'ranged' : 'meele'"
  64. ></icon>
  65. </ng-template>
  66. <!-- Name -->
  67. <ng-template #weaponNameTemplate let-weapon="weapon">
  68. <div class="bold">{{ weapon.name }}</div>
  69. </ng-template>
  70. <!-- Attack Bonus -->
  71. <ng-template #weaponAttackTemplate let-weapon="weapon">
  72. <div class="weapon-attack-bonus">{{ weapon.attackBonus }}</div>
  73. </ng-template>
  74. <!-- Damage -->
  75. <ng-template #weaponDamageTemplate let-weapon="weapon" let-index="index">
  76. <div class="damage-list">
  77. <div
  78. class="damage-row"
  79. *ngFor="let damage of weapon.damage; let damageIndex = index"
  80. >
  81. <span>{{ damage.diceNumber }} {{ damage.diceType }}</span>
  82. <span *ngIf="weapon.isVersatile && damageIndex === 0"
  83. >({{ weapon.versatileDamage }})</span
  84. >
  85. <span *ngIf="damageIndex === 0 && damageModifiers[index] !== '0'">
  86. {{ damageModifiers[index] }}
  87. </span>
  88. <span>
  89. <icon [size]="'xs'" [type]="'damage'" [icon]="damage.damageType"></icon>
  90. </span>
  91. </div>
  92. </div>
  93. </ng-template>
  94. <!-- Range -->
  95. <ng-template #weaponRangeTemplate let-weapon="weapon">
  96. @if(weapon.isRanged){
  97. <div class="weapon-range">
  98. {{ weapon.range[0] }}/{{ weapon.range[1] }} ft.
  99. </div>
  100. }@else{ Nahkampf }
  101. </ng-template>