/*
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;
}
}
}
}