Skip to content

Commit 204a648

Browse files
committed
Refactor examples
1 parent 4fe9d78 commit 204a648

File tree

8 files changed

+107
-94
lines changed

8 files changed

+107
-94
lines changed

Assets/BasicExample/Scripts/Runtime/Entities/CharacterStatus.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021 Koji Hasegawa.
1+
// Copyright (c) 2021-2025 Koji Hasegawa.
22
// This software is released under the MIT License.
33

44
using System;
@@ -14,35 +14,35 @@ namespace BasicExample.Entities
1414
[Serializable]
1515
public class CharacterStatus : IDestructible
1616
{
17-
[SerializeField, Tooltip("属性")]
18-
private Element element;
17+
[field: SerializeField, Tooltip("属性")]
18+
private Element Element { get; set; }
1919

20-
[SerializeField, Tooltip("最大ヒットポイント")]
21-
private int maxHitPoint;
20+
[field: SerializeField, Tooltip("最大ヒットポイント")]
21+
private int MaxHitPoint { get; set; }
2222

23-
[SerializeField, Tooltip("防御力(buff分を除く)")]
24-
private int defense;
23+
[field: SerializeField, Tooltip("防御力(buff分を除く)")]
24+
private int Defense { get; set; }
2525

26-
[SerializeField, Tooltip("攻撃力(buff分を除く)")]
27-
private int attack;
26+
[field: SerializeField, Tooltip("攻撃力(buff分を除く)")]
27+
private int Attack { get; set; }
2828

2929
public int HitPoint { get; set; }
3030
private HitPointGaugeSetting _bounds;
3131

32-
public CharacterStatus(Element ele = Element.None, int maxHp = 0, int def = 0, int atk = 0)
32+
public CharacterStatus(Element element = Element.None, int hp = 0, int defense = 0, int attack = 0)
3333
{
34-
element = ele;
35-
maxHitPoint = maxHp;
36-
defense = def;
37-
attack = atk;
38-
HitPoint = maxHp;
34+
Element = element;
35+
MaxHitPoint = hp;
36+
Defense = defense;
37+
Attack = attack;
38+
HitPoint = hp;
3939
_bounds = ScriptableObject.CreateInstance<HitPointGaugeSetting>();
4040
}
4141

4242
/// <inheritdoc/>
4343
public (float, Color) GetHitPointGauge()
4444
{
45-
var percentage = (float)HitPoint / maxHitPoint;
45+
var percentage = (float)HitPoint / MaxHitPoint;
4646
return (percentage, _bounds.GetHitPointGaugeColor(percentage));
4747
}
4848

@@ -53,10 +53,10 @@ public bool IsDestroyed()
5353
}
5454

5555
/// <inheritdoc/>
56-
public bool GiveAttack(int attackPower, Element attackElement)
56+
public bool TakeDamage(Element element, int attackPower)
5757
{
58-
var attackPowerWithElement = (int)(attackPower * element.GetDamageMultiplier(attackElement));
59-
var damage = attackPowerWithElement - defense;
58+
var attackPowerWithElement = (int)(attackPower * Element.GetDamageMultiplier(element));
59+
var damage = attackPowerWithElement - Defense;
6060
if (damage <= 0)
6161
{
6262
return false;

Assets/BasicExample/Scripts/Runtime/Entities/Enemy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021 Koji Hasegawa.
1+
// Copyright (c) 2021-2025 Koji Hasegawa.
22
// This software is released under the MIT License.
33

44
using BasicExample.Entities.Enums;
@@ -22,6 +22,6 @@ public class Enemy : MonoBehaviour, IDestructible
2222
public bool IsDestroyed() => race.IsDestroyed();
2323

2424
/// <inheritdoc/>
25-
public bool GiveAttack(int attackPower, Element attackElement) => race.GiveAttack(attackPower, attackElement);
25+
public bool TakeDamage(Element element, int attackPower) => race.TakeDamage(element, attackPower);
2626
}
2727
}

Assets/BasicExample/Scripts/Runtime/Entities/IDestructible.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021 Koji Hasegawa.
1+
// Copyright (c) 2021-2025 Koji Hasegawa.
22
// This software is released under the MIT License.
33

44
using BasicExample.Entities.Enums;
@@ -26,9 +26,9 @@ public interface IDestructible
2626
/// <summary>
2727
/// 攻撃を与える
2828
/// </summary>
29+
/// <param name="element">攻撃の属性</param>
2930
/// <param name="attackPower">攻撃力</param>
30-
/// <param name="attackElement">攻撃の属性</param>
3131
/// <returns>true: 1以上のダメージが入った</returns>
32-
bool GiveAttack(int attackPower, Element attackElement);
32+
bool TakeDamage(Element element, int attackPower);
3333
}
3434
}

Assets/BasicExample/Scripts/Runtime/Entities/Player.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021 Koji Hasegawa.
1+
// Copyright (c) 2021-2025 Koji Hasegawa.
22
// This software is released under the MIT License.
33

44
using BasicExample.Entities.Enums;
@@ -18,6 +18,6 @@ public class Player : MonoBehaviour, IDestructible
1818
public bool IsDestroyed() => status.IsDestroyed();
1919

2020
/// <inheritdoc/>
21-
public bool GiveAttack(int attackPower, Element attackElement) => status.GiveAttack(attackPower, attackElement);
21+
public bool TakeDamage(Element element, int attackPower) => status.TakeDamage(element, attackPower);
2222
}
2323
}

Assets/BasicExample/Scripts/Runtime/Entities/ScriptableObjects/Race.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021 Koji Hasegawa.
1+
// Copyright (c) 2021-2025 Koji Hasegawa.
22
// This software is released under the MIT License.
33

44
using BasicExample.Entities.Enums;
@@ -38,6 +38,6 @@ public class Race : ScriptableObject, IDestructible
3838
public bool IsDestroyed() => status.IsDestroyed();
3939

4040
/// <inheritdoc/>
41-
public bool GiveAttack(int attackPower, Element attackElement) => status.GiveAttack(attackPower, attackElement);
41+
public bool TakeDamage(Element element, int attackPower) => status.TakeDamage(element, attackPower);
4242
}
4343
}

Assets/BasicExample/Tests/Runtime/Entities/CharacterStatueTest.cs

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
// Copyright (c) 2021-2025 Koji Hasegawa.
2+
// This software is released under the MIT License.
3+
4+
using BasicExample.Entities.Enums;
5+
using NUnit.Framework;
6+
7+
namespace BasicExample.Entities
8+
{
9+
[TestFixture]
10+
public class CharacterStatusTest
11+
{
12+
[Test]
13+
public void IsDestroyed_まだ生きている()
14+
{
15+
var sut = new CharacterStatus(hp: 1);
16+
17+
Assert.That(sut.IsDestroyed(), Is.False);
18+
Assert.That(sut.HitPoint, Is.EqualTo(1));
19+
}
20+
21+
[Test]
22+
public void IsDestroyed_もう死んでいる()
23+
{
24+
var sut = new CharacterStatus(hp: 1);
25+
sut.TakeDamage(Element.None, 1);
26+
27+
Assert.That(sut.IsDestroyed(), Is.True);
28+
}
29+
30+
[Test]
31+
public void TakeDamage_防御力5に対して攻撃力1_被ダメージなし()
32+
{
33+
var sut = new CharacterStatus(element: Element.None, hp: 2, defense: 5);
34+
var damaged = sut.TakeDamage(Element.None, 1);
35+
36+
Assert.That(damaged, Is.False);
37+
}
38+
39+
[Test]
40+
public void TakeDamage_防御力5に対して攻撃力1_HP減少なし()
41+
{
42+
var sut = new CharacterStatus(element: Element.None, hp: 2, defense: 5);
43+
sut.TakeDamage(Element.None, 1);
44+
45+
Assert.That(sut.HitPoint, Is.EqualTo(2));
46+
}
47+
48+
[Test]
49+
public void TakeDamage_防御力0に対して攻撃力1_被ダメージあり()
50+
{
51+
var sut = new CharacterStatus(element: Element.None, hp: 2, defense: 0);
52+
var damaged = sut.TakeDamage(Element.None, 1);
53+
54+
Assert.That(damaged, Is.True);
55+
}
56+
57+
[Test]
58+
public void TakeDamage_防御力2に対して攻撃力3_HPが1減少()
59+
{
60+
var sut = new CharacterStatus(element: Element.None, hp: 5, defense: 2);
61+
sut.TakeDamage(element: Element.None, attackPower: 3);
62+
63+
var actual = sut.HitPoint - 5; // delta HP
64+
Assert.That(actual, Is.EqualTo(-1));
65+
}
66+
67+
[TestCase(2, 3, -1)]
68+
[TestCase(5, 7, -2)]
69+
public void TakeDamage_防御力より攻撃力が大きい_HPが差分だけ減少(int defence, int attackPower, int expected)
70+
{
71+
var beforeHp = 5;
72+
var sut = new CharacterStatus(element: Element.None, hp: beforeHp, defense: defence);
73+
sut.TakeDamage(element: Element.None, attackPower: attackPower);
74+
75+
var actual = sut.HitPoint - beforeHp; // delta HP
76+
Assert.That(actual, Is.EqualTo(expected));
77+
}
78+
}
79+
}

Assets/BasicExample/Tests/Runtime/Entities/CharacterStatueTest.cs.meta renamed to Assets/BasicExample/Tests/Runtime/Entities/CharacterStatusTest.cs.meta

File renamed without changes.

0 commit comments

Comments
 (0)