- Greatly improved the challenge/reward probability function and usage. Removed some unnecessary fields and resorted the members of PCGLevel to make it easier to read.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,16 @@ public class PlayerProfile {
|
||||
BUMPER, COLLECTOR, RUNNER, SHOOTER, JUMPER
|
||||
}
|
||||
|
||||
/*
|
||||
* Certain probabilities are boosted by this constant based on the player's
|
||||
* type.
|
||||
*/
|
||||
public static final double TYPE_MULTIPLIER = 1.25;
|
||||
|
||||
public enum ChallengeRewardType {
|
||||
GAP, ENEMY, HARDER_ENEMY, JUMP, COIN, BLOCK, POWERUP
|
||||
};
|
||||
|
||||
// Dreyfus model of skill acquisition:
|
||||
public enum SKILL_LEVEL {
|
||||
NOVICE, BEGINNER, COMPETENT, PROFICIENT, EXPERT
|
||||
@@ -64,20 +74,34 @@ public class PlayerProfile {
|
||||
}
|
||||
}
|
||||
|
||||
public double getProbability(LevelComponent.TYPE type) {
|
||||
if (!isEnabled(type)) {
|
||||
return 0.0;
|
||||
}
|
||||
public double getProbability(ChallengeRewardType crt) {
|
||||
// if (!isEnabled(type)) {
|
||||
// return 0.0;
|
||||
// }
|
||||
|
||||
// SKILLs: { BUMP, COLLECT, JUMP, RUN, SHOOT, STOMP }
|
||||
// TYPEs: { BUMPER, COLLECTOR, RUNNER, SHOOTER, JUMPER}
|
||||
|
||||
switch (type) {
|
||||
case BLOCKS:
|
||||
return (.5) * (skillVector.get(SKILL.BUMP) / 100.0);
|
||||
case COINS:
|
||||
return (.5) * (skillVector.get(SKILL.COLLECT) / 100.0);
|
||||
case POWER_UP:
|
||||
switch (crt) {
|
||||
case GAP:
|
||||
return Math.min(.5, (.5) * (skillVector.get(SKILL.JUMP) / 100.0)
|
||||
* ((type == TYPE.JUMPER) ? TYPE_MULTIPLIER : 1));
|
||||
case ENEMY:
|
||||
double skillSet = ((100 - skillVector.get(SKILL.RUN)) / 100.0)
|
||||
* ((type == TYPE.RUNNER) ? -1 * TYPE_MULTIPLIER : 1);
|
||||
skillSet += (skillVector.get(SKILL.STOMP) / 100.0);
|
||||
skillSet /= 2;
|
||||
return Math.min(.5, (.5) * skillSet);
|
||||
case HARDER_ENEMY:
|
||||
return Math.min(.5, (.5) * (skillVector.get(SKILL.SHOOT) / 100.0)
|
||||
* ((type == TYPE.SHOOTER) ? TYPE_MULTIPLIER : 1));
|
||||
case JUMP:
|
||||
return Math.min(.5, (.5) * (skillVector.get(SKILL.JUMP) / 100.0)
|
||||
* ((type == TYPE.JUMPER) ? TYPE_MULTIPLIER : 1));
|
||||
case BLOCK:
|
||||
return Math.min(.5, (.5) * (skillVector.get(SKILL.BUMP) / 100.0)
|
||||
* ((type == TYPE.BUMPER) ? TYPE_MULTIPLIER : 1));
|
||||
case COIN:
|
||||
return Math.min(.5, (.5) * (skillVector.get(SKILL.COLLECT) / 100.0)
|
||||
* ((type == TYPE.COLLECTOR) ? TYPE_MULTIPLIER : 1));
|
||||
case POWERUP:
|
||||
double skillMod = 0;
|
||||
switch (skillLevel) {
|
||||
case BEGINNER:
|
||||
|
||||
Reference in New Issue
Block a user