根据手牌攻击力计算先手

This commit is contained in:
xianyi
2025-08-21 15:48:17 +08:00
parent b215788256
commit 347db984b3

View File

@@ -95,7 +95,6 @@ namespace TcgEngine.Gameplay
//Choose first player //Choose first player
game_data.state = GameState.Play; game_data.state = GameState.Play;
game_data.first_player = random.NextDouble() < 0.5 ? 0 : 1;
game_data.current_player = game_data.first_player; game_data.current_player = game_data.first_player;
game_data.turn_count = 1; game_data.turn_count = 1;
@@ -141,10 +140,15 @@ namespace TcgEngine.Gameplay
RefreshData(); RefreshData();
onGameStart?.Invoke(); onGameStart?.Invoke();
if(should_mulligan) if (should_mulligan)
{
GoToMulligan(); GoToMulligan();
}
else else
{
CalculateFirstPlayer();
StartTurn(); StartTurn();
}
} }
//开始回合 //开始回合
@@ -166,7 +170,7 @@ namespace TcgEngine.Gameplay
DrawCard(player, GameplayData.Get().cards_per_turn); DrawCard(player, GameplayData.Get().cards_per_turn);
} }
//Mana //Mana
player.mana_max += GameplayData.Get().mana_per_turn; player.mana_max += GameplayData.Get().mana_per_turn;
player.mana_max = Mathf.Min(player.mana_max, GameplayData.Get().mana_max); player.mana_max = Mathf.Min(player.mana_max, GameplayData.Get().mana_max);
@@ -1064,7 +1068,7 @@ namespace TcgEngine.Gameplay
{ {
// 不消耗mana强制上场 // 不消耗mana强制上场
PlayCard(characterCard, emptySlot, true); // skip_cost = true PlayCard(characterCard, emptySlot, true); // skip_cost = true
// 设置为疲劳状态 // 设置为疲劳状态
characterCard.exhausted = true; characterCard.exhausted = true;
} }
@@ -1903,18 +1907,19 @@ namespace TcgEngine.Gameplay
player.ready = true; player.ready = true;
DrawCard(player, count); DrawCard(player, count);
// 将换掉的卡牌重新加入牌组并洗牌 // 将换掉的卡牌重新加入牌组并洗牌
foreach (Card card in mulligan_cards) foreach (Card card in mulligan_cards)
{ {
player.cards_deck.Add(card); player.cards_deck.Add(card);
} }
ShuffleDeck(player.cards_deck); ShuffleDeck(player.cards_deck);
RefreshData(); RefreshData();
if (game_data.AreAllPlayersReady()) if (game_data.AreAllPlayersReady())
{ {
CalculateFirstPlayer();
StartTurn(); StartTurn();
} }
} }
@@ -1968,6 +1973,33 @@ namespace TcgEngine.Gameplay
RefreshData(); RefreshData();
} }
// 根据手牌攻击力计算先手玩家
protected virtual void CalculateFirstPlayer()
{
int f = 0, l = 0;
foreach (Player player in game_data.players)
{
int allCardAttack = 0;
foreach (Card card in player.cards_hand)
{
allCardAttack += card.CardData.attack;
}
if (player.player_id == 0)
{
f = allCardAttack;
}
else
{
l = allCardAttack;
}
}
game_data.first_player = f > l ? 0 : 1;
game_data.current_player = game_data.first_player;
}
//------------- //-------------
public virtual void RefreshData() public virtual void RefreshData()