예제 #1
0
        private bool CheckVersion()
        {
            if (!Master.VERSION_CHECKED)
            {
                string   sResponse = WebCommunications.SendGetRequest(Master.GetBaseURL() + Master.GetServerURL() + "RequiredAppVersion", true);
                XElement pResponse = Master.ReadResponse(sResponse);

                if (pResponse.Element("Text").Value != Master.APP_VERSION)
                {
                    var pBuilder = new AlertDialog.Builder(this);
                    pBuilder.SetMessage("You have an outdated version of this app. Please reinstall the app from http://digitalwarriorlabs.com/games/game_clans\n(" + Master.APP_VERSION + " -> " + pResponse.Element("Text").Value + ")");
                    pBuilder.SetPositiveButton("Ok", (e, s) =>
                    {
                        //Intent pBrowserIntent = new Intent(this, Intent.ActionView, new Uri("http://digitalwarriorlabs.com/games/game_clans"));
                        Intent pBrowserIntent = new Intent(Intent.ActionView, Android.Net.Uri.Parse("http://digitalwarriorlabs.com/games/game_clans"));
                        StartActivity(pBrowserIntent);
                        System.Environment.Exit(0);
                    });
                    pBuilder.SetNegativeButton("Cancel", (e, s) => { System.Environment.Exit(0); });
                    pBuilder.Show();
                    return(false);
                }
            }
            return(true);
        }
예제 #2
0
        private void RefreshGameList()
        {
            string   sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "ListActiveGames", Master.BuildCommonBody(), true);
            XElement pResponse = Master.ReadResponse(sResponse);

            List <string> lGames     = new List <string>();
            List <string> lGameIDs   = new List <string>();
            List <string> lGameNames = new List <string>();
            List <string> lDisplay   = new List <string>();

            if (pResponse.Element("Data").Element("Games") != null)
            {
                foreach (XElement pGame in pResponse.Element("Data").Element("Games").Elements("Game"))
                {
                    lGameIDs.Add(pGame.Value);
                    lGames.Add(pGame.Attribute("GameType").Value);
                    lGameNames.Add(pGame.Attribute("GameName").Value);

                    lDisplay.Add(pGame.Attribute("GameName").Value + " (" + pGame.Attribute("GameType").Value + ")");
                }
            }

            ListView pGamesList = FindViewById <ListView>(Resource.Id.gamesList);

            pGamesList.Adapter = new DrawerItemCustomAdapter(this, Resource.Layout.ListViewItemRow, lDisplay.ToArray());

            pGamesList.ItemClick += (object sender, Android.Widget.AdapterView.ItemClickEventArgs e) =>
            {
                int iChoice = e.Position;

                Intent pIntent = null;
                if (lGames[iChoice] == "Zendo")
                {
                    pIntent = new Intent(this, (new ZendoActivity()).Class);
                }
                pIntent.SetAction(lGameIDs[iChoice]);
                pIntent.PutExtra("GameName", lGameNames[iChoice]);
                this.Finish();
                StartActivity(pIntent);
            };
        }
