コード例 #1
0
ファイル: VMService.cs プロジェクト: Lucasvo1/FHVGame
        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;
            }
        }
コード例 #2
0
ファイル: MHGameService.cs プロジェクト: Lucasvo1/FHVGame
        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);
            }
        }
コード例 #3
0
ファイル: ParserService.cs プロジェクト: Lucasvo1/FHVGame
        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);
        }