コード例 #1
0
ファイル: MainPage.xaml.cs プロジェクト: adamjmoon/Restful
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var baseUri = "http://search.twitter.com/";

            var restFacilitator = new RestFacilitator();

            var restService = new RestService(restFacilitator, baseUri);

            var asyncDelegation = new AsyncDelegation(restService);

            //call http://search.twitter.com/search.json?q=#haiku
            asyncDelegation.Get<Hash>("search.json", new { q = "#haiku" })
                           .WhenFinished(
                           result =>
                           {
                               List<string> tweets = new List<string>();
                               textBlockTweets.Text = "";
                               foreach (var tweetObject in result["results"].ToHashes())
                               {
                                   textBlockTweets.Text += HttpUtility.HtmlDecode(tweetObject["text"].ToString()) + Environment.NewLine + Environment.NewLine;
                               }
                           });

            asyncDelegation.Go();
        }
コード例 #2
0
ファイル: MainPage.xaml.cs プロジェクト: adamjmoon/Restful
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var baseUri = "http://search.twitter.com/";

            var restFacilitator = new RestFacilitator();

            var restService = new RestService(restFacilitator, baseUri);

            var asyncDelegation = new AsyncDelegation(restService);

            asyncDelegation.Get<TwitterProxy.twitterresults>("search.json", new { q = "#haiku" })
                           .WhenFinished(
                           result =>
                           {
                               List<string> tweets = new List<string>();
                               textBlockTweets.Text = "";
                               tweets = result.results.Select(s => s.text).ToList();
                               foreach (string tweet in tweets)
                               {
                                   textBlockTweets.Text += HttpUtility.HtmlDecode(tweet) + Environment.NewLine + Environment.NewLine;
                               }
                           });

            asyncDelegation.Go();
        }
コード例 #3
0
 public void RightButtonPush()
 {
     var asyncDelegation = new AsyncDelegation(restService);
     asyncDelegation.Post("add", new {Name="MonoTouch Name" })
         .WhenFinished(()=> {
             PullData();
         });
     asyncDelegation.Go();
 }
コード例 #4
0
 public override void ViewDidAppear(bool animated)
 {
     base.ViewDidAppear (animated);
     var asyncDelegation = new AsyncDelegation(restService);
     asyncDelegation.Get<Hash>("gamebyid", new { id = _gameId })
         .WhenFinished(
             result =>
             {
             Title = result["name"].ToString();
             JsonVisualization jsonVisualization = new JsonVisualization();
             jsonVisualization.Parse("root", result, 0);
             TextView.Text = jsonVisualization.JsonResult;
         });
     asyncDelegation.Go();
 }
コード例 #5
0
        private void DetermineIfHotZoneCleared()
        {
            Guid previousHotZoneId = _currentHotZoneId;
            AsyncDelegation ad = new AsyncDelegation();

            //get teh current zone the user is in
            ad.Get<GuidResult>(new { controller = "Users", action = "Zone", userId = _gameContext.UserId })
                //for that zone, determine if there are any zombie packs left
              .WhenFinished(
              (result) =>
              {
                  _currentHotZoneId = result.Value;
                  ShowHideCurrentHotZone(previousHotZoneId, _currentHotZoneId, forceUpdate: false);
              })
              .ThenGet<IntResult>().ForRoute(() => new { controller = "HotZones", action = "ZombiePacksLeft", userId = _gameContext.UserId, hotZoneId = _currentHotZoneId })
                //updae the ZombiePacks count to reflect the counts returned by Hotzones/ZombiePacksLeft
              .WhenFinished(
              (zombiePackCount) =>
              {
                  //update zombie pack counts
                  KeyValuePair<Guid, int>? kvp = _zombiePackCounts.SingleOrDefault(c => c.Key == _currentHotZoneId);
                  if (kvp != null)
                  {
                      _zombiePackCounts.Remove(kvp.Value);
                      _zombiePackCounts.Add(new KeyValuePair<Guid, int>(_currentHotZoneId, zombiePackCount.Value));
                  }

                  //if the zombie pack count is 0 then that means the hotzone is destroyed.  Notify game context that the hotzone has been destroyed.
                  if (zombiePackCount.Value == 0)
                  {
                      _mapPresenterView.UpdateHotZoneClearedStatus(_currentHotZoneId, true);
                  }
              });

            ad.Go();
        }