예제 #3
0
        private void BuildHomeDashboard()
        {
            // get the scoreboard from the server
            string   sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetClanLeaderboard", Master.BuildCommonBody(), true);
            XElement pResponse = Master.ReadResponse(sResponse);

            // build the scoreboard
            if (pResponse.Element("Data").Element("Leaderboard") != null)
            {
                XElement pLeaderboard = pResponse.Element("Data").Element("Leaderboard");

                TextView pMyUser  = FindViewById <TextView>(Resource.Id.lblMyStatsName);
                TextView pMyScore = FindViewById <TextView>(Resource.Id.lblMyStatsScore);
                TextView pMyPlace = FindViewById <TextView>(Resource.Id.lblMyStatsPlace);

                pMyUser.Text  = Master.GetActiveUserName();
                pMyScore.Text = pLeaderboard.Attribute("Score").Value;
                pMyPlace.Text = pLeaderboard.Attribute("Place").Value;

                LinearLayout pScoreboardLayout = FindViewById <LinearLayout>(Resource.Id.lstScoreBoard);
                pScoreboardLayout.RemoveAllViews();

                foreach (XElement pScoreXml in pLeaderboard.Elements("Score"))
                {
                    View pScoreRow = LayoutInflater.From(this).Inflate(Resource.Layout.ScoreRow, pScoreboardLayout, false);

                    TextView pUser  = pScoreRow.FindViewById <TextView>(Resource.Id.lblScoreName);
                    TextView pPlace = pScoreRow.FindViewById <TextView>(Resource.Id.lblScorePlace);
                    TextView pScore = pScoreRow.FindViewById <TextView>(Resource.Id.lblScoreScore);

                    pUser.Text  = pScoreXml.Attribute("User").Value;
                    pPlace.Text = pScoreXml.Attribute("Place").Value;
                    pScore.Text = pScoreXml.Attribute("Score").Value;

                    pScoreboardLayout.AddView(pScoreRow);
                }
            }

            // get the notifcations list from the server
            sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetUnreadNotifications", Master.BuildCommonBody(), true);
            pResponse = Master.ReadResponse(sResponse);

            LinearLayout pNotifLayout = FindViewById <LinearLayout>(Resource.Id.lstNotifications);

            pNotifLayout.RemoveAllViews();
            if (pResponse.Element("Data").Element("Notifications") != null)
            {
                foreach (XElement pNotif in pResponse.Element("Data").Element("Notifications").Elements("Notification"))
                {
                    // make the datarow layout
                    View pDataRow = LayoutInflater.From(this).Inflate(Resource.Layout.DataRow, pNotifLayout, false);

                    TextView pDataText = pDataRow.FindViewById <TextView>(Resource.Id.txtText);
                    pDataText.Text = pNotif.Attribute("GameName").Value + " - " + pNotif.Value;

                    // reset event handler
                    pDataText.Click    -= m_pDataTextDelegate;
                    m_pDataTextDelegate = delegate
                    {
                        string sGameID = pNotif.Attribute("GameID").Value;
                        Intent pIntent = null;
                        if (sGameID.Contains("Zendo"))
                        {
                            pIntent = new Intent(this, typeof(ZendoActivity));
                        }
                        pIntent.SetAction(sGameID);
                        pIntent.PutExtra("GameName", pNotif.Attribute("GameName").Value);
                        this.Finish();
                        StartActivity(pIntent);
                    };
                    pDataText.Click += m_pDataTextDelegate;

                    /*pDataText.Click += delegate
                     * {
                     *      string sGameID = pNotif.Attribute("GameID").Value;
                     *      Intent pIntent = null;
                     *      if (sGameID.Contains("Zendo")) { pIntent = new Intent(this, typeof(ZendoActivity)); }
                     *      pIntent.SetAction(sGameID);
                     *      pIntent.PutExtra("GameName", pNotif.Attribute("GameName").Value);
                     *      this.Finish();
                     *      StartActivity(pIntent);
                     * };*/

                    pNotifLayout.AddView(pDataRow);
                }
            }

            Button pMarkRead = FindViewById <Button>(Resource.Id.btnMarkRead);

            pMarkRead.Click += delegate
            {
                WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "MarkUnreadNotificationsRead", Master.BuildCommonBody(), true);
                this.BuildHomeDashboard();
            };
        }
예제 #4
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            this.SetContentView(Resource.Layout.Notifications);

            base.CreateDrawer();

            // get the notifcations list from the server
            string   sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetLastNNotifications", Master.BuildCommonBody(), true);
            XElement pResponse = Master.ReadResponse(sResponse);

            List <string> lDisplay   = new List <string>();
            List <string> lIDs       = new List <string>();
            List <string> lGameNames = new List <string>();

            if (pResponse.Element("Data").Element("Notifications") != null)
            {
                foreach (XElement pNotif in pResponse.Element("Data").Element("Notifications").Elements("Notification"))
                {
                    lDisplay.Add(pNotif.Attribute("GameName").Value + " - " + pNotif.Value);
                    lIDs.Add(pNotif.Attribute("GameID").Value);
                    lGameNames.Add(pNotif.Attribute("GameName").Value);
                }
            }

            ListView pNotifList = FindViewById <ListView>(Resource.Id.lstNotifications);

            pNotifList.Adapter = new DrawerItemCustomAdapter(this, Resource.Layout.ListViewItemRow, lDisplay.ToArray());

            pNotifList.ItemClick += (object sender, Android.Widget.AdapterView.ItemClickEventArgs e) =>
            {
                int iChoice = e.Position;

                Intent pIntent = null;
                if (lIDs[iChoice].Contains("Zendo"))
                {
                    pIntent = new Intent(this, typeof(ZendoActivity));
                }
                pIntent.SetAction(lIDs[iChoice]);
                pIntent.PutExtra("GameName", lGameNames[iChoice]);
                this.Finish();
                StartActivity(pIntent);
            };

            /*LinearLayout pNotifLayout = FindViewById<LinearLayout>(Resource.Id.lstNotifications);
             * pNotifLayout.RemoveAllViews();
             * if (pResponse.Element("Data").Element("Notifications") != null)
             * {
             *      foreach (XElement pNotif in pResponse.Element("Data").Element("Notifications").Elements("Notification"))
             *      {
             *              // make the datarow layout
             *              View pDataRow = LayoutInflater.From(this).Inflate(Resource.Layout.DataRow, pNotifLayout, false);
             *
             *              TextView pDataText = pDataRow.FindViewById<TextView>(Resource.Id.txtText);
             *              pDataText.Text = pNotif.Attribute("GameName").Value + " - " + pNotif.Value;
             *
             *              pDataText.Click += delegate
             *              {
             *                      string sGameID = pNotif.Attribute("GameID").Value;
             *                      Intent pIntent = null;
             *                      if (sGameID.Contains("Zendo")) { pIntent = new Intent(this, typeof(ZendoActivity)); }
             *                      pIntent.SetAction(sGameID);
             *                      pIntent.PutExtra("GameName", pNotif.Attribute("GameName").Value);
             *                      this.Finish();
             *                      StartActivity(pIntent);
             *              };
             *
             *              pNotifLayout.AddView(pDataRow);
             *      }
             * }*/
        }
