Exemplo n.º 1
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            m_TheMouse.Update();

            switch (getGameState())
            {
                case eGameState.MENU:
                    setGameState(m_MainMenu.update());
                    break;

                case eGameState.QUITTING:
                    Exit();
                    break;

                case eGameState.ENTER_SERVERLOBBY:
                    m_GameServer = new cGameServer();
                    m_GameServer.waitForConnection();

                    m_GameClient = new cGameClient();
                    m_GameClient.connect("127.0.0.1");

                    while (!m_GameClient.isConnected());

                    setGameState(eGameState.SERVERLOBBY);
                    break;

                case eGameState.SERVERLOBBY:
                    m_GameClient.sendData(new cInitGameMsg(m_GameClient.getPlayerID(), 15, 15, false, eGAME_TYPE.SOLO));
                    setGameState(eGameState.RUNNING);
                    break;

                case eGameState.RUNNING:

                        m_GameServer.tick(gameTime);
                    break;

            }

            // TODO: Add your update logic here

            base.Update(gameTime);
        }
Exemplo n.º 2
0
        //-------------------------------------------------------------------
        // Main() : 메인 프로세스 시작
        //-------------------------------------------------------------------
        static void Main( string[] args )
        {
            // DB 테스트
            /*
            cDatabase db = new cDatabase(cDatabase.eType.MySQL);
            if( db.Connect( "192.168.0.30", "bluemoon", "bluelab", "bluemoon" ) )
            {
                if( db.Query( "SELECT * FROM user_account" ) )
                {
                    while( db.Reader.Read() )
                    {
                        long	account_id	= (long)db.Reader["account_id"];
                        string	email= (string)db.Reader["email"];
                    }
                    db.CloseQuery();
                }

                {
                    cUserAccount.Initialize(db);
                    cUserAccount account1 = new cUserAccount();
                    account1.Read( db, (long)9 );
                    string guid1		= (string)account1["guid"];
                    string email1		= (string)account1["email"];
                    float music1		= Convert.ToSingle(account1["music"]);
                    account1["fb_id"]	= "400";

                    cUserAccount account2 = new cUserAccount();
                    account2.Read( db, (long)10 );
                    string guid			= (string)account2["guid"];
                    string email		= (string)account2["email"];
                    float music			= Convert.ToSingle(account2["music"]);
                    account2["fb_id"]	= "500";

                    cUserAccount.Update( db );
                }

                db.Close();
            }
            */

            // 서버 객체 생성
            s_policy_server		= new cPolicyServer();
            s_game_server		= new cGameServer();

            ushort auto_start	= 0;
            ushort ps_port		= s_policy_server.Port;
            ushort gs_port		= 12345;

            Option();

            foreach( string arg in args )
            {
                //Console.WriteLine( arg );
                string[] param = arg.Split( ':' );
                switch( param[0].ToLower() )
                {
                case "/?":
                    Option();
                    return;
                case "/autostart":
                    auto_start = ushort.Parse(param[1]);
                    break;
                case "/ps_port":
                    ps_port = ushort.Parse(param[1]);
                    break;
                case "/gs_port":
                    gs_port = ushort.Parse(param[1]);
                    break;
                }
            }

            s_game_server.RecvBufSize = 1024;
            s_game_server.UseCryptogram = true;

            s_console.WriteColor(
                 "\n[ INPUT ]"
                +"\n-----------------------------------------------------------------------"
                +"\n Auto Start Server = " + auto_start
                +"\n Policy Server Port = " + ps_port + ", Cryptogram = " + s_policy_server.UseCryptogram + ", recv_buf_size = " + s_policy_server.RecvBufSize
                +"\n Game Server Port= " + gs_port + ", Cryptogram = " + s_game_server.UseCryptogram + ", recv_buf_size = " + s_game_server.RecvBufSize
                +"\n-----------------------------------------------------------------------"
                +"\n"
                ,ConsoleColor.Yellow, ConsoleColor.Black );

            // 암호화 키 세팅
            cNetwork.SetCryptogram( "1234567890abcdef", "1234567890abcdef1234567890abcdef" );

            if( auto_start==1 )
            {
                ServerStart( ps_port, gs_port );
                s_read_order = false;
            }
            else
            {
                s_read_order = true;
            }

            while( s_loop_order )
            {
                // 명령입력
                if( s_read_order )
                {
                    Console.Write("order > ");
                    switch( Console.ReadLine().ToLower() )
                    {
                    // 서버 시작
                    case "start":
                        ServerStart( ps_port, gs_port );
                        s_read_order = false;
                        break;
                    case "stop":
                        s_policy_server.Stop();
                        s_game_server.Stop();
                        s_read_order = false;
                        break;
                    case "exit":
                        s_policy_server.Stop();
                        s_game_server.Stop();
                        s_loop_order = false;
                        break;
                    default:
                        break;
                    }
                }
                else
                // 일반모드
                {
                    Thread.Sleep(100);
                    ConsoleKeyInfo kinfo = Console.ReadKey(false);
                    if( kinfo.Key == ConsoleKey.Enter )
                    {
                        s_read_order = true;
                    }
                }
            }

            s_console.Write("Program End.");
            Console.ReadLine();
        }