Exemplo n.º 1
0
        public void TestBattleLogic()
        {
            ElementEffectivenessService elementEffectivenessService = new ElementEffectivenessService();
            IArenaService arenaService = new ArenaService(elementEffectivenessService);

            _user1.AddCardsToStack(_package);
            _user2.AddCardsToStack(_package);

            _user1.AddCardToDeck("Gandalf");
            _user1.AddCardToDeck("Burul");
            _user1.AddCardToDeck("Balrog");
            _user1.AddCardToDeck("Water Whirl");

            _user2.AddCardToDeck("Erlan Erhice");
            _user2.AddCardToDeck("Burul");
            _user2.AddCardToDeck("Erlan Erhice");
            _user2.AddCardToDeck("Water Whirl");

            arenaService.Battle(_user1, _user2);
            int user1wins = arenaService.Battle(_user1, _user2).Item1;

            Assert.IsTrue((1 == user1wins) || (-1 == user1wins) || (0 == user1wins)); // Test if one of the expected results occur
        }
Exemplo n.º 2
0
        protected override async Task OnInitializedAsync()
        {
            UserName = AppState.UserName;
            if (string.IsNullOrEmpty(UserName))
            {
                var auth = await AuthenticationState.GetAuthenticationStateAsync();

                UserName = auth?.User?.Identity?.Name;
            }
            //Temp for testing
            //var random = new Random();
            //UserName = $"{userName}{random.Next(1, 999)}";
            hubConnection = new HubConnectionBuilder()
                            .WithUrl($"{FunctionBaseUrl}/", options =>
            {
                options.Headers.Add("x-ms-client-principal-id", UserName);
            })
                            .Build();

            hubConnection.On <object>("getAlert", (message) =>
            {
                var encodedMsg = $"{message}";
                Console.WriteLine($"received message: {encodedMsg}");
                Toaster.Add(message.ToString(), MatToastType.Primary);
                messages.Add(message.ToString());
                StateHasChanged();
            });
            hubConnection.On <object>("alertArena", async(message) =>
            {
                var encodedMsg = $"{message}";
                Console.WriteLine($"received Alert: {encodedMsg}");
                var activeArenas = await PublicClient.GetActiveArenas();
                ArenaService.UpdateArenas(activeArenas);
                StateHasChanged();
            });
            hubConnection.On <object>("leaveArena", (message) =>
            {
                var encodedMsg = $"{message}";
                Console.WriteLine($"received message: {encodedMsg}");
                messages.Add(encodedMsg);
                OnNewMessage.InvokeAsync(encodedMsg);
            });
            hubConnection.On <object>("resultAlert", (message) =>
            {
                Console.WriteLine($"'resultAlert' Triggered message: {message}");
                var result    = ArenaResultMessage.FromJson(message.ToString());
                var arenaName = result.Group;
                ArenaService.ArenaComplete(arenaName);
                Console.WriteLine($"'ArenaComplete' values:name: {arenaName} winner {result.DuelWinner} loser: {result.DuelLoser}");
                Toaster.Add(result.Message, MatToastType.Primary);
                messages.Add(result.Message);
            });
            hubConnection.On <object>("resultActual", (arenaObj) =>
            {
                Console.WriteLine("'resultActual' Triggered");
                var encodedMsg = $"{arenaObj}";
                var arenaAlert = ArenaResultMessage.FromJson(arenaObj.ToString());
                messages.Add($"{arenaAlert.DuelWinner} defeated {arenaAlert.DuelLoser} in arena {arenaAlert.Group}");
                Console.WriteLine($"received group message: {encodedMsg}");
                StateHasChanged();
            });
            hubConnection.On <object>("joinAlert", (message) =>
            {
                var encodedMsg = $"{message}";

                var jObj      = JObject.Parse(message.ToString());
                var arenaName = jObj["group"]?.ToString();
                var userJoin  = jObj["user"]?.ToString();
                var arenaText = jObj["message"]?.ToString();
                Console.WriteLine($"'joinAlert' Triggered: {encodedMsg}");
                ArenaService.JoinArena(arenaName, userJoin);
                Toaster.Add(arenaText, MatToastType.Primary);
                StateHasChanged();
            });
            hubConnection.On <object>("showArena", group =>
            {
                Console.WriteLine($"Create arena message received: {group}");
                var jObj = JObject.Parse(group.ToString());

                var user     = jObj["user"]?.ToString();
                var groupobj = jObj["group"]?.ToString();
                var chalObj  = jObj["challenge"]?.ToString();
                Toaster.Add($"User {user} joined Arena: {groupobj} with Challenge: {chalObj}", MatToastType.Info);
                messages.Add($"User {user} joined Arena: {groupobj} with Challenge: {chalObj}");
                StateHasChanged();
            });

            await hubConnection.StartAsync();

            var arenasInit = await PublicClient.GetActiveArenas();

            ArenaService.UpdateArenas(arenasInit);
        }
Exemplo n.º 3
0
        private ArenaService GetArenaService(ApplicationDbContext context)
        {
            var arenaService = new ArenaService(context);

            return(arenaService);
        }