mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-12 20:34:36 +01:00
Deleting a record should return journey tickets
This commit is contained in:
@@ -92,24 +92,40 @@ public class StarTowerManager extends PlayerManager implements GameDatabaseObjec
|
||||
return game;
|
||||
}
|
||||
|
||||
public boolean saveBuild(boolean delete, String name, boolean lock) {
|
||||
// Build
|
||||
|
||||
private PlayerChangeInfo dismantleBuild(StarTowerBuild build, PlayerChangeInfo change) {
|
||||
// Calculate quanity of tickets from record score
|
||||
int count = (int) Math.floor(build.getScore() / 100);
|
||||
|
||||
// Add journey tickets
|
||||
this.getPlayer().getInventory().addItem(12, count, change);
|
||||
|
||||
// Success
|
||||
return change;
|
||||
}
|
||||
|
||||
public PlayerChangeInfo saveBuild(boolean delete, String name, boolean lock) {
|
||||
// Sanity check
|
||||
if (this.getLastBuild() == null) {
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Create player change info
|
||||
var change = new PlayerChangeInfo();
|
||||
|
||||
// Cache build and clear reference
|
||||
var build = this.lastBuild;
|
||||
this.lastBuild = null;
|
||||
|
||||
// Check if the player wants this build or not
|
||||
if (delete) {
|
||||
return true;
|
||||
return this.dismantleBuild(build, change);
|
||||
}
|
||||
|
||||
// Check limit
|
||||
if (this.getBuilds().size() >= 50) {
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Add to builds
|
||||
@@ -118,25 +134,31 @@ public class StarTowerManager extends PlayerManager implements GameDatabaseObjec
|
||||
// Save build to database
|
||||
build.save();
|
||||
|
||||
//
|
||||
return true;
|
||||
// Success
|
||||
return change;
|
||||
}
|
||||
|
||||
// TODO give rewards to player
|
||||
public PlayerChangeInfo deleteBuild(long buildId, PlayerChangeInfo changes) {
|
||||
public PlayerChangeInfo deleteBuild(long buildId, PlayerChangeInfo change) {
|
||||
// Create change info
|
||||
if (changes == null) {
|
||||
changes = new PlayerChangeInfo();
|
||||
if (change == null) {
|
||||
change = new PlayerChangeInfo();
|
||||
}
|
||||
|
||||
// Get build
|
||||
var build = this.getBuilds().remove(buildId);
|
||||
|
||||
if (build != null) {
|
||||
build.delete();
|
||||
if (build == null) {
|
||||
return change;
|
||||
}
|
||||
|
||||
return changes;
|
||||
// Delete
|
||||
build.delete();
|
||||
|
||||
// Add journey tickets
|
||||
this.dismantleBuild(build, change);
|
||||
|
||||
// Success
|
||||
return change;
|
||||
}
|
||||
|
||||
// Database
|
||||
|
||||
@@ -16,17 +16,17 @@ public class HandlerStarTowerBuildDeleteReq extends NetHandler {
|
||||
// Parse request
|
||||
var req = StarTowerBuildDeleteReq.parseFrom(message);
|
||||
|
||||
//
|
||||
var changes = new PlayerChangeInfo();
|
||||
// Player change info
|
||||
var change = new PlayerChangeInfo();
|
||||
|
||||
// Delete
|
||||
for (var id : req.getBuildIds()) {
|
||||
session.getPlayer().getStarTowerManager().deleteBuild(id, changes);
|
||||
session.getPlayer().getStarTowerManager().deleteBuild(id, change);
|
||||
}
|
||||
|
||||
// Build response
|
||||
var rsp = StarTowerBuildDeleteResp.newInstance()
|
||||
.setChange(changes.toProto());
|
||||
.setChange(change.toProto());
|
||||
|
||||
// Encode packet
|
||||
return session.encodeMsg(NetMsgId.star_tower_build_delete_succeed_ack, rsp);
|
||||
|
||||
@@ -16,18 +16,19 @@ public class HandlerStarTowerBuildWhetherSaveReq extends NetHandler {
|
||||
var req = StarTowerBuildWhetherSaveReq.parseFrom(message);
|
||||
|
||||
// Save build
|
||||
boolean result = session.getPlayer().getStarTowerManager().saveBuild(
|
||||
var change = session.getPlayer().getStarTowerManager().saveBuild(
|
||||
req.getDelete(),
|
||||
req.getBuildName(),
|
||||
req.getLock()
|
||||
);
|
||||
|
||||
if (!result) {
|
||||
if (change == null) {
|
||||
return session.encodeMsg(NetMsgId.star_tower_build_whether_save_failed_ack);
|
||||
}
|
||||
|
||||
// Build response
|
||||
var rsp = StarTowerBuildWhetherSaveResp.newInstance();
|
||||
var rsp = StarTowerBuildWhetherSaveResp.newInstance()
|
||||
.setChange(change.toProto());
|
||||
|
||||
return session.encodeMsg(NetMsgId.star_tower_build_whether_save_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user