MOD!
This commit is contained in:
@@ -4,7 +4,7 @@ using System.Collections.Generic;
|
||||
using Continentis.MainGame.Card;
|
||||
using Continentis.MainGame.Commands;
|
||||
using DG.Tweening;
|
||||
using SoulliesFramework.General;
|
||||
using SLSFramework.General;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace Continentis.MainGame.Character
|
||||
public DeckSubmodule(CharacterBase character) : base(character)
|
||||
{
|
||||
piles = new Dictionary<string, List<CardInstance>>();
|
||||
piles.Add("Storage", new List<CardInstance>());
|
||||
piles.Add("Hand", new List<CardInstance>());
|
||||
piles.Add("Draw", new List<CardInstance>());
|
||||
piles.Add("Discard", new List<CardInstance>());
|
||||
@@ -28,19 +29,23 @@ namespace Continentis.MainGame.Character
|
||||
|
||||
public partial class DeckSubmodule
|
||||
{
|
||||
public void SetUpCardViews()
|
||||
public void SetUpHandCardViews()
|
||||
{
|
||||
DrawPile.ForEach(c=>c.GenerateHandCardView(CombatUIManager.Instance.deckPage.drawPile));
|
||||
HandPile.ForEach(c=>c.GenerateHandCardView(CombatUIManager.Instance.deckPage.handPile));
|
||||
DiscardPile.ForEach(c=>c.GenerateHandCardView(CombatUIManager.Instance.deckPage.discardPile));
|
||||
ExhaustPile.ForEach(c=>c.GenerateHandCardView(CombatUIManager.Instance.deckPage.exhaustPile));
|
||||
DrawPile.ForEach(c=> c.GenerateHandCardView(CombatUIManager.Instance.combatMainPage.drawPile));
|
||||
HandPile.ForEach(c=>
|
||||
{
|
||||
if(!c.cardLogic.playSubmodule.isDuringPlayEffect)
|
||||
c.GenerateHandCardView(CombatUIManager.Instance.combatMainPage.handPile);
|
||||
});
|
||||
DiscardPile.ForEach(c=>c.GenerateHandCardView(CombatUIManager.Instance.combatMainPage.discardPile));
|
||||
ExhaustPile.ForEach(c=>c.GenerateHandCardView(CombatUIManager.Instance.combatMainPage.exhaustPile));
|
||||
}
|
||||
|
||||
public void DrawCards(int cardCount, float interval)
|
||||
{
|
||||
if (cardCount > DrawPile.Count)
|
||||
if (cardCount > DrawPile.Count && DiscardPile.Count > 0)
|
||||
{
|
||||
Debug.Log("抽牌堆牌数不足,洗牌。");
|
||||
Debug.Log("抽牌堆牌数不足,且弃牌堆有牌,正在洗牌...");
|
||||
ReshuffleDeck();
|
||||
}
|
||||
|
||||
@@ -62,22 +67,32 @@ namespace Continentis.MainGame.Character
|
||||
|
||||
public void DiscardCard(CardInstance card, float interval = 0.1f)
|
||||
{
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_DiscardCards(this, new List<CardInstance> { card }, interval));
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_DiscardCards(card.deck, new List<CardInstance> { card }, interval));
|
||||
}
|
||||
|
||||
public void DiscardCards(List<CardInstance> cards, float interval = 0.1f)
|
||||
{
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_DiscardCards(this, cards, interval));
|
||||
Dictionary<DeckSubmodule, List<CardInstance>> groupedCards = cards.GroupBy(card => card.deck)
|
||||
.ToDictionary(group => group.Key, group => group.ToList());
|
||||
foreach (var kvp in groupedCards)
|
||||
{
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_DiscardCards(kvp.Key, kvp.Value, interval));
|
||||
}
|
||||
}
|
||||
|
||||
public void ExhaustCard(CardInstance card, float interval = 0.1f)
|
||||
{
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_ExhaustCards(this, new List<CardInstance> { card }, interval));
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_ExhaustCards(owner is PlayerHero, card.deck, new List<CardInstance> { card }, interval));
|
||||
}
|
||||
|
||||
public void ExhaustCards(List<CardInstance> cards, float interval = 0.1f)
|
||||
{
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_ExhaustCards(this, cards, interval));
|
||||
Dictionary<DeckSubmodule, List<CardInstance>> groupedCards = cards.GroupBy(card => card.deck)
|
||||
.ToDictionary(group => group.Key, group => group.ToList());
|
||||
foreach (var kvp in groupedCards)
|
||||
{
|
||||
CommandQueueManager.Instance.AddCommand(new Cmd_ExhaustCards(owner is PlayerHero, kvp.Key, kvp.Value, interval));
|
||||
}
|
||||
}
|
||||
|
||||
public void ReshuffleDeck(float interval = 0.1f)
|
||||
@@ -104,18 +119,25 @@ namespace Continentis.MainGame.Character
|
||||
throw new Exception("Card not found in any pile.");
|
||||
}
|
||||
|
||||
public void TransferCard(string pileName, int index, CardInstance card)
|
||||
{
|
||||
List<CardInstance> pile = Pile(pileName);
|
||||
pile.Transfer(card, index);
|
||||
card.cardLocation = new CardLocation(pileName, index);
|
||||
}
|
||||
|
||||
public void TransferCard(string fromPileName, string toPileName, CardInstance card)
|
||||
{
|
||||
List<CardInstance> fromPile = Pile(fromPileName);
|
||||
List<CardInstance> toPile = Pile(toPileName);
|
||||
fromPile.Transfer(toPile, card);
|
||||
card.currentPileName = toPileName;
|
||||
card.cardLocation = new CardLocation(toPileName, toPile.IndexOf(card));
|
||||
}
|
||||
|
||||
public void TransferCard(List<CardInstance> fromPile, List<CardInstance> toPile, CardInstance card)
|
||||
{
|
||||
fromPile.Transfer(toPile, card);
|
||||
card.currentPileName = piles.FirstOrDefault(pilePair => pilePair.Value == toPile).Key;
|
||||
card.cardLocation = new CardLocation(GetCardLocation(card, out _).Key, toPile.IndexOf(card));
|
||||
}
|
||||
|
||||
public List<CardInstance> GetAllCards()
|
||||
@@ -142,6 +164,7 @@ namespace Continentis.MainGame.Character
|
||||
throw new KeyNotFoundException($"Pile '{pileName}' not found.");
|
||||
}
|
||||
|
||||
public List<CardInstance> StoragePile => Pile("Storage");
|
||||
public List<CardInstance> HandPile => Pile("Hand");
|
||||
public List<CardInstance> DrawPile => Pile("Draw");
|
||||
public List<CardInstance> DiscardPile => Pile("Discard");
|
||||
|
||||
Reference in New Issue
Block a user