예제 #5
0
        private void CheckServerNotifications(Context pContext, string sClan, string sName)
        {
            XElement pResponse = null;
            //try
            //{
            string sPrevClan = Master.GetActiveClan();
            string sPrevUser = Master.GetActiveUserName();

            Master.SetActiveClan(sClan);
            Master.SetActiveUserName(sName);
            string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "GetUnseenNotifications", Master.BuildCommonBody(), true);

            pResponse = Master.ReadResponse(sResponse);
            Master.SetActiveClan(sPrevClan);
            Master.SetActiveUserName(sPrevUser);
            //}
            //catch (Exception e) { return; }

            if (pResponse.Element("Data") != null && pResponse.Element("Data").Element("Notifications").Value != "")
            {
                List <XElement> pNotifications = pResponse.Element("Data").Element("Notifications").Elements("Notification").ToList();
                foreach (XElement pNotification in pNotifications)
                {
                    string sContent  = pNotification.Value;
                    string sGameID   = pNotification.Attribute("GameID").Value;
                    string sGameName = pNotification.Attribute("GameName").Value;

                    Notification.Builder pBuilder = new Notification.Builder(pContext);
                    pBuilder.SetContentTitle(sClan + " - " + sGameName);
                    pBuilder.SetContentText(sContent);
                    pBuilder.SetSmallIcon(Resource.Drawable.Icon);
                    pBuilder.SetVibrate(new long[] { 200, 50, 200, 50 });
                    pBuilder.SetVisibility(NotificationVisibility.Public);
                    pBuilder.SetPriority((int)NotificationPriority.Default);

                    Intent pIntent = null;
                    if (sGameID.Contains("Zendo"))
                    {
                        pIntent = new Intent(pContext, typeof(ZendoActivity));
                    }
                    pIntent.SetAction(sGameID);
                    pIntent.PutExtra("GameName", sGameName);

                    pBuilder.SetContentIntent(PendingIntent.GetActivity(pContext, 0, pIntent, 0));
                    pBuilder.SetStyle(new Notification.BigTextStyle().BigText(sContent));

                    Notification        pNotif   = pBuilder.Build();
                    NotificationManager pManager = (NotificationManager)pContext.GetSystemService(Context.NotificationService);
                    pManager.Notify((int)Java.Lang.JavaSystem.CurrentTimeMillis(), pNotif);                     // using time to make different ID every time, so doesn't replace old notification
                    //pManager.Notify(DateTime.Now.Millisecond, pNotif); // using time to make different ID every time, so doesn't replace old notification
                }
            }
        }
