Exemple #1
0
 private void Game_TurnFinished(object sender, TurnStartedEventArgs e)
 {
     //var game = sender as IGame;
     if (e.CurrentPlayer == this)
     {
         TurnStarted?.Invoke(sender, e);
     }
 }
Exemple #2
0
 public void Update(GameFightTurnStartMessage message)
 {
     if (PlayedFighter?.ContextualId == message.Id)
     {
         IsOurTurn = true;
         TurnStarted?.Invoke();
     }
 }
 //<turnHandling>
 public void StartTurn()
 {
     SetState(new StartTurn(this));
     if (photonView.IsMine)
     {
         TurnStarted?.Invoke(this);
     }
 }
Exemple #4
0
 public void StartTurn()
 {
     _currentActionPoints = MaxActionPoints;
     _yourTurn            = true;
     if (TurnStarted != null)
     {
         TurnStarted.Invoke();
     }
 }
Exemple #5
0
        /// <summary>
        ///    Starts turn.
        /// </summary>
        public void StartTurn()
        {
            Assert.IsFalse(IsTurnActive, "Attempted to start turn while it was already started.");

            TurnStarted?.Invoke(this);
            IsTurnActive   = true;
            _turnStartTime = Time.time;
            _turnStartDate = Date;
        }
        public void Start()
        {
            m_ObjectQueue.Clear();

            foreach (var sel in HexDatabase.Selectables)
            {
                m_ObjectQueue.AddLast(sel);
            }

            TurnStarted?.Invoke(CurrentTurnOwner);
        }
Exemple #7
0
    IEnumerator TurnStart()
    {
        Units.ForEach(u => { u.OnTurnStart(); });
        if (TurnStarted != null)
        {
            TurnStarted.Invoke(this, new EventArgs());
        }
        yield return(new WaitForSeconds(turnStartTime));

        Players.Find(p => p.playerNumber.Equals(CurrentPlayerNumber)).Play(this);
        //角色取出忽略层
        Units.ForEach(u => u.gameObject.layer = 0);
    }
Exemple #8
0
        protected internal override void Turn(int turn, Action <Intent> agent1, Action <Intent> agent2)
        {
            InvokeOnUIThread(() => TurnStarted?.Invoke(this, new EventArgs()));

            List <Task> tasks = new List <Task>();

            task1 = null;
            task2 = null;

            if (NeedIntent1 == null)
            {
                Console.WriteLine($"{nameof(NeedIntent1)}へのハンドラが登録されていません!!");
                agent1(Intent.StayIntent);
            }
            else
            {
                task1 = new TaskCompletionSource <Intent>();
                tasks.Add(task1.Task);

                InvokeOnUIThread(() => NeedIntent1(this, new EventArgs()));
                task1.Task.Wait();
            }

            if (NeedIntent2 == null)
            {
                Console.WriteLine($"{nameof(NeedIntent2)}へのハンドラが登録されていません!!");
                agent2(Intent.StayIntent);
            }
            else
            {
                task2 = new TaskCompletionSource <Intent>();
                tasks.Add(task2.Task);

                InvokeOnUIThread(() => NeedIntent2(this, new EventArgs()));
                task2.Task.Wait();
            }

            if (task1 != null)
            {
                agent1(task1.Task.Result);
            }

            if (task2 != null)
            {
                agent2(task2.Task.Result);
            }

            InvokeOnUIThread(() => TurnEnded?.Invoke(this, new EventArgs()));
        }
        public void EndTurn(Selectable sel)
        {
            if (CurrentTurnOwner != sel)
            {
                Debug.LogWarning($"{sel} Selectable is not turn over, thus cannot end turn for another object");
                return;
            }

            TurnEnded?.Invoke(CurrentTurnOwner);

            var first = CurrentTurnOwner;

            m_ObjectQueue.RemoveFirst();
            m_ObjectQueue.AddLast(first);

            TurnStarted?.Invoke(CurrentTurnOwner);
        }
Exemple #10
0
    public void Start(GamePlayer gamePlayer)
    {
        Game.Active.GamePlayer  = gamePlayer;
        Game.Active.Turn.IsDone = false;
        Game.Active.Reset();
        UIManager.Instance.UpdateActivePlayerUI();
        TurnStarted?.Invoke(gamePlayer);


        if (Game.Active.Phase.Number != 0)
        {
            return;
        }
        if (Game.Active.GamePlayer.Characters.Any(c => !c.IsOnMap))
        {
            UIManager.Instance.ForcePlacingChampions = true;
        }
    }
Exemple #11
0
    IEnumerator TurnStart()
    {
        Units.ForEach(u => { u.OnTurnStart(); });
        if (TurnStarted != null)
        {
            TurnStarted.Invoke(this, new EventArgs());
        }
        yield return(new WaitForSeconds(turnStartTime));

        //角色加入忽略层
        Units.ForEach(u => u.gameObject.layer = 2);

        //剧情对话
        yield return(StartCoroutine(DialogManager.GetInstance().PlayDialog(roundNumber, CurrentPlayerNumber)));

        //角色取出忽略层
        Units.ForEach(u => u.gameObject.layer = 0);

        //这里接一个EndTurn,目的应该是调用里面的Play,来让当前Player行动。
        EndTurn();
    }
Exemple #12
0
 private void HandleGameFightTurnStartPlayingMessage(IAccount account, GameFightTurnStartPlayingMessage message)
 {
     TurnStarted?.Invoke();
 }
Exemple #13
0
 public void Start()
 {
     TurnStarted?.Invoke(this, EventArgs.Empty);
     NewPlayerTurn();
 }
 public void DoTurnStartActions()
 {
     StructureManager.DoTurnStartActions();
     TurnStarted?.Invoke(this);
 }
Exemple #15
0
 internal void When(TurnStarted @event)
 {
     ActivePlayer = @event.Deployments.Owner;
     ArmyBuffer   = @event.Deployments;
     Phase        = GamePhase.Deploy;
 }
Exemple #16
0
        private void OnMessageRecieved(MessageType messageType, string message)
        {
            switch (messageType)
            {
            case MessageType.StartGame:
            {
                GameStarted?.Invoke();
                break;
            }

            case MessageType.PlayerType:
            {
                PlayerType playerType = (PlayerType)Enum.Parse(typeof(PlayerType), message);
                PlayerTypeRecieved?.Invoke(playerType);
                break;
            }

            case MessageType.Step:
            {
                string[]   moves = message.Split(',');
                BoardIndex from  = BoardIndex.Parse(moves[0]);
                BoardIndex to    = BoardIndex.Parse(moves[1]);
                MoveRecieved?.Invoke(from, to);
                break;
            }

            case MessageType.TurnEnd:
            {
                TurnEnded?.Invoke();
                break;
            }

            case MessageType.StartTurn:
            {
                PlayerType playerType = (PlayerType)Enum.Parse(typeof(PlayerType), message);
                TurnStarted?.Invoke(playerType);
                break;
            }

            case MessageType.QueenAppeared:
            {
                BoardIndex where = BoardIndex.Parse(message);
                QueenAppeared?.Invoke(where);
                break;
            }

            case MessageType.Result:
            {
                PlayerType winner = (PlayerType)Enum.Parse(typeof(PlayerType), message);
                ResultRecieved?.Invoke(winner);
                break;
            }

            case MessageType.Name:
            {
                OpponentName?.Invoke(message);
                break;
            }

            case MessageType.TextMessage:
            {
                TextMessageRecieved?.Invoke(message);
                break;
            }
            }
        }
Exemple #17
0
 private async Task OnTurnStarted(TurnStarted x, CancellationToken ct)
 {
     System.Diagnostics.Debug.WriteLine("OnTurnStarted " + Thread.CurrentThread.ManagedThreadId);
     System.Diagnostics.Debug.WriteLine($"---- ターン{x.Turn} ----");
 }
Exemple #18
0
 internal void StartTurn()
 {
     TurnStarted?.Invoke(this);
 }
 protected virtual void OnTurnStarted() {
     TurnStarted?.Invoke(this);
 }
Exemple #20
0
        private static void GotMessage(object state)
        {
            NetIncomingMessage incomingMessage;

            while ((incomingMessage = Client.ReadMessage()) != null)
            {
                // handle incoming message
                switch (incomingMessage.MessageType)
                {
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.ErrorMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.VerboseDebugMessage:
                    var text = incomingMessage.ReadString();
                    Console.WriteLine($"{incomingMessage.MessageType}: {text}");
                    break;

                case NetIncomingMessageType.StatusChanged:
                    var status = (NetConnectionStatus)incomingMessage.ReadByte();
                    var reason = incomingMessage.ReadString();
                    Console.WriteLine($"{status}, Reason: {reason}");

                    switch (status)
                    {
                    case NetConnectionStatus.Connected:
                        Connected?.Invoke(null, EventArgs.Empty);
                        break;

                    case NetConnectionStatus.Disconnected:
                        Disconnected?.Invoke(null, EventArgs.Empty);
                        break;
                    }

                    break;

                case NetIncomingMessageType.Data:
                    var messageType = (PacketType)incomingMessage.ReadInt16();

                    switch (messageType)
                    {
                    case PacketType.SPacketJoinRoom:
                        JoinRoomResponse?.Invoke(null, incomingMessage.ReadStruct <SPacketJoinRoom>());
                        break;

                    case PacketType.SPacketCreateRoom:
                        CreateRoomResponse?.Invoke(null, incomingMessage.ReadStruct <SPacketCreateRoom>());
                        break;

                    case PacketType.SPacketSyncRoom:
                    {
                        var packet = incomingMessage.ReadClass <SPacketSyncRoom>();

                        if (Room == null || Room.Id != packet.RoomId)
                        {
                            Room = new Room(packet.RoomId);
                        }

                        Player = packet.Players[packet.YourPlayer];

                        Room.Players.Clear();
                        Room.Players.AddRange(packet.Players);

                        Room.Board.Clear();
                        Room.Board.AddRange(packet.Board);

                        if (Room.CurrentPlayer != Player.Id && packet.CurrentPlayer == Player.Id)
                        {
                            TurnStarted?.Invoke(null, EventArgs.Empty);
                        }

                        Room.CurrentPlayer = packet.CurrentPlayer;

                        SyncRoom?.Invoke(null, packet);
                        break;
                    }

                    case PacketType.SPacketFloatingPiece:
                        FloatingPiece?.Invoke(null, incomingMessage.ReadStruct <SPacketFloatingPiece>());
                        break;
                    }
                    break;

                default:
                    Console.WriteLine($"Unhandled type: {incomingMessage.MessageType} {incomingMessage.LengthBytes} bytes");
                    break;
                }
                Client.FlushSendQueue();
                Client.Recycle(incomingMessage);
            }
        }
Exemple #21
0
        public void StartTurn()
        {
            if (_gameplayManager.IsGameEnded)
            {
                return;
            }

            CurrentTurn++;

            _gameplayManager.CurrentTurnPlayer.Turn++;

            if (_dataManager.CachedUserLocalData.Tutorial && !_tutorialManager.IsTutorial)
            {
                Debug.Log("_dataManager.CachedUserLocalData.Tutorial = " + _dataManager.CachedUserLocalData.Tutorial);
                Debug.Log("_tutorialManager.IsTutorial = " + _tutorialManager.IsTutorial);
                _tutorialManager.StartTutorial();
            }

            _uiManager.GetPage <GameplayPage>().SetEndTurnButtonStatus(_gameplayManager.IsLocalPlayerTurn());

            UpdatePositionOfCardsInOpponentHand();
            _playerController.IsActive = _gameplayManager.IsLocalPlayerTurn();

            if (_gameplayManager.IsLocalPlayerTurn())
            {
                List <BoardUnit> creatures = new List <BoardUnit>();

                foreach (BoardUnit card in PlayerBoardCards)
                {
                    if (_playerController == null || !card.GameObject)
                    {
                        creatures.Add(card);
                        continue;
                    }

                    card.OnStartTurn();
                }

                foreach (BoardUnit item in creatures)
                {
                    PlayerBoardCards.Remove(item);
                }

                creatures.Clear();

                foreach (BoardUnit card in PlayerBoardCards)
                {
                    card.SetHighlightingEnabled(true);
                }
            }
            else
            {
                foreach (BoardUnit card in OpponentBoardCards)
                {
                    card.OnStartTurn();
                }

                foreach (BoardCard card in PlayerHandCards)
                {
                    card.SetHighlightingEnabled(false);
                }

                foreach (BoardUnit card in PlayerBoardCards)
                {
                    card.SetHighlightingEnabled(false);
                }
            }

            _gameplayManager.CurrentPlayer.InvokeTurnStarted();
            _gameplayManager.OpponentPlayer.InvokeTurnStarted();

            _playerController.UpdateHandCardsHighlight();

            _tutorialManager.ReportAction(Enumerators.TutorialReportAction.START_TURN);

            TurnStarted?.Invoke();
        }
Exemple #22
0
 public void StartTurn()
 {
     _currentController?.StartTurn(CurrentUnit);
     TurnStarted?.Invoke(CurrentUnit);
 }