Browse Source

More data, and minor updates to Build Calculator for June 2025 Playtest

main
Jonathan 11 months ago
parent
commit
ff4941d38c
  1. 5
      IGP/Pages/BuildCalculator/BuildCalculatorPage.razor
  2. 5
      IGP/Pages/BuildCalculator/Parts/FilterComponent.razor
  3. 10
      IGP/Pages/BuildCalculator/Parts/HotkeyViewerComponent.razor
  4. 5
      Model/BuildOrders/BuildToCompareModel.cs
  5. 56
      Model/Entity/Data/DATA.cs
  6. 11
      Model/Entity/Data/Ids_Entity.cs
  7. 6
      Model/Hotkeys/HotKeyType.cs
  8. 58
      Model/Hotkeys/HotkeyModel.cs
  9. 3
      Services/Immortal/EconomyComparisonService.cs

5
IGP/Pages/BuildCalculator/BuildCalculatorPage.razor

@ -25,6 +25,11 @@
Build Calculator hasn't been thoroughly tested. Bugs and inaccurate results assumed.
<br/>
Currently not considering running out of alloy and ether to harvest.
<br/>
<br/>
Build Calculator was built based on a much older version of the game and was only quickly modified for the June 2025 Playtest version, so the above disclaimer is only more true.
<br/>
Expect even more oddities and invalid data then the above warning implies.
</Message>
</AlertComponent>

5
IGP/Pages/BuildCalculator/Parts/FilterComponent.razor

@ -32,6 +32,11 @@
}
@if (FilterService.GetFaction() == DataType.FACTION_Aru)
{
<option value="@DataType.IMMORTAL_Atzlan"
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Atzlan))">
Atzlan
</option>
<option value="@DataType.IMMORTAL_Mala"
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Mala))">
Mala

10
IGP/Pages/BuildCalculator/Parts/HotkeyViewerComponent.razor

@ -22,13 +22,13 @@
var color = (hotkey.KeyText.Equals("SPACE") && KeyService.IsHoldingSpace()) || KeyService.GetAllPressedKeys().Contains(hotkey.KeyText)
? "#0a0f12"
? hotkey.GetColor()
: hotkey.GetColor();
var x = hotkey.PositionX * Size;
var y = hotkey.PositionY * Size + (hotkey.PositionY == 0 ? 5 : -50);
var width = Size;
var width = Size * hotkey.Width;
var height = hotkey.PositionY == 0 ? 50 : Size;
var borderRadius = hotkey.PositionY == 0 ? 12 : 0;
@ -52,7 +52,7 @@
var keyText = hotkey.KeyText.Equals("CAPSLOCK") ? "Caps"
: hotkey.KeyText.Equals("CONTROL") ? "Ctrl"
: hotkey.KeyText.Equals("SHIFT") ? "Shift"
: hotkey.KeyText.Equals("TAB") ? "Tab"
: hotkey.KeyText.Equals("X") ? "X"
: hotkey.KeyText.Equals("SPACE") ? "Space" : hotkey.KeyText;
@ -292,9 +292,9 @@
controlGroup = "Z";
}
if (KeyService.GetAllPressedKeys().Contains("TAB"))
if (KeyService.GetAllPressedKeys().Contains("X"))
{
controlGroup = "TAB";
controlGroup = "X";
}
if (KeyService.GetAllPressedKeys().Contains("C"))

5
Model/BuildOrders/BuildToCompareModel.cs

