Initial commit

This commit is contained in:
2022-03-28 18:44:08 -04:00
commit e43d9a90e7
267 changed files with 17049 additions and 0 deletions
@@ -0,0 +1,63 @@
@if (Entity != null) {
var isVanguard = Entity.Vanguard() != null ? " vanguard" : "";
<div class="enititiesContainer @isVanguard">
<EntityHeaderComponent Entity=Entity></EntityHeaderComponent>
<div class="entityPartsContainer">
<EntityVanguardComponent Entity=Entity></EntityVanguardComponent>
<EntityInfoComponent Entity=Entity></EntityInfoComponent>
<EntityVanguardsComponent Entity=Entity></EntityVanguardsComponent>
<EntityProductionComponent Entity=Entity></EntityProductionComponent>
<EntityStatsComponent Entity=Entity></EntityStatsComponent>
<EntityMechanicsComponent Entity=Entity></EntityMechanicsComponent>
<EntityPassivesComponent Entity=Entity></EntityPassivesComponent>
<EntityPyreSpellsComponent Entity=Entity></EntityPyreSpellsComponent>
<EntityUpgradesComponent Entity=Entity></EntityUpgradesComponent>
<EntityWeaponsComponent Entity=Entity></EntityWeaponsComponent>
<EntityAbilitiesComponent Entity=Entity></EntityAbilitiesComponent>
</div>
</div>
}
<style>
.enititiesContainer {
margin-bottom: 12px;
width: 100%;
overflow-y: auto;
overflow-x: hidden;
padding: 30px;
display: flex;
flex-wrap: wrap;
}
.vanguard {
border: 4px solid var(--accent);
border-radius: 8px;
}
.entityPartsContainer {
display: flex;
flex-direction: column;
flex-wrap: wrap;
width: 100%;
}
@@media only screen and (max-width: 1025px) {
.enititiesContainer {
padding: 0px;
}
.entityPartsContainer {
margin: 0px;
}
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,43 @@
@if (Entity.IdAbilities().Count > 0) {
<EntityDisplayComponent Title="Abilities">
@foreach (var idAbility in Entity.IdAbilities()) {
var spell = EntityModel.Get(idAbility.Id);
var info = spell.Info();
var production = spell.Production();
<div>
<div>
<b>Name:</b> @info.Name
</div>
<div style="max-width: 600px;">
<b>Description:</b> @((MarkupString)info.Description)
</div>
<div>
@if (production != null) {
if (production.Energy != 0) {
<b> Energy: </b>
@production.Energy
}
if (production.BuildTime != 0) {
<b> BuildTime: </b>
@production.BuildTime
}
if (production.Cooldown != 0) {
<b> Cooldown: </b>
@production.Cooldown
}
}
</div>
</div>
}
</EntityDisplayComponent>
}
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,46 @@
<div class="entityHeader">
<div class="entityHeaderText">
@Entity.Info().Name
</div>
<div style="font-size:1.4rem;">
<b>@Entity.EntityType.Replace("_", " ")</b>
@if (Entity.Info().Descriptive != DescriptiveType.None) {
<span>
<b>:</b> @Entity.Info().Descriptive.Replace("_", " ")
</span>
}
</div>
</div>
<style>
.entityHeader {
display: flex;
flex-direction: row;
gap: 4px;
justify-content: space-between;
margin-bottom: 22px;
width: 100%;
margin-left: -6px;
}
.entityHeaderText {
font-size: 2rem;
font-weight: 900;
}
@@media only screen and (max-width: 1025px) {
.entityHeader {
flex-direction: column;
justify-content: normal;
margin-left: 4px;
}
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,57 @@
<EntityDisplayComponent Title="Info">
@if (Entity.Info().Description != "") {
<div>
<b>Description:</b> @((MarkupString)Entity.Info().Description)
</div>
}
<div class="infoDisplayContainer">
<div>
@if (Entity.Faction() != null) {
<div>
<b>Faction:</b> @Entity.Faction().Faction
</div>
}
@if (Entity.Tier() != null) {
<div>
<b>Tier:</b> @Entity.Tier().Tier
</div>
}
</div>
@if (Entity.Hotkey() != null) {
<div>
<div>
<b>Hotkey Group:</b> @Entity.Hotkey().HotkeyGroup
</div>
<div>
<b>Hotkey:</b> @Entity.Hotkey().Hotkey
</div>
<div>
<b>Hold Space:</b> @(Entity.Hotkey().HoldSpace ? "Yes" : "No")
</div>
</div>
}
</div>
</EntityDisplayComponent>
<style>
.infoDisplayContainer {
display: flex;
gap: 32px;
}
@@media only screen and (max-width: 1025px) {
.infoDisplayContainer {
flex-direction: column;
gap: 4px;
}
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,27 @@
@if (Entity.Mechanics().Count > 0) {
<EntityDisplayComponent Title="Mechanics">
<div>
@foreach (var data in Entity.Mechanics()) {
<div>
<div>
<span>
<b>Name:</b> @data.Name
</span>
</div>
<div>
<b>Description:</b> @data.Description
</div>
<br/>
</div>
}
</div>
</EntityDisplayComponent>
}
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,26 @@
@if (Entity.IdPassives().Count > 0) {
<EntityDisplayComponent Title="Passives">
@foreach (var idPassive in Entity.IdPassives()) {
var passive = EntityModel.Get(idPassive.Id);
var info = passive.Info();
<div>
<div>
<b>Name:</b> @info.Name
</div>
<div style="max-width: 600px;">
<b>Description:</b> @((MarkupString)info.Description)
</div>
</div>
}
</EntityDisplayComponent>
}
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,94 @@
@{
var production = Entity.Production();
var supply = Entity.Supply();
var requirements = Entity.Requirements();
}
@if (production != null || supply != null || requirements.Count > 0) {
<EntityDisplayComponent Title="Production">
<div class="productionContainer">
@if (requirements.Count() > 0) {
<div>
@foreach (var requirement in requirements) {
<div>
<span>
<b>@requirement.Requirement.Replace("_", " "):</b> @requirement.Name
</span>
</div>
}
</div>
}
@if (production != null && (!production.Alloy.Equals(0)
|| !production.Ether.Equals(0)
|| !production.BuildTime.Equals(0)
|| !production.Cooldown.Equals(0))) {
<div>
@if (!production.Alloy.Equals(0)) {
<div>
<b>Alloy:</b> @production.Alloy
</div>
}
@if (!production.Ether.Equals(0)) {
<div>
<b>Ether:</b> @production.Ether
</div>
}
@if (!production.Pyre.Equals(0)) {
<div>
<b>Pyre:</b> @production.Pyre
</div>
}
@if (!production.BuildTime.Equals(0)) {
<div>
<b>Build Time:</b> @production.BuildTime.ToString()s
</div>
}
@if (!production.Cooldown.Equals(0)) {
<div>
<b>Cooldown:</b> @production.Cooldown.ToString()s
</div>
}
</div>
}
@if (supply != null) {
<div>
@if (!supply.Grants.Equals(0)) {
<div>
<b>Grants:</b> @supply.Grants
</div>
}
@if (!supply.Takes.Equals(0)) {
<div>
<b>Takes:</b> @supply.Takes Supply
</div>
}
</div>
}
</div>
</EntityDisplayComponent>
}
<style>
.productionContainer {
display: flex;
gap: 32px;
}
@@media only screen and (max-width: 1025px) {
.productionContainer {
flex-direction: column;
gap: 4px;
}
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,43 @@
@if (Entity.IdPyreSpells().Count > 0) {
<EntityDisplayComponent Title="Pyre Spells">
@foreach (var pyreSpell in Entity.IdPyreSpells()) {
var spell = EntityModel.Get(pyreSpell.Id);
var info = spell.Info();
var production = spell.Production();
<div>
<div>
<b>Name:</b> @info.Name
</div>
<div>
<b>Description:</b> @((MarkupString)info.Description)
</div>
<div>
@if (production != null) {
if (production.Pyre != 0) {
<b> Pyre: </b>
@production.Pyre
}
if (production.BuildTime != 0) {
<b> BuildTime: </b>
@production.BuildTime
}
if (production.Cooldown != 0) {
<b> Cooldown: </b>
@production.Cooldown
}
}
</div>
</div>
}
</EntityDisplayComponent>
}
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,86 @@
@{
var vitality = Entity.Vitality();
var movement = Entity.Movement();
}
@if (vitality != null || movement != null) {
<EntityDisplayComponent Title="Stats">
<div class="statContainer">
@if (vitality != null) {
<div>
@if (!vitality.DefenseLayer.Equals(0)) {
<div>
<b>Shield:</b> @vitality.DefenseLayer
</div>
}
@if (!vitality.Health.Equals(0)) {
<div>
<b>Health:</b> @vitality.Health
</div>
}
@if (!vitality.Energy.Equals(0)) {
<div>
<b>Energy:</b> @vitality.Energy
</div>
}
@if (vitality.Armor != "") {
<div>
<b>Armor:</b> @vitality.Armor
</div>
}
@if (vitality.IsEtheric) {
<div>
<b> + Etheric</b>
</div>
}
@if (vitality.IsStructure) {
<div>
<b> + Structure</b>
</div>
}
</div>
}
@if (movement != null) {
<div>
@if (!movement.Speed.Equals(0)) {
<div>
<b>Speed:</b> @movement.Speed
</div>
}
else {
<div>
<b>Speed:</b> Immobile
</div>
}
<div>
<b>Move Type:</b> @movement.Movement
</div>
</div>
}
</div>
</EntityDisplayComponent>
}
<style>
.statContainer {
display: flex;
gap: 32px;
}
@@media only screen and (max-width: 1025px) {
.statContainer {
flex-direction: column;
gap: 4px;
}
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,38 @@
@if (Entity.IdUpgrades().Count > 0) {
<EntityDisplayComponent Title="Upgrades">
<div class="upgradesContainer">
@foreach (var upgradeId in Entity.IdUpgrades()) {
var entity = EntityModel.Get(upgradeId.Id);
<div>
<div>
<b>Name:</b> @entity.Info().Name
</div>
<div>
<b>Description:</b> @entity.Info().Description
</div>
</div>
}
</div>
</EntityDisplayComponent>
}
<style>
.upgradesContainer {
display: flex;
gap: 32px;
}
@@media only screen and (max-width: 1025px) {
.upgradesContainer {
flex-direction: column;
gap: 4px;
}
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,21 @@
@if (Entity.Vanguard() != null) {
<EntityDisplayComponent Title="Vanguard">
<div>
<div>
<b>Immortal:</b> @Entity.Vanguard().Immortal.Replace("_", " ")
</div>
@if (Entity.Vanguard().Replaces != "") {
<div>
<b>Replaces:</b> @Entity.Vanguard().Replaces.Replace("_", " ")
</div>
}
</div>
</EntityDisplayComponent>
}
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,35 @@
@if (Entity.IdVanguards().Count > 0) {
<EntityDisplayComponent Title="Vanguards">
@foreach (var data in Entity.IdVanguards()) {
var entity = EntityModel.Get(data.Id);
var info = entity.Info();
var production = entity.Production();
var requirements = entity.Requirements();
var vanguard = entity.Vanguard();
var productionBuilding = (from building in requirements
where building.Requirement == RequirementType.Production_Building
select building).First().Name;
<div>
<div>
<b>Name:</b> @info.Name
</div>
<div>
<b>Replaces:</b> @vanguard.Replaces
</div>
<div>
<b>Built From:</b> @productionBuilding
</div>
</div>
}
</EntityDisplayComponent>
}
@code {
[Parameter]
public EntityModel Entity { get; set; }
}
@@ -0,0 +1,114 @@
@if (Entity.Weapons().Count > 0) {
<EntityDisplayComponent Title="Weapons">
<div class="weaponsContainer">
@foreach (var data in Entity.Weapons()) {
<div>
<div>
<div class="damageContainer">
<div>
<b>Damage:</b> @data.Damage
</div>
@if (data.LightDamage != 0) {
<div class="alternateDamage">
<i>vs Light: @data.LightDamage</i>&nbsp;
</div>
}
@if (data.MediumDamage != 0) {
<div class="alternateDamage">
<i>vs Medium: @data.MediumDamage</i>&nbsp;
</div>
}
@if (data.HeavyDamage != 0) {
<div class="alternateDamage">
<i>vs Heavy: @data.HeavyDamage</i>&nbsp;
</div>
}
@if (data.EthericDamageBonus != 0) {
<div class="alternateDamage">
<i>vs Etheric +@data.EthericDamageBonus</i>&nbsp;
</div>
}
@if (data.StructureDamageBonus != 0) {
<div class="alternateDamage">
<i>vs Structure: +@data.StructureDamageBonus</i>&nbsp;
</div>
}
</div>
</div>
<div>
<b>Range:</b> @data.Range
</div>
@if (data.SecondsBetweenAttacks > 0) {
<div>
<b>AttacksPerSecond:</b> @(1 / data.SecondsBetweenAttacks)
</div>
<div>
(or <b>SecondsBetweenAttacks:</b> @data.SecondsBetweenAttacks)
</div>
}
else if (data.AttacksPerSecond > 0) {
<div>
<b>AttacksPerSecond:</b> @data.AttacksPerSecond
</div>
<div>
(or <b>SecondsBetweenAttacks:</b> @(1 / data.AttacksPerSecond))
</div>
}
<div>
<b>Targets:</b> @data.Targets
</div>
@if (data.AttacksPerSecond != 0) {
<span>
<b>DPS:</b> @(Math.Round(data.Damage * data.AttacksPerSecond))&nbsp;
</span>
@if (data.LightDamage != 0) {
<span>
<i>L: @(Math.Round(data.LightDamage * data.AttacksPerSecond))</i>&nbsp;
</span>
}
@if (data.MediumDamage != 0) {
<span>
<i>M: @(Math.Round(data.MediumDamage * data.AttacksPerSecond))</i>&nbsp;
</span>
}
@if (data.HeavyDamage != 0) {
<span>
<i>H: @(Math.Round(data.HeavyDamage * data.AttacksPerSecond))</i>&nbsp;
</span>
}
}
</div>
}
</div>
</EntityDisplayComponent>
}
<style>
.weaponsContainer {
display: flex;
gap: 32px;
}
@@media only screen and (max-width: 1025px) {
.weaponsContainer {
flex-direction: column;
gap: 4px;
}
}
.alternateDamage {
margin-left: 18px;
}
.damageContainer {
margin-bottom: 6px;
}
</style>
@code {
[Parameter]
public EntityModel Entity { get; set; }
}