예제 #1
0
    //seek and roam becomes more important for enemy classes
    public Enemy(GameObject gameObject, Vector2 initialPosition) : base(gameObject, initialPosition)
    {
        boxCollider2D      = gameObject.GetComponent <BoxCollider2D>();
        boxCollider2D.size = new Vector2(4, 4);
        TriggerDispatcher dispatcher = gameObject.GetComponent <TriggerDispatcher>();

        Component.Destroy(dispatcher);
        gameObject.layer = LayerMask.NameToLayer("enemy");
        enemyType        = gameObject.name;
        spriteRenderer.sortingLayerName = "enemy";
    }
예제 #2
0
    public Bullet3(GameObject gameObject, Vector2 initialPosition) : base(gameObject, initialPosition)
    {
        life = 1.5f;
        TriggerDispatcher dispatcher = gameObject.GetComponent <TriggerDispatcher>();

        Component.Destroy(dispatcher);
        string textureName = GameManager.BULLET3.ToLower();
        Sprite sprite      = Sprite.Create(GameManager.Instance.textureManager.PackedTexture, GameManager.Instance.textureManager.GetTextureRectByName(textureName), new Vector2(0.5f, 0.5f), 1);

        spriteRenderer.sprite = sprite;
        speed = 650;
    }
예제 #3
0
        private static async Task MainAsync(string[] args)
        {
            var sc = CommonInitialize.Main();

            // Initialize the ASP.NET service provider and freeze this Task indefinitely.
            await using var services = ConfigureServices(sc);
            await CommonInitialize.ConfigureServicesAsync(services);

            var client          = services.GetRequiredService <DiscordSocketClient>();
            var db              = services.GetRequiredService <IDbService>();
            var censusEvents    = services.GetRequiredService <CensusEventService>();
            var mute            = services.GetRequiredService <MuteService>();
            var roleRemover     = services.GetRequiredService <TimedRoleManager>();
            var ffLogs          = services.GetRequiredService <FFLogsClient>();
            var web             = services.GetRequiredService <WebClient>();
            var lodestone       = services.GetRequiredService <CharacterLookup>();
            var keepClean       = services.GetRequiredService <KeepClean>();
            var ephemeralPinner = services.GetRequiredService <EphemeralPinManager>();
            var templates       = services.GetRequiredService <ITemplateProvider>();

            keepClean.Initialize();
            roleRemover.Initialize();
            ephemeralPinner.Initialize();
            await ffLogs.Initialize();

            client.ReactionAdded += (message, channel, reaction)
                                    => ReactionReceived.HandlerAdd(client, db, lodestone, message, channel, reaction);
            client.ReactionRemoved += (message, channel, reaction)
                                      => ReactionReceived.HandlerRemove(db, message, channel, reaction);

            client.ReactionAdded += (message, _, reaction)
                                    => VoteReactions.HandlerAdd(client, db, message, reaction);

            client.MessageDeleted  += (message, channel) => AuditDeletion.Handler(db, client, message, channel);
            client.MessageReceived += message => ChatCleanup.Handler(db, web, templates, message);

            client.MessageReceived += message => MessageCache.Handler(db, message);
            client.MessageReceived += message => TriggerDispatcher.Handler(client, message);

            client.UserJoined += user => WelcomeCard.Handler(client, templates, user);

            client.GuildMemberUpdated += censusEvents.GuildMemberUpdated;

            client.UserVoiceStateUpdated += mute.OnVoiceJoin;

            client.ButtonExecuted += component => Modmail.Handler(db, component);

            Log.Information("Prima.Stable logged in!");

            await Task.Delay(-1);
        }
        public async Task TriggerDispatcher_Dispatch_NothingToExecute()
        {
            var recipeManager = new Mock <IRecipeManager>();

            recipeManager.Setup(manager => manager.GetRecipes(It.IsAny <RecipesQuery>()))
            .ReturnsAsync(new List <Recipe>()
            {
                new Recipe()
                {
                    RecipeTrigger = new RecipeTrigger()
                    {
                        TriggerId = new TestTrigger().Id,
                        DataJson  = "{}"
                    }
                }
            });

            var logger           = new Mock <ILogger <TriggerDispatcher> >();
            var actionDispatcher = new Mock <IActionDispatcher>();

            //no handlers available
            var triggerDispatcher =
                new TriggerDispatcher(new List <ITriggerHandler>(), recipeManager.Object, actionDispatcher.Object,
                                      logger.Object);


            await triggerDispatcher.DispatchTrigger(new TestTrigger()
            {
                DataJson = "{}"
            });

            actionDispatcher.Verify(
                dispatcher => dispatcher.Dispatch((Dictionary <string, (object data, string json)>)It.IsAny <object>(),
                                                  It.IsAny <RecipeAction>()),
                Times.Never);
        }
        public async Task TriggerDispatcher_Dispatch_ExecuteActionDispatcher()
        {
            var recipeManager = new Mock <IRecipeManager>();

            recipeManager.Setup(manager => manager.GetRecipes(It.IsAny <RecipesQuery>()))
            .ReturnsAsync(new List <Recipe>()
            {
                new Recipe()
                {
                    RecipeTrigger = new RecipeTrigger()
                    {
                        TriggerId = new TestTrigger().Id,
                        DataJson  = "{}"
                    },
                    RecipeActions = new List <RecipeAction>()
                    {
                        new RecipeAction()
                    }
                }
            });

            var logger           = new Mock <ILogger <TriggerDispatcher> >();
            var actionDispatcher = new Mock <IActionDispatcher>();

            var triggerHandler = new Mock <ITriggerHandler>();

            triggerHandler.Setup(handler => handler.GetData(It.IsAny <ITrigger>())).ReturnsAsync("hohoho");
            triggerHandler.Setup(handler => handler.IsTriggered(It.IsAny <ITrigger>(), It.IsAny <RecipeTrigger>()))
            .ReturnsAsync(true);

            var triggerHandler2 = new Mock <ITriggerHandler>();

            triggerHandler2.Setup(handler => handler.GetData(It.IsAny <ITrigger>())).ThrowsAsync(new Exception());
            triggerHandler2.Setup(handler => handler.IsTriggered(It.IsAny <ITrigger>(), It.IsAny <RecipeTrigger>()))
            .ReturnsAsync(true);

            var triggerHandler3 = new Mock <ITriggerHandler>();

            triggerHandler3.Setup(handler => handler.GetData(It.IsAny <ITrigger>())).ReturnsAsync("hohoho");
            triggerHandler3.Setup(handler => handler.IsTriggered(It.IsAny <ITrigger>(), It.IsAny <RecipeTrigger>()))
            .ThrowsAsync(new Exception());

            var triggerDispatcher =
                new TriggerDispatcher(
                    new List <ITriggerHandler>()
            {
                triggerHandler.Object, triggerHandler2.Object, triggerHandler3.Object
            },
                    recipeManager.Object, actionDispatcher.Object,
                    logger.Object);


            await triggerDispatcher.DispatchTrigger(new TestTrigger()
            {
                DataJson = "{}"
            });

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));

            while (!cts.IsCancellationRequested)
            {
                try
                {
                    actionDispatcher.Verify(
                        dispatcher => dispatcher.Dispatch(new Dictionary <string, (object data, string json)>(),
                                                          It.IsAny <RecipeAction>()),
                        Times.Once);
                    break;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
예제 #6
0
        public async Task TriggerDispatcher_Dispatch_ExecuteActionDispatcher()
        {
            var recipeManager = new Mock <IRecipeManager>();

            recipeManager.Setup(manager => manager.GetRecipes(It.IsAny <RecipesQuery>()))
            .ReturnsAsync(new List <Recipe>()
            {
                new Recipe()
                {
                    RecipeTrigger = new RecipeTrigger()
                    {
                        TriggerId = new TestTrigger().Id,
                        DataJson  = "{}"
                    },
                    RecipeActions = new List <RecipeAction>()
                    {
                        new RecipeAction()
                    }
                }
            });

            var logger           = new Mock <ILogger <TriggerDispatcher> >();
            var actionDispatcher = new Mock <IActionDispatcher>();
            var triggerHandler   = new Mock <ITriggerHandler>();

            triggerHandler.Setup(handler => handler.GetData(It.IsAny <ITrigger>())).ReturnsAsync("hohoho");
            triggerHandler.Setup(handler => handler.IsTriggered(It.IsAny <ITrigger>(), It.IsAny <RecipeTrigger>()))
            .ReturnsAsync(true);

            var triggerHandler2 = new Mock <ITriggerHandler>();

            triggerHandler2.Setup(handler => handler.GetData(It.IsAny <ITrigger>())).ThrowsAsync(new Exception());
            triggerHandler2.Setup(handler => handler.IsTriggered(It.IsAny <ITrigger>(), It.IsAny <RecipeTrigger>()))
            .ReturnsAsync(true);

            var triggerHandler3 = new Mock <ITriggerHandler>();

            triggerHandler3.Setup(handler => handler.GetData(It.IsAny <ITrigger>())).ReturnsAsync("hohoho");
            triggerHandler3.Setup(handler => handler.IsTriggered(It.IsAny <ITrigger>(), It.IsAny <RecipeTrigger>()))
            .ThrowsAsync(new Exception());

            var triggerDispatcher =
                new TriggerDispatcher(
                    new List <ITriggerHandler>()
            {
                triggerHandler.Object, triggerHandler2.Object, triggerHandler3.Object
            },
                    recipeManager.Object, actionDispatcher.Object,
                    logger.Object);


            await triggerDispatcher.DispatchTrigger(new TestTrigger()
            {
                DataJson = "{}"
            });


            actionDispatcher.Verify(
                dispatcher => dispatcher.Dispatch(new Dictionary <string, (object data, string json)>(),
                                                  It.IsAny <RecipeAction>()),
                Times.Once);
            logger.Verify(
                logger1 => logger1.Log(LogLevel.Error, It.IsAny <EventId>(), It.IsAny <FormattedLogValues>(),
                                       It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()), Times.Exactly(2));
        }