public GameUnitsStats(GameUnitsList guList, int duration) { game = new TimelineNode { Start = new Time(0), Stop = new Time(duration) }; gameNode = new GameUnitStatsNode(game); gameUnitNodes = new Dictionary <GameUnit, GameUnitStatsNode>(); GroupGameStats(guList); }
void FindParent(GameUnitStatsNode node, List <GameUnitStatsNode> parents) { List <GameUnitStatsNode> candidates = parents.Where(p => Contained(node.Node, p.Node)).ToList(); if (candidates.Count != 1) { Log.Warning(String.Format("Found {0} candidates for node {1}", candidates.Count, node)); } foreach (GameUnitStatsNode parent in candidates) { parent.Add(node); } }
void GroupGameStats(GameUnitsList guList) { List <GameUnitStatsNode> parents = new List <GameUnitStatsNode>(); parents.Add(gameNode); foreach (GameUnit gu in guList) { List <GameUnitStatsNode> nextParents = new List <GameUnitStatsNode>(); foreach (TimelineNode tn in gu) { GameUnitStatsNode node = new GameUnitStatsNode(tn); nextParents.Add(node); FindParent(node, parents); } gameUnitNodes.Add(gu, new GameUnitStatsNode(game, nextParents)); parents = nextParents; } }