コード例 #6
0
        /// <summary>
        /// Request from the view to hunt.
        /// </summary>
        public void Hunt()
        {
            //return if the current zombie pack id is 0
            if (_currentZombiePackId == Guid.Empty)
            {
                return;
            }

            if (_currentZombiePackInfo != null && _currentZombiePackInfo.CostPerHunt > _gameContext.UserEnergy.CurrentEnergy)
            {
                _notificationView.Notify("You do not have enough energy to hunt here.  Use an item to replenish your energy, equip armor to raise your maximum energy, or simply wait for your energy to replenish.  You will regain energy over time.");
                return;
            }

            AsyncDelegation ad = new AsyncDelegation();

            //perform hunt
            ad.Post(
              new
              {
                  controller = "ZombiePacks",
                  action = "Hunt",
                  userId = _gameContext.UserId,
                  zombiePackId = _currentZombiePackId
              })
                //when finished do nothing
              .WhenFinished(() => { })
              .ThenGet<UserInGameStats>(new { controller = "Users", action = "Stats", userId = _gameContext.UserId })
              .WhenFinished(
              (data) =>
              {
                  _gameContext.SetUserEnergy(data.EnergyResult);
                  _gameContext.SetUserInventory(data.Items);
                  _gameContext.SetUserAttackPower(data.AttackPower.Value);
                  _gameContext.SetMoney(data.Money.Value);
                  _gameContext.SetUserMaxItems(data.MaxItems.Value);
                  _gameContext.SetUserLevel(data.LevelResult);
              })
              //check to see if the zombie pack is cleared
              .ThenGet<BooleanResult>(
              new
              {
                  controller = "ZombiePacks",
                  action = "IsCleared",
                  userId = _gameContext.UserId,
                  zombiePackId = _currentZombiePackId
              })
                //when the zombie pack data is returned
              .WhenFinished(
              (booleanResult) =>
              {
                  //if the zombie pack has been destroyed
                  if (booleanResult.Value == true)
                  {
                      //find the zombie pack
                      Node node = _visibleZombiePacks.FirstOrDefault(c => c.Id == _currentZombiePackId);
                      if (node != null)
                      {
                          //remove the node from visible nodes
                          _visibleZombiePacks.Remove(node);

                          //notify to the game context that a zombie pack has been destroyed
                          List<Guid> nodes = new List<Guid>();
                          nodes.Add(node.Id);
                          _mapPresenterView.RemoveZombiePacks(nodes);

                          //set the zombie pack to guid.empty
                          _currentZombiePackId = Guid.Empty;

                          //if the zombie pack has been cleared, determine if the hotzone has been cleared and update the hunt status of the user
                          _gameContext.NotifyZombiePackDestroyed(node.Id);
                          UpdateHuntStatus();
                      }
                  }
                  else
                  {
                      //if the zombie pack hasn't been destroyed, update hunt status to reflect new destruction amounts.
                      UpdateHuntStatus();
                  }
              });

            ad.Go();
        }
コード例 #7
0
        private void GetZombiePackInfo()
        {
            if (_currentZombiePackId == Guid.Empty) return;

            AsyncDelegation ad = new AsyncDelegation();
            ad.Get<ZombiePackProgress>(new
            {
                controller = "ZombiePacks",
                action = "DestructionProgress",
                userId = _gameContext.UserId,
                zombiePackId = _currentZombiePackId
            })
            .WhenFinished(r =>
            {
                _currentZombiePackInfo = r;
                _view.PopulateDestructionProgress(r.ZombiesLeft, r.MaxZombies, r.CostPerHunt);
            });

            ad.Go();
        }
コード例 #8
0
        private void UpdateZombiePacksIfApplicable()
        {
            AsyncDelegation ad = new AsyncDelegation();
            ad.Get<GuidResult>(new { controller = "Users", action = "Zone", userId = _gameContext.UserId })
              .WhenFinished(r =>
                  {
                      if (r.Value == _currentHotZoneId)
                      {
                          UpdateHuntStatus();
                      }
                      else
                      {
                          _currentHotZoneId = r.Value;
                          GetZombiePacksForHotZone(_currentHotZoneId);
                      }
                  });

            ad.Go();
        }
