Moved the 'changed' mailbox flag from shared mmo.h to mapserver-only.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13433 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
ultramage 2009-01-05 15:34:09 +00:00
parent f9d21826b8
commit 578532f577
5 changed files with 12 additions and 7 deletions

View File

@ -73,7 +73,6 @@ static int mail_fromsql(int char_id, struct mail_data* md)
md->full = ( Sql_NumRows(sql_handle) > MAIL_MAX_INBOX );
md->amount = i;
md->changed = false;
Sql_FreeResult(sql_handle);
md->unchecked = 0;

View File

@ -332,7 +332,7 @@ struct mail_message {
struct mail_data {
short amount;
bool changed, full;
bool full;
short unchecked, unread;
struct mail_message msg[MAIL_MAX_INBOX];
};

View File

@ -11613,7 +11613,7 @@ void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
{
struct mail_data* md = &sd->mail.inbox;
if( md->amount < MAIL_MAX_INBOX && (md->full || md->changed) )
if( md->amount < MAIL_MAX_INBOX && (md->full || sd->mail.changed) )
intif_Mail_requestinbox(sd->status.char_id, 1);
else
clif_Mail_refreshinbox(sd);

View File

@ -1438,6 +1438,7 @@ int intif_parse_Mail_inboxreceived(int fd)
//FIXME: this operation is not safe [ultramage]
memcpy(&sd->mail.inbox, RFIFOP(fd,9), sizeof(struct mail_data));
sd->mail.changed = false; // cache is now in sync
if (flag)
clif_Mail_refreshinbox(sd);
@ -1634,7 +1635,9 @@ static void intif_parse_Mail_send(int fd)
memcpy(&msg, RFIFOP(fd,4), sizeof(struct mail_message));
fail = (msg.id == 0);
if( (sd = map_charid2sd(msg.send_id)) )
// notify sender
sd = map_charid2sd(msg.send_id);
if( sd != NULL )
{
if( fail )
mail_deliveryfail(sd, &msg);
@ -1649,9 +1652,11 @@ static void intif_parse_Mail_send(int fd)
if( fail )
return;
if( (sd = map_charid2sd(msg.dest_id)) )
// notify recipient (if online)
sd = map_charid2sd(msg.dest_id);
if( sd != NULL )
{
sd->mail.inbox.changed = true;
sd->mail.changed = true;
clif_Mail_new(sd->fd, msg.id, msg.send_name, msg.title);
}
}
@ -1666,7 +1671,7 @@ static void intif_parse_Mail_new(int fd)
if( sd == NULL )
return;
sd->mail.inbox.changed = true;
sd->mail.changed = true;
clif_Mail_new(sd->fd, mail_id, sender_name, title);
}

View File

@ -352,6 +352,7 @@ struct map_session_data {
short nameid;
int index, amount, zeny;
struct mail_data inbox;
bool changed; // if true, should sync with charserver on next mailbox request
} mail;
//Quest log system [Kevin]