Beispiel #1
0
 public void SendToClient(Client.ClientType ctype, string msg)
 {
     if (Clients.ContainsKey(ctype))
     {
         Clients[ctype].SendMsg(msg);
     }
 }
Beispiel #2
0
        private static Dictionary <int, GameResponse> GetGameFeedbackByPhase(Session session)
        {
            int phase     = session.ActivePhase;
            var feedbacks = new Dictionary <int, GameResponse>();

            for (var i = 1; i < 5; i++)
            {
                Client.ClientType key = GetClientTypeByWindowId(phase, i);
                if (session.GameEndResponses.ContainsKey(key))
                {
                    feedbacks.Add(i, session.GameEndResponses[key]);
                }
            }
            return(feedbacks);
        }
Beispiel #3
0
        public bool CheckCompatibility(Client.ClientType ctype)
        {
            if (ctype == Client.ClientType.ControlClient)
            {
                return(true);
            }
            if (ctype == Client.ClientType.Wrapper)
            {
                return(true);
            }
            switch (ActivePhase)
            {
            case 1:
                switch (ctype)
                {
                case Client.ClientType.GameStanzen:
                case Client.ClientType.GamePressen:
                case Client.ClientType.GameSchweissen:
                case Client.ClientType.GameLogistik:
                    return(true);
                }
                break;

            case 2:
                switch (ctype)
                {
                case Client.ClientType.GameKontrolle:
                case Client.ClientType.GameKarosseriebau:
                case Client.ClientType.GameEinkauf:
                case Client.ClientType.GameMotorbau:
                    return(true);
                }
                break;

            case 3:
                switch (ctype)
                {
                case Client.ClientType.GameLackiererei:
                case Client.ClientType.GameElektrik:
                case Client.ClientType.GameMontage:
                case Client.ClientType.GameSystemueberwachung:
                    return(true);
                }
                break;
            }
            return(false);
        }
Beispiel #4
0
        private static String GetJobByClientIdent(Client.ClientType ident)
        {
            switch (ident)
            {
            case Client.ClientType.GameStanzen:
                return("TBD");

            case Client.ClientType.GamePressen:
                return("TBD");

            case Client.ClientType.GameSchweissen:
                return("TBD");

            case Client.ClientType.GameLogistik:
                return("TBD");

            case Client.ClientType.GameKontrolle:
                return("TBD");

            case Client.ClientType.GameKarosseriebau:
                return("TBD");

            case Client.ClientType.GameEinkauf:
                return("TBD");

            case Client.ClientType.GameMotorbau:
                return("TBD");

            case Client.ClientType.GameLackiererei:
                return("TBD");

            case Client.ClientType.GameElektrik:
                return("TBD");

            case Client.ClientType.GameMontage:
                return("TBD");

            case Client.ClientType.GameSystemueberwachung:
                return("TBD");

            default:
                return("Unbekannt");
            }
        }