コード例 #9
0
        private void GetZombiePacksForHotZone(Guid hotZoneId)
        {
            AsyncDelegation ad = new AsyncDelegation();
            ad.Get<List<ZombiePackNode>>().ForRoute(() => new { controller = "ZombiePacks", action = "InHotzone", userId = _gameContext.UserId })
              .WhenFinished(r =>
               {
                   _mapPresenterView.RemoveZombiePacks(_visibleZombiePacks.Select(s => s.Id).ToList());

                   _visibleZombiePacks.Clear();
                   foreach (ZombiePackNode zombiePack in r)
                   {
                       _visibleZombiePacks.Add(zombiePack);
                   }

                   _mapPresenterView.AddZombiePacks(_visibleZombiePacks);

                   UpdateHuntStatus();
               });

            ad.Go();
        }
コード例 #10
0
        internal void TransferItemFromUserToSafeHouse(Guid itemId)
        {
            SafeHouseNode currentSafeHouse = GetCurrentSafeHouse();
            if (currentSafeHouse == null)
            {
                return;
            }

            AsyncDelegation ad = new AsyncDelegation();

            ad.Post(
                new
                {
                    controller = "SafeHouses",
                    action = "StoreItem",
                    userId = _gameContext.UserId,
                    safeHouseId = currentSafeHouse.Id,
                    itemId = itemId
                })
                .WhenFinished(() =>
                {
                    GetUserInventory();
                    GetSafeHouseInventory();
                });

            ad.Go();
        }
コード例 #11
0
 private void FetchGames()
 {
     var asyncDelegation = new AsyncDelegation(restService);
     asyncDelegation.Get<Hashes>("list", new { q = "list" })
         .WhenFinished(
             result =>
             {
             // Web games Section
             var tGroup = new TableItemGroup{ Name = "Active Games"};
             foreach(var hash in result)
             {
                 tGroup.Items.Add(hash["name"].ToString());
                 tGroup.ItemIds.Add(new Guid(hash["id"].ToString()));
             }
             _games.Clear();
             _games.Add(tGroup);
             InvokeOnMainThread(GamesTable.ReloadData);
         });
     asyncDelegation.Go();
 }
コード例 #12
0
        internal void TransferItemFromSafeHouseToUser(Guid itemId)
        {
            if (_gameContext.UserInventory.Count >= _gameContext.UserMaxItems)
            {
                _notificationView.Notify("You cannot equip any more items.  Move items to the safe house first to create more space.");
                return;
            }

            SafeHouseNode currentSafeHouse = GetCurrentSafeHouse();
            if (currentSafeHouse == null)
            {
                return;
            }

            AsyncDelegation ad = new AsyncDelegation();

            ad.Post(
                new
                {
                    controller = "SafeHouses",
                    action = "UserRetrieveItem",
                    userId = _gameContext.UserId,
                    safeHouseId = currentSafeHouse.Id,
                    itemId = itemId
                })
                .WhenFinished(() =>
                {
                    GetUserInventory();
                    GetSafeHouseInventory();
                });

            ad.Go();
        }
コード例 #13
0
        private void UpdateZone(bool forceUpdate)
        {
            Guid previousHotZoneId = _currentHotZoneId;
            //show the hotzone the user is currently associated with on the map
            AsyncDelegation ad = new AsyncDelegation();

            //get teh current zone the user is in
            ad.Get<GuidResult>(new { controller = "Users", action = "Zone", userId = _gameContext.UserId })
                //for that zone, determine if there are any zombie packs left
              .WhenFinished(
              (result) =>
              {
                  _currentHotZoneId = result.Value;
                  ShowHideCurrentHotZone(previousHotZoneId, _currentHotZoneId, forceUpdate);
              });

            ad.Go();
        }
コード例 #14
0
        void PullData()
        {
            var asyncDelegation = new AsyncDelegation(restService);

            asyncDelegation.Get<Hashes>("list", new { })
                .WhenFinished(
                    result =>
                    {
                    peeps.Clear();
                    foreach (var peep in result)
                    {
                        peeps.Add(peep["Name"].ToString());
                    }
                    table.ReloadData();
                });

            asyncDelegation.Go();
        }
