77 lines
1.7 KiB
C#
Raw Normal View History

2025-09-24 11:24:38 +05:00
using UnityEngine;
using System;
namespace TPSBR
{
[Serializable]
[CreateAssetMenu(fileName = "MapSettings", menuName = "TPSBR/Map Settings")]
public sealed class MapSettings : ScriptableObject
{
// PUBLIC MEMBERS
public MapSetup[] Maps => _maps;
// PRIVATE MEMBERS
[SerializeField]
private MapSetup[] _maps;
// PUBLIC METHODS
public MapSetup GetMapSetup(string mapID)
{
if (mapID.HasValue() == false)
return null;
return _maps.Find(t => t.ID == mapID);
}
public int GetMapIndexFromScenePath(string path)
{
return Array.FindIndex(_maps, t => t.ScenePath == path);
}
public MapSetup GetRandomMapSetup()
{
return _maps[UnityEngine.Random.Range(0, _maps.Length)];
}
}
// ===========================================================================
[Serializable]
public sealed class MapSetup
{
// PUBLIC MEMBERS
public string ID => _id;
public string ScenePath => _scenePath;
public string DisplayName => _displayName;
public string Description => _description;
public Sprite Image => _image;
public int RecommendedPlayers => _recommendedPlayers;
public int MaxPlayers => _maxPlayers;
public bool ShowInMapSelection => _showInMapSelection;
// PRIVATE MEMBERS
[SerializeField]
private string _id;
[SerializeField]
private string _scenePath;
[SerializeField]
private string _displayName;
[SerializeField, TextArea(3, 6)]
private string _description;
[SerializeField]
private Sprite _image;
[SerializeField]
private int _recommendedPlayers = 100;
[SerializeField]
private int _maxPlayers = 200;
[SerializeField]
private bool _showInMapSelection = true;
}
}