コード例 #1
0
        /*-------------------------------------------------------------------------
         * 受信
         * ---------------------------------------------------------------------------*/
        private void received_command_handler(object sender, string[] datas)
        {
            // 受信フラグによってはすべてのデータを捨てる
            if (!m_enable_receive_data)
            {
                return;
            }

            // 受信時は完全にロックする
            lock (m_sync_object){
                switch (datas[0])
                {
                case COMMAND_CAPALL:
                    m_received_data.Clear();
                    try{
                        m_received_data.days  = Convert.ToInt32(datas[1]);
                        m_received_data.pos_x = Convert.ToInt32(datas[2]);
                        m_received_data.pos_y = Convert.ToInt32(datas[3]);
                        m_received_data.angle = Convert.ToSingle(datas[4]);
                        if (datas.Length >= 6)
                        {
                            // 利息情報を含む
                            m_received_data.interest = (Convert.ToInt32(datas[5]) == 0)? false: true;
                        }
                        if (datas.Length >= 7)
                        {
                            // 災害情報を含む
                            m_received_data.accident = gvo_map_cs_chat_base.ToAccident(datas[6]);
                        }
                    }catch {
                        m_received_data.Clear();
                    }
                    break;

                case COMMAND_CAPDAY:
                    m_received_data.Clear();
                    try{
                        m_received_data.days     = Convert.ToInt32(datas[1]);
                        m_received_data.interest = (Convert.ToInt32(datas[2]) == 0)? false: true;
                    }catch {
                        m_received_data.Clear();
                    }
                    break;

                case COMMAND_SEAINFO:
                    try{
                        gvo_map_cs_chat_base.sea_area_type si = new gvo_map_cs_chat_base.sea_area_type(datas[1],
                                                                                                       gvo_map_cs_chat_base.ToSeaType(datas[2]));
                        m_sea_info.Add(si);
                    }catch {
                        m_received_data.Clear();
                    }
                    break;

                case COMMAND_ERROR:
                    break;
                }
            }
        }
コード例 #2
0
        /*-------------------------------------------------------------------------
         * 海域変動情報の送信
         * ---------------------------------------------------------------------------*/
        public void SendSeaInfo(gvo_map_cs_chat_base.sea_area_type info)
        {
            if (info == null)
            {
                return;
            }
            string type = gvo_map_cs_chat_base.ToSeaTypeString(info.type);

            send_data(COMMAND_SEAINFO, new string[] { info.name, type });
        }