Skip to content

Commit

Permalink
Remove needless wiki functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
NoahStolk committed Aug 30, 2022
1 parent cbd7f4a commit cefcce3
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 227 deletions.
Original file line number Diff line number Diff line change
@@ -1,32 +1,13 @@
using DevilDaggersInfo.Common.Exceptions;
using DevilDaggersInfo.Core.Wiki.Objects;
using DevilDaggersInfo.Types.Core.Spawnsets;
using DevilDaggersInfo.Types.Core.Wiki;

namespace DevilDaggersInfo.Core.Spawnset.Extensions;

public static class HandLevelExtensions
{
public static int GetStartGems(this HandLevel handLevel) => handLevel switch
public static Upgrade? GetUpgradeByHandLevel(this HandLevel handLevel)
{
HandLevel.Level2 => 10,
HandLevel.Level3 => 70,
HandLevel.Level4 => 220,
_ => 0,
};

public static Upgrade? GetUpgradeByHandLevel(this HandLevel handLevel, GameVersion gameVersion = GameConstants.CurrentVersion)
{
Upgrade upgrade = Upgrades.GetUpgrades(gameVersion).FirstOrDefault(u => u.Level == (byte)handLevel);
Upgrade upgrade = Upgrades.All.FirstOrDefault(u => u.Level == (byte)handLevel);
return upgrade == default ? null : upgrade;
}

public static string ToDisplayString(this HandLevel handLevel) => handLevel switch
{
HandLevel.Level1 => "Level 1",
HandLevel.Level2 => "Level 2",
HandLevel.Level3 => "Level 3",
HandLevel.Level4 => "Level 4",
_ => throw new InvalidEnumConversionException(handLevel),
};
}
18 changes: 10 additions & 8 deletions src/core/DevilDaggersInfo.Core.Wiki/Upgrades.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ namespace DevilDaggersInfo.Core.Wiki;

public static class Upgrades
{
// TODO: Figure out Level 3 homing spray for V1.
public static IReadOnlyList<Upgrade> GetUpgrades(GameVersion gameVersion) => gameVersion switch
public static readonly Upgrade Level1 = new(GameVersion.V3_2, "Level 1", UpgradeColors.Level1, 1, new(10, 20f), null, new(UpgradeUnlockType.Gems, 0));
public static readonly Upgrade Level2 = new(GameVersion.V3_2, "Level 2", UpgradeColors.Level2, 2, new(20, 40f), null, new(UpgradeUnlockType.Gems, 10));
public static readonly Upgrade Level3 = new(GameVersion.V3_2, "Level 3", UpgradeColors.Level3, 3, new(40, 80f), new(20, 40), new(UpgradeUnlockType.Gems, 70));
public static readonly Upgrade Level4 = new(GameVersion.V3_2, "Level 4", UpgradeColors.Level4, 4, new(60, 106.666f), new(30, 40), new(UpgradeUnlockType.Homing, 150));

public static readonly IReadOnlyList<Upgrade> All = new List<Upgrade>
{
GameVersion.V1_0 => UpgradesV1_0.All,
GameVersion.V2_0 => UpgradesV2_0.All,
GameVersion.V3_0 => UpgradesV3_0.All,
GameVersion.V3_1 => UpgradesV3_1.All,
GameVersion.V3_2 => UpgradesV3_2.All,
_ => throw new ArgumentOutOfRangeException(nameof(gameVersion)),
Level1,
Level2,
Level3,
Level4,
};
}
15 changes: 0 additions & 15 deletions src/core/DevilDaggersInfo.Core.Wiki/UpgradesV1_0.cs

This file was deleted.

17 changes: 0 additions & 17 deletions src/core/DevilDaggersInfo.Core.Wiki/UpgradesV2_0.cs

This file was deleted.

17 changes: 0 additions & 17 deletions src/core/DevilDaggersInfo.Core.Wiki/UpgradesV3_0.cs

This file was deleted.

17 changes: 0 additions & 17 deletions src/core/DevilDaggersInfo.Core.Wiki/UpgradesV3_1.cs

This file was deleted.

17 changes: 0 additions & 17 deletions src/core/DevilDaggersInfo.Core.Wiki/UpgradesV3_2.cs

This file was deleted.

115 changes: 16 additions & 99 deletions src/tests/DevilDaggersInfo.Core.Wiki.Tests/UpgradeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,122 +5,39 @@ namespace DevilDaggersInfo.Core.Wiki.Tests;
[TestClass]
public class UpgradeTests
{
[TestMethod]
public void TestGetUpgrades()
{
Assert.AreEqual(3, Upgrades.GetUpgrades(GameVersion.V1_0).Count);
Assert.AreEqual(4, Upgrades.GetUpgrades(GameVersion.V2_0).Count);
Assert.AreEqual(4, Upgrades.GetUpgrades(GameVersion.V3_0).Count);
Assert.AreEqual(4, Upgrades.GetUpgrades(GameVersion.V3_1).Count);
Assert.AreEqual(4, Upgrades.GetUpgrades(GameVersion.V3_2).Count);
}

[TestMethod]
public void TestLevels()
{
Assert.AreEqual(1, UpgradesV1_0.Level1.Level);
Assert.AreEqual(2, UpgradesV1_0.Level2.Level);
Assert.AreEqual(3, UpgradesV1_0.Level3.Level);

Assert.AreEqual(1, UpgradesV2_0.Level1.Level);
Assert.AreEqual(2, UpgradesV2_0.Level2.Level);
Assert.AreEqual(3, UpgradesV2_0.Level3.Level);
Assert.AreEqual(4, UpgradesV2_0.Level4.Level);

Assert.AreEqual(1, UpgradesV3_0.Level1.Level);
Assert.AreEqual(2, UpgradesV3_0.Level2.Level);
Assert.AreEqual(3, UpgradesV3_0.Level3.Level);
Assert.AreEqual(4, UpgradesV3_0.Level4.Level);

Assert.AreEqual(1, UpgradesV3_1.Level1.Level);
Assert.AreEqual(2, UpgradesV3_1.Level2.Level);
Assert.AreEqual(3, UpgradesV3_1.Level3.Level);
Assert.AreEqual(4, UpgradesV3_1.Level4.Level);

Assert.AreEqual(1, UpgradesV3_2.Level1.Level);
Assert.AreEqual(2, UpgradesV3_2.Level2.Level);
Assert.AreEqual(3, UpgradesV3_2.Level3.Level);
Assert.AreEqual(4, UpgradesV3_2.Level4.Level);
Assert.AreEqual(1, Upgrades.Level1.Level);
Assert.AreEqual(2, Upgrades.Level2.Level);
Assert.AreEqual(3, Upgrades.Level3.Level);
Assert.AreEqual(4, Upgrades.Level4.Level);
}

[TestMethod]
public void TestDefaultDamage()
{
Assert.AreEqual(new(10, 20f), UpgradesV1_0.Level1.DefaultDamage);
Assert.AreEqual(new(10, 20f), UpgradesV2_0.Level1.DefaultDamage);
Assert.AreEqual(new(10, 20f), UpgradesV3_0.Level1.DefaultDamage);
Assert.AreEqual(new(10, 20f), UpgradesV3_1.Level1.DefaultDamage);
Assert.AreEqual(new(10, 20f), UpgradesV3_2.Level1.DefaultDamage);

Assert.AreEqual(new(20, 40f), UpgradesV1_0.Level2.DefaultDamage);
Assert.AreEqual(new(20, 40f), UpgradesV2_0.Level2.DefaultDamage);
Assert.AreEqual(new(20, 40f), UpgradesV3_0.Level2.DefaultDamage);
Assert.AreEqual(new(20, 40f), UpgradesV3_1.Level2.DefaultDamage);
Assert.AreEqual(new(20, 40f), UpgradesV3_2.Level2.DefaultDamage);

Assert.AreEqual(new(40, 80f), UpgradesV1_0.Level3.DefaultDamage);
Assert.AreEqual(new(40, 80f), UpgradesV2_0.Level3.DefaultDamage);
Assert.AreEqual(new(40, 80f), UpgradesV3_0.Level3.DefaultDamage);
Assert.AreEqual(new(40, 80f), UpgradesV3_1.Level3.DefaultDamage);
Assert.AreEqual(new(40, 80f), UpgradesV3_2.Level3.DefaultDamage);

Assert.AreEqual(new(60, 106.666f), UpgradesV2_0.Level4.DefaultDamage);
Assert.AreEqual(new(60, 106.666f), UpgradesV3_0.Level4.DefaultDamage);
Assert.AreEqual(new(60, 106.666f), UpgradesV3_1.Level4.DefaultDamage);
Assert.AreEqual(new(60, 106.666f), UpgradesV3_2.Level4.DefaultDamage);
Assert.AreEqual(new(10, 20f), Upgrades.Level1.DefaultDamage);
Assert.AreEqual(new(20, 40f), Upgrades.Level2.DefaultDamage);
Assert.AreEqual(new(40, 80f), Upgrades.Level3.DefaultDamage);
Assert.AreEqual(new(60, 106.666f), Upgrades.Level4.DefaultDamage);
}

[TestMethod]
public void TestHomingDamage()
{
Assert.AreEqual(null, UpgradesV1_0.Level1.HomingDamage);
Assert.AreEqual(null, UpgradesV2_0.Level1.HomingDamage);
Assert.AreEqual(null, UpgradesV3_0.Level1.HomingDamage);
Assert.AreEqual(null, UpgradesV3_1.Level1.HomingDamage);
Assert.AreEqual(null, UpgradesV3_2.Level1.HomingDamage);

Assert.AreEqual(null, UpgradesV1_0.Level2.HomingDamage);
Assert.AreEqual(null, UpgradesV2_0.Level2.HomingDamage);
Assert.AreEqual(null, UpgradesV3_0.Level2.HomingDamage);
Assert.AreEqual(null, UpgradesV3_1.Level2.HomingDamage);
Assert.AreEqual(null, UpgradesV3_2.Level2.HomingDamage);

Assert.AreEqual(new(40, 40f), UpgradesV1_0.Level3.HomingDamage);
Assert.AreEqual(new(20, 40f), UpgradesV2_0.Level3.HomingDamage);
Assert.AreEqual(new(20, 40f), UpgradesV3_0.Level3.HomingDamage);
Assert.AreEqual(new(20, 40f), UpgradesV3_1.Level3.HomingDamage);
Assert.AreEqual(new(20, 40f), UpgradesV3_2.Level3.HomingDamage);

Assert.AreEqual(new(30, 40f), UpgradesV2_0.Level4.HomingDamage);
Assert.AreEqual(new(30, 40f), UpgradesV3_0.Level4.HomingDamage);
Assert.AreEqual(new(30, 40f), UpgradesV3_1.Level4.HomingDamage);
Assert.AreEqual(new(30, 40f), UpgradesV3_2.Level4.HomingDamage);
Assert.AreEqual(null, Upgrades.Level1.HomingDamage);
Assert.AreEqual(null, Upgrades.Level2.HomingDamage);
Assert.AreEqual(new(20, 40f), Upgrades.Level3.HomingDamage);
Assert.AreEqual(new(30, 40f), Upgrades.Level4.HomingDamage);
}

[TestMethod]
public void TestUpgradeUnlock()
{
Assert.AreEqual(new(UpgradeUnlockType.Gems, 0), UpgradesV1_0.Level1.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 0), UpgradesV2_0.Level1.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 0), UpgradesV3_0.Level1.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 0), UpgradesV3_1.Level1.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 0), UpgradesV3_2.Level1.UpgradeUnlock);

