/// <summary>
 /// Initializes a new instance of the <see cref="PagePresenter"/> class.
 /// </summary>
 /// <param name="initial">The initial.</param>
 /// <param name="textBoxHolder">The text box holder.</param>
 /// <param name="actionGrid">The action grid.</param>
 /// <param name="left">The left portraits.</param>
 /// <param name="right">The right portraits.</param>
 /// <param name="header">The header.</param>
 /// <param name="sound">The sound.</param>
 public PagePresenter(Page initial, TextBoxHolderView textBoxHolder, ActionGridView actionGrid, PortraitHolderView left, PortraitHolderView right, HeaderView header, SoundView sound)
 {
     this.textBoxHolder       = textBoxHolder;
     this.actionGrid          = actionGrid;
     this.left                = left;
     this.right               = right;
     this.header              = header;
     this.sound               = sound;
     this.characterPresenters = new List <CharacterPresenter>();
     InitializeFunctions();
     this.presenters = new Dictionary <Character, CharacterPresenter>(new IdNumberEqualityComparer <Character>());
     this.Page       = initial;
 }
 private void SetCharacterPresenters(IList <Character> characters, PortraitHolderView portraitHolder)
 {
     AddCharactersToPortraitHolder(characters, portraitHolder);
     foreach (Character c in characters)
     {
         CharacterPresenter presenter = new CharacterPresenter(c, portraitHolder.GetPortrait(c.Id));
         presenter.Tick();
         if (!presenters.ContainsKey(c))
         {
             presenters.Add(c, null);
         }
         presenters[c] = presenter;
     }
 }
        private void AddCharactersToPortraitHolder(IList <Character> characters, PortraitHolderView portraitHolder)
        {
            int revealContributionFromFlags = Convert.ToInt32(characters.Any(c => c.Brain is Player)); // Being in same party as player gives +1 to revealing

            portraitHolder.AddContents(
                characters
                .Select(
                    c => new PortraitHolderView.PortraitContent(
                        id: c.Id,
                        name: c.Look.DisplayName,
                        sprite: c.Look.Sprite,
                        tip: string.Format("Level {0} {1}\n<color=grey>{2}</color>",
                                           c.Stats.Level,
                                           c.Look.Breed.GetDescription(),
                                           c.Look.Tooltip),
                        buffs: c.Buffs
                        .Select(
                            b => new BuffHolderView.BuffContent(
                                id: b.Id,
                                color: Color.white,
                                description: b.Description,
                                duration: b.DurationText,
                                name: b.Name,
                                sprite: b.Sprite
                                )).ToArray(),
                        resources: c
                        .Stats
                        .Resources
                        .Select(
                            r => new ResourceHolderView.ResourceContent(
                                id: r.Type.GetHashCode(),
                                barText: r.Mod.ToString(),
                                numerator: r.Mod,
                                denominator: r.Max,
                                fillColor: r.Type.Color,
                                negativeColor: r.Type.NegativeColor,
                                sprite: r.Type.Sprite,
                                typeDescription: r.Type.Description,
                                title: r.Type.Name
                                )).ToList(),
                        isRevealed: IsRevealedCalculation(c.Stats, revealContributionFromFlags)
                        )
                    ).ToArray()
                );
        }