示例#1
0
        public DatadogRoutine(
            AccountService accounts,
            AchievementEvents achievements,
            IAsyncEventingExecutor <IDiscordMessage> commandPipeline,
            Config config,
            IDiscordClient discordClient)
        {
            if (string.IsNullOrWhiteSpace(config.DatadogHost))
            {
                Log.Warning("Metrics are not being collected");
                return;
            }

            DogStatsd.Configure(new StatsdConfig
            {
                StatsdServerName = config.DatadogHost,
                StatsdPort       = 8125,
                Prefix           = "miki"
            });

            CreateAchievementsMetrics(achievements);
            CreateAccountMetrics(accounts);
            CreateEventSystemMetrics(commandPipeline);
            CreateDiscordMetrics(discordClient);
            Log.Message("Datadog set up!");
        }
示例#2
0
        public AccountsModule(
            MikiApp app,
            Config config,
            IDiscordClient discordClient,
            AccountService accountsService,
            AchievementService achievementService,
            AchievementEvents achievementEvents,
            TransactionEvents transactionEvents)
        {
            this.app = app;
            this.achievementService = achievementService;
            this.discordClient      = discordClient;
            if (!string.IsNullOrWhiteSpace(config.ImageApiUrl))
            {
                client = new HttpClient(config.ImageApiUrl);
            }
            else
            {
                Log.Warning("Image API can not be loaded in AccountsModule");
            }

            discordClient.Events.MessageCreate.SubscribeTask(OnMessageCreateAsync);

            accountsService.OnLocalLevelUp          += OnUserLevelUpAsync;
            accountsService.OnLocalLevelUp          += OnLevelUpAchievementsAsync;
            transactionEvents.OnTransactionComplete += CheckCurrencyAchievementUnlocksAsync;

            achievementEvents.OnAchievementUnlocked
            .SubscribeTask(SendAchievementNotificationAsync);
            achievementEvents.OnAchievementUnlocked
            .SubscribeTask(CheckAchievementUnlocksAsync);
        }
示例#3
0
 public AchievementService(
     IUnitOfWork unitOfWork,
     AchievementCollection achievementCollection,
     IRepositoryFactory <Achievement> factory,
     AchievementEvents events)
 {
     this.achievementCollection = achievementCollection;
     this.unitOfWork            = unitOfWork;
     this.events = events;
     repository  = unitOfWork.GetRepository(factory);
 }
示例#4
0
        private (AchievementService, AchievementEvents) NewService(IUnitOfWork work = null)
        {
            var collection = new AchievementCollection();

            collection.AddAchievement(new AchievementObject.Builder("test").Add("x").Build());
            var events = new AchievementEvents();

            return(new AchievementService(
                       work ?? NewContext(),
                       collection,
                       new AchievementRepository.Factory(),
                       events), events);
        }
示例#5
0
 public void Initialize()
 {
     ModerationEvents.Register();
     AchievementEvents.Register();
     GroupEvents.Register();
     CatalogEvents.Register();
     CameraEvents.Register();
     UserEvents.Register();
     RoomEvents.Register();
     LandingEvents.Register();
     NavigatorEvents.Register();
     CraftingEvents.Register();
     GameCenterEvents.Register();
     MiscEvents.Register();
 }
示例#6
0
        private void CreateAchievementsMetrics(AchievementEvents events)
        {
            if (events == null)
            {
                return;
            }

            events.OnAchievementUnlocked.Subscribe((response) =>
            {
                DogStatsd.Increment(
                    "achievements.gained", tags: new[]
                {
                    $"achievement:{response.Item1.ResourceName}"
                });
            });
        }
示例#7
0
 /**
  * Awake is called when the script instance is being loaded.
  */
 private void Awake()
 {
     aEvents = this;
 }