using UnityEngine; namespace Guildlib.Runtime { /// /// Project-level Guildlib configuration. /// /// HOW TO CREATE: /// Assets → Create → Guildlib → Config /// Name it exactly "GuildlibConfig" and place it in any Resources/ folder. /// /// HOW TO CONFIGURE: /// - Server URL: your Bun server address (local or production) /// - Project ID: any unique string identifying your game project /// - API Key: must match GUILDLIB_API_KEY env var on the server /// Leave blank during local development (server auth disabled) /// - Shard list: comma-separated list of shards to sync, or leave empty /// to sync ALL shards the server knows about /// [CreateAssetMenu(menuName = "Guildlib/Config", fileName = "GuildlibConfig")] public class GuildlibConfig : ScriptableObject { [Header("Server connection")] public string serverUrl = "http://localhost:3000"; public string projectId = ""; [Tooltip("Must match GUILDLIB_API_KEY on the server. Leave blank for local dev.")] public string apiKey = ""; [Header("Local storage")] [Tooltip("Folder name inside Application.persistentDataPath where .sqlite shards are saved.")] public string shardFolder = "GuildlibShards"; [Header("Sync targets")] [Tooltip("Leave empty to sync all shards. Or list specific shard names to limit syncing.")] public string[] shardsToSync = new string[0]; /// /// Returns the list of shards to sync. If empty, returns null /// (meaning: ask the server for all available shards). /// public string[] GetSyncTargets() => shardsToSync != null && shardsToSync.Length > 0 ? shardsToSync : null; public static GuildlibConfig Load() => Resources.Load("GuildlibConfig"); } }