72 lines
2.0 KiB
C#
72 lines
2.0 KiB
C#
|
|
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<int, LevelItem> itemsDisctionary;
|
|||
|
|
|
|||
|
|
public void Init()
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < levels.Length; i++)
|
|||
|
|
{
|
|||
|
|
levels[i].Init(this);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
itemsDisctionary = new Dictionary<int, LevelItem>();
|
|||
|
|
|
|||
|
|
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];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|