示例#1
0
 public GameState()
 {
     cardFactory = new CardFactory();
     hero = new Player(this, LocationPlayer.HERO);
     villain = new Player(this, LocationPlayer.VILLAIN);
     stack = new Pile(new Location(LocationPile.STACK, LocationPlayer.NOONE));
 }
示例#2
0
        public PlayerHandFactoryUnitTests()
        {
            // Arrange
            ICardFactory cardFactory = new CardFactory(new CardFactorySettings());

            _showDownSettings = new ShowdownSettings {
                HandSize = 5
            };
            ISimpleValidation <PlayerHandFactoryModel> validator = new PlayerHandFactoryModelValidation(_showDownSettings);

            _playerHandFactory = new PlayerHandFactory(validator, cardFactory);
        }
示例#3
0
 public virtual void Setup(Card cardData)
 {
     card           = cardData;
     nameLabel.text = card.name;
     viewLabel.text = card.view;
     foreach (var o in colorAccents)
     {
         o.color = CardFactory.GetAccentsColorOfFraction(card.fraction);
     }
     viewBacking.color = CardFactory.GetViewBackingAccentsColorOfFraction(card.fraction);
     descLabel.text    = cardData.description.Replace("NEWLINE", "\n");
 }
示例#4
0
    public void Skill1Test2()
    {
        /// <summary>
        /// スキル1
        /// 『運命に抗う者』【起】〖1回合1次〗[翻面1,自分の手札から『ルキナ』を1枚退避エリアに置く]カードを2枚引き、自分の手札を1枚選び、デッキの1番上に置く。このユニットがクラスチェンジしている場合、代わりにカードを3枚引き、自分の手札を2枚選び、デッキの1番上に好きな順番で置く。
        /// </summary>
        /// 转职
        Game.Initialize();
        Game.SetTestMode();
        var player = Game.Player;
        var rival  = Game.Rival;

        Game.TurnPlayer = player;

        var card = CardFactory.CreateCard(100, player);

        player.FrontField.AddCard(card);
        var bond1 = CardFactory.CreateCard(90, player);
        var bond2 = CardFactory.CreateCard(90, player);
        var bond3 = CardFactory.CreateCard(100, player);

        player.Bond.AddCard(bond1);
        player.Bond.AddCard(bond2);
        player.Bond.AddCard(bond3);
        var hand1 = CardFactory.CreateCard(100, player);
        var hand2 = CardFactory.CreateCard(100, player);

        player.Hand.AddCard(hand1);
        player.Hand.AddCard(hand2);
        var deck1 = CardFactory.CreateCard(100, player);
        var deck2 = CardFactory.CreateCard(100, player);
        var deck3 = CardFactory.CreateCard(100, player);
        var deck4 = CardFactory.CreateCard(100, player);
        var deck5 = CardFactory.CreateCard(100, player);

        player.Deck.AddCard(deck1);
        player.Deck.AddCard(deck2);
        player.Deck.AddCard(deck3);
        player.Deck.AddCard(deck4);
        player.Deck.AddCard(deck5);

        Game.DoLevelUp(hand1, true);//转职
        Assert.IsTrue(player.Hand.Count == 2);
        Assert.IsTrue(player.Deck.Count == 4);

        Request.SetNextResult(); //翻面
        Request.SetNextResult(); //选择丢弃
        Request.SetNextResult(); //放回卡组
        Game.DoActionSkill(hand1.GetUsableActionSkills()[0]);

        Assert.IsTrue(player.Hand.Count == 2);
        Assert.IsTrue(player.Deck.Count == 3);
    }
    public AsyncState CardDealing(int numberOfPairs)
    {
        if (HelpButton != null)
        {
            HelpButton.interactable = true;
        }

        IsFinishGameRound = false;
        var asyncChain = Planner.Chain();

        asyncChain.AddAction(Debug.Log, "Dealing started");
        IsDealing = true;

        var movePosition = new Vector3(-1.0f, 0.0f, 0f);
        var moveOffset   = Vector3.right * 0.8f;

        for (var i = 0; i < numberOfPairs * 2; i++)
        {
            CardBehaviour card = null;

            var instancePosition = new Vector3(0f, 0.2f, 10f);
            var instanceRotation = _cardPrefab.transform.rotation;

            if (CardsPool.Count > i && !CardsPool[i].GameObject.activeSelf)
            {
                CardsPool[i].Transform.position = instancePosition;
                CardsPool[i].Transform.rotation = instanceRotation;

                card = CardsPool[i].GameObject.GetComponent <CardBehaviour>();
                card.SetImage(GetImage(i));
                card.gameObject.SetActive(true);
                asyncChain.AddFunc(card.MoveToTable, movePosition);

                movePosition += moveOffset;
                continue;
            }
            var cardFactory = new CardFactory();
            var cardObject  = cardFactory.CreateCard(instancePosition, instanceRotation);
            CardsPool.Add(cardObject);

            card = cardObject.GameObject.GetComponent <CardBehaviour>();
            card.SetImage(GetImage(i));
            asyncChain.AddFunc(card.MoveToTable, movePosition);

            movePosition += moveOffset;
        }

        asyncChain.AddFunc(_difficultyController.ShowCardsInBeginning, CardsPool);
        asyncChain.AddAction(Debug.Log, "Dealing finished");
        asyncChain.onComplete += () => IsDealing = false;
        return(asyncChain);
    }
        public static void Main()
        {
            PlayerRepository playerRepository = new PlayerRepository();
            CardRepository   cardRepository   = new CardRepository();
            PlayerFactory    playerFactory    = new PlayerFactory();
            CardFactory      cardFactory      = new CardFactory();

            IManagerController managerController = new ManagerController(playerRepository, cardRepository, cardFactory, playerFactory);

            Engine engine = new Engine(managerController);

            engine.Run();
        }
示例#7
0
    public static GameObject loadCard(CardData data)
    {
        RectTransform holder = CardFactory.GetHolder("Holder");
        GameObject    go     = GameObject.Instantiate(Resources.Load <GameObject> ("Prefabs/BaseCard"), holder.transform);
        BaseCard      card   = go.GetComponent <BaseCard> ();
        RectTransform goRect = go.GetComponent <RectTransform> ();

        goRect.position   = holder.position;
        goRect.localScale = new Vector3(0.4152496f, 0.4152496f, 0.4152496f);
        card.data         = data;
        card.tag          = "Card";
        return(go);
    }
示例#8
0
    // Use this for initialization
    void Start()
    {
        if (card != null)
        {
            if (card.type == CardType.LOCATION)
            {
                container.sizeDelta = new Vector2(container.sizeDelta.x, 320f);
            }

            Card newCard = CardFactory.CreateCard(card.name);
            newCard.SetParent(container);
        }
    }
    public void Skill1Test()
    {
        /// <summary>
        /// スキル1
        /// 『英雄の凱歌』【起】[翻面3,自分の手札から『マルス』を1枚退避エリアに置く]次の相手のターン終了まで、すべての味方の戦闘力は+30される。
        /// </summary>
        Game.Initialize();
        Game.SetTestMode();
        var player = Game.Player;

        Game.TurnPlayer = player;

        // 己方配置
        var maersi = CardFactory.CreateCard(47, player);

        player.FrontField.AddCard(maersi);
        var cost = CardFactory.CreateCard(47, player);

        player.Hand.AddCard(cost);
        var myUnit1 = CardFactory.CreateCard(84, player);//50攻

        player.FrontField.AddCard(myUnit1);
        var myUnit2 = CardFactory.CreateCard(3, player);//70攻

        player.FrontField.AddCard(myUnit2);

        var bond1 = CardFactory.CreateCard(1, player);

        player.Bond.AddCard(bond1);
        var bond2 = CardFactory.CreateCard(2, player);

        player.Bond.AddCard(bond2);
        var bond3 = CardFactory.CreateCard(4, player);

        player.Bond.AddCard(bond3);

        Assert.IsTrue(maersi.Power == 70);
        Assert.IsTrue(myUnit1.Power == 50);
        Assert.IsTrue(myUnit2.Power == 70);

        Request.SetNextResult(new List <Card>()
        {
            bond1, bond2, bond3
        });                      //设定要翻的费
        Request.SetNextResult(); //丢同名
        Game.DoActionSkill(maersi.GetUsableActionSkills()[0]);

        Assert.IsTrue(maersi.Power == 100);
        Assert.IsTrue(myUnit1.Power == 80);
        Assert.IsTrue(myUnit2.Power == 100);
    }
示例#10
0
        private List <Combination> GetFusionByMonster(List <string> fusionsList)
        {
            var fusions = new List <Combination>();

            for (int i = 0; i < fusionsList.Count; i++)
            {
                var currentLine = fusionsList[i];

                if (currentLine.StartsWith("----"))
                {
                    continue;
                }
                if (fusionsList[i + 2].StartsWith("======"))
                {
                    return(fusions);
                }
                if (currentLine == "" && fusionsList[i + 2].StartsWith("-------------------"))
                {
                    //var monster = new Monster(fusionsList[i + 1], CardType.Base);

                    //fusions.Add(new Association(monster));
                    var mstr = new Monster(GetShortName(fusionsList[i + 1]), CardCategory.Base);
                    CardsList.Add(mstr);
                    int[] numbers = GetMonsterStats(fusionsList[i + 1]);
                    mstr.Attack  = numbers[0];
                    mstr.Defense = numbers[1];
                    fusions.Add(new Combination(mstr));
                    i++;
                    continue;
                }
                if (currentLine.Contains('='))
                {
                    var         instances = currentLine.Split('=');
                    List <Card> monsters  = new List <Card>();
                    var         isFirst   = true;
                    for (int j = 0; j < instances.Length; j++)
                    {
                        var Type     = CheckCardType(instances[j], isFirst);
                        var cardName = GetShortName(instances[j]);
                        monsters.Add(CardFactory.CreateCard(cardName, Type, GetMonsterStats(instances[j])));
                        isFirst = false;
                    }
                    //var type = CheckCardType(instances);
                    //var firstInstance = CardFactory.CreateCard(instances[0], type[0]);
                    //var secondInstance = CardFactory.CreateCard(instances[1], type[1]);

                    AddNewCombination(fusions, monsters[0], monsters[1]);
                }
            }
            return(fusions);
        }
示例#11
0
 void Awake()
 {
     instance = this;
 }
示例#12
0
	void Awake () {
		if (Instance != null  && Instance != this){
			Destroy(gameObject);
		}
		Instance = this;
	}