public void SendToClient(Client.ClientType ctype, string msg) { if (Clients.ContainsKey(ctype)) { Clients[ctype].SendMsg(msg); } }
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); }
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); }
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"); } }
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; } }
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()); } }
public Client GetClient(Client.ClientType ctype) { return(Clients.ContainsKey(ctype) ? Clients[ctype] : null); }