using System.Collections.Generic; using UnityEngine; namespace Watermelon.LevelSystem { [CreateAssetMenu(fileName = "World", menuName = "Data/New Level/World")] public class WorldData : ScriptableObject { [SerializeField] Sprite previewSprite; public Sprite PreviewSprite => previewSprite; [SerializeField] AudioClip uniqueWorldMusicClip; public AudioClip UniqueWorldMusicClip => uniqueWorldMusicClip; [SerializeField] WorldType worldType; public WorldType WorldType => worldType; [SerializeField, LevelEditorSetting] LevelData[] levels; public LevelData[] Levels => levels; [SerializeField, LevelEditorSetting] LevelItem[] items; public LevelItem[] Items => items; [SerializeField, LevelEditorSetting] RoomEnvironmentPreset[] roomEnvPresets; public RoomEnvironmentPreset[] RoomEnvPresets => roomEnvPresets; [SerializeField, LevelEditorSetting] CustomObjectData[] worldCustomObjects; public CustomObjectData[] WorldCustomObjects => worldCustomObjects; private Dictionary itemsDisctionary; public void Init() { for (int i = 0; i < levels.Length; i++) { levels[i].Init(this); } itemsDisctionary = new Dictionary(); for (int i = 0; i < items.Length; i++) { itemsDisctionary.Add(items[i].Hash, items[i]); } } public void LoadWorld() { // creating items pools for (int i = 0; i < items.Length; i++) { items[i].OnWorldLoaded(); } } public void UnloadWorld() { // releasing items pools for (int i = 0; i < items.Length; i++) { items[i].OnWorldUnloaded(); } } public LevelItem GetLevelItem(int hash) { return itemsDisctionary[hash]; } } }