forked from Shardstone/trail-into-darkness
30 lines
1.4 KiB
C#
30 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace Nox.Game {
|
|
public class PartyCreatorModel {
|
|
private readonly ICharacterFactory characterFactory;
|
|
private readonly IPartyFactory partyFactory;
|
|
private readonly List<CharacterCreationRequest> characterCreationRequests;
|
|
private readonly PartySettings partySettings;
|
|
|
|
public PartyCreatorModel(ICharacterFactory characterFactory,
|
|
IPartyFactory partyFactory,
|
|
List<CharacterCreationRequest> characterCreationRequests,
|
|
PartySettings partySettings) {
|
|
this.characterFactory = characterFactory;
|
|
this.partyFactory = partyFactory;
|
|
this.characterCreationRequests = characterCreationRequests;
|
|
this.partySettings = partySettings;
|
|
}
|
|
public PartyDefinition CreatePartyForNewRun() {
|
|
if(characterCreationRequests.Count > partySettings.maxPartySize) {
|
|
throw new System.ArgumentException("Too many characters requested.");
|
|
}
|
|
var protagonist = characterFactory.CreateProtagonist(characterCreationRequests.Find(r => r.Role == CharacterRole.Protagonist));
|
|
var companions = characterCreationRequests.FindAll(r => r.Role != CharacterRole.Protagonist).Select(r => characterFactory.CreateProtagonist(r));
|
|
return partyFactory.Create(protagonist, companions);
|
|
}
|
|
}
|
|
}
|