Implement infinite arena

This commit is contained in:
Melledy
2025-11-09 07:22:21 -08:00
parent 7d5fef1020
commit 3f7b0d366d
7 changed files with 259 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
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);
}
}

View File

@@ -14,6 +14,7 @@ import emu.nebula.game.account.Account;
import emu.nebula.game.character.CharacterStorage;
import emu.nebula.game.formation.FormationManager;
import emu.nebula.game.gacha.GachaManager;
import emu.nebula.game.infinitytower.InfinityTowerManager;
import emu.nebula.game.instance.InstanceManager;
import emu.nebula.game.inventory.Inventory;
import emu.nebula.game.mail.Mailbox;
@@ -71,6 +72,7 @@ public class Player implements GameDatabaseObject {
// Managers
private final transient CharacterStorage characters;
private final transient GachaManager gachaManager;
private final transient InfinityTowerManager infinityTowerManager;
private final transient VampireSurvivorManager vampireSurvivorManager;
private final transient ScoreBossManager scoreBossManager;
@@ -91,6 +93,7 @@ public class Player implements GameDatabaseObject {
// Init player managers
this.characters = new CharacterStorage(this);
this.gachaManager = new GachaManager(this);
this.infinityTowerManager = new InfinityTowerManager(this);
this.vampireSurvivorManager = new VampireSurvivorManager(this);
this.scoreBossManager = new ScoreBossManager(this);