Assert.AreEqual(new(UpgradeUnlockType.Gems, 10), UpgradesV1_0.Level2.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 10), UpgradesV2_0.Level2.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 10), UpgradesV3_0.Level2.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 10), UpgradesV3_1.Level2.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 10), UpgradesV3_2.Level2.UpgradeUnlock);

Assert.AreEqual(new(UpgradeUnlockType.Gems, 70), UpgradesV1_0.Level3.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 70), UpgradesV2_0.Level3.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 70), UpgradesV3_0.Level3.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 70), UpgradesV3_1.Level3.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 70), UpgradesV3_2.Level3.UpgradeUnlock);

Assert.AreEqual(new(UpgradeUnlockType.Homing, 150), UpgradesV2_0.Level4.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Homing, 150), UpgradesV3_0.Level4.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Homing, 150), UpgradesV3_1.Level4.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Homing, 150), UpgradesV3_2.Level4.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 0), Upgrades.Level1.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 10), Upgrades.Level2.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Gems, 70), Upgrades.Level3.UpgradeUnlock);
Assert.AreEqual(new(UpgradeUnlockType.Homing, 150), Upgrades.Level4.UpgradeUnlock);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

@{
IReadOnlyList<Enemy> enemies = WikiEnemies.GetEnemies(GameConstants.CurrentVersion).Append(EnemiesV2_0.Andras).ToList();
IReadOnlyList<Upgrade> upgrades = Upgrades.GetUpgrades(GameConstants.CurrentVersion);

List<Enemy> enemiesDamageStats = new();
foreach (Enemy enemy in enemies)
Expand Down Expand Up @@ -89,11 +88,11 @@
</div>
<div class="grid gap-x-4 grid-cols-enemies-damage-stats-lg">
<div class="col-span-2"></div>
@foreach (Upgrade upgrade in upgrades)
@foreach (Upgrade upgrade in Upgrades.All)
{
<div class="text-right">@MarkupUtils.UpgradeString(upgrade)</div>
}
@foreach (Upgrade upgrade in upgrades)
@foreach (Upgrade upgrade in Upgrades.All)
{
<div class="text-right">@MarkupUtils.UpgradeString(upgrade)</div>
}
Expand All @@ -103,11 +102,11 @@
{
<div>@MarkupUtils.EnemyString(enemy)</div>
<div class="text-right">@enemy.Hp</div>
@foreach (Upgrade upgrade in upgrades)
@foreach (Upgrade upgrade in Upgrades.All)
{
<div class="text-right">@((enemy.Hp / upgrade.DefaultDamage.DaggersPerSpraySecond).ToString("0.00"))</div>
}
@foreach (Upgrade upgrade in upgrades)
@foreach (Upgrade upgrade in Upgrades.All)
{
<div class="text-right">@(Math.Ceiling(enemy.Hp / (double)upgrade.DefaultDamage.DaggersPerShot))</div>
}
Expand All @@ -120,11 +119,11 @@
<ul class="pl-4">
<li class="list-disc">All homing daggers cause 10 damage to most enemies; @MarkupUtils.EnemyString(EnemiesV3_2.Leviathan) and @MarkupUtils.EnemyString(EnemiesV3_2.TheOrb) only take 1 damage from homing daggers. This used to happen to @MarkupUtils.EnemyString(EnemiesV3_2.SpiderEgg1) and @MarkupUtils.EnemyString(EnemiesV3_2.SpiderEgg2) as well, but this was fixed in V3.2.</li>
<li class="list-disc">@MarkupUtils.EnemyString(EnemiesV3_2.TheOrb), @MarkupUtils.EnemyString(EnemiesV3_2.SpiderEgg1), and @MarkupUtils.EnemyString(EnemiesV3_2.SpiderEgg2) are the only enemies that are not targeted by any homing daggers.</li>
<li class="list-disc">@MarkupUtils.UpgradeString(UpgradesV3_2.Level4) homing daggers cause splash damage. This means that when they're destroyed, they create a little explosion that can cause damage to near enemies. For example, you only need one @MarkupUtils.UpgradeString(UpgradesV3_2.Level4) homing dagger to kill a @MarkupUtils.EnemyString(EnemiesV3_2.Squid2), as the explosion will destroy the other gem.</li>
<li class="list-disc">Even though @MarkupUtils.EnemyString(EnemiesV3_2.Ghostpede) cannot be damaged by homing daggers (they phase through it), it can still take damage from @MarkupUtils.UpgradeString(UpgradesV3_2.Level4) homing dagger splash damage.</li>
<li class="list-disc">You need 3 @MarkupUtils.UpgradeString(UpgradesV3_2.Level4) homing daggers to kill a @MarkupUtils.EnemyString(EnemiesV3_2.Squid3) gem, but only 1 @MarkupUtils.UpgradeString(UpgradesV3_2.Level3) homing dagger.</li>
<li class="list-disc">@MarkupUtils.UpgradeString(Upgrades.Level4) homing daggers cause splash damage. This means that when they're destroyed, they create a little explosion that can cause damage to near enemies. For example, you only need one @MarkupUtils.UpgradeString(Upgrades.Level4) homing dagger to kill a @MarkupUtils.EnemyString(EnemiesV3_2.Squid2), as the explosion will destroy the other gem.</li>
<li class="list-disc">Even though @MarkupUtils.EnemyString(EnemiesV3_2.Ghostpede) cannot be damaged by homing daggers (they phase through it), it can still take damage from @MarkupUtils.UpgradeString(Upgrades.Level4) homing dagger splash damage.</li>
<li class="list-disc">You need 3 @MarkupUtils.UpgradeString(Upgrades.Level4) homing daggers to kill a @MarkupUtils.EnemyString(EnemiesV3_2.Squid3) gem, but only 1 @MarkupUtils.UpgradeString(Upgrades.Level3) homing dagger.</li>
<li class="list-disc">All homing daggers explode upon touch with any enemy, except @(MarkupUtils.EnemyString(EnemiesV3_2.Skull1)). You can kill 4 @(MarkupUtils.EnemyString(EnemiesV3_2.Skull1, true)) with a single homing dagger.</li>
<li class="list-disc">You used to need 10 @MarkupUtils.UpgradeString(UpgradesV3_2.Level4) homing daggers to kill a single @MarkupUtils.EnemyString(EnemiesV3_2.TransmutedSkull1), while one single @MarkupUtils.UpgradeString(UpgradesV3_2.Level3) homing dagger could kill 4 of them. This was fixed in V3.2, and now both @MarkupUtils.UpgradeString(UpgradesV3_2.Level3) and @MarkupUtils.UpgradeString(UpgradesV3_2.Level4) homing daggers can kill exactly one @MarkupUtils.EnemyString(EnemiesV3_2.TransmutedSkull1).</li>
<li class="list-disc">You used to need 10 @MarkupUtils.UpgradeString(Upgrades.Level4) homing daggers to kill a single @MarkupUtils.EnemyString(EnemiesV3_2.TransmutedSkull1), while one single @MarkupUtils.UpgradeString(Upgrades.Level3) homing dagger could kill 4 of them. This was fixed in V3.2, and now both @MarkupUtils.UpgradeString(Upgrades.Level3) and @MarkupUtils.UpgradeString(Upgrades.Level4) homing daggers can kill exactly one @MarkupUtils.EnemyString(EnemiesV3_2.TransmutedSkull1).</li>
</ul>

<div class="hidden lg:block">
Expand Down
Loading

0 comments on commit cefcce3

Please sign in to comment.