public TimeSliceGame ProcessGame(ScGame game, int timeGranularity, int timeSlices) { List<GameStateVector> gameStateVectors = new List<GameStateVector>(); for (int i = 0; i < timeSlices; i++) { List<ScEvent> events = game.Events.Where(e => e.Time < timeGranularity * (i + 1)).ToList(); Dictionary<string, float> unitCounter = new Dictionary<string, float>(); IniUnitCounter(unitCounter, game.Race); foreach (ScEvent scEvent in events) { if (unitCounter.ContainsKey(scEvent.Unit)) { unitCounter[scEvent.Unit]++; } else { unitCounter.Add(scEvent.Unit, 1); } } GameStateVector gsv = new GameStateVector() { UnitCounter = unitCounter }; gameStateVectors.Add(gsv); } return new TimeSliceGame() { GameStateVectors = gameStateVectors, Race = game.Race , Replay = game.ReplayFile}; }
public NodeList<ScEvent> buildTree(int counter, ScGame game, List<ScGame> games) { NodeList<ScEvent> result = new NodeList<ScEvent>(); if (++counter < game.Events.Count) { ScEvent r = game.Events[counter]; result.Add(new Node<ScEvent>(1, r, buildTree(counter, game, games))); } return result; }
public UnitTimeVector ProcessGame(ScGame game) { UnitTimeVector v = new UnitTimeVector(); v.Race = game.Race; v.Replay = game.ReplayFile; IniVector(v.Vector, game.Race); foreach (ScEvent scEvent in game.Events) { if (v.Vector[scEvent.Unit] > scEvent.Time) v.Vector[scEvent.Unit] = scEvent.Time; } return v; }