Initial Commit

This commit is contained in:
2026-05-29 14:17:46 -04:00
commit b7d0676d5b
498 changed files with 30308 additions and 0 deletions
@@ -0,0 +1,9 @@
using Model.Entity.Data;
namespace Model.Entity.Parts;
public class EntityFactionModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityFactionModel";
public string Faction { get; set; } = DataType.FACTION_QRath;
}
@@ -0,0 +1,24 @@
using Model.Types;
namespace Model.Entity.Parts;
public class EntityHarvestModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityHarvestModel";
public ResourceType Resource { get; set; } = ResourceType.Alloy;
public float Slots { get; set; }
public float HarvestedPerInterval { get; set; }
public float HarvestDelay { get; set; } = 1;
public int TotalAmount { get; set; }
public bool RequiresWorker { get; set; }
public bool IsDepleted(float interval, float startedAt)
{
var lifeTime = interval - startedAt;
var totalHarvested = lifeTime * HarvestedPerInterval;
return totalHarvested > TotalAmount;
}
}
@@ -0,0 +1,44 @@
using System.Collections.Generic;
namespace Model.Entity.Parts;
public class EntityHotkeyModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityHotkeyModel";
public string Hotkey { get; set; }
public bool HoldSpace { get; set; } = false;
public string HotkeyGroup { get; set; }
public bool IsSelectedHotkey(List<string> keys)
{
return keys.Contains(Hotkey.ToUpper());
}
public bool IsSelectedHotkeyGroup(List<string> keys)
{
return keys.Contains(HotkeyGroup.ToUpper());
}
public bool IsSelectedHoldSpace(List<string> keys)
{
return (keys.Contains("SPACE") || keys.Contains(" ")) == HoldSpace;
}
public bool IsSelectedHotkeyGroupWithSpace(List<string> keys)
{
var foundKey = false;
var foundHold = false;
foreach (var key in keys)
{
if (key.ToUpper().Equals(HotkeyGroup.ToUpper())) foundKey = true;
if (key.ToUpper().Equals("SPACE") || key.ToUpper().Equals(" ")) foundHold = true;
}
if (foundKey && foundHold == HoldSpace) return true;
return false;
}
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityIdAbilityModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityIdAbilityModel";
public string Id { get; set; }
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityIdArmyModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityIdArmyModel";
public string Id { get; set; }
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityIdPassiveModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityIdPassiveModel";
public string Id { get; set; }
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityIdPyreSpellModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityIdPyreSpellModel";
public string Id { get; set; }
}
@@ -0,0 +1,8 @@
namespace Model.Entity.Parts;
public class EntityIdUpgradeModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityIdUpgradeModel";
public string Id { get; set; }
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityIdVanguardModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityIdVanguardModel";
public string Id { get; set; }
}
@@ -0,0 +1,13 @@
using Model.Types;
namespace Model.Entity.Parts;
public class EntityInfoModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityInfoModel";
public string Name { get; set; } = "";
public string Descriptive { get; set; } = DescriptiveType.None;
public string Description { get; set; } = "";
public string Notes { get; set; } = "";
public string FlavorText { get; set; } = "";
}
@@ -0,0 +1,8 @@
namespace Model.Entity.Parts;
public class EntityMechanicModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityMechanicModel";
public string Name { get; set; } = "";
public string Description { get; set; }
}
@@ -0,0 +1,10 @@
using Model.Types;
namespace Model.Entity.Parts;
public class EntityMovementModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityMovementModel";
public float Speed { get; set; } = 0;
public string Movement { get; set; } = MovementType.Ground;
}
@@ -0,0 +1,8 @@
namespace Model.Entity.Parts;
public class EntityPassiveModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityPassiveModel";
public string Name { get; set; } = "";
public string Description { get; set; }
}
@@ -0,0 +1,18 @@
#nullable enable
namespace Model.Entity.Parts;
public class EntityProductionModel : IEntityPartInterface
{
public int Alloy { get; set; } = 0;
public int Ether { get; set; } = 0;
public int Pyre { get; set; } = 0;
public int Energy { get; set; } = 0;
public int DefensiveLayer { get; set; } = 0;
public int BuildTime { get; set; } = 0;
public float Cooldown { get; set; } = 0;
public bool RequiresWorker { get; set; } = false;
public bool ConsumesWorker { get; set; } = false;
//public string ProductionType { get; set; }
public string? ProducedBy { get; set; } = null;
}
@@ -0,0 +1,10 @@
namespace Model.Entity.Parts;
public class EntityPyreRewardModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityPyreRewardModel";
public int BaseReward { get; set; } = 0;
public float OverTimeReward { get; set; } = 0;
public int OverTimeRewardDuration { get; set; } = 0;
}
@@ -0,0 +1,10 @@
using Model.Types;
namespace Model.Entity.Parts;
public class EntityRequirementModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityRequirementModel";
public string Id { get; set; }
public string Requirement { get; set; } = RequirementType.Production_Building;
}
@@ -0,0 +1,6 @@
namespace Model.Entity.Parts;
public class EntityResearchCapacityModel : IEntityPartInterface
{
public int Slots { get; set; } = 16;
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityStrategyModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityStrategyModel";
public string Notes { get; set; } = "";
}
@@ -0,0 +1,8 @@
namespace Model.Entity.Parts;
public class EntitySupplyModel : IEntityPartInterface
{
public string Type { get; set; } = "EntitySupplyModel";
public int Takes { get; set; } = 0;
public int Grants { get; set; } = 0;
}
@@ -0,0 +1,7 @@
namespace Model.Entity.Parts;
public class EntityTierModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityTierModel";
public float Tier { get; set; }
}
@@ -0,0 +1,6 @@
namespace Model.Entity.Parts;
public class EntityTrainingCapacityModel : IEntityPartInterface
{
public int Slots { get; set; } = 16;
}
@@ -0,0 +1,12 @@
using Model.Entity.Data;
namespace Model.Entity.Parts;
public class EntityVanguardAddedModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityVanguardAddedModel";
public string ImmortalId { get; set; } = DataType.IMMORTAL_Ajari;
public string ReplaceId { get; set; } = "";
}
@@ -0,0 +1,10 @@
using Model.Entity.Data;
namespace Model.Entity.Parts;
public class EntityVanguardReplacedModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityVanguardReplacedModel";
public string ImmortalId { get; set; } = DataType.IMMORTAL_Xol;
public string ReplacedById { get; set; } = "";
}
@@ -0,0 +1,20 @@
using Model.Types;
namespace Model.Entity.Parts;
public class EntityVitalityModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityVitalityModel";
public int Health { get; set; } = 0;
public int DefenseLayer { get; set; } = 0;
public int Lasts { get; set; } = 0;
public string Defense { get; set; } = DefenseType.None;
public string Armor { get; set; } = ArmorType.Light;
public bool IsEtheric { get; set; } = false;
public bool IsStructure { get; set; } = false;
public int Energy { get; set; } = 0;
public int Vision { get; set; } = 0;
}
@@ -0,0 +1,69 @@
using Model.Entity.Types;
namespace Model.Entity.Parts;
public class EntityWeaponModel : IEntityPartInterface
{
public int Id { get; set; } = 1;
public int EntityModelId { get; set; }
public virtual EntityModel EntityModel { get; set; }
public int Range { get; set; } = 40;
public int MinimumRange { get; set; } = 0;
public float AttacksPerSecond { get; set; } = 0;
public float SecondsBetweenAttacks { get; set; } = 0;
public float Cooldown { get; set; } = 0;
public float Charges { get; set; } = 0;
public int Damage { get; set; } = 0;
public string ComplexDamage { get; set; } = "deals 126 over 6 seconds";
public bool HasSplash { get; set; }
public int LightDamage { get; set; } = 0;
public int MediumDamage { get; set; } = 0;
public int HeavyDamage { get; set; } = 0;
public int StructureDamageBonus { get; set; } = 0;
public int EthericDamageBonus { get; set; } = 0;
public string Targets { get; set; } = TargetType.All;
public string Attack { get; set; } = AttackType.DPS;
public float DamagePerSecond()
{
if (SecondsBetweenAttacks == 0) return Damage * AttacksPerSecond;
return Damage / SecondsBetweenAttacks;
}
public float DamagePerSecondLight()
{
var damage = LightDamage != 0 ? LightDamage : Damage;
if (SecondsBetweenAttacks == 0) return damage * AttacksPerSecond;
return damage / SecondsBetweenAttacks;
}
public float DamagePerSecondMedium()
{
var damage = MediumDamage != 0 ? MediumDamage : Damage;
if (SecondsBetweenAttacks == 0) return damage * AttacksPerSecond;
return damage / SecondsBetweenAttacks;
}
public float DamagePerSecondHeavy()
{
var damage = HeavyDamage != 0 ? HeavyDamage : Damage;
if (SecondsBetweenAttacks == 0) return damage * AttacksPerSecond;
return damage / SecondsBetweenAttacks;
}
}
@@ -0,0 +1,6 @@
namespace Model.Entity.Parts;
public class IEntityPartInterface
{
public EntityModel Parent { get; set; }
}