Game Invite Task in Windows Phone 7 Via WCF Service


Introduction

Today, in this article let's dig out another important concept in Windows Phone via WCF Service to perform an expected operation.

Question: What is Game Invite Task?

In simple terms "It allows to invite the other game players via Email Address or Gamer Tag. Such that, other players can participate and play the game under multiplayer mode".

So, let's get it started.

Step 1: The complete code of the IService1.cs looks like this.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Web;

using System.Text;

 

namespace Game_WCF

{

    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.

    [ServiceContract]

    public interface IService1

    {

        [OperationContract]

        string Session(string a);

 

    }

}

Step 2: The complete code of the Service1.svc.cs looks like this.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Web;

using System.Text;

 

namespace Game_WCF

{

    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.

    public class Service1 : IService1

    {

 

        public string Session(string a)

        {

            return a;

        }

    }

}

Step 3: The complete code of the Web.Config looks like this.

<?xml version="1.0"?>

<configuration>

 

  <system.web>

    <compilation debug="true" targetFramework="4.0" />

  </system.web>

  <system.serviceModel>

    <behaviors>

      <serviceBehaviors>

        <behavior>

          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->

          <serviceMetadata httpGetEnabled="true"/>

          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->

          <serviceDebug includeExceptionDetailInFaults="false"/>

        </behavior>

      </serviceBehaviors>

    </behaviors>

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

  </system.serviceModel>

  <system.webServer>

    <modules runAllManagedModulesForAllRequests="true"/>

  </system.webServer>

 

</configuration>

Step 4: The complete code of the MainPage.xaml looks like this.

<phone:PhoneApplicationPage

    x:Class="Game_Invite_Task.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"

    FontFamily="{StaticResource PhoneFontFamilyNormal}"

    FontSize="{StaticResource PhoneFontSizeNormal}"

    Foreground="{StaticResource PhoneForegroundBrush}"

    SupportedOrientations="Portrait" Orientation="Portrait"

    shell:SystemTray.IsVisible="True">

 

    <!--LayoutRoot is the root grid where all page content is placed-->

    <Grid x:Name="LayoutRoot" Background="Transparent">

        <Grid.RowDefinitions>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

 

        <!--TitlePanel contains the name of the application and page title-->

        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">

            <TextBlock x:Name="ApplicationTitle" FontFamily="Verdana" FontSize="22" Text="Vijay's Game Invite Task" Style="{StaticResource PhoneTextNormalStyle}"/>

            <TextBlock x:Name="PageTitle" Text="Windows 7 Phone" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

        </StackPanel>

 

        <!--ContentPanel - place additional content here-->

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            <Button Content="Game Invite" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="135,303,0,0" Name="button1" VerticalAlignment="Top" Width="213" Click="button1_Click" />

            <TextBlock Height="30" Text="Please Enter SessionId" HorizontalAlignment="Left" Margin="109,169,0,0" Name="textBlock1" FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />

            <TextBox Height="72" HorizontalAlignment="Left" Margin="96,225,0,0" Name="textBox1"  VerticalAlignment="Top" Width="295" />

            <TextBlock Height="30" FontFamily="Verdana" Foreground="Red" FontSize="22" HorizontalAlignment="Left" Margin="96,399,0,0" Name="textBlock2" VerticalAlignment="Top" />

        </Grid>

    </Grid>

 

    <!--Sample code showing usage of ApplicationBar-->

    <!--<phone:PhoneApplicationPage.ApplicationBar>

        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">

            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>

            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>

            <shell:ApplicationBar.MenuItems>

                <shell:ApplicationBarMenuItem Text="MenuItem 1"/>

                <shell:ApplicationBarMenuItem Text="MenuItem 2"/>

            </shell:ApplicationBar.MenuItems>

        </shell:ApplicationBar>

    </phone:PhoneApplicationPage.ApplicationBar>-->

 

</phone:PhoneApplicationPage>

Step 5: The complete code of the MainPage.xaml.cs looks like this.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using Microsoft.Phone.Controls;

using Microsoft.Phone.Tasks;

using Game_Invite_Task.ServiceReference1;

using System.Windows.Threading;

 

namespace Game_Invite_Task

{

    public partial class MainPage : PhoneApplicationPage

    {

        // Constructor

        public MainPage()

        {

            InitializeComponent();

        }

 

        void session_Call(object sender, SessionCompletedEventArgs e)

        {

            GameInviteTask objGame_Invite = new GameInviteTask();

            objGame_Invite.SessionId = e.Result;

            this.Dispatcher.BeginInvoke(() =>

            {

                objGame_Invite.Completed += new EventHandler<TaskEventArgs>(game_Call);

            });

 

            objGame_Invite.Show();

        }

 

        private void button1_Click(object sender, RoutedEventArgs e)

        {

            textBlock2.Text = "";

            if (string.IsNullOrEmpty(textBox1.Text))

            {

                textBlock2.Text = "Please Enter Some Values";

            }

            else

            {

                Service1Client obj_Client = new Service1Client();

                obj_Client.SessionCompleted += new EventHandler<SessionCompletedEventArgs>(session_Call);

                obj_Client.SessionAsync(textBox1.Text);

                textBox1.Text = "";

            }

 

        }

 

        void game_Call(object sender, TaskEventArgs e)

        {

            switch (e.TaskResult)

            {

                case TaskResult.OK:

                    MessageBox.Show("OK");

                    break;

 

                case TaskResult.Cancel:

                    MessageBox.Show("cancelled");

                    break;

 

                case TaskResult.None:

                    MessageBox.Show("Nothing");

                    break;

 

            }

        }

    }

}

 

Step 6: The output of the application looks like this.

GameInvite0.png

Step 7: The output of the Game Invitation Application looks like this.

GameInvite1.png

Step 8: The Nothing Entered Output Application looks like this.

GameInvite2.png

I hope this article is useful for you. I look forward for your comments and feedback.


Similar Articles
MVC Corporation
MVC Corporation is consulting and IT services based company.