예제 #1
0
        // When the Update button is clicked, update our published Message
        public void UpdateMessage()
        {
            // Retrieves updated data from UI
            context.Fetch();

            // Remove our last message from MonoTouch Dialog
            if (myMessage != null)
            {
                RemoveMonkeyMessage(myMessage);
            }

            // Create new Nearby message to publish with the list choices
            myMessage = new EmotionMessage {
                UserId  = userId,
                Name    = dialog.Names.ElementAt(dialog.CurrentName),
                Species = dialog.Species.ElementAt(dialog.CurrentSpecie),
                Emotion = dialog.Emotions.ElementAt(dialog.CurrentEmotion)
            };

            // Unpublish message, if we already published a message
            Unpublish(myMessage);

            // Publish the new message
            Publish(myMessage);
        }
        public override void OnLost(NearbyMessage message)
        {
            base.OnLost(message);

            var emotionMsg = EmotionMessage.Deserialize(message.GetContent());

            OnLostHandler?.Invoke(emotionMsg);
        }
예제 #3
0
 // To unpublish a message you need to dispose the published message
 void Unpublish(EmotionMessage emotionMessage)
 {
     if (AppDelegate.PublishedMessage == null)
     {
         return;
     }
     AppDelegate.PublishedMessage.Dispose();
     AppDelegate.PublishedMessage = null;
     RemoveMonkeyMessage(emotionMessage);
 }
예제 #4
0
        // Remove monkey message from MonoTouch Dialog
        void RemoveMonkeyMessage(EmotionMessage message)
        {
            var index = monkeysMessages.IndexOf(message);

            if (index < 0)
            {
                return;
            }
            monkeysMessages.RemoveAt(index);
            messagesSection.Remove(index);
            Root.Reload(messagesSection, UITableViewRowAnimation.Fade);
        }
예제 #5
0
        // Publishes a new Message to the Nearby API
        async Task Publish()
        {
            // Wait for connection
            if (!await IsConnected())
            {
                return;
            }

            // Create new Nearby message to publish with the spinner choices
            var emotionMessage = new EmotionMessage
            {
                UserId  = userId,
                Name    = spinnerName.SelectedItem.ToString(),
                Species = spinnerSpecies.SelectedItem.ToString(),
                Emotion = spinnerEmotion.SelectedItem.ToString()
            };

            // Remove any existing messages for this user from our list
            // Add the new message and update the dataset
            adapter.Messages.RemoveAll(m => m.UserId == userId);
            adapter.Messages.Add(emotionMessage);
            adapter.NotifyDataSetChanged();

            // If we already published a message, unpublish it first
            if (publishedMessage != null)
            {
                await Unpublish();
            }

            // Create a new nearby message with our serialized object
            publishedMessage = new NearbyMessage(emotionMessage.Serialize());

            // Publish our new message
            var status = await NearbyClass.Messages.PublishAsync(googleApiClient, publishedMessage);

            if (!status.IsSuccess)
            {
                LogMessage(status.StatusMessage);
            }
        }
예제 #6
0
 // Publish the receive message
 void Publish(EmotionMessage emotionMessage)
 {
     AppDelegate.PublishedMessage = manager.Publication(Message.Create(NSData.FromArray(emotionMessage.Serialize())));
     AddMonkeyMessage(emotionMessage);
 }
예제 #7
0
 // Add monkey message to MonoTouch Dialog
 void AddMonkeyMessage(EmotionMessage message)
 {
     monkeysMessages.Add(message);
     messagesSection.Add(new StringElement(message.ToString()));
     Root.Reload(messagesSection, UITableViewRowAnimation.Fade);
 }
예제 #8
0
        // Method to be called when a monkey unpublished his/her message
        void MessageLost(Message message)
        {
            var emotionMessage = EmotionMessage.Deserialize(message.Content.ToArray());

            RemoveMonkeyMessage(emotionMessage);
        }
예제 #9
0
        // Method to be called when a monkey published his/her message
        void MessageFound(Message message)
        {
            var emotionMessage = EmotionMessage.Deserialize(message.Content.ToArray());

            AddMonkeyMessage(emotionMessage);
        }
        public override void OnFound(NearbyMessage message)
        {
            var emotionMsg = EmotionMessage.Deserialize(message.GetContent());

            OnFoundHandler?.Invoke(emotionMsg);
        }