コード例 #15
0
        private void LoadHotZones()
        {
            //initalize the hotzones if they have not been initialized yet
            if (_hotZones == null)
            {
                //on the retrieval of hozones, populate honzones on the map.
                AsyncDelegation ad2 = new AsyncDelegation();

                ad2.Get<List<HotZoneNode>>(new { controller = "HotZones", action = "Index", userId = _gameContext.UserId })
                    .WhenFinished(
                    (hotZones) =>
                    {
                        _hotZones = hotZones;
                    })
                    .ThenGet<List<KeyValuePair<Guid, int>>>(new { controller = "HotZones", action = "Uncleared", userId = _gameContext.UserId })
                    .WhenFinished(
                    (uncleared) =>
                    {
                        _zombiePackCounts = uncleared;
                        List<Guid> clearedHotZones =
                            _hotZones.Where(h => _zombiePackCounts.Any(z => z.Key == h.Id) == false)
                                     .Select(h => h.Id)
                                     .ToList();

                        foreach (Guid id in clearedHotZones)
                        {
                            _mapPresenterView.UpdateHotZoneClearedStatus(id, true);
                        }

                        UpdateZone(forceUpdate: false);
                        DetermineIfOnHotZone();
                    });

                ad2.Go();
            }
        }
コード例 #16
0
        void SelectCard(string cardId)
        {
            var asyncDelegation = new AsyncDelegation (restService);

            if (_isCzar) {
                asyncDelegation.Post ("selectWinner", new {gameId = _gameId, cardId = cardId})
                .WhenFinished (() => {
                    FetchGame ();
                });
                asyncDelegation.Go ();
            } else {
                asyncDelegation.Post ("selectCard", new {gameId = _gameId, playerId = Application.PlayerId, whiteCardId = cardId})
                    .WhenFinished (() => {
                        FetchGame ();
                    });
                asyncDelegation.Go ();
            }
        }
コード例 #17
0
 void ReadyForNextRound()
 {
     var asyncDelegation = new AsyncDelegation(restService);
     asyncDelegation.Post("readyForNextRound", new {gameId = _gameId, playerId = Application.PlayerId})
         .WhenFinished(()=> {
             shouldPool = true;
             PollGameData();
         });
     asyncDelegation.Go();
 }
コード例 #18
0
 void FetchGame()
 {
     var asyncDelegation = new AsyncDelegation (restService);
     asyncDelegation.Get<Game> ("gamebyid", new {
         id = _gameId,
         playerId = Application.PlayerId
     }).WhenFinished (result =>  {
         InvokeOnMainThread (() =>  {
             UpdateView (result);
         });
     });
     asyncDelegation.Go ();
 }
コード例 #19
0
        public void Calculate()
        {
            RestFacilitator rf;
            rf = new RestFacilitator();

            RestService rs = new RestService(rf, _baseUri);
            AsyncDelegation ad = new AsyncDelegation(rs);

            int temp = 0;

            ad.Get<dynamic>(
            "Calculator/Add",
            new
            {
                x = X,
                y = Y
            })
            .WhenFinished(r => temp = (int)r.Value)
            .ThenGet<dynamic>("Calculator/Subtract").ForRoute(
            () => new
            {
                x = temp,
                y = Subtract
            })
            .WhenFinished(r => temp = (int)r.Value)
            .ThenGet<dynamic>("Calculator/Multiply").ForRoute(
            () => new
            {
                x = temp,
                y = Multiply
            })
            .WhenFinished(r => Answer = (int)r.Value);

            ad.Go();
        }
コード例 #20
0
 void JoinGame(string gameId)
 {
     var asyncDelegation = new AsyncDelegation(restService);
     asyncDelegation.Post("joingame", new {gameId = gameId, playerId = Application.PlayerId, playerName = "Mono Touch"})
         .WhenFinished(()=> {
             var gameView = new GameViewController(gameId);
             this.NavigationController.PushViewController(gameView, true);
         });
     asyncDelegation.Go();
 }
