/*------------------------------------------------------------------------- * 受信 * ---------------------------------------------------------------------------*/ 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; } } }
/*------------------------------------------------------------------------- * 海域変動情報の送信 * ---------------------------------------------------------------------------*/ 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 }); }