Repository navigation
Expand file tree
/
Copy pathDrawPileCoreExtracted.cs
More file actions
131 lines (115 loc) · 3.99 KB
/
Copy pathDrawPileCoreExtracted.cs
File metadata and controls
131 lines (115 loc) · 3.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
public ObservableCollection<CardModel> HandCards { get; } = new();
private List<CardModel> deckCards = new(); // 抽牌堆
private List<CardModel> discardPile = new(); // 弃牌堆
// 抽牌堆数量
[ObservableProperty]
private int drawPileCount;
// 弃牌堆数量
[ObservableProperty]
private int discardPileCount;
private void InitializeDeck()
{
deckCards.Clear();
discardPile.Clear();
// 根据关卡增加更强卡牌
for (int i = 0; i < 3; i++)
{
deckCards.Add(new CardModel
{
Name = "Strike",
Description = "对敌人造成6点伤害。",
Damage = 6,
Block = 0,
Cost = 1
});
deckCards.Add(new CardModel
{
Name = "Defend",
Description = "获得5点格挡。",
Damage = 0,
Block = 5,
Cost = 1
});
}
// 第二关开始增加更强卡牌
if (CurrentLevel >= 2)
{
deckCards.Add(new CardModel
{
Name = "Bash",
Description = "对敌人造成8点伤害。",
Damage = 8,
Block = 0,
Cost = 2
});
deckCards.Add(new CardModel
{
Name = "Heavy Strike",
Description = "对敌人造成12点伤害。",
Damage = 12,
Block = 0,
Cost = 2
});
}
// 第三关增加更多强力卡牌
if (CurrentLevel >= 3)
{
deckCards.Add(new CardModel
{
Name = "Power Slash",
Description = "对敌人造成15点伤害。",
Damage = 15,
Block = 0,
Cost = 3
});
deckCards.Add(new CardModel
{
Name = "Iron Skin",
Description = "获得12点格挡。",
Damage = 0,
Block = 12,
Cost = 2
});
}
// 更新全部卡牌预览
UpdateAllCards();
ShuffleDeck();
UpdatePileCounts();
}
private void ShuffleDeck()
{
Random random = new Random();
for (int i = deckCards.Count - 1; i > 0; i--)
{
int randomIndex = random.Next(i + 1);
(deckCards[i], deckCards[randomIndex]) = (deckCards[randomIndex], deckCards[i]);
}
}
private void DrawCards(int count)
{
for (int i = 0; i < count && deckCards.Count > 0; i++)
{
var card = deckCards[0];
deckCards.RemoveAt(0);
HandCards.Add(card);
}
UpdatePileCounts();
}
private void UpdatePileCounts()
{
DrawPileCount = deckCards.Count;
DiscardPileCount = discardPile.Count;
}
// 卡牌库用完重新初始化(弃牌堆洗回抽牌堆)
if (deckCards.Count == 0)
{
// 将弃牌堆洗牌后移入抽牌堆
foreach (var card in discardPile)
{
deckCards.Add(card);
}
discardPile.Clear();
ShuffleDeck();
DrawCards(3);
}
UpdatePileCounts();