コード例 #21
0
        private void GetInventory()
        {
            StoreNode currentStore = _visibleStores.SingleOrDefault(c => c.Latitude == _gameContext.UserNode.Latitude && c.Longitude == _gameContext.UserNode.Longitude);
            if (currentStore == null)
            {
                return;
            }

            AsyncDelegation ad = new AsyncDelegation();
            ad.Get<List<Item>>(new
            {
                controller = "Stores",
                action = "Items",
                storeId = currentStore.Id
            })
            .WhenFinished(
            (items) =>
            {
                _view.PopulateStoreInventory(items.OrderBy(i => i.Name).ToList());
            });

            ad.Go();
        }
コード例 #22
0
        public void Buy(Item item)
        {
            if (item.Price > _gameContext.Money)
            {
                _notificationView.Notify("You don't have enough money to buy this item.  Go hunt for more zombies and come back when you do.");
                return;
            }

            if (_gameContext.UserInventory.Count >= _gameContext.UserMaxItems)
            {
                _notificationView.Notify("You can't carry any more items.  Go to the safe house and drop some items off, then come back.");
                return;
            }

            AsyncDelegation ad = new AsyncDelegation();

            ad.Post(
                new
                {
                    controller = "Users",
                    action = "BuyItem",
                    userId = _gameContext.UserId,
                    itemId = item.Id
                })
                .WhenFinished(() => { })
                .ThenGet<IntResult>(new { controller = "Users", action = "Money", userId = _gameContext.UserId })
                .WhenFinished(r =>
                {
                    _gameContext.SetMoney(r.Value);
                    GetUserMoney();
                    GetUserInventory();
                });

            ad.Go();

        }
コード例 #23
0
        private void GetUserInventory()
        {
            AsyncDelegation ad = new AsyncDelegation();

            ad.Get<List<Item>>(
                new
                {
                    controller = "Users",
                    action = "Items",
                    userId = _gameContext.UserId
                })
                .WhenFinished(
                (items) =>
                {
                    _gameContext.SetUserInventory(items.OrderBy(i => i.Name).ToList());
                });

            ad.Go();
        }
コード例 #24
0
ファイル: MainPage.xaml.cs プロジェクト: adamjmoon/Restful
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            var baseUri = "http://search.twitter.com/";

            var restFacilitator = new RestFacilitator();

            var restService = new RestService(restFacilitator, baseUri);

            var asyncDelegation = new AsyncDelegation(restService);

            asyncDelegation.Get<Hash>("search.json", new { q = "#haiku" })
                           .WhenFinished(
                               result =>
                               {
                                   JsonVisualization jsonVisualization = new JsonVisualization();
                                   jsonVisualization.Parse("root", result, 0);
                                   textBlockTweets.Text = jsonVisualization.JsonResult;
                               });

            asyncDelegation.Go();
        }
コード例 #25
0
        private void GetStoresForHotZone(Guid hotZoneId)
        {
            AsyncDelegation ad = new AsyncDelegation();
            ad.Get<List<StoreNode>>().ForRoute(() => new { controller = "Stores", action = "InHotZone", userId = _gameContext.UserId })
              .WhenFinished(r =>
              {
                  _mapPresenterView.RemoveStores(_visibleStores);

                  _visibleStores.Clear();
                  foreach (StoreNode safeHouse in r)
                  {
                      _visibleStores.Add(safeHouse);
                  }

                  _mapPresenterView.AddStores(_visibleStores);

                  CheckCanShop();
              });

            ad.Go();
        }
コード例 #26
0
 private void AddGame(Guid gameId, string gameName)
 {
     var asyncDelegation = new AsyncDelegation(restService);
     asyncDelegation
         .Post("add", new { id = gameId.ToString(), name=gameName })
             .WhenFinished(() => FetchGames());
     asyncDelegation.Go();
 }
コード例 #27
0
        private void GetUserInventory()
        {
            AsyncDelegation ad = new AsyncDelegation();

            ad.Get<List<Item>>(
                new
                {
                    controller = "Users",
                    action = "Items",
                    userId = _gameContext.UserId
                })
                .WhenFinished(
                (items) =>
                {
                    var orderedList = items.OrderBy(s => s.Name).ToList();
                    _view.PopulateUserInventory(orderedList);
                    _gameContext.SetUserInventory(orderedList);
                });

            ad.Go();
        }