@ -21,11 +21,6 @@ public class BuildToCompareModel
? DataType.BUPGRADE_MiningLevel2_QRath
: DataType.BUPGRADE_MiningLevel2_Aru];
public EntityModel GetTownHallMining3Entity => DATA.Get()[
Faction.Equals(DataType.FACTION_QRath)
? DataType.BUPGRADE_MiningLevel3_QRath
: DataType.BUPGRADE_MiningLevel3_Aru];
public int NumberOfTownHallExpansions
{
get => numberOfTownHallExpansions;

56
Model/Entity/Data/DATA.cs

@ -243,7 +243,7 @@ public abstract class DATA
{
DataType.IMMORTAL_Atzlan,
new EntityModel(DataType.IMMORTAL_Atzlan, EntityType.Immortal)
.AddPart(new EntityInfoModel { Name = "Aru" })
.AddPart(new EntityInfoModel { Name = "Atzlan" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityHarvestModel
{
@ -747,12 +747,12 @@ public abstract class DATA
.AddPart(new EntityMovementModel { Speed = 360, Movement = MovementType.Ground })
.AddPart(new EntityWeaponModel
{
Damage = 25, MediumDamage = 35, HeavyDamage = 45, Range = 800, AttacksPerSecond = 1.429f,
Damage = 25, MediumDamage = 35, HeavyDamage = 45, Range = 800, SecondsBetweenAttacks = 1.429f,
Targets = TargetType.Ground
})
.AddPart(new EntityWeaponModel
{
Damage = 85, MediumDamage = 100, HeavyDamage = 115, Range = 1000, AttacksPerSecond = 2.5f,
Damage = 85, MediumDamage = 100, HeavyDamage = 115, Range = 1000, SecondsBetweenAttacks = 2.5f,
MinimumRange = 500,
Targets = TargetType.Ground
})
@ -3650,7 +3650,7 @@ public abstract class DATA
Name = "Mining Level 2", Descriptive = DescriptiveType.Upgrade,
Description = "Upgrades the nearest resource cluster to allow more workers to mine from it."
})
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "CONTROL" })
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "CONTROL" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
.AddPart(new EntityRequirementModel
{
@ -3664,6 +3664,50 @@ public abstract class DATA
TotalAmount = 3600
})
},
{
DataType.CONVERSION_EtherSruge_Aru,
new EntityModel(DataType.CONVERSION_EtherSruge_Aru, EntityType.Building_Upgrade)
.AddPart(new EntityInfoModel
{
Name = "Ether Surge", Descriptive = DescriptiveType.Upgrade,
Description = "Gain 100 Ether over 50 seconds"
})
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "CONTROL" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
.AddPart(new EntityRequirementModel
{
Id = DataType.BUILDING_Acropolis,
Requirement = RequirementType.Morph
})
.AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false })
.AddPart(new EntityHarvestModel
{
HarvestedPerInterval = 5, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1,
TotalAmount = 100
})
},
{
DataType.CONVERSION_EtherSruge_QRath,
new EntityModel(DataType.CONVERSION_EtherSruge_QRath, EntityType.Building_Upgrade)
.AddPart(new EntityInfoModel
{
Name = "Ether Surge", Descriptive = DescriptiveType.Upgrade,
Description = "Gain 100 Ether over 50 seconds"
})
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "CONTROL" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
.AddPart(new EntityRequirementModel
{
Id = DataType.BUILDING_Acropolis,
Requirement = RequirementType.Morph
})
.AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false })
.AddPart(new EntityHarvestModel
{
HarvestedPerInterval = 5, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1,
TotalAmount = 100
})
},
{
DataType.BUILDING_ApostleOfBinding,
@ -3918,7 +3962,7 @@ public abstract class DATA
DataType.BUPGRADE_GodHeart,
new EntityModel(DataType.BUPGRADE_GodHeart, EntityType.Building_Upgrade)
.AddPart(new EntityInfoModel { Name = "God Heart", Descriptive = DescriptiveType.Upgrade })
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "CONTROL" })
.AddPart(new EntityHotkeyModel { Hotkey = "A", HotkeyGroup = "CONTROL" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityVitalityModel
{ Health = 3100, DefenseLayer = 900, Armor = ArmorType.Heavy, IsStructure = true })
@ -3944,7 +3988,7 @@ public abstract class DATA
Name = "Mining Level 2", Descriptive = DescriptiveType.Upgrade,
Description = "Upgrades the nearest resource cluster to allow more workers to mine from it."
})
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "CONTROL" })
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "CONTROL" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityRequirementModel
{

11
Model/Entity/Data/Ids_Entity.cs

@ -84,10 +84,13 @@ public static class DataType
public static string BUILDING_ApostleOfBinding = nameof(BUILDING_ApostleOfBinding);
public static string BUILDING_GroveHeart = nameof(BUILDING_GroveHeart);
public static string BUILDING_EtherMaw = nameof(BUILDING_EtherMaw);
public static string BUPGRADE_MiningLevel2_QRath = "d7beb217-8eaf-4f88-8882-05bd7e0fbebd";
public static string BUPGRADE_MiningLevel3_QRath = "2b7d0da9-a897-4d3e-b9bd-3ec4a7c95d2c";
public static string BUPGRADE_MiningLevel2_Aru = "ffa76506-470b-4a67-acc6-3dc9686df004";
public static string BUPGRADE_MiningLevel3_Aru = "010b3279-472d-4d54-9a85-ebc5c664ee73";
public static string BUPGRADE_MiningLevel2_QRath = nameof(BUPGRADE_MiningLevel2_QRath);
public static string BUPGRADE_MiningLevel2_Aru = nameof(BUPGRADE_MiningLevel2_Aru);
public static string CONVERSION_EtherSruge_QRath = nameof(CONVERSION_EtherSruge_QRath);
public static string CONVERSION_EtherSruge_Aru = nameof(CONVERSION_EtherSruge_Aru);
public static string BUPGRADE_GodHeart = nameof(BUPGRADE_GodHeart);
public static string BUPGRADE_Omnivore = nameof(BUPGRADE_Omnivore);
public static string BUILDING_LegionHall = nameof(BUILDING_LegionHall);

6
Model/Hotkeys/HotKeyType.cs

@ -4,6 +4,12 @@ public enum KeyType
{
Action,
ControlGroup,
Army,
Train,
Research,
Construct,
Cancel,
Advance,
Economy,

58
Model/Hotkeys/HotkeyModel.cs

@ -4,22 +4,31 @@ namespace Model.Hotkeys;
public class HotkeyModel
{
public static readonly string[] KeyGroups = { "Z", "1", "2", "TAB", "CONTROL", "SHIFT", "C" };
public static readonly string[] HotKeys = { "`", "Q", "W", "E", "R", "A", "S", "F", "X", "V", "CAPSLOCK" };
public static readonly string[] KeyGroups = { "Z", "1", "2", "X", "CONTROL", "SHIFT", "C" };
public static readonly string[] HotKeys = { "`", "Q", "W", "E", "R", "A", "S", "F", "X", "V", "CAPSLOCK", "TAB" };
public string KeyText { get; set; }
public KeyType KeyType { get; set; }
public int PositionX { get; set; }
public int PositionY { get; set; }
public bool IsHidden { get; set; }
public int Width { get; set; } = 1;
public string GetColor()
{
return KeyType == KeyType.Action ? "#404146"
: KeyType == KeyType.Cancel ? "#621b1b"
: KeyType == KeyType.ControlGroup ? "#443512"
: KeyType == KeyType.Army ? "#443512"
: KeyType == KeyType.Train ? "#124443"
: KeyType == KeyType.Research ? "#221244"
: KeyType == KeyType.Construct ? "#122844"
: KeyType == KeyType.Pyre ? "#441212"
: KeyType == KeyType.Advance ? "#23262c"
: KeyType == KeyType.Economy ? "#262c23"
: KeyType == KeyType.Pyre ? "#440e2c"
: "#37393F";
}
@ -30,45 +39,51 @@ public class HotkeyModel
new()
{
KeyText = "Z",
KeyType = KeyType.ControlGroup,
PositionX = 0,
PositionY = 0
KeyType = KeyType.Train,
PositionX = 1,
PositionY = 3
},
new()
{
KeyText = "D",
KeyType = KeyType.ControlGroup,
PositionX = 1,
PositionY = 0
KeyType = KeyType.Army,
PositionX = 3,
PositionY = 2
},
new()
{
KeyText = "C",
KeyType = KeyType.ControlGroup,
PositionX = 2,
PositionY = 0
KeyType = KeyType.Construct,
PositionX = 3,
PositionY = 3
},
new()
{
KeyText = "V",
KeyType = KeyType.Pyre,
PositionX = 3,
PositionY = 0
PositionX = 4,
PositionY = 3
},
new()
{
KeyText = "TAB",
KeyType = KeyType.ControlGroup,
PositionX = 4,
PositionY = 0
KeyText = "X",
KeyType = KeyType.Research,
PositionX = 2,
PositionY = 3
},
new()
{
KeyText = "`",
KeyType = KeyType.Cancel,
PositionX = 0,
PositionY = 0
},
new()
{
KeyText = "TAB",
KeyType = KeyType.Action,
PositionX = 0,
PositionY = 1
},
@ -143,7 +158,8 @@ public class HotkeyModel
KeyText = "SPACE",
KeyType = KeyType.Advance,
PositionX = 1,
PositionY = 3
PositionY = 4,
Width = 4
},
// Economy
new()

3
Services/Immortal/EconomyComparisonService.cs

@ -107,12 +107,9 @@ public class EconomyComparisionService : IEconomyComparisonService
{
var townHall = buildToCompare.GetTownHallEntity;
var townHallMining2 = buildToCompare.GetTownHallMining2Entity;
var townHallMining3 = buildToCompare.GetTownHallMining3Entity;
Add(townHall, buildToCompare, time);
Add(townHallMining2, buildToCompare, time + townHall.Production()!.BuildTime);
Add(townHallMining3, buildToCompare,
time + townHall.Production()!.BuildTime + townHallMining2.Production()!.BuildTime);
}
CalculateEconomy(buildToCompare);

Loading…
Cancel
Save