using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using MrWu.Debug;
using System.Threading;
using Server.MQ;
using System.IO;
using System.Net;
using Server;
using Server.DB.Redis;
namespace GlobalSever.Form
{
///
/// 服务器窗体
///
public partial class ServerForm : System.Windows.Forms.Form
{
///
/// 所有的页面
///
private readonly List pages = new List();
///
/// 选项卡
///
private readonly List tabs = new List();
private string GetIconPath
{
get
{
return DirectoryManager.GetIconPath();
}
}
///
/// 服务器
///
ServerProxy server;
private ServerForm()
{
}
///
/// 构造
///
public ServerForm(ServerProxy server, string[] args = null)
{
InitializeComponent();
this.server = server;
tabs.Add(new logTable(server));
tabs.Add(new GeneralTable(server));
#if DEBUG
tabs.Add(new GameInfoTable(server));
#endif
//tabs.Add(new TestTab(server));
if (args != null && args.Length > 0)
{
if ("LaunchByWatchdog".Equals(args[0], StringComparison.InvariantCultureIgnoreCase))
{
AutoRun = true;
}
if ("AutoRun".Equals(args[0]))
{
AutoRun = true;
}
}
}
bool AutoRun = false;
///
/// 启动
///
///
///
private void button1_Click(object sender, EventArgs e)
{
if (server.Start(this))
{
button1.Text = "已启动";
button1.Enabled = false;
timer1.Enabled = true;
foreach (var tb in tabs)
{
tb.Start();
}
}
}
private void ServerForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (GlobalManager.Factory != null && GlobalManager.instance.IsCanWar && GlobalManager.instance.myUtil.id>=11)
{
Debug.Error($"请先禁止开战,在关闭服务器!!! {GlobalManager.instance.IsCanWar}");
e.Cancel = true;
return;
}
if (!server.IsRun)
return;
bool isQuit = server.isKill;
if (!isQuit)
{
DialogResult result = MessageBox.Show("确认关闭吗?", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
isQuit = result == DialogResult.OK;
}
if (isQuit)
{
timer1.Enabled = false;
foreach (var tb in tabs)
{
tb.Stop();
}
server.Stop();
this.Text = "关闭中...";
while (server.IsRun)
{
Thread.Sleep(10);
}
LogPool.Flush();
}
else
{
e.Cancel = true;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
this.Text = server.Title;
if (server.isKill)
{
this.checkBox1.Checked = true;
Close();
}
}
///
/// 加载事件
///
///
///
private void ServerForm_Load(object sender, EventArgs e)
{
if (File.Exists(GetIconPath))
{
this.Icon = new Icon(GetIconPath);
}
var serTables = server.GetServerTable();
if (serTables != null)
{
tabs.AddRange(serTables);
}
int len = tabs.Count;
for (int i = 0; i < len; i++)
{
TabPage page = new TabPage();
this.tabControl1.Controls.Add(page);
page.Controls.Add(tabs[i]);
page.Location = new Point(4, 22);
page.Padding = new Padding(3);
page.Size = new Size(921, 389);
page.TabIndex = this.tabControl1.TabCount;
page.Text = tabs[i].tableText;
page.UseVisualStyleBackColor = true;
tabs[i].Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
tabs[i].BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
tabs[i].Location = new System.Drawing.Point(10, 6);
tabs[i].Name = "table" + i;
tabs[i].Size = new System.Drawing.Size(900, 376);
tabs[i].TabIndex = 0;
pages.Add(page);
}
if (AutoRun)
{
button1_Click(null, null);
}
}
private void button2_Click(object sender, EventArgs e)
{
}
private void MsgLogCheck(object sender, EventArgs e)
{
GlobalMQ.openMsgLog = !GlobalMQ.openMsgLog;
}
private void button2_Click_1(object sender, EventArgs e)
{
GlobalMQ.instance.ConnectionBlocked();
}
private void button3_Click(object sender, EventArgs e)
{
GlobalMQ.instance.ConnectionUnBlocked();
}
private void button2_Click_2(object sender, EventArgs e)
{
}
///
/// 开始循环
///
public void StartLoop()
{
timer2.Enabled = true;
}
///
/// 关闭循环
///
public void StopLoop()
{
timer2.Enabled = true;
}
///
/// 循环事件
///
public event Action Loop;
private void Timer2_Tick(object sender, EventArgs e)
{
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
server.SetIsCanWar(((CheckBox)sender).Checked);
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
//server.SetIsCanLogin(((CheckBox)sender).Checked);
//屏蔽禁止登录,禁止登录会影响自动重连
}
}
}