Beispiel #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            var dc = new DeckController();

            var deck = new Deck();

            dc.Subscribe(deck);

            var myDeck = new MyNewDeck();

            dc.Subscribe(myDeck);

            dc.Shuffle();

            deck.Shuffle();

            ListCards(deck.Draw(4));

            ListCards(deck.DrawSorted(10));

            ListCards(deck.Draw(10));

            //deck.Shuffle();

            ListCards(deck.Draw(10));

            ListCards(deck.DrawSorted(10));

            ListCards(deck.DrawSorted(10));

            ListCards(deck.DrawSorted(10));
        }
 // Use this for initialization
 void Start()
 {
     //GameDeck = GameObjectUtils.AddAndPosition (DeckPrefab, this.gameObject, Vector3.zero).GetComponent<DeckController>();
     GameDeck = transform.Find ("Deck").gameObject.GetComponent<DeckController> ();
     CombatZone = transform.Find("CombatZone").gameObject.GetComponent<CombatZoneController>();
     Players = new List<HandController>();
     StartCoroutine (Deal ());
 }
        public static void LoadHand(Player player)
        {
            // Draw until hand is full
            var freeSlotIndex = player.Hand.GetFirstFreeSlotIndex();
            while (freeSlotIndex >= 0 && Deck.HasPieces())
            {
                char? newPiece = DeckController.DrawPiece();
                player.Hand.Pieces[freeSlotIndex] = newPiece;
                freeSlotIndex = player.Hand.GetFirstFreeSlotIndex();
            }
            SidebarController.RenderPiecesInDeckLabel();

            // Set player's hand in hand slots
            for (int i = 0; i < player.Hand.Pieces.Length; i++)
            {
                HandSlots[i].SetPiece(player.Hand.Pieces[i]);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 处理各种Witness
        /// </summary>
        /// <param name="witness"></param>
        /// <param name="deck"></param>
        /// <param name="callback"></param>
        public virtual void HandleWitness(EventWitness witness, DeckController deck, GenericAction callback = null)
        {
            var error = witness.getVar <ErrorCode>("code", false);

            if (error != ErrorCode.none)
            {
                if (!witnessFailHandler(witness, error, deck, callback))
                {
                    callback?.Invoke(this, null);
                }
            }
            else
            {
                if (!witnessSuccessHandler(witness, deck, callback))
                {
                    callback?.Invoke(this, null);
                }
            }
        }
        protected override bool witnessSuccessHandler(EventWitness witness, DeckController deck, GenericAction callback)
        {
            int player = witness.getVar <int>("playerIndex");

            int[] originalRID = witness.getVar <int[]>("originCardsRID");
            int[] cardsRID    = witness.getVar <int[]>("replacedCardsRID");
            int[] cardsDID    = witness.getVar <int[]>("replacedCardsDID", false);

            DebugUtils.NullCheck(cardsRID, "replacedCardsRID");
            DebugUtils.NullCheck(originalRID, "originCardsRID");
            if (cardsDID == null)
            {
                cardsDID = new int[cardsRID.Length];
            }

            deck.GetUserBoard(player).ThrowCardsWithReplace(CardID.ToCardIDs(originalRID), CardID.ToCardIDs(cardsDID, cardsRID), callback);

            return(true);
        }
Beispiel #6
0
        public static void NewGame(Panel contentContainer = null)
        {
            Game.Current = new Game()
            {
                Id = DateTime.Now.ToString("yyyyMMddHHmmss")
            };

            foreach (var player in UserSettings.Players)
            {
                Game.Current.Players.Add(new Player.Player(player.Name, player.Avatar, player.AI));
            }
            Game.Current.CurrentPlayerIndex = 0;
            SidebarController.RenderTurnPlayerLabel();

            DeckController.LoadDeck();
            HandController.ReturnAllToHand(changeVisualPosition: true);
            HandController.LoadHand(Game.Current.CurrentPlayer);
            HandController.SaveHand(Game.Current.CurrentPlayer);
            BoardController.LoadBoard(contentContainer ?? Program.MainView.Controls.Find("content", true).First());
        }
Beispiel #7
0
    // Use this for initialization
    private void Start()
    {
        mDeck        = GameObject.Find("Deck").GetComponent <DeckController>();
        mHand        = GameObject.Find("Action Hand").GetComponent <HandController>();
        mDiscardPile = GameObject.Find("Discard Pile").GetComponent <DiscardPileController>();
        mPlayer      = GameObject.Find("Player").GetComponent <PlayerController>();
        mCamera      = GameObject.Find("Main Camera");
        mPlayZone    = GameObject.Find("Play Zone");

        Debug.Assert(mDeck != null);
        Debug.Assert(mPlayZone != null);
        Debug.Assert(mHand != null);
        Debug.Assert(mDiscardPile != null);
        Debug.Assert(mPlayer != null);
        Debug.Assert(mCamera != null);

        Debug.Assert(PREFAB_CARD != null, "You must assign the Card Prefab in the inspector");
        mStartTime = Time.time;
        mPlayTime  = 0;
    }
Beispiel #8
0
    //Creates currentDeck and makes it a copy of the default deck
    private void Awake()
    {
        if (DeckController.deckController == null)
        {
            DeckController.deckController = this;
        }
        else
        {
            Destroy(this.gameObject);
        }

        DontDestroyOnLoad(this.gameObject);

        drawPile = new List <Card>();
        foreach (ListWrapper cards in deck)
        {
            drawPile.AddRange(cards.deck);
        }
        discardPile = new List <Card>();
        ShuffleDrawPile();
    }
        protected override bool witnessSuccessHandler(EventWitness witness, DeckController deck, GenericAction callback = null)
        {
            int playerIndex = witness.getVar <int>("playerIndex");
            int cardRID     = witness.getVar <int>("cardRID");
            int cardDID     = witness.getVar <int>("cardDID");

            // 随从位置
            int position = witness.getVar <int>("position");

            var arg = new RetinueSummonEventArgs()
            {
                CardDID  = cardDID,
                CardRID  = cardRID,
                PlayerID = playerIndex,
                Position = position
            };

            deck.RecvEvent(arg, callback);

            return(true);
        }
Beispiel #10
0
        protected override bool witnessSuccessHandler(EventWitness witness, DeckController deck, GenericAction callback = null)
        {
            int playerIndex    = witness.getVar <int>("playerIndex");
            int cardRID        = witness.getVar <int>("cardRID");
            int cardDID        = witness.getVar <int>("cardDID");
            int targetPosition = witness.getVar <int>("targetPosition");

            int[] targetCardRID = witness.getVar <int[]>("targetCardsRID");

            UseCardEventArgs args;

            if (targetPosition == -1)
            {
                if (targetCardRID.Length == 0)
                {
                    args = new UseCardEventArgs();
                }
                else
                {
                    args = new UseCardWithTargetArgs(targetCardRID);
                }
            }
            else
            {
                if (targetCardRID.Length == 0)
                {
                    args = new UseCardWithPositionArgs(targetPosition);
                }
                else
                {
                    args = new UseCardWithTargetPositionArgs(targetPosition, targetCardRID);
                }
            }
            args.CardRID  = cardRID;
            args.CardDID  = cardDID;
            args.PlayerID = playerIndex;

            deck.RecvEvent(args, callback);
            return(true);
        }
Beispiel #11
0
    private GameObject getTrackedObject(string name)
    {
        GameObject obj = null;

        if (trackedObjects.ContainsKey(name))
        {
            obj = trackedObjects[name];
        }
        else
        {
            obj = GameObject.Find(name);
            if ((obj == null) && name.StartsWith("Card"))
            {
                obj = DeckController.instantiateCard(byte.Parse(name.Substring(4)));
            }
            if (obj)
            {
                trackedObjects[name] = obj;
            }
        }

        return(obj);
    }
Beispiel #12
0
    public void updateCardHand(byte[] cardIndices)
    {
        cards.Clear();

        foreach (var index in cardIndices)
        {
            GameObject card = null;

            if (cardCache.ContainsKey(index))
            {
                card = cardCache[index];
            }

            if (card == null)
            {
                card = GameObject.Find("Card" + index.ToString());
            }

            if (card == null)
            {
                card = DeckController.instantiateCard(index);
            }

            if (card != null)
            {
                card.GetComponent <Rigidbody>().isKinematic = true;
                card.transform.position = transform.position;
                card.transform.rotation = transform.rotation;
                card.transform.parent   = transform;
                cards.AddLast(card);

                cardCache[index] = card;
            }
        }

        updateCardRotations(0);
    }
Beispiel #13
0
 // Use this for initialization
 public void Initialize(DeckController controller, HandType handType)
 {
     deckController = controller;
     handOwner = handType;
     deckView = deckController.gameObject.GetComponent<DeckView>();
     gameCards = new List<GameCard> ();
 }
Beispiel #14
0
 void BuildAbilityDeck(AbilityCardDeckConfig abilityDeckData)
 {
     // each player should draw starting cards
     DeckController.CreateStartingDeck(_abilityDeckData);
 }
Beispiel #15
0
 private void OnDisable()
 {
     DeckController.UnsubscribeFromEvents();
 }
Beispiel #16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="witness"></param>
 /// <param name="deck"></param>
 /// <param name="callback"></param>
 /// <returns>如果返回false,则表明没有处理callback</returns>
 protected abstract bool witnessSuccessHandler(EventWitness witness, DeckController deck, GenericAction callback = null);
 public void Initialize()
 {
     deckPile       = gameObject.transform.Find("deckPile").gameObject;
     deckController = GetComponent <DeckController> ();
     StartCoroutine(Deal());
 }
Beispiel #18
0
 public void InitializeDeckController(DeckController controller)
 {
     deckController = controller;
 }
Beispiel #19
0
 // Start is called before the first frame update
 void Awake()
 {
     deckController = GetComponent <DeckController>();
 }
Beispiel #20
0
 /// <summary>
 /// Witness错误处理器
 /// </summary>
 /// <param name="witness"></param>
 /// <param name="error"></param>
 /// <param name="deck"></param>
 /// <param name="callback"></param>
 /// <returns></returns>
 protected virtual bool witnessFailHandler(EventWitness witness, ErrorCode error, DeckController deck, GenericAction callback = null)
 {
     UberDebug.LogWarningChannel("View", "Witness遇到了错误:\n {0} {1}", witness, error);
     return(false);
 }
Beispiel #21
0
 // Start is called before the first frame update
 void Start()
 {
     deck = GetComponent <DeckController>();
 }
Beispiel #22
0
 protected override bool witnessSuccessHandler(EventWitness witness, DeckController deck, GenericAction callback = null)
 {
     return(false);
 }
Beispiel #23
0
 public void setDeckController(DeckController dc)
 {
     deckController = dc;
 }
Beispiel #24
0
    // Start is called before the first frame update
    void Start()
    {
        UserReportingClientConfiguration config = new UserReportingClientConfiguration(500, 300, 60, 10);

        UnityUserReporting.Configure(config);

        rightHandAnchor = GameObject.Find("RightHandAnchor");
        leftHandAnchor  = GameObject.Find("LeftHandAnchor");

        rightHandGrabber = rightHandAnchor.GetComponent <SimpleGrabber>();

        var mainDeck = GameObject.Find("MainDeck");

        deckController = mainDeck.GetComponent <DeckController>();
        deckCollider   = mainDeck.GetComponent <Collider>();

        cardHandController = leftHandAnchor.GetComponent <CardHandController>();

        Core.AsyncInitialize(appID.ToString()).OnComplete((Message <Oculus.Platform.Models.PlatformInitialize> init_message) =>
        {
            if (init_message.IsError)
            {
                Debug.LogError("Failed to initialize - " + init_message);
            }
            else
            {
                Entitlements.IsUserEntitledToApplication().OnComplete((entitlemnets_message) =>
                {
                    if (entitlemnets_message.IsError)
                    {
                        Debug.LogError("Entitlements failed - " + entitlemnets_message);
                    }
                    else
                    {
                        Users.GetLoggedInUser().OnComplete((Message <Oculus.Platform.Models.User> logged_in_user_message) =>
                        {
                            if (logged_in_user_message.IsError)
                            {
                                Debug.LogError("Could not retrieve logged in user - " + logged_in_user_message);
                            }
                            else
                            {
                                localUser = logged_in_user_message.GetUser();
                                UnityUserReporting.CurrentClient.LogEvent(UserReportEventLevel.Info, "User logged in");

                                UnityUserReporting.CurrentClient.AddDeviceMetadata("userID", localUser.ID.ToString());
                                UnityUserReporting.CurrentClient.AddDeviceMetadata("username", localUser.OculusID);

                                localAvatar = Instantiate(localAvatarPrefab);
                                localAvatar.CanOwnMicrophone = false;
                                localAvatar.UseSDKPackets    = true;
                                localAvatar.RecordPackets    = true;
                                localAvatar.PacketRecorded  += OnLocalAvatarPacketRecorded;
                                localAvatar.oculusUserID     = localUser.ID.ToString();

                                var trackingSpace = GameObject.Find("TrackingSpace");
                                localAvatar.transform.position = trackingSpace.transform.position;
                                localAvatar.transform.rotation = trackingSpace.transform.rotation;
                                localAvatar.transform.parent   = trackingSpace.transform;

                                Rooms.SetUpdateNotificationCallback(OnRoomUpdateCallback);
                                Net.SetConnectionStateChangedCallback(OnConnectionStateChangedCallback);
                                Net.SetPeerConnectRequestCallback(OnConnectRequestCallback);
                                Net.SetPingResultNotificationCallback(OnPingResultCallback);
                                Voip.SetVoipConnectRequestCallback(OnVoipConnectRequestCallback);
                                Voip.SetVoipStateChangeCallback(OnVoipStateChangedCallback);

                                // NOTE - Setting this before the platform is initialized does NOT WORK!!
                                Voip.SetMicrophoneFilterCallback(MicrophoneFilterCallback);

                                Rooms.Join(roomID, true).OnComplete(OnRoomUpdateCallback);

#if PLATFORM_ANDROID
                                if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
                                {
                                    Permission.RequestUserPermission(Permission.Microphone);
                                }

                                UnityUserReporting.CurrentClient.AddDeviceMetadata("Microphone Enabled",
                                                                                   Permission.HasUserAuthorizedPermission(Permission.Microphone).ToString());
#endif
                            }
                        });
                    }
                });
            }
        });
    }
Beispiel #25
0
 public CorpDeckView(Corporation corp)
 {
     controller = new DeckController();
     this.corp  = corp;
 }
Beispiel #26
0
    protected override async UniTask MasterPlayerFlow()
    {
        // マスター以外処理不要
        if (!PhotonNetwork.IsMasterClient)
        {
            return;
        }

        // 全員分の PlayerPrefab を作り、部屋に共有。
        {
            var player_1_Obj  = PhotonManager.Instance.Instantiate(playerPrefabName, Vector3.zero, (Quaternion) default);
            var player_1_Rect = player_1_Obj.GetComponent <RectTransform>();
            player1 = player_1_Obj.GetComponent <PlayerController>();
            player1.ChangeName("Photon_Player1");
            player1.SetParent(playerParent);
            player_1_Rect.anchoredPosition = anchoredPos_Player1;

            var player_2_Obj  = PhotonManager.Instance.Instantiate(playerPrefabName, Vector3.zero, (Quaternion) default);
            var player_2_Rect = player_2_Obj.GetComponent <RectTransform>();
            player2 = player_2_Obj.GetComponent <PlayerController>();
            player2.ChangeName("Photon_Player2");
            player2.SetParent(playerParent);
            player_2_Rect.anchoredPosition = anchoredPos_Player2;
        }

        // 山札生成
        var deckObj = PhotonManager.Instance.Instantiate(deckPrefabName, deckAnchoredPos);

        deckController = deckObj.GetComponent <DeckController>();
        deckController.SetParent(deckParent);
        deckController.ResetDeck(useJokerCount);

        // 山札なくなるまで対戦繰り返し
        Debug.Log("deckController.GetDeckCardCount:" + deckController.GetDeckCardCount);
        while (deckController.GetDeckCardCount > 0)
        {
            Debug.Log("残り山札枚数;" + deckController.GetDeckCardCount);

            // プレイヤーにカードを配る
            await(
                DistributeCard(player1),
                DistributeCard(player2)
                );

            // 両方のプレイヤーが選択するの待ち
            player1.ReleaseChoiceCard();
            player2.ReleaseChoiceCard();

            var choiceCards = await(
                player1.PlayerChoiceCard(isRemovePlayerCard: true),
                player2.PlayerChoiceCard(isRemovePlayerCard: true)
                );

            // 両方のカードを表向きにする
            var player1Card = choiceCards.Item1;
            var player2Card = choiceCards.Item2;
            player1Card.SetChoice(false); // 選択中表示終了
            player2Card.SetChoice(false);
            await(
                player1Card.ReturnCard(isShowFront: true),
                player2Card.ReturnCard(isShowFront: true)
                );

            // 1回の対戦;
            if (player1Card.cardNo == player2Card.cardNo)
            {
                Debug.Log("引き分け");

                // 引き分け
                var hikwakeCardPos = HikiwakeCardParent.localPosition;
                player1Card.SetParent(ObjTag.HikiwakeCardParent);
                player2Card.SetParent(ObjTag.HikiwakeCardParent);
                await(
                    player1Card.MoveCard(hikwakeCardPos, isLittleShit: true),
                    player2Card.MoveCard(hikwakeCardPos, isLittleShit: true)
                    );
            }
            else
            {
                // どっちか勝ち_カード移動
                var winner = (player1Card.cardNo > player2Card.cardNo) ? player1 : player2;
                Debug.Log("勝者:" + winner);
                await(
                    winner.SetWinCard(player1Card),
                    winner.SetWinCard(player2Card)
                    );
            }
        }
    }
Beispiel #27
0
 private void Awake()
 {
     instance = this;
 }
Beispiel #28
0
 //reference
 public void init(DeckController con)
 {
     controller = con;
 }
Beispiel #29
0
    IEnumerator Challenge()
    {
        while (ChallengeState == ChallengeState.Prepare)
        {
            currentTime   = startTime + prepareTime - Time.realtimeSinceStartup;
            TimeText.text = (prepareTime - currentTime).ToString("n2");
            if (!started)
            {
                startTime      = Time.realtimeSinceStartup;
                StateText.text = ChallengeState.ToString();
                started        = true;
            }
            else if (Time.realtimeSinceStartup >= startTime + prepareTime)
            {
                ChallengeState = ChallengeState.Challenge;
                started        = false;
            }

            yield return(null);
        }
        while (ChallengeState == ChallengeState.Challenge)
        {
            currentTime   = challengeTime - (startTime + challengeTime - Time.realtimeSinceStartup);
            TimeText.text = currentTime.ToString("n2");
            if (!started)
            {
                startTime      = Time.realtimeSinceStartup;
                StateText.text = ChallengeState.ToString();
                started        = true;
            }
            else if (Time.realtimeSinceStartup >= startTime + challengeTime)
            {
                ChallengeState = ChallengeState.Reward;
                started        = false;
            }

            foreach (var unit in ReactionUnits)
            {
                var controller = unit.GetComponent <ReactionUnitController>();
                if (currentTime >= controller.StartTime && currentTime < (controller.StartTime + controller.Duration))
                {
                    unit.gameObject.SetActive(true);
                }
                else
                {
                    if (unit.gameObject.activeSelf)
                    {
                        unit.gameObject.SetActive(false);
                    }
                }
            }

            yield return(null);
        }
        while (ChallengeState == ChallengeState.Reward)
        {
            if (!started)
            {
                var prizeCards = new List <GameObject>();

                foreach (var reaction in Reactions)
                {
                    if (reaction != null)
                    {
                        var card = DeckController.GetRandomCard();
                        prizeCards.Add(card);
                        PlayerController.ReceiveCard(card);
                    }
                }

                if (prizeCards.Count > 0)
                {
                    GameController.OpenBoosterController.Initialize(prizeCards);
                    GameController.OpenBoosterController.InnerGameObject.SetActive(true);
                    CloseChallenge();
                }
                else
                {
                    GameController.StoryController.SetStoryText("Bad luck this time. Maybe, you will win in the next challenge!");
                    CloseChallenge();
                }

                started = true;
            }
            yield return(new WaitForSeconds(2));
        }

        yield return(null);
    }
Beispiel #30
0
 public void Shuffle(DeckController deckController)
 {
     deckController.Shuffle();
     UIController.Instance.InitializeCardsUI(deckController, deckController.GetDeck());
 }
Beispiel #31
0
 void Start()
 {
     deckController = deckHandler.GetComponent <DeckController>();
     enemy.GetComponent <Enemy>().EnemyOnClicked += enemyClicked;
 }
Beispiel #32
0
 private void Awake()
 {
     cards = GetComponent <DeckController>();
 }