/// <summary> /// Adds follower's as a listener when Start. /// </summary> /// <param name="follower"></param> /// <remarks>To avoid recursion, followe <see cref="DetachOnStart(this Generator source, Generator)"/> the calling generator. </remarks> public static void AttachOnBegin(this ComponentGenerator source, ComponentGenerator follower) { //avoid recursion follower.DetachOnBegin(source); source.OnBeginEventHandler += (e, a) => follower.Begin(); }
/// <summary> /// Attaches follower to genrate event. /// </summary> /// <param name="follower"></param> public static void AttachOnSkipped(this ComponentGenerator source, ComponentGenerator follower) { //avoid recursion follower.DetachOnSkipped(source); source.OnSkippedEventHandler += (e, a) => follower.SkippedGenerate(); }
/// <summary> /// Attachs follower's OnStart, OnStop,OnGenerate, & OnSkip events to own events, /// </summary> /// <param name="follower"></param> public static void Attach(this ComponentGenerator source, ComponentGenerator follower) { AttachOnGenerate(source, follower); AttachOnSkipped(source, follower); AttachOnBegin(source, follower); AttachOnEnd(source, follower); }
private void DrawConditionSection(ComponentGenerator gen) { gen.GenerateConditionType = (GenerationType)EditorGUILayout.EnumPopup("ConditionType", gen.GenerateConditionType); ClearPreviousCondition(gen, PrevConditionType); switch (gen.GenerateConditionType) { case GenerationType.Internal: gen.GenerateCondition = null; break; case GenerationType.External: gen.GenerateCondition = (GeneratorConditionComponent)EditorGUILayout.ObjectField("GenerateCondition", gen.GenerateCondition, typeof(GeneratorConditionComponent), true); EditorGUILayout.Space(); if (gen.GenerateCondition != null) { CreateEditor(gen.GenerateCondition).DrawDefaultInspector(); } break; case GenerationType.Cooldown: CooldownCondition IntervalCond = gen.gameObject.GetComponent <CooldownCondition>() ?? gen.gameObject.AddComponent <CooldownCondition>(); IntervalCond.WaitTime = EditorGUILayout.Slider("Cooldown", IntervalCond.WaitTime, 0, 100); gen.GenerateCondition = IntervalCond; break; } PrevConditionType = gen.GenerateConditionType; }
public ActionResult DisplayGame(Guid moveID, Player orientation) { var game = _context.Games .Include("Turns") .Include("Turns.Moves") .FirstOrDefault(f => f.Turns.Any(a => a.Moves.Any(m => m.ID == moveID))); if (game == null) { Response.StatusCode = 403; return(Content("")); } var move = game.Turns.SelectMany(t => t.Moves).First(f => f.ID == moveID); var viewData = new Dictionary <string, object> { ["playerID"] = GetPlayerID(), ["orientation"] = orientation }; var controller = GameController.FromPosition((Variant)game.Variant, move.ResultingFen); var viewModel = game.ToGameViewModel(); viewModel.Board.GameBoard = controller.Board.GameBoard; viewModel.DisplayingLastMove = move.ID == game.Turns.Last().Moves.OrderBy(a => a.CreatedOn).Last().ID; var board = ComponentGenerator.GetBoard(viewModel, viewData).Replace("[theme]", GetThemeOrDefault().ToString()); return(Content(board)); }
/// <summary> /// Adds follower as listern when stop. /// </summary> /// <param name="follower"></param> public static void AttachOnEnd(this ComponentGenerator source, ComponentGenerator follower) { //avoid recursion follower.DetachOnEnd(source); source.OnEndEventHandler -= (e, a) => follower.End(); }
public Task Handle(OnMoveNotification request, CancellationToken cancellationToken) { var lastMoveDate = _mediator.Send(new GetLastMoveDateMessage(request.ViewModel)).Result; var blackConnection = GetClientConnection(request.ViewModel.BlackPlayerID); var whiteConnection = GetClientConnection(request.ViewModel.WhitePlayerID); if (request.ViewModel.BlackPlayerID != ComputerPlayer.ComputerPlayerID && blackConnection != null) { _signalRHub.Clients.Client(blackConnection).SendAsync("UpdateBoard", request.ViewModel.ID, lastMoveDate, ComponentGenerator.GetBoard(request.ViewModel, GetViewData(request.ViewModel.BlackPlayerID, Player.Black)), ComponentGenerator.GetBoard(request.ViewModel, GetViewData(request.ViewModel.BlackPlayerID, Player.White))); } if (request.ViewModel.WhitePlayerID != ComputerPlayer.ComputerPlayerID && whiteConnection != null) { _signalRHub.Clients.Client(whiteConnection).SendAsync("UpdateBoard", request.ViewModel.ID, lastMoveDate, ComponentGenerator.GetBoard(request.ViewModel, GetViewData(request.ViewModel.WhitePlayerID, Player.Black)), ComponentGenerator.GetBoard(request.ViewModel, GetViewData(request.ViewModel.WhitePlayerID, Player.White))); } _signalRHub.Clients .GroupExcept(request.ViewModel.ID.ToString(), blackConnection, whiteConnection) .SendAsync("UpdateBoard", request.ViewModel.ID, lastMoveDate, ComponentGenerator.GetBoard(request.ViewModel, GetViewData(Guid.Empty, Player.Black)), ComponentGenerator.GetBoard(request.ViewModel, GetViewData(Guid.Empty, Player.White))); return(Task.CompletedTask); }
public Task Handle(OnGameConnectedNotification request, CancellationToken cancellationToken) { var lastMoveDate = _mediator.Send(new GetLastMoveDateMessage(request.ViewModel)).Result; _signalRHub.Clients .Group(request.ViewModel.ID.ToString()) .SendAsync("UpdateMoves", request.ViewModel.ID, lastMoveDate, ComponentGenerator.GetMoveControl(request.ViewModel.Turns)); return(Task.CompletedTask); }
private static IHtmlContent BuildHint(ComponentGenerator generator, OptionsJson.Hint options) { var content = TextOrHtmlHelper.GetHtmlContent(options.Text, options.Html); var attributes = options.Attributes.ToAttributesDictionary() .MergeAttribute("class", options.Classes); return(generator.GenerateHint(options.Id, content, attributes)); }
public static void GeneratorComponent(ECSContextConfig config) { string folder = Path.Combine(config.DirectoryPath, "Generates"); GeneratorFolder generatorFolder = new GeneratorFolder(folder, "cs"); ComponentGenerator componentGenerator = new ComponentGenerator(config); componentGenerator.Gen(generatorFolder); generatorFolder.WriteFile(); }
private void CreateAlumno_Click(object sender, RoutedEventArgs e) { var selectedDate = FechaNacmimiento.Value.Value; var numExpediente = TxtNumExpediente.Text; var nia = TxtNIA.Text; var curso = (Curso)ComboBoxCurso.SelectedValue; Notification.CreateNotification(ComponentGenerator.GetInstance().CreateAlumno(SelectedPersona, numExpediente, nia, selectedDate, curso)); }
/// <summary> /// Attaches follower to genrate event. /// </summary> /// <param name="follower"></param> public static void AttachOnGenerate(this ComponentGenerator source, ComponentGenerator follower) { //avoid recursion follower.DetachOnGenerate(source); //avoid duplicate DetachOnGenerate(source, follower); source.OnGenerateEventHandler += (e, a) => follower.Generate(); }
private void Create_Click(object sender, RoutedEventArgs e) { var cod = TxtCod.Text; var nombre = TxtNombre.Text; var rama = TxtBranch.Text; var msg = ComponentGenerator.GetInstance().CreateAsignatura(cod, nombre, rama); Notification.CreateNotification(msg); }
private void CreatePersona_Click(object sender, RoutedEventArgs e) { var dni = TxtDNI.Text; var nif = TxtNIF.Text; var nombre = TxtNombre.Text; var apellidos = TxtApellidos.Text; var email = TxtEmail.Text; var calle = TxtCalle.Text; var patio = TxtPatio.Text; var piso = TxtPiso.Text; var puerta = TxtPuerta.Text; var codigoPostal = TxtCodigoPostal.Text; var provincia = TxtProvincia.Text; var localidad = TxtLocalidad.Text; if (string.IsNullOrWhiteSpace(dni)) { Notification.CreateNotification("El campo DNI es obligatorio"); return; } else if (string.IsNullOrWhiteSpace(nif)) { Notification.CreateNotification("El campo NIF es obligatorio"); return; } else if (string.IsNullOrWhiteSpace(nombre)) { Notification.CreateNotification("El campo Nombre es obligatorio"); return; } else if (string.IsNullOrWhiteSpace(apellidos)) { Notification.CreateNotification("El campo Apellidos es obligatorio"); return; } else if (string.IsNullOrWhiteSpace(email)) { Notification.CreateNotification("El campo Email es obligatorio"); return; } else if (string.IsNullOrWhiteSpace(calle) || string.IsNullOrWhiteSpace(patio) || string.IsNullOrWhiteSpace(piso) || string.IsNullOrWhiteSpace(puerta) || string.IsNullOrWhiteSpace(codigoPostal) || string.IsNullOrWhiteSpace(provincia) || string.IsNullOrWhiteSpace(localidad)) { Notification.CreateNotification("Se ha de rellenar la dirección completa."); return; } Notification.CreateNotification(ComponentGenerator.GetInstance().CreatePersona(dni, nif, nombre, apellidos, email, calle, patio, piso, puerta, codigoPostal, FechaNacmimiento.Value.Value, provincia, localidad)); }
private void Create_Click(object sender, RoutedEventArgs e) { var cod = TxtCod.Text; var nombre = TxtNombre.Text; var fechaMatriculacion = TxtDate.Value; var turnoTarde = TxtShift.IsChecked.Value; string msg = ComponentGenerator.GetInstance().CreateCurso(cod, nombre, fechaMatriculacion, turnoTarde); Notification.CreateNotification(msg); }
public ActionResult Join(Guid id) { var playerID = GetPlayerID(); if (!playerID.HasValue) { Response.StatusCode = 403; return(Content("")); } var game = _context.Games.FirstOrDefault(f => f.ID == id); if (game.BlackPlayerID != Guid.Empty && game.WhitePlayerID != Guid.Empty || game.BlackPlayerID == playerID || game.WhitePlayerID == playerID) { Response.StatusCode = 403; return(Content("")); } if (game.BlackPlayerID == Guid.Empty) { game.BlackPlayerID = playerID.Value; } else if (game.WhitePlayerID == Guid.Empty) { game.WhitePlayerID = playerID.Value; } game.RowVersion = DateTime.Now; try { _context.SaveChanges(); var gameViewModel = game.ToGameViewModel(); _mediator.Publish(new OnGameJoinedNotification(gameViewModel, playerID.Value)).Wait(); var viewData = new Dictionary <string, object> { ["playerID"] = playerID, ["orientation"] = game.BlackPlayerID == playerID ? Player.Black : Player.White, }; var board = ComponentGenerator.GetBoard(gameViewModel, viewData).Replace("[theme]", GetThemeOrDefault().ToString()); return(Content(board)); } catch (DbUpdateConcurrencyException) { _signalRHub.Clients.All.SendAsync("AddClass", "join", "hide"); Response.StatusCode = 403; return(Content(Resources.Resources.GameJoined)); } }
private static IHtmlContent BuildLabel(ComponentGenerator generator, OptionsJson.Label options) { var content = TextOrHtmlHelper.GetHtmlContent(options.Text, options.Html); var attributes = options.Attributes.ToAttributesDictionary() .MergeAttribute("class", options.Classes); return(generator.GenerateLabel( options.For, options.IsPageHeading ?? ComponentGenerator.LabelDefaultIsPageHeading, content, attributes)); }
private void Create_Click(object sender, RoutedEventArgs e) { var selectedCurso = (Curso)ComboBoxCurso.SelectedValue; var selectedAsignatura = (Asignatura)ComboBoxAsignatura.SelectedValue; var asignaturaCodText = selectedAsignatura.Cod; var horaInicio = TxtHoraInicio.Value.Value; var horaFinal = TxtHoraFinal.Value.Value; var day = (byte)((WeekEnum)ComboBoxDia.SelectedValue); Notification.CreateNotification(ComponentGenerator.GetInstance().CreateHorario(selectedCurso, selectedAsignatura, horaInicio, horaFinal, day)); }
private void ClearPreviousCondition(ComponentGenerator gen, GenerationType prevConditionType) { if (prevConditionType == gen.GenerateConditionType || prevConditionType == GenerationType.Internal) { return; } gen.GenerateCondition = null; switch (prevConditionType) { case GenerationType.Cooldown: DestroyImmediate(gen.gameObject.GetComponent <CooldownCondition>()); break; } }
public override void OnInspectorGUI() { DrawDefaultInspector(); EditorGUILayout.Space(); EditorGUILayout.LabelField(target.name + " Generator Settings", EditorStyles.boldLabel); ComponentGenerator gen = ((ComponentGenerator)target); //gen.IsGenerating = EditorGUILayout.Toggle("IsGenerating", gen.IsGenerating); //gen.Delta = EditorGUILayout.PropertyField(); DrawTerminatorSection(gen); DrawConditionSection(gen); }
private void DrawTerminatorSection(ComponentGenerator gen) { gen.TerminatorType = (TerminationType)EditorGUILayout.EnumPopup("TerminatorType", gen.TerminatorType); ClearPreviousTerminators(gen, PrevTerminationType); switch (gen.TerminatorType) { case TerminationType.Internal: gen.Terminator = null; break; case TerminationType.External: gen.Terminator = (GeneratorTerminatorComponent)EditorGUILayout.ObjectField("Terminator", gen.Terminator, typeof(GeneratorTerminatorComponent), true); EditorGUILayout.Space(); if (gen.Terminator != null) { try { CreateEditor(gen.Terminator).DrawDefaultInspector(); } catch (NullReferenceException) { //is ok. just don't draw it. } } break; case TerminationType.Duration: DurationTerminator TimedTermnator = gen.gameObject.GetComponent <DurationTerminator>() ?? gen.gameObject.AddComponent <DurationTerminator>(); TimedTermnator.Duration = EditorGUILayout.FloatField("Duration", TimedTermnator.Duration); gen.Terminator = TimedTermnator; break; case TerminationType.Counter: CountTerminator CountTerminator = gen.gameObject.GetComponent <CountTerminator>() ?? gen.gameObject.AddComponent <CountTerminator>(); CountTerminator.MaxGeneration = EditorGUILayout.IntField("Max Count", CountTerminator.MaxGeneration); gen.Terminator = CountTerminator; break; case TerminationType.OnSkip: SkippedTerminator SkipTerminator = gen.gameObject.GetComponent <SkippedTerminator>() ?? gen.gameObject.AddComponent <SkippedTerminator>(); gen.Terminator = SkipTerminator; break; } PrevTerminationType = gen.TerminatorType; }
private static IHtmlContent BuildErrorMessage(ComponentGenerator generator, OptionsJson.ErrorMessage options) { var visuallyHiddenText = options.VisuallyHiddenText switch { bool flag when flag == false => string.Empty, string str => str, _ => ComponentGenerator.ErrorMessageDefaultVisuallyHiddenText }; var content = TextOrHtmlHelper.GetHtmlContent(options.Text, options.Html); var attributes = options.Attributes.ToAttributesDictionary() .MergeAttribute("class", options.Classes) .MergeAttribute("id", options.Id); return(generator.GenerateErrorMessage(visuallyHiddenText, content, attributes)); } }
private void ClearPreviousTerminators(ComponentGenerator gen, TerminationType prev) { if (prev == gen.TerminatorType || prev == TerminationType.Internal) { return; } gen.Terminator = null; switch (prev) { case TerminationType.Duration: DestroyImmediate(gen.gameObject.GetComponent <DurationTerminator>()); break; case TerminationType.Counter: DestroyImmediate(gen.gameObject.GetComponent <CountTerminator>()); break; case TerminationType.OnSkip: DestroyImmediate(gen.gameObject.GetComponent <SkippedTerminator>()); break; } }
public override void OnInspectorGUI() { DrawDefaultInspector(); EditorGUILayout.Space(); if (showChildInspecter = EditorGUILayout.Toggle("Show Wrapped Inspector", showChildInspecter)) { ComponentGenerator gen = ((GeneratorWrap)target).Wrapped; if (gen == null) { EditorGUILayout.LabelField("Wrap not set"); } else { EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("'" + gen.name + "' Inspector", EditorStyles.boldLabel); Editor drawer = CreateEditor(gen); drawer.OnInspectorGUI(); } } }
/// <summary> /// Removes follower from on genrate event list. /// </summary> /// <param name="follower"></param> public static void DetachOnSkipped(this ComponentGenerator source, ComponentGenerator follower) { source.OnSkippedEventHandler -= (e, a) => follower.SkippedGenerate(); }
/// <summary> /// Removes follower from Stop event list. /// </summary> /// <param name="follower"></param> public static void DetachOnEnd(this ComponentGenerator source, ComponentGenerator follower) { source.OnEndEventHandler -= (e, a) => follower.End(); }
public static ComponentGenerator Get() { if (_cgen == null) _cgen = new ComponentGenerator(); return _cgen; }
public ComponentTests() { _componentGenerator = new ComponentGenerator(); }