예제 #6
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.JoinGroup);

            EditText pClan = FindViewById <EditText>(Resource.Id.txtClanName);
            EditText pPass = FindViewById <EditText>(Resource.Id.txtClanPassword);
            EditText pUser = FindViewById <EditText>(Resource.Id.txtUserName);
            Button   pJoin = FindViewById <Button>(Resource.Id.btnSubmitJoin);

            pJoin.Click += delegate
            {
                // TODO: SANITIZATION!
                _hidden.InitializeWeb();
                //string sUserPass = File.ReadAllText(Master.GetBaseDir() + "_key.dat");
                string sUserPass = Master.GetKey();
                string sBody     = "<params><param name='sEmail'>" + Master.GetEmail() + "</param><param name='sClanName'>" + pClan.Text.ToString() + "</param><param name='sClanPassPhrase'>" + pPass.Text.ToString() + "</param><param name='sUserName'>" + pUser.Text.ToString() + "</param><param name='sUserPassPhrase'>" + sUserPass + "</param></params>";
                //string sResponse = WebCommunications.SendPostRequest("http://dwlapi.azurewebsites.net/api/reflection/GameClansServer/GameClansServer/ClanServer/JoinClan", sBody, true);
                string sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "JoinClan", sBody, true);

                XElement pResponse = Master.ReadResponse(sResponse);

                //Master.Popup(this, pResponse.Element("Text").Value);
                string sResponseMessage = pResponse.Element("Text").Value;


                // TODO: even if user is already part of clan, need to check local clans file and make sure the data is there (and add it if not)



                var pBuilder = new AlertDialog.Builder(this);
                pBuilder.SetMessage(sResponseMessage);

                if (pResponse.Attribute("Type").Value == "Error" || pResponse.Element("Data").Element("ClanStub") == null)
                {
                    pBuilder.SetPositiveButton("Ok", (e, s) => { return; });
                }
                else
                {
                    pBuilder.SetPositiveButton("Ok", (e, s) =>
                    {
                        XElement pClanStub = pResponse.Element("Data").Element("ClanStub");
                        string sClanName   = pClanStub.Attribute("ClanName").Value;
                        string sUserName   = pClanStub.Attribute("UserName").Value;

                        File.AppendAllLines(Master.GetBaseDir() + "_clans.dat", new List <string>()
                        {
                            sClanName + "|" + sUserName
                        });
                        this.SetResult(Result.Ok);
                        this.Finish();
                    });
                }
                pBuilder.Create().Show();
            };
        }
예제 #7
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            this.SetContentView(Resource.Layout.Login);

            EditText pEmail = FindViewById <EditText>(Resource.Id.txtEmail);
            EditText pPass  = FindViewById <EditText>(Resource.Id.txtUserPassword);

            Button pSubmit = FindViewById <Button>(Resource.Id.btnLogin);

            pSubmit.Click += delegate
            {
                string   sBody     = "<params><param name='sEmail'>" + pEmail.Text.ToString() + "</param><param name='sPassword'>" + Security.Sha256Hash(pPass.Text.ToString()) + "</param></params>";
                string   sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "ReturningUser", sBody, true);
                XElement pResponse = Master.ReadResponse(sResponse);

                string sResponseMessage = pResponse.Element("Text").Value;

                if (pResponse.Attribute("Type").Value == "Error")
                {
                    this.Popup(sResponseMessage);
                }
                else
                {
                    Master.HandleUserRegistrationData(pResponse);
                    this.Finish();
                }
            };
        }
예제 #8
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Key);

            EditText pEmail = FindViewById <EditText>(Resource.Id.txtEmail);
            EditText pPass1 = FindViewById <EditText>(Resource.Id.txtUserPassword);
            EditText pPass2 = FindViewById <EditText>(Resource.Id.txtUserPassword2);

            Button pSubmit = FindViewById <Button>(Resource.Id.btnSetPassword);

            pSubmit.Click += delegate
            {
                if (pEmail.Text == "")
                {
                    Master.Popup(this, "Your email cannot be blank.");
                }
                if (pPass1.Text == "")
                {
                    Master.Popup(this, "Your password cannot be blank.");
                    return;
                }

                if (pPass1.Text != pPass2.Text)
                {
                    Master.Popup(this, "The password fields do not match.");
                    return;
                }


                string   sBody     = "<params><param name='sEmail'>" + pEmail.Text.ToString() + "</param><param name='sPassword'>" + Security.Sha256Hash(pPass1.Text.ToString()) + "</param></params>";
                string   sResponse = WebCommunications.SendPostRequest(Master.GetBaseURL() + Master.GetServerURL() + "RegisterUser", sBody, true);
                XElement pResponse = Master.ReadResponse(sResponse);

                string sResponseMessage = pResponse.Element("Text").Value;

                if (pResponse.Attribute("Type").Value == "Error")
                {
                    Popup(sResponseMessage);
                    return;
                }
                else
                {
                    //MessageBox.Show(sResponseMessage);
                    Master.HandleUserRegistrationData(pResponse);
                    this.Finish();
                }
            };
        }