-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCharacter.cs
More file actions
117 lines (106 loc) · 2.99 KB
/
Character.cs
File metadata and controls
117 lines (106 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using THBSimulate;
namespace THBSimulate
{
enum SkillStrategy { Positive,Passive,None}
abstract class BaseCharacter
{
public readonly string name;
public byte maxHp;
public List<Skill> skills = new();
public BaseCharacter(string name,byte maxHp, List<Skill> skills)
{
this.name = name;
this.maxHp = maxHp;
this.skills=skills;
}
}
class BaiBan : BaseCharacter
{
public BaiBan(string name, byte maxHp,List<Skill>skills) : base(name, maxHp,skills)
{
}
public BaiBan() : base("白板", 4,new List<Skill>()) { }
}
class LittleDemon : BaseCharacter
{
public LittleDemon() : base("小恶魔", 4, new List<Skill>() { new Search()})
{
}
}
class Youmu : BaseCharacter
{
public Youmu() : base("妖梦", 4, new List<Skill>() { new CihangChop() })
{
}
}
abstract class Skill
{
public string name;
public SkillStrategy strategy;
public Player owener;
#pragma warning disable CS8618
public Skill(string name,SkillStrategy skillStrategy) { this.name = name; this.strategy = skillStrategy; }
#pragma warning restore CS8618
abstract public void Init(Player owenr);
abstract public void Release(Player owenr);
}
abstract class PositiveSkill : Skill
{
protected PositiveSkill(string name) : base(name, SkillStrategy.Positive)
{
}
public abstract void Use(Player taget);
}
abstract class PassiveSkill : Skill
{
protected PassiveSkill(string name) : base(name, SkillStrategy.Passive)
{
}
}
class Search : PositiveSkill
{
public Search() : base("寻找") { }
public override void Init(Player owenr)
{
}
public override void Release(Player owenr)
{
}
public override void Use(Player taget)
{
search();
}
private void search()
{
owener.ExecuteSkill(this);
int count = owener.handCardsArea.Count;
owener.Discard(count);
owener.Draw(GameManager.Instance.Scene.stackManager.Draw(count));
}
}
class CihangChop : PassiveSkill
{
public CihangChop() : base("迷津慈航斩")
{
}
public override void Init(Player owenr)
{
owenr.PlayCard += Chop;
}
public override void Release(Player owenr)
{
throw new NotImplementedException();
}
void Chop(Card card,Player target)
{
if(card is Attack)
{
owener.ExecuteSkill(this);
#pragma warning disable CS8602
card.OnUse += _ => { (card as Attack).NeedCount += 1; };
card.AfterUse += _ => { (card as Attack).NeedCount -= 1; };
#pragma warning restore CS8602
}
}
}
}