public void AddScore(int score)
 {
     OnAddScore?.Invoke(score);
 }
    public void AddScore(int playerInt, int scoreElementalType, int toAdd, bool isDelayed, bool careGameTypes)
    {
        DataLogger.LogMessage("Score Added to " + playerInt.ToString() + " with type: " + scoreElementalType.ToString() + " amount: " + toAdd.ToString());
        if (scoreElementalType == 0)
        {
            scoreElementalType = 1;
        }

        if (AddScoreHook != null)
        {
            AddScoreHook.Invoke(playerInt, scoreElementalType, toAdd, isDelayed, careGameTypes);
        }

        isDelayed = false;
        char player = DataHandler.s.toChar(playerInt);

        AddToScoreArray(playerInt, scoreElementalType, toAdd, isDelayed);

        if (careGameTypes)
        {
            switch (GS.a.myGamePlayerType)
            {
            case GameSettings.GamePlayerTypes.Singleplayer:
            case GameSettings.GamePlayerTypes.OneVOne:
            case GameSettings.GamePlayerTypes.Three_FreeForAll:
            case GameSettings.GamePlayerTypes.Four_FreeForAll:
                break;

            case GameSettings.GamePlayerTypes.Two_Coop:
            case GameSettings.GamePlayerTypes.TwoVTwo:
                if (playerInt == 0 || playerInt == 1)
                {
                    AddToScoreArray(4, scoreElementalType, toAdd, isDelayed);
                    DataHandler.s.SendScore(DataHandler.s.toChar(4), scoreElementalType, allScores[4, scoreElementalType], isDelayed);
                    DataHandler.s.SendScore(DataHandler.s.toChar(4), 0, allScores[4, 0], isDelayed);
                }
                else
                {
                    AddToScoreArray(5, scoreElementalType, toAdd, isDelayed);
                    DataHandler.s.SendScore(DataHandler.s.toChar(5), scoreElementalType, allScores[5, scoreElementalType], isDelayed);
                    DataHandler.s.SendScore(DataHandler.s.toChar(5), 0, allScores[5, 0], isDelayed);
                }
                break;
            }
        }

        /*if (playerInt == DataHandler.s.myPlayerInteger) {
         *      for (int i = 0; i < toAdd; i++) {
         *              CharacterStuffController.s.ScoreAdded (scoreElementalType);
         *      }
         * }*/

        DataHandler.s.SendScore(player, scoreElementalType, allScores[playerInt, scoreElementalType], isDelayed);
        DataHandler.s.SendScore(player, 0, allScores[playerInt, 0], isDelayed);

        //GameObjectiveMaster.s.CheckReach ();
        try {
            if (GS.a.myGameRuleType == GameSettings.GameRuleTypes.Farm)
            {
                CardTypeRandomizer.s.UpdateFarmBoard();
            }
        } catch {
            DataLogger.LogError("Cant update farm board from scoreboard manager");
        }
    }