Beispiel #5
0
        public static GameResponse GetGameResponse(Client.ClientType gameType, JToken payload)
        {
            GameResponse gs = new GameResponse();

            try
            {
                //switch (gameType)
                //{
                //    case Client.ClientType.GameStanzen:

                //    case Client.ClientType.GamePressen:

                //    case Client.ClientType.GameSchweissen:
                //    case Client.ClientType.GameLogistik:
                //    case Client.ClientType.GameKontrolle:
                //    case Client.ClientType.GameKarosseriebau:
                //    case Client.ClientType.GameEinkauf:
                //    case Client.ClientType.GameMotorbau:
                //    case Client.ClientType.GameLackiererei:
                //    case Client.ClientType.GameElektrik:
                //    case Client.ClientType.GameMontage:
                //    case Client.ClientType.GameSystemueberwachung:
                //    default:
                //        Logging.LogMsg(Logging.LogLevel.WARNING, "Failed to cast GameResponse. GameType not matching. GameType: {0}", gameType);
                //        return gs;
                //}
                return(payload.ToObject <GameResponse>());
            }
            catch (Exception)
            {
                Logging.LogMsg(Logging.LogLevel.CRITICAL, "Failed to cast GameResponse. GameType: {0}", gameType);
                return(null);

                throw;
            }
        }
        public void HandleMessage(string message)
        {
            Logging.LogMsg(Logging.LogLevel.DEBUG, "ControlClient: " + message);
            SessionHandler handler = _client.SessionPointer.HandlerInstance;

            try
            {
                string[] cmd = message.Split(Convert.ToChar(";"));
                int      phase;
                switch (cmd[0])
                {
                case "startintro":
                    phase = int.Parse(cmd[1]);
                    handler.SessionEvents.StartIntro(phase);
                    break;

                case "loadgames":
                    phase = int.Parse(cmd[1]);
                    handler.SessionEvents.LoadGames(phase);
                    break;

                case "initpipes":
                    phase = int.Parse(cmd[1]);
                    //handler.SessionEvents.InitPipes(phase);
                    handler.ActiveSession.GetClient(Client.ClientType.Wrapper)?.WE?.SetupPipes();
                    break;

                case "setpipe":
                    var        id     = int.Parse(cmd[1]);
                    PipeStatus status = (PipeStatus)int.Parse(cmd[2]);
                    handler.ActiveSession.GetClient(Client.ClientType.Wrapper)?.WE.SetPipe((PipeIdent)id, status);
                    break;

                case "getfeedback":
                    phase = int.Parse(cmd[1]);
                    handler.SessionEvents.ShowGameFeedback(phase, true);
                    break;

                case "getteamfeedback":
                    handler.SessionEvents.ShowTeamFeedback(true);
                    break;

                case "switchphase":
                    if (handler == null)
                    {
                        return;
                    }
                    if (handler.SessionActive)
                    {
                        _client.SendMsg("Invalid action: Stop active Phase first!");
                        return;
                    }
                    handler.SetPhase(int.Parse(cmd[1]));
                    break;

                case "initsession":
                    if (handler == null)
                    {
                        return;
                    }
                    if (handler.SessionActive)
                    {
                        _client.SendMsg("Invalid action: Stop Phase first!");
                        return;
                    }
                    if (cmd.Length >= 3 && !string.IsNullOrEmpty(cmd[2]))
                    {
                        handler.ActiveSession.SessionConfig.Timelimit = int.Parse(cmd[2]);
                    }
                    var gc = handler.ActiveSession.GetInitializedGameClients();
                    if (gc == null)
                    {
                        return;
                    }
                    foreach (var g in gc)
                    {
                        g.GE.InitGame();
                    }

                    break;

                case "startsession":
                    if (handler == null)
                    {
                        return;
                    }
                    if (handler.SessionActive)
                    {
                        _client.SendMsg("Invalid action: Stop Phase first!");
                        return;
                    }
                    phase = int.Parse(cmd[1]);
                    handler.SessionEvents.StartGameSession(phase);
                    break;

                case "pausesession":
                    if (handler == null)
                    {
                        return;
                    }
                    handler.SessionEvents.PauseSession();
                    break;

                case "continuesession":
                    if (handler == null)
                    {
                        return;
                    }
                    handler.SessionEvents.ContinueSession();
                    break;

                case "endsession":
                    if (handler == null)
                    {
                        return;
                    }
                    handler.SessionEvents.ForceEndGameSession();
                    break;

                case "breakclient":
                    if (handler == null)
                    {
                        return;
                    }
                    if (cmd.Length < 2 || string.IsNullOrEmpty(cmd[1]))
                    {
                        _client.SendMsg("Invalid action: Specify ClientId!");
                        return;
                    }
                    Client.ClientType clientid = (Client.ClientType) int.Parse(cmd[1]);
                    handler.ActiveSession.GetClient(clientid)?.GE.InterruptGame();
                    break;

                case "start":
                    if (handler == null)
                    {
                        return;
                    }
                    handler.SessionEvents.StartGameSession();
                    break;

                case "end":
                    if (handler == null)
                    {
                        return;
                    }
                    handler.SessionEvents.ForceEndGameSession();
                    break;

                case "setsheet":
                    if (handler == null)
                    {
                        return;
                    }
                    handler.SessionEvents.ChangeSpecificSheet(Convert.ToInt32(cmd[1]));
                    break;

                default:
                    break;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #7
0
        public static GameConfig GetGameConfig(Client.ClientType gameType, Config cfg)
        {
            switch (gameType)
            {
            case Client.ClientType.GameStanzen:
                return(new StanzenConfig
                {
                    Timelimit = cfg.Timelimit,
                    NeutralCreditPercentage = 0.5,
                    ActiveSheet = cfg.ActiveSheet,
                    BeltSpeed = 1000
                });

            case Client.ClientType.GamePressen:
                return(new PressenConfig()
                {
                    Timelimit = cfg.Timelimit,
                    NeutralCreditPercentage = 0.5,
                    ActiveSheet = cfg.ActiveSheet,
                    BeltSpeed = 1000
                });

            case Client.ClientType.GameSchweissen:
                return(new SchweissenConfig()
                {
                    Timelimit = cfg.Timelimit,
                    NeutralCreditPercentage = 0.5,
                    ActiveSheet = cfg.ActiveSheet
                });

            case Client.ClientType.GameLogistik:
                return(new LogistikConfig()
                {
                    Timelimit = cfg.Timelimit,
                    ActiveSheet = cfg.ActiveSheet,
                    BeltSpeed = 4000
                });

            case Client.ClientType.GameKontrolle:
                return(new KontrolleConfig()
                {
                    Timelimit = cfg.Timelimit,
                    PotentialErrorRate = 50
                });

            case Client.ClientType.GameKarosseriebau:
                return(new KarosseriefertigungConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            case Client.ClientType.GameEinkauf:
                return(new EinkaufConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            case Client.ClientType.GameMotorbau:
                return(new MotorbauConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            case Client.ClientType.GameLackiererei:
                return(new LackierenConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            case Client.ClientType.GameElektrik:
                return(new ElektrikConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            case Client.ClientType.GameMontage:
                return(new MontageConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            case Client.ClientType.GameSystemueberwachung:
                return(new SystemueberwachungConfig()
                {
                    Timelimit = cfg.Timelimit
                });

            default:
                return(new GameConfig());
            }
        }
Beispiel #8
0
 public Client GetClient(Client.ClientType ctype)
 {
     return(Clients.ContainsKey(ctype) ? Clients[ctype] : null);
 }