/// <summary>
        /// Listen to local event and send it to the server if needed
        /// (ex: listen to game invitation)
        /// </summary>
        public void HandleOnlineEvent(IEvent localEvent)
        {
            var sessionEvent = localEvent as AbstractSessionEvent;

            if (sessionEvent != null && !sessionEvent.SendToServer)
            {
                var invitation = sessionEvent as InvitationEvent;

                // Can't receive invitation if already in game
                if (invitation != null)
                {
                    if (invitation.InvitedPlayerId == Profile.Instance.CurrentProfile.UserHashId && !StateManager.Instance.IsGameRunning())
                    {
                        try
                        {
                            var context         = new GameInvitationViewModel(invitation);
                            var invitationPopup = new GameInvitation(context);
                            invitationPopup.ShowDialog();
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Received a game that does not exist");
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// This method creates a new game invitation
        /// </summary>
        /// <param name="u"></param>
        /// <param name="invitedUsers"></param>
        /// <returns></returns>
        public static void CreateNewInvitation(User u, String[] invitedUsers, GameContext gc)
        {
            var   invitation = new GameInvitation();
            Board b          = gc.CreateNewGameBoard(u, invitedUsers.Length, 20);

            invitation.Board    = b;
            invitation.UserName = u.UserName;

            User invitedUser1 = gc.GetUser(invitedUsers[0]);
            User invitedUser2 = gc.GetUser(invitedUsers[1]);
            User invitedUser3 = gc.GetUser(invitedUsers[2]);

            if (invitedUser1 != null)
            {
                invitation.InvitedUser1 = invitedUser1;
            }
            if (invitedUser2 != null)
            {
                invitation.InvitedUser2 = invitedUser2;
            }
            if (invitedUser3 != null)
            {
                invitation.InvitedUser3 = invitedUser3;
            }

            gc.GameInvitations.Add(invitation);
        }
Exemple #3
0
        public static GameInvitation getGameInvitation(User u, User invitedUser1, User invitedUser2, User invitedUser3, GameContext gc)
        {
            GameInvitation gi = gc.GameInvitations.Where(g => g.UserName.Equals(u.UserName) && g.InvitedUser1.Equals(invitedUser1) &&
                                                         g.InvitedUser2.Equals(invitedUser2) && g.InvitedUser3.Equals(invitedUser3)).SingleOrDefault();

            return(gi);
        }
        public IActionResult Index(string email)
        {
            var gameInvitation = new GameInvitation
            {
                InvitedBy = email
            };

            return(View(gameInvitation));
        }
Exemple #5
0
        private void SendGameInvitationEvent()
        {
            GameInvitation gi = new GameInvitation()
            {
                InvitingPlayerId = _quoridorService.MyId
            };

            _quoridorService.SendGameEvent(_quoridorService.MyId.ToString(), gi);
        }
Exemple #6
0
        /// <summary>
        /// This method will delete the GameInvitation if all invitedUsers have responded to the request.
        /// Will also delete the board if all users have declined
        /// </summary>
        /// <param name="gi"></param>
        public static void DeleteInvitation(GameInvitation gi, GameContext gc)
        {
            if ((gi.InvitedUser1.Equals(null)) && (gi.InvitedUser2.Equals(null)) && (gi.InvitedUser3.Equals(null)))
            {
                if (gi.Board.BoardUsers.Count == 1)
                {
                    gc.Boards.Remove(gi.Board);
                }

                gc.GameInvitations.Remove(gi);
            }
            gc.SaveChanges();
        }
    public void OnReceiveGameInvitation(string _userName, string _userID, string _roomName)
    {
        GameObject     newInvit       = Instantiate(prefabsGameInvitation, GameInvitationList);
        GameInvitation gameInvitation = newInvit.GetComponent <GameInvitation>();

        gameInvitation.lobbyPhotonController = this;
        gameInvitation.userName = _userName;
        gameInvitation.userId   = _userID;
        gameInvitation.roomName = _roomName;
        invitationCount++;

        GameInvitationCount.SetActive(true);
        GameInvitationCountText.text = invitationCount.ToString();
    }
Exemple #8
0
        public ActionResult DeclineGameInvitation(String username, String invitedUser1, String invitedUser2, String invitedUser3)
        {
            User current = gc.getUserFromIdentity(User);
            User u       = gc.GetUser(username);
            User u1      = gc.GetUser(invitedUser1);
            User u2      = gc.GetUser(invitedUser2);
            User u3      = gc.GetUser(invitedUser3);

            GameInvitation gi = GameInvitationLogic.getGameInvitation(u, u1, u2, u3, gc);

            GameInvitationLogic.DeclineInvitation(current, gi, gc);

            return(RedirectToAction("Friends"));
        }
Exemple #9
0
        /// <summary>
        /// This method allows a User to decline a specific invitation
        /// </summary>
        /// <param name="i"></param>
        /// <param name="u"></param>
        public static void DeclineInvitation(User u, GameInvitation gi, GameContext gc)
        {
            if (gi.InvitedUser1.Equals(u))
            {
                gi.InvitedUser1 = null;
            }
            else if (gi.InvitedUser2.Equals(u))
            {
                gi.InvitedUser2 = null;
            }
            else if (gi.InvitedUser3.Equals(u))
            {
                gi.InvitedUser3 = null;
            }

            DeleteInvitation(gi, gc);
            gc.SaveChanges();
        }
Exemple #10
0
        /// <summary>
        /// This method allows a User to accept a specific invitation
        /// </summary>
        /// <param name="i"></param>
        /// <param name="u"></param>
        public static void AcceptInvitation(User u, GameInvitation gi, GameContext gc)
        {
            if (gi.InvitedUser1.Equals(u))
            {
                gi.InvitedUser1 = null;
            }
            else if (gi.InvitedUser2.Equals(u))
            {
                gi.InvitedUser2 = null;
            }
            else if (gi.InvitedUser3.Equals(u))
            {
                gi.InvitedUser3 = null;
            }

            gc.AddPlayerToBoard(u, gi.Board);
            DeleteInvitation(gi, gc);
            gc.SaveChanges();
        }
    public void RespondToGameInvitation(bool accept, GameInvitation invit)
    {
        invitationCount--;
        if (invitationCount < 1)
        {
            GameInvitationCount.SetActive(false);
        }
        else
        {
            GameInvitationCountText.text = invitationCount.ToString();
        }

        if (accept)
        {
            PhotonNetwork.LeaveRoom();
            joinFriend = true;
            roomToJoin = invit.roomName;
            Debug.Log("accept invitation roomName:" + invit.roomName);
        }
        Destroy(invit.gameObject);
    }
 public IActionResult Index(GameInvitation gameInvitation)
 {
     return(Content(stringLocalizer["GameInvitationConfirmationMessage", gameInvitation.EmailTo]));
 }