feat: implement home animals (#2329)

This commit is contained in:
hamusuke
2023-09-02 14:46:58 +09:00
committed by GitHub
parent c1045103ed
commit 97138d8c84
12 changed files with 354 additions and 34 deletions

View File

@@ -1,10 +1,17 @@
package emu.grasscutter.game.home;
import dev.morphia.annotations.*;
import dev.morphia.annotations.Entity;
import dev.morphia.annotations.Id;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.binout.HomeworldDefaultSaveData;
import emu.grasscutter.game.entity.EntityHomeAnimal;
import emu.grasscutter.game.world.Position;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.proto.HomeSceneArrangementInfoOuterClass.HomeSceneArrangementInfo;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.*;
@@ -71,6 +78,19 @@ public class HomeSceneItem {
return mainHouse == null || mainHouse.getAsItem() == null;
}
public List<EntityHomeAnimal> getAnimals(Scene scene) {
return this.blockItems.values().stream()
.map(HomeBlockItem::getDeployAnimalList)
.flatMap(Collection::stream)
.filter(homeAnimalItem -> GameData.getHomeWorldAnimalDataMap().containsKey(homeAnimalItem.getFurnitureId()))
.map(homeAnimalItem -> {
return new EntityHomeAnimal(scene,
GameData.getHomeWorldAnimalDataMap().get(homeAnimalItem.getFurnitureId()),
homeAnimalItem.getSpawnPos());
})
.toList();
}
public int calComfort() {
return this.blockItems.values().stream().mapToInt(HomeBlockItem::calComfort).sum();
}