Implement dungeon entry

This commit is contained in:
Melledy
2022-04-28 08:20:37 -07:00
Unverified
parent 472e771dc8
commit 17addc1522
19 changed files with 318 additions and 48 deletions
@@ -3,6 +3,7 @@ package emu.grasscutter.game.world;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.GameDepot;
import emu.grasscutter.data.def.DungeonData;
import emu.grasscutter.data.def.MonsterData;
import emu.grasscutter.data.def.SceneData;
import emu.grasscutter.data.def.WorldLevelData;
@@ -41,6 +42,9 @@ public class Scene {
private int time;
private ClimateType climate;
private int weather;
private DungeonData dungeonData;
private int prevScene; // Id of the previous scene
public Scene(World world, SceneData sceneData) {
this.world = world;
@@ -50,6 +54,7 @@ public class Scene {
this.time = 8 * 60;
this.climate = ClimateType.CLIMATE_SUNNY;
this.prevScene = 3;
this.spawnedEntities = new HashSet<>();
this.deadSpawnedEntities = new HashSet<>();
@@ -111,6 +116,14 @@ public class Scene {
this.weather = weather;
}
public int getPrevScene() {
return prevScene;
}
public void setPrevScene(int prevScene) {
this.prevScene = prevScene;
}
public boolean dontDestroyWhenEmpty() {
return dontDestroyWhenEmpty;
}
@@ -127,6 +140,17 @@ public class Scene {
return deadSpawnedEntities;
}
public DungeonData getDungeonData() {
return dungeonData;
}
public void setDungeonData(DungeonData dungeonData) {
if (this.dungeonData != null || this.getSceneType() != SceneType.SCENE_DUNGEON || dungeonData.getSceneId() != this.getId()) {
return;
}
this.dungeonData = dungeonData;
}
public boolean isInScene(GameEntity entity) {
return this.entities.containsKey(entity.getId());
}