private ListViewItem createCreatureLVItem(Creature cr, ListViewGroup g)
{
int topStatsCount = cr.topStatsCount;
string[] subItems = (new string[] { cr.name + (cr.status != CreatureStatus.Available ? " (" + Utils.statusSymbol(cr.status) + ")" : ""), cr.owner, Utils.genderSymbol(cr.gender), cr.domesticatedAt.ToString("yyyy'-'MM'-'dd HH':'mm"), cr.topness.ToString(), topStatsCount.ToString(), cr.generation.ToString(), cr.levelFound.ToString() }).Concat(cr.levelsWild.Select(x => x.ToString()).ToArray()).ToArray();
ListViewItem lvi = new ListViewItem(subItems, g);
for (int s = 0; s < 8; s++)
{
// color unknown levels
if (cr.levelsWild[s] < 0)
{
lvi.SubItems[s + 8].ForeColor = Color.WhiteSmoke;
lvi.SubItems[s + 8].BackColor = Color.WhiteSmoke;
}
else
lvi.SubItems[s + 8].BackColor = Utils.getColorFromPercent((int)(cr.levelsWild[s] * (s == 7 ? .357 : 2.5)), (considerStatHighlight[s] ? (cr.topBreedingStats[s] ? 0.2 : 0.7) : 0.93));
}
lvi.SubItems[2].BackColor = cr.neutered ? SystemColors.GrayText : (cr.gender == Gender.Female ? Color.FromArgb(255, 230, 255) : (cr.gender == Gender.Male ? Color.FromArgb(220, 235, 255) : SystemColors.Window));
if (cr.status == CreatureStatus.Dead)
{
lvi.SubItems[0].ForeColor = SystemColors.GrayText;
lvi.BackColor = Color.FromArgb(255, 250, 240);
}
if (cr.status == CreatureStatus.Unavailable)
{
lvi.SubItems[0].ForeColor = SystemColors.GrayText;
}
lvi.UseItemStyleForSubItems = false;
// color for top-stats-nr
if (topStatsCount > 0)
{
if (cr.topBreedingCreature)
lvi.BackColor = Color.LightGreen;
lvi.SubItems[5].BackColor = Utils.getColorFromPercent(topStatsCount * 8 + 44, 0.7);
}
else
{
lvi.SubItems[5].ForeColor = Color.LightGray;
}
// color for timestamp added
if (cr.domesticatedAt.Year < 2015)
{
lvi.SubItems[3].Text = "n/a";
lvi.SubItems[3].ForeColor = Color.LightGray;
}
// color for topness
lvi.SubItems[4].BackColor = Utils.getColorFromPercent(cr.topness * 2 - 100, 0.8); // topness is in percent. gradient from 50-100
// color for generation
if (cr.generation == 0)
lvi.SubItems[6].ForeColor = Color.LightGray;
// color of WildLevelColumn
if (cr.levelFound == 0)
lvi.SubItems[7].ForeColor = Color.LightGray;
lvi.Tag = cr;
return lvi;
}