View of /trunk/Mainform.xaml.cs
Parent Directory
|
Revision Log
Revision 102 -
(download)
(annotate)
Wed Dec 24 10:45:27 2008 UTC (4 years, 5 months ago) by albert
File size: 7969 byte(s)
Wed Dec 24 10:45:27 2008 UTC (4 years, 5 months ago) by albert
File size: 7969 byte(s)
Rewrite the structure of DefaultNetwork etc.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using System.Windows.Media;
using System.Timers;
using System.Collections.Generic;
using Xenki.Framework;
namespace Xenki
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </summary>
public partial class Mainform : Page
{
//DefaultNetwork.NetworkControl network;
Timer messagetimer = new Timer(1000);
DefaultAgent.MessageChatManage messageManager;
Xenki.Framework.BaseXenki appbase = new BaseXenki();
public Mainform()
{
InitializeComponent();
recentTime = DateTime.Now;
CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
App.Current.Exit += Current_Exit;
Startup();
appbase.OnDebug += new Debug(appbase_OnDebug);
//this will be deleted
appbase.networkcontrol.OnSimConnected += new Xenki.DefaultNetwork.NetworkControl.SimConnected(networkcontrol_OnSimConnected);
appbase.networkcontrol.OnLocalChat += new Xenki.DefaultNetwork.NetworkControl.NewLocalChat(networkcontrol_OnLocalChat);
}
void networkcontrol_OnLocalChat(string message, OpenMetaverse.ChatAudibleLevel audible, OpenMetaverse.ChatType type, OpenMetaverse.ChatSourceType sourcetype, string fromName, OpenMetaverse.UUID id, OpenMetaverse.UUID ownerid, OpenMetaverse.Vector3 position)
{
string msg = fromName +":"+ message;
messagetimer.Start();
messageDialog.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Windows.Forms.MethodInvoker
(delegate
{
messageDialog.Visibility = Visibility.Visible;
if (messageDialog.Items.Count > 10)
messageDialog.Items.RemoveAt(0);
ListBoxItem item = new ListBoxItem();
item.Tag = DateTime.Now;
item.Content = msg;
messageDialog.Items.Add(item);
//messageDialog.ScrollIntoView(msg);
}
)
);
}
void networkcontrol_OnSimConnected(OpenMetaverse.Simulator sim)
{
messageDialog.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Windows.Forms.MethodInvoker
(delegate
{
mainMenu.Network = appbase.networkcontrol;
mainMenuGrid.Visibility = Visibility.Visible;
}));
}
void appbase_OnDebug(string info)
{
debug(info);
}
void Current_Exit(object sender, ExitEventArgs e)
{
appbase.Stop();
}
private void Startup()
{
try
{
appbase.Initialize(m_viewport);
}
catch (Exception e)
{
debug("Graphics Error: " + e);
}
}
void messagetimer_Elapsed(object sender, ElapsedEventArgs e)
{
messageDialog.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Windows.Forms.MethodInvoker
(delegate
{
if (messageDialog.Items.Count <= 0)
{
messageDialog.Visibility = Visibility.Hidden;
messagetimer.Stop();
return;
}
List<ListBoxItem> delete = new List<ListBoxItem>();
foreach (ListBoxItem item in messageDialog.Items)
{
DateTime came =(DateTime) item.Tag;
TimeSpan span = e.SignalTime.Subtract(came);
if (span.Seconds > References.EnvironmentSettings.MessageDisapearTimespan)
{
delete.Add(item);
}
}
delete.ForEach(delegate(ListBoxItem im)
{
messageDialog.Items.Remove(im);
});
}));
}
private void debug(string log)
{
logBox.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Windows.Forms.MethodInvoker
(delegate
{
//ListBoxItem lbi = new ListBoxItem();
//lbi.Content = log;
if (logBox.Items.Count > 20)
logBox.Items.RemoveAt(0);
logBox.Items.Add(log);
//logBox.ScrollIntoView(lbi);
}
)
);
/*
frameRate.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Windows.Forms.MethodInvoker
(delegate
{
}
)
);
*/
}
private void loginButton_Click(object sender, RoutedEventArgs e)
{
string user = loginUser.Text;
string last = loginLast.Text;
string pass = loginPass.Password;
try
{
debug("Starting network");
appbase.StartUp(user, last, pass);
}
catch (Exception ex)
{
debug("Network Error: " + ex);
}
loginGrid.Visibility = System.Windows.Visibility.Collapsed;
}
private static int frameCounter = 0;
private static DateTime recentTime;
void CompositionTarget_Rendering(object sender, EventArgs e)
{
frameCounter++;
if ((DateTime.Now - recentTime) > TimeSpan.FromSeconds(1))
{
frameRate.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Windows.Forms.MethodInvoker
(delegate
{
frameRate.Content = "FPS: " + frameCounter;
frameCounter = 0;
recentTime = DateTime.Now;
}
)
);
}
}
private void btnmessage_Click(object sender, RoutedEventArgs e)
{
if (txtMessage.Text.Trim().Length > 0)
{
appbase.networkcontrol.SendChatMessage(txtMessage.Text, 0, OpenMetaverse.ChatType.Normal);
txtMessage.Text = "";
}
}
private void txtMessage_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Enter)
{
if (txtMessage.Text.Trim().Length > 0)
{
appbase.networkcontrol.SendChatMessage(txtMessage.Text, 0, OpenMetaverse.ChatType.Normal);
txtMessage.Text = "";
e.Handled = true;
}
}
}
}
}
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

