forked from SteamWar/SteamWar
Polish lobby particle slots
Count the real particle amount of reward designs, set slot budgets to 30 particles per tick (60 for the server team), let requirements test only against an UnlockContext, and drop requirements and messages the old particle menu used.
This commit is contained in:
@@ -39,11 +39,7 @@ public interface ParticleRequirement {
|
||||
|
||||
String getRequirementName(Player player);
|
||||
|
||||
boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig);
|
||||
|
||||
default boolean test(UnlockContext context) {
|
||||
return test(context.getUser(), context.getEvents(), context.getEggHuntConfig());
|
||||
}
|
||||
boolean test(UnlockContext context);
|
||||
|
||||
ParticleRequirement SERVER_TEAM = new ParticleRequirement() {
|
||||
@Override
|
||||
@@ -51,11 +47,6 @@ public interface ParticleRequirement {
|
||||
return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_SERVER_TEAM", player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.hasPerm(UserPerm.TEAM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getUser().hasPerm(UserPerm.TEAM);
|
||||
@@ -68,56 +59,24 @@ public interface ParticleRequirement {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(UnlockContext context) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
// Unlike HAS_TEAM this does not also pass for the server team
|
||||
// Does not also pass for the server team
|
||||
ParticleRequirement TEAM_MEMBER = new ParticleRequirement() {
|
||||
@Override
|
||||
public String getRequirementName(Player player) {
|
||||
return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_TEAM", player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.getTeam() != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getUser().getTeam() != 0;
|
||||
}
|
||||
};
|
||||
ParticleRequirement HAS_TEAM = new ParticleRequirement() {
|
||||
@Override
|
||||
public String getRequirementName(Player player) {
|
||||
return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_TEAM", player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.getTeam() != 0;
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
ParticleRequirement EVENT_PARTICIPATION = new ParticleRequirement() {
|
||||
@Override
|
||||
public String getRequirementName(Player player) {
|
||||
return LobbySystem.getMessage().parse("PARTICLE_UNLOCKED_BY_EVENT", player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return !eventTeilname.isEmpty();
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
ParticleRequirement EGG_HUNT_EASY = _easterEggHuntDifficulty(EggDifficulty.EASY);
|
||||
ParticleRequirement EGG_HUNT_MEDIUM = _easterEggHuntDifficulty(EggDifficulty.MEDIUM);
|
||||
ParticleRequirement EGG_HUNT_HARD = _easterEggHuntDifficulty(EggDifficulty.HARD);
|
||||
@@ -130,7 +89,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
public boolean test(UnlockContext context) {
|
||||
String eggHuntConfig = context.getEggHuntConfig();
|
||||
if (eggHuntConfig == null) return false;
|
||||
int count = 0;
|
||||
for (int i = 0; i < eggHuntConfig.length(); i++) {
|
||||
@@ -152,8 +112,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.getTeam() == teamId;
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getUser().getTeam() == teamId;
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
}
|
||||
@@ -167,8 +127,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return eventTeilname.contains(eventId);
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getEvents().contains(eventId);
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
}
|
||||
@@ -184,9 +144,9 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
if (!eventTeilname.contains(eventId)) return false;
|
||||
return teams.contains(user.getTeam());
|
||||
public boolean test(UnlockContext context) {
|
||||
if (!teams.contains(context.getUser().getTeam())) return false;
|
||||
return context.getEvents().contains(eventId);
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
}
|
||||
@@ -213,7 +173,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
public boolean test(UnlockContext context) {
|
||||
String eggHuntConfig = context.getEggHuntConfig();
|
||||
if (eggHuntConfig == null) return false;
|
||||
return eggs.stream().allMatch(id -> eggHuntConfig.length() > id && eggHuntConfig.charAt(id) == '1');
|
||||
}
|
||||
@@ -229,8 +190,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.getId() == userId;
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getUser().getId() == userId;
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
}
|
||||
@@ -244,8 +205,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.getId() == userId;
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getUser().getId() == userId;
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
}
|
||||
@@ -260,12 +221,13 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return user.getTeam() == teamId;
|
||||
public boolean test(UnlockContext context) {
|
||||
return context.getUser().getTeam() == teamId;
|
||||
}
|
||||
}.or(SERVER_TEAM);
|
||||
}
|
||||
|
||||
// The alternative is checked first, as it is usually the cheap server team check
|
||||
default ParticleRequirement or(ParticleRequirement particleRequirement) {
|
||||
return new ParticleRequirement() {
|
||||
@Override
|
||||
@@ -274,8 +236,8 @@ public interface ParticleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(SteamwarUser user, Set<Integer> eventTeilname, String eggHuntConfig) {
|
||||
return ParticleRequirement.this.test(user, eventTeilname, eggHuntConfig) || particleRequirement.test(user, eventTeilname, eggHuntConfig);
|
||||
public boolean test(UnlockContext context) {
|
||||
return particleRequirement.test(context) || ParticleRequirement.this.test(context);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user