コード例 #1
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public GameProcess()
        {
            Int32 num = 4;

            player   = new S_DataPlayer[num];
            profile  = new S_DataProfile[num];
            shot     = new S_DataShots[MAX_SHOTS];
            sendPack = new S_DataPlayerPackage();

            sendPack.data0 = new S_DataPlayer();
            sendPack.data1 = new S_DataPlayer();
            sendPack.data2 = new S_DataPlayer();
            sendPack.data3 = new S_DataPlayer();

            for (int i = 0; i < num; i++)
            {
                player[i]            = new S_DataPlayer();
                profile[i]           = new S_DataProfile();
                profile[i].player_id = i;
                profile[i].name      = "";
            }
            for (int i = 0; i < MAX_SHOTS; i++)
            {
                shot[i] = new S_DataShots();
            }
            spawnarea = new int[4] {
                -1, -1, -1, -1
            };
        }
コード例 #2
0
    private static void parse_record(MrsConnection connection, IntPtr connection_data, UInt32 seqnum, UInt16 options, UInt16 payload_type, IntPtr payload, UInt32 payload_len)
    {
        //MRS_LOG_DEBUG( "parse_record seqnum={0} options=0x{1:X2} payload=0x{2:X2}/{3}", seqnum, options, payload_type, payload_len );
        // MRS_PAYLOAD_TYPE_BEGIN - MRS_PAYLOAD_TYPE_ENDの範囲内で任意のIDを定義し、対応するアプリケーションコードを記述する
        switch (payload_type)
        {
        case 0x01: {
            read_echo(connection, ToBytes(payload, payload_len), payload_len);
        } break;

        case 0x02:
        {
            //MRS_LOG_DEBUG("RECEIVED DATA:{0}", payload);
            S_DataPlayer data = (S_DataPlayer)Marshal.PtrToStructure(payload, typeof(S_DataPlayer));
            if (g_EnemyObject != null)
            {
                g_EnemyObject.transform.position    = new Vector3(data.x, data.y, 0);
                g_EnemyObject.transform.eulerAngles = new Vector3(0.0f, 0.0f, data.angle);
            }
            //MRS_LOG_DEBUG("RECEIVED DATA  pos_x:{0} pos_y:{1} pos_z:{2} look:{3} move:{4} ammos:{5}"
            //    data.x, data.y, data.z, data.angle, data.move_a, data.ammos);
        } break;

        case 0x03:
        {
            //MRS_LOG_DEBUG("RECEIVED DATA:{0}", payload);
            S_DataShots data       = (S_DataShots)Marshal.PtrToStructure(payload, typeof(S_DataShots));
            GameObject  bulletPool = GameObject.Find("BulletPool");
            Pool        script     = bulletPool.GetComponent <Pool>();

            script.Place(new Vector2(data.x, data.y), Quaternion.AngleAxis(data.angle, Vector3.forward));
            //MRS_LOG_DEBUG("RECEIVED DATA  pos_x:{0} pos_y:{1} pos_z:{2} angle:{3}",
            //    data.pos_x, data.pos_y, data.pos_z, data.angle);
        }
        break;

        // 毎フレームデータ受信
        case 0x11:
        {
            MRS_LOG_DEBUG("RECEIVED WRAP:{0}", payload);
            //S_WrapData s_Wrap = (S_WrapData)Marshal.PtrToStructure(payload, typeof(S_WrapData));
            //for (int i = 0; i < s_Wrap.num; i++)
            //{

            //    MRS_LOG_DEBUG("RECEIVED DATA  pos_x:{0} pos_y:{1} pos_z:{2} look:{3} move:{4} ammos:{5}",
            //        s_Wrap.s_Data[i].pos_x, s_Wrap.s_Data[i].pos_y, s_Wrap.s_Data[i].pos_z, s_Wrap.s_Data[i].look_a, s_Wrap.s_Data[i].move_a, s_Wrap.s_Data[i].ammos);
            //}
        }
        break;

        default: {} break;
        }
    }
コード例 #3
0
        public void setPlayerData(int _num, IntPtr _data)
        {
            //Console.WriteLine(string.Format("setPlayerData : {0}",_data));

            S_DataPlayer getdata = (S_DataPlayer)Marshal.PtrToStructure(_data, typeof(S_DataPlayer));

            player[_num].id    = (uint)_num;
            player[_num].x     = getdata.x;
            player[_num].y     = getdata.y;
            player[_num].angle = getdata.angle;
            player[_num].dead  = getdata.dead;

            //Console.WriteLine("Successed PlayerNumber: {0} pos_x:{1} pos_y:{2} look:{3}",
            //   _num, player[_num].x, player[_num].y, player[_num].angle);
        }
コード例 #4
0
    void OnGUI()
    {
        if (!m_IsRunning)
        {
            GUILayout.Space(30);

            GUILayout.BeginHorizontal();
            GUILayout.Label("ServerAddr:");
            g_ArgServerAddr = GUILayout.TextField(g_ArgServerAddr);
            GUILayout.Space(30);
            GUILayout.Label("ServerPort:");
            g_ArgServerPort = GUILayout.TextField(g_ArgServerPort);
            GUILayout.Space(30);
            GUILayout.Label("TimeoutMsec:");
            g_ArgTimeoutMsec = GUILayout.TextField(g_ArgTimeoutMsec);
            GUILayout.EndHorizontal();
            GUILayout.Space(60);

            if (GUILayout.Button("Start Game", GUILayout.Width(300), GUILayout.Height(80)))
            {
                m_IsRunning = true;
                StartEchoClient();
                //mrs.Utility.LoadScene("SampleScene");
            }
        }
        else
        {
            if (GUILayout.Button("Back", GUILayout.Width(300), GUILayout.Height(50)))
            {
                m_IsRunning = false;
                mrs_close(g_nowconnect);
                mrs.Utility.LoadScene("NetworkSetting");
            }

            if (GUILayout.Button("Send Player Data", GUILayout.Width(300), GUILayout.Height(50)))
            {
                g_Object = GameObject.Find("MainPlayer");
                S_DataPlayer player = new S_DataPlayer();
                player.x       = g_Object.transform.position.x;
                player.y       = g_Object.transform.position.y;
                player.angle   = g_Object.transform.localEulerAngles.z;
                player.bullets = g_Object.GetComponent <Player>().bullet;
                player.died    = false;
                IntPtr p_data = Marshal.AllocHGlobal(Marshal.SizeOf(player));
                Marshal.StructureToPtr(player, p_data, false);
                if (g_nowconnect != null)
                {
                    g_paytype = 0x02;
                    mrs_write_record(g_nowconnect, g_RecordOptions, g_paytype, p_data, (uint)Marshal.SizeOf(player));
                }
                Marshal.FreeHGlobal(p_data);
            }

            if (GUILayout.Button("Send Shot Data", GUILayout.Width(300), GUILayout.Height(50)))
            {
                S_DataShots shot = new S_DataShots();
                shot.x     = movepos;
                shot.y     = 1.0f;
                shot.angle = angle;
                IntPtr p_data = Marshal.AllocHGlobal(Marshal.SizeOf(shot));
                Marshal.StructureToPtr(shot, p_data, false);
                if (g_nowconnect != null)
                {
                    g_paytype = 0x03;
                    mrs_write_record(g_nowconnect, g_RecordOptions, g_paytype, p_data, (uint)Marshal.SizeOf(shot));
                }
                Marshal.FreeHGlobal(p_data);
            }
        }
    }