mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-14 13:24:43 +01:00
Implement infinite arena
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user