public ArenaClientForm()
        {
            InitializeComponent();

            MyIniParser = new IniParser();

            string strWidth = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_WINDOW_WIDTH, 800);
            string strHeight = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_WINDOW_HEIGHT, 500);
            int width, height;
            if (int.TryParse(strWidth, out width))
                this.Width = width;
            if (int.TryParse(strHeight, out height))
                this.Height = height;
            LoginUserNameTextBox.Text = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_LOGIN_NAME, string.Empty);
            //ServerAddressComboBox.Text = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_SERVER_ADDRESS, "127.0.0.1:30000");

            string[] serverList = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_SERVER_LIST, string.Empty).Split(',');
            foreach (string s in serverList)
            {
                if (s != string.Empty)
                {
                    ServerAddressComboBox.Items.Add(s);
                    ServerListCount++;
                }
            }

            if (ServerListCount > 0)
            {
                ServerAddressComboBox.SelectedIndex = 0;
                ServerAddressComboBox.Text = (string)ServerAddressComboBox.SelectedItem;
            }
            else
            {
                ServerAddressComboBox.Text = string.Empty;
            }

            ServerAddressComboBox.Items.Add("----------履歴----------");

            serverList = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_SERVER_HISTORY, string.Empty).Split(',');
            foreach (string s in serverList)
            {
                if (s != string.Empty)
                {
                    if (ServerHistory.Count >= MaxServerHistory) break;

                    ServerAddressComboBox.Items.Add(s);
                    ServerHistory.Add(s);
                }
            }
            ServerHistory.Reverse();

            GoTo(OperationMode.Offline);

            ArenaSessionClient = new AsyncTcpClient(new SessionHandler(this));
            ArenaTunnelClient = new AsyncUdpClient(new TunnelHandler(this));

            //UdpPortTextBox_TextChanged(null, null);

            ResetServerStatusBar();
            RefreshLanAdapterList();

            AppendToChatTextBoxDelegate = delegate(string message, Color color, CheckBox notDisplay)
            {
                if (notDisplay != null && notDisplay.Checked) return;
                try
                {
                    ChatLogTextBox.AppendText(message);
                    ChatLogTextBox.AppendText(Environment.NewLine);
                    //ChatLogTextBox.ScrollToCaret();

                }
                catch (Exception ex)
                {
                    logTextBox.AppendText(message);
                    logTextBox.AppendText(ex.ToString());
                }
            };

            string software = String.Format("{0}  アリーナクライアント バージョン: {1}", ApplicationConstants.APP_NAME, ApplicationConstants.VERSION);
            AppendToChatTextBoxDelegate(software, Color.DarkGreen, null);
            AppendToChatTextBoxDelegate("プロトコル: " + Protocol1Constants.PROTOCOL_NUMBER, Color.DarkGreen, null);
            ThreadPool.QueueUserWorkItem(new WaitCallback(PendingLogPollingLoop));
        }
Example #2
0
        public static int Main(String[] args)
        {
            Console.WriteLine("{0}  アリーナサーバー バージョン: {1}", ApplicationConstants.APP_NAME, ApplicationConstants.VERSION);

            IniParser p = new IniParser();

            int port;
            if (!int.TryParse(p.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.SERVER_PORT), out port))
                port = 30000;

            int maxUsers;
            if (!int.TryParse(p.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.SERVER_MAX_USERS), out maxUsers))
                maxUsers = 20;

            int maxRooms;
            if (!int.TryParse(p.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.SERVER_MAX_ROOMS), out maxRooms))
                maxRooms = 3;

            switch (args.Length)
            {
                case 2:
                    maxUsers = Int32.Parse(args[1]);
                    port = Int32.Parse(args[0]);
                    break;
                case 1:
                    port = Int32.Parse(args[0]);
                    break;
                default:
                    break;
            }

            p.SetSetting(IniConstants.SECTION_SETTINGS, IniConstants.SERVER_PORT, port.ToString());
            p.SetSetting(IniConstants.SECTION_SETTINGS, IniConstants.SERVER_MAX_USERS, maxUsers.ToString());
            p.SetSetting(IniConstants.SECTION_SETTINGS, IniConstants.SERVER_MAX_ROOMS, maxRooms.ToString());
            p.SaveSettings();

            Protocol1ArenaEngine engine = new Protocol1ArenaEngine();
            try
            {
                engine.MaxPlayers = maxUsers;
                engine.MaxRooms = maxRooms;

                engine.StartListening(new IPEndPoint(IPAddress.Any, port));

                while (true)
                {
                    //Console.Write(">");
                    string cmd = Console.ReadLine();
                    //if (cmd == "") break;
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Console.ReadLine();
            }
            finally
            {
                engine.StopListening();
            }

            return 0;
        }