AltUpdateScore() public abstract method

public abstract AltUpdateScore ( ETeam team, int value ) : bool
team ETeam
value int
return bool
コード例 #1
0
ファイル: GameManager.cs プロジェクト: The3mpire/Ricochet
    public void BallPlayerCollision(GameObject player, Collision2D collision)
    {
        PlayerController playerController;

        if (!playerDictionary.TryGetValue(player, out playerController))
        {
            playerController = player.GetComponent <PlayerController>();
            playerDictionary.Add(player, playerController);
        }

        Ball ball = collision.gameObject.GetComponent <Ball>();

        // Check if the ball has been touched by anyone
        PlayerController lastTouchedBy = ball.GetLastTouchedBy(playerController);

        if (lastTouchedBy != null && GameRunning)
        {
            lastTouchedBy.RegisterKill(playerController);

            if (gameMode == EMode.Deathmatch)
            {
                if (lastTouchedBy.GetTeamNumber() == playerController.GetTeamNumber())
                {   // Suicide
                    ETeam scorer = lastTouchedBy.GetTeamNumber() == ETeam.RedTeam ? ETeam.BlueTeam : ETeam.RedTeam;
                    if (lightsController != null)
                    {
                        lightsController.HitTheTeamLights(scorer, 3);
                    }
                    if (modeManager.AltUpdateScore(scorer, 1))
                    {
                        GameRunning = false;
                        StopCoroutine("StartGameTimer");
                        gameData.SetGameWinner(scorer);
                        lightsController.HitAllTheLightsAsTeam(scorer, 10);
                        StartCoroutine("DelayedWinScreen");
                    }
                }
                else
                {
                    if (lightsController != null)
                    {
                        lightsController.HitTheTeamLights(lastTouchedBy.GetTeamNumber(), 3);
                    }
                    if (modeManager.AltUpdateScore(lastTouchedBy.GetTeamNumber(), 1))
                    {
                        GameRunning = false;
                        StopCoroutine("StartGameTimer");
                        gameData.SetGameWinner(lastTouchedBy.GetTeamNumber());
                        lightsController.HitAllTheLightsAsTeam(lastTouchedBy.GetTeamNumber(), 10);
                        StartCoroutine("DelayedWinScreen");
                    }
                }
            }
        }
        else
        {
            if (gameMode == EMode.Deathmatch)
            {
                ETeam scorer = playerController.GetTeamNumber() == ETeam.BlueTeam ? ETeam.RedTeam : ETeam.BlueTeam;
                if (lightsController != null)
                {
                    lightsController.HitTheTeamLights(scorer, 3);
                }
                if (modeManager.AltUpdateScore(scorer, 1))
                {
                    GameRunning = false;
                    StopCoroutine("StartGameTimer");
                    gameData.SetGameWinner(scorer);
                    lightsController.HitAllTheLightsAsTeam(scorer, 10);
                    BallHandling(ball);
                    StartCoroutine("DelayedWinScreen");
                }
            }
        }

        ball.RedirectBall(collision.relativeVelocity, Vector2.zero);
        playerController.PlayerDead();
        StartCoroutine(RespawnPlayer(playerController));
        StartCoroutine(Camera.main.GetComponent <CCShaders.ChromaticAberrationEffect>().PlayEffect(1));
    }