Example #1
0
        /// <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();
        }
Example #2
0
        /// <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();
        }
Example #3
0
 /// <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);
 }
Example #4
0
        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));
        }
Example #6
0
        /// <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();
        }
Example #7
0
        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));
        }
Example #10
0
    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();
    }
Example #11
0
        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));
        }
Example #12
0
        /// <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();
        }
Example #13
0
        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);
        }
Example #14
0
        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));
        }
Example #15
0
        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));
        }
Example #18
0
        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));
        }
Example #19
0
        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;
            }
        }
Example #20
0
        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);
        }
Example #21
0
        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));
        }
    }
Example #23
0
        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;
            }
        }
Example #24
0
    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();
            }
        }
    }
Example #25
0
 /// <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();
 }
Example #26
0
 /// <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();
 }