private void OnGameRestarted(MsgGameControl obj) { Log.DebugFormat("(Re-)Started Game, now is level with index: {0}", obj.LevelIndex); // Todo: Implement actions required on Game-Restart // This method is called before the caller of StartNextGame() can continue (call is blocking!) switch (obj.Typ) { case EventType.Start: case EventType.Restart: Model.Clear(); NonPersistentLevel l = GameSetup.GetAllNonpersistentLevels()[obj.LevelIndex]; initLevel(l); doImageSetup(); foreach (KeyValuePair<int, VMovingHead> entry in MovingHeads) { Log.DebugFormat("OnGameRestarted: calcDMXRatio mhnr: {0}", entry.Key); calcDMXRatios(entry.Key); } Log.Debug("SetupPositionReached: restart done"); MhNrEntityIdMapping.Clear(); AvailableEntityIds.Clear(); EntityIdVirtualObjectIdMapping.Clear(); for (int i = 0; i < ImgSetup.ListOfObjectIds.Count; i++) { AvailableEntityIds.Add(ImgSetup.ListOfObjectIds[i]); } // add players and map EntityIdVirtualObjectIdMapping List<Point> startPoints = new List<Point>(); startPoints.Add(new Point(0, 0)); startPoints.Add(new Point(Model.Map.GetWidth(), Model.Map.GetHeight())); int playerSize = 10; foreach (int entry in ImgSetup.ListOfObjectIds) { //TODO: maybe try catch int virtualId = Model.NextFreeId; Point startPoint = new Point(0, 0); if (startPoints.Count > 0) { startPoint = startPoints[0]; startPoints.Remove(startPoint); } //add player Model.AddModelObject(new ModelPlayer(Model, virtualId, playerSize), startPoint); // map EntityIdVirtualObjectIdMapping.Add(entry, virtualId); } break; default: Log.WarnFormat("Received an unimplemented GameControlEvent of type {0}", obj.Typ); break; } }
private void GameEvent(MsgGameControl obj) { HashSet<int> unusedMHs = new HashSet<int>(); foreach (var item in MhSvc.MhAdresses) { unusedMHs.Add(item); } if ((obj.Typ & (EventType.Restart | EventType.Start)) > 0) { Log.DebugFormat("GameControl: {0}, move MHs to start-position", obj.Typ); NonPersistentLevel lvl = GLogicSvc.GetCurrentLevel(); // Set PAN/TILT foreach (Point p in lvl.Lvl.StartPositions) { // TODO: Set start-position according to calc of VM } // Set colors int i = 0; foreach (byte color in lvl.Lvl.Colors) { MhSvc.SetColor(color, i); if (unusedMHs.Contains(i)) unusedMHs.Remove(i); ++i; } } // Turn all unused Moving-Heads off for (int i = 0; i < unusedMHs.Count; i++) { MhSvc.TurnOff(i); } }
private void OnGameRestart(MsgGameControl obj) { if (obj.Typ != EventType.Restart && obj.Typ != EventType.Start) { Log.ErrorFormat("Unknown GameControlEvent {0} - Don't start ImageParser", obj.Typ); return; } // Get the specific config file (and probably additional cmd-args) string filename = Conf.GetSetting<string>("binImgParser"); var level = GameSvc.GetCurrentLevel(); //StartImageParser(filename, level.Lvl.ImgParseCmdArgs); StartProcessAsync(filename, level.Lvl.ImgParseCmdArgs); }