Android Open Source - dice-probabilities Crit Special






From Project

Back to project page dice-probabilities.

License

The source code is released under:

MIT License

If you think the Android project dice-probabilities listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.kleemann.diceprobabilities.special;
/*from   w  w w  . j  a  v a 2 s  . c  o m*/
import java.util.ArrayList;

import org.kleemann.diceprobabilities.R;
import org.kleemann.diceprobabilities.distribution.CritDistribution;
import org.kleemann.diceprobabilities.distribution.Distribution;
import org.kleemann.diceprobabilities.distribution.SumDistribution;

import android.content.res.Resources;

/**
 * <p>
 * Turns a particular die type into a critical die. e.g. the highest value
 * receives some extra bonus. See CritDistribution.
 */
class CritSpecial extends AbstractSpecial {

  private final int critSides;
  private final int bonus;

  public CritSpecial(Resources r, int sides, int bonus, String weapon) {
    super(String.format(r.getString(R.string.special_crit_title), sides,
        bonus), String.format(
        r.getString(R.string.special_crit_description), bonus, weapon));
    this.critSides = sides;
    this.bonus = bonus;
  }

  @Override
  protected Distribution accumulateDiceStack(int sides, int count,
      Distribution accumulator) {
    if (sides == critSides) {
      final Distribution allDiceOfOneType = SumDistribution.multiply(
          new CritDistribution(sides, bonus), count);
      return SumDistribution.add(accumulator, allDiceOfOneType);
    } else {
      return super.accumulateDiceStack(sides, count, accumulator);
    }
  }

  /**
   * <p>
   * Use capital D for crits
   */
  @Override
  protected void addFormulaDie(int sides, int count, ArrayList<String> dice) {
    if (sides == critSides) {
      dice.add(count + "D" + sides);
    } else {
      super.addFormulaDie(sides, count, dice);
    }
  }

}




Java Source Code List

com.asolutions.widget.RowLayout.java
org.kleemann.diceprobabilities.Check.java
org.kleemann.diceprobabilities.ConstantCurrentDicePile.java
org.kleemann.diceprobabilities.CurrentDicePile.java
org.kleemann.diceprobabilities.DiceSet.java
org.kleemann.diceprobabilities.MainActivity.java
org.kleemann.diceprobabilities.PoolDicePile.java
org.kleemann.diceprobabilities.TargetPool.java
org.kleemann.diceprobabilities.Target.java
org.kleemann.diceprobabilities.distribution.AbstractDistribution.java
org.kleemann.diceprobabilities.distribution.CachedCumulativeDistribution.java
org.kleemann.diceprobabilities.distribution.ConstantDistribution.java
org.kleemann.diceprobabilities.distribution.CritDistribution.java
org.kleemann.diceprobabilities.distribution.DeathZoneDieDistribution.java
org.kleemann.diceprobabilities.distribution.DieDistribution.java
org.kleemann.diceprobabilities.distribution.Distribution.java
org.kleemann.diceprobabilities.distribution.DogslicerDistribution.java
org.kleemann.diceprobabilities.distribution.ScaleCumulativeDistribution.java
org.kleemann.diceprobabilities.distribution.SumDistribution.java
org.kleemann.diceprobabilities.graph.GraphView.java
org.kleemann.diceprobabilities.graph.Interpolate.java
org.kleemann.diceprobabilities.graph.Point.java
org.kleemann.diceprobabilities.graph.Vector.java
org.kleemann.diceprobabilities.special.AbstractSpecial.java
org.kleemann.diceprobabilities.special.CritSpecial.java
org.kleemann.diceprobabilities.special.DeathZoneSpecial.java
org.kleemann.diceprobabilities.special.DogslicerSpecial.java
org.kleemann.diceprobabilities.special.FailureSpecial.java
org.kleemann.diceprobabilities.special.ForcedRerollSpecial.java
org.kleemann.diceprobabilities.special.ModifyEachDieSpecial.java
org.kleemann.diceprobabilities.special.NormalSpecial.java
org.kleemann.diceprobabilities.special.SecondChanceSpecial.java
org.kleemann.diceprobabilities.special.SpecialSpinner.java
org.kleemann.diceprobabilities.special.Special.java