SSISO Community

갤러리정

Agent Tryout

/*
User  Interfaces  in  C#:  Windows  Forms  and  Custom  Controls
by  Matthew  MacDonald

Publisher:  Apress
ISBN:  1590590457
*/
using  System;
using  System.Drawing;
using  System.Collections;
using  System.ComponentModel;
using  System.Windows.Forms;
using  System.Data;

namespace  AgentTryout
{
    ///  <summary>
    ///  Summary  description  for  AgentTryout.
    ///  </summary>
    public  class  AgentTryout  :  System.Windows.Forms.Form
    {
        internal  System.Windows.Forms.Button  cmdClose;
        internal  System.Windows.Forms.GroupBox  GroupBox3;
        internal  System.Windows.Forms.Label  Label2;
        internal  System.Windows.Forms.Label  Label1;
        internal  System.Windows.Forms.TextBox  txtY;
        internal  System.Windows.Forms.TextBox  txtX;
        internal  System.Windows.Forms.Button  cmdMove;
        internal  System.Windows.Forms.GroupBox  GroupBox2;
        internal  System.Windows.Forms.Button  cmdSpeak;
        internal  System.Windows.Forms.TextBox  txtSpeak;
        internal  System.Windows.Forms.GroupBox  GroupBox1;
        internal  System.Windows.Forms.Button  cmdStop;
        internal  System.Windows.Forms.Button  cmdPlay;
        internal  System.Windows.Forms.ListBox  lstAnimations;
        private  AxAgentObjects.AxAgent  axAgent1;
        ///  <summary>
        ///  Required  designer  variable.
        ///  </summary>
        private  System.ComponentModel.Container  components  =  null;

        public  AgentTryout()
        {
            //
            //  Required  for  Windows  Form  Designer  support
            //
            InitializeComponent();

            //
            //  TODO:  Add  any  constructor  code  after  InitializeComponent  call
            //
        }

        ///  <summary>
        ///  Clean  up  any  resources  being  used.
        ///  </summary>
        protected  override  void  Dispose(  bool  disposing  )
        {
            if(  disposing  )
            {
                if  (components  !=  null)  
                {
                    components.Dispose();
                }
            }
            base.Dispose(  disposing  );
        }

        #region  Windows  Form  Designer  generated  code
        ///  <summary>
        ///  Required  method  for  Designer  support  -  do  not  modify
        ///  the  contents  of  this  method  with  the  code  editor.
        ///  </summary>
        private  void  InitializeComponent()
        {
            System.Resources.ResourceManager  resources  =  new  System.Resources.ResourceManager(typeof(AgentTryout));
            this.cmdClose  =  new  System.Windows.Forms.Button();
            this.GroupBox3  =  new  System.Windows.Forms.GroupBox();
            this.Label2  =  new  System.Windows.Forms.Label();
            this.Label1  =  new  System.Windows.Forms.Label();
            this.txtY  =  new  System.Windows.Forms.TextBox();
            this.txtX  =  new  System.Windows.Forms.TextBox();
            this.cmdMove  =  new  System.Windows.Forms.Button();
            this.GroupBox2  =  new  System.Windows.Forms.GroupBox();
            this.cmdSpeak  =  new  System.Windows.Forms.Button();
            this.txtSpeak  =  new  System.Windows.Forms.TextBox();
            this.GroupBox1  =  new  System.Windows.Forms.GroupBox();
            this.axAgent1  =  new  AxAgentObjects.AxAgent();
            this.cmdStop  =  new  System.Windows.Forms.Button();
            this.cmdPlay  =  new  System.Windows.Forms.Button();
            this.lstAnimations  =  new  System.Windows.Forms.ListBox();
            this.GroupBox3.SuspendLayout();
            this.GroupBox2.SuspendLayout();
            this.GroupBox1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.axAgent1)).BeginInit();
            this.SuspendLayout();
            //  
            //  cmdClose
            //  
            this.cmdClose.Anchor  =  (System.Windows.Forms.AnchorStyles.Bottom  |  System.Windows.Forms.AnchorStyles.Right);
            this.cmdClose.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.cmdClose.Location  =  new  System.Drawing.Point(295,  331);
            this.cmdClose.Name  =  "cmdClose";
            this.cmdClose.Size  =  new  System.Drawing.Size(96,  24);
            this.cmdClose.TabIndex  =  12;
            this.cmdClose.Text  =  "Close";
            this.cmdClose.Click  +=  new  System.EventHandler(this.cmdClose_Click);
            //  
            //  GroupBox3
            //  
            this.GroupBox3.Anchor  =  ((System.Windows.Forms.AnchorStyles.Bottom  |  System.Windows.Forms.AnchorStyles.Left)  
                |  System.Windows.Forms.AnchorStyles.Right);
            this.GroupBox3.Controls.AddRange(new  System.Windows.Forms.Control[]  {
                                                                                    this.Label2,
                                                                                    this.Label1,
                                                                                    this.txtY,
                                                                                    this.txtX,
                                                                                    this.cmdMove});
            this.GroupBox3.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.GroupBox3.Location  =  new  System.Drawing.Point(8,  251);
            this.GroupBox3.Name  =  "GroupBox3";
            this.GroupBox3.Size  =  new  System.Drawing.Size(384,  64);
            this.GroupBox3.TabIndex  =  11;
            this.GroupBox3.TabStop  =  false;
            this.GroupBox3.Text  =  "Move";
            //  
            //  Label2
            //  
            this.Label2.Location  =  new  System.Drawing.Point(84,  28);
            this.Label2.Name  =  "Label2";
            this.Label2.Size  =  new  System.Drawing.Size(20,  16);
            this.Label2.TabIndex  =  11;
            this.Label2.Text  =  "Y:";
            //  
            //  Label1
            //  
            this.Label1.Location  =  new  System.Drawing.Point(16,  28);
            this.Label1.Name  =  "Label1";
            this.Label1.Size  =  new  System.Drawing.Size(20,  16);
            this.Label1.TabIndex  =  10;
            this.Label1.Text  =  "X:";
            //  
            //  txtY
            //  
            this.txtY.Location  =  new  System.Drawing.Point(104,  24);
            this.txtY.Name  =  "txtY";
            this.txtY.Size  =  new  System.Drawing.Size(36,  20);
            this.txtY.TabIndex  =  9;
            this.txtY.Text  =  "";
            //  
            //  txtX
            //  
            this.txtX.Location  =  new  System.Drawing.Point(36,  24);
            this.txtX.Name  =  "txtX";
            this.txtX.Size  =  new  System.Drawing.Size(36,  20);
            this.txtX.TabIndex  =  8;
            this.txtX.Text  =  "";
            //  
            //  cmdMove
            //  
            this.cmdMove.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.cmdMove.Location  =  new  System.Drawing.Point(248,  24);
            this.cmdMove.Name  =  "cmdMove";
            this.cmdMove.Size  =  new  System.Drawing.Size(72,  20);
            this.cmdMove.TabIndex  =  7;
            this.cmdMove.Text  =  "Move";
            this.cmdMove.Click  +=  new  System.EventHandler(this.cmdMove_Click);
            //  
            //  GroupBox2
            //  
            this.GroupBox2.Anchor  =  ((System.Windows.Forms.AnchorStyles.Bottom  |  System.Windows.Forms.AnchorStyles.Left)  
                |  System.Windows.Forms.AnchorStyles.Right);
            this.GroupBox2.Controls.AddRange(new  System.Windows.Forms.Control[]  {
                                                                                    this.cmdSpeak,
                                                                                    this.txtSpeak});
            this.GroupBox2.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.GroupBox2.Location  =  new  System.Drawing.Point(8,  163);
            this.GroupBox2.Name  =  "GroupBox2";
            this.GroupBox2.Size  =  new  System.Drawing.Size(384,  80);
            this.GroupBox2.TabIndex  =  10;
            this.GroupBox2.TabStop  =  false;
            this.GroupBox2.Text  =  "Speak";
            //  
            //  cmdSpeak
            //  
            this.cmdSpeak.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.cmdSpeak.Location  =  new  System.Drawing.Point(248,  20);
            this.cmdSpeak.Name  =  "cmdSpeak";
            this.cmdSpeak.Size  =  new  System.Drawing.Size(72,  20);
            this.cmdSpeak.TabIndex  =  6;
            this.cmdSpeak.Text  =  "Speak";
            this.cmdSpeak.Click  +=  new  System.EventHandler(this.cmdSpeak_Click);
            //  
            //  txtSpeak
            //  
            this.txtSpeak.AcceptsReturn  =  true;
            this.txtSpeak.Location  =  new  System.Drawing.Point(8,  20);
            this.txtSpeak.Multiline  =  true;
            this.txtSpeak.Name  =  "txtSpeak";
            this.txtSpeak.Size  =  new  System.Drawing.Size(232,  48);
            this.txtSpeak.TabIndex  =  4;
            this.txtSpeak.Text  =  "";
            //  
            //  GroupBox1
            //  
            this.GroupBox1.Anchor  =  (((System.Windows.Forms.AnchorStyles.Top  |  System.Windows.Forms.AnchorStyles.Bottom)  
                |  System.Windows.Forms.AnchorStyles.Left)  
                |  System.Windows.Forms.AnchorStyles.Right);
            this.GroupBox1.Controls.AddRange(new  System.Windows.Forms.Control[]  {
                                                                                    this.axAgent1,
                                                                                    this.cmdStop,
                                                                                    this.cmdPlay,
                                                                                    this.lstAnimations});
            this.GroupBox1.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.GroupBox1.Location  =  new  System.Drawing.Point(8,  11);
            this.GroupBox1.Name  =  "GroupBox1";
            this.GroupBox1.Size  =  new  System.Drawing.Size(384,  144);
            this.GroupBox1.TabIndex  =  9;
            this.GroupBox1.TabStop  =  false;
            this.GroupBox1.Text  =  "Animate";
            //  
            //  axAgent1
            //  
            this.axAgent1.ContainingControl  =  this;
            this.axAgent1.Enabled  =  true;
            this.axAgent1.Location  =  new  System.Drawing.Point(336,  32);
            this.axAgent1.Name  =  "axAgent1";
            this.axAgent1.OcxState  =  ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAgent1.OcxState")));
            this.axAgent1.Size  =  new  System.Drawing.Size(32,  32);
            this.axAgent1.TabIndex  =  7;
            //  
            //  cmdStop
            //  
            this.cmdStop.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.cmdStop.Location  =  new  System.Drawing.Point(248,  48);
            this.cmdStop.Name  =  "cmdStop";
            this.cmdStop.Size  =  new  System.Drawing.Size(72,  20);
            this.cmdStop.TabIndex  =  6;
            this.cmdStop.Text  =  "Stop";
            this.cmdStop.Click  +=  new  System.EventHandler(this.cmdStop_Click);
            //  
            //  cmdPlay
            //  
            this.cmdPlay.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
            this.cmdPlay.Location  =  new  System.Drawing.Point(248,  24);
            this.cmdPlay.Name  =  "cmdPlay";
            this.cmdPlay.Size  =  new  System.Drawing.Size(72,  20);
            this.cmdPlay.TabIndex  =  5;
            this.cmdPlay.Text  =  "Play";
            this.cmdPlay.Click  +=  new  System.EventHandler(this.cmdPlay_Click);
            //  
            //  lstAnimations
            //  
            this.lstAnimations.Anchor  =  ((System.Windows.Forms.AnchorStyles.Top  |  System.Windows.Forms.AnchorStyles.Bottom)  
                |  System.Windows.Forms.AnchorStyles.Left);
            this.lstAnimations.IntegralHeight  =  false;
            this.lstAnimations.Location  =  new  System.Drawing.Point(8,  22);
            this.lstAnimations.Name  =  "lstAnimations";
            this.lstAnimations.Size  =  new  System.Drawing.Size(232,  109);
            this.lstAnimations.TabIndex  =  4;
            //  
            //  AgentTryout
            //  
            this.AutoScaleBaseSize  =  new  System.Drawing.Size(5,  13);
            this.ClientSize  =  new  System.Drawing.Size(400,  366);
            this.Controls.AddRange(new  System.Windows.Forms.Control[]  {
                                                                            this.cmdClose,
                                                                            this.GroupBox3,
                                                                            this.GroupBox2,
                                                                            this.GroupBox1});
            this.Name  =  "AgentTryout";
            this.Text  =  "AgentTryout";
            this.Load  +=  new  System.EventHandler(this.AgentTryout_Load);
            this.GroupBox3.ResumeLayout(false);
            this.GroupBox2.ResumeLayout(false);
            this.GroupBox1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.axAgent1)).EndInit();
            this.ResumeLayout(false);

        }
        #endregion

        ///  <summary>
        ///  The  main  entry  point  for  the  application.
        ///  </summary>
        [STAThread]
        static  void  Main()  
        {
            Application.Run(new  AgentTryout());
        }

        private  AgentController  controller;

        private  void  AgentTryout_Load(object  sender,  System.EventArgs  e)
        {
            controller  =  new  AgentController(axAgent1,  "Genie");
            
            lstAnimations.DataSource=controller.GetAnimations();
            
            controller.Show();
        }

        private  void  cmdPlay_Click(object  sender,  System.EventArgs  e)
        {
            controller.Animate(lstAnimations.Text);
        }

        private  void  cmdStop_Click(object  sender,  System.EventArgs  e)
        {
            controller.StopAll();
        }

        private  void  cmdSpeak_Click(object  sender,  System.EventArgs  e)
        {
            controller.Speak(txtSpeak.Text);
        }

        private  void  cmdMove_Click(object  sender,  System.EventArgs  e)
        {
            controller.MoveTo(short.Parse(txtX.Text),  short.Parse(txtY.Text));
        }

        private  void  cmdClose_Click(object  sender,  System.EventArgs  e)
        {
            this.Close();
        }
    }
}


//================================================================
//================================================================

using  System;
using  AxAgentObjects;
using  System.Collections;

namespace  AgentTryout
{
    public  class  AgentController
    {
        //  Agent  variable.
        private  AgentObjects.IAgentCtlCharacterEx  agentChar;

        //  Name  of  the  initialized  character.
        private  string  characterName;

        //  Balloon  constants
        private  const  short  BalloonOn  =  1;
        private  const  short  SizeToText  =  2;
        private  const  short  AutoHide  =  4;
        private  const  short  AutoPace  =  8;

        public  AgentController(AxAgentObjects.AxAgent  agentHost,  
            string  character)
        {
            agentHost.Characters.Load(character,  null);
            agentChar  =  agentHost.Characters[character];

            characterName  =  character;

            //  You  could  put  your  own  options  in  this  menu,  if  desired.
            agentChar.AutoPopupMenu  =  false;

            //  Set  balloon  style.
            agentChar.Balloon.Style  =  agentChar.Balloon.Style  |  BalloonOn;
            agentChar.Balloon.Style  =  agentChar.Balloon.Style  |  SizeToText;
            agentChar.Balloon.Style  =  agentChar.Balloon.Style  |  AutoHide;
            //agentChar.Balloon.Style  =  agentChar.Balloon.Style  &  !(AutoPace);
        }

