Changeset 37587

Show
Ignore:
Timestamp:
05/17/10 00:46:12 (5 years ago)
Author:
isaisstillalive
Message:
  • CoreとCardInfoの初連携。CardInfo側の要請でカード一覧を返却する機能をGameクラスに追加
Location:
lang/csharp/DominionEngine
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/csharp/DominionEngine/DominionEngine.CardInfo/DDL/Card.cs

    r37512 r37587  
    99    /// カード 
    1010    /// </summary> 
    11     public abstract class Card : ICard 
     11    public class Card : ICard 
    1212    { 
    1313        #region プロパティとコンストラクタ 
  • lang/csharp/DominionEngine/DominionEngine.Core.Test/GameTest.cs

    r37570 r37587  
    157157 
    158158        #endregion 
     159 
     160 
     161        #region AnyPlayer_CardListGetting 
     162 
     163        [TestCaseSource("AnyPlayer_CardListGettingSource")] 
     164        public void AnyPlayer_CardListGetting(CardPosition position, Type[] cardInfos) 
     165        { 
     166            Game game = new Game(2); 
     167 
     168            game.Players[0].deck.Clear(); 
     169            game.Players[0].deck.Add(new Card<Copper>()); 
     170            game.Players[0].deck.Add(new Card<Silver>()); 
     171            game.Players[0].deck.Add(new Card<Gold>()); 
     172            game.Players[0].deck.Add(new Card<Copper>()); 
     173            game.Players[0].hand.Clear(); 
     174            game.Players[0].hand.Add(new Card<Silver>()); 
     175            game.Players[0].hand.Add(new Card<Gold>()); 
     176            game.Players[0].hand.Add(new Card<Estate>()); 
     177            game.Players[0].discardPile.Clear(); 
     178            game.Players[0].discardPile.Add(new Card<Gold>()); 
     179            game.Players[0].discardPile.Add(new Card<Estate>()); 
     180            game.Players[0].discardPile.Add(new Card<Duchy>()); 
     181            game.Players[0].playArea.Clear(); 
     182            game.Players[0].playArea.Add(new Card<Estate>()); 
     183            game.Players[0].playArea.Add(new Card<Duchy>()); 
     184            game.Players[0].playArea.Add(new Card<Province>()); 
     185 
     186            game.Players[1].deck.Clear(); 
     187            game.Players[1].deck.Add(new Card<Duchy>()); 
     188            game.Players[1].deck.Add(new Card<Province>()); 
     189            game.Players[1].deck.Add(new Card<Curse>()); 
     190            game.Players[1].hand.Clear(); 
     191 
     192            game.trashPile.Clear(); 
     193            game.trashPile.Add(new Card<Province>()); 
     194            game.trashPile.Add(new Card<Curse>()); 
     195            game.trashPile.Add(new Card<Copper>()); 
     196 
     197            AnyPlayer.CardListGettingEventArgs args = new AnyPlayer.CardListGettingEventArgs(position); 
     198            game.AnyPlayer_CardListGetting(null, args); 
     199 
     200            Assert.That(args.Result.Count, Is.EqualTo(cardInfos.Length)); 
     201            Assert.That(args.Result, Is.All.Property("Position").EqualTo(position)); 
     202            for (int i = 0; i < cardInfos.Length; i++) 
     203                        { 
     204                Assert.That(args.Result[i].CardInfo, Is.InstanceOf(cardInfos[i])); 
     205            } 
     206        } 
     207        public static object[][] AnyPlayer_CardListGettingSource = new object[][]{ 
     208            new object[]{CardPosition.Deck(0), new Type[]{typeof(Copper), typeof(Silver), typeof(Gold), typeof(Copper)}}, 
     209            new object[]{CardPosition.Hand(0), new Type[]{typeof(Silver), typeof(Gold), typeof(Estate)}}, 
     210            new object[]{CardPosition.Discard(0), new Type[]{typeof(Gold), typeof(Estate), typeof(Duchy)}}, 
     211            new object[]{CardPosition.PlayArea(0), new Type[]{typeof(Estate), typeof(Duchy), typeof(Province)}}, 
     212            new object[]{CardPosition.Deck(1), new Type[]{typeof(Duchy), typeof(Province), typeof(Curse)}}, 
     213            new object[]{CardPosition.Hand(1), new Type[]{}}, 
     214            new object[]{CardPosition.Trash, new Type[]{typeof(Province), typeof(Curse), typeof(Copper)}}, 
     215        }; 
     216 
     217        [Test] 
     218        public void AnyPlayer_CardListGetting_Supply() 
     219        { 
     220            Game game = new Game(2); 
     221 
     222            game.SetSupply<DummyCardInfo>(); 
     223 
     224            AnyPlayer.CardListGettingEventArgs args = new AnyPlayer.CardListGettingEventArgs(CardPosition.Supply); 
     225            game.AnyPlayer_CardListGetting(null, args); 
     226 
     227            Assert.That(args.Result.Count, Is.EqualTo(8)); 
     228            Assert.That(args.Result, Is.All.Property("Position").EqualTo(CardPosition.Supply)); 
     229            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Copper>()); 
     230            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Silver>()); 
     231            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Gold>()); 
     232            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Estate>()); 
     233            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Duchy>()); 
     234            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Province>()); 
     235            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<Curse>()); 
     236            Assert.That(args.Result, Has.Some.Property("CardInfo").InstanceOf<DummyCardInfo>()); 
     237        } 
     238 
     239        #endregion 
    159240    } 
    160241} 
  • lang/csharp/DominionEngine/DominionEngine.Core/Game.cs

    r37570 r37587  
    1313    public class Game 
    1414    { 
     15        #region ランダマイザ 
     16 
     17        internal Random Random = new Random(); 
     18        public int RandomSeed { set { Random = new Random(value); } } 
     19 
     20        #endregion 
     21 
    1522        #region プレイヤー 
    1623 
     
    1926        /// </summary> 
    2027        public IList<PlayerInfo> Players { get; internal set; } 
     28 
     29        /// <summary> 
     30        /// 現在のターンプレイヤー位置 
     31        /// </summary> 
     32        public int turnPlayerPosition; 
     33 
     34        /// <summary> 
     35        /// 現在のターンプレイヤー 
     36        /// </summary> 
     37        public PlayerInfo TurnPlayer { get { return Players[turnPlayerPosition]; } } 
    2138 
    2239        /// <summary> 
     
    3552            for (int i = 0; i < playerCount; i++) 
    3653            { 
    37                 players[i] = new PlayerInfo(i); 
     54                players[i] = new PlayerInfo(this, i); 
    3855            } 
    3956        } 
     
    4966        /// </summary> 
    5067        public ICardList TrashPile { get; internal set; } 
    51  
    52         /// <summary> 
    53         /// トラッシュパイル 
    54         /// </summary> 
    5568        internal CardList trashPile = new CardList(); 
    5669 
     
    133146        #endregion 
    134147 
     148        #region イベント 
     149 
     150        void AnyPlayer_Drawing(object sender, AnyPlayer.DrawingEventArgs e) 
     151        { 
     152            //Players[e.Player] 
     153            //throw new NotImplementedException(); 
     154        } 
     155 
     156        #endregion 
     157 
    135158        /// <summary> 
    136159        /// 新しいゲームを作成する 
     
    142165            InitializeTrashPile(); 
    143166            InitializeSupplyPiles(); 
     167 
     168            AnyPlayer.Drawing += new EventHandler<AnyPlayer.DrawingEventArgs>(AnyPlayer_Drawing); 
     169 
     170            AnyPlayer.CardListGetting += new EventHandler<AnyPlayer.CardListGettingEventArgs>(AnyPlayer_CardListGetting); 
     171        } 
     172 
     173        internal void AnyPlayer_CardListGetting(object sender, AnyPlayer.CardListGettingEventArgs e) 
     174        { 
     175            IList<Card> cardList = null; 
     176            List<CardInfo.Card> result = new List<CardInfo.Card>(); 
     177 
     178            switch (e.Position.Position) 
     179            { 
     180                case CardPosition.PositionEnum.Deck: 
     181                    cardList = Players[e.Position.Player].Deck; 
     182                    break; 
     183                case CardPosition.PositionEnum.Discard: 
     184                    cardList = Players[e.Position.Player].DiscardPile; 
     185                    break; 
     186                case CardPosition.PositionEnum.Hand: 
     187                    cardList = Players[e.Position.Player].Hand; 
     188                    break; 
     189                case CardPosition.PositionEnum.PlayArea: 
     190                    cardList = Players[e.Position.Player].PlayArea; 
     191                    break; 
     192                case CardPosition.PositionEnum.Supply: 
     193                    foreach (var supply in supplyPiles) 
     194                    { 
     195                        result.Add(new CardInfo.Card(supply.CardInfo, e.Position)); 
     196                    } 
     197                    e.Result = result; 
     198                    return; 
     199                case CardPosition.PositionEnum.Trash: 
     200                    cardList = TrashPile; 
     201                    break; 
     202                default: 
     203                    return; 
     204            } 
     205 
     206            foreach (var card in cardList) 
     207            { 
     208                result.Add(new CardInfo.Card(card.CardInfo, e.Position)); 
     209            } 
     210 
     211            e.Result = result; 
     212        } 
     213 
     214        public void Start() 
     215        { 
     216 
    144217        } 
    145218    }