Skip to content

Commit 7237b3e

Browse files
committed
Fix hp stuff, add DamageTest and Add Damage algs
1 parent 6a837bf commit 7237b3e

File tree

5 files changed

+128
-59
lines changed

5 files changed

+128
-59
lines changed

src/NosCore.Algorithm/DamageService/DamageMinMaxService.cs

Lines changed: 0 additions & 57 deletions
This file was deleted.
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
using NosCore.Algorithm.HpService;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Text;
5+
6+
namespace NosCore.Algorithm.DamageService
7+
{
8+
// Work in progress
9+
public class DamageService : IDamageService
10+
{
11+
private readonly double[,] _minDamage = new double[Constants.ClassCount, Constants.MaxLevel];
12+
13+
public DamageService()
14+
{
15+
// Adventurer Damage from Opennos
16+
for (var i = 0; i < Constants.MaxLevel; i++)
17+
{
18+
_minDamage[0, i] = i + 10;
19+
}
20+
21+
// Swordmanint
22+
int swordmanMin = 8;
23+
int swordmanMinUp = 2;
24+
for (var i = 0; i < Constants.MaxLevel; i++)
25+
{
26+
if (i > 0 && (i - 2) % 10 == 0 || i > 0 && (i - 7) % 10 == 0)
27+
{
28+
swordmanMinUp++;
29+
}
30+
31+
if (i > 0 && (i - 1) % 10 == 0 || i > 0 && (i - 6) % 10 == 0)
32+
{
33+
swordmanMinUp--;
34+
}
35+
36+
swordmanMin += swordmanMinUp;
37+
38+
_minDamage[1, i] = swordmanMin;
39+
}
40+
// Archer
41+
int archerMin = 58;
42+
int archerMinUp = 2;
43+
for (var i = 0; i < Constants.MaxLevel; i++)
44+
{
45+
if (i > 0 && (i - 1) % 10 == 0 || i > 0 && (i - 3) % 10 == 0 || i > 0 && (i - 5) % 10 == 0 || i > 0 && (i - 8) % 10 == 0)
46+
{
47+
archerMinUp = 1;
48+
}
49+
else
50+
{
51+
archerMinUp = 2;
52+
}
53+
54+
archerMin += archerMinUp;
55+
56+
_minDamage[2, i] = archerMin;
57+
}
58+
59+
// Magician
60+
int mageMin = 8;
61+
int mageMinUp = 2;
62+
for (var i = 0; i < Constants.MaxLevel; i++)
63+
{
64+
if (i > 0 && (i - 2) % 10 == 0 || i > 0 && (i - 7) % 10 == 0)
65+
{
66+
mageMinUp++;
67+
}
68+
69+
if (i > 0 && (i - 1) % 10 == 0 || i > 0 && (i - 6) % 10 == 0)
70+
{
71+
mageMinUp--;
72+
}
73+
74+
mageMin += mageMinUp;
75+
76+
_minDamage[3, i] = mageMin;
77+
}
78+
79+
// Fighter
80+
int fighterMin = 8;
81+
int fighterMinUp = 2;
82+
for (var i = 0; i < Constants.MaxLevel; i++)
83+
{
84+
if (i > 0 && (i - 2) % 10 == 0 || i > 0 && (i - 4) % 10 == 0 || i > 0 && (i - 6) % 10 == 0 || i > 0 && (i - 8) % 10 == 0 || i > 0 && (i - 10) % 10 == 0)
85+
{
86+
fighterMinUp++;
87+
}
88+
89+
if (i > 0 && (i - 1) % 10 == 0 || i > 0 && (i - 3) % 10 == 0 || i > 0 && (i - 5) % 10 == 0 || i > 0 && (i - 7) % 10 == 0 || i > 0 && (i - 9) % 10 == 0)
90+
{
91+
fighterMinUp--;
92+
}
93+
94+
fighterMin += fighterMinUp;
95+
96+
_minDamage[4, i] = fighterMin;
97+
}
98+
}
99+
100+
public long GetMinDamage(byte @class, byte level)
101+
{
102+
return (long)_minDamage![@class, level - 1];
103+
}
104+
105+
public long GetMaxDamage(byte @class, byte level) => GetMinDamage(@class, level);
106+
}
107+
}

src/NosCore.Algorithm/DamageService/IDamageMinMaxService.cs renamed to src/NosCore.Algorithm/DamageService/IDamageService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace NosCore.Algorithm.DamageService
88
{
9-
public interface IDamageMinMaxService
9+
public interface IDamageService
1010
{
1111
long GetMinDamage(byte entityClass, byte level);
1212

test/NosCore.Algorithm.Tests/DocumentationTest.ApproveDocumentationExperience.approved.txt

Whitespace-only changes.

test/NosCore.Algorithm.Tests/DocumentationTest.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public void SpExperienceDocumentation()
4848
Approvals.Verify(resultBuilder);
4949
}
5050

51-
5251
[TestMethod]
5352
public void HpDocumentation()
5453
{
@@ -69,5 +68,25 @@ public void HpDocumentation()
6968

7069
Approvals.Verify(resultBuilder);
7170
}
71+
72+
[TestMethod]
73+
public void DamageDocumentation()
74+
{
75+
var experienceService = new DamageService.DamageService();
76+
77+
StringBuilder resultBuilder = new StringBuilder("============ Damage Table =============");
78+
foreach (var @class in Enum.GetValues(typeof(CharacterClassType)).Cast<CharacterClassType>())
79+
{
80+
resultBuilder.AppendLine();
81+
resultBuilder.AppendLine($"-------------- Class {@class} --------------");
82+
for (byte level = 1; level < 100; level++)
83+
{
84+
resultBuilder.AppendLine(
85+
$"Level {level.ToString().PadRight(2)} - Damage Min: {experienceService.GetMinDamage((byte)@class, level)} Damage Max: {experienceService.GetMaxDamage((byte)@class, level)}");
86+
}
87+
}
88+
89+
Approvals.Verify(resultBuilder);
90+
}
7291
}
7392
}

0 commit comments

Comments
 (0)