New news selector duration
Backed by new struct nwsstr member nws_duration. Time between first and last occurence of the news recorded in this item, in seconds.
This commit is contained in:
parent
39114987a9
commit
b719f39c0f
3 changed files with 9 additions and 4 deletions
|
@ -55,6 +55,7 @@ struct nwsstr {
|
||||||
unsigned char nws_vrb; /* action (verb) */
|
unsigned char nws_vrb; /* action (verb) */
|
||||||
natid nws_vno; /* "victim" country # */
|
natid nws_vno; /* "victim" country # */
|
||||||
signed char nws_ntm; /* number of times */
|
signed char nws_ntm; /* number of times */
|
||||||
|
short nws_duration; /* last time at nws_when + nws_duration */
|
||||||
time_t nws_when; /* time of action */
|
time_t nws_when; /* time of action */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -475,6 +475,7 @@ struct castr news_ca[] = {
|
||||||
{"action", fldoff(nws_vrb), NSC_UCHAR, 0, NULL, EF_NEWS_CHR, 0},
|
{"action", fldoff(nws_vrb), NSC_UCHAR, 0, NULL, EF_NEWS_CHR, 0},
|
||||||
{"victim", fldoff(nws_vno), NSC_NATID, 0, NULL, EF_NATION, 0},
|
{"victim", fldoff(nws_vno), NSC_NATID, 0, NULL, EF_NATION, 0},
|
||||||
{"times", fldoff(nws_ntm), NSC_CHAR, 0, NULL, EF_BAD, 0},
|
{"times", fldoff(nws_ntm), NSC_CHAR, 0, NULL, EF_BAD, 0},
|
||||||
|
{"duration", fldoff(nws_duration), NSC_SHORT, 0, NULL, EF_BAD, 0},
|
||||||
{"time", fldoff(nws_when), NSC_TIME, 0, NULL, EF_BAD, 0},
|
{"time", fldoff(nws_when), NSC_TIME, 0, NULL, EF_BAD, 0},
|
||||||
{NULL, 0, NSC_NOTYPE, 0, NULL, EF_BAD, 0}
|
{NULL, 0, NSC_NOTYPE, 0, NULL, EF_BAD, 0}
|
||||||
#undef CURSTR
|
#undef CURSTR
|
||||||
|
|
|
@ -161,7 +161,7 @@ ncache(int actor, int event, int victim, int times)
|
||||||
struct newscache *np;
|
struct newscache *np;
|
||||||
int i;
|
int i;
|
||||||
int oldslot;
|
int oldslot;
|
||||||
time_t oldtime;
|
time_t oldtime, dur;
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
|
||||||
oldslot = -1;
|
oldslot = -1;
|
||||||
|
@ -174,11 +174,13 @@ ncache(int actor, int event, int victim, int times)
|
||||||
}
|
}
|
||||||
if (np->news.nws_vrb == 0)
|
if (np->news.nws_vrb == 0)
|
||||||
continue;
|
continue;
|
||||||
if ((now - np->news.nws_when) > minutes(5))
|
dur = now - np->news.nws_when;
|
||||||
|
if (dur > minutes(5))
|
||||||
continue;
|
continue;
|
||||||
if (np->news.nws_vrb == event && np->news.nws_vno == victim &&
|
if (np->news.nws_vrb == event && np->news.nws_vno == victim &&
|
||||||
np->news.nws_ntm + times <= 127) {
|
np->news.nws_ntm + times <= 127) {
|
||||||
np->news.nws_ntm += times;
|
np->news.nws_ntm += times;
|
||||||
|
np->news.nws_duration = dur;
|
||||||
return np;
|
return np;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,10 +191,11 @@ ncache(int actor, int event, int victim, int times)
|
||||||
np = &cache[actor][oldslot];
|
np = &cache[actor][oldslot];
|
||||||
ef_blank(EF_NEWS, news_tail, &np->news);
|
ef_blank(EF_NEWS, news_tail, &np->news);
|
||||||
np->news.nws_ano = actor;
|
np->news.nws_ano = actor;
|
||||||
np->news.nws_vno = victim;
|
|
||||||
np->news.nws_when = now;
|
|
||||||
np->news.nws_vrb = event;
|
np->news.nws_vrb = event;
|
||||||
|
np->news.nws_vno = victim;
|
||||||
np->news.nws_ntm = times;
|
np->news.nws_ntm = times;
|
||||||
|
np->news.nws_duration = 0;
|
||||||
|
np->news.nws_when = now;
|
||||||
np->id = news_tail++;
|
np->id = news_tail++;
|
||||||
return np;
|
return np;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue