Exemple #1
0
 public static void OnWinInvoke(object sender = null)
 {
     if (OnWin != null)
     {
         OnWin.Invoke(null, EventArgs.Empty);
     }
 }
    public bool TryIsGameOver()
    {
        if (!HasMoveAvailable())
        {
            // No more moves, game over!
            OnOutOfMoves?.Invoke(this, EventArgs.Empty);
            return(true);
        }

        switch (levelSO.goalType)
        {
        default:
        case LevelSO.GoalType.Score:
            if (score >= levelSO.targetScore)
            {
                // Reached Target Score!
                OnWin?.Invoke(this, EventArgs.Empty);
                return(true);
            }
            break;

        case LevelSO.GoalType.Glass:
            if (GetGlassAmount() <= 0)
            {
                // All glass destroyed!
                OnWin?.Invoke(this, EventArgs.Empty);
                return(true);
            }
            break;
        }

        // Not game over
        return(false);
    }
Exemple #3
0
    private IEnumerator CheckOpenedCard()
    {
        if (cards[cards.Count - 1].CardID == cards[cards.Count - 2].CardID)
        {
            score.AddScore(cards.Count == 2 ? health.HealthCount : 3 * health.HealthCount);
            if (cards.Count == 3)
            {
                _successPicks += 3;
                if (_successPicks == gridRows * gridCols)
                {
                    OnWin?.Invoke();
                }
                RemoveCardsFromField();
                ClearVariables();
            }
        }
        else
        {
            yield return(new WaitForSeconds(0.5f));

            FlipCardsToBack();
            health.TakeLife();
            ClearVariables();
        }
    }
Exemple #4
0
        /// <summary>
        /// OnPlayerPlayChess回调
        /// </summary>
        /// <param name="obj"></param>
        private void ChessBoard_OnPlayerPlayChess(Vector2Int index, ChessState chessState)
        {
            //TODO判定是否是否胜利
            if (JudeWinOrContinue(index, chessState) == true)
            {
                Debug.Log(chessState + "Win");
                if (OnWin != null)
                {
                    OnWin.Invoke();//执行结束的事件 剔除棋盘格子的射线事件
                }
                UIManager.Instance.chessState = chessState;
                UIManager.Instance.gameStatus = GameStatus.Over;
                return;
            }

            playerIndex++;//增加回合

            #region 轮询逻辑
            if (OnTurn != null)
            {
                OnTurn.Invoke(playerIndex);//暂停事件
            }

            #endregion



            //TODO增加栈 来储存10步内的悔棋。
        }
Exemple #5
0
        private void OnItemDestroyed(Static.Item staticItem)
        {
            var itemIndex = Targets.FindIndex(i => i.StaticItem.Id == staticItem.Id);

            if (itemIndex < 0)
            {
                return;
            }

            var item = Targets[itemIndex];

            if (item.Amount <= 0)
            {
                return;
            }

            item.Amount--;
            Targets[itemIndex] = item;

            OnTargetsChange?.Invoke(Targets);

            var allItemsDestroyed = Targets.All(i => i.Amount <= 0);

            if (!allItemsDestroyed)
            {
                return;
            }

            Clear();
            OnWin?.Invoke();
        }
    /// <summary>
    /// Завершаем шаг и проверяем выиграла ли одна из команд
    /// Команда выигрывает если все ее фигуры, которые могут двигаться
    /// достигли лагеря противоположенной команды
    /// </summary>
    public bool CompleteStep(PieceStrategy strategy)
    {
        bool hasAllPlayerPiecesReachedEnemyCamp = true;
        bool hasAllEnemyPiecesReachedPlayerCamp = true;

        bool playerIsBlocked = true;
        bool enemyIsBlocked  = true;

        foreach (Piece piece in pieces)
        {
            // Проверям может ли двигаться фигура
            List <Cell> availableCells = strategy.GetAvailableCells(piece.cellRef);

            if (piece.IsPlayer)
            {
                bool isInEnemyCamp = IsInEnemyCamp(piece.cellRef);
                if (!isInEnemyCamp)
                {
                    hasAllPlayerPiecesReachedEnemyCamp = false;
                }

                if (!isInEnemyCamp && availableCells.Count > 0)
                {
                    playerIsBlocked = false;
                }
            }
            else
            {
                bool isInPlayerCamp = IsInPlayerCamp(piece.cellRef);
                if (!isInPlayerCamp)
                {
                    hasAllEnemyPiecesReachedPlayerCamp = false;
                }

                if (availableCells.Count > 0)
                {
                    enemyIsBlocked = false;
                }
            }
        }

        bool hasPlayerWon = hasAllPlayerPiecesReachedEnemyCamp || playerIsBlocked;
        bool hasEnemyWon  = hasAllEnemyPiecesReachedPlayerCamp || enemyIsBlocked;

        // Все фишки игрока достигли вражеского лагеря либо заблокированы противником
        if (hasPlayerWon)
        {
            OnWin?.Invoke(true);
        }

        // Все фишки противника достигли лагеря игрока либо заблокированы игроком
        if (hasEnemyWon)
        {
            OnWin?.Invoke(false);
        }

        IsPlayerTurn = !IsPlayerTurn;

        return(hasPlayerWon || hasEnemyWon);
    }
Exemple #7
0
    public void Win()
    {
        Debug.Log("HELLLLLLO?");
        gameOver = true;
        OnWin?.Invoke(this, System.EventArgs.Empty);

        MusicManager.Instance.PlayEnding();
    }
Exemple #8
0
 public static void Win()
 {
     if (!PlayerProfile.sounds)
     {
         return;
     }
     OnWin.Invoke();
 }
Exemple #9
0
 public void CheckIfWon()
 {
     if (currentBerriesCount == gameSettingsData.maxBerries)
     {
         OnWin?.Invoke();
         berrySpawner.StopSpawning();
     }
 }
Exemple #10
0
 public void DecreaseEnemyCount()
 {
     m_EnemyCount--;
     if (m_EnemyCount == 0 && !m_HasWon)
     {
         m_HasWon = true;
         OnWin?.Invoke();
     }
 }
Exemple #11
0
 public void addVotes(int thousandVotes)
 {
     votes += thousandVotes;
     OnVoteGained.Invoke();
     if (votes == votesToWin)
     {
         OnWin.Invoke();
     }
 }
        public static void PickupCollected(Pickup p)
        {
            Collected += 1;
            OnCollected?.Invoke();

            if (Collected >= TotalPickups)
            {
                OnWin?.Invoke();
            }
        }
Exemple #13
0
        private void HandleOnPipePlaced(Pipe pipe)
        {
            bool isWin = IsWin();

            Debug.Log("Winner: " + isWin);
            if (IsWin())
            {
                OnWin?.Invoke();
            }
        }
Exemple #14
0
        //Gestion des cubes

        //Pour le score savoir quelle cube sont dans le player
        public bool AddCubeToScore(Cube cube)
        {
            if (isStun)
            {
                return(true);
            }

            cubesInPlayer.Add(cube);
            OnWin?.Invoke();

            return(false);
        }
 private void CheckForWinCondition()
 {
     if (_currentCatSatiety < maxCatSatiety)
     {
         return;
     }
     StopSpawnFood();
     isWon = true;
     OnWin?.Invoke();
     FindObjectOfType <PauseController>().enabled = false;
     ClearFoodTable();
 }
Exemple #16
0
        public void Win()
        {
            foreach (var hero in Heroes)
            {
                var itemsStack = ItemsMap[hero.X, hero.Y];
                if (itemsStack.Count == 0 || !(itemsStack.Peek() is DestinationItem))
                {
                    return;
                }
            }

            OnWin?.Invoke();
        }
Exemple #17
0
 private void EndGame(bool win)
 {
     gameUIController.TurnOfRocketButton();
     PlayerPrefs.SetString(GlobalModule.GameData.PPKEY_HAS_SAVE, "false");
     if (win)
     {
         OnWin?.Invoke();
     }
     else
     {
         OnLose?.Invoke();
     }
 }
Exemple #18
0
        private void Damagable_OnDie(IDamageable instance)
        {
            m_Enemies.Remove(instance);
            Count++;

            instance.OnDie -= Damagable_OnDie;
            if (m_Enemies.Count == 0)
            {
                PlayTime = TimeProvider.Current.Now - m_StartTime;

                OnWin?.Invoke();
            }
        }
Exemple #19
0
    private void CheckGameState()
    {
        if (_charactersState[EnemyTag] == 0 && _charactersState[AllyTag] == _alliesToSave)
        {
            OnWin?.Invoke(this, EventArgs.Empty);
            LevelLoader.Instance.LoadNextLevel();
        }

        if (_charactersState[AllyTag] != _alliesToSave)
        {
            OnLose?.Invoke(this, EventArgs.Empty);
            LevelLoader.Instance.ReloadLevel();
        }
    }
Exemple #20
0
 public void RemoveEnemy(int i)
 {
     CancelQueue(enemyList[i]);
     enemyList[i].OnAimChanged -= enemyHealthBar[i].ActionGauge.DrawGauge;
     enemyList[i].OnAttackSelected -= enemyHealthBar[i].DrawTarget;
     enemyList[i].Enemy.CharacterStatController.OnHPChanged -= enemyHealthBar[i].HealthGauge.DrawGauge;
     enemyList[i].Enemy.CharacterStatController.OnScratchChanged -= enemyHealthBar[i].ScratchGauge.DrawGauge;
     enemyHealthBar[i].Destroy();
     if (enemyList.Count == 1) // On le fait à 1 pour pouvoir zoomer sur le dernier kill
     {
         OnWin.Invoke();
     }
     enemyList.RemoveAt(i);
     enemyHealthBar.RemoveAt(i);
 }
 void CheckForWinCondition()
 {
     if (currentNumberOfEnemiesSpawned == totalNumberOfEnemies)
     {
         arrayOfAliveEnemies = GameObject.FindGameObjectsWithTag("Enemy");
         if (arrayOfAliveEnemies.Length == 0)
         {
             OnWin?.Invoke();
             Debug.Log("YOU WIN");
         }
         else
         {
             Debug.Log("Still left to fight!");
         }
     }
 }
Exemple #22
0
        public void Move(object sender, MoveArgs e)
        {
            if (e.playerId != Turn)
            {
                return;                         // not players turn Return
            }
            int col      = e.col;
            int playerId = e.playerId;
            int row;

            //check a place is available in Coloum
            if (!Move_Available(col))
            {
                return;                       // Move Not Avaliable Return
            }
            //annoyouns Move to network if it was made by local player
            if (e.playerId == Properties.Settings.Default.userId)
            {
                OnMoveMade?.Invoke(this, new MoveArgs(col, Properties.Settings.Default.userId));
            }
            row = GetRow(col, playerId);
            lock (board)                                 // Lock Board while in use
            {
                board.boardState[col, row] = e.playerId; //update Boardstate With move
                OnUpdate(this, board);
            }
            Turn *= -1;   // use
                          // use  reference types that point to player / players peices ------------------------------------------------------
                          // dont repeat your selfs

            // Ai Takes over moves

            if (win(e.playerId, col, row))
            {
                gameActive = false;
                OnWin?.Invoke(this, e.playerId.ToString()); // Publish Win Event
            }
            if (Ai && gameActive && Turn == Properties.Settings.Default.userId)
            {
                AiPlayer();
            }
        }
Exemple #23
0
    public void GameOver()
    {
        isGameOver = true;
        bool won = score.CurrentStars >= 1;

        //TODO: If we see that saving and oading slows the device,
        //we can import the loaded data that was loaded previously and thus avoid loading inside TrySaveLevelData
        SaveAndLoadManager.TrySaveLevelData(LevelsManager.CurrentLevelNumber, (UInt32)Score.score, won);
        //currentLevel.PlayingCount++;
        if (won /*currentLevel.MinStarsToWin*/) //TODO: hardcoded winning condition(Can be moved to Level)
        {
            // currentLevel.LevelSucceeded();
            //SaveAndLoadManager.TrySaveLevelData(LevelsManager.CurrentLevelNumber, (UInt32)Score.score);
            OnWin?.Invoke(score.CurrentStars);//TODO: Record the number of stars or/and score if it's larger than it was previously
        }
        else
        {
            OnLose.Invoke();
        }
        OnGameOver?.Invoke(Score.score);
    }
Exemple #24
0
 private void Update()
 {
     if (!hasFinished && Time.frameCount > 4) // Magic number whatever it works
     {
         var location = new Vector2 {
             x = homeLocation.position.x, y = homeLocation.position.z,
         };
         var distance = Vector2.Distance(location, HerdMember.Target);
         if (distance < homeRadius)
         {
             hasFinished = true;
             Debug.Log("Won the game.");
             OnWin?.Invoke();
         }
         else if (herd.JoinedCount() == 0)
         {
             hasFinished = true;
             Debug.Log("Lost the game.");
             OnLose?.Invoke();
         }
     }
 }
Exemple #25
0
    private void CheckConditions( )
    {
        if (!_playerLost)
        {
            if (IsWinCondition( ))
            {
                ClearPlanets( );

                WeaponManager.Instance.Clear( );

                OnWin?.Invoke( );
            }
            else if (IsLooseCondition( ))
            {
                _playerLost = true;
                ClearPlanets( );

                WeaponManager.Instance.Clear( );
                OnLoose?.Invoke( );
            }
        }
    }
        private void OnUpdateGameResult(object sender, ClientListener <PlayGameMessage> .TArg e)
        {
            //Проверка статуса игры:
            string status = e.Arg.GameStatus;

            switch (status)
            {
            case PlayGameMessage.PlayingGameStatus:
                OnUpdate?.Invoke(e.Arg);
                break;

            case PlayGameMessage.WinGameStatus:
                tcpClient.Dispose();
                playGameListener.Stop();
                OnWin?.Invoke();
                break;

            case PlayGameMessage.LoseGameStatus:
                tcpClient.Dispose();
                playGameListener.Stop();
                OnLose?.Invoke();
                break;
            }
        }
Exemple #27
0
 public void Win(Field field1, Field field2)
 {
     OnWin?.Invoke(this, new List <Field> {
         field1, field2
     });
 }
Exemple #28
0
 public void Win()
 {
     OnWin?.Invoke();
     Debug.Log("Level completed in " + currentLevelTime.ToString());
 }
Exemple #29
0
 public void PlayerWinYeet()
 {
     OnWin?.Invoke();
 }
Exemple #30
0
    public void ListenForData(string ip, int port, string flag, string peer)
    {
        Debug.Log("Listening Started....");

        Byte[] bytes = new Byte[1024];
        try
        {
            while (socketConnection.Connected)
            {
                try
                {
                    // Get a stream object for reading
                    using (NetworkStream stream = socketConnection.GetStream())
                    {
                        int length;
                        // Read incomming stream into byte arrary.
                        while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
                        {
                            var incommingData = new byte[length];
                            Array.Copy(bytes, 0, incommingData, 0, length);
                            string serverMessage = Encoding.UTF8.GetString(incommingData);

                            if (serverMessage.Contains("_PEER_REQ_"))
                            {
                                OnPeerRequest?.Invoke(serverMessage.Substring(10));
                            }
                            else if (serverMessage == "#PEER DECLINED")
                            {
                                OnPeerDeclined?.Invoke(serverMessage);
                            }
                            else if (serverMessage == "#WON")
                            {
                                OnWin?.Invoke(serverMessage);
                            }
                            else if (serverMessage == "#DRAW")
                            {
                                OnDraw?.Invoke(serverMessage);
                            }
                            else if (serverMessage == "#LOOSE")
                            {
                                OnLoose?.Invoke(serverMessage);
                            }
                            else if (serverMessage == " ")
                            {
                                Debug.Log(serverMessage + " --> " + socketConnection.Client.RemoteEndPoint);
                            }
                            else
                            {
                                try
                                {
                                    JSONObject js = new JSONObject(serverMessage);
                                    Debug.Log("JSON --- > " + js.ToString());

                                    if (js.HasField("IP"))
                                    {
                                        //Connect to GameServer
                                        OnGameServerCredentialsRecieved?.Invoke(js);
                                    }
                                    else if (js.HasField("_BOARD_"))
                                    {
                                        OnBoardData?.Invoke(js);
                                    }
                                }
                                catch (Exception e)
                                { Debug.Log("Exception: " + e); }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Debug.Log("NETWORK STREAM READ : Exception");
                }
            }
        }
        catch (SocketException socketException)
        {
            Debug.Log("Socket exception: " + socketException);
        }

        if (OnListenDataEnded != null)
        {
            OnListenDataEnded("Listening Ended");
        }
    }