Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/GameSession/HireManager.cs
2022-02-26 02:43:01 +09:00

51 lines
1.6 KiB
C#

using System.Collections.Generic;
using System.Linq;
namespace Barotrauma
{
class HireManager
{
public List<CharacterInfo> AvailableCharacters { get; set; }
public List<CharacterInfo> PendingHires = new List<CharacterInfo>();
public const int MaxAvailableCharacters = 10;
public HireManager()
{
AvailableCharacters = new List<CharacterInfo>();
}
public void RemoveCharacter(CharacterInfo character)
{
AvailableCharacters.Remove(character);
}
public void GenerateCharacters(Location location, int amount)
{
AvailableCharacters.ForEach(c => c.Remove());
AvailableCharacters.Clear();
for (int i = 0; i < amount; i++)
{
JobPrefab job = location.Type.GetRandomHireable();
if (job == null) { return; }
var variant = Rand.Range(0, job.Variants, Rand.RandSync.ServerAndClient);
AvailableCharacters.Add(new CharacterInfo(CharacterPrefab.HumanSpeciesName, jobOrJobPrefab: job, variant: variant));
}
}
public void Remove()
{
AvailableCharacters.ForEach(c => c.Remove());
AvailableCharacters.Clear();
}
public void RenameCharacter(CharacterInfo characterInfo, string newName)
{
if (characterInfo == null || string.IsNullOrEmpty(newName)) { return; }
AvailableCharacters.FirstOrDefault(ci => ci == characterInfo)?.Rename(newName);
PendingHires.FirstOrDefault(ci => ci == characterInfo)?.Rename(newName);
}
}
}