Files
Nebula/src/main/java/emu/nebula/game/infinitytower/InfinityTowerManager.java
2025-11-09 07:22:21 -08:00

83 lines
1.9 KiB
Java

package emu.nebula.game.infinitytower;
import dev.morphia.annotations.Id;
import emu.nebula.data.GameData;
import emu.nebula.game.player.Player;
import emu.nebula.game.player.PlayerChangeInfo;
import emu.nebula.game.player.PlayerManager;
import lombok.Getter;
@Getter
public class InfinityTowerManager extends PlayerManager {
@Id
private int uid;
private transient int levelId;
private transient long buildId;
@Deprecated // Morphia only
public InfinityTowerManager() {
}
public InfinityTowerManager(Player player) {
super(player);
this.uid = player.getUid();
//this.save();
}
public int getBountyLevel() {
return 1;
}
public boolean apply(int levelId, long buildId) {
// Verify level data
var data = GameData.getInfinityTowerLevelDataTable().get(levelId);
if (data == null) {
return false;
}
// Set level id
this.levelId = levelId;
// Set build id
if (buildId >= 0) {
this.buildId = buildId;
}
// Success
return true;
}
public PlayerChangeInfo settle(int value) {
// Verify level data
var data = GameData.getInfinityTowerLevelDataTable().get(this.getLevelId());
if (data == null) {
return null;
}
// Init change info
var change = new PlayerChangeInfo();
// TODO
if (value != 1) {
return change;
}
// Calculate rewards
var rewards = data.generateRewards();
// Add items
this.getPlayer().getInventory().addItems(rewards, change);
// Set in change info
change.setExtraData(rewards);
// Success
return change.setSuccess(true);
}
}