Handle existing players who might already have passed a level.

This commit is contained in:
GanyusLeftHorn 2022-07-18 20:58:35 -07:00 committed by Melledy
parent af7bbdaadd
commit b266854c72
2 changed files with 8 additions and 6 deletions

View File

@ -463,7 +463,7 @@ public class Player {
this.updateProfile();
// Handle OpenState unlocks from level-up.
this.getOpenStateManager().onPlayerLevelUp();
this.getOpenStateManager().unlockLevelDependentStates();
return true;
}
@ -1535,7 +1535,11 @@ public class Player {
this.forgingManager.sendForgeDataNotify();
this.resinManager.onPlayerLogin();
this.cookingManager.sendCookDataNofity();
// Unlock in case this is an existing user that reached a level before we implemented unlocking.
this.openStateManager.unlockLevelDependentStates();
this.openStateManager.onPlayerLogin();
getTodayMoonCard(); // The timer works at 0:0, some users log in after that, use this method to check if they have received a reward today or not. If not, send the reward.
// Battle Pass trigger

View File

@ -55,11 +55,9 @@ public class PlayerOpenStateManager {
public void setOpenState(OpenState openState, Integer value) {
Integer previousValue = this.map.getOrDefault(openState.getValue(),0);
if(!(value == previousValue)) {
if(value != previousValue) {
this.map.put(openState.getValue(), value);
player.getSession().send(new PacketOpenStateChangeNotify(openState.getValue(),value));
} else {
Grasscutter.getLogger().debug("Warning: OpenState {} is already set to {}!", openState, value);
}
}
@ -73,9 +71,9 @@ public class PlayerOpenStateManager {
player.getSession().send(new PacketOpenStateUpdateNotify(this));
}
public void onPlayerLevelUp() {
public void unlockLevelDependentStates() {
Stream.of(OpenState.values())
.filter(s -> s.getUnlockLevel() == this.player.getLevel())
.filter(s -> s.getUnlockLevel() > 1 && s.getUnlockLevel() <= this.player.getLevel())
.forEach(s -> this.setOpenState(s, 1));
}
}