Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class WN8Formula {
- public static double calculate(List<List<AccountBattleInfo>> accountBattleInfoData, TankExpectedValues tankExpectedValues) {
- double playerDamageTotal = 0.0, playerWinBattlesTotal = 0;
- double playerFragsTotal = 0, playerSpottedTotal = 0, playerDefTotal = 0;
- double expectedDamageTotal = 0.0000, expectedWinBattlesTotal = 0.0000;
- double expectedFragsTotal = 0.0000, expectedSpottedTotal = 0.0000, expectedDefTotal = 0.0000;
- int allCountBattles = 0;
- int allRandomBattles = 0;
- int allCompanyBattles = 0;
- for(int i=0; i< accountBattleInfoData.size(); i++) {
- for(int j=0; j<accountBattleInfoData.get(i).size(); j++) {
- //get(i) - игрок клана. //get(j) - танк
- int gameRandomTankBattles = accountBattleInfoData.get(i).get(j).getRadndoStatistics().getBattles();
- int gameCompanyTankBattles = accountBattleInfoData.get(i).get(j).getCompanyStatics().getBattles();
- allRandomBattles = gameRandomTankBattles;
- allCompanyBattles = gameCompanyTankBattles;
- //System.out.println(gameTankBattles);
- allCountBattles += gameRandomTankBattles + gameCompanyTankBattles;
- //if(gameTankBattles == 0) continue;
- int gameTankId = accountBattleInfoData.get(i).get(j).getTankId();
- playerDamageTotal += (accountBattleInfoData.get(i).get(j).getRadndoStatistics().getDamageDealt() +
- accountBattleInfoData.get(i).get(j).getCompanyStatics().getDamageDealt());
- playerFragsTotal += (accountBattleInfoData.get(i).get(j).getRadndoStatistics().getFrags()
- + accountBattleInfoData.get(i).get(j).getCompanyStatics().getFrags());
- playerSpottedTotal += (accountBattleInfoData.get(i).get(j).getRadndoStatistics().getSpottedTanks()
- + accountBattleInfoData.get(i).get(j).getCompanyStatics().getSpottedTanks());
- playerDefTotal += (accountBattleInfoData.get(i).get(j).getRadndoStatistics().getDefencePoints()
- +accountBattleInfoData.get(i).get(j).getCompanyStatics().getDefencePoints());
- playerWinBattlesTotal += (accountBattleInfoData.get(i).get(j).getRadndoStatistics().getWinRatio() * gameRandomTankBattles
- + accountBattleInfoData.get(i).get(j). getCompanyStatics().getWinRatio()* gameCompanyTankBattles);
- for(int k=0; k<tankExpectedValues.getData().size(); k++) {
- if(tankExpectedValues.getData().get(k).getIdNum() == gameTankId ) {
- expectedDamageTotal += tankExpectedValues.getData().get(k).getExpDamage() * (gameRandomTankBattles + gameCompanyTankBattles);
- expectedFragsTotal += tankExpectedValues.getData().get(k).getExpFrag() * (gameRandomTankBattles + gameCompanyTankBattles);
- expectedSpottedTotal += tankExpectedValues.getData().get(k).getExpSpot() * (gameRandomTankBattles + gameCompanyTankBattles);
- expectedDefTotal += tankExpectedValues.getData().get(k).getExpDef() * (gameRandomTankBattles + gameCompanyTankBattles);
- expectedWinBattlesTotal += tankExpectedValues.getData().get(k).getExpWinRate() * (gameRandomTankBattles + gameCompanyTankBattles);
- /* expectedDamageTotal = 1162.12 * gameTankBattles;
- expectedFragsTotal = 0.88 * gameTankBattles ;
- expectedSpottedTotal = 1.31 * gameTankBattles;
- expectedDefTotal = 0.91 * gameTankBattles;
- expectedWinBattlesTotal = 51.62 * gameTankBattles; */
- }
- }
- }
- }
- double rDamage = playerDamageTotal/expectedDamageTotal;
- double rSpot = ((double)playerSpottedTotal/expectedSpottedTotal);
- double rFrag = ((double)playerFragsTotal/expectedFragsTotal);
- double rDef = ((double) playerDefTotal/expectedDefTotal);
- double rWin = playerWinBattlesTotal/expectedWinBattlesTotal;
- double rDamageC = Math.max(0, (rDamage - 0.22) / (1 - 0.22));
- double rSpotC = Math.max(0, Math.min(rDamageC + 0.1, (rSpot - 0.38) / (1 - 0.38)));
- double rFragC = Math.max(0, Math.min(rDamageC + 0.2, (rFrag - 0.12) / (1 - 0.12)));
- double rDefC = Math.max(0, Math.min(rDamageC + 0.1, (rDef - 0.10) / (1 - 0.10)));
- double rWinC = Math.max(0, (rWin - 0.71) / (1 - 0.71));
- // Вывод боев на экран
- System.out.println(allRandomBattles);
- System.out.println(allCompanyBattles);
- System.out.println(allCountBattles);
- double WN8 = 980 * rDamageC
- + 210 * rDamageC * rFragC
- + 155 * rFragC * rSpotC
- + 75 * rDefC * rFragC
- + 145 * Math.min(1.8, rWinC);
- return WN8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement