server-master/srcs/_plugins/WingsEmu.Plugins.BasicImplementation/Vehicles/VehicleConfigurationProvider.cs
2026-02-10 18:21:30 +01:00

28 lines
No EOL
1.2 KiB
C#

// WingsEmu
//
// Developed by NosWings Team
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using WingsEmu.Core.Extensions;
using WingsEmu.Packets.Enums.Character;
namespace WingsEmu.Plugins.BasicImplementations.Vehicles;
public class VehicleConfigurationProvider : IVehicleConfigurationProvider
{
private readonly ImmutableDictionary<int, VehicleConfiguration> _configurations;
private readonly Dictionary<int, VehicleConfiguration> _femaleVehicles;
private readonly Dictionary<int, VehicleConfiguration> _maleVehicles;
public VehicleConfigurationProvider(IEnumerable<VehicleConfiguration> configurations)
{
_configurations = configurations.ToImmutableDictionary(s => s.VehicleVnum);
_maleVehicles = configurations.GroupBy(s => s.MaleMorphId).ToDictionary(s => s.Key, s => s.First());
_femaleVehicles = configurations.GroupBy(s => s.FemaleMorphId).ToDictionary(s => s.Key, s => s.First());
}
public VehicleConfiguration GetByVehicleVnum(int vnum) => _configurations.GetValueOrDefault(vnum);
public VehicleConfiguration GetByMorph(int morph, GenderType genderType) => genderType == GenderType.Male ? _maleVehicles.GetOrDefault(morph) : _femaleVehicles.GetOrDefault(morph);
}