// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.

using System;
using System.Collections.Generic;
using osu.Game.Configuration;
using osu.Game.Database;

namespace osu.Game.Skinning
{
    public class SkinInfo : IHasFiles<SkinFileInfo>, IEquatable<SkinInfo>, IHasPrimaryKey, ISoftDelete
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public string Hash { get; set; }

        public string Creator { get; set; }

        public List<SkinFileInfo> Files { get; set; }

        public List<DatabasedSetting> Settings { get; set; }

        public bool DeletePending { get; set; }

        public string FullName => $"\"{Name}\" by {Creator}";

        public static SkinInfo Default { get; } = new SkinInfo
        {
            Name = "osu!lazer",
            Creator = "team osu!"
        };

        public bool Equals(SkinInfo other) => other != null && ID == other.ID;

        public override string ToString() => FullName;
    }
}