//------- Begin of function TalkRes::del_all_nation_msg --------// // // Delete all messages related to this nation. // void TalkRes::del_all_nation_msg(int nationRecno) { int i; TalkMsg* talkMsg; for( i=talk_msg_count() ; i>0 ; i-- ) { if( is_talk_msg_deleted(i) ) continue; talkMsg = get_talk_msg(i); if( talkMsg->from_nation_recno == nationRecno || talkMsg->to_nation_recno == nationRecno || !talkMsg->is_valid_to_disp() ) // if the nation is the talk_para1 (e.g. TRADE_EMBARGO), is_valid_to_disp() will return 0 and the talk message should than be deleted { del_talk_msg(i); } } }
//--------- Begin of static function disp_talk_msg_sent ---------// // static void disp_talk_msg_sent(int refreshFlag) { //--- filter out talk messages sent by this nation and sort them by date ---// TalkMsg* talkMsg; TalkMsgDisp talkMsgDisp; static short lastNationRecno=0; int nationRecno = nation_filter(info.browse_nation_recno); if( lastNationRecno != nationRecno ) { info.browse_talk_msg_recno = 1; // reset the browser recno of the viewing nation has been changed lastNationRecno = nationRecno; } //--------------------------------------------// info.talk_msg_disp_array.zap(); for( short i=1 ; i<=talk_res.talk_msg_count() ; i++ ) { if( talk_res.is_talk_msg_deleted(i) ) continue; talkMsg = talk_res.get_talk_msg(i); if( !talkMsg->is_valid_to_disp() ) // don't link it out, otherwise it may cause multiplayer sync problem. continue; if( talkMsg->from_nation_recno == nationRecno || talkMsg->to_nation_recno == nationRecno ) { if( talkMsg->from_nation_recno == info.viewing_nation_recno || talkMsg->to_nation_recno == info.viewing_nation_recno ) { if( !nation_array.is_deleted(talkMsg->from_nation_recno) && !nation_array.is_deleted(talkMsg->to_nation_recno) ) { talkMsgDisp.recno = i; talkMsgDisp.date = talkMsg->date; talkMsgDisp.is_reply = 0; info.talk_msg_disp_array.linkin(&talkMsgDisp); if( talkMsg->reply_date ) { talkMsgDisp.recno = i; talkMsgDisp.date = talkMsg->reply_date; talkMsgDisp.is_reply = 1; info.talk_msg_disp_array.linkin(&talkMsgDisp); } } } } } if( info.talk_msg_disp_array.size() > 0 ) info.talk_msg_disp_array.quick_sort(sort_talk_msg); //----- display a browser of the talk msg sent -----// if( refreshFlag == INFO_REPAINT || !browse_talk_msg.init_flag ) { browse_talk_msg.init( REPORT_DET_X1, REPORT_DET_Y1, REPORT_DET_X2, REPORT_DET_Y2, 0, 30, info.talk_msg_disp_array.size(), put_talk_msg_rec, 1 ); browse_talk_msg.open(info.browse_talk_msg_recno); } else { browse_talk_msg.paint(); browse_talk_msg.open(info.browse_talk_msg_recno, info.talk_msg_disp_array.size()); } info.browse_talk_msg_recno = browse_talk_msg.recno(); }