mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-13 04:45:02 +01:00
Optimize star tower case handling
This commit is contained in:
@@ -1,8 +1,5 @@
|
|||||||
package emu.nebula.game.tower.room;
|
package emu.nebula.game.tower.room;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import emu.nebula.data.resources.StarTowerStageDef;
|
import emu.nebula.data.resources.StarTowerStageDef;
|
||||||
import emu.nebula.game.tower.StarTowerGame;
|
import emu.nebula.game.tower.StarTowerGame;
|
||||||
import emu.nebula.game.tower.StarTowerModifiers;
|
import emu.nebula.game.tower.StarTowerModifiers;
|
||||||
@@ -13,7 +10,12 @@ import emu.nebula.proto.PublicStarTower.InteractEnterReq;
|
|||||||
import emu.nebula.proto.PublicStarTower.StarTowerRoomCase;
|
import emu.nebula.proto.PublicStarTower.StarTowerRoomCase;
|
||||||
import emu.nebula.proto.PublicStarTower.StarTowerRoomData;
|
import emu.nebula.proto.PublicStarTower.StarTowerRoomData;
|
||||||
import emu.nebula.proto.StarTowerApply.StarTowerApplyReq;
|
import emu.nebula.proto.StarTowerApply.StarTowerApplyReq;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
import us.hebi.quickbuf.RepeatedMessage;
|
import us.hebi.quickbuf.RepeatedMessage;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@@ -30,7 +32,7 @@ public class StarTowerBaseRoom {
|
|||||||
|
|
||||||
// Cases
|
// Cases
|
||||||
private int lastCaseId = 0;
|
private int lastCaseId = 0;
|
||||||
private List<StarTowerBaseCase> cases;
|
private Int2ObjectMap<StarTowerBaseCase> cases;
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
private boolean hasDoor;
|
private boolean hasDoor;
|
||||||
@@ -38,7 +40,7 @@ public class StarTowerBaseRoom {
|
|||||||
public StarTowerBaseRoom(StarTowerGame game, StarTowerStageDef stage) {
|
public StarTowerBaseRoom(StarTowerGame game, StarTowerStageDef stage) {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.stage = stage;
|
this.stage = stage;
|
||||||
this.cases = new ArrayList<>();
|
this.cases = new Int2ObjectLinkedOpenHashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getType() {
|
public int getType() {
|
||||||
@@ -80,10 +82,7 @@ public class StarTowerBaseRoom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public StarTowerBaseCase getCase(int id) {
|
public StarTowerBaseCase getCase(int id) {
|
||||||
return this.getCases().stream()
|
return this.getCases().get(id);
|
||||||
.filter(c -> c.getId() == id)
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public StarTowerBaseCase addCase(StarTowerBaseCase towerCase) {
|
public StarTowerBaseCase addCase(StarTowerBaseCase towerCase) {
|
||||||
@@ -91,12 +90,12 @@ public class StarTowerBaseRoom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public StarTowerBaseCase addCase(RepeatedMessage<StarTowerRoomCase> cases, StarTowerBaseCase towerCase) {
|
public StarTowerBaseCase addCase(RepeatedMessage<StarTowerRoomCase> cases, StarTowerBaseCase towerCase) {
|
||||||
// Add to cases list
|
|
||||||
this.getCases().add(towerCase);
|
|
||||||
|
|
||||||
// Set game for tower case
|
// Set game for tower case
|
||||||
towerCase.register(this);
|
towerCase.register(this);
|
||||||
|
|
||||||
|
// Add to cases list
|
||||||
|
this.getCases().put(towerCase.getId(), towerCase);
|
||||||
|
|
||||||
// Add case to proto
|
// Add case to proto
|
||||||
if (cases != null) {
|
if (cases != null) {
|
||||||
cases.add(towerCase.toProto());
|
cases.add(towerCase.toProto());
|
||||||
@@ -127,7 +126,7 @@ public class StarTowerBaseRoom {
|
|||||||
var proto = emu.nebula.proto.PublicStarTower.StarTowerRoom.newInstance()
|
var proto = emu.nebula.proto.PublicStarTower.StarTowerRoom.newInstance()
|
||||||
.setData(this.getDataProto());
|
.setData(this.getDataProto());
|
||||||
|
|
||||||
for (var towerCase : this.getCases()) {
|
for (var towerCase : this.getCases().values()) {
|
||||||
proto.addCases(towerCase.toProto());
|
proto.addCases(towerCase.toProto());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user