        public  void  Dispose()
        {
            if  (agentChar.Visible)
            {
                agentChar.StopAll(null);
                agentChar.Hide(null);
            }
        }

        public  void  Show()
        {
            agentChar.Show(null);
        }

        public  void  Hide()
        {
            agentChar.Hide(null);
        }

        public  void  StopAll()
        {
            agentChar.StopAll(null);
        }

        public  void  Speak(string  text)
        {
            agentChar.StopAll(null);
            agentChar.Speak(text,  "");
        }

        public  void  Think(string  text)
        {
            agentChar.StopAll(null);
            agentChar.Think(text);
        }

        public  void  Animate(string  animation)
        {
            agentChar.StopAll(null);
            agentChar.Play(animation);
        }

        public  void  MoveTo(short  x,  short  y)
        {
            agentChar.MoveTo(x,  y,  null);
        }

        public  void  GestureAt(short  x,  short  y)
        {
            agentChar.GestureAt(x,  y);
        }

        public  Array  GetAnimations()
        {
            ArrayList  list  =  new  ArrayList();
            foreach  (string  animation  in  agentChar.AnimationNames)
            {
                list.Add(animation);
            }
            return  list.ToArray(typeof(string));
        }

        //  Tests  if  the  agent  is  visible.
        //  If  the  agent  is  not  visible  it  will  be  shown.
        private  bool  IsAgentVisible()
        {
            if  (agentChar.Visible)
            {
                return  true;
            }
            else
            {
                agentChar.Show(null);
                    return  false;
            }
        }
    }

}

876 view

4.0 stars