package emu.grasscutter.scripts.data; import java.util.ArrayList; import java.util.List; import lombok.Setter; import lombok.ToString; @ToString @Setter public class SceneSuite { // make it refer the default empty list to avoid NPE caused by some group public List<Integer> monsters = List.of(); public List<Integer> gadgets = List.of(); public List<String> triggers = List.of(); public List<Integer> regions = List.of(); public int rand_weight; public transient List<SceneMonster> sceneMonsters = List.of(); public transient List<SceneGadget> sceneGadgets = List.of(); public transient List<SceneTrigger> sceneTriggers = List.of(); public transient List<SceneRegion> sceneRegions = List.of(); public void init(SceneGroup sceneGroup) { if(sceneGroup.monsters != null){ this.sceneMonsters = new ArrayList<>( this.monsters.stream() .filter(sceneGroup.monsters::containsKey) .map(sceneGroup.monsters::get) .toList() ); } if(sceneGroup.gadgets != null){ this.sceneGadgets = new ArrayList<>( this.gadgets.stream() .filter(sceneGroup.gadgets::containsKey) .map(sceneGroup.gadgets::get) .toList() ); } if(sceneGroup.triggers != null) { this.sceneTriggers = new ArrayList<>( this.triggers.stream() .filter(sceneGroup.triggers::containsKey) .map(sceneGroup.triggers::get) .toList() ); } if(sceneGroup.regions != null) { this.sceneRegions = new ArrayList<>( this.regions.stream() .filter(sceneGroup.regions::containsKey) .map(sceneGroup.regions::get) .toList() ); } } }